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 com.irurueta.algebra.Matrix;
19 import com.irurueta.geometry.Point;
20
21 import java.util.List;
22
23 /**
24 * Data related to a beacon whose transmitted power, standard deviation of such
25 * transmitted power and its location are known.
26 *
27 * @param <P> a {@link Point} type.
28 */
29 public class BeaconWithPowerAndLocated<P extends Point<?>> extends BeaconWithPower
30 implements RadioSourceWithPowerAndLocated<P> {
31
32 /**
33 * Position where beacon is located.
34 */
35 private P position;
36
37 /**
38 * Covariance of inhomogeneous coordinates of current position (if available).
39 */
40 private Matrix positionCovariance;
41
42 /**
43 * Constructor.
44 *
45 * @param identifiers list of the multipart identifiers of the beacon.
46 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
47 * @param position position where beacon is located.
48 * @throws IllegalArgumentException if either identifiers or position are null.
49 */
50 public BeaconWithPowerAndLocated(
51 final List<BeaconIdentifier> identifiers, final double transmittedPower, final P position) {
52 super(identifiers, transmittedPower);
53
54 if (position == null) {
55 throw new IllegalArgumentException();
56 }
57
58 this.position = position;
59 }
60
61 /**
62 * Constructor.
63 *
64 * @param identifiers list of the multipart identifiers of the beacon.
65 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
66 * @param bluetoothAddress the bluetooth mac address.
67 * @param beaconTypeCode the two byte value indicating the type of beacon.
68 * @param manufacturer a two byte code indicating the beacon manufacturer.
69 * @param serviceUuid a 32 bit service uuid for the beacon.
70 * @param bluetoothName the bluetooth device name.
71 * @param position position where beacon is located.
72 * @throws IllegalArgumentException if either identifiers or position are null.
73 */
74 public BeaconWithPowerAndLocated(
75 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
76 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
77 final P position) {
78 super(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
79 bluetoothName);
80
81 if (position == null) {
82 throw new IllegalArgumentException();
83 }
84
85 this.position = position;
86 }
87
88 /**
89 * Constructor.
90 *
91 * @param identifiers list of the multipart identifiers of the beacon.
92 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
93 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
94 * @param position position where beacon is located.
95 * @throws IllegalArgumentException if either identifiers or position are null or
96 * standard deviation is negative.
97 */
98 public BeaconWithPowerAndLocated(
99 final List<BeaconIdentifier> identifiers, final double transmittedPower,
100 final Double transmittedPowerStandardDeviation, final P position) {
101 super(identifiers, transmittedPower, transmittedPowerStandardDeviation);
102
103 if (position == null) {
104 throw new IllegalArgumentException();
105 }
106
107 this.position = position;
108 }
109
110 /**
111 * Constructor.
112 *
113 * @param identifiers list of the multipart identifiers of the beacon.
114 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
115 * @param bluetoothAddress the bluetooth mac address.
116 * @param beaconTypeCode the two byte value indicating the type of beacon.
117 * @param manufacturer a two byte code indicating the beacon manufacturer.
118 * @param serviceUuid a 32 bit service uuid for the beacon.
119 * @param bluetoothName the bluetooth device name.
120 * @param transmittedPowerStandardDeviation transmitted power standard deviation.
121 * @param position position where beacon is located.
122 * @throws IllegalArgumentException if either identifiers or position are null or
123 * standard deviation is negative.
124 */
125 public BeaconWithPowerAndLocated(
126 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
127 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
128 final Double transmittedPowerStandardDeviation, final P position) {
129 super(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
130 transmittedPowerStandardDeviation);
131
132 if (position == null) {
133 throw new IllegalArgumentException();
134 }
135
136 this.position = position;
137 }
138
139 /**
140 * Constructor.
141 *
142 * @param identifiers list of the multipart identifiers of the beacon.
143 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
144 * @param position position where beacon is located.
145 * @param positionCovariance covariance of inhomogeneous coordinates of current
146 * position (if available).
147 * @throws IllegalArgumentException if either identifiers or position are null or
148 * covariance has invalid size.
149 */
150 public BeaconWithPowerAndLocated(
151 final List<BeaconIdentifier> identifiers, final double transmittedPower, final P position,
152 final Matrix positionCovariance) {
153 this(identifiers, transmittedPower, position);
154
155 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
156 || positionCovariance.getColumns() != position.getDimensions())) {
157 throw new IllegalArgumentException();
158 }
159 this.positionCovariance = positionCovariance;
160 }
161
162 /**
163 * Constructor.
164 *
165 * @param identifiers list of the multipart identifiers of the beacon.
166 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
167 * @param bluetoothAddress the bluetooth mac address.
168 * @param beaconTypeCode the two byte value indicating the type of beacon.
169 * @param manufacturer a two byte code indicating the beacon manufacturer.
170 * @param serviceUuid a 32 bit service uuid for the beacon.
171 * @param bluetoothName the bluetooth device name.
172 * @param position position where beacon is located.
173 * @param positionCovariance covariance of inhomogeneous coordinates of current
174 * position (if available).
175 * @throws IllegalArgumentException if either identifiers or position are null or
176 * covariance has invalid size.
177 */
178 public BeaconWithPowerAndLocated(
179 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
180 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
181 final P position, final Matrix positionCovariance) {
182 this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
183 position);
184
185 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
186 || positionCovariance.getColumns() != position.getDimensions())) {
187 throw new IllegalArgumentException();
188 }
189 this.positionCovariance = positionCovariance;
190 }
191
192 /**
193 * Constructor.
194 *
195 * @param identifiers list of the multipart identifiers of the beacon.
196 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
197 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
198 * @param position position where beacon is located.
199 * @param positionCovariance covariance of inhomogeneous coordinates of current
200 * position (if available).
201 * @throws IllegalArgumentException if either identifiers or position are null,
202 * covariance has invalid size or standard deviation is negative.
203 */
204 public BeaconWithPowerAndLocated(
205 final List<BeaconIdentifier> identifiers, final double transmittedPower,
206 final Double transmittedPowerStandardDeviation, final P position, final Matrix positionCovariance) {
207 this(identifiers, transmittedPower, transmittedPowerStandardDeviation, position);
208
209 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
210 || positionCovariance.getColumns() != position.getDimensions())) {
211 throw new IllegalArgumentException();
212 }
213 this.positionCovariance = positionCovariance;
214 }
215
216 /**
217 * Constructor.
218 *
219 * @param identifiers list of the multipart identifiers of the beacon.
220 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
221 * @param bluetoothAddress the bluetooth mac address.
222 * @param beaconTypeCode the two byte value indicating the type of beacon.
223 * @param manufacturer a two byte code indicating the beacon manufacturer.
224 * @param serviceUuid a 32 bit service uuid for the beacon.
225 * @param bluetoothName the bluetooth device name.
226 * @param transmittedPowerStandardDeviation transmitted power standard deviation.
227 * @param position position where beacon is located.
228 * @param positionCovariance covariance of inhomogeneous coordinates of current
229 * position (if available).
230 * @throws IllegalArgumentException if either identifiers or position are null,
231 * covariance has invalid size or standard deviation is negative.
232 */
233 public BeaconWithPowerAndLocated(
234 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
235 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
236 final Double transmittedPowerStandardDeviation, final P position,
237 final Matrix positionCovariance) {
238 this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
239 transmittedPowerStandardDeviation, position);
240
241 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
242 || positionCovariance.getColumns() != position.getDimensions())) {
243 throw new IllegalArgumentException();
244 }
245 this.positionCovariance = positionCovariance;
246 }
247
248 /**
249 * Constructor.
250 *
251 * @param identifiers list of the multipart identifiers of the beacon.
252 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
253 * @param frequency frequency used by this Beacon.
254 * @param bluetoothAddress the bluetooth mac address.
255 * @param beaconTypeCode the two byte value indicating the type of beacon.
256 * @param manufacturer a two byte code indicating the beacon manufacturer.
257 * @param serviceUuid a 32 bit service uuid for the beacon.
258 * @param bluetoothName the bluetooth device name.
259 * @param position position where beacon is located.
260 * @throws IllegalArgumentException if either identifiers or position are null.
261 */
262 public BeaconWithPowerAndLocated(
263 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
264 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
265 final String bluetoothName, final P position) {
266 super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
267 bluetoothName);
268
269 if (position == null) {
270 throw new IllegalArgumentException();
271 }
272
273 this.position = position;
274 }
275
276 /**
277 * Constructor.
278 *
279 * @param identifiers list of the multipart identifiers of the beacon.
280 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
281 * @param frequency frequency used by this Beacon.
282 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
283 * @param position position where beacon is located.
284 * @throws IllegalArgumentException if either identifiers or position are null or
285 * standard deviation is negative.
286 */
287 public BeaconWithPowerAndLocated(
288 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
289 final Double transmittedPowerStandardDeviation, final P position) {
290 super(identifiers, transmittedPower, frequency, transmittedPowerStandardDeviation);
291
292 if (position == null) {
293 throw new IllegalArgumentException();
294 }
295
296 this.position = position;
297 }
298
299 /**
300 * Constructor.
301 *
302 * @param identifiers list of the multipart identifiers of the beacon.
303 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
304 * @param frequency frequency used by this Beacon.
305 * @param bluetoothAddress the bluetooth mac address.
306 * @param beaconTypeCode the two byte value indicating the type of beacon.
307 * @param manufacturer a two byte code indicating the beacon manufacturer.
308 * @param serviceUuid a 32 bit service uuid for the beacon.
309 * @param bluetoothName the bluetooth device name.
310 * @param transmittedPowerStandardDeviation transmitted power standard deviation.
311 * @param position position where beacon is located.
312 * @throws IllegalArgumentException if either identifiers or position are null or
313 * standard deviation is negative.
314 */
315 public BeaconWithPowerAndLocated(
316 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
317 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
318 final String bluetoothName, final Double transmittedPowerStandardDeviation, final P position) {
319 super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
320 bluetoothName, transmittedPowerStandardDeviation);
321
322 if (position == null) {
323 throw new IllegalArgumentException();
324 }
325
326 this.position = position;
327 }
328
329 /**
330 * Constructor.
331 *
332 * @param identifiers list of the multipart identifiers of the beacon.
333 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
334 * @param frequency frequency used by this Beacon.
335 * @param bluetoothAddress the bluetooth mac address.
336 * @param beaconTypeCode the two byte value indicating the type of beacon.
337 * @param manufacturer a two byte code indicating the beacon manufacturer.
338 * @param serviceUuid a 32 bit service uuid for the beacon.
339 * @param bluetoothName the bluetooth device name.
340 * @param position position where beacon is located.
341 * @param positionCovariance covariance of inhomogeneous coordinates of current
342 * position (if available).
343 * @throws IllegalArgumentException if either identifiers or position are null or
344 * covariance has invalid size.
345 */
346 public BeaconWithPowerAndLocated(
347 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
348 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
349 final String bluetoothName, final P position, final Matrix positionCovariance) {
350 this(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
351 bluetoothName, position);
352
353 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
354 || positionCovariance.getColumns() != position.getDimensions())) {
355 throw new IllegalArgumentException();
356 }
357 this.positionCovariance = positionCovariance;
358 }
359
360 /**
361 * Constructor.
362 *
363 * @param identifiers list of the multipart identifiers of the beacon.
364 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
365 * @param frequency frequency used by this Beacon.
366 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
367 * @param position position where beacon is located.
368 * @param positionCovariance covariance of inhomogeneous coordinates of current
369 * position (if available).
370 * @throws IllegalArgumentException if either identifiers or position are null,
371 * covariance has invalid size or standard deviation is negative.
372 */
373 public BeaconWithPowerAndLocated(
374 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
375 final Double transmittedPowerStandardDeviation, final P position, final Matrix positionCovariance) {
376 this(identifiers, transmittedPower, frequency, transmittedPowerStandardDeviation, position);
377
378 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
379 || positionCovariance.getColumns() != position.getDimensions())) {
380 throw new IllegalArgumentException();
381 }
382 this.positionCovariance = positionCovariance;
383 }
384
385 /**
386 * Constructor.
387 *
388 * @param identifiers list of the multipart identifiers of the beacon.
389 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
390 * @param frequency frequency used by this Beacon.
391 * @param bluetoothAddress the bluetooth mac address.
392 * @param beaconTypeCode the two byte value indicating the type of beacon.
393 * @param manufacturer a two byte code indicating the beacon manufacturer.
394 * @param serviceUuid a 32 bit service uuid for the beacon.
395 * @param bluetoothName the bluetooth device name.
396 * @param transmittedPowerStandardDeviation transmitted power standard deviation.
397 * @param position position where beacon is located.
398 * @param positionCovariance covariance of inhomogeneous coordinates of current
399 * position (if available).
400 * @throws IllegalArgumentException if either identifiers or position are null,
401 * covariance has invalid size or standard deviation is negative.
402 */
403 public BeaconWithPowerAndLocated(
404 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
405 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
406 final String bluetoothName, final Double transmittedPowerStandardDeviation, final P position,
407 final Matrix positionCovariance) {
408 this(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
409 bluetoothName, transmittedPowerStandardDeviation, position);
410
411 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
412 || positionCovariance.getColumns() != position.getDimensions())) {
413 throw new IllegalArgumentException();
414 }
415 this.positionCovariance = positionCovariance;
416 }
417
418 /**
419 * Constructor.
420 *
421 * @param identifiers list of the multipart identifiers of the beacon.
422 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
423 * @param pathLossExponent path loss exponent. By default, this is 2.0.
424 * @param position position where beacon is located.
425 * @throws IllegalArgumentException if either identifiers or position are null.
426 */
427 public BeaconWithPowerAndLocated(
428 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double pathLossExponent,
429 final P position) {
430 super(identifiers, transmittedPower, pathLossExponent);
431
432 if (position == null) {
433 throw new IllegalArgumentException();
434 }
435
436 this.position = position;
437 }
438
439 /**
440 * Constructor.
441 *
442 * @param identifiers list of the multipart identifiers of the beacon.
443 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
444 * @param bluetoothAddress the bluetooth mac address.
445 * @param beaconTypeCode the two byte value indicating the type of beacon.
446 * @param manufacturer a two byte code indicating the beacon manufacturer.
447 * @param serviceUuid a 32 bit service uuid for the beacon.
448 * @param bluetoothName the bluetooth device name.
449 * @param pathLossExponent path loss exponent. By default, this is 2.0.
450 * @param position position where beacon is located.
451 * @throws IllegalArgumentException if either identifiers or position are null.
452 */
453 public BeaconWithPowerAndLocated(
454 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
455 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
456 final double pathLossExponent, final P position) {
457 super(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
458 pathLossExponent);
459
460 if (position == null) {
461 throw new IllegalArgumentException();
462 }
463
464 this.position = position;
465 }
466
467 /**
468 * Constructor.
469 *
470 * @param identifiers list of the multipart identifiers of the beacon.
471 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
472 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
473 * @param pathLossExponent path loss exponent. By default, this is 2.0.
474 * @param position position where beacon is located.
475 * @throws IllegalArgumentException if either identifiers or position are null or
476 * standard deviation is negative.
477 */
478 public BeaconWithPowerAndLocated(
479 final List<BeaconIdentifier> identifiers, final double transmittedPower,
480 final Double transmittedPowerStandardDeviation, final double pathLossExponent, final P position) {
481 super(identifiers, transmittedPower, transmittedPowerStandardDeviation, pathLossExponent);
482
483 if (position == null) {
484 throw new IllegalArgumentException();
485 }
486
487 this.position = position;
488 }
489
490 /**
491 * Constructor.
492 *
493 * @param identifiers list of the multipart identifiers of the beacon.
494 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
495 * @param bluetoothAddress the bluetooth mac address.
496 * @param beaconTypeCode the two byte value indicating the type of beacon.
497 * @param manufacturer a two byte code indicating the beacon manufacturer.
498 * @param serviceUuid a 32 bit service uuid for the beacon.
499 * @param bluetoothName the bluetooth device name.
500 * @param pathLossExponent path loss exponent. By default, this is 2.0.
501 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
502 * @param position position where beacon is located.
503 * @throws IllegalArgumentException if either identifiers or position are null or
504 * standard deviation is negative.
505 */
506 public BeaconWithPowerAndLocated(
507 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
508 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
509 final double pathLossExponent, final Double transmittedPowerStandardDeviation, final P position) {
510 super(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
511 pathLossExponent, transmittedPowerStandardDeviation);
512
513 if (position == null) {
514 throw new IllegalArgumentException();
515 }
516
517 this.position = position;
518 }
519
520 /**
521 * Constructor.
522 *
523 * @param identifiers list of the multipart identifiers of the beacon.
524 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
525 * @param pathLossExponent path loss exponent. By default, this is 2.0.
526 * @param position position where beacon is located.
527 * @param positionCovariance covariance of inhomogeneous coordinates of current
528 * position (if available).
529 * @throws IllegalArgumentException if either identifiers or position are null or
530 * covariance has invalid size.
531 */
532 public BeaconWithPowerAndLocated(
533 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double pathLossExponent,
534 final P position, final Matrix positionCovariance) {
535 this(identifiers, transmittedPower, pathLossExponent, position);
536
537 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
538 || positionCovariance.getColumns() != position.getDimensions())) {
539 throw new IllegalArgumentException();
540 }
541 this.positionCovariance = positionCovariance;
542 }
543
544 /**
545 * Constructor.
546 *
547 * @param identifiers list of the multipart identifiers of the beacon.
548 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
549 * @param bluetoothAddress the bluetooth mac address.
550 * @param beaconTypeCode the two byte value indicating the type of beacon.
551 * @param manufacturer a two byte code indicating the beacon manufacturer.
552 * @param serviceUuid a 32 bit service uuid for the beacon.
553 * @param bluetoothName the bluetooth device name.
554 * @param pathLossExponent path loss exponent. By default, this is 2.0.
555 * @param position position where beacon is located.
556 * @param positionCovariance covariance of inhomogeneous coordinates of current
557 * position (if available).
558 * @throws IllegalArgumentException if either identifiers or position are null or
559 * covariance has invalid size.
560 */
561 public BeaconWithPowerAndLocated(
562 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
563 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
564 final double pathLossExponent, final P position, final Matrix positionCovariance) {
565 this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
566 pathLossExponent, position);
567
568 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
569 || positionCovariance.getColumns() != position.getDimensions())) {
570 throw new IllegalArgumentException();
571 }
572 this.positionCovariance = positionCovariance;
573 }
574
575 /**
576 * Constructor.
577 *
578 * @param identifiers list of the multipart identifiers of the beacon.
579 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
580 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
581 * @param pathLossExponent path loss exponent. By default, this is 2.0.
582 * @param position position where beacon is located.
583 * @param positionCovariance covariance of inhomogeneous coordinates of current
584 * position (if available).
585 * @throws IllegalArgumentException if either identifiers or position are null,
586 * covariance has invalid size or standard deviation is negative.
587 */
588 public BeaconWithPowerAndLocated(
589 final List<BeaconIdentifier> identifiers, final double transmittedPower,
590 final Double transmittedPowerStandardDeviation, final double pathLossExponent, final P position,
591 final Matrix positionCovariance) {
592 this(identifiers, transmittedPower, transmittedPowerStandardDeviation, pathLossExponent, position);
593
594 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
595 || positionCovariance.getColumns() != position.getDimensions())) {
596 throw new IllegalArgumentException();
597 }
598 this.positionCovariance = positionCovariance;
599 }
600
601 /**
602 * Constructor.
603 *
604 * @param identifiers list of the multipart identifiers of the beacon.
605 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
606 * @param bluetoothAddress the bluetooth mac address.
607 * @param beaconTypeCode the two byte value indicating the type of beacon.
608 * @param manufacturer a two byte code indicating the beacon manufacturer.
609 * @param serviceUuid a 32 bit service uuid for the beacon.
610 * @param bluetoothName the bluetooth device name.
611 * @param pathLossExponent path loss exponent. By default, this is 2.0.
612 * @param transmittedPowerStandardDeviation transmitted power standard deviation.
613 * @param position position where beacon is located.
614 * @param positionCovariance covariance of inhomogeneous coordinates of current
615 * position (if available).
616 * @throws IllegalArgumentException if either identifiers or position are null,
617 * covariance has invalid size or standard deviation is negative.
618 */
619 public BeaconWithPowerAndLocated(
620 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
621 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
622 final double pathLossExponent, final Double transmittedPowerStandardDeviation, final P position,
623 final Matrix positionCovariance) {
624 this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
625 pathLossExponent, transmittedPowerStandardDeviation, position);
626
627 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
628 || positionCovariance.getColumns() != position.getDimensions())) {
629 throw new IllegalArgumentException();
630 }
631 this.positionCovariance = positionCovariance;
632 }
633
634 /**
635 * Constructor.
636 *
637 * @param identifiers list of the multipart identifiers of the beacon.
638 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
639 * @param frequency frequency used by this Beacon.
640 * @param bluetoothAddress the bluetooth mac address.
641 * @param beaconTypeCode the two byte value indicating the type of beacon.
642 * @param manufacturer a two byte code indicating the beacon manufacturer.
643 * @param serviceUuid a 32 bit service uuid for the beacon.
644 * @param bluetoothName the bluetooth device name.
645 * @param pathLossExponent path loss exponent. By default, this is 2.0.
646 * @param position position where beacon is located.
647 * @throws IllegalArgumentException if either identifiers or position are null.
648 */
649 public BeaconWithPowerAndLocated(
650 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
651 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
652 final String bluetoothName, final double pathLossExponent, final P position) {
653 super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
654 bluetoothName, pathLossExponent);
655
656 if (position == null) {
657 throw new IllegalArgumentException();
658 }
659
660 this.position = position;
661 }
662
663 /**
664 * Constructor.
665 *
666 * @param identifiers list of the multipart identifiers of the beacon.
667 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
668 * @param frequency frequency used by this Beacon.
669 * @param pathLossExponent path loss exponent. By default, this is 2.0.
670 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
671 * @param position position where beacon is located.
672 * @throws IllegalArgumentException if either identifiers or position are null or
673 * standard deviation is negative.
674 */
675 public BeaconWithPowerAndLocated(
676 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
677 final double pathLossExponent, final Double transmittedPowerStandardDeviation, final P position) {
678 super(identifiers, transmittedPower, frequency, pathLossExponent, transmittedPowerStandardDeviation);
679
680 if (position == null) {
681 throw new IllegalArgumentException();
682 }
683
684 this.position = position;
685 }
686
687 /**
688 * Constructor.
689 *
690 * @param identifiers list of the multipart identifiers of the beacon.
691 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
692 * @param frequency frequency used by this Beacon.
693 * @param bluetoothAddress the bluetooth mac address.
694 * @param beaconTypeCode the two byte value indicating the type of beacon.
695 * @param manufacturer a two byte code indicating the beacon manufacturer.
696 * @param serviceUuid a 32 bit service uuid for the beacon.
697 * @param bluetoothName the bluetooth device name.
698 * @param pathLossExponent path loss exponent. By default, this is 2.0.
699 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
700 * @param position position where beacon is located.
701 * @throws IllegalArgumentException if either identifiers or position are null or
702 * standard deviation is negative.
703 */
704 public BeaconWithPowerAndLocated(
705 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
706 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
707 final String bluetoothName, final double pathLossExponent, final Double transmittedPowerStandardDeviation,
708 final P position) {
709 super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
710 bluetoothName, pathLossExponent, transmittedPowerStandardDeviation);
711
712 if (position == null) {
713 throw new IllegalArgumentException();
714 }
715
716 this.position = position;
717 }
718
719 /**
720 * Constructor.
721 *
722 * @param identifiers list of the multipart identifiers of the beacon.
723 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
724 * @param frequency frequency used by this Beacon.
725 * @param bluetoothAddress the bluetooth mac address.
726 * @param beaconTypeCode the two byte value indicating the type of beacon.
727 * @param manufacturer a two byte code indicating the beacon manufacturer.
728 * @param serviceUuid a 32 bit service uuid for the beacon.
729 * @param bluetoothName the bluetooth device name.
730 * @param pathLossExponent path loss exponent. By default, this is 2.0.
731 * @param position position where beacon is located.
732 * @param positionCovariance covariance of inhomogeneous coordinates of current
733 * position (if available).
734 * @throws IllegalArgumentException if either identifiers or position are null or
735 * covariance has invalid size.
736 */
737 public BeaconWithPowerAndLocated(
738 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
739 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
740 final String bluetoothName, final double pathLossExponent, final P position,
741 final Matrix positionCovariance) {
742 this(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
743 bluetoothName, pathLossExponent, position);
744
745 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
746 || positionCovariance.getColumns() != position.getDimensions())) {
747 throw new IllegalArgumentException();
748 }
749 this.positionCovariance = positionCovariance;
750 }
751
752 /**
753 * Constructor.
754 *
755 * @param identifiers list of the multipart identifiers of the beacon.
756 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
757 * @param frequency frequency used by this Beacon.
758 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
759 * @param pathLossExponent path loss exponent. By default, this is 2.0.
760 * @param position position where beacon is located.
761 * @param positionCovariance covariance of inhomogeneous coordinates of current
762 * position (if available).
763 * @throws IllegalArgumentException if either identifiers or position are null,
764 * covariance has invalid size or standard deviation is negative.
765 */
766 public BeaconWithPowerAndLocated(
767 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
768 final double pathLossExponent, final Double transmittedPowerStandardDeviation, final P position,
769 final Matrix positionCovariance) {
770 this(identifiers, transmittedPower, frequency, pathLossExponent, transmittedPowerStandardDeviation, position);
771
772 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
773 || positionCovariance.getColumns() != position.getDimensions())) {
774 throw new IllegalArgumentException();
775 }
776 this.positionCovariance = positionCovariance;
777 }
778
779 /**
780 * Constructor.
781 *
782 * @param identifiers list of the multipart identifiers of the beacon.
783 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
784 * @param frequency frequency used by this Beacon.
785 * @param bluetoothAddress the bluetooth mac address.
786 * @param beaconTypeCode the two byte value indicating the type of beacon.
787 * @param manufacturer a two byte code indicating the beacon manufacturer.
788 * @param serviceUuid a 32 bit service uuid for the beacon.
789 * @param bluetoothName the bluetooth device name.
790 * @param pathLossExponent path loss exponent. By default, this is 2.0.
791 * @param transmittedPowerStandardDeviation transmitted power standard deviation.
792 * @param position position where beacon is located.
793 * @param positionCovariance covariance of inhomogeneous coordinates of current
794 * position (if available).
795 * @throws IllegalArgumentException if either identifiers or position are null,
796 * covariance has invalid size or standard deviation is negative.
797 */
798 public BeaconWithPowerAndLocated(
799 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
800 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
801 final String bluetoothName, final double pathLossExponent, final Double transmittedPowerStandardDeviation,
802 final P position, final Matrix positionCovariance) {
803 this(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
804 bluetoothName, pathLossExponent, transmittedPowerStandardDeviation, position);
805
806 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
807 || positionCovariance.getColumns() != position.getDimensions())) {
808 throw new IllegalArgumentException();
809 }
810 this.positionCovariance = positionCovariance;
811 }
812
813 /**
814 * Constructor.
815 *
816 * @param identifiers list of the multipart identifiers of the beacon.
817 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
818 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
819 * @param pathLossExponent path loss exponent. By default, this is 2.0.
820 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
821 * unknown.
822 * @param position position where beacon is located.
823 * @throws IllegalArgumentException if either identifiers or position are null or
824 * any standard deviation is negative.
825 */
826 public BeaconWithPowerAndLocated(
827 final List<BeaconIdentifier> identifiers, final double transmittedPower,
828 final Double transmittedPowerStandardDeviation, final double pathLossExponent,
829 final Double pathLossExponentStandardDeviation, final P position) {
830 super(identifiers, transmittedPower, transmittedPowerStandardDeviation, pathLossExponent,
831 pathLossExponentStandardDeviation);
832
833 if (position == null) {
834 throw new IllegalArgumentException();
835 }
836
837 this.position = position;
838 }
839
840 /**
841 * Constructor.
842 *
843 * @param identifiers list of the multipart identifiers of the beacon.
844 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
845 * @param bluetoothAddress the bluetooth mac address.
846 * @param beaconTypeCode the two byte value indicating the type of beacon.
847 * @param manufacturer a two byte code indicating the beacon manufacturer.
848 * @param serviceUuid a 32 bit service uuid for the beacon.
849 * @param bluetoothName the bluetooth device name.
850 * @param pathLossExponent path loss exponent. By default, this is 2.0.
851 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
852 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
853 * unknown.
854 * @param position position where beacon is located.
855 * @throws IllegalArgumentException if either identifiers or position are null or
856 * any standard deviation is negative.
857 */
858 public BeaconWithPowerAndLocated(
859 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
860 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
861 final double pathLossExponent, final Double transmittedPowerStandardDeviation,
862 final Double pathLossExponentStandardDeviation, final P position) {
863 super(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
864 pathLossExponent, transmittedPowerStandardDeviation, pathLossExponentStandardDeviation);
865
866 if (position == null) {
867 throw new IllegalArgumentException();
868 }
869
870 this.position = position;
871 }
872
873 /**
874 * Constructor.
875 *
876 * @param identifiers list of the multipart identifiers of the beacon.
877 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
878 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
879 * @param pathLossExponent path loss exponent. By default, this is 2.0.
880 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
881 * unknown.
882 * @param position position where beacon is located.
883 * @param positionCovariance covariance of inhomogeneous coordinates of current
884 * position (if available).
885 * @throws IllegalArgumentException if either identifiers or position are null,
886 * covariance has invalid size or any standard deviation is negative.
887 */
888 public BeaconWithPowerAndLocated(
889 final List<BeaconIdentifier> identifiers, final double transmittedPower,
890 final Double transmittedPowerStandardDeviation, final double pathLossExponent,
891 final Double pathLossExponentStandardDeviation, final P position, final Matrix positionCovariance) {
892 this(identifiers, transmittedPower, transmittedPowerStandardDeviation, pathLossExponent,
893 pathLossExponentStandardDeviation, position);
894
895 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
896 || positionCovariance.getColumns() != position.getDimensions())) {
897 throw new IllegalArgumentException();
898 }
899 this.positionCovariance = positionCovariance;
900 }
901
902 /**
903 * Constructor.
904 *
905 * @param identifiers list of the multipart identifiers of the beacon.
906 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
907 * @param bluetoothAddress the bluetooth mac address.
908 * @param beaconTypeCode the two byte value indicating the type of beacon.
909 * @param manufacturer a two byte code indicating the beacon manufacturer.
910 * @param serviceUuid a 32 bit service uuid for the beacon.
911 * @param bluetoothName the bluetooth device name.
912 * @param pathLossExponent path loss exponent. By default, this is 2.0.
913 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
914 * if unknown.
915 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
916 * unknown.
917 * @param position position where beacon is located.
918 * @param positionCovariance covariance of inhomogeneous coordinates of current
919 * position (if available).
920 * @throws IllegalArgumentException if either identifiers or position are null,
921 * covariance has invalid size or any standard deviation is negative.
922 */
923 public BeaconWithPowerAndLocated(
924 final List<BeaconIdentifier> identifiers, final double transmittedPower, final String bluetoothAddress,
925 final int beaconTypeCode, final int manufacturer, final int serviceUuid, final String bluetoothName,
926 final double pathLossExponent, final Double transmittedPowerStandardDeviation,
927 final Double pathLossExponentStandardDeviation, final P position, final Matrix positionCovariance) {
928 this(identifiers, transmittedPower, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid, bluetoothName,
929 pathLossExponent, transmittedPowerStandardDeviation, pathLossExponentStandardDeviation, position);
930
931 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
932 || positionCovariance.getColumns() != position.getDimensions())) {
933 throw new IllegalArgumentException();
934 }
935 this.positionCovariance = positionCovariance;
936 }
937
938 /**
939 * Constructor.
940 *
941 * @param identifiers list of the multipart identifiers of the beacon.
942 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
943 * @param frequency frequency used by this Beacon.
944 * @param pathLossExponent path loss exponent. By default, this is 2.0.
945 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
946 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
947 * unknown.
948 * @param position position where beacon is located.
949 * @throws IllegalArgumentException if either identifiers or position are null or
950 * any standard deviation is negative.
951 */
952 public BeaconWithPowerAndLocated(
953 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
954 final double pathLossExponent, final Double transmittedPowerStandardDeviation,
955 final Double pathLossExponentStandardDeviation, final P position) {
956 super(identifiers, transmittedPower, frequency, pathLossExponent, transmittedPowerStandardDeviation,
957 pathLossExponentStandardDeviation);
958
959 if (position == null) {
960 throw new IllegalArgumentException();
961 }
962
963 this.position = position;
964 }
965
966 /**
967 * Constructor.
968 *
969 * @param identifiers list of the multipart identifiers of the beacon.
970 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
971 * @param frequency frequency used by this Beacon.
972 * @param bluetoothAddress the bluetooth mac address.
973 * @param beaconTypeCode the two byte value indicating the type of beacon.
974 * @param manufacturer a two byte code indicating the beacon manufacturer.
975 * @param serviceUuid a 32 bit service uuid for the beacon.
976 * @param bluetoothName the bluetooth device name.
977 * @param pathLossExponent path loss exponent. By default, this is 2.0.
978 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
979 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
980 * unknown.
981 * @param position position where beacon is located.
982 * @throws IllegalArgumentException if either identifiers or position are null or
983 * any standard deviation is negative.
984 */
985 public BeaconWithPowerAndLocated(
986 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
987 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
988 final String bluetoothName, final double pathLossExponent, final Double transmittedPowerStandardDeviation,
989 final Double pathLossExponentStandardDeviation, final P position) {
990 super(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
991 bluetoothName, pathLossExponent, transmittedPowerStandardDeviation, pathLossExponentStandardDeviation);
992
993 if (position == null) {
994 throw new IllegalArgumentException();
995 }
996
997 this.position = position;
998 }
999
1000 /**
1001 * Constructor.
1002 *
1003 * @param identifiers list of the multipart identifiers of the beacon.
1004 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
1005 * @param frequency frequency used by this Beacon.
1006 * @param pathLossExponent path loss exponent. By default, this is 2.0.
1007 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value.
1008 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
1009 * unknown.
1010 * @param position position where beacon is located.
1011 * @param positionCovariance covariance of inhomogeneous coordinates of current
1012 * position (if available).
1013 * @throws IllegalArgumentException if either identifiers or position are null,
1014 * covariance has invalid size or any standard deviation is negative.
1015 */
1016 public BeaconWithPowerAndLocated(
1017 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
1018 final double pathLossExponent, final Double transmittedPowerStandardDeviation,
1019 final Double pathLossExponentStandardDeviation, final P position, final Matrix positionCovariance) {
1020 this(identifiers, transmittedPower, frequency, pathLossExponent, transmittedPowerStandardDeviation,
1021 pathLossExponentStandardDeviation, position);
1022
1023 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
1024 || positionCovariance.getColumns() != position.getDimensions())) {
1025 throw new IllegalArgumentException();
1026 }
1027 this.positionCovariance = positionCovariance;
1028 }
1029
1030 /**
1031 * Constructor.
1032 *
1033 * @param identifiers list of the multipart identifiers of the beacon.
1034 * @param transmittedPower calibrated measured Tx power of the Beacon in RSSI (expressed in dBm's).
1035 * @param frequency frequency used by this Beacon.
1036 * @param bluetoothAddress the bluetooth mac address.
1037 * @param beaconTypeCode the two byte value indicating the type of beacon.
1038 * @param manufacturer a two byte code indicating the beacon manufacturer.
1039 * @param serviceUuid a 32 bit service uuid for the beacon.
1040 * @param bluetoothName the bluetooth device name.
1041 * @param pathLossExponent path loss exponent. By default, this is 2.0.
1042 * @param transmittedPowerStandardDeviation standard deviation of transmitted power value or null
1043 * if unknown.
1044 * @param pathLossExponentStandardDeviation standard deviation of path loss exponent or null if
1045 * unknown.
1046 * @param position position where beacon is located.
1047 * @param positionCovariance covariance of inhomogeneous coordinates of current
1048 * position (if available).
1049 * @throws IllegalArgumentException if either identifiers or position are null,
1050 * covariance has invalid size or any standard deviation is negative.
1051 */
1052 public BeaconWithPowerAndLocated(
1053 final List<BeaconIdentifier> identifiers, final double transmittedPower, final double frequency,
1054 final String bluetoothAddress, final int beaconTypeCode, final int manufacturer, final int serviceUuid,
1055 final String bluetoothName, final double pathLossExponent, final Double transmittedPowerStandardDeviation,
1056 final Double pathLossExponentStandardDeviation, final P position, final Matrix positionCovariance) {
1057 this(identifiers, transmittedPower, frequency, bluetoothAddress, beaconTypeCode, manufacturer, serviceUuid,
1058 bluetoothName, pathLossExponent, transmittedPowerStandardDeviation, pathLossExponentStandardDeviation,
1059 position);
1060
1061 if (positionCovariance != null && (positionCovariance.getRows() != position.getDimensions()
1062 || positionCovariance.getColumns() != position.getDimensions())) {
1063 throw new IllegalArgumentException();
1064 }
1065 this.positionCovariance = positionCovariance;
1066 }
1067
1068 /**
1069 * Empty constructor.
1070 */
1071 protected BeaconWithPowerAndLocated() {
1072 super();
1073 }
1074
1075 /**
1076 * Gets position where beacon is located.
1077 *
1078 * @return position where beacon is located.
1079 */
1080 @Override
1081 public P getPosition() {
1082 return position;
1083 }
1084
1085 /**
1086 * Gets covariance of inhomogeneous coordinates of current position (if available).
1087 *
1088 * @return covariance of position or null.
1089 */
1090 @Override
1091 public Matrix getPositionCovariance() {
1092 return positionCovariance;
1093 }
1094 }