//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