automotive-message-broker  0.14.803
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
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 
543  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 
620  static const Property TripMeters;
621  PROPERTYTYPE(TripMeters, TripMetersType, ListPropertyType<uint16_t>, uint16_t)
622 
623  static const Property CruiseControlActive;
624  PROPERTYTYPE(CruiseControlActive, CruiseControlActiveType, BasicPropertyType<bool>, bool)
625 
626  static const Property CruiseControlSpeed;
627  PROPERTYTYPE(CruiseControlSpeed, CruiseControlSpeedType, BasicPropertyType<uint16_t>, uint16_t)
628 
629  static const Property LightHead;
630  PROPERTYTYPE(LightHead, LightHeadType, BasicPropertyType<bool>, bool)
631  static const Property LightRightTurn;
632  PROPERTYTYPE(LightRightTurn, LightRightTurnType, BasicPropertyType<bool>, bool)
633  static const Property LightLeftTurn;
634  PROPERTYTYPE(LightLeftTurn, LightLeftTurnType, BasicPropertyType<bool>, bool)
635  static const Property LightBrake;
636  PROPERTYTYPE(LightBrake, LightBrakeType, BasicPropertyType<bool>, bool)
637  static const Property LightFog;
638  PROPERTYTYPE(LightFog, LightFogType, BasicPropertyType<bool>, bool)
639  static const Property LightHazard;
640  PROPERTYTYPE(LightHazard, LightHazardType, BasicPropertyType<bool>, bool)
641  static const Property LightParking;
642  PROPERTYTYPE(LightParking, LightParkingType, BasicPropertyType<bool>, bool)
643  static const Property LightHighBeam;
644  PROPERTYTYPE(LightHighBeam, LightHighBeamType, BasicPropertyType<bool>, bool)
645  static const Property LightAutomatic;
646  PROPERTYTYPEBASIC(LightAutomatic, bool)
647  static const Property LightDynamicHighBeam;
648  PROPERTYTYPEBASIC(LightDynamicHighBeam, bool)
649 
651  static const Property InteriorLightDriver;
652  PROPERTYTYPE(InteriorLightDriver, InteriorLightDriverType, BasicPropertyType<bool>, bool)
654  static const Property InteriorLightCenter;
655  PROPERTYTYPE(InteriorLightCenter, InteriorLightCenterType, BasicPropertyType<bool>, bool)
657  static const Property InteriorLightPassenger;
658  PROPERTYTYPE(InteriorLightPassenger, InteriorLightPassengerType, BasicPropertyType<bool>, bool)
659 
660  static const Property InteriorLightStatus;
661  PROPERTYTYPEBASIC(InteriorLightStatus, bool)
662 
663  static const Property EngineLoad;
664  PROPERTYTYPE(EngineLoad, EngineLoadType, BasicPropertyType<uint16_t>, uint16_t)
665 
666  static const Property Horn;
667  PROPERTYTYPE(Horn, HornType, BasicPropertyType<bool>, bool)
668 
669  static const Property FuelLevel;
670  PROPERTYTYPE(FuelLevel, FuelLevelType, BasicPropertyType<uint16_t>, uint16_t)
671 
672  static const Property FuelRange;
673  PROPERTYTYPE(FuelRange, FuelRangeType, BasicPropertyType<uint16_t> , uint16_t)
674 
675  static const Property FuelConsumption;
676  PROPERTYTYPE(FuelConsumption, FuelConsumptionType, BasicPropertyType<uint>, uint)
677 
678  static const Property FuelEconomy;
679  PROPERTYTYPE(FuelEconomy, FuelEconomyType, BasicPropertyType<uint16_t>, uint16_t)
680 
681  static const Property FuelAverageEconomy;
682  PROPERTYTYPE(FuelAverageEconomy, FuelAverageEconomyType, BasicPropertyType<uint16_t> , uint16_t)
683 
684  static const Property FuelAverageConsumption;
685  PROPERTYTYPEBASIC(FuelAverageConsumption, uint)
686 
687  static const Property FuelTimeSinceRestart;
688  PROPERTYTYPEBASIC(FuelTimeSinceRestart, uint)
689 
690  static const Property FuelConsumptionSinceRestart;
691  PROPERTYTYPEBASIC(FuelConsumptionSinceRestart, uint)
692 
693  static const Property FuelType;
694  PROPERTYTYPE(FuelType, FuelTypeType, BasicPropertyType<Fuel::Type>, Fuel::Type)
695 
696  static const Property FuelPositionSide;
697  PROPERTYTYPE(FuelPositionSide, FuelPositionSideType, BasicPropertyType<Fuel::RefuelPosition>, Fuel::RefuelPosition)
698 
699  static const Property ExteriorBrightness;
700  PROPERTYTYPE(ExteriorBrightness, ExteriorBrightnessType, BasicPropertyType<uint16_t>, uint16_t)
701 
702  static const Property Latitude;
703  PROPERTYTYPE(Latitude, LatitudeType, BasicPropertyType<double>, double)
704 
705  static const Property Longitude;
706  PROPERTYTYPE(Longitude, LongitudeType, BasicPropertyType<double>, double)
707 
708  static const Property Altitude;
709  PROPERTYTYPE(Altitude, AltitudeType, BasicPropertyType<double> , double)
710 
711  static const Property Direction;
712  PROPERTYTYPE(Direction, DirectionType, BasicPropertyType<uint16_t>, uint16_t)
713 
714  static const Property VehicleWidth;
715  PROPERTYTYPE(VehicleWidth, VehicleWidthType, BasicPropertyType<uint>, uint)
716  static const Property VehicleHeight;
717  PROPERTYTYPE(VehicleHeight, VehicleHeightType, BasicPropertyType<uint>, uint)
718  static const Property VehicleLength;
719  PROPERTYTYPE(VehicleLength, VehicleLengthType, BasicPropertyType<uint>, uint)
720 
721  static const Property VehicleType;
722  PROPERTYTYPE(VehicleType, VehicleTypeType, BasicPropertyType<Vehicle::Type>, Vehicle::Type)
723 
724  static const Property DoorsPerRow;
725  PROPERTYTYPE(DoorsPerRow, DoorsPerRowType, ListPropertyType<uint16_t>, uint16_t)
726 
727  static const Property TransmissionGearType;
728  PROPERTYTYPE(TransmissionGearType, TransmissionGearTypeType, BasicPropertyType<Transmission::Type>, Transmission::Type)
729 
730  static const Property FrontWheelRadius;
731  PROPERTYTYPE(FrontWheelRadius, FrontWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
732  static const Property RearWheelRadius;
733  PROPERTYTYPE(RearWheelRadius, RearWheelRadiusType, BasicPropertyType<uint16_t>, uint16_t)
734 
735  static const Property WheelTrack;
736  PROPERTYTYPE(WheelTrack, WheelTrackType, BasicPropertyType<uint>, uint)
737 
738  static const Property BrakePressure;
739  PROPERTYTYPEBASIC(BrakePressure, uint16_t)
740 
742  static const Property Odometer;
743  PROPERTYTYPEBASIC(Odometer, uint)
744 
745  static const Property DistanceTotal;
746  PROPERTYTYPEBASIC(DistanceTotal, uint)
747 
748  static const Property DistanceSinceStart;
749  PROPERTYTYPEBASIC(DistanceSinceStart, uint)
750 
753  static const Property TransmissionFluidLevel;
754  PROPERTYTYPEBASIC(TransmissionFluidLevel, uint16_t)
755 
756  static const Property TransmissionOilWear;
757  PROPERTYTYPEBASIC(TransmissionOilWear, uint16_t)
758 
759  static const Property TransmissionOilTemperature;
760  PROPERTYTYPEBASIC(TransmissionOilTemperature, int16_t)
761 
762  static const Property TransmissionClutchWear;
763  PROPERTYTYPEBASIC(TransmissionClutchWear, uint16_t)
764 
767  static const Property BrakeFluidLevel;
768  PROPERTYTYPEBASIC(BrakeFluidLevel, uint16_t)
769 
772  static const Property WasherFluidLevel;
773  PROPERTYTYPEBASIC(WasherFluidLevel, uint16_t)
774 
775  static const Property WasherFluidLevelLow;
776  PROPERTYTYPEBASIC(WasherFluidLevelLow, bool)
777 
779  static const Property SecurityAlertStatus;
780  PROPERTYTYPEBASIC(SecurityAlertStatus, Security::Status)
781 
786  static const Property ParkingBrakeStatus;
787  PROPERTYTYPEBASIC(ParkingBrakeStatus, bool)
788 
792  static const Property ParkingBrakeStatusW3C;
793  PROPERTYTYPE(ParkingBrakeStatusW3C, ParkingBrakeStatusW3CType, StringPropertyType, std::string)
794 
798  static const Property ParkingLightStatus;
799  PROPERTYTYPEBASIC(ParkingLightStatus,bool)
800 
804  static const Property HazardLightStatus;
805  PROPERTYTYPEBASIC(HazardLightStatus, bool)
806 
807  static const Property AntilockBrakingSystem;
808  PROPERTYTYPEBASIC(AntilockBrakingSystem, bool)
809 
810  static const Property AntilockBrakingSystemEnabled;
811  PROPERTYTYPEBASIC(AntilockBrakingSystemEnabled, bool)
812 
813  static const Property TractionControlSystem;
814  PROPERTYTYPEBASIC(TractionControlSystem, bool)
815 
816  static const Property TractionControlSystemEnabled;
817  PROPERTYTYPEBASIC(TractionControlSystemEnabled, bool)
818 
819  static const Property VehicleTopSpeedLimit;
820  PROPERTYTYPEBASIC(VehicleTopSpeedLimit,uint16_t)
821 
823  static const Property AirbagStatus;
824  PROPERTYTYPEBASIC(AirbagStatus, Airbag::Status)
825 
826  static const Property AirbagActivated;
827  PROPERTYTYPEBASIC(AirbagActivated, bool)
828 
829  static const Property AirbagDeployed;
830  PROPERTYTYPEBASIC(AirbagDeployed, bool)
831 
833  static const Property DoorStatus;
834  PROPERTYTYPEBASIC(DoorStatus, Door::Status)
835 
840  static const Property DoorStatusW3C;
841  PROPERTYTYPE(DoorStatusW3C, DoorStatusW3CType, StringPropertyType, std::string)
842 
843  static const Property DoorLockStatus;
844  PROPERTYTYPEBASIC(DoorLockStatus, bool)
845 
846  static const Property ChildLockStatus;
847  PROPERTYTYPEBASIC(ChildLockStatus, bool)
848 
849  static const Property SeatBeltStatus;
850  PROPERTYTYPEBASIC(SeatBeltStatus, bool)
851 
852  static const Property WindowLockStatus;
853  PROPERTYTYPEBASIC(WindowLockStatus, bool)
854 
856  static const Property OccupantStatus;
857  PROPERTYTYPEBASIC(OccupantStatus, Seat::Occupant)
858 
859  static const Property OccupantStatusW3C;
860  PROPERTYTYPE(OccupantStatusW3C, OccupantStatusW3CType, StringPropertyType, std::string)
861 
862  static const Property ObstacleDistance;
863  PROPERTYTYPEBASIC(ObstacleDistance, double)
864 
865  static const Property RainSensor;
866  PROPERTYTYPEBASIC(RainSensor, uint16_t)
867 
869  static const Property WindshieldWiper;
870  PROPERTYTYPEBASIC(WindshieldWiper, Window::WiperSpeed)
871 
876  static const Property WindshieldWiperSpeed;
877  PROPERTYTYPE(WindshieldWiperSpeed, WindshieldWiperSpeedType, StringPropertyType, std::string)
878 
883  static const Property WindshieldWiperSetting;
884  PROPERTYTYPE(WindshieldWiperSetting, WindshieldWiperSettingType, StringPropertyType, std::string)
885 
887  static const Property AirflowDirection;
888  PROPERTYTYPEBASIC(AirflowDirection,HVAC::AirflowDirection)
889 
890  static const Property AirflowDirectionW3C;
891  PROPERTYTYPE(AirflowDirectionW3C, AirflowDirectionW3CType, StringPropertyType, std::string)
892 
893  static const Property FanSpeed;
894  PROPERTYTYPEBASIC(FanSpeed, uint16_t)
895 
896  static const Property TargetTemperature;
897  PROPERTYTYPEBASIC(TargetTemperature, int)
898 
899  static const Property AirConditioning;
900  PROPERTYTYPEBASIC(AirConditioning,bool)
901 
902  static const Property AirRecirculation;
903  PROPERTYTYPEBASIC(AirRecirculation,bool)
904 
905  static const Property Heater;
906  PROPERTYTYPEBASIC(Heater, bool)
907 
909  static const Property Defrost;
910  PROPERTYTYPEBASIC(Defrost, bool )
911 
912  static const Property DefrostWindow;
913  PROPERTYTYPEBASIC(DefrostWindow, bool )
914 
915  static const Property DefrostMirror;
916  PROPERTYTYPEBASIC(DefrostMirror, bool )
917 
918  static const Property SteeringWheelHeater;
919  PROPERTYTYPEBASIC(SteeringWheelHeater,bool)
920  //typedef BasicPropertyType<bool> SteeringWheelHeaterType;
921 
922  static const Property SeatHeater;
923  PROPERTYTYPEBASIC(SeatHeater,int)
924  //typedef BasicPropertyType<bool> SeatHeaterType;
925 
926  static const Property SeatCooler;
927  PROPERTYTYPEBASIC(SeatCooler,bool)
928 // /typedef BasicPropertyType<bool> SeatCoolerType;
929 
930  static const Property WindowStatus;
931  PROPERTYTYPEBASIC(WindowStatus, uint16_t)
932 
933  static const Property Sunroof;
934  PROPERTYTYPEBASIC(Sunroof, uint16_t)
935  //typedef BasicPropertyType<uint16_t> SunroofType;
936 
937  static const Property SunroofTilt;
938  PROPERTYTYPEBASIC(SunroofTilt,uint16_t)
939  //typedef BasicPropertyType<uint16_t> SunroofTiltType;
940 
941  static const Property ConvertibleRoof;
942  PROPERTYTYPEBASIC(ConvertibleRoof, bool)
943 
947  static const Property ConvertibleRoofStatus;
948  PROPERTYTYPE(ConvertibleRoofStatus, ConvertibleRoofStatusType, StringPropertyType, std::string)
949 
950  static const Property NightMode;
951  PROPERTYTYPEBASIC(NightMode, bool)
952 
953  static const Property DrivingMode;
954  PROPERTYTYPEBASIC(DrivingMode, Driving::Mode)
955 
956  static const Property DrivingModeW3C;
957  PROPERTYTYPEBASIC(DrivingModeW3C, bool)
958 
959  static const Property KeyId;
960  PROPERTYTYPE(KeyId, KeyIdType, StringPropertyType, std::string)
961 
962  static const Property Language;
963  PROPERTYTYPE(Language, LanguageType, StringPropertyType, std::string)
964 
965  static const Property MeasurementSystem;
966  PROPERTYTYPEBASIC(MeasurementSystem, Measurement::Type)
967 
968  static const Property MirrorSettingPan;
969  static const Property MirrorSettingTilt;
970 
971  PROPERTYTYPEBASIC(MirrorSettingPan, uint16_t)
972  PROPERTYTYPEBASIC(MirrorSettingTilt, uint16_t)
973 
974  static const Property SteeringWheelPositionSlide;
975  static const Property SteeringWheelPositionTilt;
976 
977  PROPERTYTYPEBASIC(SteeringWheelPositionSlide, uint16_t)
978  PROPERTYTYPEBASIC(SteeringWheelPositionTilt, uint16_t)
979 
980  static const Property SeatPositionRecline;
981  static const Property SeatPositionSlide;
982  static const Property SeatPositionCushionHeight;
983  static const Property SeatPositionHeadrest;
984  static const Property SeatPositionBackCushion;
985  static const Property SeatPositionSideCushion;
986 
987  PROPERTYTYPEBASIC(SeatPositionRecline, uint16_t)
988  PROPERTYTYPEBASIC(SeatPositionSlide, uint16_t)
989  PROPERTYTYPEBASIC(SeatPositionCushionHeight, uint16_t)
990  PROPERTYTYPEBASIC(SeatPositionHeadrest, uint16_t)
991  PROPERTYTYPEBASIC(SeatPositionBackCushion, uint16_t)
992  PROPERTYTYPEBASIC(SeatPositionSideCushion, uint16_t)
993 
994  static const Property DashboardIllumination;
995  PROPERTYTYPEBASIC(DashboardIllumination, uint16_t)
996 
997  static const Property GeneratedVehicleSoundMode;
998  PROPERTYTYPEBASIC(GeneratedVehicleSoundMode, Vehicle::SoundMode)
999 
1000  static const Property DriverId;
1001  PROPERTYTYPE(DriverId, DriverIdType, StringPropertyType, std::string)
1002 
1003  static const Property PowertrainTorque;
1004  PROPERTYTYPEBASIC(PowertrainTorque, uint16_t)
1005 
1006  static const Property AcceleratorPedalPosition;
1007  PROPERTYTYPEBASIC(AcceleratorPedalPosition, uint16_t)
1008 
1009  static const Property Chime;
1010  PROPERTYTYPEBASIC(Chime, bool)
1011 
1012  static const Property WheelTick;
1013  PROPERTYTYPEBASIC(WheelTick, uint)
1014 
1015  static const Property IgnitionTimeOn;
1016  PROPERTYTYPEBASIC(IgnitionTimeOn, uint64_t)
1017 
1018  static const Property IgnitionTimeOff;
1019  PROPERTYTYPEBASIC(IgnitionTimeOff, uint64_t)
1020 
1021  static const Property YawRate;
1022  PROPERTYTYPEBASIC(YawRate, int16_t)
1023 
1024  static const Property BrakePadWear;
1025  PROPERTYTYPEBASIC(BrakePadWear, uint16_t)
1026 
1027  static const Property BrakeFluidLevelLow;
1028  PROPERTYTYPEBASIC(BrakeFluidLevelLow, bool)
1029 
1030  static const Property BrakesWorn;
1031  PROPERTYTYPEBASIC(BrakesWorn, bool)
1032 
1033  static const Property MalfunctionIndicatorOn;
1034  PROPERTYTYPEBASIC(MalfunctionIndicatorOn, bool)
1035 
1036  static const Property AccumulatedEngineRuntime;
1037  PROPERTYTYPEBASIC(AccumulatedEngineRuntime, uint32_t)
1038 
1039  static const Property DistanceSinceCodeCleared;
1040  PROPERTYTYPEBASIC(DistanceSinceCodeCleared, uint32_t)
1041 
1042  static const Property DistanceWithMILOn;
1043  PROPERTYTYPEBASIC(DistanceWithMILOn, uint32_t)
1044 
1045  static const Property TimeRunMILOn;
1046  PROPERTYTYPEBASIC(TimeRunMILOn, uint32_t)
1047 
1048  static const Property TimeTroubleCodeClear;
1049  PROPERTYTYPEBASIC(TimeTroubleCodeClear, uint32_t)
1050 
1051  static const Property VehicleDriveMode;
1052  PROPERTYTYPE(VehicleDriveMode, VehicleDriveModeType, StringPropertyType, std::string)
1053 
1054  static const Property ActiveNoiseControlMode;
1055  PROPERTYTYPEBASIC(ActiveNoiseControlMode, bool)
1056 
1057  static const Property AvailableSounds;
1058  PROPERTYTYPE(AvailableSounds, AvailableSoundsType, ListPropertyType<std::string>, std::string)
1059 
1060  static const Property EngineSoundEnhancementMode;
1061  PROPERTYTYPE(EngineSoundEnhancementMode, EngineSoundEnhancementModeType, StringPropertyType, std::string)
1062 
1063  static const Property ElectronicStabilityControlEnabled;
1064  PROPERTYTYPEBASIC(ElectronicStabilityControlEnabled, bool)
1065 
1066  static const Property ElectronicStabilityControlEngaged;
1067  PROPERTYTYPEBASIC(ElectronicStabilityControlEngaged, bool)
1068 
1069  static const Property OccupantIdentificationType;
1070  PROPERTYTYPE(OccupantIdentificationType, OccupantIdentificationTypeType, StringPropertyType, std::string)
1071 
1072  static const Property OccupantName;
1073  PROPERTYTYPE(OccupantName, OccupantNameType, StringPropertyType, std::string)
1074 
1075  static const Property AtmosphericPressure;
1076  PROPERTYTYPEBASIC(AtmosphericPressure, uint16_t)
1077 
1078  static const Property LaneDepartureStatus;
1079  PROPERTYTYPE(LaneDepartureStatus, LaneDepartureStatusType, StringPropertyType, std::string)
1080 
1084  static const Property AlarmStatus;
1085  PROPERTYTYPE(AlarmStatus, AlarmStatusType, StringPropertyType, std::string)
1086 
1087  //static const Property Lane
1088 
1096  static PropertyList capabilities();
1097 
1102  static PropertyList customProperties();
1103 
1108  static AbstractPropertyType* getPropertyTypeForPropertyNameValue(Property name, std::string value="");
1109 
1128  static bool registerProperty(Property name, PropertyTypeFactoryCallback factory);
1129 
1130 
1131 
1132 private:
1133 
1134  VehicleProperty();
1135 
1136  static std::unique_ptr<VehicleProperty> thereCanOnlyBeOne;
1137 
1138  static bool registerPropertyPriv(Property name, PropertyTypeFactoryCallback factory);
1139 
1140  static std::map<Property, PropertyTypeFactoryCallback> registeredPropertyFactoryMap;
1141  static PropertyList mCapabilities;
1142  static PropertyList mCustomProperties;
1143 };
1144 
1145 #endif // VEHICLEPROPERTY_H
1146 
1147