2 Copyright (C) 2012 Intel Corporation
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 #ifndef VEHICLEPROPERTY_H
21 #define VEHICLEPROPERTY_H
30 #include "abstractpropertytype.h"
31 #include "mappropertytype.hpp"
34 namespace ButtonEvents {
35 enum ButtonEventType {
41 Preset1Button = 1 << 4,
42 Preset2Button = 1 << 5,
43 Preset3Button = 1 << 6,
44 Preset4Button = 1 << 7,
46 NavigateUpButton = 1 << 9,
47 NavigateDownButton = 1 << 10,
48 NavigateLeftButton = 1 << 11,
49 NavigateRightButton = 1 << 12
54 extern const char* Home;
55 extern const char* Back;
56 extern const char* Search;
57 extern const char* Call;
58 extern const char* EndCall;
59 extern const char* MediaPlay;
60 extern const char* MediaNext;
61 extern const char* MediaPrevious;
62 extern const char* MediaPause;
63 extern const char* VoiceRecognize;
64 extern const char* Enter;
65 extern const char* Left;
66 extern const char* Right;
67 extern const char* Up;
68 extern const char* Down;
72 namespace TurnSignals {
82 namespace Transmission {
83 enum TransmissionPositions
102 /** TODO: deprecate in 0.14. Replaced with Drive::Mode: **/
120 extern const char* Park;
121 extern const char* Reverse;
122 extern const char* Neutral;
123 extern const char* Low;
124 extern const char* Drive;
125 extern const char* Overdrive;
130 /**< Vehicle Power Modes
131 * Off = Vehicle is off and key is in the "off" position.
132 * Accessory1 = Vehicle is off and key is in Accessory1 position.
133 * Accessory2 = Vehicle is off and key is in Accessory2 position.
134 * Run = Vehichle is running. Key is in the running position.
158 UnknownPosition = -1,
194 extern const char * Disarmed;
195 extern const char * Prearmed;
196 extern const char * Armed;
197 extern const char * Alarmed;
223 extern const char * Closed;
224 extern const char * Open;
225 extern const char * Ajar;
240 extern const char * Vacant;
241 extern const char * Child;
242 extern const char * Adult;
244 extern const char * Pin;
245 extern const char * Keyfob;
246 extern const char * Bluetooth;
247 extern const char * NFC ;
248 extern const char * Fingerprint;
249 extern const char * Camera;
250 extern const char * Voice;
267 namespace ConvertibleRoofW3C
269 extern const char * Opened;
270 extern const char * Opening;
271 extern const char * Closed;
272 extern const char * Closing;
275 namespace WiperSpeedSetting
279 extern const char * Off;
280 extern const char * Once;
281 extern const char * Slowest;
282 extern const char * Slow;
283 extern const char * Middle;
284 extern const char * Fast;
285 extern const char * Fastest;
286 extern const char * Auto;
292 enum AirflowDirection
303 extern const char * FloorPanel;
304 extern const char * FloorDuct;
305 extern const char * Bilevel;
306 extern const char * DefrostFloor;
331 extern const char* Comfort;
332 extern const char* Auto;
333 extern const char* Sport;
334 extern const char* Eco;
335 extern const char* Manual;
336 extern const char* Winter;
341 namespace Measurement
351 namespace LaneDeparture
355 extern const char * Off;
356 extern const char * Pause;
357 extern const char * Running;
361 namespace ParkingBrake
365 extern const char * Inactive;
366 extern const char * Active;
367 extern const char * Error;
371 #include <boost/preprocessor/comma.hpp>
373 #define PROPERTYTYPE(property, propertyType, baseClass, valueType) \
374 class propertyType : public baseClass { \
375 public: propertyType(): baseClass(property) {} \
376 propertyType(valueType val) : baseClass(property, val) {} \
377 using baseClass::operator=; \
380 #define PROPERTYTYPE1(property, propertyType, baseClass, valueType) \
381 class propertyType : public baseClass { \
382 public: propertyType(): baseClass(#property) {} \
383 propertyType(valueType val) : baseClass(#property, val) {} \
386 #define PROPERTYTYPEBASIC(property, valueType) \
387 class property ## Type : public BasicPropertyType<valueType> { \
388 public: property ## Type(): BasicPropertyType(property) {} \
389 property ## Type(valueType val) : BasicPropertyType(property, val) {} \
390 using BasicPropertyType<valueType>::operator=; \
393 #define PROPERTYTYPEBASIC1(property, valueType) \
394 class property ## Type : public BasicPropertyType<valueType> { \
395 public: property ## Type(): BasicPropertyType( #property) {} \
396 property ## Type(valueType val) : BasicPropertyType(#property, val) {} \
399 #define PROPERTYTYPENOVAL(property, propertyType, baseClass) \
400 class propertyType : public baseClass { \
401 public: propertyType(): baseClass(property) {} \
404 class VehicleProperty;
407 typedef std::vector<std::string> PropertyList;
408 typedef std::set<std::string> PropertySet;
410 class VehicleProperty
416 * \brief factory constructs a static instance of VehicleProperty. This should be called once before VehicleProperty is used in the app
418 static void factory();
420 typedef std::string Property;
423 * \brief PropertyTypeFactoryCallback callback used to construct a AbstractPropertyType for a property
424 * \see registerProperty
426 typedef std::function<AbstractPropertyType* (void)> PropertyTypeFactoryCallback;
428 /// Various property types:
430 static const Property NoValue;
432 /**< Vehicle Velocity in km/h */
433 static const Property VehicleSpeed;
434 PROPERTYTYPE(VehicleSpeed, VehicleSpeedType, BasicPropertyType<uint16_t>, uint16_t)
435 //typedef BasicPropertyType<uint16_t> VehicleSpeedType;
437 /**< Engine Speed in rotations per minute */
438 static const Property EngineSpeed;
439 PROPERTYTYPE(EngineSpeed, EngineSpeedType, BasicPropertyType<uint16_t>, uint16_t)
440 //typedef BasicPropertyType<uint16_t> EngineSpeedType;
442 /**< Transmission Shift Position
451 static const Property TransmissionShiftPosition;
452 PROPERTYTYPE(TransmissionShiftPosition, TransmissionShiftPositionType,
453 BasicPropertyType<Transmission::TransmissionPositions>, Transmission::TransmissionPositions )
454 //typedef BasicPropertyType<Transmission::TransmissionPositions> TransmissionShiftPositionType;
456 /**< Transmission Gear Position
464 static const Property TransmissionGearPosition;
465 PROPERTYTYPE(TransmissionGearPosition, TransmissionGearPositionType,
466 BasicPropertyType<Transmission::TransmissionPositions>, Transmission::TransmissionPositions)
467 //typedef BasicPropertyType<Transmission::TransmissionPositions> TransmissionGearPositionType;
469 /// TODO: deprecate in 0.14. Replaced by Drive::Mode
470 static const Property TransmissionMode;
471 PROPERTYTYPE(TransmissionMode, TransmissionModeType,
472 BasicPropertyType<Transmission::Mode>, Transmission::Mode)
473 //typedef BasicPropertyType<Transmission::Mode> TransmissionModeType;
475 /**< TransmissionModeW3C
476 * see Transmission::W3C::Park, Transmission::W3C::Drive, etc
478 static const Property TransmissionModeW3C;
479 PROPERTYTYPE(TransmissionModeW3C, TransmissionModeW3CType, StringPropertyType, std::string)
481 /**< Throttle position 0-100% */
482 static const Property ThrottlePosition;
483 PROPERTYTYPE(ThrottlePosition, ThrottlePositionType, BasicPropertyType<uint16_t> , uint16_t)
484 //typedef BasicPropertyType<uint16_t> ThrottlePositionType;
486 /**< Wheel brake position. Engaged = true, Idle = false */
487 static const Property WheelBrake;
488 PROPERTYTYPE(WheelBrake, WheelBrakeType, BasicPropertyType<bool>, bool)
489 //typedef BasicPropertyType<bool> WheelBrakeType;
491 static const Property WheelBrakePressure;
492 PROPERTYTYPE(WheelBrakePressure, WheelBrakePressureType, BasicPropertyType<uint16_t>, uint16_t)
493 //typedef BasicPropertyType<uint16_t> WheelBrakePressureType;
495 /**< Steering wheel angle (0-359)
496 * TODO: Deprecate in 0.14. Replace with SteeringWheelAngleW3C
498 static const Property SteeringWheelAngle;
499 PROPERTYTYPE(SteeringWheelAngle, SteeringWheelAngleType, BasicPropertyType<uint16_t>, uint16_t)
501 /// TODO: Rename to "SteeringWheel" in 0.14
502 static const Property SteeringWheelAngleW3C;
503 PROPERTYTYPEBASIC(SteeringWheelAngleW3C, int16_t)
505 /**< 0=off, 1=right, 2=left, 3=hazard */
506 static const Property TurnSignal;
507 PROPERTYTYPEBASIC(TurnSignal, TurnSignals::TurnSignalType)
509 /**< Clutch pedal status 0=off, 1=on */
510 static const Property ClutchStatus;
511 PROPERTYTYPE(ClutchStatus, ClutchStatusType,BasicPropertyType<bool>,bool)
513 /**< Oil pressure TODO: units */
514 static const Property EngineOilPressure;
515 PROPERTYTYPE(EngineOilPressure, EngineOilPressureType, BasicPropertyType<uint16_t>, uint16_t)
517 /**< Engine coolant temperature in degrees celcius **/
518 static const Property EngineCoolantTemperature;
519 PROPERTYTYPEBASIC(EngineCoolantTemperature, int16_t)
521 static const Property EngineCoolantLevel;
522 PROPERTYTYPE(EngineCoolantLevel, EngineCoolantLevelType, BasicPropertyType<uint>, uint)
525 static const Property MachineGunTurretStatus;
526 PROPERTYTYPEBASIC(MachineGunTurretStatus, bool)
528 static const Property AccelerationX;
529 PROPERTYTYPEBASIC(AccelerationX, int16_t)
531 static const Property AccelerationY;
532 PROPERTYTYPEBASIC(AccelerationY, int16_t)
534 static const Property AccelerationZ;
535 PROPERTYTYPEBASIC(AccelerationZ, int16_t)
537 /**< Mass Air Flow. grams/sec */
538 static const Property MassAirFlow;
539 PROPERTYTYPE(MassAirFlow, MassAirFlowType, BasicPropertyType<uint16_t>, uint16_t)
540 //typedef BasicPropertyType<uint16_t> MassAirFlowType;
542 /**< Button Event @see ButtonEvents::ButtonEventType */
543 ///TODO: deprecated. Use ButtonEventW3C. Remove in 0.14
544 static const Property ButtonEvent;
545 PROPERTYTYPE(ButtonEvent, ButtonEventType, BasicPropertyType<ButtonEvents::ButtonEventType>, ButtonEvents::ButtonEventType)
547 static const Property ButtonEventW3C;
548 class ButtonEventW3CType: public MapPropertyType<StringPropertyType, StringPropertyType>
551 ButtonEventW3CType() : MapPropertyType(ButtonEventW3C) {}
555 /**< Air intake temperature in degrees celcius */
556 static const Property AirIntakeTemperature;
557 PROPERTYTYPE(AirIntakeTemperature, AirIntakeTemperatureType, BasicPropertyType<int>, int)
558 //typedef BasicPropertyType<int> AirIntakeTemperatureType;
560 /**< Battery voltage in volts */
561 static const Property BatteryVoltage;
562 PROPERTYTYPE(BatteryVoltage, BatteryVoltageType, BasicPropertyType<double>, double)
563 //typedef BasicPropertyType<double> BatteryVoltageType;
565 static const Property BatteryCurrent;
566 PROPERTYTYPE(BatteryCurrent, BatteryCurrentType, BasicPropertyType<double>, double)
567 //typedef BasicPropertyType<double> BatteryCurrentType;
569 static const Property BatteryChargeLevel;
570 PROPERTYTYPEBASIC(BatteryChargeLevel, uint16_t)
572 /**< Interior Air Temperature in degrees celcius */
573 static const Property InteriorTemperature;
574 PROPERTYTYPE(InteriorTemperature, InteriorTemperatureType, BasicPropertyType<int>, int)
575 //typedef BasicPropertyType<int> InteriorTemperatureType;
577 static const Property ExteriorTemperature;
578 PROPERTYTYPE(ExteriorTemperature, ExteriorTemperatureType, BasicPropertyType<int>, int)
579 //typedef BasicPropertyType<int> ExteriorTemperatureType;
581 static const Property EngineOilTemperature;
582 PROPERTYTYPEBASIC(EngineOilTemperature, int)
584 static const Property EngineOilRemaining;
585 PROPERTYTYPEBASIC(EngineOilRemaining, uint16_t)
587 static const Property EngineOilLifeRemaining;
588 PROPERTYTYPEBASIC(EngineOilLifeRemaining, uint16_t)
590 static const Property EngineOilChangeIndicator;
591 PROPERTYTYPEBASIC(EngineOilChangeIndicator, bool)
593 /**< Vehicle Identification Number (ISO 3779) 17 chars**/
594 static const Property VIN;
595 PROPERTYTYPE(VIN, VINType, StringPropertyType, std::string)
596 //class VINType: public StringPropertyType { public: VINType(std::string val):StringPropertyType(VIN,val){} };
598 /**< World Manufacturer Identifier (SAE) 3 characters. */
599 static const Property WMI;
600 PROPERTYTYPE(WMI, WMIType, StringPropertyType, std::string)
601 //class WMIType: public StringPropertyType { public: WMIType(std::string val):StringPropertyType(WMI,val){} };
603 /**< Tire pressure in kPa */
604 static const Property TirePressure;
605 PROPERTYTYPEBASIC(TirePressure, uint16_t)
607 /**< Tire pressure low */
608 static const Property TirePressureLow;
609 PROPERTYTYPEBASIC(TirePressureLow, bool)
611 /**< Tire temperature in degrees C */
612 static const Property TireTemperature;
613 PROPERTYTYPEBASIC(TireTemperature, int16_t)
615 /**< Vehicle Power Mode.
618 static const Property VehiclePowerMode;
619 PROPERTYTYPE(VehiclePowerMode, VehiclePowerModeType, BasicPropertyType<Power::Modes>, Power::Modes)
620 //typedef BasicPropertyType<Power::PowerModes> VehiclePowerModeType;
622 static const Property TripMeters;
623 PROPERTYTYPE(TripMeters, TripMetersType, ListPropertyType<BasicPropertyType<uint16_t> >, uint16_t)
624 //typedef ListPropertyType<BasicPropertyType<uint16_t> > TripMetersType;
626 static const Property CruiseControlActive;
627 PROPERTYTYPE(CruiseControlActive, CruiseControlActiveType, BasicPropertyType<bool>, bool)
628 //typedef BasicPropertyType<bool> CruiseControlActiveType;
630 static const Property CruiseControlSpeed;
631 PROPERTYTYPE(CruiseControlSpeed, CruiseControlSpeedType, BasicPropertyType<uint16_t>, uint16_t)
632 //typedef BasicPropertyType<uint16_t> CruiseControlSpeedType;
634 static const Property LightHead;
635 PROPERTYTYPE(LightHead, LightHeadType, BasicPropertyType<bool>, bool)
636 static const Property LightRightTurn;
637 PROPERTYTYPE(LightRightTurn, LightRightTurnType, BasicPropertyType<bool>, bool)
638 static const Property LightLeftTurn;
639 PROPERTYTYPE(LightLeftTurn, LightLeftTurnType, BasicPropertyType<bool>, bool)
640 static const Property LightBrake;
641 PROPERTYTYPE(LightBrake, LightBrakeType, BasicPropertyType<bool>, bool)
642 static const Property LightFog;
643 PROPERTYTYPE(LightFog, LightFogType, BasicPropertyType<bool>, bool)
644 static const Property LightHazard;
645 PROPERTYTYPE(LightHazard, LightHazardType, BasicPropertyType<bool>, bool)
646 static const Property LightParking;
647 PROPERTYTYPE(LightParking, LightParkingType, BasicPropertyType<bool>, bool)
648 static const Property LightHighBeam;
649 PROPERTYTYPE(LightHighBeam, LightHighBeamType, BasicPropertyType<bool>, bool)
650 static const Property LightAutomatic;
651 PROPERTYTYPEBASIC(LightAutomatic, bool)
652 static const Property LightDynamicHighBeam;
653 PROPERTYTYPEBASIC(LightDynamicHighBeam, bool)
655 ///TODO: deprecated. Use InteriorLightStatus which is zoned. Remove in 0.14
656 static const Property InteriorLightDriver;
657 PROPERTYTYPE(InteriorLightDriver, InteriorLightDriverType, BasicPropertyType<bool>, bool)
658 ///TODO: deprecated. Use InteriorLightStatus which is zoned. Remove in 0.14
659 static const Property InteriorLightCenter;
660 PROPERTYTYPE(InteriorLightCenter, InteriorLightCenterType, BasicPropertyType<bool>, bool)
661 ///TODO: deprecated. Use InteriorLightStatus which is zoned. Remove in 0.14
662 static const Property InteriorLightPassenger;
663 PROPERTYTYPE(InteriorLightPassenger, InteriorLightPassengerType, BasicPropertyType<bool>, bool)
665 static const Property InteriorLightStatus;
666 PROPERTYTYPEBASIC(InteriorLightStatus, bool)
668 static const Property EngineLoad;
669 PROPERTYTYPE(EngineLoad, EngineLoadType, BasicPropertyType<uint16_t>, uint16_t)
671 static const Property Horn;
672 PROPERTYTYPE(Horn, HornType, BasicPropertyType<bool>, bool)
674 static const Property FuelLevel;
675 PROPERTYTYPE(FuelLevel, FuelLevelType, BasicPropertyType<uint16_t>, uint16_t)
677 static const Property FuelRange;
678 PROPERTYTYPE(FuelRange, FuelRangeType, BasicPropertyType<uint16_t> , uint16_t)
680 static const Property FuelConsumption;
681 PROPERTYTYPE(FuelConsumption, FuelConsumptionType, BasicPropertyType<uint>, uint)
683 static const Property FuelEconomy;
684 PROPERTYTYPE(FuelEconomy, FuelEconomyType, BasicPropertyType<uint16_t>, uint16_t)
686 static const Property FuelAverageEconomy;
687 PROPERTYTYPE(FuelAverageEconomy, FuelAverageEconomyType, BasicPropertyType<uint16_t> , uint16_t)
689 static const Property FuelAverageConsumption;
690 PROPERTYTYPEBASIC(FuelAverageConsumption, uint)
692 static const Property FuelTimeSinceRestart;
693 PROPERTYTYPEBASIC(FuelTimeSinceRestart, uint)
695 static const Property FuelConsumptionSinceRestart;
696 PROPERTYTYPEBASIC(FuelConsumptionSinceRestart, uint)
698 static const Property FuelType;
699 PROPERTYTYPE(FuelType, FuelTypeType, BasicPropertyType<Fuel::Type>, Fuel::Type)
701 static const Property FuelPositionSide;
702 PROPERTYTYPE(FuelPositionSide, FuelPositionSideType, BasicPropertyType<Fuel::RefuelPosition>, Fuel::RefuelPosition)
704 static const Property ExteriorBrightness;
705 PROPERTYTYPE(ExteriorBrightness, ExteriorBrightnessType, BasicPropertyType<uint16_t>, uint16_t)
707 static const Property Latitude;
708 PROPERTYTYPE(Latitude, LatitudeType, BasicPropertyType<double>, double)
710 static const Property Longitude;
711 PROPERTYTYPE(Longitude, LongitudeType, BasicPropertyType<double>, double)
713 static const Property Altitude;
714 PROPERTYTYPE(Altitude, AltitudeType, BasicPropertyType<double> , double)
716 static const Property Direction;
717 PROPERTYTYPE(Direction, DirectionType, BasicPropertyType<uint16_t>, uint16_t)
719 static const Property VehicleWidth;
720 PROPERTYTYPE(VehicleWidth, VehicleWidthType, BasicPropertyType<uint>, uint)
721 static const Property VehicleHeight;
722 PROPERTYTYPE(VehicleHeight, VehicleHeightType, BasicPropertyType<uint>, uint)
723 static const Property VehicleLength;
724 PROPERTYTYPE(VehicleLength, VehicleLengthType, BasicPropertyType<uint>, uint)
726 static const Property VehicleType;
727 PROPERTYTYPE(VehicleType, VehicleTypeType, BasicPropertyType<Vehicle::Type>, Vehicle::Type)
729 static const Property DoorsPerRow;
730 PROPERTYTYPE(DoorsPerRow, DoorsPerRowType, ListPropertyType<BasicPropertyType<uint16_t> >, uint16_t)
732 static const Property TransmissionGearType;
733 PROPERTYTYPE(TransmissionGearType, TransmissionGearTypeType, BasicPropertyType<Transmission::Type>, Transmission::Type)
735 static const Property FrontWheelRadius;
736 PROPERTYTYPE(FrontWheelRadius, FrontWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
737 static const Property RearWheelRadius;
738 PROPERTYTYPE(RearWheelRadius, RearWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
740 static const Property WheelTrack;
741 PROPERTYTYPE(WheelTrack, WheelTrackType, BasicPropertyType<uint>, uint)
743 static const Property BrakePressure;
744 PROPERTYTYPEBASIC(BrakePressure, uint16_t)
746 /// TODO: deprecated. remove in 0.14. Use DistanceTotal
747 static const Property Odometer;
748 PROPERTYTYPEBASIC(Odometer, uint)
750 static const Property DistanceTotal;
751 PROPERTYTYPEBASIC(DistanceTotal, uint)
753 static const Property DistanceSinceStart;
754 PROPERTYTYPEBASIC(DistanceSinceStart, uint)
756 /**< Transmission Fluid Level 0-100%.
758 static const Property TransmissionFluidLevel;
759 PROPERTYTYPEBASIC(TransmissionFluidLevel, uint16_t)
761 static const Property TransmissionOilWear;
762 PROPERTYTYPEBASIC(TransmissionOilWear, uint16_t)
764 static const Property TransmissionOilTemperature;
765 PROPERTYTYPEBASIC(TransmissionOilTemperature, int16_t)
767 static const Property TransmissionClutchWear;
768 PROPERTYTYPEBASIC(TransmissionClutchWear, uint16_t)
770 /**< Brake Fluid Level 0-100%.
772 static const Property BrakeFluidLevel;
773 PROPERTYTYPEBASIC(BrakeFluidLevel, uint16_t)
775 /**< Washer Fluid Level 0-100%.
777 static const Property WasherFluidLevel;
778 PROPERTYTYPEBASIC(WasherFluidLevel, uint16_t)
780 static const Property WasherFluidLevelLow;
781 PROPERTYTYPEBASIC(WasherFluidLevelLow, bool)
783 ///TODO: Depreciated in 0.14. Use AlarmStatus
784 static const Property SecurityAlertStatus;
785 PROPERTYTYPEBASIC(SecurityAlertStatus, Security::Status)
787 /**< Parking Brake Status
788 * status of parking break active (true) or inactive (false)
789 * TODO: Deprecated in 0.14.
791 static const Property ParkingBrakeStatus;
792 PROPERTYTYPEBASIC(ParkingBrakeStatus, bool)
795 * \brief ParkingBrakeStatusW3C use with ParkingBrake::W3C::*
797 static const Property ParkingBrakeStatusW3C;
798 PROPERTYTYPE(ParkingBrakeStatusW3C, ParkingBrakeStatusW3CType, StringPropertyType, std::string)
800 /**< Parking Light Status
801 * status of parking lights active (true) or inactive (false)
803 static const Property ParkingLightStatus;
804 PROPERTYTYPEBASIC(ParkingLightStatus,bool)
806 /**< Hazard Lights Status
807 * status of parking lights active (true) or inactive (false)
809 static const Property HazardLightStatus;
810 PROPERTYTYPEBASIC(HazardLightStatus, bool)
812 static const Property AntilockBrakingSystem;
813 PROPERTYTYPEBASIC(AntilockBrakingSystem, bool)
815 static const Property AntilockBrakingSystemEnabled;
816 PROPERTYTYPEBASIC(AntilockBrakingSystemEnabled, bool)
818 static const Property TractionControlSystem;
819 PROPERTYTYPEBASIC(TractionControlSystem, bool)
821 static const Property TractionControlSystemEnabled;
822 PROPERTYTYPEBASIC(TractionControlSystemEnabled, bool)
824 static const Property VehicleTopSpeedLimit;
825 PROPERTYTYPEBASIC(VehicleTopSpeedLimit,uint16_t)
827 ///TODO: Deprecated in 0.14
828 static const Property AirbagStatus;
829 PROPERTYTYPEBASIC(AirbagStatus, Airbag::Status)
831 static const Property AirbagActivated;
832 PROPERTYTYPEBASIC(AirbagActivated, bool)
834 static const Property AirbagDeployed;
835 PROPERTYTYPEBASIC(AirbagDeployed, bool)
837 /// TODO: deprecate in 0.14. Use DoorStatusW3C
838 static const Property DoorStatus;
839 PROPERTYTYPEBASIC(DoorStatus, Door::Status)
842 * \brief DoorStatusW3C
843 * use with Door::W3C::*
845 static const Property DoorStatusW3C;
846 PROPERTYTYPE(DoorStatusW3C, DoorStatusW3CType, StringPropertyType, std::string)
848 static const Property DoorLockStatus;
849 PROPERTYTYPEBASIC(DoorLockStatus, bool)
851 static const Property ChildLockStatus;
852 PROPERTYTYPEBASIC(ChildLockStatus, bool)
854 static const Property SeatBeltStatus;
855 PROPERTYTYPEBASIC(SeatBeltStatus, bool)
857 static const Property WindowLockStatus;
858 PROPERTYTYPEBASIC(WindowLockStatus, bool)
860 ///TODO Deprecated in 0.14
861 static const Property OccupantStatus;
862 PROPERTYTYPEBASIC(OccupantStatus, Seat::Occupant)
864 static const Property OccupantStatusW3C;
865 PROPERTYTYPE(OccupantStatusW3C, OccupantStatusW3CType, StringPropertyType, std::string)
867 static const Property ObstacleDistance;
868 PROPERTYTYPEBASIC(ObstacleDistance, double)
870 static const Property RainSensor;
871 PROPERTYTYPEBASIC(RainSensor, uint16_t)
873 ///TODO Deprecated in 0.14. Use WinshieldWiperSpeed
874 static const Property WindshieldWiper;
875 PROPERTYTYPEBASIC(WindshieldWiper, Window::WiperSpeed)
878 * \brief WindshieldWiperSpeed
879 * Use WiperSpeedSetting::W3C::* for value
881 static const Property WindshieldWiperSpeed;
882 PROPERTYTYPE(WindshieldWiperSpeed, WindshieldWiperSpeedType, StringPropertyType, std::string)
885 * \brief WindshieldWiperSetting
886 * Use WiperSpeedSetting::W3C::* for value
888 static const Property WindshieldWiperSetting;
889 PROPERTYTYPE(WindshieldWiperSetting, WindshieldWiperSettingType, StringPropertyType, std::string)
891 /// TODO: Deprecated. Remove in 0.14
892 static const Property AirflowDirection;
893 PROPERTYTYPEBASIC(AirflowDirection,HVAC::AirflowDirection)
895 static const Property AirflowDirectionW3C;
896 PROPERTYTYPE(AirflowDirectionW3C, AirflowDirectionW3CType, StringPropertyType, std::string)
898 static const Property FanSpeed;
899 PROPERTYTYPEBASIC(FanSpeed, uint16_t)
901 static const Property TargetTemperature;
902 PROPERTYTYPEBASIC(TargetTemperature, int)
904 static const Property AirConditioning;
905 PROPERTYTYPEBASIC(AirConditioning,bool)
907 static const Property AirRecirculation;
908 PROPERTYTYPEBASIC(AirRecirculation,bool)
910 static const Property Heater;
911 PROPERTYTYPEBASIC(Heater, bool)
913 /// TODO: deprecated. remove in 0.14
914 static const Property Defrost;
915 PROPERTYTYPEBASIC(Defrost, bool )
917 static const Property DefrostWindow;
918 PROPERTYTYPEBASIC(DefrostWindow, bool )
920 static const Property DefrostMirror;
921 PROPERTYTYPEBASIC(DefrostMirror, bool )
923 static const Property SteeringWheelHeater;
924 PROPERTYTYPEBASIC(SteeringWheelHeater,bool)
925 //typedef BasicPropertyType<bool> SteeringWheelHeaterType;
927 static const Property SeatHeater;
928 PROPERTYTYPEBASIC(SeatHeater,int)
929 //typedef BasicPropertyType<bool> SeatHeaterType;
931 static const Property SeatCooler;
932 PROPERTYTYPEBASIC(SeatCooler,bool)
933 // /typedef BasicPropertyType<bool> SeatCoolerType;
935 static const Property WindowStatus;
936 PROPERTYTYPEBASIC(WindowStatus, uint16_t)
938 static const Property Sunroof;
939 PROPERTYTYPEBASIC(Sunroof, uint16_t)
940 //typedef BasicPropertyType<uint16_t> SunroofType;
942 static const Property SunroofTilt;
943 PROPERTYTYPEBASIC(SunroofTilt,uint16_t)
944 //typedef BasicPropertyType<uint16_t> SunroofTiltType;
946 static const Property ConvertibleRoof;
947 PROPERTYTYPEBASIC(ConvertibleRoof, bool)
950 * \brief ConvertibleRoofStatus use with ConvertibleRoofW3C::*
952 static const Property ConvertibleRoofStatus;
953 PROPERTYTYPE(ConvertibleRoofStatus, ConvertibleRoofStatusType, StringPropertyType, std::string)
955 static const Property NightMode;
956 PROPERTYTYPEBASIC(NightMode, bool)
958 static const Property DrivingMode;
959 PROPERTYTYPEBASIC(DrivingMode, Driving::Mode)
961 static const Property DrivingModeW3C;
962 PROPERTYTYPEBASIC(DrivingModeW3C, bool)
964 static const Property KeyId;
965 PROPERTYTYPE(KeyId, KeyIdType, StringPropertyType, std::string)
967 static const Property Language;
968 PROPERTYTYPE(Language, LanguageType, StringPropertyType, std::string)
970 static const Property MeasurementSystem;
971 PROPERTYTYPEBASIC(MeasurementSystem, Measurement::Type)
973 static const Property MirrorSettingPan;
974 static const Property MirrorSettingTilt;
976 PROPERTYTYPEBASIC(MirrorSettingPan, uint16_t)
977 PROPERTYTYPEBASIC(MirrorSettingTilt, uint16_t)
979 static const Property SteeringWheelPositionSlide;
980 static const Property SteeringWheelPositionTilt;
982 PROPERTYTYPEBASIC(SteeringWheelPositionSlide, uint16_t)
983 PROPERTYTYPEBASIC(SteeringWheelPositionTilt, uint16_t)
985 static const Property SeatPositionRecline;
986 static const Property SeatPositionSlide;
987 static const Property SeatPositionCushionHeight;
988 static const Property SeatPositionHeadrest;
989 static const Property SeatPositionBackCushion;
990 static const Property SeatPositionSideCushion;
992 PROPERTYTYPEBASIC(SeatPositionRecline, uint16_t)
993 PROPERTYTYPEBASIC(SeatPositionSlide, uint16_t)
994 PROPERTYTYPEBASIC(SeatPositionCushionHeight, uint16_t)
995 PROPERTYTYPEBASIC(SeatPositionHeadrest, uint16_t)
996 PROPERTYTYPEBASIC(SeatPositionBackCushion, uint16_t)
997 PROPERTYTYPEBASIC(SeatPositionSideCushion, uint16_t)
999 static const Property DashboardIllumination;
1000 PROPERTYTYPEBASIC(DashboardIllumination, uint16_t)
1002 static const Property GeneratedVehicleSoundMode;
1003 PROPERTYTYPEBASIC(GeneratedVehicleSoundMode, Vehicle::SoundMode)
1005 static const Property DriverId;
1006 PROPERTYTYPE(DriverId, DriverIdType, StringPropertyType, std::string)
1008 static const Property PowertrainTorque;
1009 PROPERTYTYPEBASIC(PowertrainTorque, uint16_t)
1011 static const Property AcceleratorPedalPosition;
1012 PROPERTYTYPEBASIC(AcceleratorPedalPosition, uint16_t)
1014 static const Property Chime;
1015 PROPERTYTYPEBASIC(Chime, bool)
1017 static const Property WheelTick;
1018 PROPERTYTYPEBASIC(WheelTick, uint)
1020 static const Property IgnitionTimeOn;
1021 PROPERTYTYPEBASIC(IgnitionTimeOn, uint64_t)
1023 static const Property IgnitionTimeOff;
1024 PROPERTYTYPEBASIC(IgnitionTimeOff, uint64_t)
1026 static const Property YawRate;
1027 PROPERTYTYPEBASIC(YawRate, int16_t)
1029 static const Property BrakePadWear;
1030 PROPERTYTYPEBASIC(BrakePadWear, uint16_t)
1032 static const Property BrakeFluidLevelLow;
1033 PROPERTYTYPEBASIC(BrakeFluidLevelLow, bool)
1035 static const Property BrakesWorn;
1036 PROPERTYTYPEBASIC(BrakesWorn, bool)
1038 static const Property MalfunctionIndicatorOn;
1039 PROPERTYTYPEBASIC(MalfunctionIndicatorOn, bool)
1041 static const Property AccumulatedEngineRuntime;
1042 PROPERTYTYPEBASIC(AccumulatedEngineRuntime, uint32_t)
1044 static const Property DistanceSinceCodeCleared;
1045 PROPERTYTYPEBASIC(DistanceSinceCodeCleared, uint32_t)
1047 static const Property DistanceWithMILOn;
1048 PROPERTYTYPEBASIC(DistanceWithMILOn, uint32_t)
1050 static const Property TimeRunMILOn;
1051 PROPERTYTYPEBASIC(TimeRunMILOn, uint32_t)
1053 static const Property TimeTroubleCodeClear;
1054 PROPERTYTYPEBASIC(TimeTroubleCodeClear, uint32_t)
1056 static const Property VehicleDriveMode;
1057 PROPERTYTYPE(VehicleDriveMode, VehicleDriveModeType, StringPropertyType, std::string)
1059 static const Property ActiveNoiseControlMode;
1060 PROPERTYTYPEBASIC(ActiveNoiseControlMode, bool)
1062 static const Property AvailableSounds;
1063 PROPERTYTYPE(AvailableSounds, AvailableSoundsType, ListPropertyType<StringPropertyType>, StringPropertyType)
1065 static const Property EngineSoundEnhancementMode;
1066 PROPERTYTYPE(EngineSoundEnhancementMode, EngineSoundEnhancementModeType, StringPropertyType, std::string)
1068 static const Property ElectronicStabilityControlEnabled;
1069 PROPERTYTYPEBASIC(ElectronicStabilityControlEnabled, bool)
1071 static const Property ElectronicStabilityControlEngaged;
1072 PROPERTYTYPEBASIC(ElectronicStabilityControlEngaged, bool)
1074 static const Property OccupantIdentificationType;
1075 PROPERTYTYPE(OccupantIdentificationType, OccupantIdentificationTypeType, StringPropertyType, std::string)
1077 static const Property OccupantName;
1078 PROPERTYTYPE(OccupantName, OccupantNameType, StringPropertyType, std::string)
1080 static const Property AtmosphericPressure;
1081 PROPERTYTYPEBASIC(AtmosphericPressure, uint16_t)
1083 static const Property LaneDepartureStatus;
1084 PROPERTYTYPE(LaneDepartureStatus, LaneDepartureStatusType, StringPropertyType, std::string)
1087 * \brief AlarmStatus. Use with Security::W3C*
1089 static const Property AlarmStatus;
1090 PROPERTYTYPE(AlarmStatus, AlarmStatusType, StringPropertyType, std::string)
1092 //static const Property Lane
1094 /** END PROPERTIES **/
1097 * \brief capabilities
1098 * \return returns list of all registered properties
1099 * \see VehicleProperty::registerProperty
1101 static PropertyList capabilities();
1104 * \brief customProperties
1105 * \return returns list of custom properties defined by plugins using VehicleProperty::registerProperty
1107 static PropertyList customProperties();
1109 /*! \brief getPropertyTypeForPropertyNameValue returns an AbstractPropertyType* for the property name
1110 * with the value specified by 'value'. Ownership of the returned AbstractPropertyType* is
1111 * transfered to the caller.
1113 static AbstractPropertyType* getPropertyTypeForPropertyNameValue(Property name, std::string value="");
1115 /*! \brief registerProperty registers properties with the Vehicle Property system. Returns true if property
1116 * has been registered successfully.
1117 * \param name - name of property. Name cannot match any existing property or it will be rejected and
1118 * this method will return false.
1119 * \param factor - callback function that returns an AbstractPropertyType representation of the value.
1120 * custom properties will need to return a custom AbstractPropertyType based object.
1123 * #include <vehicleproperty.h>
1124 * #include <abstractpropertytype.h>
1126 * //Somewhere in a source plugin:
1128 * Property VehicleJetEngineStatus = "VehicleJetEngineStatus";
1129 * VehicleProperty::registerProperty(VehicleJetEngineStatus, [](){return new BasicPropertyType<bool>(VehicleJetEngineStatus, false);});
1131 * //other initialization
1133 static bool registerProperty(Property name, PropertyTypeFactoryCallback factory);
1141 static std::unique_ptr<VehicleProperty> thereCanOnlyBeOne;
1143 static bool registerPropertyPriv(Property name, PropertyTypeFactoryCallback factory);
1145 static std::map<Property, PropertyTypeFactoryCallback> registeredPropertyFactoryMap;
1146 static PropertyList mCapabilities;
1147 static PropertyList mCustomProperties;
1150 #endif // VEHICLEPROPERTY_H