20 #ifndef VEHICLEPROPERTY_H
21 #define VEHICLEPROPERTY_H
30 #include "abstractpropertytype.h"
31 #include "mappropertytype.hpp"
33 namespace ButtonEvents {
34 enum ButtonEventType {
40 Preset1Button = 1 << 4,
41 Preset2Button = 1 << 5,
42 Preset3Button = 1 << 6,
43 Preset4Button = 1 << 7,
45 NavigateUpButton = 1 << 9,
46 NavigateDownButton = 1 << 10,
47 NavigateLeftButton = 1 << 11,
48 NavigateRightButton = 1 << 12
53 extern const char* Home;
54 extern const char* Back;
55 extern const char* Search;
56 extern const char* Call;
57 extern const char* EndCall;
58 extern const char* MediaPlay;
59 extern const char* MediaNext;
60 extern const char* MediaPrevious;
61 extern const char* MediaPause;
62 extern const char* VoiceRecognize;
63 extern const char* Enter;
64 extern const char* Left;
65 extern const char* Right;
66 extern const char* Up;
67 extern const char* Down;
71 namespace TurnSignals {
82 enum TransmissionPositions
119 extern const char* Park;
120 extern const char* Reverse;
121 extern const char* Neutral;
122 extern const char* Low;
123 extern const char* Drive;
124 extern const char* Overdrive;
157 UnknownPosition = -1,
193 extern const char * Disarmed;
194 extern const char * Prearmed;
195 extern const char * Armed;
196 extern const char * Alarmed;
222 extern const char * Closed;
223 extern const char * Open;
224 extern const char * Ajar;
239 extern const char * Vacant;
240 extern const char * Child;
241 extern const char * Adult;
243 extern const char * Pin;
244 extern const char * Keyfob;
245 extern const char * Bluetooth;
246 extern const char * NFC ;
247 extern const char * Fingerprint;
248 extern const char * Camera;
249 extern const char * Voice;
266 namespace ConvertibleRoofW3C
268 extern const char * Opened;
269 extern const char * Opening;
270 extern const char * Closed;
271 extern const char * Closing;
274 namespace WiperSpeedSetting
278 extern const char * Off;
279 extern const char * Once;
280 extern const char * Slowest;
281 extern const char * Slow;
282 extern const char * Middle;
283 extern const char * Fast;
284 extern const char * Fastest;
285 extern const char * Auto;
291 enum AirflowDirection
302 extern const char * FloorPanel;
303 extern const char * FloorDuct;
304 extern const char * Bilevel;
305 extern const char * DefrostFloor;
330 extern const char* Comfort;
331 extern const char* Auto;
332 extern const char* Sport;
333 extern const char* Eco;
334 extern const char* Manual;
335 extern const char* Winter;
340 namespace Measurement
350 namespace LaneDeparture
354 extern const char * Off;
355 extern const char * Pause;
356 extern const char * Running;
364 extern const char * Inactive;
365 extern const char * Active;
366 extern const char * Error;
370 #include <boost/preprocessor/comma.hpp>
372 #define PROPERTYTYPE(property, propertyType, baseClass, valueType) \
373 class propertyType : public baseClass { \
374 public: propertyType(): baseClass(property) {} \
375 propertyType(valueType val) : baseClass(property, val) {} \
376 using baseClass::operator=; \
379 #define PROPERTYTYPE1(property, propertyType, baseClass, valueType) \
380 class propertyType : public baseClass { \
381 public: propertyType(): baseClass(#property) {} \
382 propertyType(valueType val) : baseClass(#property, val) {} \
385 #define PROPERTYTYPEBASIC(property, valueType) \
386 class property ## Type : public BasicPropertyType<valueType> { \
387 public: property ## Type(): BasicPropertyType(property) {} \
388 property ## Type(valueType val) : BasicPropertyType(property, val) {} \
389 using BasicPropertyType<valueType>::operator=; \
392 #define PROPERTYTYPEBASIC1(property, valueType) \
393 class property ## Type : public BasicPropertyType<valueType> { \
394 public: property ## Type(): BasicPropertyType( #property) {} \
395 property ## Type(valueType val) : BasicPropertyType(#property, val) {} \
398 #define PROPERTYTYPENOVAL(property, propertyType, baseClass) \
399 class propertyType : public baseClass { \
400 public: propertyType(): baseClass(property) {} \
406 typedef std::vector<std::string> PropertyList;
407 typedef std::set<std::string> PropertySet;
419 typedef std::string Property;
451 PROPERTYTYPE(TransmissionShiftPosition, TransmissionShiftPositionType,
463 static const Property TransmissionGearPosition;
464 PROPERTYTYPE(TransmissionGearPosition, TransmissionGearPositionType,
469 static const Property TransmissionMode;
477 static const Property TransmissionModeW3C;
490 static const Property WheelBrakePressure;
502 PROPERTYTYPEBASIC(SteeringWheelAngleW3C, int16_t)
506 PROPERTYTYPEBASIC(TurnSignal, TurnSignals::TurnSignalType)
517 static const Property EngineCoolantTemperature;
518 PROPERTYTYPEBASIC(EngineCoolantTemperature, int16_t)
524 static const Property MachineGunTurretStatus;
525 PROPERTYTYPEBASIC(MachineGunTurretStatus,
bool)
527 static const Property AccelerationX;
528 PROPERTYTYPEBASIC(AccelerationX, int16_t)
530 static const Property AccelerationY;
531 PROPERTYTYPEBASIC(AccelerationY, int16_t)
534 PROPERTYTYPEBASIC(AccelerationZ, int16_t)
537 static const Property MassAirFlow;
546 static const Property ButtonEventW3C;
555 static const Property AirIntakeTemperature;
564 static const Property BatteryCurrent;
569 PROPERTYTYPEBASIC(BatteryChargeLevel, uint16_t)
572 static const Property InteriorTemperature;
576 static const Property ExteriorTemperature;
580 static const Property EngineOilTemperature;
581 PROPERTYTYPEBASIC(EngineOilTemperature,
int)
583 static const Property EngineOilRemaining;
584 PROPERTYTYPEBASIC(EngineOilRemaining, uint16_t)
586 static const Property EngineOilLifeRemaining;
587 PROPERTYTYPEBASIC(EngineOilLifeRemaining, uint16_t)
590 PROPERTYTYPEBASIC(EngineOilChangeIndicator,
bool)
593 static const Property VIN;
598 static const Property
WMI;
599 PROPERTYTYPE(WMI, WMIType, StringPropertyType, std::
string)
604 PROPERTYTYPEBASIC(TirePressure, uint16_t)
608 PROPERTYTYPEBASIC(TirePressureLow,
bool)
612 PROPERTYTYPEBASIC(TireTemperature, int16_t)
620 static const Property TripMeters;
623 static const Property CruiseControlActive;
626 static const Property CruiseControlSpeed;
629 static const Property LightHead;
631 static const Property LightRightTurn;
633 static const Property LightLeftTurn;
635 static const Property LightBrake;
637 static const Property LightFog;
639 static const Property LightHazard;
641 static const Property LightParking;
643 static const Property LightHighBeam;
645 static const Property LightAutomatic;
646 PROPERTYTYPEBASIC(LightAutomatic,
bool)
647 static const Property LightDynamicHighBeam;
648 PROPERTYTYPEBASIC(LightDynamicHighBeam,
bool)
661 PROPERTYTYPEBASIC(InteriorLightStatus,
bool)
663 static const Property EngineLoad;
666 static const Property
Horn;
669 static const Property FuelLevel;
672 static const Property FuelRange;
675 static const Property FuelConsumption;
678 static const Property FuelEconomy;
681 static const Property FuelAverageEconomy;
684 static const Property FuelAverageConsumption;
685 PROPERTYTYPEBASIC(FuelAverageConsumption, uint)
687 static const Property FuelTimeSinceRestart;
688 PROPERTYTYPEBASIC(FuelTimeSinceRestart, uint)
690 static const Property FuelConsumptionSinceRestart;
691 PROPERTYTYPEBASIC(FuelConsumptionSinceRestart, uint)
693 static const Property FuelType;
696 static const Property FuelPositionSide;
702 static const Property Latitude;
705 static const Property Longitude;
708 static const Property Altitude;
711 static const Property Direction;
714 static const Property VehicleWidth;
716 static const Property VehicleHeight;
718 static const Property VehicleLength;
724 static const Property DoorsPerRow;
727 static const Property TransmissionGearType;
730 static const Property FrontWheelRadius;
732 static const Property RearWheelRadius;
735 static const Property WheelTrack;
738 static const Property BrakePressure;
739 PROPERTYTYPEBASIC(BrakePressure, uint16_t)
743 PROPERTYTYPEBASIC(Odometer, uint)
745 static const Property DistanceTotal;
746 PROPERTYTYPEBASIC(DistanceTotal, uint)
749 PROPERTYTYPEBASIC(DistanceSinceStart, uint)
753 static const Property TransmissionFluidLevel;
754 PROPERTYTYPEBASIC(TransmissionFluidLevel, uint16_t)
756 static const Property TransmissionOilWear;
757 PROPERTYTYPEBASIC(TransmissionOilWear, uint16_t)
759 static const Property TransmissionOilTemperature;
760 PROPERTYTYPEBASIC(TransmissionOilTemperature, int16_t)
763 PROPERTYTYPEBASIC(TransmissionClutchWear, uint16_t)
768 PROPERTYTYPEBASIC(BrakeFluidLevel, uint16_t)
772 static const Property WasherFluidLevel;
773 PROPERTYTYPEBASIC(WasherFluidLevel, uint16_t)
775 static const Property WasherFluidLevelLow;
776 PROPERTYTYPEBASIC(WasherFluidLevelLow,
bool)
780 PROPERTYTYPEBASIC(SecurityAlertStatus, Security::Status)
786 static const Property ParkingBrakeStatus;
787 PROPERTYTYPEBASIC(ParkingBrakeStatus,
bool)
793 PROPERTYTYPE(ParkingBrakeStatusW3C, ParkingBrakeStatusW3CType, StringPropertyType, std::
string)
799 PROPERTYTYPEBASIC(ParkingLightStatus,
bool)
804 static const Property HazardLightStatus;
805 PROPERTYTYPEBASIC(HazardLightStatus,
bool)
808 PROPERTYTYPEBASIC(AntilockBrakingSystem,
bool)
810 static const Property AntilockBrakingSystemEnabled;
811 PROPERTYTYPEBASIC(AntilockBrakingSystemEnabled,
bool)
814 PROPERTYTYPEBASIC(TractionControlSystem,
bool)
816 static const Property TractionControlSystemEnabled;
817 PROPERTYTYPEBASIC(TractionControlSystemEnabled,
bool)
820 PROPERTYTYPEBASIC(VehicleTopSpeedLimit,uint16_t)
824 PROPERTYTYPEBASIC(AirbagStatus, Airbag::Status)
826 static const Property AirbagActivated;
827 PROPERTYTYPEBASIC(AirbagActivated,
bool)
829 static const Property AirbagDeployed;
830 PROPERTYTYPEBASIC(AirbagDeployed,
bool)
834 PROPERTYTYPEBASIC(DoorStatus,
Door::Status)
841 PROPERTYTYPE(DoorStatusW3C, DoorStatusW3CType, StringPropertyType, std::
string)
843 static const Property DoorLockStatus;
844 PROPERTYTYPEBASIC(DoorLockStatus,
bool)
846 static const Property ChildLockStatus;
847 PROPERTYTYPEBASIC(ChildLockStatus,
bool)
849 static const Property SeatBeltStatus;
850 PROPERTYTYPEBASIC(SeatBeltStatus,
bool)
852 static const Property WindowLockStatus;
853 PROPERTYTYPEBASIC(WindowLockStatus,
bool)
857 PROPERTYTYPEBASIC(OccupantStatus,
Seat::Occupant)
859 static const Property OccupantStatusW3C;
860 PROPERTYTYPE(OccupantStatusW3C, OccupantStatusW3CType, StringPropertyType, std::
string)
863 PROPERTYTYPEBASIC(ObstacleDistance,
double)
866 PROPERTYTYPEBASIC(RainSensor, uint16_t)
870 PROPERTYTYPEBASIC(WindshieldWiper, Window::WiperSpeed)
877 PROPERTYTYPE(WindshieldWiperSpeed, WindshieldWiperSpeedType, StringPropertyType, std::
string)
884 PROPERTYTYPE(WindshieldWiperSetting, WindshieldWiperSettingType, StringPropertyType, std::
string)
888 PROPERTYTYPEBASIC(AirflowDirection,HVAC::AirflowDirection)
890 static const Property AirflowDirectionW3C;
891 PROPERTYTYPE(AirflowDirectionW3C, AirflowDirectionW3CType, StringPropertyType, std::
string)
893 static const Property FanSpeed;
894 PROPERTYTYPEBASIC(FanSpeed, uint16_t)
896 static const Property TargetTemperature;
897 PROPERTYTYPEBASIC(TargetTemperature,
int)
899 static const Property AirConditioning;
900 PROPERTYTYPEBASIC(AirConditioning,
bool)
902 static const Property AirRecirculation;
903 PROPERTYTYPEBASIC(AirRecirculation,
bool)
905 static const Property Heater;
906 PROPERTYTYPEBASIC(Heater,
bool)
910 PROPERTYTYPEBASIC(Defrost,
bool )
912 static const Property DefrostWindow;
913 PROPERTYTYPEBASIC(DefrostWindow,
bool )
915 static const Property DefrostMirror;
916 PROPERTYTYPEBASIC(DefrostMirror,
bool )
918 static const Property SteeringWheelHeater;
919 PROPERTYTYPEBASIC(SteeringWheelHeater,
bool)
922 static const Property SeatHeater;
923 PROPERTYTYPEBASIC(SeatHeater,
int)
926 static const Property SeatCooler;
927 PROPERTYTYPEBASIC(SeatCooler,
bool)
931 PROPERTYTYPEBASIC(WindowStatus, uint16_t)
934 PROPERTYTYPEBASIC(Sunroof, uint16_t)
937 static const Property SunroofTilt;
938 PROPERTYTYPEBASIC(SunroofTilt,uint16_t)
942 PROPERTYTYPEBASIC(ConvertibleRoof,
bool)
948 PROPERTYTYPE(ConvertibleRoofStatus, ConvertibleRoofStatusType, StringPropertyType, std::
string)
951 PROPERTYTYPEBASIC(NightMode,
bool)
954 PROPERTYTYPEBASIC(DrivingMode, Driving::Mode)
956 static const Property DrivingModeW3C;
957 PROPERTYTYPEBASIC(DrivingModeW3C,
bool)
959 static const Property KeyId;
960 PROPERTYTYPE(KeyId, KeyIdType, StringPropertyType, std::
string)
962 static const Property Language;
963 PROPERTYTYPE(Language, LanguageType, StringPropertyType, std::
string)
965 static const Property MeasurementSystem;
966 PROPERTYTYPEBASIC(MeasurementSystem, Measurement::Type)
968 static const Property MirrorSettingPan;
969 static const Property MirrorSettingTilt;
971 PROPERTYTYPEBASIC(MirrorSettingPan, uint16_t)
972 PROPERTYTYPEBASIC(MirrorSettingTilt, uint16_t)
974 static const Property SteeringWheelPositionSlide;
975 static const Property SteeringWheelPositionTilt;
977 PROPERTYTYPEBASIC(SteeringWheelPositionSlide, uint16_t)
978 PROPERTYTYPEBASIC(SteeringWheelPositionTilt, uint16_t)
980 static const Property SeatPositionRecline;
981 static const Property SeatPositionSlide;
982 static const Property SeatPositionCushionHeight;
983 static const Property SeatPositionHeadrest;
984 static const Property SeatPositionBackCushion;
985 static const Property SeatPositionSideCushion;
987 PROPERTYTYPEBASIC(SeatPositionRecline, uint16_t)
988 PROPERTYTYPEBASIC(SeatPositionSlide, uint16_t)
989 PROPERTYTYPEBASIC(SeatPositionCushionHeight, uint16_t)
990 PROPERTYTYPEBASIC(SeatPositionHeadrest, uint16_t)
991 PROPERTYTYPEBASIC(SeatPositionBackCushion, uint16_t)
992 PROPERTYTYPEBASIC(SeatPositionSideCushion, uint16_t)
994 static const Property DashboardIllumination;
995 PROPERTYTYPEBASIC(DashboardIllumination, uint16_t)
997 static const Property GeneratedVehicleSoundMode;
998 PROPERTYTYPEBASIC(GeneratedVehicleSoundMode,
Vehicle::SoundMode)
1000 static const Property DriverId;
1001 PROPERTYTYPE(DriverId, DriverIdType, StringPropertyType, std::
string)
1004 PROPERTYTYPEBASIC(PowertrainTorque, uint16_t)
1007 PROPERTYTYPEBASIC(AcceleratorPedalPosition, uint16_t)
1009 static const Property
Chime;
1010 PROPERTYTYPEBASIC(Chime,
bool)
1013 PROPERTYTYPEBASIC(WheelTick, uint)
1015 static const Property IgnitionTimeOn;
1016 PROPERTYTYPEBASIC(IgnitionTimeOn, uint64_t)
1018 static const Property IgnitionTimeOff;
1019 PROPERTYTYPEBASIC(IgnitionTimeOff, uint64_t)
1021 static const Property
YawRate;
1022 PROPERTYTYPEBASIC(YawRate, int16_t)
1024 static const Property BrakePadWear;
1025 PROPERTYTYPEBASIC(BrakePadWear, uint16_t)
1027 static const Property BrakeFluidLevelLow;
1028 PROPERTYTYPEBASIC(BrakeFluidLevelLow,
bool)
1030 static const Property BrakesWorn;
1031 PROPERTYTYPEBASIC(BrakesWorn,
bool)
1033 static const Property MalfunctionIndicatorOn;
1034 PROPERTYTYPEBASIC(MalfunctionIndicatorOn,
bool)
1036 static const Property AccumulatedEngineRuntime;
1037 PROPERTYTYPEBASIC(AccumulatedEngineRuntime, uint32_t)
1039 static const Property DistanceSinceCodeCleared;
1040 PROPERTYTYPEBASIC(DistanceSinceCodeCleared, uint32_t)
1042 static const Property DistanceWithMILOn;
1043 PROPERTYTYPEBASIC(DistanceWithMILOn, uint32_t)
1045 static const Property TimeRunMILOn;
1046 PROPERTYTYPEBASIC(TimeRunMILOn, uint32_t)
1048 static const Property TimeTroubleCodeClear;
1049 PROPERTYTYPEBASIC(TimeTroubleCodeClear, uint32_t)
1051 static const Property VehicleDriveMode;
1052 PROPERTYTYPE(VehicleDriveMode, VehicleDriveModeType, StringPropertyType, std::
string)
1054 static const Property ActiveNoiseControlMode;
1055 PROPERTYTYPEBASIC(ActiveNoiseControlMode,
bool)
1057 static const Property AvailableSounds;
1060 static const Property EngineSoundEnhancementMode;
1061 PROPERTYTYPE(EngineSoundEnhancementMode, EngineSoundEnhancementModeType, StringPropertyType, std::
string)
1063 static const Property ElectronicStabilityControlEnabled;
1064 PROPERTYTYPEBASIC(ElectronicStabilityControlEnabled,
bool)
1066 static const Property ElectronicStabilityControlEngaged;
1067 PROPERTYTYPEBASIC(ElectronicStabilityControlEngaged,
bool)
1069 static const Property OccupantIdentificationType;
1070 PROPERTYTYPE(OccupantIdentificationType, OccupantIdentificationTypeType, StringPropertyType, std::
string)
1072 static const Property OccupantName;
1073 PROPERTYTYPE(OccupantName, OccupantNameType, StringPropertyType, std::
string)
1076 PROPERTYTYPEBASIC(AtmosphericPressure, uint16_t)
1079 PROPERTYTYPE(LaneDepartureStatus, LaneDepartureStatusType, StringPropertyType, std::
string)
1085 PROPERTYTYPE(AlarmStatus, AlarmStatusType, StringPropertyType, std::
string)
1136 static std::unique_ptr<VehicleProperty> thereCanOnlyBeOne;
1141 static PropertyList mCapabilities;
1142 static PropertyList mCustomProperties;
1145 #endif // VEHICLEPROPERTY_H