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
53 namespace TurnSignals {
63 namespace Transmission {
64 enum TransmissionPositions
83 /** TODO: deprecate in 0.13. Replaced with Drive::Mode: **/
101 extern const char* Park;
102 extern const char* Reverse;
103 extern const char* Neutral;
104 extern const char* Low;
105 extern const char* Drive;
106 extern const char* Overdrive;
111 /**< Vehicle Power Modes
112 * Off = Vehicle is off and key is in the "off" position.
113 * Accessory1 = Vehicle is off and key is in Accessory1 position.
114 * Accessory2 = Vehicle is off and key is in Accessory2 position.
115 * Run = Vehichle is running. Key is in the running position.
139 UnknownPosition = -1,
233 enum AirflowDirection
263 namespace Measurement
273 #include <boost/preprocessor/comma.hpp>
275 #define PROPERTYTYPE(property, propertyType, baseClass, valueType) \
276 class propertyType : public baseClass { \
277 public: propertyType(): baseClass(property) {} \
278 propertyType(valueType val) : baseClass(property, val) {} \
281 #define PROPERTYTYPE1(property, propertyType, baseClass, valueType) \
282 class propertyType : public baseClass { \
283 public: propertyType(): baseClass(#property) {} \
284 propertyType(valueType val) : baseClass(#property, val) {} \
287 #define PROPERTYTYPEBASIC(property, valueType) \
288 class property ## Type : public BasicPropertyType<valueType> { \
289 public: property ## Type(): BasicPropertyType(property) {} \
290 property ## Type(valueType val) : BasicPropertyType(property, val) {} \
293 #define PROPERTYTYPEBASIC1(property, valueType) \
294 class property ## Type : public BasicPropertyType<valueType> { \
295 public: property ## Type(): BasicPropertyType( #property) {} \
296 property ## Type(valueType val) : BasicPropertyType(#property, val) {} \
299 #define PROPERTYTYPENOVAL(property, propertyType, baseClass) \
300 class propertyType : public baseClass { \
301 public: propertyType(): baseClass(property) {} \
304 class VehicleProperty;
307 typedef std::vector<std::string> PropertyList;
308 typedef std::set<std::string> PropertySet;
310 class VehicleProperty
317 * \brief factory constructs a static instance of VehicleProperty. This should be called once before VehicleProperty is used in the app
319 static void factory();
323 * \brief destroys static instance of VehicleProperty. This should be called at application shutdown
325 static void shutdown();
327 typedef std::string Property;
330 * \brief PropertyTypeFactoryCallback callback used to construct a AbstractPropertyType for a property
331 * \see registerProperty
333 typedef std::function<AbstractPropertyType* (void)> PropertyTypeFactoryCallback;
335 /// Various property types:
337 static const Property NoValue;
339 /**< Vehicle Velocity in km/h */
340 static const Property VehicleSpeed;
341 PROPERTYTYPE(VehicleSpeed, VehicleSpeedType, BasicPropertyType<uint16_t>, uint16_t)
342 //typedef BasicPropertyType<uint16_t> VehicleSpeedType;
344 /**< Engine Speed in rotations per minute */
345 static const Property EngineSpeed;
346 PROPERTYTYPE(EngineSpeed, EngineSpeedType, BasicPropertyType<uint16_t>, uint16_t)
347 //typedef BasicPropertyType<uint16_t> EngineSpeedType;
349 /**< Transmission Shift Position
358 static const Property TransmissionShiftPosition;
359 PROPERTYTYPE(TransmissionShiftPosition, TransmissionShiftPositionType,
360 BasicPropertyType<Transmission::TransmissionPositions>, Transmission::TransmissionPositions )
361 //typedef BasicPropertyType<Transmission::TransmissionPositions> TransmissionShiftPositionType;
363 /**< Transmission Gear Position
371 static const Property TransmissionGearPosition;
372 PROPERTYTYPE(TransmissionGearPosition, TransmissionGearPositionType,
373 BasicPropertyType<Transmission::TransmissionPositions>, Transmission::TransmissionPositions)
374 //typedef BasicPropertyType<Transmission::TransmissionPositions> TransmissionGearPositionType;
376 /// TODO: deprecate in 0.13. Replaced by Drive::Mode
377 static const Property TransmissionMode;
378 PROPERTYTYPE(TransmissionMode, TransmissionModeType,
379 BasicPropertyType<Transmission::Mode>, Transmission::Mode)
380 //typedef BasicPropertyType<Transmission::Mode> TransmissionModeType;
382 /**< TransmissionModeW3C
383 * see Transmission::W3C::Park, Transmission::W3C::Drive, etc
385 static const Property TransmissionModeW3C;
386 PROPERTYTYPE(TransmissionModeW3C, TransmissionModeW3CType, StringPropertyType, std::string)
388 /**< Throttle position 0-100% */
389 static const Property ThrottlePosition;
390 PROPERTYTYPE(ThrottlePosition, ThrottlePositionType, BasicPropertyType<uint16_t> , uint16_t)
391 //typedef BasicPropertyType<uint16_t> ThrottlePositionType;
393 /**< Wheel brake position. Engaged = true, Idle = false */
394 static const Property WheelBrake;
395 PROPERTYTYPE(WheelBrake, WheelBrakeType, BasicPropertyType<bool>, bool)
396 //typedef BasicPropertyType<bool> WheelBrakeType;
398 static const Property WheelBrakePressure;
399 PROPERTYTYPE(WheelBrakePressure, WheelBrakePressureType, BasicPropertyType<uint16_t>, uint16_t)
400 //typedef BasicPropertyType<uint16_t> WheelBrakePressureType;
402 /**< Steering wheel angle (0-359) */
403 static const Property SteeringWheelAngle;
404 PROPERTYTYPE(SteeringWheelAngle, SteeringWheelAngleType, BasicPropertyType<uint16_t>, uint16_t)
405 //typedef BasicPropertyType<uint16_t> SteeringWheelAngleType;
407 /**< 0=off, 1=right, 2=left, 3=hazard */
408 static const Property TurnSignal;
409 PROPERTYTYPE(TurnSignal, TurnSignalType, BasicPropertyType<TurnSignals::TurnSignalType> ,TurnSignals::TurnSignalType)
410 //typedef BasicPropertyType<TurnSignals::TurnSignalType> TurnSignalType;
412 /**< Clutch pedal status 0=off, 1=on */
413 static const Property ClutchStatus;
414 PROPERTYTYPE(ClutchStatus, ClutchStatusType,BasicPropertyType<bool>,bool)
415 //typedef BasicPropertyType<bool> ClutchStatusType;
417 /**< Oil pressure TODO: units */
418 static const Property EngineOilPressure;
419 PROPERTYTYPE(EngineOilPressure, EngineOilPressureType,BasicPropertyType<uint16_t>, uint16_t)
420 //typedef BasicPropertyType<uint16_t> EngineOilPressureType;
422 /**< Engine coolant temperature in degrees celcius **/
423 static const Property EngineCoolantTemperature;
424 PROPERTYTYPE(EngineCoolantTemperature, EngineCoolantTemperatureType, BasicPropertyType<int>, int)
425 //typedef BasicPropertyType<int> EngineCoolantTemperatureType;
428 static const Property MachineGunTurretStatus;
429 PROPERTYTYPE(MachineGunTurretStatus, MachineGunTurretStatusType, BasicPropertyType<bool>, bool)
430 //typedef BasicPropertyType<bool> MachineGunTurretStatusType;
432 /**< Acceleration on the 'x' axis in 1/1000 gravitational acceleration "g-force" */
433 static const Property AccelerationX;
434 PROPERTYTYPE(AccelerationX, AccelerationXType, BasicPropertyType<uint16_t>, uint16_t)
435 //typedef BasicPropertyType<uint16_t> AccelerationType;
437 /**< Acceleration on the 'y' axis in 1/1000 gravitational acceleration "g-force" */
438 static const Property AccelerationY;
439 PROPERTYTYPE(AccelerationY, AccelerationYType, BasicPropertyType<uint16_t>, uint16_t)
441 /**< Acceleration on the 'z' axis in 1/1000 gravitational acceleration "g-force" */
442 static const Property AccelerationZ;
443 PROPERTYTYPE(AccelerationZ, AccelerationZType, BasicPropertyType<uint16_t>, uint16_t)
445 /**< Mass Air Flow. grams/sec */
446 static const Property MassAirFlow;
447 PROPERTYTYPE(MassAirFlow, MassAirFlowType, BasicPropertyType<uint16_t>, uint16_t)
448 //typedef BasicPropertyType<uint16_t> MassAirFlowType;
450 /**< Button Event @see ButtonEvents::ButtonEventType */
451 static const Property ButtonEvent;
452 PROPERTYTYPE(ButtonEvent, ButtonEventType, BasicPropertyType<ButtonEvents::ButtonEventType>, ButtonEvents::ButtonEventType)
453 //typedef BasicPropertyType<ButtonEvents::ButtonEventType> ButtonEventType;
455 /**< Air intake temperature in degrees celcius */
456 static const Property AirIntakeTemperature;
457 PROPERTYTYPE(AirIntakeTemperature, AirIntakeTemperatureType, BasicPropertyType<int>, int)
458 //typedef BasicPropertyType<int> AirIntakeTemperatureType;
460 /**< Battery voltage in volts */
461 static const Property BatteryVoltage;
462 PROPERTYTYPE(BatteryVoltage, BatteryVoltageType, BasicPropertyType<double>, double)
463 //typedef BasicPropertyType<double> BatteryVoltageType;
465 static const Property BatteryCurrent;
466 PROPERTYTYPE(BatteryCurrent, BatteryCurrentType, BasicPropertyType<double>, double)
467 //typedef BasicPropertyType<double> BatteryCurrentType;
469 /**< Interior Air Temperature in degrees celcius */
470 static const Property InteriorTemperature;
471 PROPERTYTYPE(InteriorTemperature, InteriorTemperatureType, BasicPropertyType<int>, int)
472 //typedef BasicPropertyType<int> InteriorTemperatureType;
474 static const Property ExteriorTemperature;
475 PROPERTYTYPE(ExteriorTemperature, ExteriorTemperatureType, BasicPropertyType<int>, int)
476 //typedef BasicPropertyType<int> ExteriorTemperatureType;
478 /**< Engine Oil Temperature in degrees celcius */
479 static const Property EngineOilTemperature;
480 PROPERTYTYPE(EngineOilTemperature, EngineOilTemperatureType, BasicPropertyType<int>, int)
481 //typedef BasicPropertyType<int> EngineOilTemperatureType;
483 static const Property EngineOilRemaining;
484 PROPERTYTYPE(EngineOilRemaining, EngineOilRemainingType,BasicPropertyType<uint16_t>, uint16_t)
485 //typedef BasicPropertyType<uint16_t> EngineOilRemainingType;
487 /**< Vehicle Identification Number (ISO 3779) 17 chars**/
488 static const Property VIN;
489 PROPERTYTYPE(VIN, VINType, StringPropertyType, std::string)
490 //class VINType: public StringPropertyType { public: VINType(std::string val):StringPropertyType(VIN,val){} };
492 /**< World Manufacturer Identifier (SAE) 3 characters. */
493 static const Property WMI;
494 PROPERTYTYPE(WMI, WMIType, StringPropertyType, std::string)
495 //class WMIType: public StringPropertyType { public: WMIType(std::string val):StringPropertyType(WMI,val){} };
497 /**< Tire pressure in kPa */
498 static const Property TirePressure;
499 PROPERTYTYPEBASIC(TirePressure, double)
501 /**< Tire temperature in degrees C */
502 static const Property TireTemperature;
503 PROPERTYTYPEBASIC(TireTemperature, double)
505 /**< Vehicle Power Mode.
506 *@see Power::PowerModes
508 static const Property VehiclePowerMode;
509 PROPERTYTYPE(VehiclePowerMode, VehiclePowerModeType, BasicPropertyType<Power::PowerModes> ,Power::PowerModes)
510 //typedef BasicPropertyType<Power::PowerModes> VehiclePowerModeType;
512 static const Property TripMeters;
513 PROPERTYTYPE(TripMeters, TripMetersType, ListPropertyType<BasicPropertyType<uint16_t> >, AbstractPropertyType*)
514 //typedef ListPropertyType<BasicPropertyType<uint16_t> > TripMetersType;
516 static const Property CruiseControlActive;
517 PROPERTYTYPE(CruiseControlActive, CruiseControlActiveType, BasicPropertyType<bool>, bool)
518 //typedef BasicPropertyType<bool> CruiseControlActiveType;
520 static const Property CruiseControlSpeed;
521 PROPERTYTYPE(CruiseControlSpeed, CruiseControlSpeedType, BasicPropertyType<uint16_t>, uint16_t)
522 //typedef BasicPropertyType<uint16_t> CruiseControlSpeedType;
524 static const Property LightHead;
525 PROPERTYTYPE(LightHead, LightHeadType, BasicPropertyType<bool>, bool)
526 static const Property LightRightTurn;
527 PROPERTYTYPE(LightRightTurn, LightRightTurnType, BasicPropertyType<bool>, bool)
528 static const Property LightLeftTurn;
529 PROPERTYTYPE(LightLeftTurn, LightLeftTurnType, BasicPropertyType<bool>, bool)
530 static const Property LightBrake;
531 PROPERTYTYPE(LightBrake, LightBrakeType, BasicPropertyType<bool>, bool)
532 static const Property LightFog;
533 PROPERTYTYPE(LightFog, LightFogType, BasicPropertyType<bool>, bool)
534 static const Property LightHazard;
535 PROPERTYTYPE(LightHazard, LightHazardType, BasicPropertyType<bool>, bool)
536 static const Property LightParking;
537 PROPERTYTYPE(LightParking, LightParkingType, BasicPropertyType<bool>, bool)
538 static const Property LightHighBeam;
539 PROPERTYTYPE(LightHighBeam, LightHighBeamType, BasicPropertyType<bool>, bool)
540 //typedef BasicPropertyType<bool> LightStatusType;
542 static const Property InteriorLightDriver;
543 PROPERTYTYPE(InteriorLightDriver, InteriorLightDriverType, BasicPropertyType<bool>, bool)
544 static const Property InteriorLightCenter;
545 PROPERTYTYPE(InteriorLightCenter, InteriorLightCenterType, BasicPropertyType<bool>, bool)
546 static const Property InteriorLightPassenger;
547 PROPERTYTYPE(InteriorLightPassenger, InteriorLightPassengerType, BasicPropertyType<bool>, bool)
549 static const Property EngineLoad;
550 PROPERTYTYPE(EngineLoad, EngineLoadType, BasicPropertyType<uint16_t>, uint16_t)
551 //typedef BasicPropertyType<uint16_t> EngineLoadType;
553 static const Property Horn;
554 PROPERTYTYPE(Horn, HornType, BasicPropertyType<bool>, bool)
555 //typedef BasicPropertyType<bool> HornType;
557 static const Property FuelLevel;
558 PROPERTYTYPE(FuelLevel, FuelLevelType, BasicPropertyType<uint16_t>, uint16_t)
559 //typedef BasicPropertyType<uint16_t> FuelLevelType;
561 static const Property FuelRange;
562 PROPERTYTYPE(FuelRange, FuelRangeType, BasicPropertyType<uint16_t> , uint16_t)
563 //typedef BasicPropertyType<uint16_t> FuelRangeType;
565 static const Property FuelConsumption;
566 PROPERTYTYPE(FuelConsumption, FuelConsumptionType, BasicPropertyType<uint16_t>, uint16_t)
567 //typedef BasicPropertyType<uint16_t> FuelConsumptionType;
569 static const Property FuelEconomy;
570 PROPERTYTYPE(FuelEconomy, FuelEconomyType, BasicPropertyType<uint16_t>, uint16_t)
571 // /typedef BasicPropertyType<uint16_t> FuelEconomyType;
573 static const Property FuelAverageEconomy;
574 PROPERTYTYPE(FuelAverageEconomy, FuelAverageEconomyType, BasicPropertyType<uint16_t> , uint16_t)
575 //typedef BasicPropertyType<uint16_t> FuelAverageEconomyType;
577 static const Property FuelType;
578 PROPERTYTYPE(FuelType, FuelTypeType, BasicPropertyType<Fuel::Type>, Fuel::Type)
579 //typedef BasicPropertyType<Fuel::Type> FuelTypeType;
581 static const Property FuelPositionSide;
582 PROPERTYTYPE(FuelPositionSide, FuelPositionSideType, BasicPropertyType<Fuel::RefuelPosition>, Fuel::RefuelPosition)
583 // /typedef BasicPropertyType<Fuel::RefuelPosition> FuelPositionSideType;
585 static const Property ExteriorBrightness;
586 PROPERTYTYPE(ExteriorBrightness, ExteriorBrightnessType, BasicPropertyType<uint16_t>, uint16_t)
587 //typedef BasicPropertyType<uint16_t> ExteriorBrightnessType;
589 static const Property Latitude;
590 PROPERTYTYPE(Latitude, LatitudeType, BasicPropertyType<double>, double)
591 //typedef BasicPropertyType<double> LatitudeType;
593 static const Property Longitude;
594 PROPERTYTYPE(Longitude, LongitudeType, BasicPropertyType<double>, double)
595 //typedef BasicPropertyType<double> LongitudeType;
597 static const Property Altitude;
598 PROPERTYTYPE(Altitude, AltitudeType, BasicPropertyType<double> , double)
599 //typedef BasicPropertyType<double> AltitudeType;
601 static const Property Direction;
602 PROPERTYTYPE(Direction, DirectionType, BasicPropertyType<uint16_t>, uint16_t)
603 //typedef BasicPropertyType<uint16_t> DirectionType;
605 static const Property VehicleWidth;
606 PROPERTYTYPE(VehicleWidth, VehicleWidthType, BasicPropertyType<uint>, uint)
607 static const Property VehicleHeight;
608 PROPERTYTYPE(VehicleHeight, VehicleHeightType, BasicPropertyType<uint>, uint)
609 static const Property VehicleLength;
610 PROPERTYTYPE(VehicleLength, VehicleLengthType, BasicPropertyType<uint>, uint)
611 //typedef BasicPropertyType<uint> VehicleSizeType;
613 static const Property VehicleType;
614 PROPERTYTYPE(VehicleType, VehicleTypeType, BasicPropertyType<Vehicle::Type>, Vehicle::Type)
615 //typedef BasicPropertyType<Vehicle::Type> VehicleTypeType;
617 static const Property DoorsPerRow;
618 PROPERTYTYPE(DoorsPerRow, DoorsPerRowType, ListPropertyType<BasicPropertyType<uint16_t> >, AbstractPropertyType*)
619 //typedef ListPropertyType<BasicPropertyType<uint16_t> > DoorsPerRowType;
621 static const Property TransmissionGearType;
622 PROPERTYTYPE(TransmissionGearType, TransmissionGearTypeType, BasicPropertyType<Transmission::Type>, Transmission::Type)
623 //typedef BasicPropertyType<Transmission::Type> TransmissionGearTypeType;
625 static const Property FrontWheelRadius;
626 PROPERTYTYPE(FrontWheelRadius, FrontWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
627 static const Property RearWheelRadius;
628 PROPERTYTYPE(RearWheelRadius, RearWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
629 // /typedef BasicPropertyType<uint16_t> WheelRadiusType;
631 static const Property WheelTrack;
632 PROPERTYTYPE(WheelTrack, WheelTrackType, BasicPropertyType<uint>, uint)
633 // typedef BasicPropertyType<uint> WheelTrackType;
635 static const Property BrakePressure;
636 PROPERTYTYPEBASIC(BrakePressure, uint16_t)
637 //typedef BasicPropertyType<uint16_t> BrakePressureType;
639 static const Property Odometer;
640 PROPERTYTYPEBASIC(Odometer, uint)
641 //typedef BasicPropertyType<uint> OdometerType;
643 /**< Transmission Fluid Level 0-100%.
645 static const Property TransmissionFluidLevel;
646 PROPERTYTYPEBASIC(TransmissionFluidLevel, uint16_t)
647 //typedef BasicPropertyType<uint16_t> TransmissionFluidLevelType;
649 /**< Brake Fluid Level 0-100%.
651 static const Property BrakeFluidLevel;
652 PROPERTYTYPEBASIC(BrakeFluidLevel, uint16_t)
653 //typedef BasicPropertyType<uint16_t> BrakeFluidLevelType;
655 /**< Washer Fluid Level 0-100%.
657 static const Property WasherFluidLevel;
658 PROPERTYTYPEBASIC(WasherFluidLevel, uint16_t)
659 //typedef BasicPropertyType<uint16_t> WasherFluidLevelType;
661 /**< Securty Alert Status
662 * status of security alert
663 * @see Security::Status
665 static const Property SecurityAlertStatus;
666 PROPERTYTYPEBASIC(SecurityAlertStatus, Security::Status)
667 //typedef BasicPropertyType<Security::Status> SecurityAlertStatusType;
669 /**< Parking Brake Status
670 * status of parking break active (true) or inactive (false)
672 static const Property ParkingBrakeStatus;
673 PROPERTYTYPEBASIC(ParkingBrakeStatus, bool)
674 //typedef BasicPropertyType<bool> ParkingBrakeStatusType;
676 /**< Parking Light Status
677 * status of parking lights active (true) or inactive (false)
679 static const Property ParkingLightStatus;
680 PROPERTYTYPEBASIC(ParkingLightStatus,bool)
681 //typedef BasicPropertyType<bool> ParkingLightStatusType;
683 /**< Hazard Lights Status
684 * status of parking lights active (true) or inactive (false)
686 static const Property HazardLightStatus;
687 PROPERTYTYPEBASIC(HazardLightStatus, bool)
688 //typedef BasicPropertyType<bool> HazardLightStatusType;
690 static const Property AntilockBrakingSystem;
691 PROPERTYTYPEBASIC(AntilockBrakingSystem, bool)
692 //typedef BasicPropertyType<bool> AntilockBrakingSystemType;
694 static const Property TractionControlSystem;
695 PROPERTYTYPEBASIC(TractionControlSystem, bool)
696 //typedef BasicPropertyType<bool> TractionControlSystemType;
698 static const Property VehicleTopSpeedLimit;
699 PROPERTYTYPEBASIC(VehicleTopSpeedLimit,uint16_t)
700 //typedef BasicPropertyType<uint16_t> VehicleTopSpeedLimitType;
702 static const Property AirbagStatus;
703 PROPERTYTYPEBASIC(AirbagStatus, Airbag::Status)
705 static const Property DoorStatus;
706 PROPERTYTYPEBASIC(DoorStatus, Door::Status)
708 static const Property DoorLockStatus;
709 PROPERTYTYPEBASIC(DoorLockStatus, bool)
711 static const Property ChildLockStatus;
712 PROPERTYTYPEBASIC(ChildLockStatus, bool)
714 static const Property SeatBeltStatus;
715 PROPERTYTYPEBASIC(SeatBeltStatus, bool)
717 static const Property WindowLockStatus;
718 PROPERTYTYPEBASIC(WindowLockStatus, bool )
720 static const Property OccupantStatus;
721 PROPERTYTYPEBASIC(OccupantStatus, Seat::Occupant)
723 static const Property ObstacleDistance;
724 PROPERTYTYPEBASIC(ObstacleDistance, double)
726 static const Property RainSensor;
727 PROPERTYTYPEBASIC(RainSensor, uint16_t)
728 //typedef BasicPropertyType<uint16_t> RainSensorType;
730 static const Property WindshieldWiper;
731 PROPERTYTYPEBASIC(WindshieldWiper,Window::WiperSpeed)
732 //typedef BasicPropertyType<Window::WiperSpeed> WindshieldWiperType;
734 static const Property AirflowDirection;
735 PROPERTYTYPEBASIC(AirflowDirection,HVAC::AirflowDirection)
736 //typedef BasicPropertyType<HVAC::AirflowDirection> AirflowDirectionType;
738 static const Property FanSpeed;
739 PROPERTYTYPEBASIC(FanSpeed, uint16_t)
740 //typedef BasicPropertyType<uint16_t> FanSpeedType;
742 static const Property TargetTemperature;
743 PROPERTYTYPEBASIC(TargetTemperature, int)
744 //typedef BasicPropertyType<int> TargetTemperatureType;
746 static const Property AirConditioning;
747 PROPERTYTYPEBASIC(AirConditioning,bool)
748 //typedef BasicPropertyType<bool> AirConditioningType;
750 static const Property AirRecirculation;
751 PROPERTYTYPEBASIC(AirRecirculation,bool)
752 //typedef BasicPropertyType<bool> AirRecirculationType;
754 static const Property Heater;
755 PROPERTYTYPEBASIC(Heater, bool)
756 //typedef BasicPropertyType<bool> HeaterType;
758 static const Property Defrost;
759 PROPERTYTYPEBASIC(Defrost, bool )
761 static const Property SteeringWheelHeater;
762 PROPERTYTYPEBASIC(SteeringWheelHeater,bool)
763 //typedef BasicPropertyType<bool> SteeringWheelHeaterType;
765 static const Property SeatHeater;
766 PROPERTYTYPEBASIC(SeatHeater,int)
767 //typedef BasicPropertyType<bool> SeatHeaterType;
769 static const Property SeatCooler;
770 PROPERTYTYPEBASIC(SeatCooler,bool)
771 // /typedef BasicPropertyType<bool> SeatCoolerType;
773 static const Property WindowStatus;
774 PROPERTYTYPEBASIC(WindowStatus, uint16_t)
776 static const Property Sunroof;
777 PROPERTYTYPEBASIC(Sunroof, uint16_t)
778 //typedef BasicPropertyType<uint16_t> SunroofType;
780 static const Property SunroofTilt;
781 PROPERTYTYPEBASIC(SunroofTilt,uint16_t)
782 //typedef BasicPropertyType<uint16_t> SunroofTiltType;
784 static const Property ConvertibleRoof;
785 PROPERTYTYPEBASIC(ConvertibleRoof, bool)
786 //typedef BasicPropertyType<bool> ConvertibleRoofType;
788 static const Property NightMode;
789 PROPERTYTYPEBASIC(NightMode, bool)
791 static const Property DrivingMode;
792 PROPERTYTYPEBASIC(DrivingMode, Driving::Mode)
794 static const Property KeyId;
795 PROPERTYTYPE(KeyId, KeyIdType, StringPropertyType, std::string)
797 static const Property Language;
798 PROPERTYTYPE(Language, LanguageType, StringPropertyType, std::string)
800 static const Property MeasurementSystem;
801 PROPERTYTYPEBASIC(MeasurementSystem, Measurement::Type)
803 static const Property MirrorSettingPan;
804 static const Property MirrorSettingTilt;
806 PROPERTYTYPEBASIC(MirrorSettingPan, uint16_t)
807 PROPERTYTYPEBASIC(MirrorSettingTilt, uint16_t)
809 static const Property SteeringWheelPositionSlide;
810 static const Property SteeringWheelPositionTilt;
812 PROPERTYTYPEBASIC(SteeringWheelPositionSlide, uint16_t)
813 PROPERTYTYPEBASIC(SteeringWheelPositionTilt, uint16_t)
815 static const Property SeatPositionRecline;
816 static const Property SeatPositionSlide;
817 static const Property SeatPositionCushionHeight;
818 static const Property SeatPositionHeadrest;
819 static const Property SeatPositionBackCushion;
820 static const Property SeatPositionSideCushion;
822 PROPERTYTYPEBASIC(SeatPositionRecline, uint16_t)
823 PROPERTYTYPEBASIC(SeatPositionSlide, uint16_t)
824 PROPERTYTYPEBASIC(SeatPositionCushionHeight, uint16_t)
825 PROPERTYTYPEBASIC(SeatPositionHeadrest, uint16_t)
826 PROPERTYTYPEBASIC(SeatPositionBackCushion, uint16_t)
827 PROPERTYTYPEBASIC(SeatPositionSideCushion, uint16_t)
829 static const Property DashboardIllumination;
830 PROPERTYTYPEBASIC(DashboardIllumination, uint16_t)
832 static const Property GeneratedVehicleSoundMode;
833 PROPERTYTYPEBASIC(GeneratedVehicleSoundMode, Vehicle::SoundMode)
835 static const Property DriverId;
836 PROPERTYTYPE(DriverId, DriverIdType, StringPropertyType, std::string)
839 /** END PROPERTIES **/
843 * \brief capabilities
844 * \return returns list of all registered properties
845 * \see VehicleProperty::registerProperty
847 static PropertyList capabilities();
850 * \brief customProperties
851 * \return returns list of custom properties defined by plugins using VehicleProperty::registerProperty
853 static PropertyList customProperties();
855 /*! \brief getPropertyTypeForPropertyNameValue returns an AbstractPropertyType* for the property name
856 * with the value specified by 'value'. Ownership of the returned AbstractPropertyType* is
857 * transfered to the caller.
859 static AbstractPropertyType* getPropertyTypeForPropertyNameValue(Property name, std::string value="");
861 /*! \brief registerProperty registers properties with the Vehicle Property system. Returns true if property
862 * has been registered successfully.
863 * \param name - name of property. Name cannot match any existing property or it will be rejected and
864 * this method will return false.
865 * \param factor - callback function that returns an AbstractPropertyType representation of the value.
866 * custom properties will need to return a custom AbstractPropertyType based object.
869 * #include <vehicleproperty.h>
870 * #include <abstractpropertytype.h>
872 * //Somewhere in a source plugin:
874 * Property VehicleJetEngineStatus = "VehicleJetEngineStatus";
875 * VehicleProperty::registerProperty(VehicleJetEngineStatus, [](){return new BasicPropertyType<bool>(VehicleJetEngineStatus, false);});
877 * //other initialization
879 static bool registerProperty(Property name, PropertyTypeFactoryCallback factory);
887 static VehicleProperty* thereCanOnlyBeOne;
889 static bool registerPropertyPriv(Property name, PropertyTypeFactoryCallback factory);
891 static std::map<Property, PropertyTypeFactoryCallback> registeredPropertyFactoryMap;
892 static PropertyList mCapabilities;
893 static PropertyList mCustomProperties;
896 #endif // VEHICLEPROPERTY_H