automotive-message-broker  0.14.0
vehicleproperty.h
1 /*
2  Copyright (C) 2012 Intel Corporation
3 
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.
8 
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.
13 
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
17 */
18 
19 
20 #ifndef VEHICLEPROPERTY_H
21 #define VEHICLEPROPERTY_H
22 
23 #include "nullptr.h"
24 #include <string>
25 #include <list>
26 #include <set>
27 #include <sstream>
28 #include <map>
29 #include <functional>
30 #include "abstractpropertytype.h"
31 #include "mappropertytype.hpp"
32 
33 namespace ButtonEvents {
34 enum ButtonEventType {
35  NoButton = 0,
36  PlayButton = 1,
37  SkipButton = 1 << 1,
38  PrevButton = 1 << 2,
39  PauseButton = 1 << 3,
40  Preset1Button = 1 << 4,
41  Preset2Button = 1 << 5,
42  Preset3Button = 1 << 6,
43  Preset4Button = 1 << 7,
44  StopButton = 1 << 8,
45  NavigateUpButton = 1 << 9,
46  NavigateDownButton = 1 << 10,
47  NavigateLeftButton = 1 << 11,
48  NavigateRightButton = 1 << 12
49 };
50 
51 namespace W3C
52 {
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;
68 }
69 }
70 
71 namespace TurnSignals {
72 enum TurnSignalType
73 {
74  Off=0,
75  Right=1,
76  Left=2,
77  Hazard=3
78 };
79 }
80 
81 namespace Transmission {
82 enum TransmissionPositions
83 {
84  Neutral = 0,
85  First,
86  Second,
87  Third,
88  Forth,
89  Fifth,
90  Sixth,
91  Seventh,
92  Eighth,
93  Ninth,
94  Tenth,
95  CVT = 64,
96  Drive = 96,
97  Reverse = 128,
98  Park = 255
99 
100 };
102 enum Mode {
103  Normal=0,
104  Sports = 1,
105  Economy = 2,
106  OEMCustom1 = 3,
107  OEMCustom2 = 4
108 };
109 
110 enum Type {
111  Unknown = -1,
112  Auto = 0,
113  Manual = 1,
114  CV = 2
115 };
116 
117 namespace W3C
118 {
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;
125 }
126 }
127 
128 namespace Power {
135 enum Modes
136 {
137  Off = 0,
138  Accessory1 = 1,
139  Accessory2 = 2,
140  Run = 3
141 };
142 }
143 
144 namespace Fuel{
145 enum Type
146 {
147  Unknown = -1,
148  Gasoline = 0,
149  High_Octane,
150  Diesel,
151  Electric,
152  Hydrogen
153 };
154 
155 enum RefuelPosition
156 {
157  UnknownPosition = -1,
158  Left = 0,
159  Right,
160  Front,
161  Rear
162 };
163 }
164 
165 namespace Vehicle {
166 enum Type
167 {
168  Unknown = -1,
169  Sedan = 0,
170  Coupe,
171  Cabriole,
172  Roadster,
173  SUV,
174  Truck
175 };
176 enum SoundMode {
177  Normal = 0,
178  Quiet = 1,
179  Sportive = 2
180 };
181 }
182 
183 namespace Security {
184 enum Status
185 {
186  Idle = 0,
187  Armed,
188  AlarmDetected
189 };
190 
191 namespace W3C
192 {
193 extern const char * Disarmed;
194 extern const char * Prearmed;
195 extern const char * Armed;
196 extern const char * Alarmed;
197 }
198 
199 }
200 
201 namespace Airbag {
202 
203 enum Status
204 {
205  Inactive = 0,
206  Active,
207  Deployed
208 };
209 
210 }
211 
212 namespace Door
213 {
214 enum Status
215 {
216  Closed = 0,
217  Open,
218  Ajar
219 };
220 namespace W3C
221 {
222 extern const char * Closed;
223 extern const char * Open;
224 extern const char * Ajar;
225 }
226 }
227 
228 namespace Seat
229 {
230 
231 enum Occupant
232 {
233  Vacant = 0,
234  Child,
235  Adult
236 };
237 namespace W3C
238 {
239 extern const char * Vacant;
240 extern const char * Child;
241 extern const char * Adult;
242 
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;
250 }
251 
252 
253 }
254 
255 namespace Window
256 {
257 enum WiperSpeed
258 {
259  Off = 0,
260  Slowest = 1,
261  Fastest = 5,
262  Auto = 10
263 };
264 }
265 
266 namespace ConvertibleRoofW3C
267 {
268 extern const char * Opened;
269 extern const char * Opening;
270 extern const char * Closed;
271 extern const char * Closing;
272 }
273 
274 namespace WiperSpeedSetting
275 {
276 namespace W3C
277 {
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;
286 }
287 }
288 
289 namespace HVAC
290 {
291 enum AirflowDirection
292 {
293  FrontPanel=0,
294  FloorDuct = 1,
295  Front = 1 << 1,
296  Defroster = 1 << 2
297 
298 };
299 
300 namespace W3C
301 {
302 extern const char * FloorPanel;
303 extern const char * FloorDuct;
304 extern const char * Bilevel;
305 extern const char * DefrostFloor;
306 }
307 }
308 
309 namespace Driving
310 {
311 enum Mode
312 {
313  None = 0,
314  Driving
315 };
316 }
317 
318 namespace Drive
319 {
320 enum Mode {
321  Normal=0,
322  Sports = 1,
323  Economy = 2,
324  OEMCustom1 = 3,
325  OEMCustom2 = 4
326 };
327 
328 namespace W3C
329 {
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;
336 }
337 
338 }
339 
340 namespace Measurement
341 {
342 enum Type
343 {
344  Metric = 0,
345  ImperialUS = 1,
346  ImperialUK = 2
347 };
348 }
349 
350 namespace LaneDeparture
351 {
352 namespace W3C
353 {
354 extern const char * Off;
355 extern const char * Pause;
356 extern const char * Running;
357 }
358 }
359 
360 namespace ParkingBrake
361 {
362 namespace W3C
363 {
364 extern const char * Inactive;
365 extern const char * Active;
366 extern const char * Error;
367 }
368 }
369 
370 #include <boost/preprocessor/comma.hpp>
371 
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=; \
377  };
378 
379 #define PROPERTYTYPE1(property, propertyType, baseClass, valueType) \
380  class propertyType : public baseClass { \
381  public: propertyType(): baseClass(#property) {} \
382  propertyType(valueType val) : baseClass(#property, val) {} \
383  };
384 
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=; \
390  };
391 
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) {} \
396  };
397 
398 #define PROPERTYTYPENOVAL(property, propertyType, baseClass) \
399  class propertyType : public baseClass { \
400  public: propertyType(): baseClass(property) {} \
401  };
402 
403 class VehicleProperty;
404 
405 
406 typedef std::vector<std::string> PropertyList;
407 typedef std::set<std::string> PropertySet;
408 
410 {
411 
412 public:
413 
417  static void factory();
418 
419  typedef std::string Property;
420 
425  typedef std::function<AbstractPropertyType* (void)> PropertyTypeFactoryCallback;
426 
428 
429  static const Property NoValue;
430 
432  static const Property VehicleSpeed;
433  PROPERTYTYPE(VehicleSpeed, VehicleSpeedType, BasicPropertyType<uint16_t>, uint16_t)
434  //typedef BasicPropertyType<uint16_t> VehicleSpeedType;
435 
436 
437  static const Property EngineSpeed;
438  PROPERTYTYPE(EngineSpeed, EngineSpeedType, BasicPropertyType<uint16_t>, uint16_t)
439  //typedef BasicPropertyType<uint16_t> EngineSpeedType;
440 
450  static const Property TransmissionShiftPosition;
451  PROPERTYTYPE(TransmissionShiftPosition, TransmissionShiftPositionType,
452  BasicPropertyType<Transmission::TransmissionPositions>, Transmission::TransmissionPositions )
453  //typedef BasicPropertyType<Transmission::TransmissionPositions> TransmissionShiftPositionType;
454 
463  static const Property TransmissionGearPosition;
464  PROPERTYTYPE(TransmissionGearPosition, TransmissionGearPositionType,
465  BasicPropertyType<Transmission::TransmissionPositions>, Transmission::TransmissionPositions)
466  //typedef BasicPropertyType<Transmission::TransmissionPositions> TransmissionGearPositionType;
467 
469  static const Property TransmissionMode;
470  PROPERTYTYPE(TransmissionMode, TransmissionModeType,
472  //typedef BasicPropertyType<Transmission::Mode> TransmissionModeType;
473 
477  static const Property TransmissionModeW3C;
478  PROPERTYTYPE(TransmissionModeW3C, TransmissionModeW3CType, StringPropertyType, std::string)
479 
481  static const Property ThrottlePosition;
482  PROPERTYTYPE(ThrottlePosition, ThrottlePositionType, BasicPropertyType<uint16_t> , uint16_t)
483  //typedef BasicPropertyType<uint16_t> ThrottlePositionType;
484 
486  static const Property WheelBrake;
487  PROPERTYTYPE(WheelBrake, WheelBrakeType, BasicPropertyType<bool>, bool)
488  //typedef BasicPropertyType<bool> WheelBrakeType;
489 
490  static const Property WheelBrakePressure;
491  PROPERTYTYPE(WheelBrakePressure, WheelBrakePressureType, BasicPropertyType<uint16_t>, uint16_t)
492  //typedef BasicPropertyType<uint16_t> WheelBrakePressureType;
493 
497  static const Property SteeringWheelAngle;
498  PROPERTYTYPE(SteeringWheelAngle, SteeringWheelAngleType, BasicPropertyType<uint16_t>, uint16_t)
499 
501  static const Property SteeringWheelAngleW3C;
502  PROPERTYTYPEBASIC(SteeringWheelAngleW3C, int16_t)
503 
505  static const Property TurnSignal;
506  PROPERTYTYPEBASIC(TurnSignal, TurnSignals::TurnSignalType)
507 
509  static const Property ClutchStatus;
510  PROPERTYTYPE(ClutchStatus, ClutchStatusType,BasicPropertyType<bool>,bool)
511 
513  static const Property EngineOilPressure;
514  PROPERTYTYPE(EngineOilPressure, EngineOilPressureType, BasicPropertyType<uint16_t>, uint16_t)
515 
517  static const Property EngineCoolantTemperature;
518  PROPERTYTYPEBASIC(EngineCoolantTemperature, int16_t)
519 
520  static const Property EngineCoolantLevel;
521  PROPERTYTYPE(EngineCoolantLevel, EngineCoolantLevelType, BasicPropertyType<uint>, uint)
522 
524  static const Property MachineGunTurretStatus;
525  PROPERTYTYPEBASIC(MachineGunTurretStatus, bool)
526 
527  static const Property AccelerationX;
528  PROPERTYTYPEBASIC(AccelerationX, int16_t)
529 
530  static const Property AccelerationY;
531  PROPERTYTYPEBASIC(AccelerationY, int16_t)
532 
533  static const Property AccelerationZ;
534  PROPERTYTYPEBASIC(AccelerationZ, int16_t)
535 
537  static const Property MassAirFlow;
538  PROPERTYTYPE(MassAirFlow, MassAirFlowType, BasicPropertyType<uint16_t>, uint16_t)
539  //typedef BasicPropertyType<uint16_t> MassAirFlowType;
540 
542  static const Property ButtonEvent;
544  PROPERTYTYPE(ButtonEvent, ButtonEventType, BasicPropertyType<ButtonEvents::ButtonEventType>, ButtonEvents::ButtonEventType)
545 
546  static const Property ButtonEventW3C;
547  class ButtonEventW3CType: public MapPropertyType<StringPropertyType>
548  {
549  public:
550  ButtonEventW3CType() : MapPropertyType(ButtonEventW3C) {}
551  };
552 
553 
555  static const Property AirIntakeTemperature;
556  PROPERTYTYPE(AirIntakeTemperature, AirIntakeTemperatureType, BasicPropertyType<int>, int)
557  //typedef BasicPropertyType<int> AirIntakeTemperatureType;
558 
559 
560  static const Property BatteryVoltage;
561  PROPERTYTYPE(BatteryVoltage, BatteryVoltageType, BasicPropertyType<double>, double)
562  //typedef BasicPropertyType<double> BatteryVoltageType;
563 
564  static const Property BatteryCurrent;
565  PROPERTYTYPE(BatteryCurrent, BatteryCurrentType, BasicPropertyType<double>, double)
566  //typedef BasicPropertyType<double> BatteryCurrentType;
567 
568  static const Property BatteryChargeLevel;
569  PROPERTYTYPEBASIC(BatteryChargeLevel, uint16_t)
570 
572  static const Property InteriorTemperature;
573  PROPERTYTYPE(InteriorTemperature, InteriorTemperatureType, BasicPropertyType<int>, int)
574  //typedef BasicPropertyType<int> InteriorTemperatureType;
575 
576  static const Property ExteriorTemperature;
577  PROPERTYTYPE(ExteriorTemperature, ExteriorTemperatureType, BasicPropertyType<int>, int)
578  //typedef BasicPropertyType<int> ExteriorTemperatureType;
579 
580  static const Property EngineOilTemperature;
581  PROPERTYTYPEBASIC(EngineOilTemperature, int)
582 
583  static const Property EngineOilRemaining;
584  PROPERTYTYPEBASIC(EngineOilRemaining, uint16_t)
585 
586  static const Property EngineOilLifeRemaining;
587  PROPERTYTYPEBASIC(EngineOilLifeRemaining, uint16_t)
588 
589  static const Property EngineOilChangeIndicator;
590  PROPERTYTYPEBASIC(EngineOilChangeIndicator, bool)
591 
593  static const Property VIN;
594  PROPERTYTYPE(VIN, VINType, StringPropertyType, std::string)
595  //class VINType: public StringPropertyType { public: VINType(std::string val):StringPropertyType(VIN,val){} };
596 
598  static const Property WMI;
599  PROPERTYTYPE(WMI, WMIType, StringPropertyType, std::string)
600  //class WMIType: public StringPropertyType { public: WMIType(std::string val):StringPropertyType(WMI,val){} };
601 
603  static const Property TirePressure;
604  PROPERTYTYPEBASIC(TirePressure, uint16_t)
605 
607  static const Property TirePressureLow;
608  PROPERTYTYPEBASIC(TirePressureLow, bool)
609 
611  static const Property TireTemperature;
612  PROPERTYTYPEBASIC(TireTemperature, int16_t)
613 
617  static const Property VehiclePowerMode;
618  PROPERTYTYPE(VehiclePowerMode, VehiclePowerModeType, BasicPropertyType<Power::Modes>, Power::Modes)
619  //typedef BasicPropertyType<Power::PowerModes> VehiclePowerModeType;
620 
621  static const Property TripMeters;
622  PROPERTYTYPE(TripMeters, TripMetersType, ListPropertyType<BasicPropertyType<uint16_t> >, uint16_t)
623  //typedef ListPropertyType<BasicPropertyType<uint16_t> > TripMetersType;
624 
625  static const Property CruiseControlActive;
626  PROPERTYTYPE(CruiseControlActive, CruiseControlActiveType, BasicPropertyType<bool>, bool)
627  //typedef BasicPropertyType<bool> CruiseControlActiveType;
628 
629  static const Property CruiseControlSpeed;
630  PROPERTYTYPE(CruiseControlSpeed, CruiseControlSpeedType, BasicPropertyType<uint16_t>, uint16_t)
631  //typedef BasicPropertyType<uint16_t> CruiseControlSpeedType;
632 
633  static const Property LightHead;
634  PROPERTYTYPE(LightHead, LightHeadType, BasicPropertyType<bool>, bool)
635  static const Property LightRightTurn;
636  PROPERTYTYPE(LightRightTurn, LightRightTurnType, BasicPropertyType<bool>, bool)
637  static const Property LightLeftTurn;
638  PROPERTYTYPE(LightLeftTurn, LightLeftTurnType, BasicPropertyType<bool>, bool)
639  static const Property LightBrake;
640  PROPERTYTYPE(LightBrake, LightBrakeType, BasicPropertyType<bool>, bool)
641  static const Property LightFog;
642  PROPERTYTYPE(LightFog, LightFogType, BasicPropertyType<bool>, bool)
643  static const Property LightHazard;
644  PROPERTYTYPE(LightHazard, LightHazardType, BasicPropertyType<bool>, bool)
645  static const Property LightParking;
646  PROPERTYTYPE(LightParking, LightParkingType, BasicPropertyType<bool>, bool)
647  static const Property LightHighBeam;
648  PROPERTYTYPE(LightHighBeam, LightHighBeamType, BasicPropertyType<bool>, bool)
649  static const Property LightAutomatic;
650  PROPERTYTYPEBASIC(LightAutomatic, bool)
651  static const Property LightDynamicHighBeam;
652  PROPERTYTYPEBASIC(LightDynamicHighBeam, bool)
653 
655  static const Property InteriorLightDriver;
656  PROPERTYTYPE(InteriorLightDriver, InteriorLightDriverType, BasicPropertyType<bool>, bool)
658  static const Property InteriorLightCenter;
659  PROPERTYTYPE(InteriorLightCenter, InteriorLightCenterType, BasicPropertyType<bool>, bool)
661  static const Property InteriorLightPassenger;
662  PROPERTYTYPE(InteriorLightPassenger, InteriorLightPassengerType, BasicPropertyType<bool>, bool)
663 
664  static const Property InteriorLightStatus;
665  PROPERTYTYPEBASIC(InteriorLightStatus, bool)
666 
667  static const Property EngineLoad;
668  PROPERTYTYPE(EngineLoad, EngineLoadType, BasicPropertyType<uint16_t>, uint16_t)
669 
670  static const Property Horn;
671  PROPERTYTYPE(Horn, HornType, BasicPropertyType<bool>, bool)
672 
673  static const Property FuelLevel;
674  PROPERTYTYPE(FuelLevel, FuelLevelType, BasicPropertyType<uint16_t>, uint16_t)
675 
676  static const Property FuelRange;
677  PROPERTYTYPE(FuelRange, FuelRangeType, BasicPropertyType<uint16_t> , uint16_t)
678 
679  static const Property FuelConsumption;
680  PROPERTYTYPE(FuelConsumption, FuelConsumptionType, BasicPropertyType<uint>, uint)
681 
682  static const Property FuelEconomy;
683  PROPERTYTYPE(FuelEconomy, FuelEconomyType, BasicPropertyType<uint16_t>, uint16_t)
684 
685  static const Property FuelAverageEconomy;
686  PROPERTYTYPE(FuelAverageEconomy, FuelAverageEconomyType, BasicPropertyType<uint16_t> , uint16_t)
687 
688  static const Property FuelAverageConsumption;
689  PROPERTYTYPEBASIC(FuelAverageConsumption, uint)
690 
691  static const Property FuelTimeSinceRestart;
692  PROPERTYTYPEBASIC(FuelTimeSinceRestart, uint)
693 
694  static const Property FuelConsumptionSinceRestart;
695  PROPERTYTYPEBASIC(FuelConsumptionSinceRestart, uint)
696 
697  static const Property FuelType;
698  PROPERTYTYPE(FuelType, FuelTypeType, BasicPropertyType<Fuel::Type>, Fuel::Type)
699 
700  static const Property FuelPositionSide;
701  PROPERTYTYPE(FuelPositionSide, FuelPositionSideType, BasicPropertyType<Fuel::RefuelPosition>, Fuel::RefuelPosition)
702 
703  static const Property ExteriorBrightness;
704  PROPERTYTYPE(ExteriorBrightness, ExteriorBrightnessType, BasicPropertyType<uint16_t>, uint16_t)
705 
706  static const Property Latitude;
707  PROPERTYTYPE(Latitude, LatitudeType, BasicPropertyType<double>, double)
708 
709  static const Property Longitude;
710  PROPERTYTYPE(Longitude, LongitudeType, BasicPropertyType<double>, double)
711 
712  static const Property Altitude;
713  PROPERTYTYPE(Altitude, AltitudeType, BasicPropertyType<double> , double)
714 
715  static const Property Direction;
716  PROPERTYTYPE(Direction, DirectionType, BasicPropertyType<uint16_t>, uint16_t)
717 
718  static const Property VehicleWidth;
719  PROPERTYTYPE(VehicleWidth, VehicleWidthType, BasicPropertyType<uint>, uint)
720  static const Property VehicleHeight;
721  PROPERTYTYPE(VehicleHeight, VehicleHeightType, BasicPropertyType<uint>, uint)
722  static const Property VehicleLength;
723  PROPERTYTYPE(VehicleLength, VehicleLengthType, BasicPropertyType<uint>, uint)
724 
725  static const Property VehicleType;
726  PROPERTYTYPE(VehicleType, VehicleTypeType, BasicPropertyType<Vehicle::Type>, Vehicle::Type)
727 
728  static const Property DoorsPerRow;
729  PROPERTYTYPE(DoorsPerRow, DoorsPerRowType, ListPropertyType<BasicPropertyType<uint16_t> >, uint16_t)
730 
731  static const Property TransmissionGearType;
732  PROPERTYTYPE(TransmissionGearType, TransmissionGearTypeType, BasicPropertyType<Transmission::Type>, Transmission::Type)
733 
734  static const Property FrontWheelRadius;
735  PROPERTYTYPE(FrontWheelRadius, FrontWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
736  static const Property RearWheelRadius;
737  PROPERTYTYPE(RearWheelRadius, RearWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
738 
739  static const Property WheelTrack;
740  PROPERTYTYPE(WheelTrack, WheelTrackType, BasicPropertyType<uint>, uint)
741 
742  static const Property BrakePressure;
743  PROPERTYTYPEBASIC(BrakePressure, uint16_t)
744 
746  static const Property Odometer;
747  PROPERTYTYPEBASIC(Odometer, uint)
748 
749  static const Property DistanceTotal;
750  PROPERTYTYPEBASIC(DistanceTotal, uint)
751 
752  static const Property DistanceSinceStart;
753  PROPERTYTYPEBASIC(DistanceSinceStart, uint)
754 
757  static const Property TransmissionFluidLevel;
758  PROPERTYTYPEBASIC(TransmissionFluidLevel, uint16_t)
759 
760  static const Property TransmissionOilWear;
761  PROPERTYTYPEBASIC(TransmissionOilWear, uint16_t)
762 
763  static const Property TransmissionOilTemperature;
764  PROPERTYTYPEBASIC(TransmissionOilTemperature, int16_t)
765 
766  static const Property TransmissionClutchWear;
767  PROPERTYTYPEBASIC(TransmissionClutchWear, uint16_t)
768 
771  static const Property BrakeFluidLevel;
772  PROPERTYTYPEBASIC(BrakeFluidLevel, uint16_t)
773 
776  static const Property WasherFluidLevel;
777  PROPERTYTYPEBASIC(WasherFluidLevel, uint16_t)
778 
779  static const Property WasherFluidLevelLow;
780  PROPERTYTYPEBASIC(WasherFluidLevelLow, bool)
781 
783  static const Property SecurityAlertStatus;
784  PROPERTYTYPEBASIC(SecurityAlertStatus, Security::Status)
785 
790  static const Property ParkingBrakeStatus;
791  PROPERTYTYPEBASIC(ParkingBrakeStatus, bool)
792 
796  static const Property ParkingBrakeStatusW3C;
797  PROPERTYTYPE(ParkingBrakeStatusW3C, ParkingBrakeStatusW3CType, StringPropertyType, std::string)
798 
802  static const Property ParkingLightStatus;
803  PROPERTYTYPEBASIC(ParkingLightStatus,bool)
804 
808  static const Property HazardLightStatus;
809  PROPERTYTYPEBASIC(HazardLightStatus, bool)
810 
811  static const Property AntilockBrakingSystem;
812  PROPERTYTYPEBASIC(AntilockBrakingSystem, bool)
813 
814  static const Property AntilockBrakingSystemEnabled;
815  PROPERTYTYPEBASIC(AntilockBrakingSystemEnabled, bool)
816 
817  static const Property TractionControlSystem;
818  PROPERTYTYPEBASIC(TractionControlSystem, bool)
819 
820  static const Property TractionControlSystemEnabled;
821  PROPERTYTYPEBASIC(TractionControlSystemEnabled, bool)
822 
823  static const Property VehicleTopSpeedLimit;
824  PROPERTYTYPEBASIC(VehicleTopSpeedLimit,uint16_t)
825 
827  static const Property AirbagStatus;
828  PROPERTYTYPEBASIC(AirbagStatus, Airbag::Status)
829 
830  static const Property AirbagActivated;
831  PROPERTYTYPEBASIC(AirbagActivated, bool)
832 
833  static const Property AirbagDeployed;
834  PROPERTYTYPEBASIC(AirbagDeployed, bool)
835 
837  static const Property DoorStatus;
838  PROPERTYTYPEBASIC(DoorStatus, Door::Status)
839 
844  static const Property DoorStatusW3C;
845  PROPERTYTYPE(DoorStatusW3C, DoorStatusW3CType, StringPropertyType, std::string)
846 
847  static const Property DoorLockStatus;
848  PROPERTYTYPEBASIC(DoorLockStatus, bool)
849 
850  static const Property ChildLockStatus;
851  PROPERTYTYPEBASIC(ChildLockStatus, bool)
852 
853  static const Property SeatBeltStatus;
854  PROPERTYTYPEBASIC(SeatBeltStatus, bool)
855 
856  static const Property WindowLockStatus;
857  PROPERTYTYPEBASIC(WindowLockStatus, bool)
858 
860  static const Property OccupantStatus;
861  PROPERTYTYPEBASIC(OccupantStatus, Seat::Occupant)
862 
863  static const Property OccupantStatusW3C;
864  PROPERTYTYPE(OccupantStatusW3C, OccupantStatusW3CType, StringPropertyType, std::string)
865 
866  static const Property ObstacleDistance;
867  PROPERTYTYPEBASIC(ObstacleDistance, double)
868 
869  static const Property RainSensor;
870  PROPERTYTYPEBASIC(RainSensor, uint16_t)
871 
873  static const Property WindshieldWiper;
874  PROPERTYTYPEBASIC(WindshieldWiper, Window::WiperSpeed)
875 
880  static const Property WindshieldWiperSpeed;
881  PROPERTYTYPE(WindshieldWiperSpeed, WindshieldWiperSpeedType, StringPropertyType, std::string)
882 
887  static const Property WindshieldWiperSetting;
888  PROPERTYTYPE(WindshieldWiperSetting, WindshieldWiperSettingType, StringPropertyType, std::string)
889 
891  static const Property AirflowDirection;
892  PROPERTYTYPEBASIC(AirflowDirection,HVAC::AirflowDirection)
893 
894  static const Property AirflowDirectionW3C;
895  PROPERTYTYPE(AirflowDirectionW3C, AirflowDirectionW3CType, StringPropertyType, std::string)
896 
897  static const Property FanSpeed;
898  PROPERTYTYPEBASIC(FanSpeed, uint16_t)
899 
900  static const Property TargetTemperature;
901  PROPERTYTYPEBASIC(TargetTemperature, int)
902 
903  static const Property AirConditioning;
904  PROPERTYTYPEBASIC(AirConditioning,bool)
905 
906  static const Property AirRecirculation;
907  PROPERTYTYPEBASIC(AirRecirculation,bool)
908 
909  static const Property Heater;
910  PROPERTYTYPEBASIC(Heater, bool)
911 
913  static const Property Defrost;
914  PROPERTYTYPEBASIC(Defrost, bool )
915 
916  static const Property DefrostWindow;
917  PROPERTYTYPEBASIC(DefrostWindow, bool )
918 
919  static const Property DefrostMirror;
920  PROPERTYTYPEBASIC(DefrostMirror, bool )
921 
922  static const Property SteeringWheelHeater;
923  PROPERTYTYPEBASIC(SteeringWheelHeater,bool)
924  //typedef BasicPropertyType<bool> SteeringWheelHeaterType;
925 
926  static const Property SeatHeater;
927  PROPERTYTYPEBASIC(SeatHeater,int)
928  //typedef BasicPropertyType<bool> SeatHeaterType;
929 
930  static const Property SeatCooler;
931  PROPERTYTYPEBASIC(SeatCooler,bool)
932 // /typedef BasicPropertyType<bool> SeatCoolerType;
933 
934  static const Property WindowStatus;
935  PROPERTYTYPEBASIC(WindowStatus, uint16_t)
936 
937  static const Property Sunroof;
938  PROPERTYTYPEBASIC(Sunroof, uint16_t)
939  //typedef BasicPropertyType<uint16_t> SunroofType;
940 
941  static const Property SunroofTilt;
942  PROPERTYTYPEBASIC(SunroofTilt,uint16_t)
943  //typedef BasicPropertyType<uint16_t> SunroofTiltType;
944 
945  static const Property ConvertibleRoof;
946  PROPERTYTYPEBASIC(ConvertibleRoof, bool)
947 
951  static const Property ConvertibleRoofStatus;
952  PROPERTYTYPE(ConvertibleRoofStatus, ConvertibleRoofStatusType, StringPropertyType, std::string)
953 
954  static const Property NightMode;
955  PROPERTYTYPEBASIC(NightMode, bool)
956 
957  static const Property DrivingMode;
958  PROPERTYTYPEBASIC(DrivingMode, Driving::Mode)
959 
960  static const Property DrivingModeW3C;
961  PROPERTYTYPEBASIC(DrivingModeW3C, bool)
962 
963  static const Property KeyId;
964  PROPERTYTYPE(KeyId, KeyIdType, StringPropertyType, std::string)
965 
966  static const Property Language;
967  PROPERTYTYPE(Language, LanguageType, StringPropertyType, std::string)
968 
969  static const Property MeasurementSystem;
970  PROPERTYTYPEBASIC(MeasurementSystem, Measurement::Type)
971 
972  static const Property MirrorSettingPan;
973  static const Property MirrorSettingTilt;
974 
975  PROPERTYTYPEBASIC(MirrorSettingPan, uint16_t)
976  PROPERTYTYPEBASIC(MirrorSettingTilt, uint16_t)
977 
978  static const Property SteeringWheelPositionSlide;
979  static const Property SteeringWheelPositionTilt;
980 
981  PROPERTYTYPEBASIC(SteeringWheelPositionSlide, uint16_t)
982  PROPERTYTYPEBASIC(SteeringWheelPositionTilt, uint16_t)
983 
984  static const Property SeatPositionRecline;
985  static const Property SeatPositionSlide;
986  static const Property SeatPositionCushionHeight;
987  static const Property SeatPositionHeadrest;
988  static const Property SeatPositionBackCushion;
989  static const Property SeatPositionSideCushion;
990 
991  PROPERTYTYPEBASIC(SeatPositionRecline, uint16_t)
992  PROPERTYTYPEBASIC(SeatPositionSlide, uint16_t)
993  PROPERTYTYPEBASIC(SeatPositionCushionHeight, uint16_t)
994  PROPERTYTYPEBASIC(SeatPositionHeadrest, uint16_t)
995  PROPERTYTYPEBASIC(SeatPositionBackCushion, uint16_t)
996  PROPERTYTYPEBASIC(SeatPositionSideCushion, uint16_t)
997 
998  static const Property DashboardIllumination;
999  PROPERTYTYPEBASIC(DashboardIllumination, uint16_t)
1000 
1001  static const Property GeneratedVehicleSoundMode;
1002  PROPERTYTYPEBASIC(GeneratedVehicleSoundMode, Vehicle::SoundMode)
1003 
1004  static const Property DriverId;
1005  PROPERTYTYPE(DriverId, DriverIdType, StringPropertyType, std::string)
1006 
1007  static const Property PowertrainTorque;
1008  PROPERTYTYPEBASIC(PowertrainTorque, uint16_t)
1009 
1010  static const Property AcceleratorPedalPosition;
1011  PROPERTYTYPEBASIC(AcceleratorPedalPosition, uint16_t)
1012 
1013  static const Property Chime;
1014  PROPERTYTYPEBASIC(Chime, bool)
1015 
1016  static const Property WheelTick;
1017  PROPERTYTYPEBASIC(WheelTick, uint)
1018 
1019  static const Property IgnitionTimeOn;
1020  PROPERTYTYPEBASIC(IgnitionTimeOn, uint64_t)
1021 
1022  static const Property IgnitionTimeOff;
1023  PROPERTYTYPEBASIC(IgnitionTimeOff, uint64_t)
1024 
1025  static const Property YawRate;
1026  PROPERTYTYPEBASIC(YawRate, int16_t)
1027 
1028  static const Property BrakePadWear;
1029  PROPERTYTYPEBASIC(BrakePadWear, uint16_t)
1030 
1031  static const Property BrakeFluidLevelLow;
1032  PROPERTYTYPEBASIC(BrakeFluidLevelLow, bool)
1033 
1034  static const Property BrakesWorn;
1035  PROPERTYTYPEBASIC(BrakesWorn, bool)
1036 
1037  static const Property MalfunctionIndicatorOn;
1038  PROPERTYTYPEBASIC(MalfunctionIndicatorOn, bool)
1039 
1040  static const Property AccumulatedEngineRuntime;
1041  PROPERTYTYPEBASIC(AccumulatedEngineRuntime, uint32_t)
1042 
1043  static const Property DistanceSinceCodeCleared;
1044  PROPERTYTYPEBASIC(DistanceSinceCodeCleared, uint32_t)
1045 
1046  static const Property DistanceWithMILOn;
1047  PROPERTYTYPEBASIC(DistanceWithMILOn, uint32_t)
1048 
1049  static const Property TimeRunMILOn;
1050  PROPERTYTYPEBASIC(TimeRunMILOn, uint32_t)
1051 
1052  static const Property TimeTroubleCodeClear;
1053  PROPERTYTYPEBASIC(TimeTroubleCodeClear, uint32_t)
1054 
1055  static const Property VehicleDriveMode;
1056  PROPERTYTYPE(VehicleDriveMode, VehicleDriveModeType, StringPropertyType, std::string)
1057 
1058  static const Property ActiveNoiseControlMode;
1059  PROPERTYTYPEBASIC(ActiveNoiseControlMode, bool)
1060 
1061  static const Property AvailableSounds;
1062  PROPERTYTYPE(AvailableSounds, AvailableSoundsType, ListPropertyType<StringPropertyType>, StringPropertyType)
1063 
1064  static const Property EngineSoundEnhancementMode;
1065  PROPERTYTYPE(EngineSoundEnhancementMode, EngineSoundEnhancementModeType, StringPropertyType, std::string)
1066 
1067  static const Property ElectronicStabilityControlEnabled;
1068  PROPERTYTYPEBASIC(ElectronicStabilityControlEnabled, bool)
1069 
1070  static const Property ElectronicStabilityControlEngaged;
1071  PROPERTYTYPEBASIC(ElectronicStabilityControlEngaged, bool)
1072 
1073  static const Property OccupantIdentificationType;
1074  PROPERTYTYPE(OccupantIdentificationType, OccupantIdentificationTypeType, StringPropertyType, std::string)
1075 
1076  static const Property OccupantName;
1077  PROPERTYTYPE(OccupantName, OccupantNameType, StringPropertyType, std::string)
1078 
1079  static const Property AtmosphericPressure;
1080  PROPERTYTYPEBASIC(AtmosphericPressure, uint16_t)
1081 
1082  static const Property LaneDepartureStatus;
1083  PROPERTYTYPE(LaneDepartureStatus, LaneDepartureStatusType, StringPropertyType, std::string)
1084 
1088  static const Property AlarmStatus;
1089  PROPERTYTYPE(AlarmStatus, AlarmStatusType, StringPropertyType, std::string)
1090 
1091  //static const Property Lane
1092 
1100  static PropertyList capabilities();
1101 
1106  static PropertyList customProperties();
1107 
1112  static AbstractPropertyType* getPropertyTypeForPropertyNameValue(Property name, std::string value="");
1113 
1132  static bool registerProperty(Property name, PropertyTypeFactoryCallback factory);
1133 
1134 
1135 
1136 private:
1137 
1138  VehicleProperty();
1139 
1140  static std::unique_ptr<VehicleProperty> thereCanOnlyBeOne;
1141 
1142  static bool registerPropertyPriv(Property name, PropertyTypeFactoryCallback factory);
1143 
1144  static std::map<Property, PropertyTypeFactoryCallback> registeredPropertyFactoryMap;
1145  static PropertyList mCapabilities;
1146  static PropertyList mCustomProperties;
1147 };
1148 
1149 #endif // VEHICLEPROPERTY_H
1150 
1151 
Corresponds with DBus Interface org.automotive.ThrottlePosition.
Definition: ambdbusmappings.idl:391
Definition: vehicleproperty.h:360
Corresponds with DBus Interface org.automotive.WheelTick.
Definition: ambdbusmappings.idl:481
Definition: vehicleproperty.h:165
Definition: vehicleproperty.h:212
Corresponds with DBus Interface org.automotive.TractionControlSystem.
Definition: ambdbusmappings.idl:1202
Corresponds with DBus Interface org.automotive.InteriorLightStatus.
Definition: ambdbusmappings.idl:229
Definition: vehicleproperty.h:340
Definition: vehicleproperty.h:128
Corresponds with DBus Interface org.automotive.AirbagStatus.
Definition: ambdbusmappings.idl:1246
Definition: abstractpropertytype.h:70
Definition: vehicleproperty.h:289
ListPropertyType is a AbstractPropertyType for arrays of AbstractPropertyTypes.
Definition: abstractpropertytype.h:725
Corresponds with DBus Interface org.automotive.Horn.
Definition: ambdbusmappings.idl:242
Definition: picojson.h:1002
Mode
Definition: vehicleproperty.h:102
Corresponds with DBus Interface org.automotive.PowertrainTorque.
Definition: ambdbusmappings.idl:442
Definition: vehicleproperty.h:309
Definition: vehicleproperty.h:81
Corresponds with DBus Interface org.automotive.ConvertibleRoof.
Definition: ambdbusmappings.idl:740
Corresponds with DBus Interface org.automotive.RainSensor.
Definition: ambdbusmappings.idl:571
Definition: vehicleproperty.h:33
Corresponds with DBus Interface org.automotive.Defrost.
Definition: ambdbusmappings.idl:702
Definition: vehicleproperty.h:318
Definition: vehicleproperty.h:409
Corresponds with DBus Interface org.automotive.Chime.
Definition: ambdbusmappings.idl:468
std::function< AbstractPropertyType *(void)> PropertyTypeFactoryCallback
PropertyTypeFactoryCallback callback used to construct a AbstractPropertyType for a property...
Definition: vehicleproperty.h:425
Corresponds with DBus Interface org.automotive.OccupantStatus.
Definition: ambdbusmappings.idl:1334
Corresponds with DBus Interface org.automotive.VehicleSpeed.
Definition: ambdbusmappings.idl:16
Corresponds with DBus Interface org.automotive.DrivingMode.
Definition: ambdbusmappings.idl:423
Corresponds with DBus Interface org.automotive.YawRate.
Definition: ambdbusmappings.idl:513
Corresponds with DBus Interface org.automotive.Sunroof.
Definition: ambdbusmappings.idl:721
Corresponds with DBus Interface org.automotive.WindowStatus.
Definition: ambdbusmappings.idl:664
Corresponds with DBus Interface org.automotive.ExteriorBrightness.
Definition: ambdbusmappings.idl:539
Corresponds with DBus Interface org.automotive.EngineSpeed.
Definition: ambdbusmappings.idl:29
Definition: vehicleproperty.h:228
Corresponds with DBus Interface org.automotive.NightMode.
Definition: ambdbusmappings.idl:404
Corresponds with DBus Interface org.automotive.AcceleratorPedalPosition.
Definition: ambdbusmappings.idl:455
Definition: abstractpropertytype.h:440
Definition: vehicleproperty.h:350
Corresponds with DBus Interface org.automotive.AntilockBrakingSystem.
Definition: ambdbusmappings.idl:1177
Definition: vehicleproperty.h:274
static const Property NoValue
Various property types:
Definition: vehicleproperty.h:429
Definition: abstractpropertytype.h:634
Corresponds with DBus Interface org.automotive.VehiclePowerMode.
Definition: ambdbusmappings.idl:42
Definition: vehicleproperty.h:255
Corresponds with DBus Interface org.automotive.AtmosphericPressure.
Definition: ambdbusmappings.idl:759
Corresponds with DBus Interface org.automotive.VehicleType.
Definition: ambdbusmappings.idl:835
Corresponds with DBus Interface org.automotive.DoorStatus.
Definition: ambdbusmappings.idl:1271
Definition: vehicleproperty.h:201
Definition: vehicleproperty.h:266
Corresponds with DBus Interface org.automotive.ButtonEvent.
Definition: ambdbusmappings.idl:526
Definition: vehicleproperty.h:144
Corresponds with DBus Interface org.automotive.ObstacleDistance.
Definition: ambdbusmappings.idl:1347
Definition: vehicleproperty.h:183
Corresponds with DBus Interface org.automotive.VehicleTopSpeedLimit.
Definition: ambdbusmappings.idl:1227
Corresponds with DBus Interface org.automotive.Odometer.
Definition: ambdbusmappings.idl:892
Definition: vehicleproperty.h:71
Definition: vehicleproperty.h:547