Get the Lightbar Siren In Use in form of bool vector.
- Parameters
-
- Returns
- std::vector<bool>
Definition at line 602 of file denm_getters.h.
647
654inline TimestampIts getReferenceTime(const DENM& denm) { return denm.denm.management.reference_time; }
655
662inline uint64_t getReferenceTimeValue(const DENM& denm) { return getReferenceTime(denm).value; }
663
670inline uint8_t
getStationType(
const DENM& denm) {
return denm.denm.management.station_type.value; }
671
678inline double getLatitude(
const DENM& denm) {
return getLatitude(denm.denm.management.event_position.latitude); }
679
687
694inline double getAltitude(
const DENM& denm) {
return getAltitude(denm.denm.management.event_position.altitude); }
695
704inline double getHeading(
const Heading& heading) {
return ((
double)heading.heading_value.value) * 1e-1; }
705
713 if (denm.denm.location_is_present) {
714 if (denm.denm.location.event_position_heading_is_present) {
715 return getHeading(denm.denm.location.event_position_heading);
716 } else {
717 throw std::invalid_argument("Heading is not present!");
718 }
719 } else {
720 throw std::invalid_argument("LocationContainer is not present!");
721 }
722}
723
731 if (denm.denm.location_is_present) {
732 return denm.denm.location.event_position_heading_is_present;
733 } else {
734 throw std::invalid_argument("LocationContainer is not present!");
735 }
736}
737
744inline double getSpeed(
const DENM& denm) {
745 if (denm.denm.location_is_present) {
746 if (denm.denm.location.event_speed_is_present) {
747 return getSpeed(denm.denm.location.event_speed);
748 } else {
749 throw std::invalid_argument("Speed is not present!");
750 }
751 } else {
752 throw std::invalid_argument("LocationContainer is not present!");
753 }
754}
755
763 if (denm.denm.location_is_present) {
764 return denm.denm.location.event_speed_is_present;
765 } else {
766 throw std::invalid_argument("LocationContainer is not present!");
767 }
768}
769
778inline gm::PointStamped
getUTMPosition(
const DENM& denm,
int& zone,
bool& northp) {
779 return getUTMPosition(denm.denm.management.event_position, zone, northp);
780}
781
789 int zone;
790 bool northp;
791 return getUTMPosition(denm.denm.management.event_position, zone, northp);
792}
793
800inline uint8_t
getCauseCode(
const DENM& denm) {
return denm.denm.situation.event_type.cause_code.value; }
801
808inline uint8_t
getSubCauseCode(
const DENM& denm) {
return denm.denm.situation.event_type.sub_cause_code.value; }
809
819 if (denm.denm.situation_is_present) {
821 std::string cause_code_type = "undefined";
822
823 if (cause_code == CauseCodeType().TRAFFIC_CONDITION)
824 cause_code_type = "traffic condition";
825 else if (cause_code == CauseCodeType().ACCIDENT)
826 cause_code_type = "accident";
827 else if (cause_code == CauseCodeType().ROADWORKS)
828 cause_code_type = "roadworks";
829 else if (cause_code == CauseCodeType().IMPASSABILITY)
830 cause_code_type = "impassibility";
831 else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_ADHESION)
832 cause_code_type = "adverse weather condition - adhesion";
833 else if (cause_code == CauseCodeType().AQUAPLANNNING)
834 cause_code_type = "aquaplanning";
835 else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_SURFACE_CONDITION)
836 cause_code_type = "hazardous location - surface condition";
837 else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_OBSTACLE_ON_THE_ROAD)
838 cause_code_type = "hazardous location - obstacle on the road";
839 else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_ANIMAL_ON_THE_ROAD)
840 cause_code_type = "hazardous location - animal on the road";
841 else if (cause_code == CauseCodeType().HUMAN_PRESENCE_ON_THE_ROAD)
842 cause_code_type = "human presence on the road";
843 else if (cause_code == CauseCodeType().WRONG_WAY_DRIVING)
844 cause_code_type = "wrong way driving";
845 else if (cause_code == CauseCodeType().RESCUE_AND_RECOVERY_WORK_IN_PROGRESS)
846 cause_code_type = "rescue and recovery in progress";
847 else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_EXTREME_WEATHER_CONDITION)
848 cause_code_type = "adverse weather condition - extreme weather condition";
849 else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_VISIBILITY)
850 cause_code_type = "adverse weather condition - visibility";
851 else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_PRECIPITATION)
852 cause_code_type = "adverse weather condition - precipitation";
853 else if (cause_code == CauseCodeType().SLOW_VEHICLE)
854 cause_code_type = "slow vehicle";
855 else if (cause_code == CauseCodeType().DANGEROUS_END_OF_QUEUE)
856 cause_code_type = "dangerous end of queue";
857 else if (cause_code == CauseCodeType().VEHICLE_BREAKDOWN)
858 cause_code_type = "vehicle breakdown";
859 else if (cause_code == CauseCodeType().POST_CRASH)
860 cause_code_type = "post crash";
861 else if (cause_code == CauseCodeType().HUMAN_PROBLEM)
862 cause_code_type = "human problem";
863 else if (cause_code == CauseCodeType().STATIONARY_VEHICLE)
864 cause_code_type = "stationary vehicle";
865 else if (cause_code == CauseCodeType().EMERGENCY_VEHICLE_APPROACHING)
866 cause_code_type = "emergency vehicle approaching";
867 else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_DANGEROUS_CURVE)
868 cause_code_type = "hazardous location - dangerous curve";
869 else if (cause_code == CauseCodeType().COLLISION_RISK)
870 cause_code_type = "collision risk";
871 else if (cause_code == CauseCodeType().SIGNAL_VIOLATION)
872 cause_code_type = "signal violation";
873 else if (cause_code == CauseCodeType().DANGEROUS_SITUATION)
874 cause_code_type = "dangerous situation";
875
876 return cause_code_type;
877 } else {
878 throw std::invalid_argument("SituationContainer is not present!");
879 }
880}
881
891 if (denm.denm.situation_is_present) {
894 std::string sub_cause_code_type = "undefined";
895 if (cause_code == CauseCodeType().TRAFFIC_CONDITION) {
896 if (sub_cause_code == 0)
897 sub_cause_code_type = "unavailable";
898 else if (sub_cause_code == 1)
899 sub_cause_code_type = "not defined";
900 else if (sub_cause_code == 2)
901 sub_cause_code_type = "traffic jam slowly increasing";
902 else if (sub_cause_code == 3)
903 sub_cause_code_type = "traffic jam increasing";
904 else if (sub_cause_code == 4)
905 sub_cause_code_type = "traffic jam strongly increasing";
906 else if (sub_cause_code == 5)
907 sub_cause_code_type = "traffic stationary";
908 else if (sub_cause_code == 6)
909 sub_cause_code_type = "traffic jam slightly decreasing";
910 else if (sub_cause_code == 7)
911 sub_cause_code_type = "traffic jam decreasing";
912 else if (sub_cause_code == 8)
913 sub_cause_code_type = "traffic jam strongly decreasing";
914 } else if (cause_code == CauseCodeType().ACCIDENT) {
915 if (sub_cause_code == 0)
916 sub_cause_code_type = "unavailable";
917 else if (sub_cause_code >= 1 && sub_cause_code <= 7)
918 sub_cause_code_type = "not defined";
919 else if (sub_cause_code == 8)
920 sub_cause_code_type = "assistance requested (e-Call)";
921 } else if (cause_code == CauseCodeType().ROADWORKS) {
922 if (sub_cause_code == 0)
923 sub_cause_code_type = "unavailable";
924 else if (sub_cause_code >= 1 && sub_cause_code <= 3)
925 sub_cause_code_type = "not defined";
926 else if (sub_cause_code == 4)
927 sub_cause_code_type = "short-term stationary roadworks";
928 else if (sub_cause_code == 5)
929 sub_cause_code_type = "street cleaning";
930 else if (sub_cause_code == 6)
931 sub_cause_code_type = "winter service";
932 } else if (cause_code == CauseCodeType().IMPASSABILITY)
933 sub_cause_code_type = "not defined";
934 else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_ADHESION) {
935 if (sub_cause_code == 0)
936 sub_cause_code_type = "unavailable";
937 else if (sub_cause_code >= 1 && sub_cause_code <= 10)
938 sub_cause_code_type = "not defined";
939 } else if (cause_code == CauseCodeType().AQUAPLANNNING)
940 sub_cause_code_type = "not defined";
941 else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_SURFACE_CONDITION) {
942 if (sub_cause_code == 0)
943 sub_cause_code_type = "unavailable";
944 else if (sub_cause_code >= 1 && sub_cause_code <= 9)
945 sub_cause_code_type = "not defined";
946 } else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_OBSTACLE_ON_THE_ROAD) {
947 if (sub_cause_code == 0)
948 sub_cause_code_type = "unavailable";
949 else if (sub_cause_code >= 1 && sub_cause_code <= 7)
950 sub_cause_code_type = "not defined";
951 } else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_ANIMAL_ON_THE_ROAD) {
952 if (sub_cause_code == 0)
953 sub_cause_code_type = "unavailable";
954 else if (sub_cause_code >= 1 && sub_cause_code <= 4)
955 sub_cause_code_type = "not defined";
956 } else if (cause_code == CauseCodeType().HUMAN_PRESENCE_ON_THE_ROAD) {
957 if (sub_cause_code == 0)
958 sub_cause_code_type = "unavailable";
959 else if (sub_cause_code >= 1 && sub_cause_code <= 3)
960 sub_cause_code_type = "not defined";
961 } else if (cause_code == CauseCodeType().WRONG_WAY_DRIVING) {
962 if (sub_cause_code == 0)
963 sub_cause_code_type = "unavailable";
964 else if (sub_cause_code == 1)
965 sub_cause_code_type = "vehicle driving in wrong lane";
966 else if (sub_cause_code == 2)
967 sub_cause_code_type = "vehicle driving in wrong driving direction";
968 } else if (cause_code == CauseCodeType().RESCUE_AND_RECOVERY_WORK_IN_PROGRESS) {
969 if (sub_cause_code == 0)
970 sub_cause_code_type = "unavailable";
971 else if (sub_cause_code >= 1 && sub_cause_code <= 5)
972 sub_cause_code_type = "not defined";
973 } else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_EXTREME_WEATHER_CONDITION) {
974 if (sub_cause_code == 0)
975 sub_cause_code_type = "unavailable";
976 else if (sub_cause_code >= 1 && sub_cause_code <= 6)
977 sub_cause_code_type = "not defined";
978 } else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_VISIBILITY) {
979 if (sub_cause_code == 0)
980 sub_cause_code_type = "unavailable";
981 else if (sub_cause_code >= 1 && sub_cause_code <= 8)
982 sub_cause_code_type = "not defined";
983 } else if (cause_code == CauseCodeType().ADVERSE_WEATHER_CONDITION_PRECIPITATION) {
984 if (sub_cause_code == 0)
985 sub_cause_code_type = "unavailable";
986 else if (sub_cause_code >= 1 && sub_cause_code <= 3)
987 sub_cause_code_type = "not defined";
988 } else if (cause_code == CauseCodeType().SLOW_VEHICLE) {
989 if (sub_cause_code == 0)
990 sub_cause_code_type = "unavailable";
991 else if (sub_cause_code >= 1 && sub_cause_code <= 8)
992 sub_cause_code_type = "not defined";
993 } else if (cause_code == CauseCodeType().DANGEROUS_END_OF_QUEUE) {
994 if (sub_cause_code == 0)
995 sub_cause_code_type = "unavailable";
996 else if (sub_cause_code >= 1 && sub_cause_code <= 8)
997 sub_cause_code_type = "not defined";
998 } else if (cause_code == CauseCodeType().VEHICLE_BREAKDOWN) {
999 if (sub_cause_code == 0)
1000 sub_cause_code_type = "unavailable";
1001 else if (sub_cause_code == 1)
1002 sub_cause_code_type = "lack of fuel";
1003 else if (sub_cause_code == 2)
1004 sub_cause_code_type = "lack of battery";
1005 else if (sub_cause_code == 3)
1006 sub_cause_code_type = "engine problem";
1007 else if (sub_cause_code == 4)
1008 sub_cause_code_type = "transmission problem";
1009 else if (sub_cause_code == 5)
1010 sub_cause_code_type = "engine cooling problem";
1011 else if (sub_cause_code == 6)
1012 sub_cause_code_type = "braking system problem";
1013 else if (sub_cause_code == 7)
1014 sub_cause_code_type = "steering problem";
1015 else if (sub_cause_code == 8)
1016 sub_cause_code_type = "tyre puncture";
1017 } else if (cause_code == CauseCodeType().POST_CRASH) {
1018 if (sub_cause_code == 0)
1019 sub_cause_code_type = "unavailable";
1020 else if (sub_cause_code == 1)
1021 sub_cause_code_type = "accident without e-Call triggered";
1022 else if (sub_cause_code == 2)
1023 sub_cause_code_type = "accident with e-Call manually triggered";
1024 else if (sub_cause_code == 3)
1025 sub_cause_code_type = "accident with e-Call automatical triggered";
1026 else if (sub_cause_code == 4)
1027 sub_cause_code_type = "accident with e-Call triggered without a possible access to a cell network";
1028 } else if (cause_code == CauseCodeType().HUMAN_PROBLEM) {
1029 if (sub_cause_code == 0)
1030 sub_cause_code_type = "unavailable";
1031 else if (sub_cause_code == 1)
1032 sub_cause_code_type = "glycaemia problem";
1033 else if (sub_cause_code == 2)
1034 sub_cause_code_type = "heart problem";
1035 } else if (cause_code == CauseCodeType().STATIONARY_VEHICLE) {
1036 if (sub_cause_code == 0)
1037 sub_cause_code_type = "unavailable";
1038 else if (sub_cause_code == 1)
1039 sub_cause_code_type = "human problem";
1040 else if (sub_cause_code == 2)
1041 sub_cause_code_type = "vehicle breakdown";
1042 else if (sub_cause_code == 3)
1043 sub_cause_code_type = "post crash";
1044 else if (sub_cause_code == 4)
1045 sub_cause_code_type = "public transport stop";
1046 else if (sub_cause_code == 5)
1047 sub_cause_code_type = "carrying dangerous goods";
1048 } else if (cause_code == CauseCodeType().EMERGENCY_VEHICLE_APPROACHING) {
1049 if (sub_cause_code == 0)
1050 sub_cause_code_type = "unavailable";
1051 else if (sub_cause_code == 1)
1052 sub_cause_code_type = "emergency vehicle approaching";
1053 else if (sub_cause_code == 2)
1054 sub_cause_code_type = "prioritized vehicle approaching";
1055 } else if (cause_code == CauseCodeType().HAZARDOUS_LOCATION_DANGEROUS_CURVE) {
1056 if (sub_cause_code == 0)
1057 sub_cause_code_type = "unavailable";
1058 else if (sub_cause_code == 1)
1059 sub_cause_code_type = "dangerous left turn curve";
1060 else if (sub_cause_code == 2)
1061 sub_cause_code_type = "dangerous right turn curve";
1062 else if (sub_cause_code == 3)
1063 sub_cause_code_type = "multiple curves starting with unknown turning direction";
1064 else if (sub_cause_code == 4)
1065 sub_cause_code_type = "multiple curves starting with left turn";
1066 else if (sub_cause_code == 5)
1067 sub_cause_code_type = "multiple curves starting with right turn";
1068 } else if (cause_code == CauseCodeType().COLLISION_RISK) {
1069 if (sub_cause_code == 0)
1070 sub_cause_code_type = "unavailable";
1071 else if (sub_cause_code == 1)
1072 sub_cause_code_type = "longitudinal collision risk";
1073 else if (sub_cause_code == 2)
1074 sub_cause_code_type = "crossing collision risk";
1075 else if (sub_cause_code == 3)
1076 sub_cause_code_type = "lateral collision risk";
1077 else if (sub_cause_code == 4)
1078 sub_cause_code_type = "collision risk involving vulnerable road user";
1079 } else if (cause_code == CauseCodeType().SIGNAL_VIOLATION) {
1080 if (sub_cause_code == 0)
1081 sub_cause_code_type = "unavailable";
1082 else if (sub_cause_code == 1)
1083 sub_cause_code_type = "stop sign violation";
1084 else if (sub_cause_code == 2)
1085 sub_cause_code_type = "traffic light violation";
1086 else if (sub_cause_code == 3)
1087 sub_cause_code_type = "turning regulation violation";
1088 } else if (cause_code == CauseCodeType().DANGEROUS_SITUATION) {
1089 if (sub_cause_code == 0)
1090 sub_cause_code_type = "unavailable";
1091 else if (sub_cause_code == 1)
1092 sub_cause_code_type = "emergency electronic break lights";
1093 else if (sub_cause_code == 2)
1094 sub_cause_code_type = "pre-crash system activated";
1095 else if (sub_cause_code == 3)
1096 sub_cause_code_type = "ESP (electronic stability program) activated";
1097 else if (sub_cause_code == 4)
1098 sub_cause_code_type = "ABS (anti-lock breaking system) activated";
1099 else if (sub_cause_code == 5)
1100 sub_cause_code_type = "AEB (automatic emergency breaking) activated";
1101 else if (sub_cause_code == 6)
1102 sub_cause_code_type = "break warning activated";
1103 else if (sub_cause_code == 7)
1104 sub_cause_code_type = "collision risk warning activated";
1105 }
1106 return sub_cause_code_type;
1107 } else {
1108 throw std::invalid_argument("SituationContainer is not present!");
1109 }
1110}
1111
1119 return getBitString(driving_lane_status.value, driving_lane_status.bits_unused);
1120}
1121
1129 return getBitString(light_bar_siren_in_use.value, light_bar_siren_in_use.bits_unused);
1130}
1131
1132}