View Javadoc
1   /*
2    * Copyright (C) 2018 Alberto Irurueta Carro (alberto@irurueta.com)
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package com.irurueta.navigation.indoor;
17  
18  import java.util.List;
19  
20  /**
21   * Data related to a beacon whose transmitted power and standard deviation of
22   * such transmitted power is known.
23   */
24  public class BeaconWithPower extends Beacon implements RadioSourceWithPower {
25  
26      /**
27       * Default exponent typically used on free space for path loss propagation in
28       * terms of distance. This value is used for free space environments.
29       */
30      public static final double DEFAULT_PATH_LOSS_EXPONENT = 2.0;
31  
32      /**
33       * Standard deviation of transmitted power value or null if unknown.
34       */
35      private Double transmittedPowerStandardDeviation;
36  
37      /**
38       * Exponent typically used on free space for path loss propagation in
39       * terms of distance.
40       * On different environments path loss exponent might have different values:
41       * - Free space: 2.0
42       * - Urban Area: 2.7 to 3.5
43       * - Suburban Area: 3 to 5
44       * - Indoor (line-of-sight): 1.6 to 1.8
45       * If path loss exponent estimation is not enabled, this value will always be equal to
46       * {@link #DEFAULT_PATH_LOSS_EXPONENT}
47       */
48      private double pathLossExponent = DEFAULT_PATH_LOSS_EXPONENT;
49  
50      /**
51       * Standard deviation of path loss exponent or null if unknown.
52       */
53      private Double pathLossExponentStandardDeviation;
54  
55      /**
56       * Constructor.
57       *
58       * @param identifiers      list of the multipart identifiers of the beacon.
59       * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
60       * @throws IllegalArgumentException if identifiers is null.
61       */
62      public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower) {
63          super(identifiers, transmittedPower);
64      }
65  
66      /**
67       * Constructor.
68       *
69       * @param identifiers      list of the multipart identifiers of the beacon.
70       * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
71       * @param bluetoothAddress the bluetooth mac address.
72       * @param beaconTypeCode   the two byte value indicating the type of beacon.
73       * @param manufacturer     a two byte code indicating the beacon manufacturer.
74       * @param serviceUuid      a 32 bit service uuid for the beacon.
75       * @param bluetoothName    the bluetooth device name.
76       * @throws IllegalArgumentException if identifiers is null.
77       */
78      public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
79                             final String bluetoothAddress, final int beaconTypeCode, final int manufacturer,
80                             final int serviceUuid, final String bluetoothName) {
81          super(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
82                  bluetoothName);
83      }
84  
85      /**
86       * Constructor.
87       *
88       * @param identifiers                       list of the multipart identifiers of the beacon.
89       * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
90       * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
91       *                                          if unknown.
92       * @throws IllegalArgumentException if identifiers is null or standard deviation is negative.
93       */
94      public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
95                             final Double transmittedPowerStandardDeviation) {
96          super(identifiers, transmittedPower);
97  
98          if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
99              throw new IllegalArgumentException();
100         }
101         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
102     }
103 
104     /**
105      * Constructor.
106      *
107      * @param identifiers                       list of the multipart identifiers of the beacon.
108      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
109      * @param bluetoothAddress                  the bluetooth mac address.
110      * @param beaconTypeCode                    the two byte value indicating the type of beacon.
111      * @param manufacturer                      a two byte code indicating the beacon manufacturer.
112      * @param serviceUuid                       a 32 bit service uuid for the beacon.
113      * @param bluetoothName                     the bluetooth device name.
114      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
115      *                                          if unknown.
116      * @throws IllegalArgumentException if identifiers is null.
117      */
118     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
119                            final String bluetoothAddress, final int beaconTypeCode, final int manufacturer,
120                            final int serviceUuid, final String bluetoothName,
121                            final Double transmittedPowerStandardDeviation) {
122         super(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
123                 bluetoothName);
124 
125         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
126             throw new IllegalArgumentException();
127         }
128         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
129     }
130 
131     /**
132      * Constructor.
133      *
134      * @param identifiers      list of the multipart identifiers of the beacon.
135      * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
136      * @param frequency        frequency used by this Beacon.
137      * @param bluetoothAddress the bluetooth mac address.
138      * @param beaconTypeCode   the two byte value indicating the type of beacon.
139      * @param manufacturer     a two byte code indicating the beacon manufacturer.
140      * @param serviceUuid      a 32 bit service uuid for the beacon.
141      * @param bluetoothName    the bluetooth device name.
142      * @throws IllegalArgumentException if identifiers is null.
143      */
144     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
145                            final double frequency, final String bluetoothAddress, final int beaconTypeCode,
146                            final int manufacturer, final int serviceUuid, final String bluetoothName) {
147         super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
148                 bluetoothName);
149     }
150 
151     /**
152      * Constructor.
153      *
154      * @param identifiers                       list of the multipart identifiers of the beacon.
155      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
156      * @param frequency                         frequency used by this Beacon.
157      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
158      *                                          if unknown.
159      * @throws IllegalArgumentException if identifiers is null.
160      */
161     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
162                            final double frequency, final Double transmittedPowerStandardDeviation) {
163         super(identifiers, transmittedPower, frequency);
164 
165         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
166             throw new IllegalArgumentException();
167         }
168         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
169     }
170 
171     /**
172      * Constructor.
173      *
174      * @param identifiers                       list of the multipart identifiers of the beacon.
175      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
176      * @param frequency                         frequency used by this Beacon.
177      * @param bluetoothAddress                  the bluetooth mac address.
178      * @param beaconTypeCode                    the two byte value indicating the type of beacon.
179      * @param manufacturer                      a two byte code indicating the beacon manufacturer.
180      * @param serviceUuid                       a 32 bit service uuid for the beacon.
181      * @param bluetoothName                     the bluetooth device name.
182      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
183      *                                          if unknown.
184      * @throws IllegalArgumentException if identifiers is null.
185      */
186     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
187                            final double frequency, final String bluetoothAddress, final int beaconTypeCode,
188                            final int manufacturer, final int serviceUuid, final String bluetoothName,
189                            final Double transmittedPowerStandardDeviation) {
190         super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
191                 bluetoothName);
192 
193         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
194             throw new IllegalArgumentException();
195         }
196         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
197     }
198 
199     /**
200      * Constructor.
201      *
202      * @param identifiers      list of the multipart identifiers of the beacon.
203      * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
204      * @param pathLossExponent path loss exponent. By default, this is 2.0.
205      * @throws IllegalArgumentException if identifiers is null.
206      */
207     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
208                            final double pathLossExponent) {
209         this(identifiers, transmittedPower);
210         this.pathLossExponent = pathLossExponent;
211     }
212 
213     /**
214      * Constructor.
215      *
216      * @param identifiers      list of the multipart identifiers of the beacon.
217      * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
218      * @param bluetoothAddress the bluetooth mac address.
219      * @param beaconTypeCode   the two byte value indicating the type of beacon.
220      * @param manufacturer     a two byte code indicating the beacon manufacturer.
221      * @param serviceUuid      a 32 bit service uuid for the beacon.
222      * @param bluetoothName    the bluetooth device name.
223      * @param pathLossExponent path loss exponent. By default, this is 2.0.
224      * @throws IllegalArgumentException if identifiers is null.
225      */
226     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
227                            final String bluetoothAddress, final int beaconTypeCode, final int manufacturer,
228                            final int serviceUuid, final String bluetoothName, final double pathLossExponent) {
229         this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName);
230         this.pathLossExponent = pathLossExponent;
231     }
232 
233     /**
234      * Constructor.
235      *
236      * @param identifiers                       list of the multipart identifiers of the beacon.
237      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
238      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
239      *                                          if unknown.
240      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
241      * @throws IllegalArgumentException if identifiers is null or standard deviation is negative.
242      */
243     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
244                            final Double transmittedPowerStandardDeviation, final double pathLossExponent) {
245         this(identifiers, transmittedPower, pathLossExponent);
246 
247         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
248             throw new IllegalArgumentException();
249         }
250         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
251     }
252 
253     /**
254      * Constructor.
255      *
256      * @param identifiers                       list of the multipart identifiers of the beacon.
257      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
258      * @param bluetoothAddress                  the bluetooth mac address.
259      * @param beaconTypeCode                    the two byte value indicating the type of beacon.
260      * @param manufacturer                      a two byte code indicating the beacon manufacturer.
261      * @param serviceUuid                       a 32 bit service uuid for the beacon.
262      * @param bluetoothName                     the bluetooth device name.
263      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
264      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
265      *                                          if unknown.
266      * @throws IllegalArgumentException if identifiers is null or standard deviation is negative.
267      */
268     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
269                            final String bluetoothAddress, final int beaconTypeCode, final int manufacturer,
270                            final int serviceUuid, final String bluetoothName, final double pathLossExponent,
271                            final Double transmittedPowerStandardDeviation) {
272         this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
273                 pathLossExponent);
274 
275         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
276             throw new IllegalArgumentException();
277         }
278         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
279     }
280 
281     /**
282      * Constructor.
283      *
284      * @param identifiers      list of the multipart identifiers of the beacon.
285      * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
286      * @param frequency        frequency used by this Beacon.
287      * @param bluetoothAddress the bluetooth mac address.
288      * @param beaconTypeCode   the two byte value indicating the type of beacon.
289      * @param manufacturer     a two byte code indicating the beacon manufacturer.
290      * @param serviceUuid      a 32 bit service uuid for the beacon.
291      * @param bluetoothName    the bluetooth device name.
292      * @param pathLossExponent path loss exponent. By default, this is 2.0.
293      * @throws IllegalArgumentException if identifiers is null.
294      */
295     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
296                            final double frequency, final String bluetoothAddress, final int beaconTypeCode,
297                            final int manufacturer, final int serviceUuid, final String bluetoothName,
298                            final double pathLossExponent) {
299         super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
300                 bluetoothName);
301         this.pathLossExponent = pathLossExponent;
302     }
303 
304     /**
305      * Constructor.
306      *
307      * @param identifiers                       list of the multipart identifiers of the beacon.
308      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
309      * @param frequency                         frequency used by this Beacon.
310      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
311      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
312      *                                          if unknown.
313      * @throws IllegalArgumentException if identifiers is null or standard deviation is negative.
314      */
315     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
316                            final double frequency, final double pathLossExponent,
317                            final Double transmittedPowerStandardDeviation) {
318         this(identifiers, transmittedPower, frequency, transmittedPowerStandardDeviation);
319         this.pathLossExponent = pathLossExponent;
320     }
321 
322     /**
323      * Constructor.
324      *
325      * @param identifiers                       list of the multipart identifiers of the beacon.
326      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
327      * @param frequency                         frequency used by this Beacon.
328      * @param bluetoothAddress                  the bluetooth mac address.
329      * @param beaconTypeCode                    the two byte value indicating the type of beacon.
330      * @param manufacturer                      a two byte code indicating the beacon manufacturer.
331      * @param serviceUuid                       a 32 bit service uuid for the beacon.
332      * @param bluetoothName                     the bluetooth device name.
333      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
334      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
335      *                                          if unknown.
336      * @throws IllegalArgumentException if identifiers is null or standard deviation is negative.
337      */
338     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
339                            final double frequency, final String bluetoothAddress, final int beaconTypeCode,
340                            final int manufacturer, final int serviceUuid, final String bluetoothName,
341                            final double pathLossExponent, final Double transmittedPowerStandardDeviation) {
342         super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
343                 bluetoothName);
344         this.pathLossExponent = pathLossExponent;
345 
346         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
347             throw new IllegalArgumentException();
348         }
349         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
350     }
351 
352     /**
353      * Constructor.
354      *
355      * @param identifiers                       list of the multipart identifiers of the beacon.
356      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
357      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
358      *                                          if unknown.
359      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
360      * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
361      *                                          unknown.
362      * @throws IllegalArgumentException if identifiers is null or any standard deviation is negative.
363      */
364     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
365                            final Double transmittedPowerStandardDeviation, final double pathLossExponent,
366                            final Double pathLossExponentStandardDeviation) {
367         this(identifiers, transmittedPower, pathLossExponent);
368 
369         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
370             throw new IllegalArgumentException();
371         }
372         if (pathLossExponentStandardDeviation != null && pathLossExponentStandardDeviation < 0.0) {
373             throw new IllegalArgumentException();
374         }
375 
376         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
377         this.pathLossExponentStandardDeviation = pathLossExponentStandardDeviation;
378     }
379 
380     /**
381      * Constructor.
382      *
383      * @param identifiers                       list of the multipart identifiers of the beacon.
384      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
385      * @param bluetoothAddress                  the bluetooth mac address.
386      * @param beaconTypeCode                    the two byte value indicating the type of beacon.
387      * @param manufacturer                      a two byte code indicating the beacon manufacturer.
388      * @param serviceUuid                       a 32 bit service uuid for the beacon.
389      * @param bluetoothName                     the bluetooth device name.
390      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
391      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
392      *                                          if unknown.
393      * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
394      *                                          unknown.
395      * @throws IllegalArgumentException if identifiers is null or any standard deviation is negative.
396      */
397     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
398                            final String bluetoothAddress, final int beaconTypeCode, final int manufacturer,
399                            final int serviceUuid, final String bluetoothName, final double pathLossExponent,
400                            final Double transmittedPowerStandardDeviation,
401                            final Double pathLossExponentStandardDeviation) {
402         this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
403                 pathLossExponent);
404 
405         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
406             throw new IllegalArgumentException();
407         }
408         if (pathLossExponentStandardDeviation != null && pathLossExponentStandardDeviation < 0.0) {
409             throw new IllegalArgumentException();
410         }
411 
412         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
413         this.pathLossExponentStandardDeviation = pathLossExponentStandardDeviation;
414     }
415 
416     /**
417      * Constructor.
418      *
419      * @param identifiers                       list of the multipart identifiers of the beacon.
420      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
421      * @param frequency                         frequency used by this Beacon.
422      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
423      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
424      *                                          if unknown.
425      * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
426      *                                          unknown.
427      * @throws IllegalArgumentException if identifiers is null or any standard deviation is negative.
428      */
429     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
430                            final double frequency, final double pathLossExponent,
431                            final Double transmittedPowerStandardDeviation,
432                            final Double pathLossExponentStandardDeviation) {
433         this(identifiers, transmittedPower, frequency, transmittedPowerStandardDeviation);
434         this.pathLossExponent = pathLossExponent;
435 
436         if (pathLossExponentStandardDeviation != null && pathLossExponentStandardDeviation < 0.0) {
437             throw new IllegalArgumentException();
438         }
439 
440         this.pathLossExponentStandardDeviation = pathLossExponentStandardDeviation;
441     }
442 
443     /**
444      * Constructor.
445      *
446      * @param identifiers                       list of the multipart identifiers of the beacon.
447      * @param transmittedPower                  calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
448      * @param frequency                         frequency used by this Beacon.
449      * @param bluetoothAddress                  the bluetooth mac address.
450      * @param beaconTypeCode                    the two byte value indicating the type of beacon.
451      * @param manufacturer                      a two byte code indicating the beacon manufacturer.
452      * @param serviceUuid                       a 32 bit service uuid for the beacon.
453      * @param bluetoothName                     the bluetooth device name.
454      * @param pathLossExponent                  path loss exponent. By default, this is 2.0.
455      * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
456      *                                          if unknown.
457      * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
458      *                                          unknown.
459      * @throws IllegalArgumentException if identifiers is null.
460      */
461     public BeaconWithPower(final List<BeaconIdentifier> identifiers, final double transmittedPower,
462                            final double frequency, final String bluetoothAddress, final int beaconTypeCode,
463                            final int manufacturer, final int serviceUuid, final String bluetoothName,
464                            final double pathLossExponent, final Double transmittedPowerStandardDeviation,
465                            final Double pathLossExponentStandardDeviation) {
466         super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
467                 bluetoothName);
468         this.pathLossExponent = pathLossExponent;
469 
470         if (transmittedPowerStandardDeviation != null && transmittedPowerStandardDeviation < 0.0) {
471             throw new IllegalArgumentException();
472         }
473         if (pathLossExponentStandardDeviation != null && pathLossExponentStandardDeviation < 0.0) {
474             throw new IllegalArgumentException();
475         }
476 
477         this.transmittedPowerStandardDeviation = transmittedPowerStandardDeviation;
478         this.pathLossExponentStandardDeviation = pathLossExponentStandardDeviation;
479     }
480 
481     /**
482      * Empty constructor.
483      */
484     protected BeaconWithPower() {
485         super();
486     }
487 
488     /**
489      * Gets standard deviation of transmitted power value or null if unknown.
490      *
491      * @return standard deviation of transmitted power value or null if unknown.
492      */
493     @Override
494     public Double getTransmittedPowerStandardDeviation() {
495         return transmittedPowerStandardDeviation;
496     }
497 
498     /**
499      * Gets exponent typically used on free space for path loss propagation in
500      * terms of distance.
501      * On different environments path loss exponent might have different values:
502      * - Free space: 2.0
503      * - Urban Area: 2.7 to 3.5
504      * - Suburban Area: 3 to 5
505      * - Indoor (line-of-sight): 1.6 to 1.8
506      * If path loss exponent estimation is not enabled, this value will always be equal to
507      * {@link #DEFAULT_PATH_LOSS_EXPONENT}
508      *
509      * @return path loss exponent.
510      */
511     @Override
512     public double getPathLossExponent() {
513         return pathLossExponent;
514     }
515 
516     /**
517      * Gets standard deviation of path loss exponent or null if unknown.
518      *
519      * @return standard deviation of path loss exponent or null if unknown.
520      */
521     @Override
522     public Double getPathLossExponentStandardDeviation() {
523         return pathLossExponentStandardDeviation;
524     }
525 }