//fontsize=14
10
com.umlet.element.Class
1080
630
100
60
Positioning
// Centralise le calcul des
// positions
--
//-distance_matrix: float**
com.umlet.element.Class
1040
430
110
30
UserInterface
// Classe utilitaire servant à
// récupérer la configuration
// depuis plusieurs endroits :
// arguments de la ligne de
// commandes, fichier de
// configuration, peut-être un
// jour base de données…
com.umlet.element.Class
1170
210
310
130
Point3D
--
#x: float
#y: float
#z: float
--
+square_distance(Point3D): float
+distance(Point3D): float
+distance_to_sphere(Point3D, float): float
com.umlet.element.Class
1530
250
120
30
ReferencePoint
com.umlet.element.Relation
1450
240
100
50
lt=<<-
30;30;80;30
com.umlet.element.Class
760
50
120
50
Building
--
#name: string
com.umlet.element.Class
750
240
130
50
Area
--
#name: string
com.umlet.element.Class
990
150
100
30
Waypoint
com.umlet.element.Relation
1060
150
130
80
lt=<<-
110;60;30;30
com.umlet.element.Relation
800
70
50
190
lt=<<<<-
m2=1..n
30;30;30;170
com.umlet.element.Relation
570
140
440
240
lt=<<<<-
m2=0..n
30;220;70;30;420;30
com.umlet.element.Relation
640
630
460
200
lt=<<<-
m1=0..1
m2=0..n
440;30;30;180
com.umlet.element.Relation
1150
640
470
130
lt=<<<-
m1=0..1
m2=0..n
30;30;450;110
com.umlet.element.Class
1040
740
160
30
/PositioningAlgorithm/
fg=
com.umlet.element.Relation
1090
660
50
100
lt=<<<<-
m2=1..n
30;30;30;80
com.umlet.element.Class
1090
350
150
30
owlps-positionerd
bg=yellow
com.umlet.element.Class
530
450
190
50
CapturePoint
--
#frequency: unsigned int
//#friis_idx
com.umlet.element.Class
250
350
160
30
Mobile
com.umlet.element.Relation
1070
350
100
100
lt=<<<<-
80;30;30;80
com.umlet.element.Relation
1140
350
90
300
lt=<<<<-
70;30;70;180;30;280
com.umlet.element.Class
390
1040
70
30
InputDB
fg=red
com.umlet.element.Class
470
810
220
40
Input
// Gère les entrées
--
+get_next_request(): Request
com.umlet.element.Class
450
890
220
70
/InputMedium/
//extends input flow ?
--
--
/+get_next_request(): Request/
com.umlet.element.Relation
390
930
100
130
lt=<<-
80;30;30;110
com.umlet.element.Class
470
1040
70
30
InputXML
fg=red
com.umlet.element.Relation
480
930
60
130
lt=<<-
40;30;30;110
com.umlet.element.Class
550
1040
180
60
InputCSV
--
#input_file_name: string
#input_file: std::ifstream
com.umlet.element.Relation
550
930
60
130
lt=<<-
30;30;40;110
com.umlet.element.Class
650
1130
150
50
/InputNetworkSocket/
fg=red
--
#listen_port: int
com.umlet.element.Relation
640
930
190
130
lt=<<-
30;30;170;110
com.umlet.element.Relation
520
820
50
90
lt=<<<<-
// A priori, il n'y a pas de raison
// d'avoir plusieurs sources en
// entrée.
30;30;30;70
com.umlet.element.Class
740
1040
140
50
/InputSocket/
fg=red
--
#listen_socket: int
com.umlet.element.Relation
690
1060
100
90
lt=<<-
80;30;30;70
com.umlet.element.Relation
790
1060
100
90
lt=<<-
30;30;80;70
com.umlet.element.Class
810
1130
150
50
InputUnixSocket
fg=red
--
#sock_name: string
com.umlet.element.Class
1600
750
100
30
Output
// Gère les sorties de résultats
com.umlet.element.Class
1680
850
120
30
/OutputMedium/
com.umlet.element.Relation
1690
850
50
110
lt=<<-
30;30;30;90
com.umlet.element.Class
1770
940
90
30
OutputCSV
com.umlet.element.Relation
1710
850
110
110
lt=<<-
30;30;90;90
com.umlet.element.Relation
1820
940
120
130
lt=<<-
100;30;30;110
com.umlet.element.Class
1870
940
160
30
/OutputNetworkSocket/
com.umlet.element.Class
1780
1050
140
30
OutputUDPSocket
com.umlet.element.Relation
1750
850
190
110
lt=<<-
30;30;170;90
com.umlet.element.Relation
1630
750
130
120
lt=<<<<-
m2=1..n
30;30;110;100
com.umlet.element.Relation
1800
640
130
150
lt=<<-
110;30;30;130
com.umlet.element.Class
1670
940
90
30
OutputXML
fg=red
com.umlet.element.Class
1580
940
80
30
OutputDB
fg=red
com.umlet.element.Class
1460
940
110
30
OutputTerminal
com.umlet.element.Relation
1490
850
210
110
lt=<<-
190;30;30;90
com.umlet.element.Relation
1590
850
130
110
lt=<<-
110;30;30;90
com.umlet.element.Relation
380
340
190
50
lt=<<<<-
m2=0..n
170;30;30;30
com.umlet.element.Relation
660
280
530
190
lt=<<<<-
coordinates
m1=0..n
30;170;360;50;510;50
com.umlet.element.Relation
850
230
340
70
lt=<<<<-
coordinates
m2=2
m1=0..n
30;50;320;50
com.umlet.element.Relation
850
150
190
120
lt=-
m1=1..n
m2=0..n
30;100;170;30
com.umlet.element.Relation
600
70
180
310
lt=->>>>
m1=0..n
160;30;30;290
com.umlet.element.Relation
1150
250
500
410
lt=->
m2=0..n
30;390;480;200;480;30
com.umlet.element.Class
1090
510
100
30
Configuration
bg=green
// Stocke la configuration
com.umlet.element.Relation
1060
430
90
100
lt=<.
70;80;30;30
com.umlet.element.Relation
1070
510
90
140
lt=<.
70;30;30;120
com.umlet.element.Class
660
1220
120
30
InputUDPSocket
com.umlet.element.Relation
690
1150
50
90
lt=<<-
30;30;30;70
com.umlet.element.Class
340
550
160
60
Measurement
// Représente une liste de signaux reçus d'un
// mobile par un AP.
--
#average_ss: float
#ss_list: vector<int>
com.umlet.element.Relation
190
350
210
360
lt=<-
m2=0..n
transmitter
70;30;70;190;190;340
com.umlet.element.Relation
470
470
140
100
lt=-
m2=0..n
receiver
120;30;30;80
com.umlet.element.Relation
390
690
80
220
lt=>-
60;200;30;30
com.umlet.element.Relation
1460
250
130
160
lt=-
m2=1..n
110;30;30;140
com.umlet.element.Class
1020
940
70
30
NSS
// Anciennement RADAR
com.umlet.element.Class
890
940
60
30
FBCM
com.umlet.element.Class
930
1010
100
30
FRBHMBasic
com.umlet.element.Relation
900
840
120
120
lt=<<-
100;30;30;100
com.umlet.element.Relation
1030
840
180
120
lt=<<-
160;30;30;100
com.umlet.element.Relation
1200
840
70
190
lt=<<-
50;30;30;170
com.umlet.element.Class
170
940
130
30
/InputLogMedium/
com.umlet.element.Relation
210
800
280
160
lt=<<<<-
m2=0..n
260;30;30;30;30;140
com.umlet.element.Class
0
1040
90
30
InputLogDB
fg=red
com.umlet.element.Relation
10
940
220
120
lt=<<-
200;30;30;100
com.umlet.element.Class
280
1040
100
30
InputLogXML
fg=red
com.umlet.element.Relation
220
940
130
120
lt=<<-
30;30;110;100
com.umlet.element.Class
100
1040
170
60
InputLogCSV
--
#log_file_name: string
#log_file: std::ofstream
com.umlet.element.Relation
170
940
80
120
lt=<<-
60;30;30;100
com.umlet.element.Class
1870
640
130
30
/StatisticsMedium/
fg=red
com.umlet.element.Relation
1630
620
260
150
lt=<<<<-
m1=0..1
m2=0..n
30;130;240;30
com.umlet.element.Class
1740
770
140
30
StatisticsTerminal
fg=red
com.umlet.element.Class
1890
770
110
30
StatisticsXML
fg=red
com.umlet.element.Relation
1900
640
60
150
lt=<<-
30;30;40;130
com.umlet.element.Class
2010
770
110
30
StatisticsDB
fg=red
com.umlet.element.Relation
1930
640
160
150
lt=<<-
30;30;140;130
com.umlet.element.Class
1390
390
150
30
CalibrationRequest
com.umlet.element.Relation
430
390
1070
330
lt=<<-
30;310;850;170;1050;30
com.umlet.element.Class
340
420
160
100
WifiDevice
--
#ip_addr: string
#mac_addr: string
#antenna_gain: float
#trx_power: float
com.umlet.element.Relation
470
440
80
50
lt=<<-
30;30;60;30
com.umlet.element.Relation
260
350
100
160
lt=<<-
80;140;30;140;30;30
com.umlet.element.Class
1170
1010
120
30
FRBHMDiscrete
fg=red
com.umlet.element.Relation
900
940
100
90
lt=<<-
30;30;80;70
com.umlet.element.Class
750
940
130
30
InterlinkNetworks
com.umlet.element.Relation
780
840
210
120
lt=<<-
190;30;30;100
com.umlet.element.Class
1300
1010
140
30
FRBHMContinuous
fg=red
com.umlet.element.Relation
1250
840
100
190
lt=<<-
30;30;80;170
com.umlet.element.Class
380
690
80
30
Request
// Représente une requête envoyée
// par un mobile.
com.umlet.element.Relation
390
580
50
130
lt=<<<<-
m2=1..n
30;110;30;30
com.umlet.element.Class
550
360
80
30
Stock
bg=green
// Classe de stockage,
// attributs statiques
com.umlet.element.Relation
600
340
510
50
lt=<<<<-
490;30;30;30
com.umlet.element.Relation
550
360
50
110
lt=<<<<-
m2=0..n
30;30;30;90
com.umlet.element.Class
420
240
70
30
PosUtil
bg=green
// Classe utilitaire, méthodes
// statiques et #define
com.umlet.element.Class
1480
540
100
30
Result
com.umlet.element.Relation
1600
540
150
230
lt=>-
30;210;130;30
com.umlet.element.Relation
1220
310
280
250
lt=->>>>
position
60;30;60;180;260;230
com.umlet.element.Relation
430
530
1070
200
lt=<-
1050;30;30;180
com.umlet.element.Class
170
730
220
60
Timestamp
--
#timestamp: struct timespec
--
+now(): bool
com.umlet.element.Relation
230
670
170
80
lt=<<<<-
150;30;30;30;30;60
com.umlet.element.Class
1250
750
100
30
RealPosition
// Faux algorithme qui retourne
// la position réelle (si disponible)
com.umlet.element.Relation
1170
730
100
50
lt=<<-
30;30;80;30
com.umlet.element.Class
410
190
100
30
posexcept.hh
// Ensemble de classes d'exceptions
com.umlet.element.Class
1690
390
90
30
Direction
com.umlet.element.Relation
1510
370
200
50
lt=<<<<-
30;30;180;30
com.umlet.element.Relation
540
0
1060
380
lt=->>>>
m1=0..n
1040;250;1040;30;50;30;30;360
com.umlet.element.Relation
600
360
810
90
lt=->>>>
m1=0..n
790;40;110;70;30;30
com.umlet.element.Class
1190
1250
180
50
TextFileWriter
--
--
+write_text(string): bool
com.umlet.element.Relation
1230
940
600
330
lt=<-
30;310;580;30
com.umlet.element.Relation
160
1070
1050
210
lt=<-
1030;190;380;190;30;30
com.umlet.element.Class
960
840
180
30
/TrilaterationAlgorithm/
com.umlet.element.Class
730
840
170
30
/TrilaterationMethod/
com.umlet.element.Class
900
790
80
30
MinMax
com.umlet.element.Relation
870
820
110
50
lt=->
90;30;30;30
com.umlet.element.Relation
1030
740
110
120
lt=<<-
90;30;30;100
com.umlet.element.Relation
790
780
130
80
lt=<<-
30;60;110;30
com.umlet.element.Class
1180
840
170
30
/CartographyAlgorithm/
com.umlet.element.Relation
1130
740
160
120
lt=<<-
30;30;140;100
com.umlet.element.Relation
1110
840
240
190
lt=<<-
30;30;220;170
com.umlet.element.Relation
950
940
110
90
lt=<<-
90;30;30;70
com.umlet.element.Relation
1080
840
170
190
lt=<<-
30;30;150;170
com.umlet.element.Class
700
550
170
60
CSVFileReader
--
--
+next_line(): bool
com.umlet.element.Relation
660
580
100
480
lt=<-
80;30;30;460
com.umlet.element.Class
960
550
150
30
TopologyReaderCSV
com.umlet.element.Relation
840
540
140
50
lt=<-
30;30;120;30
com.umlet.element.Relation
950
410
110
50
lt=<-
30;30;90;30
com.umlet.element.Class
510
600
180
50
TextFileReader
--
--
+read_line(string): bool
com.umlet.element.Relation
580
550
140
70
lt=<<-
30;50;30;30;120;30
com.umlet.element.Class
850
430
130
30
InputDataReader
com.umlet.element.Relation
950
420
110
150
lt=<.
90;130;90;60;30;30
com.umlet.element.Relation
850
50
160
120
lt=-
m1=1..n
m2=1..n
30;30;140;100
com.umlet.element.Class
1050
1010
110
30
NSSViterbi
// Anciennement RADARViterbi
fg=red
com.umlet.element.Class
1200
1110
80
30
Viterbi
fg=red
com.umlet.element.Relation
1040
940
90
90
lt=<<-
30;30;70;70
com.umlet.element.Relation
1110
1010
130
120
lt=<<-
110;100;30;30
com.umlet.element.Relation
1220
1010
120
120
lt=<<-
30;100;100;30
com.umlet.element.Relation
1210
1010
50
120
lt=<<-
30;100;30;30
com.umlet.element.Class
760
500
180
30
CapturePointsReaderCSV
com.umlet.element.Relation
830
430
70
90
lt=<.
30;70;50;30
com.umlet.element.Relation
840
500
100
70
lt=<-
30;50;80;50;80;30
com.umlet.element.Class
1690
540
90
30
ResultList
com.umlet.element.Relation
1550
520
160
50
lt=<<<<-
m2=0..n
140;30;30;30
com.umlet.element.Class
620
510
130
30
MobilesReaderCSV
com.umlet.element.Relation
710
420
160
110
lt=<.
30;90;50;30;140;30
com.umlet.element.Relation
610
510
110
70
lt=<-
90;50;30;50;30;30
com.umlet.element.Class
1930
1050
170
30
OutputTCPSocketEvAAL
com.umlet.element.Relation
1930
940
100
130
lt=<<-
30;30;80;110
com.umlet.element.Class
510
710
180
60
CSVStringReader
--
--
+set_str(string)
+read_field(<T>): bool
com.umlet.element.Relation
660
580
140
160
lt=<<-
30;140;120;140;120;30
com.umlet.element.Relation
640
430
350
480
lt=->
m2=*
330;30;300;170;30;460
com.umlet.element.Class
230
70
100
30
StaticClass
bg=green
com.umlet.element.Class
230
110
100
30
executable
bg=yellow
com.umlet.element.custom.Systemborder
220
40
140
160
Color legend
com.umlet.element.Class
230
160
120
30
Unimplemented
fg=red