• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef HIDL_GENERATED_ANDROID_HARDWARE_AUTOMOTIVE_VEHICLE_V2_0_TYPES_H
2 #define HIDL_GENERATED_ANDROID_HARDWARE_AUTOMOTIVE_VEHICLE_V2_0_TYPES_H
3 
4 #include <utils/NativeHandle.h>
5 #include <utils/misc.h>
6 
7 #include <vector>
8 #include <string>
9 #include <sstream>
10 
11 namespace android {
12 namespace hardware {
13 
14 template<typename T>
15 using hidl_vec = std::vector<T>;
16 
17 using hidl_string = std::string;
18 
19 template <typename Enum>
20 using hidl_bitfield = typename std::underlying_type<Enum>::type;
21 
22 std::string toString(const void *t);
23 
24 // toString alias for numeric types
25 template<typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type>
toString(T t)26 inline std::string toString(T t) {
27     return std::to_string(t);
28 }
29 
30 namespace details {
31 
32 template<typename T, typename = typename std::enable_if<std::is_arithmetic<T>::value, T>::type>
33 inline std::string toHexString(T t, bool prefix = true) {
34     std::ostringstream os;
35     if (prefix) { os << std::showbase; }
36     os << std::hex << t;
37     return os.str();
38 }
39 
40 template<>
toHexString(uint8_t t,bool prefix)41 inline std::string toHexString(uint8_t t, bool prefix) {
42     return toHexString(static_cast<int32_t>(t), prefix);
43 }
44 
45 template<>
toHexString(int8_t t,bool prefix)46 inline std::string toHexString(int8_t t, bool prefix) {
47     return toHexString(static_cast<int32_t>(t), prefix);
48 }
49 
50 template<typename Array>
51 std::string arrayToString(const Array &a, size_t size);
52 
53 template<size_t SIZE1>
arraySizeToString()54 std::string arraySizeToString() {
55     return std::string{"["} + toString(SIZE1) + "]";
56 }
57 
58 template<size_t SIZE1, size_t SIZE2, size_t... SIZES>
arraySizeToString()59 std::string arraySizeToString() {
60     return std::string{"["} + toString(SIZE1) + "]" + arraySizeToString<SIZE2, SIZES...>();
61 }
62 
63 template<typename Array>
arrayToString(const Array & a,size_t size)64 std::string arrayToString(const Array &a, size_t size) {
65     using android::hardware::toString;
66     std::string os;
67     os += "{";
68     for (size_t i = 0; i < size; ++i) {
69         if (i > 0) {
70             os += ", ";
71         }
72         os += toString(a[i]);
73     }
74     os += "}";
75     return os;
76 }
77 
78 }  //namespace details
79 
toString(const void * t)80 inline std::string toString(const void *t) {
81     return details::toHexString(reinterpret_cast<uintptr_t>(t));
82 }
83 
84 // debug string dump. There will be quotes around the string!
toString(const hidl_string & hs)85 inline std::string toString(const hidl_string &hs) {
86     return std::string{"\""} + hs.c_str() + "\"";
87 }
88 
89 // debug string dump, assuming that toString(T) is defined.
90 template<typename T>
toString(const hidl_vec<T> & a)91 std::string toString(const hidl_vec<T> &a) {
92     std::string os;
93     os += "[" + toString(a.size()) + "]";
94     os += details::arrayToString(a, a.size());
95     return os;
96 }
97 
98 namespace automotive {
99 namespace vehicle {
100 namespace V2_0 {
101 
102 // Forward declaration for forward reference support:
103 enum class VehiclePropertyType : int32_t;
104 enum class VehicleArea : int32_t;
105 enum class VehiclePropertyGroup : int32_t;
106 enum class VehicleProperty : int32_t;
107 enum class VehicleVendorPermission : int32_t;
108 enum class VehicleSeatOccupancyState : int32_t;
109 enum class VehicleLightState : int32_t;
110 enum class VehicleLightSwitch : int32_t;
111 enum class EvConnectorType : int32_t;
112 enum class PortLocationType : int32_t;
113 enum class FuelType : int32_t;
114 enum class VehicleHvacFanDirection : int32_t;
115 enum class VehicleOilLevel : int32_t;
116 enum class VehicleApPowerStateConfigFlag : int32_t;
117 enum class VehicleApPowerStateReq : int32_t;
118 enum class VehicleApPowerStateReqIndex : int32_t;
119 enum class VehicleApPowerStateShutdownParam : int32_t;
120 enum class VehicleApPowerStateReport : int32_t;
121 enum class VehicleHwKeyInputAction : int32_t;
122 enum class VehicleDisplay : int32_t;
123 enum class VehicleUnit : int32_t;
124 enum class VehiclePropertyChangeMode : int32_t;
125 enum class VehiclePropertyAccess : int32_t;
126 enum class VehiclePropertyStatus : int32_t;
127 enum class VehicleGear : int32_t;
128 enum class VehicleAreaSeat : int32_t;
129 enum class VehicleAreaWindow : int32_t;
130 enum class VehicleAreaDoor : int32_t;
131 enum class VehicleAreaMirror : int32_t;
132 enum class VehicleTurnSignal : int32_t;
133 struct VehicleAreaConfig;
134 struct VehiclePropConfig;
135 struct VehiclePropValue;
136 enum class VehicleIgnitionState : int32_t;
137 enum class SubscribeFlags : int32_t;
138 struct SubscribeOptions;
139 enum class StatusCode : int32_t;
140 enum class VehicleAreaWheel : int32_t;
141 enum class Obd2FuelSystemStatus : int32_t;
142 enum class Obd2IgnitionMonitorKind : int32_t;
143 enum class Obd2CommonIgnitionMonitors : int32_t;
144 enum class Obd2SparkIgnitionMonitors : int32_t;
145 enum class Obd2CompressionIgnitionMonitors : int32_t;
146 enum class Obd2SecondaryAirStatus : int32_t;
147 enum class Obd2FuelType : int32_t;
148 enum class DiagnosticIntegerSensorIndex : int32_t;
149 enum class DiagnosticFloatSensorIndex : int32_t;
150 enum class VmsMessageType : int32_t;
151 enum class VmsBaseMessageIntegerValuesIndex : int32_t;
152 enum class VmsStartSessionMessageIntegerValuesIndex : int32_t;
153 enum class VmsMessageWithLayerIntegerValuesIndex : int32_t;
154 enum class VmsMessageWithLayerAndPublisherIdIntegerValuesIndex : int32_t;
155 enum class VmsOfferingMessageIntegerValuesIndex : int32_t;
156 enum class VmsSubscriptionsStateIntegerValuesIndex : int32_t;
157 enum class VmsAvailabilityStateIntegerValuesIndex : int32_t;
158 enum class VmsPublisherInformationIntegerValuesIndex : int32_t;
159 enum class UserFlags : int32_t;
160 struct UserInfo;
161 struct UsersInfo;
162 enum class InitialUserInfoRequestType : int32_t;
163 struct InitialUserInfoRequest;
164 enum class InitialUserInfoResponseAction : int32_t;
165 struct InitialUserInfoResponse;
166 enum class SwitchUserMessageType : int32_t;
167 struct SwitchUserRequest;
168 enum class SwitchUserStatus : int32_t;
169 struct SwitchUserResponse;
170 struct CreateUserRequest;
171 enum class CreateUserStatus : int32_t;
172 struct CreateUserResponse;
173 struct RemoveUserRequest;
174 enum class UserIdentificationAssociationType : int32_t;
175 enum class UserIdentificationAssociationValue : int32_t;
176 enum class UserIdentificationAssociationSetValue : int32_t;
177 struct UserIdentificationGetRequest;
178 struct UserIdentificationSetRequest;
179 struct UserIdentificationResponse;
180 struct UserIdentificationAssociation;
181 struct UserIdentificationSetAssociation;
182 enum class RotaryInputType : int32_t;
183 
184 // Order of inner types was changed for forward reference support.
185 
186 /**
187  * Enumerates supported data type for VehicleProperty.
188  *
189  * Used to create property ID in VehicleProperty enum.
190  */
191 enum class VehiclePropertyType : int32_t {
192     STRING = 1048576 /* 0x00100000 */,
193     BOOLEAN = 2097152 /* 0x00200000 */,
194     INT32 = 4194304 /* 0x00400000 */,
195     INT32_VEC = 4259840 /* 0x00410000 */,
196     INT64 = 5242880 /* 0x00500000 */,
197     INT64_VEC = 5308416 /* 0x00510000 */,
198     FLOAT = 6291456 /* 0x00600000 */,
199     FLOAT_VEC = 6356992 /* 0x00610000 */,
200     BYTES = 7340032 /* 0x00700000 */,
201     /**
202      * Any combination of scalar or vector types. The exact format must be
203      * provided in the description of the property.
204      *
205      * For vendor MIXED type properties, configArray needs to be formatted in this
206      * structure.
207      * configArray[0], 1 indicates the property has a String value
208      * configArray[1], 1 indicates the property has a Boolean value .
209      * configArray[2], 1 indicates the property has an Integer value.
210      * configArray[3], the number indicates the size of Integer[] in the property.
211      * configArray[4], 1 indicates the property has a Long value.
212      * configArray[5], the number indicates the size of Long[] in the property.
213      * configArray[6], 1 indicates the property has a Float value.
214      * configArray[7], the number indicates the size of Float[] in the property.
215      * configArray[8], the number indicates the size of byte[] in the property.
216      * For example:
217      * {@code configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0}} indicates the property has
218      * a String value, a Boolean value, an Integer value and an array with 3 integers.
219      */
220     MIXED = 14680064 /* 0x00e00000 */,
221     MASK = 16711680 /* 0x00ff0000 */,
222 };
223 
224 /**
225  * Vehicle Areas
226  * Used to construct property IDs in the VehicleProperty enum.
227  *
228  * Some properties may be associated with particular vehicle areas. For
229  * example, VehicleProperty:DOOR_LOCK property must be associated with
230  * particular door, thus this property must be marked with
231  * VehicleArea:DOOR flag.
232  *
233  * Other properties may not be associated with particular vehicle area.
234  * These kinds of properties must have VehicleArea:GLOBAL flag.
235  *
236  * [Definition] Area: An area represents a unique element of an AreaType.
237  *   For instance, if AreaType is WINDOW, then an area may be FRONT_WINDSHIELD.
238  *
239  * [Definition] AreaID: An AreaID is a combination of one or more areas,
240  *   and is represented using a bitmask of Area enums. Different AreaTypes may
241  *   not be mixed in a single AreaID. For instance, a window area cannot be
242  *   combined with a seat area in an AreaID.
243  *
244  * Rules for mapping a zoned property to AreaIDs:
245  *  - A property must be mapped to an array of AreaIDs that are impacted when
246  *    the property value changes.
247  *  - Each element in the array must represent an AreaID, in which the
248  *    property value can only be changed together in all the areas within
249  *    the AreaID and never independently. That is, when the property value
250  *    changes in one of the areas in an AreaID in the array, then it must
251  *    automatically change in all other areas in the AreaID.
252  *  - The property value must be independently controllable in any two
253  *    different AreaIDs in the array.
254  *  - An area must only appear once in the array of AreaIDs. That is, an
255  *    area must only be part of a single AreaID in the array.
256  *
257  * [Definition] Global Property: A property that applies to the entire car
258  *   and is not associated with a specific area. For example, FUEL_LEVEL,
259  *   HVAC_STEERING_WHEEL_HEAT.
260  *
261  * Rules for mapping a global property to AreaIDs:
262  *  - A global property must not be mapped to AreaIDs.
263  */
264 enum class VehicleArea : int32_t {
265     GLOBAL = 16777216 /* 0x01000000 */,
266     /**
267      * WINDOW maps to enum VehicleAreaWindow
268      */
269     WINDOW = 50331648 /* 0x03000000 */,
270     /**
271      * MIRROR maps to enum VehicleAreaMirror
272      */
273     MIRROR = 67108864 /* 0x04000000 */,
274     /**
275      * SEAT maps to enum VehicleAreaSeat
276      */
277     SEAT = 83886080 /* 0x05000000 */,
278     /**
279      * DOOR maps to enum VehicleAreaDoor
280      */
281     DOOR = 100663296 /* 0x06000000 */,
282     /**
283      * WHEEL maps to enum VehicleAreaWheel
284      */
285     WHEEL = 117440512 /* 0x07000000 */,
286     MASK = 251658240 /* 0x0f000000 */,
287 };
288 
289 /**
290  * Enumerates property groups.
291  *
292  * Used to create property ID in VehicleProperty enum.
293  */
294 enum class VehiclePropertyGroup : int32_t {
295     /**
296      * Properties declared in AOSP must use this flag.
297      */
298     SYSTEM = 268435456 /* 0x10000000 */,
299     /**
300      * Properties declared by vendors must use this flag.
301      */
302     VENDOR = 536870912 /* 0x20000000 */,
303     MASK = -268435456 /* 0xf0000000 */,
304 };
305 
306 /**
307  * Declares all vehicle properties. VehicleProperty has a bitwise structure.
308  * Each property must have:
309  *  - a unique id from range 0x0100 - 0xffff
310  *  - associated data type using VehiclePropertyType
311  *  - property group (VehiclePropertyGroup)
312  *  - vehicle area (VehicleArea)
313  *
314  * Vendors are allowed to extend this enum with their own properties. In this
315  * case they must use VehiclePropertyGroup:VENDOR flag when the property is
316  * declared.
317  *
318  * When a property's status field is not set to AVAILABLE:
319  *  - IVehicle#set may return StatusCode::NOT_AVAILABLE.
320  *  - IVehicle#get is not guaranteed to work.
321  *
322  * Properties set to values out of range must be ignored and no action taken
323  * in response to such ill formed requests.
324  */
325 enum class VehicleProperty : int32_t {
326     /**
327      * Undefined property.
328      */
329     INVALID = 0 /* 0x00000000 */,
330     /**
331      * VIN of vehicle
332      *
333      * @change_mode VehiclePropertyChangeMode:STATIC
334      * @access VehiclePropertyAccess:READ
335      */
336     INFO_VIN = 286261504 /* (0x0100 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:STRING | VehicleArea:GLOBAL) */,
337     /**
338      * Manufacturer of vehicle
339      *
340      * @change_mode VehiclePropertyChangeMode:STATIC
341      * @access VehiclePropertyAccess:READ
342      */
343     INFO_MAKE = 286261505 /* (0x0101 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:STRING | VehicleArea:GLOBAL) */,
344     /**
345      * Model of vehicle
346      *
347      * @change_mode VehiclePropertyChangeMode:STATIC
348      * @access VehiclePropertyAccess:READ
349      */
350     INFO_MODEL = 286261506 /* (0x0102 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:STRING | VehicleArea:GLOBAL) */,
351     /**
352      * Model year of vehicle.
353      *
354      * @change_mode VehiclePropertyChangeMode:STATIC
355      * @access VehiclePropertyAccess:READ
356      * @unit VehicleUnit:YEAR
357      */
358     INFO_MODEL_YEAR = 289407235 /* (0x0103 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
359     /**
360      * Fuel capacity of the vehicle in milliliters
361      *
362      * @change_mode VehiclePropertyChangeMode:STATIC
363      * @access VehiclePropertyAccess:READ
364      * @unit VehicleUnit:MILLILITER
365      */
366     INFO_FUEL_CAPACITY = 291504388 /* (0x0104 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
367     /**
368      * List of fuels the vehicle may use
369      *
370      * @change_mode VehiclePropertyChangeMode:STATIC
371      * @access VehiclePropertyAccess:READ
372      * @data_enum FuelType
373      */
374     INFO_FUEL_TYPE = 289472773 /* (0x0105 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
375     /**
376      * Battery capacity of the vehicle, if EV or hybrid.  This is the nominal
377      * battery capacity when the vehicle is new.
378      *
379      * @change_mode VehiclePropertyChangeMode:STATIC
380      * @access VehiclePropertyAccess:READ
381      * @unit VehicleUnit:WH
382      */
383     INFO_EV_BATTERY_CAPACITY = 291504390 /* (0x0106 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
384     /**
385      * List of connectors this EV may use
386      *
387      * @change_mode VehiclePropertyChangeMode:STATIC
388      * @data_enum EvConnectorType
389      * @access VehiclePropertyAccess:READ
390      */
391     INFO_EV_CONNECTOR_TYPE = 289472775 /* (0x0107 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
392     /**
393      * Fuel door location
394      *
395      * @change_mode VehiclePropertyChangeMode:STATIC
396      * @data_enum PortLocationType
397      * @access VehiclePropertyAccess:READ
398      */
399     INFO_FUEL_DOOR_LOCATION = 289407240 /* (0x0108 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
400     /**
401      * EV port location
402      *
403      * @change_mode VehiclePropertyChangeMode:STATIC
404      * @access VehiclePropertyAccess:READ
405      * @data_enum PortLocationType
406      */
407     INFO_EV_PORT_LOCATION = 289407241 /* (0x0109 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
408     /**
409      * Driver's seat location
410      * VHAL implementations must ignore the areaId. Use VehicleArea:GLOBAL.
411      *
412      * @change_mode VehiclePropertyChangeMode:STATIC
413      * @data_enum VehicleAreaSeat
414      * @access VehiclePropertyAccess:READ
415      */
416     INFO_DRIVER_SEAT = 356516106 /* (0x010A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
417     /**
418      * Exterior dimensions of vehicle.
419      *
420      *  int32Values[0] = height
421      *  int32Values[1] = length
422      *  int32Values[2] = width
423      *  int32Values[3] = width including mirrors
424      *  int32Values[4] = wheel base
425      *  int32Values[5] = track width front
426      *  int32Values[6] = track width rear
427      *  int32Values[7] = curb to curb turning radius
428      *
429      * @change_mode VehiclePropertyChangeMode:STATIC
430      * @access VehiclePropertyAccess:READ
431      * @unit VehicleUnit:MILLIMETER
432      */
433     INFO_EXTERIOR_DIMENSIONS = 289472779 /* (0x010B | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
434     /**
435      * Multiple EV port locations
436      *
437      * Implement this property if the vehicle has multiple EV ports.
438      * Port locations are defined in PortLocationType.
439      * For example, a car has one port in front left and one port in rear left:
440      *   int32Values[0] = PortLocationType::FRONT_LEFT
441      *   int32Values[0] = PortLocationType::REAR_LEFT
442      *
443      * @change_mode VehiclePropertyChangeMode:STATIC
444      * @access VehiclePropertyAccess:READ
445      * @data_enum PortLocationType
446      */
447     INFO_MULTI_EV_PORT_LOCATIONS = 289472780 /* (0x010C | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
448     /**
449      * Current odometer value of the vehicle
450      *
451      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
452      * @access VehiclePropertyAccess:READ
453      * @unit VehicleUnit:KILOMETER
454      */
455     PERF_ODOMETER = 291504644 /* (0x0204 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
456     /**
457      * Speed of the vehicle
458      *
459      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
460      * @access VehiclePropertyAccess:READ
461      * @unit VehicleUnit:METER_PER_SEC
462      */
463     PERF_VEHICLE_SPEED = 291504647 /* (0x0207 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
464     /**
465      * Speed of the vehicle for displays
466      *
467      * Some cars display a slightly slower speed than the actual speed.  This is
468      * usually displayed on the speedometer.
469      *
470      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
471      * @access VehiclePropertyAccess:READ
472      * @unit VehicleUnit:METER_PER_SEC
473      */
474     PERF_VEHICLE_SPEED_DISPLAY = 291504648 /* (0x0208 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
475     /**
476      * Front bicycle model steering angle for vehicle
477      *
478      * Angle is in degrees.  Left is negative.
479      *
480      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
481      * @access VehiclePropertyAccess:READ
482      * @unit VehicleUnit:DEGREES
483      */
484     PERF_STEERING_ANGLE = 291504649 /* (0x0209 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
485     /**
486      * Rear bicycle model steering angle for vehicle
487      *
488      * Angle is in degrees.  Left is negative.
489      *
490      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
491      * @access VehiclePropertyAccess:READ
492      * @unit VehicleUnit:DEGREES
493      */
494     PERF_REAR_STEERING_ANGLE = 291504656 /* (0x0210 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
495     /**
496      * Temperature of engine coolant
497      *
498      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
499      * @access VehiclePropertyAccess:READ
500      * @unit VehicleUnit:CELSIUS
501      */
502     ENGINE_COOLANT_TEMP = 291504897 /* (0x0301 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
503     /**
504      * Engine oil level
505      *
506      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
507      * @access VehiclePropertyAccess:READ
508      * @data_enum VehicleOilLevel
509      */
510     ENGINE_OIL_LEVEL = 289407747 /* (0x0303 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
511     /**
512      * Temperature of engine oil
513      *
514      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
515      * @access VehiclePropertyAccess:READ
516      * @unit VehicleUnit:CELSIUS
517      */
518     ENGINE_OIL_TEMP = 291504900 /* (0x0304 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
519     /**
520      * Engine rpm
521      *
522      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
523      * @access VehiclePropertyAccess:READ
524      * @unit VehicleUnit:RPM
525      */
526     ENGINE_RPM = 291504901 /* (0x0305 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
527     /**
528      * Reports wheel ticks
529      *
530      * The first element in the vector is a reset count.  A reset indicates
531      * previous tick counts are not comparable with this and future ones.  Some
532      * sort of discontinuity in tick counting has occurred.
533      *
534      * The next four elements represent ticks for individual wheels in the
535      * following order: front left, front right, rear right, rear left.  All
536      * tick counts are cumulative.  Tick counts increment when the vehicle
537      * moves forward, and decrement when vehicles moves in reverse.  The ticks
538      * should be reset to 0 when the vehicle is started by the user.
539      *
540      *  int64Values[0] = reset count
541      *  int64Values[1] = front left ticks
542      *  int64Values[2] = front right ticks
543      *  int64Values[3] = rear right ticks
544      *  int64Values[4] = rear left ticks
545      *
546      * configArray is used to indicate the micrometers-per-wheel-tick value and
547      * which wheels are supported.  configArray is set as follows:
548      *
549      *  configArray[0], bits [0:3] = supported wheels.  Uses enum Wheel.
550      *  configArray[1] = micrometers per front left wheel tick
551      *  configArray[2] = micrometers per front right wheel tick
552      *  configArray[3] = micrometers per rear right wheel tick
553      *  configArray[4] = micrometers per rear left wheel tick
554      *
555      * NOTE:  If a wheel is not supported, its value shall always be set to 0.
556      *
557      * VehiclePropValue.timestamp must be correctly filled in.
558      *
559      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
560      * @access VehiclePropertyAccess:READ
561      */
562     WHEEL_TICK = 290521862 /* (0x0306 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT64_VEC | VehicleArea:GLOBAL) */,
563     /**
564      * Fuel remaining in the the vehicle, in milliliters
565      *
566      * Value may not exceed INFO_FUEL_CAPACITY
567      *
568      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
569      * @access VehiclePropertyAccess:READ
570      * @unit VehicleUnit:MILLILITER
571      */
572     FUEL_LEVEL = 291504903 /* (0x0307 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
573     /**
574      * Fuel door open
575      *
576      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
577      * @access VehiclePropertyAccess:READ_WRITE
578      */
579     FUEL_DOOR_OPEN = 287310600 /* (0x0308 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
580     /**
581      * EV battery level in WH, if EV or hybrid
582      *
583      * Value may not exceed INFO_EV_BATTERY_CAPACITY
584      *
585      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
586      * @access VehiclePropertyAccess:READ
587      * @unit VehicleUnit:WH
588      */
589     EV_BATTERY_LEVEL = 291504905 /* (0x0309 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
590     /**
591      * EV charge port open
592      *
593      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
594      * @access VehiclePropertyAccess:READ_WRITE
595      */
596     EV_CHARGE_PORT_OPEN = 287310602 /* (0x030A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
597     /**
598      * EV charge port connected
599      *
600      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
601      * @access VehiclePropertyAccess:READ
602      */
603     EV_CHARGE_PORT_CONNECTED = 287310603 /* (0x030B | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
604     /**
605      * EV instantaneous charge rate in milliwatts
606      *
607      * Positive value indicates battery is being charged.
608      * Negative value indicates battery being discharged.
609      *
610      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
611      * @access VehiclePropertyAccess:READ
612      * @unit VehicleUnit:MW
613      */
614     EV_BATTERY_INSTANTANEOUS_CHARGE_RATE = 291504908 /* (0x030C | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
615     /**
616      * Range remaining
617      *
618      * Meters remaining of fuel and charge.  Range remaining shall account for
619      * all energy sources in a vehicle.  For example, a hybrid car's range will
620      * be the sum of the ranges based on fuel and battery.
621      *
622      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
623      * @access VehiclePropertyAccess:READ_WRITE
624      * @unit VehicleUnit:METER
625      */
626     RANGE_REMAINING = 291504904 /* (0x0308 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
627     /**
628      * Tire pressure
629      *
630      * min/max value indicates tire pressure sensor range.  Each tire will have a separate min/max
631      * value denoted by its areaConfig.areaId.
632      *
633      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
634      * @access VehiclePropertyAccess:READ
635      * @unit VehicleUnit:KILOPASCAL
636      */
637     TIRE_PRESSURE = 392168201 /* (0x0309 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:WHEEL) */,
638     /**
639      * Currently selected gear
640      *
641      * This is the gear selected by the user.
642      *
643      * Values in the config data must represent the list of supported gears
644      * for this vehicle.  For example, config data for an automatic transmission
645      * must contain {GEAR_NEUTRAL, GEAR_REVERSE, GEAR_PARK, GEAR_DRIVE,
646      * GEAR_1, GEAR_2,...} and for manual transmission the list must be
647      * {GEAR_NEUTRAL, GEAR_REVERSE, GEAR_1, GEAR_2,...}
648      *
649      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
650      * @access VehiclePropertyAccess:READ
651      * @data_enum VehicleGear
652      */
653     GEAR_SELECTION = 289408000 /* (0x0400 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
654     /**
655      * Current gear. In non-manual case, selected gear may not
656      * match the current gear. For example, if the selected gear is GEAR_DRIVE,
657      * the current gear will be one of GEAR_1, GEAR_2 etc, which reflects
658      * the actual gear the transmission is currently running in.
659      *
660      * Values in the config data must represent the list of supported gears
661      * for this vehicle.  For example, config data for an automatic transmission
662      * must contain {GEAR_NEUTRAL, GEAR_REVERSE, GEAR_PARK, GEAR_1, GEAR_2,...}
663      * and for manual transmission the list must be
664      * {GEAR_NEUTRAL, GEAR_REVERSE, GEAR_1, GEAR_2,...}. This list need not be the
665      * same as that of the supported gears reported in GEAR_SELECTION.
666      *
667      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
668      * @access VehiclePropertyAccess:READ
669      * @data_enum VehicleGear
670      */
671     CURRENT_GEAR = 289408001 /* (0x0401 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
672     /**
673      * Parking brake state.
674      *
675      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
676      * @access VehiclePropertyAccess:READ_WRITE
677      */
678     PARKING_BRAKE_ON = 287310850 /* (0x0402 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
679     /**
680      * Auto-apply parking brake.
681      *
682      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
683      * @access VehiclePropertyAccess:READ_WRITE
684      */
685     PARKING_BRAKE_AUTO_APPLY = 287310851 /* (0x0403 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
686     /**
687      * Warning for fuel low level.
688      *
689      * This property corresponds to the low fuel warning on the dashboard.
690      * Once FUEL_LEVEL_LOW is set, it should not be cleared until more fuel is
691      * added to the vehicle.  This property may take into account all fuel
692      * sources for a vehicle - for example:
693      *
694      *   For a gas powered vehicle, this property is based soley on gas level.
695      *   For a battery powered vehicle, this property is based solely on battery level.
696      *   For a hybrid vehicle, this property may be based on the combination of gas and battery
697      *      levels, at the OEM's discretion.
698      *
699      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
700      * @access VehiclePropertyAccess:READ
701      */
702     FUEL_LEVEL_LOW = 287310853 /* (0x0405 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
703     /**
704      * Night mode
705      *
706      * True indicates that the night mode sensor has detected that the car cabin environment has
707      * low light. The platform could use this, for example, to enable appropriate UI for
708      * better viewing in dark or low light environments.
709      *
710      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
711      * @access VehiclePropertyAccess:READ
712      */
713     NIGHT_MODE = 287310855 /* (0x0407 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
714     /**
715      * State of the vehicles turn signals
716      *
717      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
718      * @access VehiclePropertyAccess:READ
719      * @data_enum VehicleTurnSignal
720      */
721     TURN_SIGNAL_STATE = 289408008 /* (0x0408 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
722     /**
723      * Represents ignition state
724      *
725      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
726      * @access VehiclePropertyAccess:READ
727      * @data_enum VehicleIgnitionState
728      */
729     IGNITION_STATE = 289408009 /* (0x0409 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
730     /**
731      * ABS is active
732      *
733      * Set to true when ABS is active.  Reset to false when ABS is off.  This
734      * property may be intermittently set (pulsing) based on the real-time
735      * state of the ABS system.
736      *
737      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
738      * @access VehiclePropertyAccess:READ
739      */
740     ABS_ACTIVE = 287310858 /* (0x040A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
741     /**
742      * Traction Control is active
743      *
744      * Set to true when traction control (TC) is active.  Reset to false when
745      * TC is off.  This property may be intermittently set (pulsing) based on
746      * the real-time state of the TC system.
747      *
748      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
749      * @access VehiclePropertyAccess:READ
750      */
751     TRACTION_CONTROL_ACTIVE = 287310859 /* (0x040B | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
752     /*
753      * HVAC Properties
754      *
755      * Additional rules for mapping a zoned HVAC property to AreaIDs:
756      *  - Every seat in VehicleAreaSeat that is available in the car, must be
757      *    part of an AreaID in the AreaID array.
758      *
759      * Example 1: A car has two front seats (ROW_1_LEFT, ROW_1_RIGHT) and three
760      *  back seats (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). There are two
761      *  temperature control units -- driver side and passenger side.
762      *   - A valid mapping set of AreaIDs for HVAC_TEMPERATURE_SET would be a
763      *     two element array:
764      *      - ROW_1_LEFT  | ROW_2_LEFT
765      *      - ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
766      *   - An alternative mapping for the same hardware configuration would be:
767      *      - ROW_1_LEFT  | ROW_2_CENTER | ROW_2_LEFT
768      *      - ROW_1_RIGHT | ROW_2_RIGHT
769      *  The temperature controllers are assigned to the seats which they
770      *  "most influence", but every seat must be included exactly once. The
771      *  assignment of the center rear seat to the left or right AreaID may seem
772      *  arbitrary, but the inclusion of every seat in exactly one AreaID ensures
773      *  that the seats in the car are all expressed and that a "reasonable" way
774      *  to affect each seat is available.
775      *
776      * Example 2: A car has three seat rows with two seats in the front row (ROW_1_LEFT,
777      *  ROW_1_RIGHT) and three seats in the second (ROW_2_LEFT, ROW_2_CENTER,
778      *  ROW_2_RIGHT) and third rows (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). There
779      *  are three temperature control units -- driver side, passenger side, and rear.
780      *   - A reasonable way to map HVAC_TEMPERATURE_SET to AreaIDs is a three
781      *     element array:
782      *     - ROW_1_LEFT
783      *     - ROW_1_RIGHT
784      *     - ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
785      *
786      *
787      * Fan speed setting
788      *
789      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
790      * @access VehiclePropertyAccess:READ_WRITE
791      */
792     HVAC_FAN_SPEED = 356517120 /* (0x0500 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
793     /**
794      * Fan direction setting
795      *
796      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
797      * @access VehiclePropertyAccess:READ_WRITE
798      * @data_enum VehicleHvacFanDirection
799      */
800     HVAC_FAN_DIRECTION = 356517121 /* (0x0501 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
801     /**
802      * HVAC current temperature.
803      *
804      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
805      * @access VehiclePropertyAccess:READ
806      * @unit VehicleUnit:CELSIUS
807      */
808     HVAC_TEMPERATURE_CURRENT = 358614274 /* (0x0502 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:SEAT) */,
809     /**
810      * HVAC, target temperature set.
811      *
812      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
813      * @access VehiclePropertyAccess:READ_WRITE
814      * @unit VehicleUnit:CELSIUS
815      */
816     HVAC_TEMPERATURE_SET = 358614275 /* (0x0503 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:SEAT) */,
817     /**
818      * Fan-based defrost for designated window.
819      *
820      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
821      * @access VehiclePropertyAccess:READ_WRITE
822      */
823     HVAC_DEFROSTER = 320865540 /* (0x0504 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:WINDOW) */,
824     /**
825      * On/off AC for designated areaId
826      *
827      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
828      * @access VehiclePropertyAccess:READ_WRITE
829      * @config_flags Supported areaIds
830      */
831     HVAC_AC_ON = 354419973 /* (0x0505 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
832     /**
833      * On/off max AC
834      *
835      * When MAX AC is on, the ECU may adjust the vent position, fan speed,
836      * temperature, etc as necessary to cool the vehicle as quickly as possible.
837      * Any parameters modified as a side effect of turning on/off the MAX AC
838      * parameter shall generate onPropertyEvent() callbacks to the VHAL.
839      *
840      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
841      * @access VehiclePropertyAccess:READ_WRITE
842      */
843     HVAC_MAX_AC_ON = 354419974 /* (0x0506 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
844     /**
845      * On/off max defrost
846      *
847      * When MAX DEFROST is on, the ECU may adjust the vent position, fan speed,
848      * temperature, etc as necessary to defrost the windows as quickly as
849      * possible.  Any parameters modified as a side effect of turning on/off
850      * the MAX DEFROST parameter shall generate onPropertyEvent() callbacks to
851      * the VHAL.
852      *
853      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
854      * @access VehiclePropertyAccess:READ_WRITE
855      */
856     HVAC_MAX_DEFROST_ON = 354419975 /* (0x0507 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
857     /**
858      * Recirculation on/off
859      *
860      * Controls the supply of exterior air to the cabin.  Recirc “on” means the
861      * majority of the airflow into the cabin is originating in the cabin.
862      * Recirc “off” means the majority of the airflow into the cabin is coming
863      * from outside the car.
864      *
865      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
866      * @access VehiclePropertyAccess:READ_WRITE
867      */
868     HVAC_RECIRC_ON = 354419976 /* (0x0508 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
869     /**
870      * Enable temperature coupling between areas.
871      *
872      * The AreaIDs for HVAC_DUAL_ON property shall contain a combination of
873      * HVAC_TEMPERATURE_SET AreaIDs that can be coupled together. If
874      * HVAC_TEMPERATURE_SET is mapped to AreaIDs [a_1, a_2, ..., a_n], and if
875      * HVAC_DUAL_ON can be enabled to couple a_i and a_j, then HVAC_DUAL_ON
876      * property must be mapped to [a_i | a_j]. Further, if a_k and a_l can also
877      * be coupled together separately then HVAC_DUAL_ON must be mapped to
878      * [a_i | a_j, a_k | a_l].
879      *
880      * Example: A car has two front seats (ROW_1_LEFT, ROW_1_RIGHT) and three
881      *  back seats (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). There are two
882      *  temperature control units -- driver side and passenger side -- which can
883      *  be optionally synchronized. This may be expressed in the AreaIDs this way:
884      *  - HVAC_TEMPERATURE_SET->[ROW_1_LEFT | ROW_2_LEFT, ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT]
885      *  - HVAC_DUAL_ON->[ROW_1_LEFT | ROW_2_LEFT | ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT]
886      *
887      * When the property is enabled, the ECU must synchronize the temperature
888      * for the affected areas. Any parameters modified as a side effect
889      * of turning on/off the DUAL_ON parameter shall generate
890      * onPropertyEvent() callbacks to the VHAL. In addition, if setting
891      * a temperature (i.e. driver's temperature) changes another temperature
892      * (i.e. front passenger's temperature), then the appropriate
893      * onPropertyEvent() callbacks must be generated.  If a user changes a
894      * temperature that breaks the coupling (e.g. setting the passenger
895      * temperature independently) then the VHAL must send the appropriate
896      * onPropertyEvent() callbacks (i.e. HVAC_DUAL_ON = false,
897      * HVAC_TEMPERATURE_SET[AreaID] = xxx, etc).
898      *
899      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
900      * @access VehiclePropertyAccess:READ_WRITE
901      */
902     HVAC_DUAL_ON = 354419977 /* (0x0509 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
903     /**
904      * On/off automatic mode
905      *
906      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
907      * @access VehiclePropertyAccess:READ_WRITE
908      */
909     HVAC_AUTO_ON = 354419978 /* (0x050A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
910     /**
911      * Seat heating/cooling
912      *
913      * Negative values indicate cooling.
914      * 0 indicates off.
915      * Positive values indicate heating.
916      *
917      * Some vehicles may have multiple levels of heating and cooling. The
918      * min/max range defines the allowable range and number of steps in each
919      * direction.
920      *
921      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
922      * @access VehiclePropertyAccess:READ_WRITE
923      */
924     HVAC_SEAT_TEMPERATURE = 356517131 /* (0x050B | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
925     /**
926      * Side Mirror Heat
927      *
928      * Increasing values denote higher heating levels for side mirrors.
929      * The Max value in the config data represents the highest heating level.
930      * The Min value in the config data MUST be zero and indicates no heating.
931      *
932      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
933      * @access VehiclePropertyAccess:READ_WRITE
934      */
935     HVAC_SIDE_MIRROR_HEAT = 339739916 /* (0x050C | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:MIRROR) */,
936     /**
937      * Steering Wheel Heating/Cooling
938      *
939      * Sets the amount of heating/cooling for the steering wheel
940      * config data Min and Max MUST be set appropriately.
941      * Positive value indicates heating.
942      * Negative value indicates cooling.
943      * 0 indicates temperature control is off.
944      *
945      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
946      * @access VehiclePropertyAccess:READ_WRITE
947      */
948     HVAC_STEERING_WHEEL_HEAT = 289408269 /* (0x050D | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
949     /**
950      * Temperature units for display
951      *
952      * Indicates whether the vehicle is displaying temperature to the user as
953      * Celsius or Fahrenheit.
954      * VehiclePropConfig.configArray is used to indicate the supported temperature display units.
955      * For example: configArray[0] = CELSIUS
956      *              configArray[1] = FAHRENHEIT
957      *
958      * This parameter MAY be used for displaying any HVAC temperature in the system.
959      * Values must be one of VehicleUnit::CELSIUS or VehicleUnit::FAHRENHEIT
960      * Note that internally, all temperatures are represented in floating point Celsius.
961      *
962      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
963      * @access VehiclePropertyAccess:READ_WRITE
964      * @data_enum VehicleUnit
965      */
966     HVAC_TEMPERATURE_DISPLAY_UNITS = 289408270 /* (0x050E | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
967     /**
968      * Actual fan speed
969      *
970      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
971      * @access VehiclePropertyAccess:READ
972      */
973     HVAC_ACTUAL_FAN_SPEED_RPM = 356517135 /* (0x050F | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
974     /**
975      * Represents global power state for HVAC. Setting this property to false
976      * MAY mark some properties that control individual HVAC features/subsystems
977      * to UNAVAILABLE state. Setting this property to true MAY mark some
978      * properties that control individual HVAC features/subsystems to AVAILABLE
979      * state (unless any/all of them are UNAVAILABLE on their own individual
980      * merits).
981      *
982      * [Definition] HvacPower_DependentProperties: Properties that need HVAC to be
983      *   powered on in order to enable their functionality. For example, in some cars,
984      *   in order to turn on the AC, HVAC must be powered on first.
985      *
986      * HvacPower_DependentProperties list must be set in the
987      * VehiclePropConfig.configArray. HvacPower_DependentProperties must only contain
988      * properties that are associated with VehicleArea:SEAT. Properties that are not
989      * associated with VehicleArea:SEAT, for example, HVAC_DEFROSTER, must never
990      * depend on HVAC_POWER_ON property and must never be part of
991      * HvacPower_DependentProperties list.
992      *
993      * AreaID mapping for HVAC_POWER_ON property must contain all AreaIDs that
994      * HvacPower_DependentProperties are mapped to.
995      *
996      * Example 1: A car has two front seats (ROW_1_LEFT, ROW_1_RIGHT) and three back
997      *  seats (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). If the HVAC features (AC,
998      *  Temperature etc.) throughout the car are dependent on a single HVAC power
999      *  controller then HVAC_POWER_ON must be mapped to
1000      *  [ROW_1_LEFT | ROW_1_RIGHT | ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT].
1001      *
1002      * Example 2: A car has two seats in the front row (ROW_1_LEFT, ROW_1_RIGHT) and
1003      *   three seats in the second (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) and third
1004      *   rows (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT). If the car has temperature
1005      *   controllers in the front row which can operate entirely independently of
1006      *   temperature controllers in the back of the vehicle, then HVAC_POWER_ON
1007      *   must be mapped to a two element array:
1008      *   - ROW_1_LEFT | ROW_1_RIGHT
1009      *   - ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
1010      *
1011      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1012      * @access VehiclePropertyAccess:READ_WRITE
1013      */
1014     HVAC_POWER_ON = 354419984 /* (0x0510 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
1015     /**
1016      * Fan Positions Available
1017      *
1018      * This is a bit mask of fan positions available for the zone.  Each
1019      * available fan direction is denoted by a separate entry in the vector.  A
1020      * fan direction may have multiple bits from vehicle_hvac_fan_direction set.
1021      * For instance, a typical car may have the following fan positions:
1022      *   - FAN_DIRECTION_FACE (0x1)
1023      *   - FAN_DIRECTION_FLOOR (0x2)
1024      *   - FAN_DIRECTION_FACE | FAN_DIRECTION_FLOOR (0x3)
1025      *   - FAN_DIRECTION_DEFROST (0x4)
1026      *   - FAN_DIRECTION_FLOOR | FAN_DIRECTION_DEFROST (0x6)
1027      *
1028      * @change_mode VehiclePropertyChangeMode:STATIC
1029      * @access VehiclePropertyAccess:READ
1030      * @data_enum VehicleHvacFanDirection
1031      */
1032     HVAC_FAN_DIRECTION_AVAILABLE = 356582673 /* (0x0511 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:SEAT) */,
1033     /**
1034      * Automatic recirculation on/off
1035      *
1036      * When automatic recirculation is ON, the HVAC system may automatically
1037      * switch to recirculation mode if the vehicle detects poor incoming air
1038      * quality.
1039      *
1040      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1041      * @access VehiclePropertyAccess:READ_WRITE
1042      */
1043     HVAC_AUTO_RECIRC_ON = 354419986 /* (0x0512 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
1044     /**
1045      * Seat ventilation
1046      *
1047      * 0 indicates off.
1048      * Positive values indicates ventilation level.
1049      *
1050      * Used by HVAC apps and Assistant to enable, change, or read state of seat
1051      * ventilation.  This is different than seating cooling. It can be on at the
1052      * same time as cooling, or not.
1053      *
1054      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1055      * @access VehiclePropertyAccess:READ_WRITE
1056      */
1057     HVAC_SEAT_VENTILATION = 356517139 /* (0x0513 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1058     /**
1059      * Electric defrosters' status
1060      *
1061      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1062      * @access VehiclePropertyAccess:READ_WRITE
1063      */
1064     HVAC_ELECTRIC_DEFROSTER_ON = 320865556 /* (0x0514 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:WINDOW) */,
1065     /**
1066      * Distance units for display
1067      *
1068      * Indicates which units the car is using to display distances to the user. Eg. Mile, Meter
1069      * Kilometer.
1070      *
1071      * Distance units are defined in VehicleUnit.
1072      * VehiclePropConfig.configArray is used to indicate the supported distance display units.
1073      * For example: configArray[0] = METER
1074      *              configArray[1] = KILOMETER
1075      *              configArray[2] = MILE
1076      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1077      * @access VehiclePropertyAccess:READ_WRITE
1078      * @data_enum VehicleUnit
1079      */
1080     DISTANCE_DISPLAY_UNITS = 289408512 /* (0x0600 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1081     /**
1082      * Fuel volume units for display
1083      *
1084      * Indicates which units the car is using to display fuel volume to the user. Eg. Liter or
1085      * Gallon.
1086      *
1087      * VehiclePropConfig.configArray is used to indicate the supported fuel volume display units.
1088      * Volume units are defined in VehicleUnit.
1089      * For example: configArray[0] = LITER
1090      *              configArray[1] = GALLON
1091      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1092      * @access VehiclePropertyAccess:READ_WRITE
1093      * @data_enum VehicleUnit
1094      */
1095     FUEL_VOLUME_DISPLAY_UNITS = 289408513 /* (0x0601 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1096     /**
1097      * Tire pressure units for display
1098      *
1099      * Indicates which units the car is using to display tire pressure to the user. Eg. PSI, Bar or
1100      * Kilopascal.
1101      *
1102      * VehiclePropConfig.configArray is used to indicate the supported pressure display units.
1103      * Pressure units are defined in VehicleUnit.
1104      * For example: configArray[0] = KILOPASCAL
1105      *              configArray[1] = PSI
1106      *              configArray[2] = BAR
1107      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1108      * @access VehiclePropertyAccess:READ_WRITE
1109      * @data_enum VehicleUnit
1110      */
1111     TIRE_PRESSURE_DISPLAY_UNITS = 289408514 /* (0x0602 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1112     /**
1113      * EV battery units for display
1114      *
1115      * Indicates which units the car is using to display EV battery information to the user. Eg.
1116      * watt-hours(Wh), kilowatt-hours(kWh) or ampere-hours(Ah).
1117      *
1118      * VehiclePropConfig.configArray is used to indicate the supported electrical energy units.
1119      * Electrical energy units are defined in VehicleUnit.
1120      * For example: configArray[0] = WATT_HOUR
1121      *              configArray[1] = AMPERE_HOURS
1122      *              configArray[2] = KILOWATT_HOUR
1123      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1124      * @access VehiclePropertyAccess:READ_WRITE
1125      * @data_enum VehicleUnit
1126      */
1127     EV_BATTERY_DISPLAY_UNITS = 289408515 /* (0x0603 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1128     /**
1129      * Fuel consumption units for display
1130      *
1131      * Indicates type of units the car is using to display fuel consumption information to user
1132      * True indicates units are distance over volume such as MPG.
1133      * False indicates units are volume over distance such as L/100KM.
1134      *
1135      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1136      * @access VehiclePropertyAccess:READ_WRITE
1137      */
1138     FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME = 287311364 /* (0x0604 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
1139     /**
1140      * Speed units for display
1141      *
1142      * Indicates type of units the car is using to display speed to user. Eg. m/s, km/h, or mph.
1143      *
1144      * VehiclePropConfig.configArray is used to indicate the supported speed display units.
1145      * Pressure units are defined in VehicleUnit.
1146      * For example: configArray[0] = METER_PER_SEC
1147      *              configArray[1] = MILES_PER_HOUR
1148      *              configArray[2] = KILOMETERS_PER_HOUR
1149      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1150      * @access VehiclePropertyAccess:READ_WRITE
1151      */
1152     VEHICLE_SPEED_DISPLAY_UNITS = 289408517 /* (0x0605 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1153     /**
1154      * Outside temperature
1155      *
1156      * @change_mode VehiclePropertyChangeMode:CONTINUOUS
1157      * @access VehiclePropertyAccess:READ
1158      * @unit VehicleUnit:CELSIUS
1159      */
1160     ENV_OUTSIDE_TEMPERATURE = 291505923 /* (0x0703 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:FLOAT | VehicleArea:GLOBAL) */,
1161     /**
1162      * Property to control power state of application processor
1163      *
1164      * It is assumed that AP's power state is controlled by a separate power
1165      * controller.
1166      *
1167      * For configuration information, VehiclePropConfig.configArray can have bit flag combining
1168      * values in VehicleApPowerStateConfigFlag.
1169      *
1170      *   int32Values[0] : VehicleApPowerStateReq enum value
1171      *   int32Values[1] : additional parameter relevant for each state,
1172      *                    0 if not used.
1173      *
1174      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1175      * @access VehiclePropertyAccess:READ
1176      */
1177     AP_POWER_STATE_REQ = 289475072 /* (0x0A00 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
1178     /**
1179      * Property to report power state of application processor
1180      *
1181      * It is assumed that AP's power state is controller by separate power
1182      * controller.
1183      *
1184      *   int32Values[0] : VehicleApPowerStateReport enum value
1185      *   int32Values[1] : Time in ms to wake up, if necessary.  Otherwise 0.
1186      *
1187      *
1188      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1189      * @access VehiclePropertyAccess:READ_WRITE
1190      */
1191     AP_POWER_STATE_REPORT = 289475073 /* (0x0A01 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
1192     /**
1193      * Property to report bootup reason for the current power on. This is a
1194      * static property that will not change for the whole duration until power
1195      * off. For example, even if user presses power on button after automatic
1196      * power on with door unlock, bootup reason must stay with
1197      * VehicleApPowerBootupReason#USER_UNLOCK.
1198      *
1199      * int32Values[0] must be VehicleApPowerBootupReason.
1200      *
1201      * @change_mode VehiclePropertyChangeMode:STATIC
1202      * @access VehiclePropertyAccess:READ
1203      */
1204     AP_POWER_BOOTUP_REASON = 289409538 /* (0x0A02 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1205     /**
1206      * Property to represent brightness of the display. Some cars have single
1207      * control for the brightness of all displays and this property is to share
1208      * change in that control.
1209      *
1210      * If this is writable, android side can set this value when user changes
1211      * display brightness from Settings. If this is read only, user may still
1212      * change display brightness from Settings, but that must not be reflected
1213      * to other displays.
1214      *
1215      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1216      * @access VehiclePropertyAccess:READ_WRITE
1217      */
1218     DISPLAY_BRIGHTNESS = 289409539 /* (0x0A03 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1219     /**
1220      * Property to feed H/W input events to android
1221      *
1222      * int32Values[0] : action defined by VehicleHwKeyInputAction
1223      * int32Values[1] : key code, must use standard android key code
1224      * int32Values[2] : target display defined in VehicleDisplay. Events not
1225      *                  tied to specific display must be sent to
1226      *                  VehicleDisplay#MAIN.
1227      * int32Values[3] : [optional] Number of ticks. The value must be equal or
1228      *                  greater than 1. When omitted, Android will default to 1.
1229      *
1230      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1231      * @access VehiclePropertyAccess:READ
1232      * @config_flags
1233      */
1234     HW_KEY_INPUT = 289475088 /* (0x0A10 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
1235     /**
1236      * Property to feed H/W rotary events to android
1237      *
1238      * int32Values[0] : RotaryInputType identifying which rotary knob rotated
1239      * int32Values[1] : number of detents (clicks), positive for clockwise,
1240      *                  negative for counterclockwise
1241      * int32Values[2] : target display defined in VehicleDisplay. Events not
1242      *                  tied to specific display must be sent to
1243      *                  VehicleDisplay#MAIN.
1244      * int32values[3 .. 3 + abs(number of detents) - 2]:
1245      *                  nanosecond deltas between pairs of consecutive detents,
1246      *                  if the number of detents is > 1 or < -1
1247      *
1248      * VehiclePropValue.timestamp: when the rotation occurred. If the number of
1249      *                             detents is > 1 or < -1, this is when the
1250      *                             first detent of rotation occurred.
1251      *
1252      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1253      * @data_enum RotaryInputType
1254      * @access VehiclePropertyAccess:READ
1255      */
1256     HW_ROTARY_INPUT = 289475104 /* (0x0A20 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32_VEC | VehicleArea:GLOBAL) */,
1257     /**
1258      * Most Car Cabin properties have both a POSition and MOVE parameter.  These
1259      * are used to control the various movements for seats, doors, and windows
1260      * in a vehicle.
1261      *
1262      * A POS parameter allows the user to set the absolution position.  For
1263      * instance, for a door, 0 indicates fully closed and max value indicates
1264      * fully open.  Thus, a value halfway between min and max must indicate
1265      * the door is halfway open.
1266      *
1267      * A MOVE parameter moves the device in a particular direction.  The sign
1268      * indicates direction, and the magnitude indicates speed (if multiple
1269      * speeds are available).  For a door, a move of -1 will close the door, and
1270      * a move of +1 will open it.  Once a door reaches the limit of open/close,
1271      * the door should automatically stop moving.  The user must NOT need to
1272      * send a MOVE(0) command to stop the door at the end of its range.
1273      *
1274      *
1275      * Door position
1276      *
1277      * This is an integer in case a door may be set to a particular position.
1278      * Max value indicates fully open, min value (0) indicates fully closed.
1279      *
1280      * Some vehicles (minivans) can open the door electronically.  Hence, the
1281      * ability to write this property.
1282      *
1283      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1284      * @access VehiclePropertyAccess:READ_WRITE
1285      */
1286     DOOR_POS = 373295872 /* (0x0B00 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:DOOR) */,
1287     /**
1288      * Door move
1289      *
1290      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1291      * @access VehiclePropertyAccess:READ_WRITE
1292      */
1293     DOOR_MOVE = 373295873 /* (0x0B01 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:DOOR) */,
1294     /**
1295      * Door lock
1296      *
1297      * 'true' indicates door is locked
1298      *
1299      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1300      * @access VehiclePropertyAccess:READ_WRITE
1301      */
1302     DOOR_LOCK = 371198722 /* (0x0B02 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:DOOR) */,
1303     /**
1304      * Mirror Z Position
1305      *
1306      * Positive value indicates tilt upwards, negative value is downwards
1307      *
1308      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1309      * @access VehiclePropertyAccess:READ_WRITE
1310      */
1311     MIRROR_Z_POS = 339741504 /* (0x0B40 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:MIRROR) */,
1312     /**
1313      * Mirror Z Move
1314      *
1315      * Positive value indicates tilt upwards, negative value is downwards
1316      *
1317      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1318      * @access VehiclePropertyAccess:READ_WRITE
1319      */
1320     MIRROR_Z_MOVE = 339741505 /* (0x0B41 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:MIRROR) */,
1321     /**
1322      * Mirror Y Position
1323      *
1324      * Positive value indicate tilt right, negative value is left
1325      *
1326      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1327      * @access VehiclePropertyAccess:READ_WRITE
1328      */
1329     MIRROR_Y_POS = 339741506 /* (0x0B42 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:MIRROR) */,
1330     /**
1331      * Mirror Y Move
1332      *
1333      * Positive value indicate tilt right, negative value is left
1334      *
1335      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1336      * @access VehiclePropertyAccess:READ_WRITE
1337      */
1338     MIRROR_Y_MOVE = 339741507 /* (0x0B43 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:MIRROR) */,
1339     /**
1340      * Mirror Lock
1341      *
1342      * True indicates mirror positions are locked and not changeable
1343      *
1344      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1345      * @access VehiclePropertyAccess:READ_WRITE
1346      */
1347     MIRROR_LOCK = 287312708 /* (0x0B44 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
1348     /**
1349      * Mirror Fold
1350      *
1351      * True indicates mirrors are folded
1352      *
1353      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1354      * @access VehiclePropertyAccess:READ_WRITE
1355      */
1356     MIRROR_FOLD = 287312709 /* (0x0B45 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
1357     /**
1358      * Seat memory select
1359      *
1360      * This parameter selects the memory preset to use to select the seat
1361      * position. The minValue is always 0, and the maxValue determines the
1362      * number of seat positions available.
1363      *
1364      * For instance, if the driver's seat has 3 memory presets, the maxValue
1365      * will be 3. When the user wants to select a preset, the desired preset
1366      * number (1, 2, or 3) is set.
1367      *
1368      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1369      * @access VehiclePropertyAccess:WRITE
1370      */
1371     SEAT_MEMORY_SELECT = 356518784 /* (0x0B80 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1372     /**
1373      * Seat memory set
1374      *
1375      * This setting allows the user to save the current seat position settings
1376      * into the selected preset slot.  The maxValue for each seat position
1377      * must match the maxValue for SEAT_MEMORY_SELECT.
1378      *
1379      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1380      * @access VehiclePropertyAccess:WRITE
1381      */
1382     SEAT_MEMORY_SET = 356518785 /* (0x0B81 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1383     /**
1384      * Seatbelt buckled
1385      *
1386      * True indicates belt is buckled.
1387      *
1388      * Write access indicates automatic seat buckling capabilities.  There are
1389      * no known cars at this time, but you never know...
1390      *
1391      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1392      * @access VehiclePropertyAccess:READ_WRITE
1393      */
1394     SEAT_BELT_BUCKLED = 354421634 /* (0x0B82 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:SEAT) */,
1395     /**
1396      * Seatbelt height position
1397      *
1398      * Adjusts the shoulder belt anchor point.
1399      * Max value indicates highest position
1400      * Min value indicates lowest position
1401      *
1402      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1403      * @access VehiclePropertyAccess:READ_WRITE
1404      */
1405     SEAT_BELT_HEIGHT_POS = 356518787 /* (0x0B83 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1406     /**
1407      * Seatbelt height move
1408      *
1409      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1410      * @access VehiclePropertyAccess:READ_WRITE
1411      */
1412     SEAT_BELT_HEIGHT_MOVE = 356518788 /* (0x0B84 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1413     /**
1414      * Seat fore/aft position
1415      *
1416      * Sets the seat position forward (closer to steering wheel) and backwards.
1417      * Max value indicates closest to wheel, min value indicates most rearward
1418      * position.
1419      *
1420      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1421      * @access VehiclePropertyAccess:READ_WRITE
1422      */
1423     SEAT_FORE_AFT_POS = 356518789 /* (0x0B85 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1424     /**
1425      * Seat fore/aft move
1426      *
1427      * Moves the seat position forward and aft.
1428      *
1429      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1430      * @access VehiclePropertyAccess:READ_WRITE
1431      */
1432     SEAT_FORE_AFT_MOVE = 356518790 /* (0x0B86 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1433     /**
1434      * Seat backrest angle 1 position
1435      *
1436      * Backrest angle 1 is the actuator closest to the bottom of the seat.
1437      * Max value indicates angling forward towards the steering wheel.
1438      * Min value indicates full recline.
1439      *
1440      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1441      * @access VehiclePropertyAccess:READ_WRITE
1442      */
1443     SEAT_BACKREST_ANGLE_1_POS = 356518791 /* (0x0B87 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1444     /**
1445      * Seat backrest angle 1 move
1446      *
1447      * Moves the backrest forward or recline.
1448      *
1449      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1450      * @access VehiclePropertyAccess:READ_WRITE
1451      */
1452     SEAT_BACKREST_ANGLE_1_MOVE = 356518792 /* (0x0B88 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1453     /**
1454      * Seat backrest angle 2 position
1455      *
1456      * Backrest angle 2 is the next actuator up from the bottom of the seat.
1457      * Max value indicates angling forward towards the steering wheel.
1458      * Min value indicates full recline.
1459      *
1460      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1461      * @access VehiclePropertyAccess:READ_WRITE
1462      */
1463     SEAT_BACKREST_ANGLE_2_POS = 356518793 /* (0x0B89 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1464     /**
1465      * Seat backrest angle 2 move
1466      *
1467      * Moves the backrest forward or recline.
1468      *
1469      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1470      * @access VehiclePropertyAccess:READ_WRITE
1471      */
1472     SEAT_BACKREST_ANGLE_2_MOVE = 356518794 /* (0x0B8A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1473     /**
1474      * Seat height position
1475      *
1476      * Sets the seat height.
1477      * Max value indicates highest position.
1478      * Min value indicates lowest position.
1479      *
1480      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1481      * @access VehiclePropertyAccess:READ_WRITE
1482      */
1483     SEAT_HEIGHT_POS = 356518795 /* (0x0B8B | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1484     /**
1485      * Seat height move
1486      *
1487      * Moves the seat height.
1488      *
1489      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1490      * @access VehiclePropertyAccess:READ_WRITE
1491      */
1492     SEAT_HEIGHT_MOVE = 356518796 /* (0x0B8C | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1493     /**
1494      * Seat depth position
1495      *
1496      * Sets the seat depth, distance from back rest to front edge of seat.
1497      * Max value indicates longest depth position.
1498      * Min value indicates shortest position.
1499      *
1500      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1501      * @access VehiclePropertyAccess:READ_WRITE
1502      */
1503     SEAT_DEPTH_POS = 356518797 /* (0x0B8D | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1504     /**
1505      * Seat depth move
1506      *
1507      * Adjusts the seat depth.
1508      *
1509      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1510      * @access VehiclePropertyAccess:READ_WRITE
1511      */
1512     SEAT_DEPTH_MOVE = 356518798 /* (0x0B8E | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1513     /**
1514      * Seat tilt position
1515      *
1516      * Sets the seat tilt.
1517      * Max value indicates front edge of seat higher than back edge.
1518      * Min value indicates front edge of seat lower than back edge.
1519      *
1520      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1521      * @access VehiclePropertyAccess:READ_WRITE
1522      */
1523     SEAT_TILT_POS = 356518799 /* (0x0B8F | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1524     /**
1525      * Seat tilt move
1526      *
1527      * Tilts the seat.
1528      *
1529      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1530      * @access VehiclePropertyAccess:READ_WRITE
1531      */
1532     SEAT_TILT_MOVE = 356518800 /* (0x0B90 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1533     /**
1534      * Lumber fore/aft position
1535      *
1536      * Pushes the lumbar support forward and backwards
1537      * Max value indicates most forward position.
1538      * Min value indicates most rearward position.
1539      *
1540      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1541      * @access VehiclePropertyAccess:READ_WRITE
1542      */
1543     SEAT_LUMBAR_FORE_AFT_POS = 356518801 /* (0x0B91 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1544     /**
1545      * Lumbar fore/aft move
1546      *
1547      * Adjusts the lumbar support.
1548      *
1549      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1550      * @access VehiclePropertyAccess:READ_WRITE
1551      */
1552     SEAT_LUMBAR_FORE_AFT_MOVE = 356518802 /* (0x0B92 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1553     /**
1554      * Lumbar side support position
1555      *
1556      * Sets the amount of lateral lumbar support.
1557      * Max value indicates widest lumbar setting (i.e. least support)
1558      * Min value indicates thinnest lumbar setting.
1559      *
1560      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1561      * @access VehiclePropertyAccess:READ_WRITE
1562      */
1563     SEAT_LUMBAR_SIDE_SUPPORT_POS = 356518803 /* (0x0B93 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1564     /**
1565      * Lumbar side support move
1566      *
1567      * Adjusts the amount of lateral lumbar support.
1568      *
1569      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1570      * @access VehiclePropertyAccess:READ_WRITE
1571      */
1572     SEAT_LUMBAR_SIDE_SUPPORT_MOVE = 356518804 /* (0x0B94 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1573     /**
1574      * Headrest height position
1575      *
1576      * Sets the headrest height.
1577      * Max value indicates tallest setting.
1578      * Min value indicates shortest setting.
1579      *
1580      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1581      * @access VehiclePropertyAccess:READ_WRITE
1582      */
1583     SEAT_HEADREST_HEIGHT_POS = 289409941 /* (0x0B95 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1584     /**
1585      * Headrest height move
1586      *
1587      * Moves the headrest up and down.
1588      *
1589      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1590      * @access VehiclePropertyAccess:READ_WRITE
1591      */
1592     SEAT_HEADREST_HEIGHT_MOVE = 356518806 /* (0x0B96 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1593     /**
1594      * Headrest angle position
1595      *
1596      * Sets the angle of the headrest.
1597      * Max value indicates most upright angle.
1598      * Min value indicates shallowest headrest angle.
1599      *
1600      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1601      * @access VehiclePropertyAccess:READ_WRITE
1602      */
1603     SEAT_HEADREST_ANGLE_POS = 356518807 /* (0x0B97 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1604     /**
1605      * Headrest angle move
1606      *
1607      * Adjusts the angle of the headrest
1608      *
1609      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1610      * @access VehiclePropertyAccess:READ_WRITE
1611      */
1612     SEAT_HEADREST_ANGLE_MOVE = 356518808 /* (0x0B98 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1613     /**
1614      * Headrest fore/aft position
1615      *
1616      * Adjusts the headrest forwards and backwards.
1617      * Max value indicates position closest to front of car.
1618      * Min value indicates position closest to rear of car.
1619      *
1620      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1621      * @access VehiclePropertyAccess:READ_WRITE
1622      */
1623     SEAT_HEADREST_FORE_AFT_POS = 356518809 /* (0x0B99 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1624     /**
1625      * Headrest fore/aft move
1626      *
1627      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1628      * @access VehiclePropertyAccess:READ_WRITE
1629      */
1630     SEAT_HEADREST_FORE_AFT_MOVE = 356518810 /* (0x0B9A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1631     /**
1632      * Seat Occupancy
1633      *
1634      * Indicates whether a particular seat is occupied or not, to the best of the car's ability
1635      * to determine. Valid values are from the VehicleSeatOccupancyState enum.
1636      *
1637      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1638      * @access VehiclePropertyAccess:READ
1639      * @data_enum VehicleSeatOccupancyState
1640      */
1641     SEAT_OCCUPANCY = 356518832 /* (0x0BB0 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1642     /**
1643      * Window Position
1644      *
1645      * Min = window up / closed
1646      * Max = window down / open
1647      *
1648      * For a window that may open out of plane (i.e. vent mode of sunroof) this
1649      * parameter will work with negative values as follows:
1650      *  Max = sunroof completely open
1651      *  0 = sunroof closed.
1652      *  Min = sunroof vent completely open
1653      *
1654      *  Note that in this mode, 0 indicates the window is closed.
1655      *
1656      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1657      * @access VehiclePropertyAccess:READ_WRITE
1658      */
1659     WINDOW_POS = 322964416 /* (0x0BC0 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:WINDOW) */,
1660     /**
1661      * Window Move
1662      *
1663      * Max = Open the window as fast as possible
1664      * Min = Close the window as fast as possible
1665      * Magnitude denotes relative speed.  I.e. +2 is faster than +1 in closing
1666      * the window.
1667      *
1668      * For a window that may open out of plane (i.e. vent mode of sunroof) this
1669      * parameter will work as follows:
1670      *
1671      * If sunroof is open:
1672      *   Max = open the sunroof further, automatically stop when fully open.
1673      *   Min = close the sunroof, automatically stop when sunroof is closed.
1674      *
1675      * If vent is open:
1676      *   Max = close the vent, automatically stop when vent is closed.
1677      *   Min = open the vent further, automatically stop when vent is fully open.
1678      *
1679      * If sunroof is in the closed position:
1680      *   Max = open the sunroof, automatically stop when sunroof is fully open.
1681      *   Min = open the vent, automatically stop when vent is fully open.
1682      *
1683      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1684      * @access VehiclePropertyAccess:READ_WRITE
1685      */
1686     WINDOW_MOVE = 322964417 /* (0x0BC1 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:WINDOW) */,
1687     /**
1688      * Window Lock
1689      *
1690      * True indicates windows are locked and can't be moved.
1691      *
1692      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1693      * @access VehiclePropertyAccess:READ_WRITE
1694      */
1695     WINDOW_LOCK = 320867268 /* (0x0BC4 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:WINDOW) */,
1696     /**
1697      * Vehicle Maps Service (VMS) message
1698      *
1699      * This property uses MIXED data to communicate vms messages.
1700      *
1701      * Its contents are to be interpreted as follows:
1702      * the indices defined in VmsMessageIntegerValuesIndex are to be used to
1703      * read from int32Values;
1704      * bytes is a serialized VMS message as defined in the vms protocol
1705      * which is opaque to the framework;
1706      *
1707      * IVehicle#get must always return StatusCode::NOT_AVAILABLE.
1708      *
1709      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1710      * @access VehiclePropertyAccess:READ_WRITE
1711      */
1712     VEHICLE_MAP_SERVICE = 299895808 /* (0x0C00 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
1713     /**
1714      * OBD2 Live Sensor Data
1715      *
1716      * Reports a snapshot of the current (live) values of the OBD2 sensors available.
1717      *
1718      * The configArray is set as follows:
1719      *   configArray[0] = number of vendor-specific integer-valued sensors
1720      *   configArray[1] = number of vendor-specific float-valued sensors
1721      *
1722      * The values of this property are to be interpreted as in the following example.
1723      * Considering a configArray = {2,3}
1724      * int32Values must be a vector containing Obd2IntegerSensorIndex.LAST_SYSTEM_INDEX + 2
1725      * elements (that is, 33 elements);
1726      * floatValues must be a vector containing Obd2FloatSensorIndex.LAST_SYSTEM_INDEX + 3
1727      * elements (that is, 73 elements);
1728      *
1729      * It is possible for each frame to contain a different subset of sensor values, both system
1730      * provided sensors, and vendor-specific ones. In order to support that, the bytes element
1731      * of the property value is used as a bitmask,.
1732      *
1733      * bytes must have a sufficient number of bytes to represent the total number of possible
1734      * sensors (in this case, 14 bytes to represent 106 possible values); it is to be read as
1735      * a contiguous bitmask such that each bit indicates the presence or absence of a sensor
1736      * from the frame, starting with as many bits as the size of int32Values, immediately
1737      * followed by as many bits as the size of floatValues.
1738      *
1739      * For example, should bytes[0] = 0x4C (0b01001100) it would mean that:
1740      *   int32Values[0 and 1] are not valid sensor values
1741      *   int32Values[2 and 3] are valid sensor values
1742      *   int32Values[4 and 5] are not valid sensor values
1743      *   int32Values[6] is a valid sensor value
1744      *   int32Values[7] is not a valid sensor value
1745      * Should bytes[5] = 0x61 (0b01100001) it would mean that:
1746      *   int32Values[32] is a valid sensor value
1747      *   floatValues[0 thru 3] are not valid sensor values
1748      *   floatValues[4 and 5] are valid sensor values
1749      *   floatValues[6] is not a valid sensor value
1750      *
1751      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1752      * @access VehiclePropertyAccess:READ
1753      */
1754     OBD2_LIVE_FRAME = 299896064 /* (0x0D00 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
1755     /**
1756      * OBD2 Freeze Frame Sensor Data
1757      *
1758      * Reports a snapshot of the value of the OBD2 sensors available at the time that a fault
1759      * occurred and was detected.
1760      *
1761      * A configArray must be provided with the same meaning as defined for OBD2_LIVE_FRAME.
1762      *
1763      * The values of this property are to be interpreted in a similar fashion as those for
1764      * OBD2_LIVE_FRAME, with the exception that the stringValue field may contain a non-empty
1765      * diagnostic troubleshooting code (DTC).
1766      *
1767      * A IVehicle#get request of this property must provide a value for int64Values[0].
1768      * This will be interpreted as the timestamp of the freeze frame to retrieve. A list of
1769      * timestamps can be obtained by a IVehicle#get of OBD2_FREEZE_FRAME_INFO.
1770      *
1771      * Should no freeze frame be available at the given timestamp, a response of NOT_AVAILABLE
1772      * must be returned by the implementation. Because vehicles may have limited storage for
1773      * freeze frames, it is possible for a frame request to respond with NOT_AVAILABLE even if
1774      * the associated timestamp has been recently obtained via OBD2_FREEZE_FRAME_INFO.
1775      *
1776      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1777      * @access VehiclePropertyAccess:READ
1778      */
1779     OBD2_FREEZE_FRAME = 299896065 /* (0x0D01 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
1780     /**
1781      * OBD2 Freeze Frame Information
1782      *
1783      * This property describes the current freeze frames stored in vehicle
1784      * memory and available for retrieval via OBD2_FREEZE_FRAME.
1785      *
1786      * The values are to be interpreted as follows:
1787      * each element of int64Values must be the timestamp at which a a fault code
1788      * has been detected and the corresponding freeze frame stored, and each
1789      * such element can be used as the key to OBD2_FREEZE_FRAME to retrieve
1790      * the corresponding freeze frame.
1791      *
1792      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1793      * @access VehiclePropertyAccess:READ
1794      */
1795     OBD2_FREEZE_FRAME_INFO = 299896066 /* (0x0D02 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
1796     /**
1797      * OBD2 Freeze Frame Clear
1798      *
1799      * This property allows deletion of any of the freeze frames stored in
1800      * vehicle memory, as described by OBD2_FREEZE_FRAME_INFO.
1801      *
1802      * The configArray is set as follows:
1803      *  configArray[0] = 1 if the implementation is able to clear individual freeze frames
1804      *                   by timestamp, 0 otherwise
1805      *
1806      * IVehicle#set of this property is to be interpreted as follows:
1807      *   if int64Values contains no elements, then all frames stored must be cleared;
1808      *   if int64Values contains one or more elements, then frames at the timestamps
1809      *   stored in int64Values must be cleared, and the others not cleared. Should the
1810      *   vehicle not support selective clearing of freeze frames, this latter mode must
1811      *   return NOT_AVAILABLE.
1812      *
1813      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1814      * @access VehiclePropertyAccess:WRITE
1815      */
1816     OBD2_FREEZE_FRAME_CLEAR = 299896067 /* (0x0D03 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
1817     /**
1818      * Headlights State
1819      *
1820      * Return the current state of headlights.
1821      *
1822      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1823      * @access VehiclePropertyAccess:READ
1824      * @data_enum VehicleLightState
1825      */
1826     HEADLIGHTS_STATE = 289410560 /* (0x0E00 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1827     /**
1828      * High beam lights state
1829      *
1830      * Return the current state of high beam lights.
1831      *
1832      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1833      * @access VehiclePropertyAccess:READ
1834      * @data_enum VehicleLightState
1835      */
1836     HIGH_BEAM_LIGHTS_STATE = 289410561 /* (0x0E01 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1837     /**
1838      * Fog light state
1839      *
1840      * Return the current state of fog lights.
1841      *
1842      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1843      * @access VehiclePropertyAccess:READ
1844      * @data_enum VehicleLightState
1845      */
1846     FOG_LIGHTS_STATE = 289410562 /* (0x0E02 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1847     /**
1848      * Hazard light status
1849      *
1850      * Return the current status of hazard lights.
1851      *
1852      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1853      * @access VehiclePropertyAccess:READ
1854      * @data_enum VehicleLightState
1855      */
1856     HAZARD_LIGHTS_STATE = 289410563 /* (0x0E03 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1857     /**
1858      * Headlight switch
1859      *
1860      * The setting that the user wants.
1861      *
1862      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1863      * @access VehiclePropertyAccess:READ_WRITE
1864      * @data_enum VehicleLightSwitch
1865      */
1866     HEADLIGHTS_SWITCH = 289410576 /* (0x0E10 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1867     /**
1868      * High beam light switch
1869      *
1870      * The setting that the user wants.
1871      *
1872      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1873      * @access VehiclePropertyAccess:READ_WRITE
1874      * @data_enum VehicleLightSwitch
1875      */
1876     HIGH_BEAM_LIGHTS_SWITCH = 289410577 /* (0x0E11 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1877     /**
1878      * Fog light switch
1879      *
1880      * The setting that the user wants.
1881      *
1882      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1883      * @access VehiclePropertyAccess:READ_WRITE
1884      * @data_enum VehicleLightSwitch
1885      */
1886     FOG_LIGHTS_SWITCH = 289410578 /* (0x0E12 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1887     /**
1888      * Hazard light switch
1889      *
1890      * The setting that the user wants.
1891      *
1892      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1893      * @access VehiclePropertyAccess:READ_WRITE
1894      * @data_enum VehicleLightSwitch
1895      */
1896     HAZARD_LIGHTS_SWITCH = 289410579 /* (0x0E13 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1897     /**
1898      * Cabin lights
1899      *
1900      * Return current status of cabin lights.
1901      *
1902      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1903      * @access VehiclePropertyAccess:READ
1904      * @data_enum VehicleLightState
1905      */
1906     CABIN_LIGHTS_STATE = 289410817 /* (0x0F01 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1907     /**
1908      * Cabin lights switch
1909      *
1910      * The position of the physical switch which controls the cabin lights.
1911      * This might be different than the CABIN_LIGHTS_STATE if the lights are on because a door
1912      * is open or because of a voice command.
1913      * For example, while the switch is in the "off" or "automatic" position.
1914      *
1915      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1916      * @access VehiclePropertyAccess:READ_WRITE
1917      * @data_enum VehicleLightSwitch
1918      */
1919     CABIN_LIGHTS_SWITCH = 289410818 /* (0x0F02 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:GLOBAL) */,
1920     /**
1921      * Reading lights
1922      *
1923      * Return current status of reading lights.
1924      *
1925      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1926      * @access VehiclePropertyAccess:READ
1927      * @data_enum VehicleLightState
1928      */
1929     READING_LIGHTS_STATE = 356519683 /* (0x0F03 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1930     /**
1931      * Reading lights switch
1932      *
1933      * The position of the physical switch which controls the reading lights.
1934      * This might be different than the READING_LIGHTS_STATE if the lights are on because a door
1935      * is open or because of a voice command.
1936      * For example, while the switch is in the "off" or "automatic" position.
1937      *
1938      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
1939      * @access VehiclePropertyAccess:READ_WRITE
1940      * @data_enum VehicleLightSwitch
1941      */
1942     READING_LIGHTS_SWITCH = 356519684 /* (0x0F04 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:INT32 | VehicleArea:SEAT) */,
1943     /**
1944      * Support customize permissions for vendor properties
1945      *
1946      * Implement this property if vehicle hal support customize vendor permissions feature.
1947      * VehiclePropConfig.configArray is used to indicate vendor properties and permissions
1948      * which selected for this vendor property. The permission must be one of enum in
1949      * VehicleVendorPermission.
1950      * The configArray is set as follows:
1951      *      configArray[n] = propId : property ID for the vendor property
1952      *      configArray[n+1] = one of enums in VehicleVendorPermission. It indicates the permission
1953      *      for reading value of the property.
1954      *      configArray[n+2] = one of enums in VehicleVendorPermission. It indicates the permission
1955      *      for writing value of the property.
1956      *
1957      * For example:
1958      * configArray = {
1959      *      vendor_prop_1, PERMISSION_VENDOR_SEAT_READ, PERMISSION_VENDOR_SEAT_WRITE,
1960      *      vendor_prop_2, PERMISSION_VENDOR_INFO, PERMISSION_NOT_ACCESSIBLE,
1961      * }
1962      * If vendor properties are not in this array, they will have the default vendor permission.
1963      * If vendor chose PERMISSION_NOT_ACCESSIBLE, android will not have access to the property. In
1964      * the example, Android can not write value for vendor_prop_2.
1965      *
1966      * @change_mode VehiclePropertyChangeMode:STATIC
1967      * @access VehiclePropertyAccess:READ
1968      */
1969     SUPPORT_CUSTOMIZE_VENDOR_PERMISSION = 287313669 /* (0x0F05 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:BOOLEAN | VehicleArea:GLOBAL) */,
1970     /**
1971      * Allow disabling optional featurs from vhal.
1972      *
1973      * This property reports optional features that should be disabled.
1974      * All allowed optional features for the system is declared in Car service overlay,
1975      * config_allowed_optional_car_features.
1976      * This property allows disabling features defined in the overlay. Without this property,
1977      * all the features declared in the overlay will be enabled.
1978      *
1979      * Value read should include all features disabled with ',' separation.
1980      * ex) "com.android.car.user.CarUserNoticeService,storage_monitoring"
1981      * @change_mode VehiclePropertyChangeMode:STATIC
1982      * @access VehiclePropertyAccess:READ
1983      */
1984     DISABLED_OPTIONAL_FEATURES = 286265094 /* (0x0F06 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:STRING | VehicleArea:GLOBAL) */,
1985     /**
1986      * Defines the initial Android user to be used during initialization.
1987      *
1988      * This property is called by the Android system when it initializes and it lets the HAL
1989      * define which Android user should be started.
1990      *
1991      * This request is made by setting a VehiclePropValue (defined by InitialUserInfoRequest),
1992      * and the HAL must respond with a property change event (defined by InitialUserInfoResponse).
1993      * If the HAL doesn't respond after some time (defined by the Android system), the Android
1994      * system will proceed as if HAL returned a response of action
1995      * InitialUserInfoResponseAction:DEFAULT.
1996      *
1997      * For example, on first boot, the request could be:
1998      *
1999      * int32[0]: 42  // request id (arbitrary number set by Android system)
2000      * int32[1]: 1   // InitialUserInfoRequestType::FIRST_BOOT
2001      * int32[2]: 0   // id of current user (usersInfo.currentUser.userId)
2002      * int32[3]: 1   // flag of current user (usersInfo.currentUser.flags = SYSTEM)
2003      * int32[4]: 1   // number of existing users (usersInfo.numberUsers);
2004      * int32[5]: 0   // user #0  (usersInfo.existingUsers[0].userId)
2005      * int32[6]: 1   // flags of user #0  (usersInfo.existingUsers[0].flags)
2006      *
2007      * And if the HAL want to respond with the creation of an admin user called "Admin", the
2008      * response would be:
2009      *
2010      * int32[0]: 42    // must match the request id from the request
2011      * int32[1]:  2    // action = InitialUserInfoResponseAction::CREATE
2012      * int32[2]: -1    // userToSwitchOrCreate.userId (not used as user will be created)
2013      * int32[3]:  8    // userToSwitchOrCreate.flags = ADMIN
2014      * string: "Admin" // userNameToCreate
2015      *
2016      * NOTE: if the HAL doesn't support user management, then it should not define this property,
2017      * which in turn would disable the other user-related properties (for example, the Android
2018      * system would never issue them and user-related requests from the HAL layer would be ignored
2019      * by the Android System). But if it supports user management, then it must support all
2020      * user-related properties (INITIAL_USER_INFO, SWITCH_USER, CREATE_USER, REMOVE_USER,
2021      *       and USER_IDENTIFICATION_ASSOCIATION).
2022      *
2023      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
2024      * @access VehiclePropertyAccess:READ_WRITE
2025      */
2026     INITIAL_USER_INFO = 299896583 /* (0x0F07 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
2027     /**
2028      * Defines a request to switch the foreground Android user.
2029      *
2030      * This property is used primarily by the Android System to inform the HAL that the
2031      * current foreground Android user is switching, but it could also be used by the HAL to request
2032      * the Android system to switch users - the
2033      *
2034      * When the request is made by Android, it sets a VehiclePropValue and the HAL must responde
2035      * with a property change event; when the HAL is making the request, it must also do it through
2036      * a property change event (the main difference is that the request id will be positive in the
2037      * former case, and negative in the latter; the SwitchUserMessageType will also be different).
2038      *
2039      * The format of both request is defined by SwitchUserRequest and the format of the response
2040      * (when needed) is defined by SwitchUserResponse. How the HAL (or Android System) should
2041      * proceed depends on the message type (which is defined by the SwitchUserMessageType
2042      * parameter), as defined below.
2043      *
2044      * 1.LEGACY_ANDROID_SWITCH
2045      * -----------------------
2046      *
2047      * Called by the Android System to indicate the Android user is about to change, when the change
2048      * request was made in a way that is not integrated with the HAL (for example, through
2049      * adb shell am switch-user).
2050      *
2051      * The HAL can switch its internal user once it receives this request, but it doesn't need to
2052      * reply back to the Android System. If its internal user cannot be changed for some reason,
2053      * then it must wait for the SWITCH_USER(type=ANDROID_POST_SWITCH) call to recover
2054      * (for example, it could issue a SWITCH_USER(type=VEHICLE_REQUEST) to switch back to
2055      * the previous user), but ideally it should never fail (as switching back could result in a
2056      * confusing experience for the end user).
2057      *
2058      * For example, if the system have users (0, 10, 11) and it's switching from 0 to 11 (where none
2059      * of them have any special flag), the request would be:
2060      *
2061      * int32[0]:  42  // request id
2062      * int32[1]:  1   // SwitchUserMessageType::LEGACY_ANDROID_SWITCH
2063      * int32[2]:  11  // target user id
2064      * int32[3]:  0   // target user flags (none)
2065      * int32[4]:  10  // current user
2066      * int32[5]:  0   // current user flags (none)
2067      * int32[6]:  3   // number of users
2068      * int32[7]:  0   // user #0 (Android user id 0)
2069      * int32[8]:  0   // flags of user #0 (none)
2070      * int32[9]:  10  // user #1 (Android user id 10)
2071      * int32[10]: 0   // flags of user #1 (none)
2072      * int32[11]: 11  // user #2 (Android user id 11)
2073      * int32[12]: 0   // flags of user #2 (none)
2074      *
2075      * 2.ANDROID_SWITCH
2076      * ----------------
2077      * Called by the Android System to indicate the Android user is about to change, but Android
2078      * will wait for the HAL's response (up to some time) before proceeding.
2079      *
2080      * The HAL must switch its internal user once it receives this request, then respond back to
2081      * Android with a SWITCH_USER(type=VEHICLE_RESPONSE) indicating whether its internal
2082      * user was switched or not (through the SwitchUserStatus enum).
2083      *
2084      * For example, if Android has users (0, 10, 11) and it's switching from 10 to 11 (where
2085      * none of them have any special flag), the request would be:
2086      *
2087      * int32[0]:  42  // request id
2088      * int32[1]:  2   // SwitchUserMessageType::ANDROID_SWITCH
2089      * int32[2]:  11  // target user id
2090      * int32[3]:  0   // target user flags (none)
2091      * int32[4]:  10  // current user
2092      * int32[5]:  0   // current user flags (none)
2093      * int32[6]:  3   // number of users
2094      * int32[7]:  0   // 1st user (user 0)
2095      * int32[8]:  0   // 1st user flags (none)
2096      * int32[9]:  10  // 2nd user (user 10)
2097      * int32[10]: 0   // 2nd user flags (none)
2098      * int32[11]: 11  // 3rd user (user 11)
2099      * int32[12]: 0   // 3rd user flags (none)
2100      *
2101      * If the request succeeded, the HAL must update the propery with:
2102      *
2103      * int32[0]: 42  // request id
2104      * int32[1]: 3   // messageType = SwitchUserMessageType::VEHICLE_RESPONSE
2105      * int32[2]: 1   // status = SwitchUserStatus::SUCCESS
2106      *
2107      * But if it failed, the response would be something like:
2108      *
2109      * int32[0]: 42   // request id
2110      * int32[1]: 3    // messageType = SwitchUserMessageType::VEHICLE_RESPONSE
2111      * int32[2]: 2    // status = SwitchUserStatus::FAILURE
2112      * string: "108-D'OH!" // OEM-spefic error message
2113      *
2114      * 3.VEHICLE_RESPONSE
2115      * ------------------
2116      * Called by the HAL to indicate whether a request of type ANDROID_SWITCH should proceed or
2117      * abort - see the ANDROID_SWITCH section above for more info.
2118      *
2119      * 4.VEHICLE_REQUEST
2120      * ------------------
2121      * Called by the HAL to request that the current foreground Android user is switched.
2122      *
2123      * This is useful in situations where Android started as one user, but the vehicle identified
2124      * the driver as another user. For example, user A unlocked the car using the key fob of user B;
2125      * the INITIAL_USER_INFO request returned user B, but then a face recognition subsubsystem
2126      * identified the user as A.
2127      *
2128      * The HAL makes this request by a property change event (passing a negative request id), and
2129      * the Android system will response by issuye an ANDROID_POST_SWITCH call which the same
2130      * request id.
2131      *
2132      * For example, if the current foreground Android user is 10 and the HAL asked it to switch to
2133      * 11, the request would be:
2134      *
2135      * int32[0]: -108  // request id
2136      * int32[1]: 4     // messageType = SwitchUserMessageType::VEHICLE_REQUEST
2137      * int32[2]: 11    // Android user id
2138      *
2139      * If the request succeeded and Android has 3 users (0, 10, 11), the response would be:
2140      *
2141      * int32[0]: -108 // request id
2142      * int32[1]:  5   // messageType = SwitchUserMessageType::ANDROID_SWITCH
2143      * int32[2]:  11  // target user id
2144      * int32[3]:  11  // target user id flags (none)
2145      * int32[4]:  11  // current user
2146      * int32[5]:  0   // current user flags (none)
2147      * int32[6]:  3   // number of users
2148      * int32[7]:  0   // 1st user (user 0)
2149      * int32[8]:  0   // 1st user flags (none)
2150      * int32[9]:  10  // 2nd user (user 10)
2151      * int32[10]: 4   // 2nd user flags (none)
2152      * int32[11]: 11  // 3rd user (user 11)
2153      * int32[12]: 3   // 3rd user flags (none)
2154      *
2155      * Notice that both the current and target user ids are the same - if the request failed, then
2156      * they would be different (i.e, target user would be 11, but current user would still be 10).
2157      *
2158      * 5.ANDROID_POST_SWITCH
2159      * ---------------------
2160      * Called by the Android System after a request to switch a user was made
2161      *
2162      * This property is called after switch requests of any type (i.e., LEGACY_ANDROID_SWITCH,
2163      * ANDROID_SWITCH, or VEHICLE_REQUEST) and can be used to determine if the request succeeded or
2164      * failed:
2165      *
2166      * 1. When it succeeded, it's called when the Android user is in the boot locked state and the
2167      *    value of the current and target users ids in the response are different. This would be
2168      *    equivalent to receiving an Intent.ACTION_LOCKED_BOOT_COMPLETED in an Android app.
2169      * 2. When it failed it's called right away and the value of the current and target users ids
2170      *    in the response are the same.
2171      *
2172      * The HAL can update its internal state once it receives this request, but it doesn't need to
2173      * reply back to the Android System.
2174      *
2175      * Request: the first N values as defined by INITIAL_USER_INFO (where the request-specific
2176      * value at index 1 is SwitchUserMessageType::ANDROID_POST_SWITCH), then 2 more values for the
2177      * target user id (i.e., the Android user id that was requested to be switched to) and its flags
2178      * (as defined by  UserFlags).
2179      *
2180      * Response: none.
2181      *
2182      * Example: see VEHICLE_REQUEST section above.
2183      *
2184      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
2185      * @access VehiclePropertyAccess:READ_WRITE
2186      */
2187     SWITCH_USER = 299896584 /* (0x0F08 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
2188     /**
2189      * Called by the Android System after an Android user was created.
2190      *
2191      * The HAL can use this property to create its equivalent user.
2192      *
2193      * This is an async request: Android makes the request by setting a VehiclePropValue, and HAL
2194      * must respond with a property change indicating whether the request succeeded or failed. If
2195      * it failed, the Android system will remove the user.
2196      *
2197      * The format of the request is defined by CreateUserRequest and the format of the response by
2198      * CreateUserResponse.
2199      *
2200      * For example, if system had 2 users (0 and 10) and a 3rd one (which is an ephemeral guest) was
2201      * created, the request would be:
2202      *
2203      * int32[0]: 42  // request id
2204      * int32[1]: 11  // Android id of the created user
2205      * int32[2]: 3   // Android flags (ephemeral guest) of the created user
2206      * int32[3]: 10  // current user
2207      * int32[4]: 0   // current user flags (none)
2208      * int32[5]: 3   // number of users
2209      * int32[6]: 0   // 1st user (user 0)
2210      * int32[7]: 0   // 1st user flags (none)
2211      * int32[8]: 10  // 2nd user (user 10)
2212      * int32[9]: 0   // 2nd user flags (none)
2213      * int32[19]: 11 // 3rd user (user 11)
2214      * int32[11]: 3  // 3rd user flags (ephemeral guest)
2215      * string: "ElGuesto" // name of the new user
2216      *
2217      * Then if the request succeeded, the HAL would return:
2218      *
2219      * int32[0]: 42  // request id
2220      * int32[1]: 1   // CreateUserStatus::SUCCESS
2221      *
2222      * But if it failed:
2223      *
2224      * int32[0]: 42  // request id
2225      * int32[1]: 2   // CreateUserStatus::FAILURE
2226      * string: "D'OH!" // The meaning is opaque - it's passed to the caller (like Settings UI),
2227      *                 // which in turn can take the proper action.
2228      *
2229      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
2230      * @access VehiclePropertyAccess:READ_WRITE
2231      */
2232     CREATE_USER = 299896585 /* (0x0F09 | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
2233     /**
2234      * Called by the Android System after an Android user was removed.
2235      *
2236      * The HAL can use this property to remove its equivalent user.
2237      *
2238      * This is write-only call - the Android System is not expecting a reply from the HAL. Hence,
2239      * this request should not fail - if the equivalent HAL user cannot be removed, then HAL should
2240      * mark it as inactive or recover in some other way.
2241      *
2242      * The request is made by setting the VehiclePropValue with the contents defined by
2243      * RemoveUserRequest.
2244      *
2245      * For example, if system had 3 users (0, 10, and 11) and user 11 was removed, the request
2246      * would be:
2247      *
2248      * int32[0]: 42  // request id
2249      * int32[1]: 11  // (Android user id of the removed user)
2250      * int32[2]: 0   // (Android user flags of the removed user)
2251      * int32[3]: 10  // current user
2252      * int32[4]: 0   // current user flags (none)
2253      * int32[5]: 2   // number of users
2254      * int32[6]: 0   // 1st user (user 0)
2255      * int32[7]: 0   // 1st user flags (none)
2256      * int32[8]: 10  // 2nd user (user 10)
2257      * int32[9]: 0   // 2nd user flags (none)
2258      *
2259      * @change_mode VehiclePropertyChangeMode:STATIC
2260      * @access VehiclePropertyAccess:WRITE
2261      */
2262     REMOVE_USER = 299896586 /* (0x0F0A | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
2263     /**
2264      * Property used to associate (or query the association) the current user with vehicle-specific
2265      * identification mechanisms (such as key FOB).
2266      *
2267      * To query the association, the Android system gets the property, passing a VehiclePropValue
2268      * containing the types of associations are being queried, as defined by
2269      * UserIdentificationGetRequest. The HAL must return right away, updating the VehiclePropValue
2270      * with a UserIdentificationResponse. Notice that user identification should have already
2271      * happened while system is booting up and the VHAL implementation should only return the
2272      * already identified association (like the key FOB used to unlock the car), instead of starting
2273      * a new association from the get call.
2274      *
2275      * To associate types, the Android system sets the property, passing a VehiclePropValue
2276      * containing the types and values of associations being set, as defined by the
2277      * UserIdentificationSetRequest. The HAL will then use a property change event (whose
2278      * VehiclePropValue is defined by UserIdentificationResponse) indicating the current status of
2279      * the types after the request.
2280      *
2281      * For example, to query if the current user (10) is associated with the FOB that unlocked the
2282      * car and a custom mechanism provided by the OEM, the request would be:
2283      *
2284      * int32[0]: 10  (Android user id)
2285      * int32[1]: 0   (Android user flags)
2286      * int32[2]: 2   (number of types queried)
2287      * int32[3]: 1   (1st type queried, UserIdentificationAssociationType::KEY_FOB)
2288      * int32[4]: 101 (2nd type queried, UserIdentificationAssociationType::CUSTOM_1)
2289      *
2290      * If the user is associated with the FOB but not with the custom mechanism, the response would
2291      * be:
2292      *
2293      * int32[9]: 2   (number of associations in the response)
2294      * int32[1]: 1   (1st type: UserIdentificationAssociationType::KEY_FOB)
2295      * int32[2]: 2   (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER)
2296      * int32[3]: 101 (2st type: UserIdentificationAssociationType::CUSTOM_1)
2297      * int32[4]: 4   (2nd value: UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER)
2298      *
2299      * Then to associate the user with the custom mechanism, a set request would be made:
2300      *
2301      * int32[0]: 10  (Android user id)
2302      * int32[0]: 0   (Android user flags)
2303      * int32[1]: 1   (number of associations being set)
2304      * int32[2]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1)
2305      * int32[3]: 1   (1st value: UserIdentificationAssociationSETValue::ASSOCIATE_CURRENT_USER)
2306      *
2307      * If the request succeeded, the response would be simply:
2308      *
2309      * int32[0]: 2   (number of associations in the response)
2310      * int32[1]: 101 (1st type: UserIdentificationAssociationType::CUSTOM_1)
2311      * int32[2]: 1   (1st value: UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER)
2312      *
2313      * Notice that the set request adds associations, but doesn't remove the existing ones. In the
2314      * example above, the end state would be 2 associations (FOB and CUSTOM_1). If we wanted to
2315      * associate the user with just CUSTOM_1 but not FOB, then the request should have been:
2316      *
2317      * int32[0]: 10  (Android user id)
2318      * int32[1]: 2   (number of types set)
2319      * int32[2]: 1   (1st type: UserIdentificationAssociationType::KEY_FOB)
2320      * int32[3]: 2   (1st value: UserIdentificationAssociationValue::DISASSOCIATE_CURRENT_USER)
2321      * int32[3]: 101 (2nd type: UserIdentificationAssociationType::CUSTOM_1)
2322      * int32[5]: 1   (2nd value: UserIdentificationAssociationValue::ASSOCIATE_CURRENT_USER)
2323      *
2324      * @change_mode VehiclePropertyChangeMode:ON_CHANGE
2325      * @access VehiclePropertyAccess:READ_WRITE
2326      */
2327     USER_IDENTIFICATION_ASSOCIATION = 299896587 /* (0x0F0B | VehiclePropertyGroup:SYSTEM | VehiclePropertyType:MIXED | VehicleArea:GLOBAL) */,
2328 };
2329 
2330 /**
2331  * Used by SUPPORT_CUSTOMIZE_VENDOR_PERMISSION to indicate the permission of vendor properties.
2332  */
2333 enum class VehicleVendorPermission : int32_t {
2334     PERMISSION_DEFAULT = 0 /* 0x00000000 */,
2335     PERMISSION_SET_VENDOR_CATEGORY_WINDOW = 1 /* 0X00000001 */,
2336     PERMISSION_GET_VENDOR_CATEGORY_WINDOW = 2 /* 0x00000002 */,
2337     PERMISSION_SET_VENDOR_CATEGORY_DOOR = 3 /* 0x00000003 */,
2338     PERMISSION_GET_VENDOR_CATEGORY_DOOR = 4 /* 0x00000004 */,
2339     PERMISSION_SET_VENDOR_CATEGORY_SEAT = 5 /* 0x00000005 */,
2340     PERMISSION_GET_VENDOR_CATEGORY_SEAT = 6 /* 0x00000006 */,
2341     PERMISSION_SET_VENDOR_CATEGORY_MIRROR = 7 /* 0x00000007 */,
2342     PERMISSION_GET_VENDOR_CATEGORY_MIRROR = 8 /* 0x00000008 */,
2343     PERMISSION_SET_VENDOR_CATEGORY_INFO = 9 /* 0x00000009 */,
2344     PERMISSION_GET_VENDOR_CATEGORY_INFO = 10 /* 0x0000000A */,
2345     PERMISSION_SET_VENDOR_CATEGORY_ENGINE = 11 /* 0x0000000B */,
2346     PERMISSION_GET_VENDOR_CATEGORY_ENGINE = 12 /* 0x0000000C */,
2347     PERMISSION_SET_VENDOR_CATEGORY_HVAC = 13 /* 0x0000000D */,
2348     PERMISSION_GET_VENDOR_CATEGORY_HVAC = 14 /* 0x0000000E */,
2349     PERMISSION_SET_VENDOR_CATEGORY_LIGHT = 15 /* 0x0000000F */,
2350     PERMISSION_GET_VENDOR_CATEGORY_LIGHT = 16 /* 0x00000010 */,
2351     PERMISSION_SET_VENDOR_CATEGORY_1 = 65536 /* 0x00010000 */,
2352     PERMISSION_GET_VENDOR_CATEGORY_1 = 69632 /* 0x00011000 */,
2353     PERMISSION_SET_VENDOR_CATEGORY_2 = 131072 /* 0x00020000 */,
2354     PERMISSION_GET_VENDOR_CATEGORY_2 = 135168 /* 0x00021000 */,
2355     PERMISSION_SET_VENDOR_CATEGORY_3 = 196608 /* 0x00030000 */,
2356     PERMISSION_GET_VENDOR_CATEGORY_3 = 200704 /* 0x00031000 */,
2357     PERMISSION_SET_VENDOR_CATEGORY_4 = 262144 /* 0x00040000 */,
2358     PERMISSION_GET_VENDOR_CATEGORY_4 = 266240 /* 0x00041000 */,
2359     PERMISSION_SET_VENDOR_CATEGORY_5 = 327680 /* 0x00050000 */,
2360     PERMISSION_GET_VENDOR_CATEGORY_5 = 331776 /* 0x00051000 */,
2361     PERMISSION_SET_VENDOR_CATEGORY_6 = 393216 /* 0x00060000 */,
2362     PERMISSION_GET_VENDOR_CATEGORY_6 = 397312 /* 0x00061000 */,
2363     PERMISSION_SET_VENDOR_CATEGORY_7 = 458752 /* 0x00070000 */,
2364     PERMISSION_GET_VENDOR_CATEGORY_7 = 462848 /* 0x00071000 */,
2365     PERMISSION_SET_VENDOR_CATEGORY_8 = 524288 /* 0x00080000 */,
2366     PERMISSION_GET_VENDOR_CATEGORY_8 = 528384 /* 0x00081000 */,
2367     PERMISSION_SET_VENDOR_CATEGORY_9 = 589824 /* 0x00090000 */,
2368     PERMISSION_GET_VENDOR_CATEGORY_9 = 593920 /* 0x00091000 */,
2369     PERMISSION_SET_VENDOR_CATEGORY_10 = 655360 /* 0x000A0000 */,
2370     PERMISSION_GET_VENDOR_CATEGORY_10 = 659456 /* 0x000A1000 */,
2371     PERMISSION_NOT_ACCESSIBLE = -268435456 /* 0xF0000000 */,
2372 };
2373 
2374 /**
2375  * Used by seat occupancy to enumerate the current occupancy state of the seat.
2376  */
2377 enum class VehicleSeatOccupancyState : int32_t {
2378     UNKNOWN = 0,
2379     VACANT = 1,
2380     OCCUPIED = 2,
2381 };
2382 
2383 /**
2384  * Used by lights state properties to enumerate the current state of the lights.
2385  *
2386  * Most XXX_LIGHTS_STATE properties will only report ON and OFF states.  Only
2387  * the HEADLIGHTS_STATE property will report DAYTIME_RUNNING.
2388  */
2389 enum class VehicleLightState : int32_t {
2390     OFF = 0,
2391     ON = 1,
2392     DAYTIME_RUNNING = 2,
2393 };
2394 
2395 /**
2396  * Used by lights switch properties to enumerate user selected switch setting.
2397  *
2398  * XXX_LIGHTS_SWITCH properties report the switch settings that the user
2399  * selects.  The switch setting may be decoupled from the state reported if the
2400  * user selects AUTOMATIC.
2401  */
2402 enum class VehicleLightSwitch : int32_t {
2403     OFF = 0,
2404     ON = 1,
2405     /**
2406      * Daytime running lights mode.  Most cars automatically use DRL but some
2407      * cars allow the user to activate them manually.
2408      */
2409     DAYTIME_RUNNING = 2,
2410     /**
2411      * Allows the vehicle ECU to set the lights automatically
2412      */
2413     AUTOMATIC = 256 /* 0x100 */,
2414 };
2415 
2416 /**
2417  * Used by INFO_EV_CONNECTOR_TYPE to enumerate the type of connectors
2418  * available to charge the vehicle.
2419  */
2420 enum class EvConnectorType : int32_t {
2421     /**
2422      * Default type if the vehicle does not know or report the EV connector
2423      * type.
2424      */
2425     UNKNOWN = 0,
2426     IEC_TYPE_1_AC = 1,
2427     IEC_TYPE_2_AC = 2,
2428     IEC_TYPE_3_AC = 3,
2429     IEC_TYPE_4_DC = 4,
2430     IEC_TYPE_1_CCS_DC = 5,
2431     IEC_TYPE_2_CCS_DC = 6,
2432     TESLA_ROADSTER = 7,
2433     TESLA_HPWC = 8,
2434     TESLA_SUPERCHARGER = 9,
2435     GBT_AC = 10,
2436     GBT_DC = 11,
2437     /**
2438      * Connector type to use when no other types apply. Before using this
2439      * value, work with Google to see if the EvConnectorType enum can be
2440      * extended with an appropriate value.
2441      */
2442     OTHER = 101,
2443 };
2444 
2445 /**
2446  * Used by INFO_FUEL_DOOR_LOCATION/INFO_CHARGE_PORT_LOCATION to enumerate fuel door or
2447  * ev port location.
2448  */
2449 enum class PortLocationType : int32_t {
2450     /**
2451      * Default type if the vehicle does not know or report the Fuel door
2452      * and ev port location.
2453      */
2454     UNKNOWN = 0,
2455     FRONT_LEFT = 1,
2456     FRONT_RIGHT = 2,
2457     REAR_RIGHT = 3,
2458     REAR_LEFT = 4,
2459     FRONT = 5,
2460     REAR = 6,
2461 };
2462 
2463 /**
2464  * Used by INFO_FUEL_TYPE to enumerate the type of fuels this vehicle uses.
2465  * Consistent with projection protocol.
2466  */
2467 enum class FuelType : int32_t {
2468     /**
2469      * Fuel type to use if the HU does not know on which types of fuel the vehicle
2470      * runs. The use of this value is generally discouraged outside of aftermarket units.
2471      */
2472     FUEL_TYPE_UNKNOWN = 0,
2473     /**
2474      * Unleaded gasoline
2475      */
2476     FUEL_TYPE_UNLEADED = 1,
2477     /**
2478      * Leaded gasoline
2479      */
2480     FUEL_TYPE_LEADED = 2,
2481     /**
2482      * Diesel #1
2483      */
2484     FUEL_TYPE_DIESEL_1 = 3,
2485     /**
2486      * Diesel #2
2487      */
2488     FUEL_TYPE_DIESEL_2 = 4,
2489     /**
2490      * Biodiesel
2491      */
2492     FUEL_TYPE_BIODIESEL = 5,
2493     /**
2494      * 85% ethanol/gasoline blend
2495      */
2496     FUEL_TYPE_E85 = 6,
2497     /**
2498      * Liquified petroleum gas
2499      */
2500     FUEL_TYPE_LPG = 7,
2501     /**
2502      * Compressed natural gas
2503      */
2504     FUEL_TYPE_CNG = 8,
2505     /**
2506      * Liquified natural gas
2507      */
2508     FUEL_TYPE_LNG = 9,
2509     /**
2510      * Electric
2511      */
2512     FUEL_TYPE_ELECTRIC = 10,
2513     /**
2514      * Hydrogen fuel cell
2515      */
2516     FUEL_TYPE_HYDROGEN = 11,
2517     /**
2518      * Fuel type to use when no other types apply. Before using this value, work with
2519      * Google to see if the FuelType enum can be extended with an appropriate value.
2520      */
2521     FUEL_TYPE_OTHER = 12,
2522 };
2523 
2524 /**
2525  * Bit flags for fan direction
2526  */
2527 enum class VehicleHvacFanDirection : int32_t {
2528     UNKNOWN = 0 /* 0x0 */,
2529     FACE = 1 /* 0x1 */,
2530     FLOOR = 2 /* 0x2 */,
2531     /**
2532      * FACE_AND_FLOOR = FACE | FLOOR
2533      */
2534     FACE_AND_FLOOR = 3 /* 0x3 */,
2535     DEFROST = 4 /* 0x4 */,
2536     /**
2537      * DEFROST_AND_FLOOR = DEFROST | FLOOR
2538      */
2539     DEFROST_AND_FLOOR = 6 /* 0x06 */,
2540 };
2541 
2542 enum class VehicleOilLevel : int32_t {
2543     /**
2544      * Oil level values
2545      */
2546     CRITICALLY_LOW = 0,
2547     LOW = 1,
2548     NORMAL = 2,
2549     HIGH = 3,
2550     ERROR = 4,
2551 };
2552 
2553 enum class VehicleApPowerStateConfigFlag : int32_t {
2554     /**
2555      * AP can enter deep sleep state. If not set, AP will always shutdown from
2556      * VehicleApPowerState#SHUTDOWN_PREPARE power state.
2557      */
2558     ENABLE_DEEP_SLEEP_FLAG = 1 /* 0x1 */,
2559     /**
2560      * The power controller can power on AP from off state after timeout
2561      * specified in VehicleApPowerSet VEHICLE_AP_POWER_SET_SHUTDOWN_READY message.
2562      */
2563     CONFIG_SUPPORT_TIMER_POWER_ON_FLAG = 2 /* 0x2 */,
2564 };
2565 
2566 enum class VehicleApPowerStateReq : int32_t {
2567     /**
2568      * This requests Android to enter its normal operating state.
2569      * This may be sent after the AP has reported
2570      * VehicleApPowerStateReport#DEEP_SLEEP_EXIT,
2571      * VehicleApPowerStateReport#SHUTDOWN_CANCELLED, or
2572      * VehicleApPowerStateReport#WAIT_FOR_VHAL.
2573      */
2574     ON = 0,
2575     /**
2576      * The power controller issues this request to shutdown the system.
2577      * This may be sent after the AP has reported
2578      * VehicleApPowerStateReport#DEEP_SLEEP_EXIT,
2579      * VehicleApPowerStateReport#ON,
2580      * VehicleApPowerStateReport#SHUTDOWN_CANCELLED,
2581      * VehicleApPowerStateReport#SHUTDOWN_POSTPONE,
2582      * VehicleApPowerStateReport#SHUTDOWN_PREPARE, or
2583      * VehicleApPowerStateReport#WAIT_FOR_VHAL.
2584      *
2585      * int32Values[1] : One of VehicleApPowerStateShutdownParam.
2586      *                  This parameter indicates if the AP should shut
2587      *                  down fully or sleep. This parameter also
2588      *                  indicates if the shutdown should be immediate
2589      *                  or if it can be postponed. If the shutdown can
2590      *                  be postponed, AP requests postponing by sending
2591      *                  VehicleApPowerStateReport#SHUTDOWN_POSTPONE.
2592      */
2593     SHUTDOWN_PREPARE = 1,
2594     /**
2595      * Cancel the shutdown.
2596      * This may be sent after the AP has reported
2597      * VehicleApPowerStateReport#SHUTDOWN_POSTPONE or
2598      * VehicleApPowerStateReport#SHUTDOWN_PREPARE.
2599      * After receiving this request, the AP will report
2600      * VehicleApPowerStateReport#WAIT_FOR_VHAL in preparation to going ON.
2601      */
2602     CANCEL_SHUTDOWN = 2,
2603     /**
2604      * Completes the shutdown process.
2605      * This may be sent after the AP has reported
2606      * VehicleApPowerStateReport#DEEP_SLEEP_ENTRY or
2607      * VehicleApPowerStateReport#SHUTDOWN_START. The AP will not report new
2608      * state information after receiving this request.
2609      */
2610     FINISHED = 3,
2611 };
2612 
2613 /**
2614  * Index in int32Values for VehicleProperty#AP_POWER_STATE_REQ property.
2615  */
2616 enum class VehicleApPowerStateReqIndex : int32_t {
2617     STATE = 0,
2618     ADDITIONAL = 1,
2619 };
2620 
2621 enum class VehicleApPowerStateShutdownParam : int32_t {
2622     /**
2623      * AP must shutdown immediately. Postponing is not allowed.
2624      */
2625     SHUTDOWN_IMMEDIATELY = 1,
2626     /**
2627      * AP can enter deep sleep instead of shutting down completely.
2628      */
2629     CAN_SLEEP = 2,
2630     /**
2631      * AP can only shutdown with postponing allowed.
2632      */
2633     SHUTDOWN_ONLY = 3,
2634     /**
2635      * AP may enter deep sleep, but must either sleep or shut down immediately.
2636      * Postponing is not allowed.
2637      */
2638     SLEEP_IMMEDIATELY = 4,
2639 };
2640 
2641 enum class VehicleApPowerStateReport : int32_t {
2642     /**
2643      * The device has booted. CarService has initialized and is ready to accept commands
2644      * from VHAL. The user is not logged in, and vendor apps and services are expected to
2645      * control the display and audio.
2646      * After reporting this state, AP will accept VehicleApPowerStateReq#ON or
2647      * VehicleApPowerStateReq#SHUTDOWN_PREPARE. Other power state requests are ignored.
2648      */
2649     WAIT_FOR_VHAL = 1 /* 0x1 */,
2650     /**
2651      * AP is ready to suspend.
2652      * The AP will not send any more state reports after this.
2653      * After reporting this state, AP will accept VehicleApPowerStateReq#FINISHED.
2654      * Other power state requests are ignored.
2655      *
2656      * int32Values[1]: Time to turn AP back on, in seconds. Power controller should turn on
2657      *                 AP after the specified time has elapsed, so AP can run tasks like
2658      *                 update. If this value is 0, no wake up is requested. The power
2659      *                 controller may not necessarily support timed wake-up.
2660      */
2661     DEEP_SLEEP_ENTRY = 2 /* 0x2 */,
2662     /**
2663      * AP is exiting from deep sleep state.
2664      * After reporting this state, AP will accept VehicleApPowerStateReq#ON or
2665      * VehicleApPowerStateReq#SHUTDOWN_PREPARE. Other power state requests are ignored.
2666      */
2667     DEEP_SLEEP_EXIT = 3 /* 0x3 */,
2668     /**
2669      * AP sends this message repeatedly while cleanup and idle tasks execute.
2670      * After reporting this state, AP will accept VehicleApPowerStateReq#SHUTDOWN_PREPARE
2671      * requesting immediate shutdown or VehicleApPowerStateReq#CANCEL_SHUTDOWN. Other
2672      * power state requests are ignored.
2673      *
2674      * int32Values[1]: Time to postpone shutdown in ms. Maximum value is
2675      *                 5000 ms.
2676      *                 If AP needs more time, it will send another SHUTDOWN_POSTPONE
2677      *                 message before the previous one expires.
2678      */
2679     SHUTDOWN_POSTPONE = 4 /* 0x4 */,
2680     /**
2681      * AP is ready to shutdown.
2682      * The AP will not send any more state reports after this.
2683      * After reporting this state, AP will accept VehicleApPowerStateReq#FINISHED.
2684      * Other power state requests are ignored.
2685      *
2686      * int32Values[1]: Time to turn AP back on, in seconds. Power controller should turn on
2687      *                 AP after the specified time has elapsed so AP can run tasks like
2688      *                 update. If this value is 0, no wake up is specified. The power
2689      *                 controller may not necessarily support timed wake-up.
2690      */
2691     SHUTDOWN_START = 5 /* 0x5 */,
2692     /**
2693      * AP is entering its normal operating state.
2694      * After reporting this state, AP will accept VehicleApPowerStateReq#SHUTDOWN_PREPARE.
2695      * Other power state requests are ignored.
2696      */
2697     ON = 6 /* 0x6 */,
2698     /**
2699      * AP is preparing to shut down. In this state, Garage Mode is active and idle
2700      * tasks are allowed to run.
2701      * After reporting this state, AP will accept VehicleApPowerStateReq#SHUTDOWN_PREPARE
2702      * requesting immediate shutdown or VehicleApPowerStateReq#CANCEL_SHUTDOWN. Other
2703      * power state requests are ignored.
2704      */
2705     SHUTDOWN_PREPARE = 7 /* 0x7 */,
2706     /**
2707      * AP has stopped preparing to shut down.
2708      * After reporting this state, AP will accept VehicleApPowerStateReq#ON or
2709      * VehicleApPowerStateReq#SHUTDOWN_PREPARE. Other power state requests are ignored.
2710      */
2711     SHUTDOWN_CANCELLED = 8 /* 0x8 */,
2712 };
2713 
2714 enum class VehicleHwKeyInputAction : int32_t {
2715     /**
2716      * Key down
2717      */
2718     ACTION_DOWN = 0,
2719     /**
2720      * Key up
2721      */
2722     ACTION_UP = 1,
2723 };
2724 
2725 enum class VehicleDisplay : int32_t {
2726     /**
2727      * The primary Android display (for example, center console)
2728      */
2729     MAIN = 0,
2730     INSTRUMENT_CLUSTER = 1,
2731 };
2732 
2733 /**
2734  * Units used for int or float type with no attached enum types.
2735  */
2736 enum class VehicleUnit : int32_t {
2737     SHOULD_NOT_USE = 0 /* 0x000 */,
2738     METER_PER_SEC = 1 /* 0x01 */,
2739     RPM = 2 /* 0x02 */,
2740     HERTZ = 3 /* 0x03 */,
2741     PERCENTILE = 16 /* 0x10 */,
2742     MILLIMETER = 32 /* 0x20 */,
2743     METER = 33 /* 0x21 */,
2744     KILOMETER = 35 /* 0x23 */,
2745     MILE = 36 /* 0x24 */,
2746     CELSIUS = 48 /* 0x30 */,
2747     FAHRENHEIT = 49 /* 0x31 */,
2748     KELVIN = 50 /* 0x32 */,
2749     MILLILITER = 64 /* 0x40 */,
2750     LITER = 65 /* 0x41 */,
2751     /**
2752      * deprecated. Use US_GALLON instead.
2753      */
2754     GALLON = 66 /* 0x42 */,
2755     US_GALLON = 66 /* 0x42 */,
2756     IMPERIAL_GALLON = 67 /* 0x43 */,
2757     NANO_SECS = 80 /* 0x50 */,
2758     SECS = 83 /* 0x53 */,
2759     YEAR = 89 /* 0x59 */,
2760     WATT_HOUR = 96 /* 0x60 */,
2761     MILLIAMPERE = 97 /* 0x61 */,
2762     MILLIVOLT = 98 /* 0x62 */,
2763     MILLIWATTS = 99 /* 0x63 */,
2764     AMPERE_HOURS = 100 /* 0x64 */,
2765     KILOWATT_HOUR = 101 /* 0x65 */,
2766     KILOPASCAL = 112 /* 0x70 */,
2767     PSI = 113 /* 0x71 */,
2768     BAR = 114 /* 0x72 */,
2769     DEGREES = 128 /* 0x80 */,
2770     MILES_PER_HOUR = 144 /* 0x90 */,
2771     KILOMETERS_PER_HOUR = 145 /* 0x91 */,
2772 };
2773 
2774 /**
2775  * This describes how value of property can change.
2776  */
2777 enum class VehiclePropertyChangeMode : int32_t {
2778     /**
2779      * Property of this type must never be changed. Subscription is not supported
2780      * for these properties.
2781      */
2782     STATIC = 0 /* 0x00 */,
2783     /**
2784      * Properties of this type must report when there is a change.
2785      * IVehicle#get call must return the current value.
2786      * Set operation for this property is assumed to be asynchronous. When the
2787      * property is read (using IVehicle#get) after IVehicle#set, it may still
2788      * return old value until underlying H/W backing this property has actually
2789      * changed the state. Once state is changed, the property must dispatch
2790      * changed value as event.
2791      */
2792     ON_CHANGE = 1 /* 0x01 */,
2793     /**
2794      * Properties of this type change continuously and require a fixed rate of
2795      * sampling to retrieve the data.  Implementers may choose to send extra
2796      * notifications on significant value changes.
2797      */
2798     CONTINUOUS = 2 /* 0x02 */,
2799 };
2800 
2801 /**
2802  * Property config defines the capabilities of it. User of the API
2803  * must first get the property config to understand the output from get()
2804  * commands and also to ensure that set() or events commands are in sync with
2805  * the expected output.
2806  */
2807 enum class VehiclePropertyAccess : int32_t {
2808     NONE = 0 /* 0x00 */,
2809     READ = 1 /* 0x01 */,
2810     WRITE = 2 /* 0x02 */,
2811     READ_WRITE = 3 /* 0x03 */,
2812 };
2813 
2814 /**
2815  * Property status is a dynamic value that may change based on the vehicle state.
2816  */
2817 enum class VehiclePropertyStatus : int32_t {
2818     /**
2819      * Property is available and behaving normally
2820      */
2821     AVAILABLE = 0 /* 0x00 */,
2822     /**
2823      * A property in this state is not available for reading and writing.  This
2824      * is a transient state that depends on the availability of the underlying
2825      * implementation (e.g. hardware or driver). It MUST NOT be used to
2826      * represent features that this vehicle is always incapable of.  A get() of
2827      * a property in this state MAY return an undefined value, but MUST
2828      * correctly describe its status as UNAVAILABLE A set() of a property in
2829      * this state MAY return NOT_AVAILABLE. The HAL implementation MUST ignore
2830      * the value of the status field when writing a property value coming from
2831      * Android.
2832      */
2833     UNAVAILABLE = 1 /* 0x01 */,
2834     /**
2835      * There is an error with this property.
2836      */
2837     ERROR = 2 /* 0x02 */,
2838 };
2839 
2840 /**
2841  * Various gears which can be selected by user and chosen in system.
2842  */
2843 enum class VehicleGear : int32_t {
2844     GEAR_UNKNOWN = 0 /* 0x0000 */,
2845     GEAR_NEUTRAL = 1 /* 0x0001 */,
2846     GEAR_REVERSE = 2 /* 0x0002 */,
2847     GEAR_PARK = 4 /* 0x0004 */,
2848     GEAR_DRIVE = 8 /* 0x0008 */,
2849     GEAR_1 = 16 /* 0x0010 */,
2850     GEAR_2 = 32 /* 0x0020 */,
2851     GEAR_3 = 64 /* 0x0040 */,
2852     GEAR_4 = 128 /* 0x0080 */,
2853     GEAR_5 = 256 /* 0x0100 */,
2854     GEAR_6 = 512 /* 0x0200 */,
2855     GEAR_7 = 1024 /* 0x0400 */,
2856     GEAR_8 = 2048 /* 0x0800 */,
2857     GEAR_9 = 4096 /* 0x1000 */,
2858 };
2859 
2860 /**
2861  * Various Seats in the car.
2862  */
2863 enum class VehicleAreaSeat : int32_t {
2864     ROW_1_LEFT = 1 /* 0x0001 */,
2865     ROW_1_CENTER = 2 /* 0x0002 */,
2866     ROW_1_RIGHT = 4 /* 0x0004 */,
2867     ROW_2_LEFT = 16 /* 0x0010 */,
2868     ROW_2_CENTER = 32 /* 0x0020 */,
2869     ROW_2_RIGHT = 64 /* 0x0040 */,
2870     ROW_3_LEFT = 256 /* 0x0100 */,
2871     ROW_3_CENTER = 512 /* 0x0200 */,
2872     ROW_3_RIGHT = 1024 /* 0x0400 */,
2873 };
2874 
2875 /**
2876  * Various windshields/windows in the car.
2877  */
2878 enum class VehicleAreaWindow : int32_t {
2879     FRONT_WINDSHIELD = 1 /* 0x00000001 */,
2880     REAR_WINDSHIELD = 2 /* 0x00000002 */,
2881     ROW_1_LEFT = 16 /* 0x00000010 */,
2882     ROW_1_RIGHT = 64 /* 0x00000040 */,
2883     ROW_2_LEFT = 256 /* 0x00000100 */,
2884     ROW_2_RIGHT = 1024 /* 0x00000400 */,
2885     ROW_3_LEFT = 4096 /* 0x00001000 */,
2886     ROW_3_RIGHT = 16384 /* 0x00004000 */,
2887     ROOF_TOP_1 = 65536 /* 0x00010000 */,
2888     ROOF_TOP_2 = 131072 /* 0x00020000 */,
2889 };
2890 
2891 enum class VehicleAreaDoor : int32_t {
2892     ROW_1_LEFT = 1 /* 0x00000001 */,
2893     ROW_1_RIGHT = 4 /* 0x00000004 */,
2894     ROW_2_LEFT = 16 /* 0x00000010 */,
2895     ROW_2_RIGHT = 64 /* 0x00000040 */,
2896     ROW_3_LEFT = 256 /* 0x00000100 */,
2897     ROW_3_RIGHT = 1024 /* 0x00000400 */,
2898     HOOD = 268435456 /* 0x10000000 */,
2899     REAR = 536870912 /* 0x20000000 */,
2900 };
2901 
2902 enum class VehicleAreaMirror : int32_t {
2903     DRIVER_LEFT = 1 /* 0x00000001 */,
2904     DRIVER_RIGHT = 2 /* 0x00000002 */,
2905     DRIVER_CENTER = 4 /* 0x00000004 */,
2906 };
2907 
2908 enum class VehicleTurnSignal : int32_t {
2909     NONE = 0 /* 0x00 */,
2910     RIGHT = 1 /* 0x01 */,
2911     LEFT = 2 /* 0x02 */,
2912 };
2913 
2914 struct VehicleAreaConfig final {
2915     /**
2916      * Area id is ignored for VehiclePropertyGroup:GLOBAL properties.
2917      */
2918     int32_t areaId __attribute__ ((aligned(4)));
2919     /**
2920      * If the property has @data_enum, leave the range to zero.
2921      *
2922      * Range will be ignored in the following cases:
2923      *    - The VehiclePropertyType is not INT32, INT64 or FLOAT.
2924      *    - Both of min value and max value are zero.
2925      */
2926     int32_t minInt32Value __attribute__ ((aligned(4)));
2927     int32_t maxInt32Value __attribute__ ((aligned(4)));
2928     int64_t minInt64Value __attribute__ ((aligned(8)));
2929     int64_t maxInt64Value __attribute__ ((aligned(8)));
2930     float minFloatValue __attribute__ ((aligned(4)));
2931     float maxFloatValue __attribute__ ((aligned(4)));
2932 };
2933 
2934 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig, areaId) == 0, "wrong offset");
2935 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig, minInt32Value) == 4, "wrong offset");
2936 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig, maxInt32Value) == 8, "wrong offset");
2937 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig, minInt64Value) == 16, "wrong offset");
2938 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig, maxInt64Value) == 24, "wrong offset");
2939 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig, minFloatValue) == 32, "wrong offset");
2940 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig, maxFloatValue) == 36, "wrong offset");
2941 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig) == 40, "wrong size");
2942 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig) == 8, "wrong alignment");
2943 
2944 struct VehiclePropConfig final {
2945     /**
2946      * Property identifier
2947      */
2948     int32_t prop __attribute__ ((aligned(4)));
2949     /**
2950      * Defines if the property is read or write or both.
2951      */
2952     ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess access __attribute__ ((aligned(4)));
2953     /**
2954      * Defines the change mode of the property.
2955      */
2956     ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode changeMode __attribute__ ((aligned(4)));
2957     /**
2958      * Contains per-area configuration.
2959      */
2960     ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig> areaConfigs __attribute__ ((aligned(8)));
2961     /**
2962      * Contains additional configuration parameters
2963      */
2964     ::android::hardware::hidl_vec<int32_t> configArray __attribute__ ((aligned(8)));
2965     /**
2966      * Some properties may require additional information passed over this
2967      * string. Most properties do not need to set this.
2968      */
2969     ::android::hardware::hidl_string configString __attribute__ ((aligned(8)));
2970     /**
2971      * Min sample rate in Hz.
2972      * Must be defined for VehiclePropertyChangeMode::CONTINUOUS
2973      */
2974     float minSampleRate __attribute__ ((aligned(4)));
2975     /**
2976      * Must be defined for VehiclePropertyChangeMode::CONTINUOUS
2977      * Max sample rate in Hz.
2978      */
2979     float maxSampleRate __attribute__ ((aligned(4)));
2980 };
2981 
2982 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, prop) == 0, "wrong offset");
2983 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, access) == 4, "wrong offset");
2984 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, changeMode) == 8, "wrong offset");
2985 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, areaConfigs) == 16, "wrong offset");
2986 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, configArray) == 32, "wrong offset");
2987 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, configString) == 48, "wrong offset");
2988 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, minSampleRate) == 64, "wrong offset");
2989 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig, maxSampleRate) == 68, "wrong offset");
2990 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig) == 72, "wrong size");
2991 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig) == 8, "wrong alignment");
2992 
2993 /**
2994  * Encapsulates the property name and the associated value. It
2995  * is used across various API calls to set values, get values or to register for
2996  * events.
2997  */
2998 struct VehiclePropValue final {
2999     // Forward declaration for forward reference support:
3000     struct RawValue;
3001 
3002     /**
3003      * Contains value for a single property. Depending on property data type of
3004      * this property (VehiclePropetyType) one field of this structure must be filled in.
3005      */
3006     struct RawValue final {
3007         /**
3008          * This is used for properties of types VehiclePropertyType#INT
3009          * and VehiclePropertyType#INT_VEC
3010          */
3011         ::android::hardware::hidl_vec<int32_t> int32Values __attribute__ ((aligned(8)));
3012         /**
3013          * This is used for properties of types VehiclePropertyType#FLOAT
3014          * and VehiclePropertyType#FLOAT_VEC
3015          */
3016         ::android::hardware::hidl_vec<float> floatValues __attribute__ ((aligned(8)));
3017         /**
3018          * This is used for properties of type VehiclePropertyType#INT64
3019          */
3020         ::android::hardware::hidl_vec<int64_t> int64Values __attribute__ ((aligned(8)));
3021         /**
3022          * This is used for properties of type VehiclePropertyType#BYTES
3023          */
3024         ::android::hardware::hidl_vec<uint8_t> bytes __attribute__ ((aligned(8)));
3025         /**
3026          * This is used for properties of type VehiclePropertyType#STRING
3027          */
3028         ::android::hardware::hidl_string stringValue __attribute__ ((aligned(8)));
3029     };
3030 
3031 //    static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue, int32Values) == 0, "wrong offset");
3032 //    static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue, floatValues) == 16, "wrong offset");
3033 //    static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue, int64Values) == 32, "wrong offset");
3034 //    static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue, bytes) == 48, "wrong offset");
3035 //    static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue, stringValue) == 64, "wrong offset");
3036 //    static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue) == 80, "wrong size");
3037 //    static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue) == 8, "wrong alignment");
3038 
3039     /**
3040      * Time is elapsed nanoseconds since boot
3041      */
3042     int64_t timestamp __attribute__ ((aligned(8)));
3043     /**
3044      * Area type(s) for non-global property it must be one of the value from
3045      * VehicleArea* enums or 0 for global properties.
3046      */
3047     int32_t areaId __attribute__ ((aligned(4)));
3048     /**
3049      * Property identifier
3050      */
3051     int32_t prop __attribute__ ((aligned(4)));
3052     /**
3053      * Status of the property
3054      */
3055     ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus status __attribute__ ((aligned(4)));
3056     ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue value __attribute__ ((aligned(8)));
3057 };
3058 
3059 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue, timestamp) == 0, "wrong offset");
3060 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue, areaId) == 8, "wrong offset");
3061 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue, prop) == 12, "wrong offset");
3062 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue, status) == 16, "wrong offset");
3063 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue, value) == 24, "wrong offset");
3064 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue) == 104, "wrong size");
3065 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::VehiclePropValue) == 8, "wrong alignment");
3066 
3067 enum class VehicleIgnitionState : int32_t {
3068     UNDEFINED = 0,
3069     /**
3070      * Steering wheel is locked
3071      */
3072     LOCK = 1,
3073     /**
3074      * Steering wheel is not locked, engine and all accessories are OFF. If
3075      * car can be in LOCK and OFF state at the same time than HAL must report
3076      * LOCK state.
3077      */
3078     OFF = 2 /* ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState.LOCK implicitly + 1 */,
3079     /**
3080      * Typically in this state accessories become available (e.g. radio).
3081      * Instrument cluster and engine are turned off
3082      */
3083     ACC = 3 /* ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState.OFF implicitly + 1 */,
3084     /**
3085      * Ignition is in state ON. Accessories and instrument cluster available,
3086      * engine might be running or ready to be started.
3087      */
3088     ON = 4 /* ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState.ACC implicitly + 1 */,
3089     /**
3090      * Typically in this state engine is starting (cranking).
3091      */
3092     START = 5 /* ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState.ON implicitly + 1 */,
3093 };
3094 
3095 enum class SubscribeFlags : int32_t {
3096     UNDEFINED = 0 /* 0x0 */,
3097     /**
3098      * Subscribe to event that was originated in vehicle HAL
3099      * (most likely this event came from the vehicle itself).
3100      */
3101     EVENTS_FROM_CAR = 1 /* 0x1 */,
3102     /**
3103      * Use this flag to subscribe on events when IVehicle#set(...) was called by
3104      * vehicle HAL's client (e.g. Car Service).
3105      */
3106     EVENTS_FROM_ANDROID = 2 /* 0x2 */,
3107 };
3108 
3109 /**
3110  * Encapsulates information about subscription to vehicle property events.
3111  */
3112 struct SubscribeOptions final {
3113     /**
3114      * Property to subscribe
3115      */
3116     int32_t propId __attribute__ ((aligned(4)));
3117     /**
3118      * Sample rate in Hz.
3119      *
3120      * Must be provided for properties with
3121      * VehiclePropertyChangeMode::CONTINUOUS. The value must be within
3122      * VehiclePropConfig#minSamplingRate .. VehiclePropConfig#maxSamplingRate
3123      * for a given property.
3124      * This value indicates how many updates per second client wants to receive.
3125      */
3126     float sampleRate __attribute__ ((aligned(4)));
3127     /**
3128      * Flags that indicate to which event sources to listen.
3129      */
3130     ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags flags __attribute__ ((aligned(4)));
3131 };
3132 
3133 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SubscribeOptions, propId) == 0, "wrong offset");
3134 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SubscribeOptions, sampleRate) == 4, "wrong offset");
3135 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SubscribeOptions, flags) == 8, "wrong offset");
3136 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::SubscribeOptions) == 12, "wrong size");
3137 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::SubscribeOptions) == 4, "wrong alignment");
3138 
3139 /**
3140  * Error codes used in vehicle HAL interface.
3141  */
3142 enum class StatusCode : int32_t {
3143     OK = 0,
3144     /**
3145      * Try again.
3146      */
3147     TRY_AGAIN = 1,
3148     /**
3149      * Invalid argument provided.
3150      */
3151     INVALID_ARG = 2,
3152     /**
3153      * This code must be returned when device that associated with the vehicle
3154      * property is not available. For example, when client tries to set HVAC
3155      * temperature when the whole HVAC unit is turned OFF.
3156      */
3157     NOT_AVAILABLE = 3,
3158     /**
3159      * Access denied
3160      */
3161     ACCESS_DENIED = 4,
3162     /**
3163      * Something unexpected has happened in Vehicle HAL
3164      */
3165     INTERNAL_ERROR = 5,
3166 };
3167 
3168 enum class VehicleAreaWheel : int32_t {
3169     UNKNOWN = 0 /* 0x0 */,
3170     LEFT_FRONT = 1 /* 0x1 */,
3171     RIGHT_FRONT = 2 /* 0x2 */,
3172     LEFT_REAR = 4 /* 0x4 */,
3173     RIGHT_REAR = 8 /* 0x8 */,
3174 };
3175 
3176 /**
3177  * The status of the vehicle's fuel system.
3178  * These values come from the SAE J1979 standard.
3179  */
3180 enum class Obd2FuelSystemStatus : int32_t {
3181     OPEN_INSUFFICIENT_ENGINE_TEMPERATURE = 1,
3182     CLOSED_LOOP = 2,
3183     OPEN_ENGINE_LOAD_OR_DECELERATION = 4,
3184     OPEN_SYSTEM_FAILURE = 8,
3185     CLOSED_LOOP_BUT_FEEDBACK_FAULT = 16,
3186 };
3187 
3188 /**
3189  * Defines which ignition monitors are available to be read.
3190  */
3191 enum class Obd2IgnitionMonitorKind : int32_t {
3192     SPARK = 0,
3193     COMPRESSION = 1,
3194 };
3195 
3196 /**
3197  * Ignition monitors common to both SPARK and COMPRESSION.
3198  * These values come from the SAE J1979 standard.
3199  */
3200 enum class Obd2CommonIgnitionMonitors : int32_t {
3201     COMPONENTS_AVAILABLE = 1 /* 0x1 << 0 */,
3202     COMPONENTS_INCOMPLETE = 2 /* 0x1 << 1 */,
3203     FUEL_SYSTEM_AVAILABLE = 4 /* 0x1 << 2 */,
3204     FUEL_SYSTEM_INCOMPLETE = 8 /* 0x1 << 3 */,
3205     MISFIRE_AVAILABLE = 16 /* 0x1 << 4 */,
3206     MISFIRE_INCOMPLETE = 32 /* 0x1 << 5 */,
3207 };
3208 
3209 /**
3210  * Ignition monitors available for SPARK vehicles.
3211  * These values come from the SAE J1979 standard.
3212  */
3213 enum class Obd2SparkIgnitionMonitors : int32_t {
3214     COMPONENTS_AVAILABLE = 1 /* 0x1 << 0 */,
3215     COMPONENTS_INCOMPLETE = 2 /* 0x1 << 1 */,
3216     FUEL_SYSTEM_AVAILABLE = 4 /* 0x1 << 2 */,
3217     FUEL_SYSTEM_INCOMPLETE = 8 /* 0x1 << 3 */,
3218     MISFIRE_AVAILABLE = 16 /* 0x1 << 4 */,
3219     MISFIRE_INCOMPLETE = 32 /* 0x1 << 5 */,
3220     EGR_AVAILABLE = 64 /* 0x1 << 6 */,
3221     EGR_INCOMPLETE = 128 /* 0x1 << 7 */,
3222     OXYGEN_SENSOR_HEATER_AVAILABLE = 256 /* 0x1 << 8 */,
3223     OXYGEN_SENSOR_HEATER_INCOMPLETE = 512 /* 0x1 << 9 */,
3224     OXYGEN_SENSOR_AVAILABLE = 1024 /* 0x1 << 10 */,
3225     OXYGEN_SENSOR_INCOMPLETE = 2048 /* 0x1 << 11 */,
3226     AC_REFRIGERANT_AVAILABLE = 4096 /* 0x1 << 12 */,
3227     AC_REFRIGERANT_INCOMPLETE = 8192 /* 0x1 << 13 */,
3228     SECONDARY_AIR_SYSTEM_AVAILABLE = 16384 /* 0x1 << 14 */,
3229     SECONDARY_AIR_SYSTEM_INCOMPLETE = 32768 /* 0x1 << 15 */,
3230     EVAPORATIVE_SYSTEM_AVAILABLE = 65536 /* 0x1 << 16 */,
3231     EVAPORATIVE_SYSTEM_INCOMPLETE = 131072 /* 0x1 << 17 */,
3232     HEATED_CATALYST_AVAILABLE = 262144 /* 0x1 << 18 */,
3233     HEATED_CATALYST_INCOMPLETE = 524288 /* 0x1 << 19 */,
3234     CATALYST_AVAILABLE = 1048576 /* 0x1 << 20 */,
3235     CATALYST_INCOMPLETE = 2097152 /* 0x1 << 21 */,
3236 };
3237 
3238 /**
3239  * Ignition monitors only available for COMPRESSION vehicles.
3240  * These values come from the SAE J1979 standard.
3241  */
3242 enum class Obd2CompressionIgnitionMonitors : int32_t {
3243     COMPONENTS_AVAILABLE = 1 /* 0x1 << 0 */,
3244     COMPONENTS_INCOMPLETE = 2 /* 0x1 << 1 */,
3245     FUEL_SYSTEM_AVAILABLE = 4 /* 0x1 << 2 */,
3246     FUEL_SYSTEM_INCOMPLETE = 8 /* 0x1 << 3 */,
3247     MISFIRE_AVAILABLE = 16 /* 0x1 << 4 */,
3248     MISFIRE_INCOMPLETE = 32 /* 0x1 << 5 */,
3249     EGR_OR_VVT_AVAILABLE = 64 /* 0x1 << 6 */,
3250     EGR_OR_VVT_INCOMPLETE = 128 /* 0x1 << 7 */,
3251     PM_FILTER_AVAILABLE = 256 /* 0x1 << 8 */,
3252     PM_FILTER_INCOMPLETE = 512 /* 0x1 << 9 */,
3253     EXHAUST_GAS_SENSOR_AVAILABLE = 1024 /* 0x1 << 10 */,
3254     EXHAUST_GAS_SENSOR_INCOMPLETE = 2048 /* 0x1 << 11 */,
3255     BOOST_PRESSURE_AVAILABLE = 4096 /* 0x1 << 12 */,
3256     BOOST_PRESSURE_INCOMPLETE = 8192 /* 0x1 << 13 */,
3257     NOx_SCR_AVAILABLE = 16384 /* 0x1 << 14 */,
3258     NOx_SCR_INCOMPLETE = 32768 /* 0x1 << 15 */,
3259     NMHC_CATALYST_AVAILABLE = 65536 /* 0x1 << 16 */,
3260     NMHC_CATALYST_INCOMPLETE = 131072 /* 0x1 << 17 */,
3261 };
3262 
3263 /**
3264  * The status of the vehicle's secondary air system.
3265  * These values come from the SAE J1979 standard.
3266  */
3267 enum class Obd2SecondaryAirStatus : int32_t {
3268     UPSTREAM = 1,
3269     DOWNSTREAM_OF_CATALYCIC_CONVERTER = 2,
3270     FROM_OUTSIDE_OR_OFF = 4,
3271     PUMP_ON_FOR_DIAGNOSTICS = 8,
3272 };
3273 
3274 /**
3275  * The fuel type(s) supported by a vehicle.
3276  * These values come from the SAE J1979 standard.
3277  */
3278 enum class Obd2FuelType : int32_t {
3279     NOT_AVAILABLE = 0,
3280     GASOLINE = 1,
3281     METHANOL = 2,
3282     ETHANOL = 3,
3283     DIESEL = 4,
3284     LPG = 5,
3285     CNG = 6,
3286     PROPANE = 7,
3287     ELECTRIC = 8,
3288     BIFUEL_RUNNING_GASOLINE = 9,
3289     BIFUEL_RUNNING_METHANOL = 10,
3290     BIFUEL_RUNNING_ETHANOL = 11,
3291     BIFUEL_RUNNING_LPG = 12,
3292     BIFUEL_RUNNING_CNG = 13,
3293     BIFUEL_RUNNING_PROPANE = 14,
3294     BIFUEL_RUNNING_ELECTRIC = 15,
3295     BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION = 16,
3296     HYBRID_GASOLINE = 17,
3297     HYBRID_ETHANOL = 18,
3298     HYBRID_DIESEL = 19,
3299     HYBRID_ELECTRIC = 20,
3300     HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION = 21,
3301     HYBRID_REGENERATIVE = 22,
3302     BIFUEL_RUNNING_DIESEL = 23,
3303 };
3304 
3305 /**
3306  * This enum provides the canonical mapping for sensor properties that have an integer value.
3307  * The ordering of the values is taken from the OBD2 specification.
3308  * Some of the properties are represented as an integer mapping to another enum. In those cases
3309  * expect a comment by the property definition describing the enum to look at for the mapping.
3310  * Any value greater than the last reserved index is available to vendors to map their extensions.
3311  * While these values do not directly map to SAE J1979 PIDs, an equivalence is listed next
3312  * to each one to aid implementors.
3313  */
3314 enum class DiagnosticIntegerSensorIndex : int32_t {
3315     /**
3316      * refer to FuelSystemStatus for a description of this value.
3317      */
3318     FUEL_SYSTEM_STATUS = 0,
3319     /*
3320      * PID 0x03
3321      */
3322     MALFUNCTION_INDICATOR_LIGHT_ON = 1,
3323     /*
3324      * PID 0x01
3325      *
3326      *
3327      * refer to IgnitionMonitorKind for a description of this value.
3328      */
3329     IGNITION_MONITORS_SUPPORTED = 2,
3330     /*
3331      * PID 0x01
3332      *
3333      *
3334      * The value of this sensor is a bitmask that specifies whether ignition-specific
3335      * tests are available and whether they are complete. The semantics of the individual
3336      * bits in this value are given by, respectively, SparkIgnitionMonitors and
3337      * CompressionIgnitionMonitors depending on the value of IGNITION_MONITORS_SUPPORTED.
3338      */
3339     IGNITION_SPECIFIC_MONITORS = 3,
3340     /*
3341      * PID 0x01
3342      */
3343     INTAKE_AIR_TEMPERATURE = 4,
3344     /*
3345      * PID 0x0F
3346      *
3347      *
3348      * refer to SecondaryAirStatus for a description of this value.
3349      */
3350     COMMANDED_SECONDARY_AIR_STATUS = 5,
3351     /*
3352      * PID 0x12
3353      */
3354     NUM_OXYGEN_SENSORS_PRESENT = 6,
3355     /*
3356      * PID 0x13
3357      */
3358     RUNTIME_SINCE_ENGINE_START = 7,
3359     /*
3360      * PID 0x1F
3361      */
3362     DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON = 8,
3363     /*
3364      * PID 0x21
3365      */
3366     WARMUPS_SINCE_CODES_CLEARED = 9,
3367     /*
3368      * PID 0x30
3369      */
3370     DISTANCE_TRAVELED_SINCE_CODES_CLEARED = 10,
3371     /*
3372      * PID 0x31
3373      */
3374     ABSOLUTE_BAROMETRIC_PRESSURE = 11,
3375     /*
3376      * PID 0x33
3377      */
3378     CONTROL_MODULE_VOLTAGE = 12,
3379     /*
3380      * PID 0x42
3381      */
3382     AMBIENT_AIR_TEMPERATURE = 13,
3383     /*
3384      * PID 0x46
3385      */
3386     TIME_WITH_MALFUNCTION_LIGHT_ON = 14,
3387     /*
3388      * PID 0x4D
3389      */
3390     TIME_SINCE_TROUBLE_CODES_CLEARED = 15,
3391     /*
3392      * PID 0x4E
3393      */
3394     MAX_FUEL_AIR_EQUIVALENCE_RATIO = 16,
3395     /*
3396      * PID 0x4F
3397      */
3398     MAX_OXYGEN_SENSOR_VOLTAGE = 17,
3399     /*
3400      * PID 0x4F
3401      */
3402     MAX_OXYGEN_SENSOR_CURRENT = 18,
3403     /*
3404      * PID 0x4F
3405      */
3406     MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 19,
3407     /*
3408      * PID 0x4F
3409      */
3410     MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR = 20,
3411     /*
3412      * PID 0x50
3413      *
3414      *
3415      * refer to FuelType for a description of this value.
3416      */
3417     FUEL_TYPE = 21,
3418     /*
3419      * PID 0x51
3420      */
3421     FUEL_RAIL_ABSOLUTE_PRESSURE = 22,
3422     /*
3423      * PID 0x59
3424      */
3425     ENGINE_OIL_TEMPERATURE = 23,
3426     /*
3427      * PID 0x5C
3428      */
3429     DRIVER_DEMAND_PERCENT_TORQUE = 24,
3430     /*
3431      * PID 0x61
3432      */
3433     ENGINE_ACTUAL_PERCENT_TORQUE = 25,
3434     /*
3435      * PID 0x62
3436      */
3437     ENGINE_REFERENCE_PERCENT_TORQUE = 26,
3438     /*
3439      * PID 0x63
3440      */
3441     ENGINE_PERCENT_TORQUE_DATA_IDLE = 27,
3442     /*
3443      * PID 0x64
3444      */
3445     ENGINE_PERCENT_TORQUE_DATA_POINT1 = 28,
3446     /*
3447      * PID 0x64
3448      */
3449     ENGINE_PERCENT_TORQUE_DATA_POINT2 = 29,
3450     /*
3451      * PID 0x64
3452      */
3453     ENGINE_PERCENT_TORQUE_DATA_POINT3 = 30,
3454     /*
3455      * PID 0x64
3456      */
3457     ENGINE_PERCENT_TORQUE_DATA_POINT4 = 31,
3458     /*
3459      * PID 0x64
3460      */
3461     LAST_SYSTEM_INDEX = 31 /* ENGINE_PERCENT_TORQUE_DATA_POINT4 */,
3462 };
3463 
3464 /**
3465  * This enum provides the canonical mapping for sensor properties that have a floating-point value.
3466  * The ordering of the values is taken from the OBD2 specification.
3467  * Any value greater than the last reserved index is available to vendors to map their extensions.
3468  * While these values do not directly map to SAE J1979 PIDs, an equivalence is listed next
3469  * to each one to aid implementors.
3470  */
3471 enum class DiagnosticFloatSensorIndex : int32_t {
3472     CALCULATED_ENGINE_LOAD = 0,
3473     /*
3474      * PID 0x04
3475      */
3476     ENGINE_COOLANT_TEMPERATURE = 1,
3477     /*
3478      * PID 0x05
3479      */
3480     SHORT_TERM_FUEL_TRIM_BANK1 = 2,
3481     /*
3482      * PID 0x06
3483      */
3484     LONG_TERM_FUEL_TRIM_BANK1 = 3,
3485     /*
3486      * PID 0x07
3487      */
3488     SHORT_TERM_FUEL_TRIM_BANK2 = 4,
3489     /*
3490      * PID 0x08
3491      */
3492     LONG_TERM_FUEL_TRIM_BANK2 = 5,
3493     /*
3494      * PID 0x09
3495      */
3496     FUEL_PRESSURE = 6,
3497     /*
3498      * PID 0x0A
3499      */
3500     INTAKE_MANIFOLD_ABSOLUTE_PRESSURE = 7,
3501     /*
3502      * PID 0x0B
3503      */
3504     ENGINE_RPM = 8,
3505     /*
3506      * PID 0x0C
3507      */
3508     VEHICLE_SPEED = 9,
3509     /*
3510      * PID 0x0D
3511      */
3512     TIMING_ADVANCE = 10,
3513     /*
3514      * PID 0x0E
3515      */
3516     MAF_AIR_FLOW_RATE = 11,
3517     /*
3518      * PID 0x10
3519      */
3520     THROTTLE_POSITION = 12,
3521     /*
3522      * PID 0x11
3523      */
3524     OXYGEN_SENSOR1_VOLTAGE = 13,
3525     /*
3526      * PID 0x14
3527      */
3528     OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM = 14,
3529     /*
3530      * PID 0x14
3531      */
3532     OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO = 15,
3533     /*
3534      * PID 0x24
3535      */
3536     OXYGEN_SENSOR2_VOLTAGE = 16,
3537     /*
3538      * PID 0x15
3539      */
3540     OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM = 17,
3541     /*
3542      * PID 0x15
3543      */
3544     OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO = 18,
3545     /*
3546      * PID 0x25
3547      */
3548     OXYGEN_SENSOR3_VOLTAGE = 19,
3549     /*
3550      * PID 0x16
3551      */
3552     OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM = 20,
3553     /*
3554      * PID 0x16
3555      */
3556     OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO = 21,
3557     /*
3558      * PID 0x26
3559      */
3560     OXYGEN_SENSOR4_VOLTAGE = 22,
3561     /*
3562      * PID 0x17
3563      */
3564     OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM = 23,
3565     /*
3566      * PID 0x17
3567      */
3568     OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO = 24,
3569     /*
3570      * PID 0x27
3571      */
3572     OXYGEN_SENSOR5_VOLTAGE = 25,
3573     /*
3574      * PID 0x18
3575      */
3576     OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM = 26,
3577     /*
3578      * PID 0x18
3579      */
3580     OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO = 27,
3581     /*
3582      * PID 0x28
3583      */
3584     OXYGEN_SENSOR6_VOLTAGE = 28,
3585     /*
3586      * PID 0x19
3587      */
3588     OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM = 29,
3589     /*
3590      * PID 0x19
3591      */
3592     OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO = 30,
3593     /*
3594      * PID 0x29
3595      */
3596     OXYGEN_SENSOR7_VOLTAGE = 31,
3597     /*
3598      * PID 0x1A
3599      */
3600     OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM = 32,
3601     /*
3602      * PID 0x1A
3603      */
3604     OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO = 33,
3605     /*
3606      * PID 0x2A
3607      */
3608     OXYGEN_SENSOR8_VOLTAGE = 34,
3609     /*
3610      * PID 0x1B
3611      */
3612     OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM = 35,
3613     /*
3614      * PID 0x1B
3615      */
3616     OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO = 36,
3617     /*
3618      * PID 0x2B
3619      */
3620     FUEL_RAIL_PRESSURE = 37,
3621     /*
3622      * PID 0x22
3623      */
3624     FUEL_RAIL_GAUGE_PRESSURE = 38,
3625     /*
3626      * PID 0x23
3627      */
3628     COMMANDED_EXHAUST_GAS_RECIRCULATION = 39,
3629     /*
3630      * PID 0x2C
3631      */
3632     EXHAUST_GAS_RECIRCULATION_ERROR = 40,
3633     /*
3634      * PID 0x2D
3635      */
3636     COMMANDED_EVAPORATIVE_PURGE = 41,
3637     /*
3638      * PID 0x2E
3639      */
3640     FUEL_TANK_LEVEL_INPUT = 42,
3641     /*
3642      * PID 0x2F
3643      */
3644     EVAPORATION_SYSTEM_VAPOR_PRESSURE = 43,
3645     /*
3646      * PID 0x32
3647      */
3648     CATALYST_TEMPERATURE_BANK1_SENSOR1 = 44,
3649     /*
3650      * PID 0x3C
3651      */
3652     CATALYST_TEMPERATURE_BANK2_SENSOR1 = 45,
3653     /*
3654      * PID 0x3D
3655      */
3656     CATALYST_TEMPERATURE_BANK1_SENSOR2 = 46,
3657     /*
3658      * PID 0x3E
3659      */
3660     CATALYST_TEMPERATURE_BANK2_SENSOR2 = 47,
3661     /*
3662      * PID 0x3F
3663      */
3664     ABSOLUTE_LOAD_VALUE = 48,
3665     /*
3666      * PID 0x43
3667      */
3668     FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO = 49,
3669     /*
3670      * PID 0x44
3671      */
3672     RELATIVE_THROTTLE_POSITION = 50,
3673     /*
3674      * PID 0x45
3675      */
3676     ABSOLUTE_THROTTLE_POSITION_B = 51,
3677     /*
3678      * PID 0x47
3679      */
3680     ABSOLUTE_THROTTLE_POSITION_C = 52,
3681     /*
3682      * PID 0x48
3683      */
3684     ACCELERATOR_PEDAL_POSITION_D = 53,
3685     /*
3686      * PID 0x49
3687      */
3688     ACCELERATOR_PEDAL_POSITION_E = 54,
3689     /*
3690      * PID 0x4A
3691      */
3692     ACCELERATOR_PEDAL_POSITION_F = 55,
3693     /*
3694      * PID 0x4B
3695      */
3696     COMMANDED_THROTTLE_ACTUATOR = 56,
3697     /*
3698      * PID 0x4C
3699      */
3700     ETHANOL_FUEL_PERCENTAGE = 57,
3701     /*
3702      * PID 0x52
3703      */
3704     ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE = 58,
3705     /*
3706      * PID 0x53
3707      */
3708     SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 59,
3709     /*
3710      * PID 0x55
3711      */
3712     SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 60,
3713     /*
3714      * PID 0x57
3715      */
3716     SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 61,
3717     /*
3718      * PID 0x55
3719      */
3720     SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 62,
3721     /*
3722      * PID 0x57
3723      */
3724     LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1 = 63,
3725     /*
3726      * PID 0x56
3727      */
3728     LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2 = 64,
3729     /*
3730      * PID 0x58
3731      */
3732     LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3 = 65,
3733     /*
3734      * PID 0x56
3735      */
3736     LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4 = 66,
3737     /*
3738      * PID 0x58
3739      */
3740     RELATIVE_ACCELERATOR_PEDAL_POSITION = 67,
3741     /*
3742      * PID 0x5A
3743      */
3744     HYBRID_BATTERY_PACK_REMAINING_LIFE = 68,
3745     /*
3746      * PID 0x5B
3747      */
3748     FUEL_INJECTION_TIMING = 69,
3749     /*
3750      * PID 0x5D
3751      */
3752     ENGINE_FUEL_RATE = 70,
3753     /*
3754      * PID 0x5E
3755      */
3756     LAST_SYSTEM_INDEX = 70 /* ENGINE_FUEL_RATE */,
3757 };
3758 
3759 /**
3760  * This enum lists the types of supported VMS messages. It is used as the first
3761  * integer in the vehicle property integers array and determines how the rest of
3762  * the message is decoded.
3763  */
3764 enum class VmsMessageType : int32_t {
3765     /**
3766      * A request from the subscribers to the VMS service to subscribe to a layer.
3767      *
3768      * This message type uses enum VmsMessageWithLayerIntegerValuesIndex.
3769      */
3770     SUBSCRIBE = 1,
3771     /**
3772      * A request from the subscribers to the VMS service to subscribe to a layer from a specific publisher.
3773      *
3774      * This message type uses enum VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.
3775      */
3776     SUBSCRIBE_TO_PUBLISHER = 2,
3777     /**
3778      * A request from the subscribers to the VMS service to unsubscribes from a layer.
3779      *
3780      * This message type uses enum VmsMessageWithLayerIntegerValuesIndex.
3781      */
3782     UNSUBSCRIBE = 3,
3783     /**
3784      * A request from the subscribers to the VMS service to unsubscribes from a layer from a specific publisher.
3785      *
3786      * This message type uses enum VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.
3787      */
3788     UNSUBSCRIBE_TO_PUBLISHER = 4,
3789     /**
3790      * Information from the publishers to the VMS service about the layers which the client can publish.
3791      *
3792      * This message type uses enum VmsOfferingMessageIntegerValuesIndex.
3793      */
3794     OFFERING = 5,
3795     /**
3796      * A request from the subscribers to the VMS service to get the available layers.
3797      *
3798      * This message type uses enum VmsBaseMessageIntegerValuesIndex.
3799      */
3800     AVAILABILITY_REQUEST = 6,
3801     /**
3802      * A request from the publishers to the VMS service to get the layers with subscribers.
3803      *
3804      * This message type uses enum VmsBaseMessageIntegerValuesIndex.
3805      */
3806     SUBSCRIPTIONS_REQUEST = 7,
3807     /**
3808      * A response from the VMS service to the subscribers to a VmsMessageType.AVAILABILITY_REQUEST
3809      *
3810      * This message type uses enum VmsAvailabilityStateIntegerValuesIndex.
3811      */
3812     AVAILABILITY_RESPONSE = 8,
3813     /**
3814      * A notification from the VMS service to the subscribers on a change in the available layers.
3815      *
3816      * This message type uses enum VmsAvailabilityStateIntegerValuesIndex.
3817      */
3818     AVAILABILITY_CHANGE = 9,
3819     /**
3820      * A response from the VMS service to the publishers to a VmsMessageType.SUBSCRIPTIONS_REQUEST
3821      *
3822      * This message type uses enum VmsSubscriptionsStateIntegerValuesIndex.
3823      */
3824     SUBSCRIPTIONS_RESPONSE = 10,
3825     /**
3826      * A notification from the VMS service to the publishers on a change in the layers with subscribers.
3827      *
3828      * This message type uses enum VmsSubscriptionsStateIntegerValuesIndex.
3829      */
3830     SUBSCRIPTIONS_CHANGE = 11,
3831     /**
3832      * A message from the VMS service to the subscribers or from the publishers to the VMS service
3833      * with a serialized VMS data packet as defined in the VMS protocol.
3834      *
3835      * This message type uses enum VmsMessageWithLayerAndPublisherIdIntegerValuesIndex.
3836      */
3837     DATA = 12,
3838     /**
3839      * A request from the publishers to the VMS service to get a Publisher ID for a serialized VMS
3840      * provider description packet as defined in the VMS protocol.
3841      *
3842      * This message type uses enum VmsBaseMessageIntegerValuesIndex.
3843      */
3844     PUBLISHER_ID_REQUEST = 13,
3845     /**
3846      * A response from the VMS service to the publisher that contains a provider description packet
3847      * and the publisher ID assigned to it.
3848      *
3849      * This message type uses enum VmsPublisherInformationIntegerValuesIndex.
3850      */
3851     PUBLISHER_ID_RESPONSE = 14,
3852     /**
3853      * A request from the subscribers to the VMS service to get information for a Publisher ID.
3854      *
3855      * This message type uses enum VmsPublisherInformationIntegerValuesIndex.
3856      */
3857     PUBLISHER_INFORMATION_REQUEST = 15,
3858     /**
3859      * A response from the VMS service to the subscribers that contains a provider description packet
3860      * and the publisher ID assigned to it.
3861      *
3862      * This message type uses enum VmsPublisherInformationIntegerValuesIndex.
3863      */
3864     PUBLISHER_INFORMATION_RESPONSE = 16,
3865     /**
3866      * A notification indicating that the sender has been reset.
3867      *
3868      * The receiving party must reset its internal state and respond to the
3869      * sender with a START_SESSION message as acknowledgement.
3870      *
3871      * This message type uses enum VmsStartSessionMessageIntegerValuesIndex.
3872      */
3873     START_SESSION = 17,
3874     LAST_VMS_MESSAGE_TYPE = 17 /* START_SESSION */,
3875 };
3876 
3877 /**
3878  * Every VMS message starts with the type of the message from the VmsMessageType enum.
3879  * Messages with no parameters such as VmsMessageType.AVAILABILITY_REQUEST,
3880  * VmsMessageType.SUBSCRIPTIONS_REQUEST and VmsMessageType.DATA are also based on this enum.
3881  */
3882 enum class VmsBaseMessageIntegerValuesIndex : int32_t {
3883     /*
3884      * The message type as enumerated by VmsMessageType enum.
3885      */
3886     MESSAGE_TYPE = 0,
3887 };
3888 
3889 /*
3890  * Handshake data sent as part of a VmsMessageType.START_SESSION message.
3891  *
3892  * A new session is initiated by sending a START_SESSION message with the
3893  * sender's identifier populated and the receiver's identifier set to -1.
3894  *
3895  * Identifier values are independently generated, but must be non-negative, and
3896  * increase monotonically between reboots.
3897  *
3898  * Upon receiving a START_SESSION with a mis-matching identifier, the receiver
3899  * must clear any cached VMS offering or subscription state and acknowledge the
3900  * new session by responding with a START_SESSION message that populates both
3901  * identifier fields.
3902  *
3903  * Any VMS messages received between initiation and completion of the handshake
3904  * must be discarded.
3905  */
3906 enum class VmsStartSessionMessageIntegerValuesIndex : int32_t {
3907     /*
3908      * The message type as enumerated by VmsMessageType enum.
3909      */
3910     MESSAGE_TYPE = 0,
3911     /*
3912      * Identifier field for the Android system service.
3913      */
3914     SERVICE_ID = 1,
3915     /*
3916      * Identifier field for the HAL client process.
3917      */
3918     CLIENT_ID = 2,
3919 };
3920 
3921 /*
3922  * A VMS message with a layer is sent as part of a VmsMessageType.SUBSCRIBE or
3923  * VmsMessageType.UNSUBSCRIBE messages.
3924  *
3925  * The layer type is defined in the VMS protocol, and the subtype and version are
3926  * controlled by the implementer of the publisher.
3927  */
3928 enum class VmsMessageWithLayerIntegerValuesIndex : int32_t {
3929     /*
3930      * The message type as enumerated by VmsMessageType enum.
3931      */
3932     MESSAGE_TYPE = 0,
3933     LAYER_TYPE = 1,
3934     LAYER_SUBTYPE = 2,
3935     LAYER_VERSION = 3,
3936 };
3937 
3938 /*
3939  * A VMS message with a layer and publisher ID is sent as part of a
3940  * VmsMessageType.SUBSCRIBE_TO_PUBLISHER, VmsMessageType.UNSUBSCRIBE_TO_PUBLISHER messages and
3941  * VmsMessageType.DATA .
3942  */
3943 enum class VmsMessageWithLayerAndPublisherIdIntegerValuesIndex : int32_t {
3944     /*
3945      * The message type as enumerated by VmsMessageType enum.
3946      */
3947     MESSAGE_TYPE = 0,
3948     LAYER_TYPE = 1,
3949     LAYER_SUBTYPE = 2,
3950     LAYER_VERSION = 3,
3951     PUBLISHER_ID = 4,
3952 };
3953 
3954 /*
3955  * An offering can be sent by publishers as part of VmsMessageType.OFFERING in order to
3956  * advertise which layers they can publish and under which constraints: e.g., I can publish Layer X
3957  * if someone else will publish Layer Y.
3958  * The offering contains the publisher ID which was assigned to the publisher by the VMS service.
3959  * A single offering is represented as:
3960  * - Layer type
3961  * - Layer subtype
3962  * - Layer version
3963  * - Number of dependencies (N)
3964  * - N x (Layer type, Layer subtype, Layer version)
3965  */
3966 enum class VmsOfferingMessageIntegerValuesIndex : int32_t {
3967     /*
3968      * The message type as enumerated by VmsMessageType enum.
3969      */
3970     MESSAGE_TYPE = 0,
3971     PUBLISHER_ID = 1,
3972     NUMBER_OF_OFFERS = 2,
3973     OFFERING_START = 3,
3974 };
3975 
3976 /**
3977  * A subscriptions state is sent to the publishers in response to a change in the subscriptions
3978  * as part of a VmsMessageType.SUBSCRIPTIONS_CHANGE, or in response to a
3979  * VmsMessageType.SUBSCRIPTIONS_REQUEST message as part of VmsMessageType.SUBSCRIPTIONS_RESPONSE.
3980  * The VMS service issues monotonically increasing sequence numbers, and in case a subscriber receives
3981  * a smaller sequnce number it should ignore the message.
3982  * The subscriptions are sent as a list of layers followed by a list of associated layers:
3983  * {Sequence number, N, M, N x layer, M x associated layer}
3984  * A subscribed layer is represented as three integers:
3985  * - Layer type
3986  * - Layer subtype
3987  * - Layer version
3988  * A subscribed associated layer is a layer with a list of publisher IDs. It is represented as:
3989  * - Layer type
3990  * - Layer subtype
3991  * - Layer version
3992  * - Number of publisher IDs (N)
3993  * - N x publisher ID
3994  */
3995 enum class VmsSubscriptionsStateIntegerValuesIndex : int32_t {
3996     /*
3997      * The message type as enumerated by VmsMessageType enum.
3998      */
3999     MESSAGE_TYPE = 0,
4000     SEQUENCE_NUMBER = 1,
4001     NUMBER_OF_LAYERS = 2,
4002     NUMBER_OF_ASSOCIATED_LAYERS = 3,
4003     SUBSCRIPTIONS_START = 4,
4004 };
4005 
4006 /**
4007  * An availability state is sent to the subscribers in response to a change in the available
4008  * layers as part of a VmsMessageType.AVAILABILITY_CHANGE message, or in response to a
4009  * VmsMessageType.AVAILABILITY_REQUEST message as part of a VmsMessageType.AVAILABILITY_RESPONSE.
4010  * The VMS service issues monotonically increasing sequence numbers, and in case a subscriber receives
4011  * a smaller sequnce number, it should ignore the message.
4012  * An available associated layer is a layer with a list of publisher IDs:
4013  * - Layer type
4014  * - Layer subtype
4015  * - Layer version
4016  * - Number of publisher IDs (N)
4017  * - N x publisher ID
4018  */
4019 enum class VmsAvailabilityStateIntegerValuesIndex : int32_t {
4020     /*
4021      * The message type as enumerated by VmsMessageType enum.
4022      */
4023     MESSAGE_TYPE = 0,
4024     SEQUENCE_NUMBER = 1,
4025     NUMBER_OF_ASSOCIATED_LAYERS = 2,
4026     LAYERS_START = 3,
4027 };
4028 
4029 /*
4030  * Publishers send the VMS service their information and assigned in response a publisher ID.
4031  * Subscribers can request the publisher information for a publisher ID they received in other messages.
4032  */
4033 enum class VmsPublisherInformationIntegerValuesIndex : int32_t {
4034     /*
4035      * The message type as enumerated by VmsMessageType enum.
4036      */
4037     MESSAGE_TYPE = 0,
4038     PUBLISHER_ID = 1,
4039 };
4040 
4041 /**
4042  * Id of an Android user.
4043  *
4044  * Must be > 0 for valid ids, or -10000 (which is the same as Android.UserHandle.USER_NULL) when
4045  * it's not used.
4046  */
4047 typedef int32_t UserId;
4048 
4049 /**
4050  * Flags used to define the characteristics of an Android user.
4051  */
4052 enum class UserFlags : int32_t {
4053     /**
4054      * No flags.
4055      */
4056     NONE = 0 /* 0x0 */,
4057     /**
4058      * System user.
4059      * On automotive, that user is always running, although never on foreground (except during
4060      * boot or exceptional circumstances).
4061      */
4062     SYSTEM = 1 /* 0x01 */,
4063     /**
4064      * Guest users have restrictions.
4065      */
4066     GUEST = 2 /* 0x02 */,
4067     /**
4068      * Ephemeral users have non-persistent state.
4069      */
4070     EPHEMERAL = 4 /* 0x04 */,
4071     /**
4072      * Admin users have additional privileges such as permission to create other users.
4073      */
4074     ADMIN = 8 /* 0x08 */,
4075 };
4076 
4077 /**
4078  * Information about a specific Android user.
4079  */
4080 struct UserInfo final {
4081     int32_t userId __attribute__ ((aligned(4)));
4082     ::android::hardware::automotive::vehicle::V2_0::UserFlags flags __attribute__ ((aligned(4)));
4083 };
4084 
4085 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserInfo, userId) == 0, "wrong offset");
4086 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserInfo, flags) == 4, "wrong offset");
4087 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserInfo) == 8, "wrong size");
4088 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserInfo) == 4, "wrong alignment");
4089 
4090 /**
4091  * Information about all Android users.
4092  *
4093  * NOTE: this struct is not used in the HAL properties directly, it's part of other structs, which
4094  * in turn are converted to a VehiclePropValue.RawValue through libraries provided by the default
4095  * Vehicle HAL implementation.
4096  */
4097 struct UsersInfo final {
4098     /**
4099      * The current foreground user.
4100      */
4101     ::android::hardware::automotive::vehicle::V2_0::UserInfo currentUser __attribute__ ((aligned(4)));
4102     /**
4103      * Number of existing users (includes the current user).
4104      */
4105     int32_t numberUsers __attribute__ ((aligned(4)));
4106     /**
4107      * List of existing users (includes the current user).
4108      */
4109     ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserInfo> existingUsers __attribute__ ((aligned(8)));
4110 };
4111 
4112 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UsersInfo, currentUser) == 0, "wrong offset");
4113 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UsersInfo, numberUsers) == 8, "wrong offset");
4114 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UsersInfo, existingUsers) == 16, "wrong offset");
4115 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UsersInfo) == 32, "wrong size");
4116 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UsersInfo) == 8, "wrong alignment");
4117 
4118 /**
4119  * Id of a request related to user management.
4120  *
4121  * This id can be used by the Android system to map responses sent by the HAL, and vice-versa.
4122  *
4123  * For requests originated by Android, the value is positive (> 0), while for requests originated by
4124  * the HAL it must be negative (< 0).
4125  */
4126 typedef int32_t UserRequestId;
4127 
4128 /**
4129  * Defines when a INITIAL_USER_INFO request was made.
4130  */
4131 enum class InitialUserInfoRequestType : int32_t {
4132     /**
4133      * At the first time Android was booted (or after a factory reset).
4134      */
4135     FIRST_BOOT = 1,
4136     /**
4137      * At the first time Android was booted after the system was updated.
4138      */
4139     FIRST_BOOT_AFTER_OTA = 2,
4140     /**
4141      * When Android was booted "from scratch".
4142      */
4143     COLD_BOOT = 3,
4144     /**
4145      * When Android was resumed after the system was suspended to memory.
4146      */
4147     RESUME = 4,
4148 };
4149 
4150 /**
4151  * Defines the format of a INITIAL_USER_INFO request made by the Android system.
4152  *
4153  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4154  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4155  */
4156 struct InitialUserInfoRequest final {
4157     /**
4158      * Arbitrary id used to map the HAL response to the request.
4159      */
4160     int32_t requestId __attribute__ ((aligned(4)));
4161     /**
4162      * Type of request.
4163      */
4164     ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType requestType __attribute__ ((aligned(4)));
4165     /**
4166      * Information about the current state of the Android system.
4167      */
4168     ::android::hardware::automotive::vehicle::V2_0::UsersInfo usersInfo __attribute__ ((aligned(8)));
4169 };
4170 
4171 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest, requestId) == 0, "wrong offset");
4172 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest, requestType) == 4, "wrong offset");
4173 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest, usersInfo) == 8, "wrong offset");
4174 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest) == 40, "wrong size");
4175 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest) == 8, "wrong alignment");
4176 
4177 /**
4178  * Defines which action the Android system should take in an INITIAL_USER_INFO request.
4179  */
4180 enum class InitialUserInfoResponseAction : int32_t {
4181     /**
4182      * Let the Android System decide what to do.
4183      *
4184      * For example, it might create a new user on first boot, and switch to the last
4185      * active user afterwards.
4186      */
4187     DEFAULT = 0,
4188     /**
4189      * Switch to an existing Android user.
4190      */
4191     SWITCH = 1,
4192     /**
4193      * Create a new Android user (and switch to it).
4194      */
4195     CREATE = 2,
4196 };
4197 
4198 /**
4199  * Defines the format of a HAL response to a INITIAL_USER_INFO request.
4200  *
4201  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4202  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4203  */
4204 struct InitialUserInfoResponse final {
4205     /**
4206      * Id of the request being responded.
4207      */
4208     int32_t requestId __attribute__ ((aligned(4)));
4209     /**
4210      * which action the Android system should take.
4211      */
4212     ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction action __attribute__ ((aligned(4)));
4213     /**
4214      * Information about the user that should be switched to or created.
4215      */
4216     ::android::hardware::automotive::vehicle::V2_0::UserInfo userToSwitchOrCreate __attribute__ ((aligned(4)));
4217     /**
4218      * Name of the user that should be created.
4219      */
4220     ::android::hardware::hidl_string userNameToCreate __attribute__ ((aligned(8)));
4221 };
4222 
4223 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, requestId) == 0, "wrong offset");
4224 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, action) == 4, "wrong offset");
4225 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, userToSwitchOrCreate) == 8, "wrong offset");
4226 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse, userNameToCreate) == 16, "wrong offset");
4227 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse) == 32, "wrong size");
4228 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse) == 8, "wrong alignment");
4229 
4230 /**
4231  * Defines the reason a SWITCH_USER call was made.
4232  *
4233  * The meaning of each constant is explained in that property.
4234  */
4235 enum class SwitchUserMessageType : int32_t {
4236     LEGACY_ANDROID_SWITCH = 1,
4237     ANDROID_SWITCH = 2,
4238     VEHICLE_RESPONSE = 3,
4239     VEHICLE_REQUEST = 4,
4240     ANDROID_POST_SWITCH = 5,
4241 };
4242 
4243 /**
4244  * Defines the format of a SWITCH_USER property.
4245  *
4246  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4247  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4248  */
4249 struct SwitchUserRequest final {
4250     /**
4251      * Arbitrary id used to map the response to the request.
4252      */
4253     int32_t requestId __attribute__ ((aligned(4)));
4254     /**
4255      * Type of message.
4256      */
4257     ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType messageType __attribute__ ((aligned(4)));
4258     /**
4259      * Information about the Android user being switched to.
4260      *
4261      * Only the user id (but not the flags) should be set when the request is made by HAL.
4262      */
4263     ::android::hardware::automotive::vehicle::V2_0::UserInfo targetUser __attribute__ ((aligned(4)));
4264     /**
4265      * Information about the current state of the Android system.
4266      *
4267      * Should not be set when the request is made by HAL.
4268      */
4269     ::android::hardware::automotive::vehicle::V2_0::UsersInfo usersInfo __attribute__ ((aligned(8)));
4270 };
4271 
4272 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest, requestId) == 0, "wrong offset");
4273 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest, messageType) == 4, "wrong offset");
4274 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest, targetUser) == 8, "wrong offset");
4275 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest, usersInfo) == 16, "wrong offset");
4276 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest) == 48, "wrong size");
4277 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest) == 8, "wrong alignment");
4278 
4279 /**
4280  * Status of the response to a SwitchUserRequest.
4281  */
4282 enum class SwitchUserStatus : int32_t {
4283     /**
4284      * The request succeeded and the HAL user was switched.
4285      */
4286     SUCCESS = 1,
4287     /**
4288      * The request failed and the HAL user remained the same.
4289      */
4290     FAILURE = 2,
4291 };
4292 
4293 /**
4294  * Defines the result of a SwitchUserRequest.
4295  *
4296  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4297  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4298  */
4299 struct SwitchUserResponse final {
4300     /**
4301      * Id of the request being responded.
4302      */
4303     int32_t requestId __attribute__ ((aligned(4)));
4304     /**
4305      * Type of message.
4306      */
4307     ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType messageType __attribute__ ((aligned(4)));
4308     /**
4309      * Status of the request.
4310      */
4311     ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus status __attribute__ ((aligned(4)));
4312     /**
4313      * HAL-specific error message.
4314      *
4315      * This argument is optional, and when defined, it's passed "as-is" to the caller. It could be
4316      * used to show custom error messages to the end user.
4317      */
4318     ::android::hardware::hidl_string errorMessage __attribute__ ((aligned(8)));
4319 };
4320 
4321 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse, requestId) == 0, "wrong offset");
4322 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse, messageType) == 4, "wrong offset");
4323 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse, status) == 8, "wrong offset");
4324 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse, errorMessage) == 16, "wrong offset");
4325 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse) == 32, "wrong size");
4326 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse) == 8, "wrong alignment");
4327 
4328 /**
4329  * Defines the format of a CREATE_USER property.
4330  *
4331  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4332  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4333  */
4334 struct CreateUserRequest final {
4335     /**
4336      * Arbitrary id used to map the response to the request.
4337      */
4338     int32_t requestId __attribute__ ((aligned(4)));
4339     /**
4340      * Basic information about Android user that was created.
4341      */
4342     ::android::hardware::automotive::vehicle::V2_0::UserInfo newUserInfo __attribute__ ((aligned(4)));
4343     /**
4344      * Name of the new Android user.
4345      */
4346     ::android::hardware::hidl_string newUserName __attribute__ ((aligned(8)));
4347     /**
4348      * Information about the current state of the Android system.
4349      */
4350     ::android::hardware::automotive::vehicle::V2_0::UsersInfo usersInfo __attribute__ ((aligned(8)));
4351 };
4352 
4353 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::CreateUserRequest, requestId) == 0, "wrong offset");
4354 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::CreateUserRequest, newUserInfo) == 4, "wrong offset");
4355 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::CreateUserRequest, newUserName) == 16, "wrong offset");
4356 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::CreateUserRequest, usersInfo) == 32, "wrong offset");
4357 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::CreateUserRequest) == 64, "wrong size");
4358 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::CreateUserRequest) == 8, "wrong alignment");
4359 
4360 /**
4361  * Status of the response to a CreateUserRequest.
4362  */
4363 enum class CreateUserStatus : int32_t {
4364     /**
4365      * The request succeeded (for example, HAL created a new internal user, or associated the
4366      * Android user to an existing internal user).
4367      */
4368     SUCCESS = 1,
4369     /**
4370      * The request failed (and Android will remove the Android user).
4371      */
4372     FAILURE = 2,
4373 };
4374 
4375 /**
4376  * Defines the result of a CreateUserRequest.
4377  *
4378  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4379  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4380  */
4381 struct CreateUserResponse final {
4382     /**
4383      * Id of the request being responded.
4384      */
4385     int32_t requestId __attribute__ ((aligned(4)));
4386     /**
4387      * Status of the request.
4388      */
4389     ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus status __attribute__ ((aligned(4)));
4390     /**
4391      * HAL-specific error message.
4392      *
4393      * This argument is optional, and when defined, it's passed "as-is" to the caller. It could be
4394      * used to show custom error messages to the end user.
4395      */
4396     ::android::hardware::hidl_string errorMessage __attribute__ ((aligned(8)));
4397 };
4398 
4399 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::CreateUserResponse, requestId) == 0, "wrong offset");
4400 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::CreateUserResponse, status) == 4, "wrong offset");
4401 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::CreateUserResponse, errorMessage) == 8, "wrong offset");
4402 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::CreateUserResponse) == 24, "wrong size");
4403 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::CreateUserResponse) == 8, "wrong alignment");
4404 
4405 /**
4406  * Defines the format of a REMOVE_USER property.
4407  *
4408  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4409  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4410  */
4411 struct RemoveUserRequest final {
4412     /**
4413      * Arbitrary id used to map the response to the request.
4414      */
4415     int32_t requestId __attribute__ ((aligned(4)));
4416     /**
4417      * Information about the Android user that was removed.
4418      */
4419     ::android::hardware::automotive::vehicle::V2_0::UserInfo removedUserInfo __attribute__ ((aligned(4)));
4420     /**
4421      * Information about the current state of the Android system.
4422      */
4423     ::android::hardware::automotive::vehicle::V2_0::UsersInfo usersInfo __attribute__ ((aligned(8)));
4424 };
4425 
4426 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest, requestId) == 0, "wrong offset");
4427 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest, removedUserInfo) == 4, "wrong offset");
4428 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest, usersInfo) == 16, "wrong offset");
4429 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest) == 48, "wrong size");
4430 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest) == 8, "wrong alignment");
4431 
4432 /**
4433  * Types of mechanisms used to identify an Android user.
4434  *
4435  * See USER_IDENTIFICATION_ASSOCIATION for more details and example.
4436  */
4437 enum class UserIdentificationAssociationType : int32_t {
4438     /**
4439      * Key used to unlock the car.
4440      */
4441     KEY_FOB = 1,
4442     /**
4443      * Custom mechanism defined by the OEM.
4444      */
4445     CUSTOM_1 = 101,
4446     /**
4447      * Custom mechanism defined by the OEM.
4448      */
4449     CUSTOM_2 = 102,
4450     /**
4451      * Custom mechanism defined by the OEM.
4452      */
4453     CUSTOM_3 = 103,
4454     /**
4455      * Custom mechanism defined by the OEM.
4456      */
4457     CUSTOM_4 = 104,
4458 };
4459 
4460 /**
4461  * Whether a UserIdentificationAssociationType is associate with an Android user.
4462  */
4463 enum class UserIdentificationAssociationValue : int32_t {
4464     /**
4465      * Used when the status of an association could not be determined.
4466      *
4467      * For example, in a set() request, it would indicate a failure to set the given type.
4468      */
4469     UNKNOWN = 1,
4470     /**
4471      * The identification type is associated with the current foreground Android user.
4472      */
4473     ASSOCIATED_CURRENT_USER = 2,
4474     /**
4475      * The identification type is associated with another Android user.
4476      */
4477     ASSOCIATED_ANOTHER_USER = 3,
4478     /**
4479      * The identification type is not associated with any Android user.
4480      */
4481     NOT_ASSOCIATED_ANY_USER = 4,
4482 };
4483 
4484 /**
4485  * Used to set a UserIdentificationAssociationType with an Android user.
4486  */
4487 enum class UserIdentificationAssociationSetValue : int32_t {
4488     /**
4489      * Associate the identification type with the current foreground Android user.
4490      */
4491     ASSOCIATE_CURRENT_USER = 1,
4492     /**
4493      * Disassociate the identification type from the current foreground Android user.
4494      */
4495     DISASSOCIATE_CURRENT_USER = 2,
4496     /**
4497      * Disassociate the identification type from all Android users.
4498      */
4499     DISASSOCIATE_ALL_USERS = 3,
4500 };
4501 
4502 /**
4503  * Defines the format of a get() call to USER_IDENTIFICATION_ASSOCIATION.
4504  *
4505  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4506  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4507  */
4508 struct UserIdentificationGetRequest final {
4509     /**
4510      * Information about the current foreground Android user.
4511      */
4512     ::android::hardware::automotive::vehicle::V2_0::UserInfo userInfo __attribute__ ((aligned(4)));
4513     /**
4514      * Number of association being queried.
4515      */
4516     int32_t numberAssociationTypes __attribute__ ((aligned(4)));
4517     /**
4518      * Types of association being queried.
4519      */
4520     ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType> associationTypes __attribute__ ((aligned(8)));
4521 };
4522 
4523 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, userInfo) == 0, "wrong offset");
4524 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, numberAssociationTypes) == 8, "wrong offset");
4525 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest, associationTypes) == 16, "wrong offset");
4526 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest) == 32, "wrong size");
4527 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest) == 8, "wrong alignment");
4528 
4529 /**
4530  * Defines the format of a set() call to USER_IDENTIFICATION_ASSOCIATION.
4531  *
4532  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4533  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4534  */
4535 struct UserIdentificationSetRequest final {
4536     /**
4537      * Information about the current foreground Android user.
4538      */
4539     ::android::hardware::automotive::vehicle::V2_0::UserInfo userInfo __attribute__ ((aligned(4)));
4540     /**
4541      * Number of association being set.
4542      */
4543     int32_t numberAssociations __attribute__ ((aligned(4)));
4544     /**
4545      * Associations being set.
4546      */
4547     ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue> associations __attribute__ ((aligned(8)));
4548 };
4549 
4550 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, userInfo) == 0, "wrong offset");
4551 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, numberAssociations) == 8, "wrong offset");
4552 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest, associations) == 16, "wrong offset");
4553 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest) == 32, "wrong size");
4554 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest) == 8, "wrong alignment");
4555 
4556 /**
4557  * Defines the result of a USER_IDENTIFICATION_ASSOCIATION - both for get() and set().
4558  *
4559  * NOTE: this struct is not used in the HAL properties directly, it must be converted to
4560  * VehiclePropValue.RawValue through libraries provided by the default Vehicle HAL implementation.
4561  */
4562 struct UserIdentificationResponse final {
4563     /**
4564      * Number of associations being returned.
4565      */
4566     int32_t numberAssociation __attribute__ ((aligned(4)));
4567     /**
4568      * Values associated with the user.
4569      */
4570     ::android::hardware::hidl_vec<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation> associations __attribute__ ((aligned(8)));
4571     /**
4572      * HAL-specific error message.
4573      *
4574      * This argument is optional, and when defined, it's passed "as-is" to the caller. It could be
4575      * used to show custom error messages to the end user.
4576      */
4577     ::android::hardware::hidl_string errorMessage __attribute__ ((aligned(8)));
4578 };
4579 
4580 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, numberAssociation) == 0, "wrong offset");
4581 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, associations) == 8, "wrong offset");
4582 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse, errorMessage) == 24, "wrong offset");
4583 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse) == 40, "wrong size");
4584 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse) == 8, "wrong alignment");
4585 
4586 /**
4587  * Helper struct used when getting a user/identification association type.
4588  */
4589 struct UserIdentificationAssociation final {
4590     ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType type __attribute__ ((aligned(4)));
4591     ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue value __attribute__ ((aligned(4)));
4592 };
4593 
4594 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation, type) == 0, "wrong offset");
4595 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation, value) == 4, "wrong offset");
4596 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation) == 8, "wrong size");
4597 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation) == 4, "wrong alignment");
4598 
4599 /**
4600  * Helper struct used when setting a user/identification association type.
4601  */
4602 struct UserIdentificationSetAssociation final {
4603     ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType type __attribute__ ((aligned(4)));
4604     ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue value __attribute__ ((aligned(4)));
4605 };
4606 
4607 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation, type) == 0, "wrong offset");
4608 // static_assert(offsetof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation, value) == 4, "wrong offset");
4609 // static_assert(sizeof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation) == 8, "wrong size");
4610 // static_assert(__alignof(::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation) == 4, "wrong alignment");
4611 
4612 /**
4613  * A rotary control which can rotate without limits. These controls use HW_ROTARY_INPUT to report
4614  * relative clockwise or counterclockwise motion. They have no absolute position.
4615  */
4616 enum class RotaryInputType : int32_t {
4617     /**
4618      * Main rotary control, typically in the center console, used to navigate the user interface.
4619      */
4620     ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION = 0,
4621     /**
4622      * Volume control for adjusting audio volume.
4623      */
4624     ROTARY_INPUT_TYPE_AUDIO_VOLUME = 1,
4625 };
4626 
4627 //
4628 // type declarations for package
4629 //
4630 
4631 template<typename>
4632 static inline std::string toString(int32_t o);
4633 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType o);
4634 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType o, ::std::ostream* os);
4635 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType rhs) {
4636     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4637 }
4638 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType rhs) {
4639     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4640 }
4641 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType lhs, const int32_t rhs) {
4642     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4643 }
4644 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType rhs) {
4645     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4646 }
4647 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType rhs) {
4648     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4649 }
4650 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType lhs, const int32_t rhs) {
4651     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4652 }
4653 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType e) {
4654     v |= static_cast<int32_t>(e);
4655     return v;
4656 }
4657 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType e) {
4658     v &= static_cast<int32_t>(e);
4659     return v;
4660 }
4661 
4662 template<typename>
4663 static inline std::string toString(int32_t o);
4664 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleArea o);
4665 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleArea o, ::std::ostream* os);
4666 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleArea lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleArea rhs) {
4667     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4668 }
4669 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleArea rhs) {
4670     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4671 }
4672 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleArea lhs, const int32_t rhs) {
4673     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4674 }
4675 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleArea lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleArea rhs) {
4676     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4677 }
4678 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleArea rhs) {
4679     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4680 }
4681 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleArea lhs, const int32_t rhs) {
4682     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4683 }
4684 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleArea e) {
4685     v |= static_cast<int32_t>(e);
4686     return v;
4687 }
4688 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleArea e) {
4689     v &= static_cast<int32_t>(e);
4690     return v;
4691 }
4692 
4693 template<typename>
4694 static inline std::string toString(int32_t o);
4695 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup o);
4696 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup o, ::std::ostream* os);
4697 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup rhs) {
4698     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4699 }
4700 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup rhs) {
4701     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4702 }
4703 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup lhs, const int32_t rhs) {
4704     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4705 }
4706 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup rhs) {
4707     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4708 }
4709 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup rhs) {
4710     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4711 }
4712 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup lhs, const int32_t rhs) {
4713     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4714 }
4715 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup e) {
4716     v |= static_cast<int32_t>(e);
4717     return v;
4718 }
4719 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup e) {
4720     v &= static_cast<int32_t>(e);
4721     return v;
4722 }
4723 
4724 template<typename>
4725 static inline std::string toString(int32_t o);
4726 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleProperty o);
4727 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleProperty o, ::std::ostream* os);
4728 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty rhs) {
4729     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4730 }
4731 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty rhs) {
4732     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4733 }
4734 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty lhs, const int32_t rhs) {
4735     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4736 }
4737 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty rhs) {
4738     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4739 }
4740 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty rhs) {
4741     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4742 }
4743 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty lhs, const int32_t rhs) {
4744     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4745 }
4746 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty e) {
4747     v |= static_cast<int32_t>(e);
4748     return v;
4749 }
4750 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleProperty e) {
4751     v &= static_cast<int32_t>(e);
4752     return v;
4753 }
4754 
4755 template<typename>
4756 static inline std::string toString(int32_t o);
4757 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o);
4758 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o, ::std::ostream* os);
4759 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission rhs) {
4760     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4761 }
4762 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission rhs) {
4763     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4764 }
4765 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission lhs, const int32_t rhs) {
4766     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4767 }
4768 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission rhs) {
4769     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4770 }
4771 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission rhs) {
4772     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4773 }
4774 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission lhs, const int32_t rhs) {
4775     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4776 }
4777 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission e) {
4778     v |= static_cast<int32_t>(e);
4779     return v;
4780 }
4781 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission e) {
4782     v &= static_cast<int32_t>(e);
4783     return v;
4784 }
4785 
4786 template<typename>
4787 static inline std::string toString(int32_t o);
4788 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState o);
4789 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState o, ::std::ostream* os);
4790 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState rhs) {
4791     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4792 }
4793 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState rhs) {
4794     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4795 }
4796 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState lhs, const int32_t rhs) {
4797     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4798 }
4799 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState rhs) {
4800     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4801 }
4802 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState rhs) {
4803     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4804 }
4805 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState lhs, const int32_t rhs) {
4806     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4807 }
4808 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState e) {
4809     v |= static_cast<int32_t>(e);
4810     return v;
4811 }
4812 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState e) {
4813     v &= static_cast<int32_t>(e);
4814     return v;
4815 }
4816 
4817 template<typename>
4818 static inline std::string toString(int32_t o);
4819 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o);
4820 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o, ::std::ostream* os);
4821 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState rhs) {
4822     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4823 }
4824 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState rhs) {
4825     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4826 }
4827 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState lhs, const int32_t rhs) {
4828     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4829 }
4830 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState rhs) {
4831     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4832 }
4833 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState rhs) {
4834     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4835 }
4836 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState lhs, const int32_t rhs) {
4837     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4838 }
4839 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState e) {
4840     v |= static_cast<int32_t>(e);
4841     return v;
4842 }
4843 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightState e) {
4844     v &= static_cast<int32_t>(e);
4845     return v;
4846 }
4847 
4848 template<typename>
4849 static inline std::string toString(int32_t o);
4850 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch o);
4851 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch o, ::std::ostream* os);
4852 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch rhs) {
4853     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4854 }
4855 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch rhs) {
4856     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4857 }
4858 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch lhs, const int32_t rhs) {
4859     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4860 }
4861 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch rhs) {
4862     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4863 }
4864 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch rhs) {
4865     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4866 }
4867 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch lhs, const int32_t rhs) {
4868     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4869 }
4870 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch e) {
4871     v |= static_cast<int32_t>(e);
4872     return v;
4873 }
4874 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch e) {
4875     v &= static_cast<int32_t>(e);
4876     return v;
4877 }
4878 
4879 template<typename>
4880 static inline std::string toString(int32_t o);
4881 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvConnectorType o);
4882 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvConnectorType o, ::std::ostream* os);
4883 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType lhs, const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType rhs) {
4884     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4885 }
4886 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType rhs) {
4887     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4888 }
4889 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType lhs, const int32_t rhs) {
4890     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4891 }
4892 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType lhs, const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType rhs) {
4893     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4894 }
4895 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType rhs) {
4896     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4897 }
4898 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType lhs, const int32_t rhs) {
4899     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4900 }
4901 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType e) {
4902     v |= static_cast<int32_t>(e);
4903     return v;
4904 }
4905 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::EvConnectorType e) {
4906     v &= static_cast<int32_t>(e);
4907     return v;
4908 }
4909 
4910 template<typename>
4911 static inline std::string toString(int32_t o);
4912 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::PortLocationType o);
4913 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::PortLocationType o, ::std::ostream* os);
4914 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::PortLocationType lhs, const ::android::hardware::automotive::vehicle::V2_0::PortLocationType rhs) {
4915     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4916 }
4917 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::PortLocationType rhs) {
4918     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4919 }
4920 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::PortLocationType lhs, const int32_t rhs) {
4921     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4922 }
4923 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::PortLocationType lhs, const ::android::hardware::automotive::vehicle::V2_0::PortLocationType rhs) {
4924     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4925 }
4926 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::PortLocationType rhs) {
4927     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4928 }
4929 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::PortLocationType lhs, const int32_t rhs) {
4930     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4931 }
4932 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::PortLocationType e) {
4933     v |= static_cast<int32_t>(e);
4934     return v;
4935 }
4936 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::PortLocationType e) {
4937     v &= static_cast<int32_t>(e);
4938     return v;
4939 }
4940 
4941 template<typename>
4942 static inline std::string toString(int32_t o);
4943 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::FuelType o);
4944 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::FuelType o, ::std::ostream* os);
4945 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::FuelType lhs, const ::android::hardware::automotive::vehicle::V2_0::FuelType rhs) {
4946     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4947 }
4948 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::FuelType rhs) {
4949     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4950 }
4951 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::FuelType lhs, const int32_t rhs) {
4952     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4953 }
4954 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::FuelType lhs, const ::android::hardware::automotive::vehicle::V2_0::FuelType rhs) {
4955     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4956 }
4957 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::FuelType rhs) {
4958     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4959 }
4960 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::FuelType lhs, const int32_t rhs) {
4961     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4962 }
4963 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::FuelType e) {
4964     v |= static_cast<int32_t>(e);
4965     return v;
4966 }
4967 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::FuelType e) {
4968     v &= static_cast<int32_t>(e);
4969     return v;
4970 }
4971 
4972 template<typename>
4973 static inline std::string toString(int32_t o);
4974 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection o);
4975 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection o, ::std::ostream* os);
4976 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection rhs) {
4977     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
4978 }
4979 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection rhs) {
4980     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
4981 }
4982 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection lhs, const int32_t rhs) {
4983     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
4984 }
4985 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection rhs) {
4986     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
4987 }
4988 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection rhs) {
4989     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
4990 }
4991 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection lhs, const int32_t rhs) {
4992     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
4993 }
4994 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection e) {
4995     v |= static_cast<int32_t>(e);
4996     return v;
4997 }
4998 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection e) {
4999     v &= static_cast<int32_t>(e);
5000     return v;
5001 }
5002 
5003 template<typename>
5004 static inline std::string toString(int32_t o);
5005 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel o);
5006 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel o, ::std::ostream* os);
5007 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel rhs) {
5008     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5009 }
5010 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel rhs) {
5011     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5012 }
5013 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel lhs, const int32_t rhs) {
5014     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5015 }
5016 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel rhs) {
5017     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5018 }
5019 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel rhs) {
5020     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5021 }
5022 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel lhs, const int32_t rhs) {
5023     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5024 }
5025 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel e) {
5026     v |= static_cast<int32_t>(e);
5027     return v;
5028 }
5029 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel e) {
5030     v &= static_cast<int32_t>(e);
5031     return v;
5032 }
5033 
5034 template<typename>
5035 static inline std::string toString(int32_t o);
5036 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag o);
5037 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag o, ::std::ostream* os);
5038 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag rhs) {
5039     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5040 }
5041 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag rhs) {
5042     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5043 }
5044 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag lhs, const int32_t rhs) {
5045     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5046 }
5047 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag rhs) {
5048     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5049 }
5050 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag rhs) {
5051     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5052 }
5053 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag lhs, const int32_t rhs) {
5054     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5055 }
5056 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag e) {
5057     v |= static_cast<int32_t>(e);
5058     return v;
5059 }
5060 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag e) {
5061     v &= static_cast<int32_t>(e);
5062     return v;
5063 }
5064 
5065 template<typename>
5066 static inline std::string toString(int32_t o);
5067 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq o);
5068 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq o, ::std::ostream* os);
5069 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq rhs) {
5070     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5071 }
5072 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq rhs) {
5073     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5074 }
5075 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq lhs, const int32_t rhs) {
5076     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5077 }
5078 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq rhs) {
5079     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5080 }
5081 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq rhs) {
5082     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5083 }
5084 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq lhs, const int32_t rhs) {
5085     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5086 }
5087 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq e) {
5088     v |= static_cast<int32_t>(e);
5089     return v;
5090 }
5091 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq e) {
5092     v &= static_cast<int32_t>(e);
5093     return v;
5094 }
5095 
5096 template<typename>
5097 static inline std::string toString(int32_t o);
5098 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex o);
5099 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex o, ::std::ostream* os);
5100 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex rhs) {
5101     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5102 }
5103 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex rhs) {
5104     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5105 }
5106 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex lhs, const int32_t rhs) {
5107     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5108 }
5109 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex rhs) {
5110     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5111 }
5112 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex rhs) {
5113     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5114 }
5115 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex lhs, const int32_t rhs) {
5116     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5117 }
5118 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex e) {
5119     v |= static_cast<int32_t>(e);
5120     return v;
5121 }
5122 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex e) {
5123     v &= static_cast<int32_t>(e);
5124     return v;
5125 }
5126 
5127 template<typename>
5128 static inline std::string toString(int32_t o);
5129 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam o);
5130 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam o, ::std::ostream* os);
5131 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam rhs) {
5132     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5133 }
5134 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam rhs) {
5135     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5136 }
5137 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam lhs, const int32_t rhs) {
5138     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5139 }
5140 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam rhs) {
5141     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5142 }
5143 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam rhs) {
5144     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5145 }
5146 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam lhs, const int32_t rhs) {
5147     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5148 }
5149 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam e) {
5150     v |= static_cast<int32_t>(e);
5151     return v;
5152 }
5153 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam e) {
5154     v &= static_cast<int32_t>(e);
5155     return v;
5156 }
5157 
5158 template<typename>
5159 static inline std::string toString(int32_t o);
5160 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport o);
5161 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport o, ::std::ostream* os);
5162 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport rhs) {
5163     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5164 }
5165 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport rhs) {
5166     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5167 }
5168 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport lhs, const int32_t rhs) {
5169     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5170 }
5171 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport rhs) {
5172     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5173 }
5174 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport rhs) {
5175     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5176 }
5177 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport lhs, const int32_t rhs) {
5178     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5179 }
5180 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport e) {
5181     v |= static_cast<int32_t>(e);
5182     return v;
5183 }
5184 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport e) {
5185     v &= static_cast<int32_t>(e);
5186     return v;
5187 }
5188 
5189 template<typename>
5190 static inline std::string toString(int32_t o);
5191 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction o);
5192 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction o, ::std::ostream* os);
5193 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction rhs) {
5194     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5195 }
5196 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction rhs) {
5197     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5198 }
5199 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction lhs, const int32_t rhs) {
5200     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5201 }
5202 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction rhs) {
5203     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5204 }
5205 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction rhs) {
5206     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5207 }
5208 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction lhs, const int32_t rhs) {
5209     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5210 }
5211 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction e) {
5212     v |= static_cast<int32_t>(e);
5213     return v;
5214 }
5215 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction e) {
5216     v &= static_cast<int32_t>(e);
5217     return v;
5218 }
5219 
5220 template<typename>
5221 static inline std::string toString(int32_t o);
5222 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay o);
5223 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay o, ::std::ostream* os);
5224 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay rhs) {
5225     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5226 }
5227 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay rhs) {
5228     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5229 }
5230 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay lhs, const int32_t rhs) {
5231     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5232 }
5233 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay rhs) {
5234     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5235 }
5236 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay rhs) {
5237     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5238 }
5239 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay lhs, const int32_t rhs) {
5240     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5241 }
5242 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay e) {
5243     v |= static_cast<int32_t>(e);
5244     return v;
5245 }
5246 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay e) {
5247     v &= static_cast<int32_t>(e);
5248     return v;
5249 }
5250 
5251 template<typename>
5252 static inline std::string toString(int32_t o);
5253 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleUnit o);
5254 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleUnit o, ::std::ostream* os);
5255 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit rhs) {
5256     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5257 }
5258 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit rhs) {
5259     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5260 }
5261 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit lhs, const int32_t rhs) {
5262     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5263 }
5264 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit rhs) {
5265     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5266 }
5267 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit rhs) {
5268     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5269 }
5270 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit lhs, const int32_t rhs) {
5271     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5272 }
5273 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit e) {
5274     v |= static_cast<int32_t>(e);
5275     return v;
5276 }
5277 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleUnit e) {
5278     v &= static_cast<int32_t>(e);
5279     return v;
5280 }
5281 
5282 template<typename>
5283 static inline std::string toString(int32_t o);
5284 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode o);
5285 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode o, ::std::ostream* os);
5286 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode rhs) {
5287     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5288 }
5289 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode rhs) {
5290     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5291 }
5292 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode lhs, const int32_t rhs) {
5293     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5294 }
5295 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode rhs) {
5296     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5297 }
5298 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode rhs) {
5299     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5300 }
5301 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode lhs, const int32_t rhs) {
5302     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5303 }
5304 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode e) {
5305     v |= static_cast<int32_t>(e);
5306     return v;
5307 }
5308 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode e) {
5309     v &= static_cast<int32_t>(e);
5310     return v;
5311 }
5312 
5313 template<typename>
5314 static inline std::string toString(int32_t o);
5315 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess o);
5316 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess o, ::std::ostream* os);
5317 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess rhs) {
5318     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5319 }
5320 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess rhs) {
5321     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5322 }
5323 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess lhs, const int32_t rhs) {
5324     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5325 }
5326 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess rhs) {
5327     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5328 }
5329 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess rhs) {
5330     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5331 }
5332 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess lhs, const int32_t rhs) {
5333     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5334 }
5335 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess e) {
5336     v |= static_cast<int32_t>(e);
5337     return v;
5338 }
5339 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess e) {
5340     v &= static_cast<int32_t>(e);
5341     return v;
5342 }
5343 
5344 template<typename>
5345 static inline std::string toString(int32_t o);
5346 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus o);
5347 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus o, ::std::ostream* os);
5348 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus rhs) {
5349     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5350 }
5351 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus rhs) {
5352     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5353 }
5354 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus lhs, const int32_t rhs) {
5355     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5356 }
5357 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus rhs) {
5358     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5359 }
5360 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus rhs) {
5361     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5362 }
5363 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus lhs, const int32_t rhs) {
5364     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5365 }
5366 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus e) {
5367     v |= static_cast<int32_t>(e);
5368     return v;
5369 }
5370 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus e) {
5371     v &= static_cast<int32_t>(e);
5372     return v;
5373 }
5374 
5375 template<typename>
5376 static inline std::string toString(int32_t o);
5377 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleGear o);
5378 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleGear o, ::std::ostream* os);
5379 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleGear lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleGear rhs) {
5380     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5381 }
5382 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleGear rhs) {
5383     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5384 }
5385 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleGear lhs, const int32_t rhs) {
5386     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5387 }
5388 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleGear lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleGear rhs) {
5389     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5390 }
5391 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleGear rhs) {
5392     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5393 }
5394 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleGear lhs, const int32_t rhs) {
5395     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5396 }
5397 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleGear e) {
5398     v |= static_cast<int32_t>(e);
5399     return v;
5400 }
5401 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleGear e) {
5402     v &= static_cast<int32_t>(e);
5403     return v;
5404 }
5405 
5406 template<typename>
5407 static inline std::string toString(int32_t o);
5408 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat o);
5409 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat o, ::std::ostream* os);
5410 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat rhs) {
5411     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5412 }
5413 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat rhs) {
5414     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5415 }
5416 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat lhs, const int32_t rhs) {
5417     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5418 }
5419 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat rhs) {
5420     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5421 }
5422 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat rhs) {
5423     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5424 }
5425 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat lhs, const int32_t rhs) {
5426     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5427 }
5428 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat e) {
5429     v |= static_cast<int32_t>(e);
5430     return v;
5431 }
5432 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat e) {
5433     v &= static_cast<int32_t>(e);
5434     return v;
5435 }
5436 
5437 template<typename>
5438 static inline std::string toString(int32_t o);
5439 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow o);
5440 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow o, ::std::ostream* os);
5441 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow rhs) {
5442     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5443 }
5444 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow rhs) {
5445     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5446 }
5447 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow lhs, const int32_t rhs) {
5448     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5449 }
5450 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow rhs) {
5451     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5452 }
5453 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow rhs) {
5454     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5455 }
5456 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow lhs, const int32_t rhs) {
5457     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5458 }
5459 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow e) {
5460     v |= static_cast<int32_t>(e);
5461     return v;
5462 }
5463 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow e) {
5464     v &= static_cast<int32_t>(e);
5465     return v;
5466 }
5467 
5468 template<typename>
5469 static inline std::string toString(int32_t o);
5470 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor o);
5471 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor o, ::std::ostream* os);
5472 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor rhs) {
5473     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5474 }
5475 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor rhs) {
5476     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5477 }
5478 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor lhs, const int32_t rhs) {
5479     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5480 }
5481 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor rhs) {
5482     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5483 }
5484 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor rhs) {
5485     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5486 }
5487 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor lhs, const int32_t rhs) {
5488     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5489 }
5490 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor e) {
5491     v |= static_cast<int32_t>(e);
5492     return v;
5493 }
5494 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor e) {
5495     v &= static_cast<int32_t>(e);
5496     return v;
5497 }
5498 
5499 template<typename>
5500 static inline std::string toString(int32_t o);
5501 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror o);
5502 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror o, ::std::ostream* os);
5503 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror rhs) {
5504     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5505 }
5506 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror rhs) {
5507     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5508 }
5509 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror lhs, const int32_t rhs) {
5510     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5511 }
5512 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror rhs) {
5513     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5514 }
5515 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror rhs) {
5516     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5517 }
5518 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror lhs, const int32_t rhs) {
5519     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5520 }
5521 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror e) {
5522     v |= static_cast<int32_t>(e);
5523     return v;
5524 }
5525 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror e) {
5526     v &= static_cast<int32_t>(e);
5527     return v;
5528 }
5529 
5530 template<typename>
5531 static inline std::string toString(int32_t o);
5532 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal o);
5533 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal o, ::std::ostream* os);
5534 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal rhs) {
5535     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5536 }
5537 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal rhs) {
5538     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5539 }
5540 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal lhs, const int32_t rhs) {
5541     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5542 }
5543 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal rhs) {
5544     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5545 }
5546 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal rhs) {
5547     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5548 }
5549 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal lhs, const int32_t rhs) {
5550     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5551 }
5552 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal e) {
5553     v |= static_cast<int32_t>(e);
5554     return v;
5555 }
5556 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal e) {
5557     v &= static_cast<int32_t>(e);
5558     return v;
5559 }
5560 
5561 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& o);
5562 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& o, ::std::ostream*);
5563 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& rhs);
5564 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& rhs);
5565 
5566 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& o);
5567 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& o, ::std::ostream*);
5568 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& rhs);
5569 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& rhs);
5570 
5571 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& o);
5572 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& o, ::std::ostream*);
5573 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& rhs);
5574 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& rhs);
5575 
5576 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& o);
5577 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& o, ::std::ostream*);
5578 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& rhs);
5579 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& rhs);
5580 
5581 template<typename>
5582 static inline std::string toString(int32_t o);
5583 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState o);
5584 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState o, ::std::ostream* os);
5585 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState rhs) {
5586     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5587 }
5588 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState rhs) {
5589     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5590 }
5591 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState lhs, const int32_t rhs) {
5592     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5593 }
5594 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState rhs) {
5595     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5596 }
5597 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState rhs) {
5598     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5599 }
5600 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState lhs, const int32_t rhs) {
5601     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5602 }
5603 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState e) {
5604     v |= static_cast<int32_t>(e);
5605     return v;
5606 }
5607 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState e) {
5608     v &= static_cast<int32_t>(e);
5609     return v;
5610 }
5611 
5612 template<typename>
5613 static inline std::string toString(int32_t o);
5614 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags o);
5615 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags o, ::std::ostream* os);
5616 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags rhs) {
5617     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5618 }
5619 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags rhs) {
5620     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5621 }
5622 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags lhs, const int32_t rhs) {
5623     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5624 }
5625 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags rhs) {
5626     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5627 }
5628 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags rhs) {
5629     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5630 }
5631 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags lhs, const int32_t rhs) {
5632     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5633 }
5634 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags e) {
5635     v |= static_cast<int32_t>(e);
5636     return v;
5637 }
5638 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags e) {
5639     v &= static_cast<int32_t>(e);
5640     return v;
5641 }
5642 
5643 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& o);
5644 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& o, ::std::ostream*);
5645 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& rhs);
5646 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& rhs);
5647 
5648 template<typename>
5649 static inline std::string toString(int32_t o);
5650 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::StatusCode o);
5651 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::StatusCode o, ::std::ostream* os);
5652 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::StatusCode lhs, const ::android::hardware::automotive::vehicle::V2_0::StatusCode rhs) {
5653     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5654 }
5655 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::StatusCode rhs) {
5656     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5657 }
5658 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::StatusCode lhs, const int32_t rhs) {
5659     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5660 }
5661 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::StatusCode lhs, const ::android::hardware::automotive::vehicle::V2_0::StatusCode rhs) {
5662     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5663 }
5664 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::StatusCode rhs) {
5665     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5666 }
5667 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::StatusCode lhs, const int32_t rhs) {
5668     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5669 }
5670 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::StatusCode e) {
5671     v |= static_cast<int32_t>(e);
5672     return v;
5673 }
5674 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::StatusCode e) {
5675     v &= static_cast<int32_t>(e);
5676     return v;
5677 }
5678 
5679 template<typename>
5680 static inline std::string toString(int32_t o);
5681 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel o);
5682 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel o, ::std::ostream* os);
5683 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel rhs) {
5684     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5685 }
5686 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel rhs) {
5687     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5688 }
5689 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel lhs, const int32_t rhs) {
5690     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5691 }
5692 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel rhs) {
5693     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5694 }
5695 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel rhs) {
5696     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5697 }
5698 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel lhs, const int32_t rhs) {
5699     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5700 }
5701 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel e) {
5702     v |= static_cast<int32_t>(e);
5703     return v;
5704 }
5705 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel e) {
5706     v &= static_cast<int32_t>(e);
5707     return v;
5708 }
5709 
5710 template<typename>
5711 static inline std::string toString(int32_t o);
5712 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus o);
5713 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus o, ::std::ostream* os);
5714 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus rhs) {
5715     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5716 }
5717 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus rhs) {
5718     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5719 }
5720 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus lhs, const int32_t rhs) {
5721     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5722 }
5723 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus rhs) {
5724     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5725 }
5726 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus rhs) {
5727     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5728 }
5729 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus lhs, const int32_t rhs) {
5730     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5731 }
5732 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus e) {
5733     v |= static_cast<int32_t>(e);
5734     return v;
5735 }
5736 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus e) {
5737     v &= static_cast<int32_t>(e);
5738     return v;
5739 }
5740 
5741 template<typename>
5742 static inline std::string toString(int32_t o);
5743 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind o);
5744 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind o, ::std::ostream* os);
5745 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind rhs) {
5746     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5747 }
5748 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind rhs) {
5749     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5750 }
5751 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind lhs, const int32_t rhs) {
5752     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5753 }
5754 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind rhs) {
5755     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5756 }
5757 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind rhs) {
5758     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5759 }
5760 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind lhs, const int32_t rhs) {
5761     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5762 }
5763 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind e) {
5764     v |= static_cast<int32_t>(e);
5765     return v;
5766 }
5767 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind e) {
5768     v &= static_cast<int32_t>(e);
5769     return v;
5770 }
5771 
5772 template<typename>
5773 static inline std::string toString(int32_t o);
5774 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors o);
5775 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors o, ::std::ostream* os);
5776 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors rhs) {
5777     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5778 }
5779 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors rhs) {
5780     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5781 }
5782 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors lhs, const int32_t rhs) {
5783     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5784 }
5785 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors rhs) {
5786     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5787 }
5788 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors rhs) {
5789     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5790 }
5791 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors lhs, const int32_t rhs) {
5792     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5793 }
5794 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors e) {
5795     v |= static_cast<int32_t>(e);
5796     return v;
5797 }
5798 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors e) {
5799     v &= static_cast<int32_t>(e);
5800     return v;
5801 }
5802 
5803 template<typename>
5804 static inline std::string toString(int32_t o);
5805 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors o);
5806 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors o, ::std::ostream* os);
5807 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors rhs) {
5808     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5809 }
5810 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors rhs) {
5811     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5812 }
5813 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors lhs, const int32_t rhs) {
5814     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5815 }
5816 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors rhs) {
5817     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5818 }
5819 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors rhs) {
5820     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5821 }
5822 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors lhs, const int32_t rhs) {
5823     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5824 }
5825 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors e) {
5826     v |= static_cast<int32_t>(e);
5827     return v;
5828 }
5829 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors e) {
5830     v &= static_cast<int32_t>(e);
5831     return v;
5832 }
5833 
5834 template<typename>
5835 static inline std::string toString(int32_t o);
5836 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors o);
5837 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors o, ::std::ostream* os);
5838 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors rhs) {
5839     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5840 }
5841 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors rhs) {
5842     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5843 }
5844 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors lhs, const int32_t rhs) {
5845     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5846 }
5847 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors rhs) {
5848     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5849 }
5850 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors rhs) {
5851     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5852 }
5853 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors lhs, const int32_t rhs) {
5854     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5855 }
5856 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors e) {
5857     v |= static_cast<int32_t>(e);
5858     return v;
5859 }
5860 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors e) {
5861     v &= static_cast<int32_t>(e);
5862     return v;
5863 }
5864 
5865 template<typename>
5866 static inline std::string toString(int32_t o);
5867 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus o);
5868 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus o, ::std::ostream* os);
5869 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus rhs) {
5870     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5871 }
5872 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus rhs) {
5873     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5874 }
5875 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus lhs, const int32_t rhs) {
5876     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5877 }
5878 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus rhs) {
5879     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5880 }
5881 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus rhs) {
5882     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5883 }
5884 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus lhs, const int32_t rhs) {
5885     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5886 }
5887 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus e) {
5888     v |= static_cast<int32_t>(e);
5889     return v;
5890 }
5891 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus e) {
5892     v &= static_cast<int32_t>(e);
5893     return v;
5894 }
5895 
5896 template<typename>
5897 static inline std::string toString(int32_t o);
5898 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType o);
5899 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType o, ::std::ostream* os);
5900 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType rhs) {
5901     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5902 }
5903 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType rhs) {
5904     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5905 }
5906 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType lhs, const int32_t rhs) {
5907     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5908 }
5909 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType rhs) {
5910     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5911 }
5912 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType rhs) {
5913     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5914 }
5915 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType lhs, const int32_t rhs) {
5916     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5917 }
5918 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType e) {
5919     v |= static_cast<int32_t>(e);
5920     return v;
5921 }
5922 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType e) {
5923     v &= static_cast<int32_t>(e);
5924     return v;
5925 }
5926 
5927 template<typename>
5928 static inline std::string toString(int32_t o);
5929 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex o);
5930 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex o, ::std::ostream* os);
5931 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex rhs) {
5932     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5933 }
5934 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex rhs) {
5935     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5936 }
5937 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex lhs, const int32_t rhs) {
5938     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5939 }
5940 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex rhs) {
5941     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5942 }
5943 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex rhs) {
5944     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5945 }
5946 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex lhs, const int32_t rhs) {
5947     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5948 }
5949 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex e) {
5950     v |= static_cast<int32_t>(e);
5951     return v;
5952 }
5953 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex e) {
5954     v &= static_cast<int32_t>(e);
5955     return v;
5956 }
5957 
5958 template<typename>
5959 static inline std::string toString(int32_t o);
5960 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex o);
5961 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex o, ::std::ostream* os);
5962 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex rhs) {
5963     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5964 }
5965 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex rhs) {
5966     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5967 }
5968 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex lhs, const int32_t rhs) {
5969     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
5970 }
5971 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex rhs) {
5972     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
5973 }
5974 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex rhs) {
5975     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
5976 }
5977 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex lhs, const int32_t rhs) {
5978     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
5979 }
5980 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex e) {
5981     v |= static_cast<int32_t>(e);
5982     return v;
5983 }
5984 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex e) {
5985     v &= static_cast<int32_t>(e);
5986     return v;
5987 }
5988 
5989 template<typename>
5990 static inline std::string toString(int32_t o);
5991 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageType o);
5992 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageType o, ::std::ostream* os);
5993 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType rhs) {
5994     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
5995 }
5996 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType rhs) {
5997     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
5998 }
5999 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType lhs, const int32_t rhs) {
6000     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6001 }
6002 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType rhs) {
6003     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6004 }
6005 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType rhs) {
6006     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6007 }
6008 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType lhs, const int32_t rhs) {
6009     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6010 }
6011 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType e) {
6012     v |= static_cast<int32_t>(e);
6013     return v;
6014 }
6015 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageType e) {
6016     v &= static_cast<int32_t>(e);
6017     return v;
6018 }
6019 
6020 template<typename>
6021 static inline std::string toString(int32_t o);
6022 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex o);
6023 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex o, ::std::ostream* os);
6024 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex rhs) {
6025     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6026 }
6027 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex rhs) {
6028     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6029 }
6030 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex lhs, const int32_t rhs) {
6031     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6032 }
6033 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex rhs) {
6034     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6035 }
6036 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex rhs) {
6037     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6038 }
6039 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex lhs, const int32_t rhs) {
6040     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6041 }
6042 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex e) {
6043     v |= static_cast<int32_t>(e);
6044     return v;
6045 }
6046 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex e) {
6047     v &= static_cast<int32_t>(e);
6048     return v;
6049 }
6050 
6051 template<typename>
6052 static inline std::string toString(int32_t o);
6053 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex o);
6054 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex o, ::std::ostream* os);
6055 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex rhs) {
6056     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6057 }
6058 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex rhs) {
6059     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6060 }
6061 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex lhs, const int32_t rhs) {
6062     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6063 }
6064 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex rhs) {
6065     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6066 }
6067 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex rhs) {
6068     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6069 }
6070 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex lhs, const int32_t rhs) {
6071     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6072 }
6073 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex e) {
6074     v |= static_cast<int32_t>(e);
6075     return v;
6076 }
6077 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex e) {
6078     v &= static_cast<int32_t>(e);
6079     return v;
6080 }
6081 
6082 template<typename>
6083 static inline std::string toString(int32_t o);
6084 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex o);
6085 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex o, ::std::ostream* os);
6086 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex rhs) {
6087     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6088 }
6089 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex rhs) {
6090     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6091 }
6092 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex lhs, const int32_t rhs) {
6093     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6094 }
6095 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex rhs) {
6096     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6097 }
6098 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex rhs) {
6099     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6100 }
6101 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex lhs, const int32_t rhs) {
6102     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6103 }
6104 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex e) {
6105     v |= static_cast<int32_t>(e);
6106     return v;
6107 }
6108 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex e) {
6109     v &= static_cast<int32_t>(e);
6110     return v;
6111 }
6112 
6113 template<typename>
6114 static inline std::string toString(int32_t o);
6115 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex o);
6116 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex o, ::std::ostream* os);
6117 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex rhs) {
6118     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6119 }
6120 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex rhs) {
6121     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6122 }
6123 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex lhs, const int32_t rhs) {
6124     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6125 }
6126 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex rhs) {
6127     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6128 }
6129 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex rhs) {
6130     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6131 }
6132 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex lhs, const int32_t rhs) {
6133     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6134 }
6135 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex e) {
6136     v |= static_cast<int32_t>(e);
6137     return v;
6138 }
6139 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex e) {
6140     v &= static_cast<int32_t>(e);
6141     return v;
6142 }
6143 
6144 template<typename>
6145 static inline std::string toString(int32_t o);
6146 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex o);
6147 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex o, ::std::ostream* os);
6148 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex rhs) {
6149     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6150 }
6151 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex rhs) {
6152     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6153 }
6154 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex lhs, const int32_t rhs) {
6155     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6156 }
6157 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex rhs) {
6158     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6159 }
6160 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex rhs) {
6161     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6162 }
6163 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex lhs, const int32_t rhs) {
6164     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6165 }
6166 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex e) {
6167     v |= static_cast<int32_t>(e);
6168     return v;
6169 }
6170 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex e) {
6171     v &= static_cast<int32_t>(e);
6172     return v;
6173 }
6174 
6175 template<typename>
6176 static inline std::string toString(int32_t o);
6177 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex o);
6178 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex o, ::std::ostream* os);
6179 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex rhs) {
6180     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6181 }
6182 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex rhs) {
6183     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6184 }
6185 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex lhs, const int32_t rhs) {
6186     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6187 }
6188 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex rhs) {
6189     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6190 }
6191 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex rhs) {
6192     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6193 }
6194 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex lhs, const int32_t rhs) {
6195     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6196 }
6197 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex e) {
6198     v |= static_cast<int32_t>(e);
6199     return v;
6200 }
6201 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex e) {
6202     v &= static_cast<int32_t>(e);
6203     return v;
6204 }
6205 
6206 template<typename>
6207 static inline std::string toString(int32_t o);
6208 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex o);
6209 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex o, ::std::ostream* os);
6210 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex rhs) {
6211     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6212 }
6213 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex rhs) {
6214     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6215 }
6216 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex lhs, const int32_t rhs) {
6217     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6218 }
6219 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex rhs) {
6220     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6221 }
6222 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex rhs) {
6223     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6224 }
6225 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex lhs, const int32_t rhs) {
6226     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6227 }
6228 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex e) {
6229     v |= static_cast<int32_t>(e);
6230     return v;
6231 }
6232 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex e) {
6233     v &= static_cast<int32_t>(e);
6234     return v;
6235 }
6236 
6237 template<typename>
6238 static inline std::string toString(int32_t o);
6239 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex o);
6240 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex o, ::std::ostream* os);
6241 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex rhs) {
6242     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6243 }
6244 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex rhs) {
6245     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6246 }
6247 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex lhs, const int32_t rhs) {
6248     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6249 }
6250 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex rhs) {
6251     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6252 }
6253 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex rhs) {
6254     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6255 }
6256 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex lhs, const int32_t rhs) {
6257     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6258 }
6259 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex e) {
6260     v |= static_cast<int32_t>(e);
6261     return v;
6262 }
6263 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex e) {
6264     v &= static_cast<int32_t>(e);
6265     return v;
6266 }
6267 
6268 template<typename>
6269 static inline std::string toString(int32_t o);
6270 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserFlags o);
6271 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserFlags o, ::std::ostream* os);
6272 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserFlags lhs, const ::android::hardware::automotive::vehicle::V2_0::UserFlags rhs) {
6273     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6274 }
6275 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserFlags rhs) {
6276     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6277 }
6278 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserFlags lhs, const int32_t rhs) {
6279     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6280 }
6281 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserFlags lhs, const ::android::hardware::automotive::vehicle::V2_0::UserFlags rhs) {
6282     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6283 }
6284 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserFlags rhs) {
6285     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6286 }
6287 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserFlags lhs, const int32_t rhs) {
6288     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6289 }
6290 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserFlags e) {
6291     v |= static_cast<int32_t>(e);
6292     return v;
6293 }
6294 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserFlags e) {
6295     v &= static_cast<int32_t>(e);
6296     return v;
6297 }
6298 
6299 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& o);
6300 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& o, ::std::ostream*);
6301 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserInfo& rhs);
6302 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserInfo& rhs);
6303 
6304 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& o);
6305 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& o, ::std::ostream*);
6306 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& rhs);
6307 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& rhs);
6308 
6309 template<typename>
6310 static inline std::string toString(int32_t o);
6311 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType o);
6312 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType o, ::std::ostream* os);
6313 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType rhs) {
6314     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6315 }
6316 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType rhs) {
6317     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6318 }
6319 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType lhs, const int32_t rhs) {
6320     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6321 }
6322 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType rhs) {
6323     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6324 }
6325 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType rhs) {
6326     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6327 }
6328 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType lhs, const int32_t rhs) {
6329     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6330 }
6331 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType e) {
6332     v |= static_cast<int32_t>(e);
6333     return v;
6334 }
6335 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType e) {
6336     v &= static_cast<int32_t>(e);
6337     return v;
6338 }
6339 
6340 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& o);
6341 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& o, ::std::ostream*);
6342 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& rhs);
6343 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& rhs);
6344 
6345 template<typename>
6346 static inline std::string toString(int32_t o);
6347 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction o);
6348 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction o, ::std::ostream* os);
6349 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction rhs) {
6350     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6351 }
6352 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction rhs) {
6353     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6354 }
6355 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction lhs, const int32_t rhs) {
6356     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6357 }
6358 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction rhs) {
6359     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6360 }
6361 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction rhs) {
6362     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6363 }
6364 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction lhs, const int32_t rhs) {
6365     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6366 }
6367 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction e) {
6368     v |= static_cast<int32_t>(e);
6369     return v;
6370 }
6371 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction e) {
6372     v &= static_cast<int32_t>(e);
6373     return v;
6374 }
6375 
6376 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& o);
6377 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& o, ::std::ostream*);
6378 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& rhs);
6379 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& rhs);
6380 
6381 template<typename>
6382 static inline std::string toString(int32_t o);
6383 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType o);
6384 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType o, ::std::ostream* os);
6385 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType rhs) {
6386     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6387 }
6388 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType rhs) {
6389     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6390 }
6391 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType lhs, const int32_t rhs) {
6392     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6393 }
6394 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType rhs) {
6395     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6396 }
6397 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType rhs) {
6398     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6399 }
6400 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType lhs, const int32_t rhs) {
6401     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6402 }
6403 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType e) {
6404     v |= static_cast<int32_t>(e);
6405     return v;
6406 }
6407 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType e) {
6408     v &= static_cast<int32_t>(e);
6409     return v;
6410 }
6411 
6412 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& o);
6413 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& o, ::std::ostream*);
6414 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& rhs);
6415 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& rhs);
6416 
6417 template<typename>
6418 static inline std::string toString(int32_t o);
6419 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus o);
6420 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus o, ::std::ostream* os);
6421 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus rhs) {
6422     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6423 }
6424 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus rhs) {
6425     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6426 }
6427 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus lhs, const int32_t rhs) {
6428     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6429 }
6430 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus rhs) {
6431     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6432 }
6433 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus rhs) {
6434     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6435 }
6436 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus lhs, const int32_t rhs) {
6437     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6438 }
6439 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus e) {
6440     v |= static_cast<int32_t>(e);
6441     return v;
6442 }
6443 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus e) {
6444     v &= static_cast<int32_t>(e);
6445     return v;
6446 }
6447 
6448 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& o);
6449 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& o, ::std::ostream*);
6450 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& rhs);
6451 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& rhs);
6452 
6453 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& o);
6454 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& o, ::std::ostream*);
6455 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& rhs);
6456 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& rhs);
6457 
6458 template<typename>
6459 static inline std::string toString(int32_t o);
6460 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus o);
6461 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus o, ::std::ostream* os);
6462 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus rhs) {
6463     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6464 }
6465 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus rhs) {
6466     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6467 }
6468 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus lhs, const int32_t rhs) {
6469     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6470 }
6471 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus rhs) {
6472     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6473 }
6474 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus rhs) {
6475     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6476 }
6477 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus lhs, const int32_t rhs) {
6478     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6479 }
6480 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus e) {
6481     v |= static_cast<int32_t>(e);
6482     return v;
6483 }
6484 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus e) {
6485     v &= static_cast<int32_t>(e);
6486     return v;
6487 }
6488 
6489 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& o);
6490 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& o, ::std::ostream*);
6491 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& rhs);
6492 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& rhs);
6493 
6494 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& o);
6495 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& o, ::std::ostream*);
6496 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& rhs);
6497 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& rhs);
6498 
6499 template<typename>
6500 static inline std::string toString(int32_t o);
6501 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType o);
6502 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType o, ::std::ostream* os);
6503 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType rhs) {
6504     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6505 }
6506 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType rhs) {
6507     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6508 }
6509 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType lhs, const int32_t rhs) {
6510     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6511 }
6512 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType rhs) {
6513     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6514 }
6515 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType rhs) {
6516     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6517 }
6518 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType lhs, const int32_t rhs) {
6519     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6520 }
6521 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType e) {
6522     v |= static_cast<int32_t>(e);
6523     return v;
6524 }
6525 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType e) {
6526     v &= static_cast<int32_t>(e);
6527     return v;
6528 }
6529 
6530 template<typename>
6531 static inline std::string toString(int32_t o);
6532 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue o);
6533 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue o, ::std::ostream* os);
6534 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue rhs) {
6535     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6536 }
6537 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue rhs) {
6538     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6539 }
6540 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue lhs, const int32_t rhs) {
6541     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6542 }
6543 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue rhs) {
6544     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6545 }
6546 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue rhs) {
6547     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6548 }
6549 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue lhs, const int32_t rhs) {
6550     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6551 }
6552 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue e) {
6553     v |= static_cast<int32_t>(e);
6554     return v;
6555 }
6556 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue e) {
6557     v &= static_cast<int32_t>(e);
6558     return v;
6559 }
6560 
6561 template<typename>
6562 static inline std::string toString(int32_t o);
6563 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue o);
6564 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue o, ::std::ostream* os);
6565 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue rhs) {
6566     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6567 }
6568 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue rhs) {
6569     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6570 }
6571 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue lhs, const int32_t rhs) {
6572     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6573 }
6574 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue rhs) {
6575     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6576 }
6577 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue rhs) {
6578     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6579 }
6580 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue lhs, const int32_t rhs) {
6581     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6582 }
6583 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue e) {
6584     v |= static_cast<int32_t>(e);
6585     return v;
6586 }
6587 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue e) {
6588     v &= static_cast<int32_t>(e);
6589     return v;
6590 }
6591 
6592 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& o);
6593 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& o, ::std::ostream*);
6594 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& rhs);
6595 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& rhs);
6596 
6597 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& o);
6598 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& o, ::std::ostream*);
6599 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& rhs);
6600 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& rhs);
6601 
6602 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& o);
6603 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& o, ::std::ostream*);
6604 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& rhs);
6605 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& rhs);
6606 
6607 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& o);
6608 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& o, ::std::ostream*);
6609 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& rhs);
6610 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& rhs);
6611 
6612 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& o);
6613 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& o, ::std::ostream*);
6614 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& rhs);
6615 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& rhs);
6616 
6617 template<typename>
6618 static inline std::string toString(int32_t o);
6619 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::RotaryInputType o);
6620 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::RotaryInputType o, ::std::ostream* os);
6621 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType lhs, const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType rhs) {
6622     return static_cast<int32_t>(static_cast<int32_t>(lhs) | static_cast<int32_t>(rhs));
6623 }
6624 constexpr int32_t operator|(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType rhs) {
6625     return static_cast<int32_t>(lhs | static_cast<int32_t>(rhs));
6626 }
6627 constexpr int32_t operator|(const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType lhs, const int32_t rhs) {
6628     return static_cast<int32_t>(static_cast<int32_t>(lhs) | rhs);
6629 }
6630 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType lhs, const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType rhs) {
6631     return static_cast<int32_t>(static_cast<int32_t>(lhs) & static_cast<int32_t>(rhs));
6632 }
6633 constexpr int32_t operator&(const int32_t lhs, const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType rhs) {
6634     return static_cast<int32_t>(lhs & static_cast<int32_t>(rhs));
6635 }
6636 constexpr int32_t operator&(const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType lhs, const int32_t rhs) {
6637     return static_cast<int32_t>(static_cast<int32_t>(lhs) & rhs);
6638 }
6639 constexpr int32_t &operator|=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType e) {
6640     v |= static_cast<int32_t>(e);
6641     return v;
6642 }
6643 constexpr int32_t &operator&=(int32_t& v, const ::android::hardware::automotive::vehicle::V2_0::RotaryInputType e) {
6644     v &= static_cast<int32_t>(e);
6645     return v;
6646 }
6647 
6648 //
6649 // type header definitions for package
6650 //
6651 
6652 template<>
6653 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType>(int32_t o) {
6654     using ::android::hardware::details::toHexString;
6655     std::string os;
6656     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType> flipped = 0;
6657     bool first = true;
6658     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::STRING) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::STRING)) {
6659         os += (first ? "" : " | ");
6660         os += "STRING";
6661         first = false;
6662         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::STRING;
6663     }
6664     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BOOLEAN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BOOLEAN)) {
6665         os += (first ? "" : " | ");
6666         os += "BOOLEAN";
6667         first = false;
6668         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BOOLEAN;
6669     }
6670     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32)) {
6671         os += (first ? "" : " | ");
6672         os += "INT32";
6673         first = false;
6674         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32;
6675     }
6676     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32_VEC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32_VEC)) {
6677         os += (first ? "" : " | ");
6678         os += "INT32_VEC";
6679         first = false;
6680         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32_VEC;
6681     }
6682     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64)) {
6683         os += (first ? "" : " | ");
6684         os += "INT64";
6685         first = false;
6686         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64;
6687     }
6688     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64_VEC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64_VEC)) {
6689         os += (first ? "" : " | ");
6690         os += "INT64_VEC";
6691         first = false;
6692         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64_VEC;
6693     }
6694     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT)) {
6695         os += (first ? "" : " | ");
6696         os += "FLOAT";
6697         first = false;
6698         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT;
6699     }
6700     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT_VEC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT_VEC)) {
6701         os += (first ? "" : " | ");
6702         os += "FLOAT_VEC";
6703         first = false;
6704         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT_VEC;
6705     }
6706     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BYTES) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BYTES)) {
6707         os += (first ? "" : " | ");
6708         os += "BYTES";
6709         first = false;
6710         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BYTES;
6711     }
6712     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MIXED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MIXED)) {
6713         os += (first ? "" : " | ");
6714         os += "MIXED";
6715         first = false;
6716         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MIXED;
6717     }
6718     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MASK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MASK)) {
6719         os += (first ? "" : " | ");
6720         os += "MASK";
6721         first = false;
6722         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MASK;
6723     }
6724     if (o != flipped) {
6725         os += (first ? "" : " | ");
6726         os += toHexString(o & (~flipped));
6727     }os += " (";
6728     os += toHexString(o);
6729     os += ")";
6730     return os;
6731 }
6732 
toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType o)6733 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType o) {
6734     using ::android::hardware::details::toHexString;
6735     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::STRING) {
6736         return "STRING";
6737     }
6738     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BOOLEAN) {
6739         return "BOOLEAN";
6740     }
6741     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32) {
6742         return "INT32";
6743     }
6744     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT32_VEC) {
6745         return "INT32_VEC";
6746     }
6747     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64) {
6748         return "INT64";
6749     }
6750     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::INT64_VEC) {
6751         return "INT64_VEC";
6752     }
6753     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT) {
6754         return "FLOAT";
6755     }
6756     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::FLOAT_VEC) {
6757         return "FLOAT_VEC";
6758     }
6759     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::BYTES) {
6760         return "BYTES";
6761     }
6762     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MIXED) {
6763         return "MIXED";
6764     }
6765     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType::MASK) {
6766         return "MASK";
6767     }
6768     std::string os;
6769     os += toHexString(static_cast<int32_t>(o));
6770     return os;
6771 }
6772 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType o,::std::ostream * os)6773 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyType o, ::std::ostream* os) {
6774     *os << toString(o);
6775 }
6776 
6777 template<>
6778 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleArea>(int32_t o) {
6779     using ::android::hardware::details::toHexString;
6780     std::string os;
6781     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleArea> flipped = 0;
6782     bool first = true;
6783     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleArea::GLOBAL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleArea::GLOBAL)) {
6784         os += (first ? "" : " | ");
6785         os += "GLOBAL";
6786         first = false;
6787         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleArea::GLOBAL;
6788     }
6789     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleArea::WINDOW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleArea::WINDOW)) {
6790         os += (first ? "" : " | ");
6791         os += "WINDOW";
6792         first = false;
6793         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleArea::WINDOW;
6794     }
6795     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleArea::MIRROR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleArea::MIRROR)) {
6796         os += (first ? "" : " | ");
6797         os += "MIRROR";
6798         first = false;
6799         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleArea::MIRROR;
6800     }
6801     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleArea::SEAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleArea::SEAT)) {
6802         os += (first ? "" : " | ");
6803         os += "SEAT";
6804         first = false;
6805         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleArea::SEAT;
6806     }
6807     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleArea::DOOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleArea::DOOR)) {
6808         os += (first ? "" : " | ");
6809         os += "DOOR";
6810         first = false;
6811         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleArea::DOOR;
6812     }
6813     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleArea::WHEEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleArea::WHEEL)) {
6814         os += (first ? "" : " | ");
6815         os += "WHEEL";
6816         first = false;
6817         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleArea::WHEEL;
6818     }
6819     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleArea::MASK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleArea::MASK)) {
6820         os += (first ? "" : " | ");
6821         os += "MASK";
6822         first = false;
6823         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleArea::MASK;
6824     }
6825     if (o != flipped) {
6826         os += (first ? "" : " | ");
6827         os += toHexString(o & (~flipped));
6828     }os += " (";
6829     os += toHexString(o);
6830     os += ")";
6831     return os;
6832 }
6833 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleArea o)6834 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleArea o) {
6835     using ::android::hardware::details::toHexString;
6836     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleArea::GLOBAL) {
6837         return "GLOBAL";
6838     }
6839     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleArea::WINDOW) {
6840         return "WINDOW";
6841     }
6842     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleArea::MIRROR) {
6843         return "MIRROR";
6844     }
6845     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleArea::SEAT) {
6846         return "SEAT";
6847     }
6848     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleArea::DOOR) {
6849         return "DOOR";
6850     }
6851     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleArea::WHEEL) {
6852         return "WHEEL";
6853     }
6854     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleArea::MASK) {
6855         return "MASK";
6856     }
6857     std::string os;
6858     os += toHexString(static_cast<int32_t>(o));
6859     return os;
6860 }
6861 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleArea o,::std::ostream * os)6862 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleArea o, ::std::ostream* os) {
6863     *os << toString(o);
6864 }
6865 
6866 template<>
6867 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup>(int32_t o) {
6868     using ::android::hardware::details::toHexString;
6869     std::string os;
6870     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup> flipped = 0;
6871     bool first = true;
6872     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::SYSTEM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::SYSTEM)) {
6873         os += (first ? "" : " | ");
6874         os += "SYSTEM";
6875         first = false;
6876         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::SYSTEM;
6877     }
6878     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::VENDOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::VENDOR)) {
6879         os += (first ? "" : " | ");
6880         os += "VENDOR";
6881         first = false;
6882         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::VENDOR;
6883     }
6884     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::MASK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::MASK)) {
6885         os += (first ? "" : " | ");
6886         os += "MASK";
6887         first = false;
6888         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::MASK;
6889     }
6890     if (o != flipped) {
6891         os += (first ? "" : " | ");
6892         os += toHexString(o & (~flipped));
6893     }os += " (";
6894     os += toHexString(o);
6895     os += ")";
6896     return os;
6897 }
6898 
toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup o)6899 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup o) {
6900     using ::android::hardware::details::toHexString;
6901     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::SYSTEM) {
6902         return "SYSTEM";
6903     }
6904     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::VENDOR) {
6905         return "VENDOR";
6906     }
6907     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup::MASK) {
6908         return "MASK";
6909     }
6910     std::string os;
6911     os += toHexString(static_cast<int32_t>(o));
6912     return os;
6913 }
6914 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup o,::std::ostream * os)6915 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyGroup o, ::std::ostream* os) {
6916     *os << toString(o);
6917 }
6918 
6919 template<>
6920 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleProperty>(int32_t o) {
6921     using ::android::hardware::details::toHexString;
6922     std::string os;
6923     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleProperty> flipped = 0;
6924     bool first = true;
6925     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INVALID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INVALID)) {
6926         os += (first ? "" : " | ");
6927         os += "INVALID";
6928         first = false;
6929         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INVALID;
6930     }
6931     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_VIN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_VIN)) {
6932         os += (first ? "" : " | ");
6933         os += "INFO_VIN";
6934         first = false;
6935         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_VIN;
6936     }
6937     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MAKE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MAKE)) {
6938         os += (first ? "" : " | ");
6939         os += "INFO_MAKE";
6940         first = false;
6941         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MAKE;
6942     }
6943     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL)) {
6944         os += (first ? "" : " | ");
6945         os += "INFO_MODEL";
6946         first = false;
6947         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL;
6948     }
6949     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL_YEAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL_YEAR)) {
6950         os += (first ? "" : " | ");
6951         os += "INFO_MODEL_YEAR";
6952         first = false;
6953         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL_YEAR;
6954     }
6955     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_CAPACITY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_CAPACITY)) {
6956         os += (first ? "" : " | ");
6957         os += "INFO_FUEL_CAPACITY";
6958         first = false;
6959         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_CAPACITY;
6960     }
6961     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_TYPE)) {
6962         os += (first ? "" : " | ");
6963         os += "INFO_FUEL_TYPE";
6964         first = false;
6965         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_TYPE;
6966     }
6967     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_BATTERY_CAPACITY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_BATTERY_CAPACITY)) {
6968         os += (first ? "" : " | ");
6969         os += "INFO_EV_BATTERY_CAPACITY";
6970         first = false;
6971         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_BATTERY_CAPACITY;
6972     }
6973     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_CONNECTOR_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_CONNECTOR_TYPE)) {
6974         os += (first ? "" : " | ");
6975         os += "INFO_EV_CONNECTOR_TYPE";
6976         first = false;
6977         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_CONNECTOR_TYPE;
6978     }
6979     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_DOOR_LOCATION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_DOOR_LOCATION)) {
6980         os += (first ? "" : " | ");
6981         os += "INFO_FUEL_DOOR_LOCATION";
6982         first = false;
6983         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_DOOR_LOCATION;
6984     }
6985     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_PORT_LOCATION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_PORT_LOCATION)) {
6986         os += (first ? "" : " | ");
6987         os += "INFO_EV_PORT_LOCATION";
6988         first = false;
6989         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_PORT_LOCATION;
6990     }
6991     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_DRIVER_SEAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_DRIVER_SEAT)) {
6992         os += (first ? "" : " | ");
6993         os += "INFO_DRIVER_SEAT";
6994         first = false;
6995         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_DRIVER_SEAT;
6996     }
6997     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EXTERIOR_DIMENSIONS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EXTERIOR_DIMENSIONS)) {
6998         os += (first ? "" : " | ");
6999         os += "INFO_EXTERIOR_DIMENSIONS";
7000         first = false;
7001         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EXTERIOR_DIMENSIONS;
7002     }
7003     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS)) {
7004         os += (first ? "" : " | ");
7005         os += "INFO_MULTI_EV_PORT_LOCATIONS";
7006         first = false;
7007         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS;
7008     }
7009     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_ODOMETER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_ODOMETER)) {
7010         os += (first ? "" : " | ");
7011         os += "PERF_ODOMETER";
7012         first = false;
7013         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_ODOMETER;
7014     }
7015     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED)) {
7016         os += (first ? "" : " | ");
7017         os += "PERF_VEHICLE_SPEED";
7018         first = false;
7019         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED;
7020     }
7021     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY)) {
7022         os += (first ? "" : " | ");
7023         os += "PERF_VEHICLE_SPEED_DISPLAY";
7024         first = false;
7025         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY;
7026     }
7027     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_STEERING_ANGLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_STEERING_ANGLE)) {
7028         os += (first ? "" : " | ");
7029         os += "PERF_STEERING_ANGLE";
7030         first = false;
7031         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_STEERING_ANGLE;
7032     }
7033     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_REAR_STEERING_ANGLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_REAR_STEERING_ANGLE)) {
7034         os += (first ? "" : " | ");
7035         os += "PERF_REAR_STEERING_ANGLE";
7036         first = false;
7037         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_REAR_STEERING_ANGLE;
7038     }
7039     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_COOLANT_TEMP) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_COOLANT_TEMP)) {
7040         os += (first ? "" : " | ");
7041         os += "ENGINE_COOLANT_TEMP";
7042         first = false;
7043         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_COOLANT_TEMP;
7044     }
7045     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_LEVEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_LEVEL)) {
7046         os += (first ? "" : " | ");
7047         os += "ENGINE_OIL_LEVEL";
7048         first = false;
7049         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_LEVEL;
7050     }
7051     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_TEMP) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_TEMP)) {
7052         os += (first ? "" : " | ");
7053         os += "ENGINE_OIL_TEMP";
7054         first = false;
7055         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_TEMP;
7056     }
7057     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_RPM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_RPM)) {
7058         os += (first ? "" : " | ");
7059         os += "ENGINE_RPM";
7060         first = false;
7061         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_RPM;
7062     }
7063     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WHEEL_TICK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WHEEL_TICK)) {
7064         os += (first ? "" : " | ");
7065         os += "WHEEL_TICK";
7066         first = false;
7067         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WHEEL_TICK;
7068     }
7069     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL)) {
7070         os += (first ? "" : " | ");
7071         os += "FUEL_LEVEL";
7072         first = false;
7073         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL;
7074     }
7075     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_DOOR_OPEN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_DOOR_OPEN)) {
7076         os += (first ? "" : " | ");
7077         os += "FUEL_DOOR_OPEN";
7078         first = false;
7079         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_DOOR_OPEN;
7080     }
7081     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_LEVEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_LEVEL)) {
7082         os += (first ? "" : " | ");
7083         os += "EV_BATTERY_LEVEL";
7084         first = false;
7085         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_LEVEL;
7086     }
7087     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_OPEN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_OPEN)) {
7088         os += (first ? "" : " | ");
7089         os += "EV_CHARGE_PORT_OPEN";
7090         first = false;
7091         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_OPEN;
7092     }
7093     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_CONNECTED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_CONNECTED)) {
7094         os += (first ? "" : " | ");
7095         os += "EV_CHARGE_PORT_CONNECTED";
7096         first = false;
7097         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_CONNECTED;
7098     }
7099     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE)) {
7100         os += (first ? "" : " | ");
7101         os += "EV_BATTERY_INSTANTANEOUS_CHARGE_RATE";
7102         first = false;
7103         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE;
7104     }
7105     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::RANGE_REMAINING) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::RANGE_REMAINING)) {
7106         os += (first ? "" : " | ");
7107         os += "RANGE_REMAINING";
7108         first = false;
7109         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::RANGE_REMAINING;
7110     }
7111     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE)) {
7112         os += (first ? "" : " | ");
7113         os += "TIRE_PRESSURE";
7114         first = false;
7115         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE;
7116     }
7117     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::GEAR_SELECTION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::GEAR_SELECTION)) {
7118         os += (first ? "" : " | ");
7119         os += "GEAR_SELECTION";
7120         first = false;
7121         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::GEAR_SELECTION;
7122     }
7123     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_GEAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_GEAR)) {
7124         os += (first ? "" : " | ");
7125         os += "CURRENT_GEAR";
7126         first = false;
7127         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_GEAR;
7128     }
7129     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_ON)) {
7130         os += (first ? "" : " | ");
7131         os += "PARKING_BRAKE_ON";
7132         first = false;
7133         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_ON;
7134     }
7135     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_AUTO_APPLY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_AUTO_APPLY)) {
7136         os += (first ? "" : " | ");
7137         os += "PARKING_BRAKE_AUTO_APPLY";
7138         first = false;
7139         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_AUTO_APPLY;
7140     }
7141     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL_LOW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL_LOW)) {
7142         os += (first ? "" : " | ");
7143         os += "FUEL_LEVEL_LOW";
7144         first = false;
7145         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL_LOW;
7146     }
7147     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::NIGHT_MODE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::NIGHT_MODE)) {
7148         os += (first ? "" : " | ");
7149         os += "NIGHT_MODE";
7150         first = false;
7151         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::NIGHT_MODE;
7152     }
7153     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TURN_SIGNAL_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TURN_SIGNAL_STATE)) {
7154         os += (first ? "" : " | ");
7155         os += "TURN_SIGNAL_STATE";
7156         first = false;
7157         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TURN_SIGNAL_STATE;
7158     }
7159     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::IGNITION_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::IGNITION_STATE)) {
7160         os += (first ? "" : " | ");
7161         os += "IGNITION_STATE";
7162         first = false;
7163         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::IGNITION_STATE;
7164     }
7165     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ABS_ACTIVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ABS_ACTIVE)) {
7166         os += (first ? "" : " | ");
7167         os += "ABS_ACTIVE";
7168         first = false;
7169         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ABS_ACTIVE;
7170     }
7171     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TRACTION_CONTROL_ACTIVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TRACTION_CONTROL_ACTIVE)) {
7172         os += (first ? "" : " | ");
7173         os += "TRACTION_CONTROL_ACTIVE";
7174         first = false;
7175         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TRACTION_CONTROL_ACTIVE;
7176     }
7177     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_SPEED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_SPEED)) {
7178         os += (first ? "" : " | ");
7179         os += "HVAC_FAN_SPEED";
7180         first = false;
7181         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_SPEED;
7182     }
7183     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION)) {
7184         os += (first ? "" : " | ");
7185         os += "HVAC_FAN_DIRECTION";
7186         first = false;
7187         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION;
7188     }
7189     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_CURRENT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_CURRENT)) {
7190         os += (first ? "" : " | ");
7191         os += "HVAC_TEMPERATURE_CURRENT";
7192         first = false;
7193         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_CURRENT;
7194     }
7195     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_SET) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_SET)) {
7196         os += (first ? "" : " | ");
7197         os += "HVAC_TEMPERATURE_SET";
7198         first = false;
7199         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_SET;
7200     }
7201     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DEFROSTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DEFROSTER)) {
7202         os += (first ? "" : " | ");
7203         os += "HVAC_DEFROSTER";
7204         first = false;
7205         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DEFROSTER;
7206     }
7207     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AC_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AC_ON)) {
7208         os += (first ? "" : " | ");
7209         os += "HVAC_AC_ON";
7210         first = false;
7211         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AC_ON;
7212     }
7213     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_AC_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_AC_ON)) {
7214         os += (first ? "" : " | ");
7215         os += "HVAC_MAX_AC_ON";
7216         first = false;
7217         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_AC_ON;
7218     }
7219     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_DEFROST_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_DEFROST_ON)) {
7220         os += (first ? "" : " | ");
7221         os += "HVAC_MAX_DEFROST_ON";
7222         first = false;
7223         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_DEFROST_ON;
7224     }
7225     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_RECIRC_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_RECIRC_ON)) {
7226         os += (first ? "" : " | ");
7227         os += "HVAC_RECIRC_ON";
7228         first = false;
7229         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_RECIRC_ON;
7230     }
7231     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DUAL_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DUAL_ON)) {
7232         os += (first ? "" : " | ");
7233         os += "HVAC_DUAL_ON";
7234         first = false;
7235         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DUAL_ON;
7236     }
7237     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_ON)) {
7238         os += (first ? "" : " | ");
7239         os += "HVAC_AUTO_ON";
7240         first = false;
7241         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_ON;
7242     }
7243     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_TEMPERATURE)) {
7244         os += (first ? "" : " | ");
7245         os += "HVAC_SEAT_TEMPERATURE";
7246         first = false;
7247         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_TEMPERATURE;
7248     }
7249     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SIDE_MIRROR_HEAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SIDE_MIRROR_HEAT)) {
7250         os += (first ? "" : " | ");
7251         os += "HVAC_SIDE_MIRROR_HEAT";
7252         first = false;
7253         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SIDE_MIRROR_HEAT;
7254     }
7255     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_STEERING_WHEEL_HEAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_STEERING_WHEEL_HEAT)) {
7256         os += (first ? "" : " | ");
7257         os += "HVAC_STEERING_WHEEL_HEAT";
7258         first = false;
7259         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_STEERING_WHEEL_HEAT;
7260     }
7261     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS)) {
7262         os += (first ? "" : " | ");
7263         os += "HVAC_TEMPERATURE_DISPLAY_UNITS";
7264         first = false;
7265         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS;
7266     }
7267     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ACTUAL_FAN_SPEED_RPM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ACTUAL_FAN_SPEED_RPM)) {
7268         os += (first ? "" : " | ");
7269         os += "HVAC_ACTUAL_FAN_SPEED_RPM";
7270         first = false;
7271         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ACTUAL_FAN_SPEED_RPM;
7272     }
7273     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_POWER_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_POWER_ON)) {
7274         os += (first ? "" : " | ");
7275         os += "HVAC_POWER_ON";
7276         first = false;
7277         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_POWER_ON;
7278     }
7279     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE)) {
7280         os += (first ? "" : " | ");
7281         os += "HVAC_FAN_DIRECTION_AVAILABLE";
7282         first = false;
7283         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE;
7284     }
7285     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_RECIRC_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_RECIRC_ON)) {
7286         os += (first ? "" : " | ");
7287         os += "HVAC_AUTO_RECIRC_ON";
7288         first = false;
7289         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_RECIRC_ON;
7290     }
7291     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_VENTILATION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_VENTILATION)) {
7292         os += (first ? "" : " | ");
7293         os += "HVAC_SEAT_VENTILATION";
7294         first = false;
7295         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_VENTILATION;
7296     }
7297     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON)) {
7298         os += (first ? "" : " | ");
7299         os += "HVAC_ELECTRIC_DEFROSTER_ON";
7300         first = false;
7301         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON;
7302     }
7303     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISTANCE_DISPLAY_UNITS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISTANCE_DISPLAY_UNITS)) {
7304         os += (first ? "" : " | ");
7305         os += "DISTANCE_DISPLAY_UNITS";
7306         first = false;
7307         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISTANCE_DISPLAY_UNITS;
7308     }
7309     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_VOLUME_DISPLAY_UNITS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_VOLUME_DISPLAY_UNITS)) {
7310         os += (first ? "" : " | ");
7311         os += "FUEL_VOLUME_DISPLAY_UNITS";
7312         first = false;
7313         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_VOLUME_DISPLAY_UNITS;
7314     }
7315     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS)) {
7316         os += (first ? "" : " | ");
7317         os += "TIRE_PRESSURE_DISPLAY_UNITS";
7318         first = false;
7319         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS;
7320     }
7321     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_DISPLAY_UNITS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_DISPLAY_UNITS)) {
7322         os += (first ? "" : " | ");
7323         os += "EV_BATTERY_DISPLAY_UNITS";
7324         first = false;
7325         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_DISPLAY_UNITS;
7326     }
7327     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME)) {
7328         os += (first ? "" : " | ");
7329         os += "FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME";
7330         first = false;
7331         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME;
7332     }
7333     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS)) {
7334         os += (first ? "" : " | ");
7335         os += "VEHICLE_SPEED_DISPLAY_UNITS";
7336         first = false;
7337         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS;
7338     }
7339     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENV_OUTSIDE_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENV_OUTSIDE_TEMPERATURE)) {
7340         os += (first ? "" : " | ");
7341         os += "ENV_OUTSIDE_TEMPERATURE";
7342         first = false;
7343         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENV_OUTSIDE_TEMPERATURE;
7344     }
7345     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REQ) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REQ)) {
7346         os += (first ? "" : " | ");
7347         os += "AP_POWER_STATE_REQ";
7348         first = false;
7349         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REQ;
7350     }
7351     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REPORT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REPORT)) {
7352         os += (first ? "" : " | ");
7353         os += "AP_POWER_STATE_REPORT";
7354         first = false;
7355         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REPORT;
7356     }
7357     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_BOOTUP_REASON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_BOOTUP_REASON)) {
7358         os += (first ? "" : " | ");
7359         os += "AP_POWER_BOOTUP_REASON";
7360         first = false;
7361         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_BOOTUP_REASON;
7362     }
7363     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISPLAY_BRIGHTNESS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISPLAY_BRIGHTNESS)) {
7364         os += (first ? "" : " | ");
7365         os += "DISPLAY_BRIGHTNESS";
7366         first = false;
7367         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISPLAY_BRIGHTNESS;
7368     }
7369     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_KEY_INPUT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_KEY_INPUT)) {
7370         os += (first ? "" : " | ");
7371         os += "HW_KEY_INPUT";
7372         first = false;
7373         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_KEY_INPUT;
7374     }
7375     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_ROTARY_INPUT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_ROTARY_INPUT)) {
7376         os += (first ? "" : " | ");
7377         os += "HW_ROTARY_INPUT";
7378         first = false;
7379         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_ROTARY_INPUT;
7380     }
7381     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_POS)) {
7382         os += (first ? "" : " | ");
7383         os += "DOOR_POS";
7384         first = false;
7385         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_POS;
7386     }
7387     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_MOVE)) {
7388         os += (first ? "" : " | ");
7389         os += "DOOR_MOVE";
7390         first = false;
7391         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_MOVE;
7392     }
7393     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_LOCK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_LOCK)) {
7394         os += (first ? "" : " | ");
7395         os += "DOOR_LOCK";
7396         first = false;
7397         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_LOCK;
7398     }
7399     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_POS)) {
7400         os += (first ? "" : " | ");
7401         os += "MIRROR_Z_POS";
7402         first = false;
7403         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_POS;
7404     }
7405     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_MOVE)) {
7406         os += (first ? "" : " | ");
7407         os += "MIRROR_Z_MOVE";
7408         first = false;
7409         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_MOVE;
7410     }
7411     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_POS)) {
7412         os += (first ? "" : " | ");
7413         os += "MIRROR_Y_POS";
7414         first = false;
7415         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_POS;
7416     }
7417     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_MOVE)) {
7418         os += (first ? "" : " | ");
7419         os += "MIRROR_Y_MOVE";
7420         first = false;
7421         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_MOVE;
7422     }
7423     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_LOCK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_LOCK)) {
7424         os += (first ? "" : " | ");
7425         os += "MIRROR_LOCK";
7426         first = false;
7427         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_LOCK;
7428     }
7429     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_FOLD) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_FOLD)) {
7430         os += (first ? "" : " | ");
7431         os += "MIRROR_FOLD";
7432         first = false;
7433         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_FOLD;
7434     }
7435     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SELECT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SELECT)) {
7436         os += (first ? "" : " | ");
7437         os += "SEAT_MEMORY_SELECT";
7438         first = false;
7439         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SELECT;
7440     }
7441     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SET) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SET)) {
7442         os += (first ? "" : " | ");
7443         os += "SEAT_MEMORY_SET";
7444         first = false;
7445         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SET;
7446     }
7447     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_BUCKLED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_BUCKLED)) {
7448         os += (first ? "" : " | ");
7449         os += "SEAT_BELT_BUCKLED";
7450         first = false;
7451         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_BUCKLED;
7452     }
7453     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_POS)) {
7454         os += (first ? "" : " | ");
7455         os += "SEAT_BELT_HEIGHT_POS";
7456         first = false;
7457         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_POS;
7458     }
7459     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_MOVE)) {
7460         os += (first ? "" : " | ");
7461         os += "SEAT_BELT_HEIGHT_MOVE";
7462         first = false;
7463         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_MOVE;
7464     }
7465     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_POS)) {
7466         os += (first ? "" : " | ");
7467         os += "SEAT_FORE_AFT_POS";
7468         first = false;
7469         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_POS;
7470     }
7471     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_MOVE)) {
7472         os += (first ? "" : " | ");
7473         os += "SEAT_FORE_AFT_MOVE";
7474         first = false;
7475         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_MOVE;
7476     }
7477     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_POS)) {
7478         os += (first ? "" : " | ");
7479         os += "SEAT_BACKREST_ANGLE_1_POS";
7480         first = false;
7481         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_POS;
7482     }
7483     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_MOVE)) {
7484         os += (first ? "" : " | ");
7485         os += "SEAT_BACKREST_ANGLE_1_MOVE";
7486         first = false;
7487         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_MOVE;
7488     }
7489     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_POS)) {
7490         os += (first ? "" : " | ");
7491         os += "SEAT_BACKREST_ANGLE_2_POS";
7492         first = false;
7493         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_POS;
7494     }
7495     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_MOVE)) {
7496         os += (first ? "" : " | ");
7497         os += "SEAT_BACKREST_ANGLE_2_MOVE";
7498         first = false;
7499         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_MOVE;
7500     }
7501     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_POS)) {
7502         os += (first ? "" : " | ");
7503         os += "SEAT_HEIGHT_POS";
7504         first = false;
7505         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_POS;
7506     }
7507     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_MOVE)) {
7508         os += (first ? "" : " | ");
7509         os += "SEAT_HEIGHT_MOVE";
7510         first = false;
7511         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_MOVE;
7512     }
7513     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_POS)) {
7514         os += (first ? "" : " | ");
7515         os += "SEAT_DEPTH_POS";
7516         first = false;
7517         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_POS;
7518     }
7519     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_MOVE)) {
7520         os += (first ? "" : " | ");
7521         os += "SEAT_DEPTH_MOVE";
7522         first = false;
7523         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_MOVE;
7524     }
7525     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_POS)) {
7526         os += (first ? "" : " | ");
7527         os += "SEAT_TILT_POS";
7528         first = false;
7529         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_POS;
7530     }
7531     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_MOVE)) {
7532         os += (first ? "" : " | ");
7533         os += "SEAT_TILT_MOVE";
7534         first = false;
7535         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_MOVE;
7536     }
7537     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_POS)) {
7538         os += (first ? "" : " | ");
7539         os += "SEAT_LUMBAR_FORE_AFT_POS";
7540         first = false;
7541         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_POS;
7542     }
7543     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_MOVE)) {
7544         os += (first ? "" : " | ");
7545         os += "SEAT_LUMBAR_FORE_AFT_MOVE";
7546         first = false;
7547         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_MOVE;
7548     }
7549     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_POS)) {
7550         os += (first ? "" : " | ");
7551         os += "SEAT_LUMBAR_SIDE_SUPPORT_POS";
7552         first = false;
7553         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_POS;
7554     }
7555     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_MOVE)) {
7556         os += (first ? "" : " | ");
7557         os += "SEAT_LUMBAR_SIDE_SUPPORT_MOVE";
7558         first = false;
7559         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_MOVE;
7560     }
7561     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_POS)) {
7562         os += (first ? "" : " | ");
7563         os += "SEAT_HEADREST_HEIGHT_POS";
7564         first = false;
7565         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_POS;
7566     }
7567     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_MOVE)) {
7568         os += (first ? "" : " | ");
7569         os += "SEAT_HEADREST_HEIGHT_MOVE";
7570         first = false;
7571         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_MOVE;
7572     }
7573     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_POS)) {
7574         os += (first ? "" : " | ");
7575         os += "SEAT_HEADREST_ANGLE_POS";
7576         first = false;
7577         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_POS;
7578     }
7579     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_MOVE)) {
7580         os += (first ? "" : " | ");
7581         os += "SEAT_HEADREST_ANGLE_MOVE";
7582         first = false;
7583         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_MOVE;
7584     }
7585     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_POS)) {
7586         os += (first ? "" : " | ");
7587         os += "SEAT_HEADREST_FORE_AFT_POS";
7588         first = false;
7589         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_POS;
7590     }
7591     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_MOVE)) {
7592         os += (first ? "" : " | ");
7593         os += "SEAT_HEADREST_FORE_AFT_MOVE";
7594         first = false;
7595         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_MOVE;
7596     }
7597     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_OCCUPANCY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_OCCUPANCY)) {
7598         os += (first ? "" : " | ");
7599         os += "SEAT_OCCUPANCY";
7600         first = false;
7601         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_OCCUPANCY;
7602     }
7603     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_POS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_POS)) {
7604         os += (first ? "" : " | ");
7605         os += "WINDOW_POS";
7606         first = false;
7607         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_POS;
7608     }
7609     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_MOVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_MOVE)) {
7610         os += (first ? "" : " | ");
7611         os += "WINDOW_MOVE";
7612         first = false;
7613         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_MOVE;
7614     }
7615     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_LOCK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_LOCK)) {
7616         os += (first ? "" : " | ");
7617         os += "WINDOW_LOCK";
7618         first = false;
7619         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_LOCK;
7620     }
7621     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_MAP_SERVICE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_MAP_SERVICE)) {
7622         os += (first ? "" : " | ");
7623         os += "VEHICLE_MAP_SERVICE";
7624         first = false;
7625         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_MAP_SERVICE;
7626     }
7627     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_LIVE_FRAME) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_LIVE_FRAME)) {
7628         os += (first ? "" : " | ");
7629         os += "OBD2_LIVE_FRAME";
7630         first = false;
7631         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_LIVE_FRAME;
7632     }
7633     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME)) {
7634         os += (first ? "" : " | ");
7635         os += "OBD2_FREEZE_FRAME";
7636         first = false;
7637         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME;
7638     }
7639     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_INFO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_INFO)) {
7640         os += (first ? "" : " | ");
7641         os += "OBD2_FREEZE_FRAME_INFO";
7642         first = false;
7643         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_INFO;
7644     }
7645     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_CLEAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_CLEAR)) {
7646         os += (first ? "" : " | ");
7647         os += "OBD2_FREEZE_FRAME_CLEAR";
7648         first = false;
7649         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_CLEAR;
7650     }
7651     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_STATE)) {
7652         os += (first ? "" : " | ");
7653         os += "HEADLIGHTS_STATE";
7654         first = false;
7655         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_STATE;
7656     }
7657     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_STATE)) {
7658         os += (first ? "" : " | ");
7659         os += "HIGH_BEAM_LIGHTS_STATE";
7660         first = false;
7661         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_STATE;
7662     }
7663     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_STATE)) {
7664         os += (first ? "" : " | ");
7665         os += "FOG_LIGHTS_STATE";
7666         first = false;
7667         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_STATE;
7668     }
7669     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_STATE)) {
7670         os += (first ? "" : " | ");
7671         os += "HAZARD_LIGHTS_STATE";
7672         first = false;
7673         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_STATE;
7674     }
7675     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_SWITCH)) {
7676         os += (first ? "" : " | ");
7677         os += "HEADLIGHTS_SWITCH";
7678         first = false;
7679         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_SWITCH;
7680     }
7681     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH)) {
7682         os += (first ? "" : " | ");
7683         os += "HIGH_BEAM_LIGHTS_SWITCH";
7684         first = false;
7685         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH;
7686     }
7687     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_SWITCH)) {
7688         os += (first ? "" : " | ");
7689         os += "FOG_LIGHTS_SWITCH";
7690         first = false;
7691         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_SWITCH;
7692     }
7693     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_SWITCH)) {
7694         os += (first ? "" : " | ");
7695         os += "HAZARD_LIGHTS_SWITCH";
7696         first = false;
7697         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_SWITCH;
7698     }
7699     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_STATE)) {
7700         os += (first ? "" : " | ");
7701         os += "CABIN_LIGHTS_STATE";
7702         first = false;
7703         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_STATE;
7704     }
7705     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_SWITCH)) {
7706         os += (first ? "" : " | ");
7707         os += "CABIN_LIGHTS_SWITCH";
7708         first = false;
7709         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_SWITCH;
7710     }
7711     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_STATE)) {
7712         os += (first ? "" : " | ");
7713         os += "READING_LIGHTS_STATE";
7714         first = false;
7715         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_STATE;
7716     }
7717     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_SWITCH)) {
7718         os += (first ? "" : " | ");
7719         os += "READING_LIGHTS_SWITCH";
7720         first = false;
7721         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_SWITCH;
7722     }
7723     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SUPPORT_CUSTOMIZE_VENDOR_PERMISSION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SUPPORT_CUSTOMIZE_VENDOR_PERMISSION)) {
7724         os += (first ? "" : " | ");
7725         os += "SUPPORT_CUSTOMIZE_VENDOR_PERMISSION";
7726         first = false;
7727         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SUPPORT_CUSTOMIZE_VENDOR_PERMISSION;
7728     }
7729     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISABLED_OPTIONAL_FEATURES) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISABLED_OPTIONAL_FEATURES)) {
7730         os += (first ? "" : " | ");
7731         os += "DISABLED_OPTIONAL_FEATURES";
7732         first = false;
7733         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISABLED_OPTIONAL_FEATURES;
7734     }
7735     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INITIAL_USER_INFO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INITIAL_USER_INFO)) {
7736         os += (first ? "" : " | ");
7737         os += "INITIAL_USER_INFO";
7738         first = false;
7739         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INITIAL_USER_INFO;
7740     }
7741     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SWITCH_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SWITCH_USER)) {
7742         os += (first ? "" : " | ");
7743         os += "SWITCH_USER";
7744         first = false;
7745         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SWITCH_USER;
7746     }
7747     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CREATE_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CREATE_USER)) {
7748         os += (first ? "" : " | ");
7749         os += "CREATE_USER";
7750         first = false;
7751         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CREATE_USER;
7752     }
7753     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::REMOVE_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::REMOVE_USER)) {
7754         os += (first ? "" : " | ");
7755         os += "REMOVE_USER";
7756         first = false;
7757         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::REMOVE_USER;
7758     }
7759     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::USER_IDENTIFICATION_ASSOCIATION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleProperty::USER_IDENTIFICATION_ASSOCIATION)) {
7760         os += (first ? "" : " | ");
7761         os += "USER_IDENTIFICATION_ASSOCIATION";
7762         first = false;
7763         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::USER_IDENTIFICATION_ASSOCIATION;
7764     }
7765     if (o != flipped) {
7766         os += (first ? "" : " | ");
7767         os += toHexString(o & (~flipped));
7768     }os += " (";
7769     os += toHexString(o);
7770     os += ")";
7771     return os;
7772 }
7773 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleProperty o)7774 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleProperty o) {
7775     using ::android::hardware::details::toHexString;
7776     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INVALID) {
7777         return "INVALID";
7778     }
7779     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_VIN) {
7780         return "INFO_VIN";
7781     }
7782     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MAKE) {
7783         return "INFO_MAKE";
7784     }
7785     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL) {
7786         return "INFO_MODEL";
7787     }
7788     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MODEL_YEAR) {
7789         return "INFO_MODEL_YEAR";
7790     }
7791     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_CAPACITY) {
7792         return "INFO_FUEL_CAPACITY";
7793     }
7794     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_TYPE) {
7795         return "INFO_FUEL_TYPE";
7796     }
7797     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_BATTERY_CAPACITY) {
7798         return "INFO_EV_BATTERY_CAPACITY";
7799     }
7800     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_CONNECTOR_TYPE) {
7801         return "INFO_EV_CONNECTOR_TYPE";
7802     }
7803     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_FUEL_DOOR_LOCATION) {
7804         return "INFO_FUEL_DOOR_LOCATION";
7805     }
7806     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EV_PORT_LOCATION) {
7807         return "INFO_EV_PORT_LOCATION";
7808     }
7809     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_DRIVER_SEAT) {
7810         return "INFO_DRIVER_SEAT";
7811     }
7812     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_EXTERIOR_DIMENSIONS) {
7813         return "INFO_EXTERIOR_DIMENSIONS";
7814     }
7815     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INFO_MULTI_EV_PORT_LOCATIONS) {
7816         return "INFO_MULTI_EV_PORT_LOCATIONS";
7817     }
7818     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_ODOMETER) {
7819         return "PERF_ODOMETER";
7820     }
7821     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED) {
7822         return "PERF_VEHICLE_SPEED";
7823     }
7824     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_VEHICLE_SPEED_DISPLAY) {
7825         return "PERF_VEHICLE_SPEED_DISPLAY";
7826     }
7827     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_STEERING_ANGLE) {
7828         return "PERF_STEERING_ANGLE";
7829     }
7830     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PERF_REAR_STEERING_ANGLE) {
7831         return "PERF_REAR_STEERING_ANGLE";
7832     }
7833     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_COOLANT_TEMP) {
7834         return "ENGINE_COOLANT_TEMP";
7835     }
7836     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_LEVEL) {
7837         return "ENGINE_OIL_LEVEL";
7838     }
7839     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_OIL_TEMP) {
7840         return "ENGINE_OIL_TEMP";
7841     }
7842     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENGINE_RPM) {
7843         return "ENGINE_RPM";
7844     }
7845     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WHEEL_TICK) {
7846         return "WHEEL_TICK";
7847     }
7848     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL) {
7849         return "FUEL_LEVEL";
7850     }
7851     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_DOOR_OPEN) {
7852         return "FUEL_DOOR_OPEN";
7853     }
7854     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_LEVEL) {
7855         return "EV_BATTERY_LEVEL";
7856     }
7857     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_OPEN) {
7858         return "EV_CHARGE_PORT_OPEN";
7859     }
7860     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_CHARGE_PORT_CONNECTED) {
7861         return "EV_CHARGE_PORT_CONNECTED";
7862     }
7863     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_INSTANTANEOUS_CHARGE_RATE) {
7864         return "EV_BATTERY_INSTANTANEOUS_CHARGE_RATE";
7865     }
7866     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::RANGE_REMAINING) {
7867         return "RANGE_REMAINING";
7868     }
7869     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE) {
7870         return "TIRE_PRESSURE";
7871     }
7872     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::GEAR_SELECTION) {
7873         return "GEAR_SELECTION";
7874     }
7875     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CURRENT_GEAR) {
7876         return "CURRENT_GEAR";
7877     }
7878     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_ON) {
7879         return "PARKING_BRAKE_ON";
7880     }
7881     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::PARKING_BRAKE_AUTO_APPLY) {
7882         return "PARKING_BRAKE_AUTO_APPLY";
7883     }
7884     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_LEVEL_LOW) {
7885         return "FUEL_LEVEL_LOW";
7886     }
7887     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::NIGHT_MODE) {
7888         return "NIGHT_MODE";
7889     }
7890     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TURN_SIGNAL_STATE) {
7891         return "TURN_SIGNAL_STATE";
7892     }
7893     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::IGNITION_STATE) {
7894         return "IGNITION_STATE";
7895     }
7896     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ABS_ACTIVE) {
7897         return "ABS_ACTIVE";
7898     }
7899     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TRACTION_CONTROL_ACTIVE) {
7900         return "TRACTION_CONTROL_ACTIVE";
7901     }
7902     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_SPEED) {
7903         return "HVAC_FAN_SPEED";
7904     }
7905     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION) {
7906         return "HVAC_FAN_DIRECTION";
7907     }
7908     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_CURRENT) {
7909         return "HVAC_TEMPERATURE_CURRENT";
7910     }
7911     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_SET) {
7912         return "HVAC_TEMPERATURE_SET";
7913     }
7914     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DEFROSTER) {
7915         return "HVAC_DEFROSTER";
7916     }
7917     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AC_ON) {
7918         return "HVAC_AC_ON";
7919     }
7920     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_AC_ON) {
7921         return "HVAC_MAX_AC_ON";
7922     }
7923     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_MAX_DEFROST_ON) {
7924         return "HVAC_MAX_DEFROST_ON";
7925     }
7926     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_RECIRC_ON) {
7927         return "HVAC_RECIRC_ON";
7928     }
7929     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_DUAL_ON) {
7930         return "HVAC_DUAL_ON";
7931     }
7932     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_ON) {
7933         return "HVAC_AUTO_ON";
7934     }
7935     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_TEMPERATURE) {
7936         return "HVAC_SEAT_TEMPERATURE";
7937     }
7938     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SIDE_MIRROR_HEAT) {
7939         return "HVAC_SIDE_MIRROR_HEAT";
7940     }
7941     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_STEERING_WHEEL_HEAT) {
7942         return "HVAC_STEERING_WHEEL_HEAT";
7943     }
7944     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_TEMPERATURE_DISPLAY_UNITS) {
7945         return "HVAC_TEMPERATURE_DISPLAY_UNITS";
7946     }
7947     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ACTUAL_FAN_SPEED_RPM) {
7948         return "HVAC_ACTUAL_FAN_SPEED_RPM";
7949     }
7950     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_POWER_ON) {
7951         return "HVAC_POWER_ON";
7952     }
7953     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_FAN_DIRECTION_AVAILABLE) {
7954         return "HVAC_FAN_DIRECTION_AVAILABLE";
7955     }
7956     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_AUTO_RECIRC_ON) {
7957         return "HVAC_AUTO_RECIRC_ON";
7958     }
7959     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_SEAT_VENTILATION) {
7960         return "HVAC_SEAT_VENTILATION";
7961     }
7962     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HVAC_ELECTRIC_DEFROSTER_ON) {
7963         return "HVAC_ELECTRIC_DEFROSTER_ON";
7964     }
7965     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISTANCE_DISPLAY_UNITS) {
7966         return "DISTANCE_DISPLAY_UNITS";
7967     }
7968     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_VOLUME_DISPLAY_UNITS) {
7969         return "FUEL_VOLUME_DISPLAY_UNITS";
7970     }
7971     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::TIRE_PRESSURE_DISPLAY_UNITS) {
7972         return "TIRE_PRESSURE_DISPLAY_UNITS";
7973     }
7974     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::EV_BATTERY_DISPLAY_UNITS) {
7975         return "EV_BATTERY_DISPLAY_UNITS";
7976     }
7977     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME) {
7978         return "FUEL_CONSUMPTION_UNITS_DISTANCE_OVER_VOLUME";
7979     }
7980     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_SPEED_DISPLAY_UNITS) {
7981         return "VEHICLE_SPEED_DISPLAY_UNITS";
7982     }
7983     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::ENV_OUTSIDE_TEMPERATURE) {
7984         return "ENV_OUTSIDE_TEMPERATURE";
7985     }
7986     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REQ) {
7987         return "AP_POWER_STATE_REQ";
7988     }
7989     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_STATE_REPORT) {
7990         return "AP_POWER_STATE_REPORT";
7991     }
7992     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::AP_POWER_BOOTUP_REASON) {
7993         return "AP_POWER_BOOTUP_REASON";
7994     }
7995     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISPLAY_BRIGHTNESS) {
7996         return "DISPLAY_BRIGHTNESS";
7997     }
7998     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_KEY_INPUT) {
7999         return "HW_KEY_INPUT";
8000     }
8001     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HW_ROTARY_INPUT) {
8002         return "HW_ROTARY_INPUT";
8003     }
8004     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_POS) {
8005         return "DOOR_POS";
8006     }
8007     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_MOVE) {
8008         return "DOOR_MOVE";
8009     }
8010     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DOOR_LOCK) {
8011         return "DOOR_LOCK";
8012     }
8013     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_POS) {
8014         return "MIRROR_Z_POS";
8015     }
8016     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Z_MOVE) {
8017         return "MIRROR_Z_MOVE";
8018     }
8019     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_POS) {
8020         return "MIRROR_Y_POS";
8021     }
8022     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_Y_MOVE) {
8023         return "MIRROR_Y_MOVE";
8024     }
8025     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_LOCK) {
8026         return "MIRROR_LOCK";
8027     }
8028     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::MIRROR_FOLD) {
8029         return "MIRROR_FOLD";
8030     }
8031     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SELECT) {
8032         return "SEAT_MEMORY_SELECT";
8033     }
8034     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_MEMORY_SET) {
8035         return "SEAT_MEMORY_SET";
8036     }
8037     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_BUCKLED) {
8038         return "SEAT_BELT_BUCKLED";
8039     }
8040     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_POS) {
8041         return "SEAT_BELT_HEIGHT_POS";
8042     }
8043     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BELT_HEIGHT_MOVE) {
8044         return "SEAT_BELT_HEIGHT_MOVE";
8045     }
8046     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_POS) {
8047         return "SEAT_FORE_AFT_POS";
8048     }
8049     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_FORE_AFT_MOVE) {
8050         return "SEAT_FORE_AFT_MOVE";
8051     }
8052     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_POS) {
8053         return "SEAT_BACKREST_ANGLE_1_POS";
8054     }
8055     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_1_MOVE) {
8056         return "SEAT_BACKREST_ANGLE_1_MOVE";
8057     }
8058     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_POS) {
8059         return "SEAT_BACKREST_ANGLE_2_POS";
8060     }
8061     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_BACKREST_ANGLE_2_MOVE) {
8062         return "SEAT_BACKREST_ANGLE_2_MOVE";
8063     }
8064     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_POS) {
8065         return "SEAT_HEIGHT_POS";
8066     }
8067     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEIGHT_MOVE) {
8068         return "SEAT_HEIGHT_MOVE";
8069     }
8070     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_POS) {
8071         return "SEAT_DEPTH_POS";
8072     }
8073     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_DEPTH_MOVE) {
8074         return "SEAT_DEPTH_MOVE";
8075     }
8076     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_POS) {
8077         return "SEAT_TILT_POS";
8078     }
8079     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_TILT_MOVE) {
8080         return "SEAT_TILT_MOVE";
8081     }
8082     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_POS) {
8083         return "SEAT_LUMBAR_FORE_AFT_POS";
8084     }
8085     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_FORE_AFT_MOVE) {
8086         return "SEAT_LUMBAR_FORE_AFT_MOVE";
8087     }
8088     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_POS) {
8089         return "SEAT_LUMBAR_SIDE_SUPPORT_POS";
8090     }
8091     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_LUMBAR_SIDE_SUPPORT_MOVE) {
8092         return "SEAT_LUMBAR_SIDE_SUPPORT_MOVE";
8093     }
8094     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_POS) {
8095         return "SEAT_HEADREST_HEIGHT_POS";
8096     }
8097     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_HEIGHT_MOVE) {
8098         return "SEAT_HEADREST_HEIGHT_MOVE";
8099     }
8100     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_POS) {
8101         return "SEAT_HEADREST_ANGLE_POS";
8102     }
8103     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_ANGLE_MOVE) {
8104         return "SEAT_HEADREST_ANGLE_MOVE";
8105     }
8106     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_POS) {
8107         return "SEAT_HEADREST_FORE_AFT_POS";
8108     }
8109     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_HEADREST_FORE_AFT_MOVE) {
8110         return "SEAT_HEADREST_FORE_AFT_MOVE";
8111     }
8112     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SEAT_OCCUPANCY) {
8113         return "SEAT_OCCUPANCY";
8114     }
8115     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_POS) {
8116         return "WINDOW_POS";
8117     }
8118     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_MOVE) {
8119         return "WINDOW_MOVE";
8120     }
8121     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::WINDOW_LOCK) {
8122         return "WINDOW_LOCK";
8123     }
8124     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::VEHICLE_MAP_SERVICE) {
8125         return "VEHICLE_MAP_SERVICE";
8126     }
8127     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_LIVE_FRAME) {
8128         return "OBD2_LIVE_FRAME";
8129     }
8130     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME) {
8131         return "OBD2_FREEZE_FRAME";
8132     }
8133     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_INFO) {
8134         return "OBD2_FREEZE_FRAME_INFO";
8135     }
8136     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::OBD2_FREEZE_FRAME_CLEAR) {
8137         return "OBD2_FREEZE_FRAME_CLEAR";
8138     }
8139     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_STATE) {
8140         return "HEADLIGHTS_STATE";
8141     }
8142     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_STATE) {
8143         return "HIGH_BEAM_LIGHTS_STATE";
8144     }
8145     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_STATE) {
8146         return "FOG_LIGHTS_STATE";
8147     }
8148     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_STATE) {
8149         return "HAZARD_LIGHTS_STATE";
8150     }
8151     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HEADLIGHTS_SWITCH) {
8152         return "HEADLIGHTS_SWITCH";
8153     }
8154     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HIGH_BEAM_LIGHTS_SWITCH) {
8155         return "HIGH_BEAM_LIGHTS_SWITCH";
8156     }
8157     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::FOG_LIGHTS_SWITCH) {
8158         return "FOG_LIGHTS_SWITCH";
8159     }
8160     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::HAZARD_LIGHTS_SWITCH) {
8161         return "HAZARD_LIGHTS_SWITCH";
8162     }
8163     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_STATE) {
8164         return "CABIN_LIGHTS_STATE";
8165     }
8166     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CABIN_LIGHTS_SWITCH) {
8167         return "CABIN_LIGHTS_SWITCH";
8168     }
8169     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_STATE) {
8170         return "READING_LIGHTS_STATE";
8171     }
8172     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::READING_LIGHTS_SWITCH) {
8173         return "READING_LIGHTS_SWITCH";
8174     }
8175     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SUPPORT_CUSTOMIZE_VENDOR_PERMISSION) {
8176         return "SUPPORT_CUSTOMIZE_VENDOR_PERMISSION";
8177     }
8178     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::DISABLED_OPTIONAL_FEATURES) {
8179         return "DISABLED_OPTIONAL_FEATURES";
8180     }
8181     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::INITIAL_USER_INFO) {
8182         return "INITIAL_USER_INFO";
8183     }
8184     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::SWITCH_USER) {
8185         return "SWITCH_USER";
8186     }
8187     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::CREATE_USER) {
8188         return "CREATE_USER";
8189     }
8190     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::REMOVE_USER) {
8191         return "REMOVE_USER";
8192     }
8193     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleProperty::USER_IDENTIFICATION_ASSOCIATION) {
8194         return "USER_IDENTIFICATION_ASSOCIATION";
8195     }
8196     std::string os;
8197     os += toHexString(static_cast<int32_t>(o));
8198     return os;
8199 }
8200 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleProperty o,::std::ostream * os)8201 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleProperty o, ::std::ostream* os) {
8202     *os << toString(o);
8203 }
8204 
8205 template<>
8206 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission>(int32_t o) {
8207     using ::android::hardware::details::toHexString;
8208     std::string os;
8209     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission> flipped = 0;
8210     bool first = true;
8211     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_DEFAULT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_DEFAULT)) {
8212         os += (first ? "" : " | ");
8213         os += "PERMISSION_DEFAULT";
8214         first = false;
8215         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_DEFAULT;
8216     }
8217     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_WINDOW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_WINDOW)) {
8218         os += (first ? "" : " | ");
8219         os += "PERMISSION_SET_VENDOR_CATEGORY_WINDOW";
8220         first = false;
8221         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_WINDOW;
8222     }
8223     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_WINDOW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_WINDOW)) {
8224         os += (first ? "" : " | ");
8225         os += "PERMISSION_GET_VENDOR_CATEGORY_WINDOW";
8226         first = false;
8227         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_WINDOW;
8228     }
8229     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_DOOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_DOOR)) {
8230         os += (first ? "" : " | ");
8231         os += "PERMISSION_SET_VENDOR_CATEGORY_DOOR";
8232         first = false;
8233         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_DOOR;
8234     }
8235     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_DOOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_DOOR)) {
8236         os += (first ? "" : " | ");
8237         os += "PERMISSION_GET_VENDOR_CATEGORY_DOOR";
8238         first = false;
8239         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_DOOR;
8240     }
8241     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_SEAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_SEAT)) {
8242         os += (first ? "" : " | ");
8243         os += "PERMISSION_SET_VENDOR_CATEGORY_SEAT";
8244         first = false;
8245         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_SEAT;
8246     }
8247     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_SEAT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_SEAT)) {
8248         os += (first ? "" : " | ");
8249         os += "PERMISSION_GET_VENDOR_CATEGORY_SEAT";
8250         first = false;
8251         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_SEAT;
8252     }
8253     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_MIRROR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_MIRROR)) {
8254         os += (first ? "" : " | ");
8255         os += "PERMISSION_SET_VENDOR_CATEGORY_MIRROR";
8256         first = false;
8257         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_MIRROR;
8258     }
8259     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_MIRROR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_MIRROR)) {
8260         os += (first ? "" : " | ");
8261         os += "PERMISSION_GET_VENDOR_CATEGORY_MIRROR";
8262         first = false;
8263         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_MIRROR;
8264     }
8265     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_INFO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_INFO)) {
8266         os += (first ? "" : " | ");
8267         os += "PERMISSION_SET_VENDOR_CATEGORY_INFO";
8268         first = false;
8269         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_INFO;
8270     }
8271     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_INFO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_INFO)) {
8272         os += (first ? "" : " | ");
8273         os += "PERMISSION_GET_VENDOR_CATEGORY_INFO";
8274         first = false;
8275         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_INFO;
8276     }
8277     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_ENGINE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_ENGINE)) {
8278         os += (first ? "" : " | ");
8279         os += "PERMISSION_SET_VENDOR_CATEGORY_ENGINE";
8280         first = false;
8281         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_ENGINE;
8282     }
8283     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_ENGINE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_ENGINE)) {
8284         os += (first ? "" : " | ");
8285         os += "PERMISSION_GET_VENDOR_CATEGORY_ENGINE";
8286         first = false;
8287         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_ENGINE;
8288     }
8289     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_HVAC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_HVAC)) {
8290         os += (first ? "" : " | ");
8291         os += "PERMISSION_SET_VENDOR_CATEGORY_HVAC";
8292         first = false;
8293         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_HVAC;
8294     }
8295     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_HVAC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_HVAC)) {
8296         os += (first ? "" : " | ");
8297         os += "PERMISSION_GET_VENDOR_CATEGORY_HVAC";
8298         first = false;
8299         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_HVAC;
8300     }
8301     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_LIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_LIGHT)) {
8302         os += (first ? "" : " | ");
8303         os += "PERMISSION_SET_VENDOR_CATEGORY_LIGHT";
8304         first = false;
8305         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_LIGHT;
8306     }
8307     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_LIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_LIGHT)) {
8308         os += (first ? "" : " | ");
8309         os += "PERMISSION_GET_VENDOR_CATEGORY_LIGHT";
8310         first = false;
8311         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_LIGHT;
8312     }
8313     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_1)) {
8314         os += (first ? "" : " | ");
8315         os += "PERMISSION_SET_VENDOR_CATEGORY_1";
8316         first = false;
8317         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_1;
8318     }
8319     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_1)) {
8320         os += (first ? "" : " | ");
8321         os += "PERMISSION_GET_VENDOR_CATEGORY_1";
8322         first = false;
8323         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_1;
8324     }
8325     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_2)) {
8326         os += (first ? "" : " | ");
8327         os += "PERMISSION_SET_VENDOR_CATEGORY_2";
8328         first = false;
8329         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_2;
8330     }
8331     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_2)) {
8332         os += (first ? "" : " | ");
8333         os += "PERMISSION_GET_VENDOR_CATEGORY_2";
8334         first = false;
8335         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_2;
8336     }
8337     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_3) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_3)) {
8338         os += (first ? "" : " | ");
8339         os += "PERMISSION_SET_VENDOR_CATEGORY_3";
8340         first = false;
8341         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_3;
8342     }
8343     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_3) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_3)) {
8344         os += (first ? "" : " | ");
8345         os += "PERMISSION_GET_VENDOR_CATEGORY_3";
8346         first = false;
8347         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_3;
8348     }
8349     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_4) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_4)) {
8350         os += (first ? "" : " | ");
8351         os += "PERMISSION_SET_VENDOR_CATEGORY_4";
8352         first = false;
8353         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_4;
8354     }
8355     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_4) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_4)) {
8356         os += (first ? "" : " | ");
8357         os += "PERMISSION_GET_VENDOR_CATEGORY_4";
8358         first = false;
8359         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_4;
8360     }
8361     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_5) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_5)) {
8362         os += (first ? "" : " | ");
8363         os += "PERMISSION_SET_VENDOR_CATEGORY_5";
8364         first = false;
8365         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_5;
8366     }
8367     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_5) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_5)) {
8368         os += (first ? "" : " | ");
8369         os += "PERMISSION_GET_VENDOR_CATEGORY_5";
8370         first = false;
8371         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_5;
8372     }
8373     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_6) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_6)) {
8374         os += (first ? "" : " | ");
8375         os += "PERMISSION_SET_VENDOR_CATEGORY_6";
8376         first = false;
8377         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_6;
8378     }
8379     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_6) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_6)) {
8380         os += (first ? "" : " | ");
8381         os += "PERMISSION_GET_VENDOR_CATEGORY_6";
8382         first = false;
8383         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_6;
8384     }
8385     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_7) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_7)) {
8386         os += (first ? "" : " | ");
8387         os += "PERMISSION_SET_VENDOR_CATEGORY_7";
8388         first = false;
8389         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_7;
8390     }
8391     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_7) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_7)) {
8392         os += (first ? "" : " | ");
8393         os += "PERMISSION_GET_VENDOR_CATEGORY_7";
8394         first = false;
8395         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_7;
8396     }
8397     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_8) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_8)) {
8398         os += (first ? "" : " | ");
8399         os += "PERMISSION_SET_VENDOR_CATEGORY_8";
8400         first = false;
8401         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_8;
8402     }
8403     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_8) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_8)) {
8404         os += (first ? "" : " | ");
8405         os += "PERMISSION_GET_VENDOR_CATEGORY_8";
8406         first = false;
8407         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_8;
8408     }
8409     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_9) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_9)) {
8410         os += (first ? "" : " | ");
8411         os += "PERMISSION_SET_VENDOR_CATEGORY_9";
8412         first = false;
8413         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_9;
8414     }
8415     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_9) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_9)) {
8416         os += (first ? "" : " | ");
8417         os += "PERMISSION_GET_VENDOR_CATEGORY_9";
8418         first = false;
8419         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_9;
8420     }
8421     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_10) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_10)) {
8422         os += (first ? "" : " | ");
8423         os += "PERMISSION_SET_VENDOR_CATEGORY_10";
8424         first = false;
8425         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_10;
8426     }
8427     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_10) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_10)) {
8428         os += (first ? "" : " | ");
8429         os += "PERMISSION_GET_VENDOR_CATEGORY_10";
8430         first = false;
8431         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_10;
8432     }
8433     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE)) {
8434         os += (first ? "" : " | ");
8435         os += "PERMISSION_NOT_ACCESSIBLE";
8436         first = false;
8437         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE;
8438     }
8439     if (o != flipped) {
8440         os += (first ? "" : " | ");
8441         os += toHexString(o & (~flipped));
8442     }os += " (";
8443     os += toHexString(o);
8444     os += ")";
8445     return os;
8446 }
8447 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o)8448 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o) {
8449     using ::android::hardware::details::toHexString;
8450     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_DEFAULT) {
8451         return "PERMISSION_DEFAULT";
8452     }
8453     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_WINDOW) {
8454         return "PERMISSION_SET_VENDOR_CATEGORY_WINDOW";
8455     }
8456     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_WINDOW) {
8457         return "PERMISSION_GET_VENDOR_CATEGORY_WINDOW";
8458     }
8459     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_DOOR) {
8460         return "PERMISSION_SET_VENDOR_CATEGORY_DOOR";
8461     }
8462     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_DOOR) {
8463         return "PERMISSION_GET_VENDOR_CATEGORY_DOOR";
8464     }
8465     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_SEAT) {
8466         return "PERMISSION_SET_VENDOR_CATEGORY_SEAT";
8467     }
8468     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_SEAT) {
8469         return "PERMISSION_GET_VENDOR_CATEGORY_SEAT";
8470     }
8471     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_MIRROR) {
8472         return "PERMISSION_SET_VENDOR_CATEGORY_MIRROR";
8473     }
8474     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_MIRROR) {
8475         return "PERMISSION_GET_VENDOR_CATEGORY_MIRROR";
8476     }
8477     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_INFO) {
8478         return "PERMISSION_SET_VENDOR_CATEGORY_INFO";
8479     }
8480     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_INFO) {
8481         return "PERMISSION_GET_VENDOR_CATEGORY_INFO";
8482     }
8483     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_ENGINE) {
8484         return "PERMISSION_SET_VENDOR_CATEGORY_ENGINE";
8485     }
8486     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_ENGINE) {
8487         return "PERMISSION_GET_VENDOR_CATEGORY_ENGINE";
8488     }
8489     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_HVAC) {
8490         return "PERMISSION_SET_VENDOR_CATEGORY_HVAC";
8491     }
8492     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_HVAC) {
8493         return "PERMISSION_GET_VENDOR_CATEGORY_HVAC";
8494     }
8495     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_LIGHT) {
8496         return "PERMISSION_SET_VENDOR_CATEGORY_LIGHT";
8497     }
8498     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_LIGHT) {
8499         return "PERMISSION_GET_VENDOR_CATEGORY_LIGHT";
8500     }
8501     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_1) {
8502         return "PERMISSION_SET_VENDOR_CATEGORY_1";
8503     }
8504     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_1) {
8505         return "PERMISSION_GET_VENDOR_CATEGORY_1";
8506     }
8507     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_2) {
8508         return "PERMISSION_SET_VENDOR_CATEGORY_2";
8509     }
8510     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_2) {
8511         return "PERMISSION_GET_VENDOR_CATEGORY_2";
8512     }
8513     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_3) {
8514         return "PERMISSION_SET_VENDOR_CATEGORY_3";
8515     }
8516     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_3) {
8517         return "PERMISSION_GET_VENDOR_CATEGORY_3";
8518     }
8519     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_4) {
8520         return "PERMISSION_SET_VENDOR_CATEGORY_4";
8521     }
8522     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_4) {
8523         return "PERMISSION_GET_VENDOR_CATEGORY_4";
8524     }
8525     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_5) {
8526         return "PERMISSION_SET_VENDOR_CATEGORY_5";
8527     }
8528     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_5) {
8529         return "PERMISSION_GET_VENDOR_CATEGORY_5";
8530     }
8531     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_6) {
8532         return "PERMISSION_SET_VENDOR_CATEGORY_6";
8533     }
8534     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_6) {
8535         return "PERMISSION_GET_VENDOR_CATEGORY_6";
8536     }
8537     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_7) {
8538         return "PERMISSION_SET_VENDOR_CATEGORY_7";
8539     }
8540     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_7) {
8541         return "PERMISSION_GET_VENDOR_CATEGORY_7";
8542     }
8543     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_8) {
8544         return "PERMISSION_SET_VENDOR_CATEGORY_8";
8545     }
8546     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_8) {
8547         return "PERMISSION_GET_VENDOR_CATEGORY_8";
8548     }
8549     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_9) {
8550         return "PERMISSION_SET_VENDOR_CATEGORY_9";
8551     }
8552     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_9) {
8553         return "PERMISSION_GET_VENDOR_CATEGORY_9";
8554     }
8555     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_SET_VENDOR_CATEGORY_10) {
8556         return "PERMISSION_SET_VENDOR_CATEGORY_10";
8557     }
8558     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_GET_VENDOR_CATEGORY_10) {
8559         return "PERMISSION_GET_VENDOR_CATEGORY_10";
8560     }
8561     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission::PERMISSION_NOT_ACCESSIBLE) {
8562         return "PERMISSION_NOT_ACCESSIBLE";
8563     }
8564     std::string os;
8565     os += toHexString(static_cast<int32_t>(o));
8566     return os;
8567 }
8568 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o,::std::ostream * os)8569 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleVendorPermission o, ::std::ostream* os) {
8570     *os << toString(o);
8571 }
8572 
8573 template<>
8574 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState>(int32_t o) {
8575     using ::android::hardware::details::toHexString;
8576     std::string os;
8577     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState> flipped = 0;
8578     bool first = true;
8579     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::UNKNOWN)) {
8580         os += (first ? "" : " | ");
8581         os += "UNKNOWN";
8582         first = false;
8583         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::UNKNOWN;
8584     }
8585     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::VACANT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::VACANT)) {
8586         os += (first ? "" : " | ");
8587         os += "VACANT";
8588         first = false;
8589         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::VACANT;
8590     }
8591     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::OCCUPIED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::OCCUPIED)) {
8592         os += (first ? "" : " | ");
8593         os += "OCCUPIED";
8594         first = false;
8595         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::OCCUPIED;
8596     }
8597     if (o != flipped) {
8598         os += (first ? "" : " | ");
8599         os += toHexString(o & (~flipped));
8600     }os += " (";
8601     os += toHexString(o);
8602     os += ")";
8603     return os;
8604 }
8605 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState o)8606 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState o) {
8607     using ::android::hardware::details::toHexString;
8608     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::UNKNOWN) {
8609         return "UNKNOWN";
8610     }
8611     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::VACANT) {
8612         return "VACANT";
8613     }
8614     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState::OCCUPIED) {
8615         return "OCCUPIED";
8616     }
8617     std::string os;
8618     os += toHexString(static_cast<int32_t>(o));
8619     return os;
8620 }
8621 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState o,::std::ostream * os)8622 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleSeatOccupancyState o, ::std::ostream* os) {
8623     *os << toString(o);
8624 }
8625 
8626 template<>
8627 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleLightState>(int32_t o) {
8628     using ::android::hardware::details::toHexString;
8629     std::string os;
8630     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleLightState> flipped = 0;
8631     bool first = true;
8632     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::OFF) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleLightState::OFF)) {
8633         os += (first ? "" : " | ");
8634         os += "OFF";
8635         first = false;
8636         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::OFF;
8637     }
8638     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleLightState::ON)) {
8639         os += (first ? "" : " | ");
8640         os += "ON";
8641         first = false;
8642         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::ON;
8643     }
8644     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::DAYTIME_RUNNING) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleLightState::DAYTIME_RUNNING)) {
8645         os += (first ? "" : " | ");
8646         os += "DAYTIME_RUNNING";
8647         first = false;
8648         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::DAYTIME_RUNNING;
8649     }
8650     if (o != flipped) {
8651         os += (first ? "" : " | ");
8652         os += toHexString(o & (~flipped));
8653     }os += " (";
8654     os += toHexString(o);
8655     os += ")";
8656     return os;
8657 }
8658 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o)8659 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o) {
8660     using ::android::hardware::details::toHexString;
8661     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::OFF) {
8662         return "OFF";
8663     }
8664     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::ON) {
8665         return "ON";
8666     }
8667     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleLightState::DAYTIME_RUNNING) {
8668         return "DAYTIME_RUNNING";
8669     }
8670     std::string os;
8671     os += toHexString(static_cast<int32_t>(o));
8672     return os;
8673 }
8674 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o,::std::ostream * os)8675 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleLightState o, ::std::ostream* os) {
8676     *os << toString(o);
8677 }
8678 
8679 template<>
8680 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch>(int32_t o) {
8681     using ::android::hardware::details::toHexString;
8682     std::string os;
8683     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch> flipped = 0;
8684     bool first = true;
8685     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::OFF) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::OFF)) {
8686         os += (first ? "" : " | ");
8687         os += "OFF";
8688         first = false;
8689         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::OFF;
8690     }
8691     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::ON)) {
8692         os += (first ? "" : " | ");
8693         os += "ON";
8694         first = false;
8695         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::ON;
8696     }
8697     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::DAYTIME_RUNNING) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::DAYTIME_RUNNING)) {
8698         os += (first ? "" : " | ");
8699         os += "DAYTIME_RUNNING";
8700         first = false;
8701         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::DAYTIME_RUNNING;
8702     }
8703     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::AUTOMATIC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::AUTOMATIC)) {
8704         os += (first ? "" : " | ");
8705         os += "AUTOMATIC";
8706         first = false;
8707         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::AUTOMATIC;
8708     }
8709     if (o != flipped) {
8710         os += (first ? "" : " | ");
8711         os += toHexString(o & (~flipped));
8712     }os += " (";
8713     os += toHexString(o);
8714     os += ")";
8715     return os;
8716 }
8717 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch o)8718 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch o) {
8719     using ::android::hardware::details::toHexString;
8720     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::OFF) {
8721         return "OFF";
8722     }
8723     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::ON) {
8724         return "ON";
8725     }
8726     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::DAYTIME_RUNNING) {
8727         return "DAYTIME_RUNNING";
8728     }
8729     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch::AUTOMATIC) {
8730         return "AUTOMATIC";
8731     }
8732     std::string os;
8733     os += toHexString(static_cast<int32_t>(o));
8734     return os;
8735 }
8736 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch o,::std::ostream * os)8737 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleLightSwitch o, ::std::ostream* os) {
8738     *os << toString(o);
8739 }
8740 
8741 template<>
8742 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::EvConnectorType>(int32_t o) {
8743     using ::android::hardware::details::toHexString;
8744     std::string os;
8745     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::EvConnectorType> flipped = 0;
8746     bool first = true;
8747     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::UNKNOWN)) {
8748         os += (first ? "" : " | ");
8749         os += "UNKNOWN";
8750         first = false;
8751         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::UNKNOWN;
8752     }
8753     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_AC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_AC)) {
8754         os += (first ? "" : " | ");
8755         os += "IEC_TYPE_1_AC";
8756         first = false;
8757         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_AC;
8758     }
8759     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_AC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_AC)) {
8760         os += (first ? "" : " | ");
8761         os += "IEC_TYPE_2_AC";
8762         first = false;
8763         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_AC;
8764     }
8765     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_3_AC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_3_AC)) {
8766         os += (first ? "" : " | ");
8767         os += "IEC_TYPE_3_AC";
8768         first = false;
8769         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_3_AC;
8770     }
8771     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_4_DC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_4_DC)) {
8772         os += (first ? "" : " | ");
8773         os += "IEC_TYPE_4_DC";
8774         first = false;
8775         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_4_DC;
8776     }
8777     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_CCS_DC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_CCS_DC)) {
8778         os += (first ? "" : " | ");
8779         os += "IEC_TYPE_1_CCS_DC";
8780         first = false;
8781         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_CCS_DC;
8782     }
8783     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_CCS_DC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_CCS_DC)) {
8784         os += (first ? "" : " | ");
8785         os += "IEC_TYPE_2_CCS_DC";
8786         first = false;
8787         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_CCS_DC;
8788     }
8789     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_ROADSTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_ROADSTER)) {
8790         os += (first ? "" : " | ");
8791         os += "TESLA_ROADSTER";
8792         first = false;
8793         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_ROADSTER;
8794     }
8795     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_HPWC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_HPWC)) {
8796         os += (first ? "" : " | ");
8797         os += "TESLA_HPWC";
8798         first = false;
8799         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_HPWC;
8800     }
8801     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_SUPERCHARGER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_SUPERCHARGER)) {
8802         os += (first ? "" : " | ");
8803         os += "TESLA_SUPERCHARGER";
8804         first = false;
8805         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_SUPERCHARGER;
8806     }
8807     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_AC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_AC)) {
8808         os += (first ? "" : " | ");
8809         os += "GBT_AC";
8810         first = false;
8811         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_AC;
8812     }
8813     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_DC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_DC)) {
8814         os += (first ? "" : " | ");
8815         os += "GBT_DC";
8816         first = false;
8817         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_DC;
8818     }
8819     if ((o & ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::OTHER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::EvConnectorType::OTHER)) {
8820         os += (first ? "" : " | ");
8821         os += "OTHER";
8822         first = false;
8823         flipped |= ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::OTHER;
8824     }
8825     if (o != flipped) {
8826         os += (first ? "" : " | ");
8827         os += toHexString(o & (~flipped));
8828     }os += " (";
8829     os += toHexString(o);
8830     os += ")";
8831     return os;
8832 }
8833 
toString(::android::hardware::automotive::vehicle::V2_0::EvConnectorType o)8834 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::EvConnectorType o) {
8835     using ::android::hardware::details::toHexString;
8836     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::UNKNOWN) {
8837         return "UNKNOWN";
8838     }
8839     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_AC) {
8840         return "IEC_TYPE_1_AC";
8841     }
8842     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_AC) {
8843         return "IEC_TYPE_2_AC";
8844     }
8845     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_3_AC) {
8846         return "IEC_TYPE_3_AC";
8847     }
8848     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_4_DC) {
8849         return "IEC_TYPE_4_DC";
8850     }
8851     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_1_CCS_DC) {
8852         return "IEC_TYPE_1_CCS_DC";
8853     }
8854     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::IEC_TYPE_2_CCS_DC) {
8855         return "IEC_TYPE_2_CCS_DC";
8856     }
8857     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_ROADSTER) {
8858         return "TESLA_ROADSTER";
8859     }
8860     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_HPWC) {
8861         return "TESLA_HPWC";
8862     }
8863     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::TESLA_SUPERCHARGER) {
8864         return "TESLA_SUPERCHARGER";
8865     }
8866     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_AC) {
8867         return "GBT_AC";
8868     }
8869     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::GBT_DC) {
8870         return "GBT_DC";
8871     }
8872     if (o == ::android::hardware::automotive::vehicle::V2_0::EvConnectorType::OTHER) {
8873         return "OTHER";
8874     }
8875     std::string os;
8876     os += toHexString(static_cast<int32_t>(o));
8877     return os;
8878 }
8879 
PrintTo(::android::hardware::automotive::vehicle::V2_0::EvConnectorType o,::std::ostream * os)8880 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::EvConnectorType o, ::std::ostream* os) {
8881     *os << toString(o);
8882 }
8883 
8884 template<>
8885 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::PortLocationType>(int32_t o) {
8886     using ::android::hardware::details::toHexString;
8887     std::string os;
8888     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::PortLocationType> flipped = 0;
8889     bool first = true;
8890     if ((o & ::android::hardware::automotive::vehicle::V2_0::PortLocationType::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::PortLocationType::UNKNOWN)) {
8891         os += (first ? "" : " | ");
8892         os += "UNKNOWN";
8893         first = false;
8894         flipped |= ::android::hardware::automotive::vehicle::V2_0::PortLocationType::UNKNOWN;
8895     }
8896     if ((o & ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_LEFT)) {
8897         os += (first ? "" : " | ");
8898         os += "FRONT_LEFT";
8899         first = false;
8900         flipped |= ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_LEFT;
8901     }
8902     if ((o & ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_RIGHT)) {
8903         os += (first ? "" : " | ");
8904         os += "FRONT_RIGHT";
8905         first = false;
8906         flipped |= ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_RIGHT;
8907     }
8908     if ((o & ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_RIGHT)) {
8909         os += (first ? "" : " | ");
8910         os += "REAR_RIGHT";
8911         first = false;
8912         flipped |= ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_RIGHT;
8913     }
8914     if ((o & ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_LEFT)) {
8915         os += (first ? "" : " | ");
8916         os += "REAR_LEFT";
8917         first = false;
8918         flipped |= ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_LEFT;
8919     }
8920     if ((o & ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT)) {
8921         os += (first ? "" : " | ");
8922         os += "FRONT";
8923         first = false;
8924         flipped |= ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT;
8925     }
8926     if ((o & ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR)) {
8927         os += (first ? "" : " | ");
8928         os += "REAR";
8929         first = false;
8930         flipped |= ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR;
8931     }
8932     if (o != flipped) {
8933         os += (first ? "" : " | ");
8934         os += toHexString(o & (~flipped));
8935     }os += " (";
8936     os += toHexString(o);
8937     os += ")";
8938     return os;
8939 }
8940 
toString(::android::hardware::automotive::vehicle::V2_0::PortLocationType o)8941 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::PortLocationType o) {
8942     using ::android::hardware::details::toHexString;
8943     if (o == ::android::hardware::automotive::vehicle::V2_0::PortLocationType::UNKNOWN) {
8944         return "UNKNOWN";
8945     }
8946     if (o == ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_LEFT) {
8947         return "FRONT_LEFT";
8948     }
8949     if (o == ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT_RIGHT) {
8950         return "FRONT_RIGHT";
8951     }
8952     if (o == ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_RIGHT) {
8953         return "REAR_RIGHT";
8954     }
8955     if (o == ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR_LEFT) {
8956         return "REAR_LEFT";
8957     }
8958     if (o == ::android::hardware::automotive::vehicle::V2_0::PortLocationType::FRONT) {
8959         return "FRONT";
8960     }
8961     if (o == ::android::hardware::automotive::vehicle::V2_0::PortLocationType::REAR) {
8962         return "REAR";
8963     }
8964     std::string os;
8965     os += toHexString(static_cast<int32_t>(o));
8966     return os;
8967 }
8968 
PrintTo(::android::hardware::automotive::vehicle::V2_0::PortLocationType o,::std::ostream * os)8969 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::PortLocationType o, ::std::ostream* os) {
8970     *os << toString(o);
8971 }
8972 
8973 template<>
8974 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::FuelType>(int32_t o) {
8975     using ::android::hardware::details::toHexString;
8976     std::string os;
8977     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::FuelType> flipped = 0;
8978     bool first = true;
8979     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNKNOWN)) {
8980         os += (first ? "" : " | ");
8981         os += "FUEL_TYPE_UNKNOWN";
8982         first = false;
8983         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNKNOWN;
8984     }
8985     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNLEADED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNLEADED)) {
8986         os += (first ? "" : " | ");
8987         os += "FUEL_TYPE_UNLEADED";
8988         first = false;
8989         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNLEADED;
8990     }
8991     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LEADED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LEADED)) {
8992         os += (first ? "" : " | ");
8993         os += "FUEL_TYPE_LEADED";
8994         first = false;
8995         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LEADED;
8996     }
8997     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_1)) {
8998         os += (first ? "" : " | ");
8999         os += "FUEL_TYPE_DIESEL_1";
9000         first = false;
9001         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_1;
9002     }
9003     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_2)) {
9004         os += (first ? "" : " | ");
9005         os += "FUEL_TYPE_DIESEL_2";
9006         first = false;
9007         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_2;
9008     }
9009     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_BIODIESEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_BIODIESEL)) {
9010         os += (first ? "" : " | ");
9011         os += "FUEL_TYPE_BIODIESEL";
9012         first = false;
9013         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_BIODIESEL;
9014     }
9015     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_E85) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_E85)) {
9016         os += (first ? "" : " | ");
9017         os += "FUEL_TYPE_E85";
9018         first = false;
9019         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_E85;
9020     }
9021     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LPG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LPG)) {
9022         os += (first ? "" : " | ");
9023         os += "FUEL_TYPE_LPG";
9024         first = false;
9025         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LPG;
9026     }
9027     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_CNG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_CNG)) {
9028         os += (first ? "" : " | ");
9029         os += "FUEL_TYPE_CNG";
9030         first = false;
9031         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_CNG;
9032     }
9033     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LNG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LNG)) {
9034         os += (first ? "" : " | ");
9035         os += "FUEL_TYPE_LNG";
9036         first = false;
9037         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LNG;
9038     }
9039     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_ELECTRIC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_ELECTRIC)) {
9040         os += (first ? "" : " | ");
9041         os += "FUEL_TYPE_ELECTRIC";
9042         first = false;
9043         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_ELECTRIC;
9044     }
9045     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_HYDROGEN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_HYDROGEN)) {
9046         os += (first ? "" : " | ");
9047         os += "FUEL_TYPE_HYDROGEN";
9048         first = false;
9049         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_HYDROGEN;
9050     }
9051     if ((o & ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_OTHER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_OTHER)) {
9052         os += (first ? "" : " | ");
9053         os += "FUEL_TYPE_OTHER";
9054         first = false;
9055         flipped |= ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_OTHER;
9056     }
9057     if (o != flipped) {
9058         os += (first ? "" : " | ");
9059         os += toHexString(o & (~flipped));
9060     }os += " (";
9061     os += toHexString(o);
9062     os += ")";
9063     return os;
9064 }
9065 
toString(::android::hardware::automotive::vehicle::V2_0::FuelType o)9066 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::FuelType o) {
9067     using ::android::hardware::details::toHexString;
9068     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNKNOWN) {
9069         return "FUEL_TYPE_UNKNOWN";
9070     }
9071     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_UNLEADED) {
9072         return "FUEL_TYPE_UNLEADED";
9073     }
9074     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LEADED) {
9075         return "FUEL_TYPE_LEADED";
9076     }
9077     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_1) {
9078         return "FUEL_TYPE_DIESEL_1";
9079     }
9080     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_DIESEL_2) {
9081         return "FUEL_TYPE_DIESEL_2";
9082     }
9083     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_BIODIESEL) {
9084         return "FUEL_TYPE_BIODIESEL";
9085     }
9086     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_E85) {
9087         return "FUEL_TYPE_E85";
9088     }
9089     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LPG) {
9090         return "FUEL_TYPE_LPG";
9091     }
9092     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_CNG) {
9093         return "FUEL_TYPE_CNG";
9094     }
9095     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_LNG) {
9096         return "FUEL_TYPE_LNG";
9097     }
9098     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_ELECTRIC) {
9099         return "FUEL_TYPE_ELECTRIC";
9100     }
9101     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_HYDROGEN) {
9102         return "FUEL_TYPE_HYDROGEN";
9103     }
9104     if (o == ::android::hardware::automotive::vehicle::V2_0::FuelType::FUEL_TYPE_OTHER) {
9105         return "FUEL_TYPE_OTHER";
9106     }
9107     std::string os;
9108     os += toHexString(static_cast<int32_t>(o));
9109     return os;
9110 }
9111 
PrintTo(::android::hardware::automotive::vehicle::V2_0::FuelType o,::std::ostream * os)9112 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::FuelType o, ::std::ostream* os) {
9113     *os << toString(o);
9114 }
9115 
9116 template<>
9117 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection>(int32_t o) {
9118     using ::android::hardware::details::toHexString;
9119     std::string os;
9120     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection> flipped = 0;
9121     bool first = true;
9122     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::UNKNOWN)) {
9123         os += (first ? "" : " | ");
9124         os += "UNKNOWN";
9125         first = false;
9126         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::UNKNOWN;
9127     }
9128     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE)) {
9129         os += (first ? "" : " | ");
9130         os += "FACE";
9131         first = false;
9132         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE;
9133     }
9134     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FLOOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FLOOR)) {
9135         os += (first ? "" : " | ");
9136         os += "FLOOR";
9137         first = false;
9138         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FLOOR;
9139     }
9140     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE_AND_FLOOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE_AND_FLOOR)) {
9141         os += (first ? "" : " | ");
9142         os += "FACE_AND_FLOOR";
9143         first = false;
9144         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE_AND_FLOOR;
9145     }
9146     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST)) {
9147         os += (first ? "" : " | ");
9148         os += "DEFROST";
9149         first = false;
9150         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST;
9151     }
9152     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST_AND_FLOOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST_AND_FLOOR)) {
9153         os += (first ? "" : " | ");
9154         os += "DEFROST_AND_FLOOR";
9155         first = false;
9156         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST_AND_FLOOR;
9157     }
9158     if (o != flipped) {
9159         os += (first ? "" : " | ");
9160         os += toHexString(o & (~flipped));
9161     }os += " (";
9162     os += toHexString(o);
9163     os += ")";
9164     return os;
9165 }
9166 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection o)9167 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection o) {
9168     using ::android::hardware::details::toHexString;
9169     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::UNKNOWN) {
9170         return "UNKNOWN";
9171     }
9172     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE) {
9173         return "FACE";
9174     }
9175     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FLOOR) {
9176         return "FLOOR";
9177     }
9178     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::FACE_AND_FLOOR) {
9179         return "FACE_AND_FLOOR";
9180     }
9181     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST) {
9182         return "DEFROST";
9183     }
9184     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection::DEFROST_AND_FLOOR) {
9185         return "DEFROST_AND_FLOOR";
9186     }
9187     std::string os;
9188     os += toHexString(static_cast<int32_t>(o));
9189     return os;
9190 }
9191 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection o,::std::ostream * os)9192 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleHvacFanDirection o, ::std::ostream* os) {
9193     *os << toString(o);
9194 }
9195 
9196 template<>
9197 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel>(int32_t o) {
9198     using ::android::hardware::details::toHexString;
9199     std::string os;
9200     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel> flipped = 0;
9201     bool first = true;
9202     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::CRITICALLY_LOW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::CRITICALLY_LOW)) {
9203         os += (first ? "" : " | ");
9204         os += "CRITICALLY_LOW";
9205         first = false;
9206         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::CRITICALLY_LOW;
9207     }
9208     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::LOW) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::LOW)) {
9209         os += (first ? "" : " | ");
9210         os += "LOW";
9211         first = false;
9212         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::LOW;
9213     }
9214     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::NORMAL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::NORMAL)) {
9215         os += (first ? "" : " | ");
9216         os += "NORMAL";
9217         first = false;
9218         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::NORMAL;
9219     }
9220     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::HIGH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::HIGH)) {
9221         os += (first ? "" : " | ");
9222         os += "HIGH";
9223         first = false;
9224         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::HIGH;
9225     }
9226     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::ERROR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::ERROR)) {
9227         os += (first ? "" : " | ");
9228         os += "ERROR";
9229         first = false;
9230         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::ERROR;
9231     }
9232     if (o != flipped) {
9233         os += (first ? "" : " | ");
9234         os += toHexString(o & (~flipped));
9235     }os += " (";
9236     os += toHexString(o);
9237     os += ")";
9238     return os;
9239 }
9240 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel o)9241 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel o) {
9242     using ::android::hardware::details::toHexString;
9243     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::CRITICALLY_LOW) {
9244         return "CRITICALLY_LOW";
9245     }
9246     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::LOW) {
9247         return "LOW";
9248     }
9249     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::NORMAL) {
9250         return "NORMAL";
9251     }
9252     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::HIGH) {
9253         return "HIGH";
9254     }
9255     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel::ERROR) {
9256         return "ERROR";
9257     }
9258     std::string os;
9259     os += toHexString(static_cast<int32_t>(o));
9260     return os;
9261 }
9262 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel o,::std::ostream * os)9263 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleOilLevel o, ::std::ostream* os) {
9264     *os << toString(o);
9265 }
9266 
9267 template<>
9268 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag>(int32_t o) {
9269     using ::android::hardware::details::toHexString;
9270     std::string os;
9271     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag> flipped = 0;
9272     bool first = true;
9273     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::ENABLE_DEEP_SLEEP_FLAG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::ENABLE_DEEP_SLEEP_FLAG)) {
9274         os += (first ? "" : " | ");
9275         os += "ENABLE_DEEP_SLEEP_FLAG";
9276         first = false;
9277         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::ENABLE_DEEP_SLEEP_FLAG;
9278     }
9279     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::CONFIG_SUPPORT_TIMER_POWER_ON_FLAG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::CONFIG_SUPPORT_TIMER_POWER_ON_FLAG)) {
9280         os += (first ? "" : " | ");
9281         os += "CONFIG_SUPPORT_TIMER_POWER_ON_FLAG";
9282         first = false;
9283         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::CONFIG_SUPPORT_TIMER_POWER_ON_FLAG;
9284     }
9285     if (o != flipped) {
9286         os += (first ? "" : " | ");
9287         os += toHexString(o & (~flipped));
9288     }os += " (";
9289     os += toHexString(o);
9290     os += ")";
9291     return os;
9292 }
9293 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag o)9294 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag o) {
9295     using ::android::hardware::details::toHexString;
9296     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::ENABLE_DEEP_SLEEP_FLAG) {
9297         return "ENABLE_DEEP_SLEEP_FLAG";
9298     }
9299     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag::CONFIG_SUPPORT_TIMER_POWER_ON_FLAG) {
9300         return "CONFIG_SUPPORT_TIMER_POWER_ON_FLAG";
9301     }
9302     std::string os;
9303     os += toHexString(static_cast<int32_t>(o));
9304     return os;
9305 }
9306 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag o,::std::ostream * os)9307 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateConfigFlag o, ::std::ostream* os) {
9308     *os << toString(o);
9309 }
9310 
9311 template<>
9312 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq>(int32_t o) {
9313     using ::android::hardware::details::toHexString;
9314     std::string os;
9315     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq> flipped = 0;
9316     bool first = true;
9317     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::ON)) {
9318         os += (first ? "" : " | ");
9319         os += "ON";
9320         first = false;
9321         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::ON;
9322     }
9323     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::SHUTDOWN_PREPARE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::SHUTDOWN_PREPARE)) {
9324         os += (first ? "" : " | ");
9325         os += "SHUTDOWN_PREPARE";
9326         first = false;
9327         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::SHUTDOWN_PREPARE;
9328     }
9329     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::CANCEL_SHUTDOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::CANCEL_SHUTDOWN)) {
9330         os += (first ? "" : " | ");
9331         os += "CANCEL_SHUTDOWN";
9332         first = false;
9333         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::CANCEL_SHUTDOWN;
9334     }
9335     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::FINISHED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::FINISHED)) {
9336         os += (first ? "" : " | ");
9337         os += "FINISHED";
9338         first = false;
9339         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::FINISHED;
9340     }
9341     if (o != flipped) {
9342         os += (first ? "" : " | ");
9343         os += toHexString(o & (~flipped));
9344     }os += " (";
9345     os += toHexString(o);
9346     os += ")";
9347     return os;
9348 }
9349 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq o)9350 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq o) {
9351     using ::android::hardware::details::toHexString;
9352     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::ON) {
9353         return "ON";
9354     }
9355     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::SHUTDOWN_PREPARE) {
9356         return "SHUTDOWN_PREPARE";
9357     }
9358     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::CANCEL_SHUTDOWN) {
9359         return "CANCEL_SHUTDOWN";
9360     }
9361     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq::FINISHED) {
9362         return "FINISHED";
9363     }
9364     std::string os;
9365     os += toHexString(static_cast<int32_t>(o));
9366     return os;
9367 }
9368 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq o,::std::ostream * os)9369 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReq o, ::std::ostream* os) {
9370     *os << toString(o);
9371 }
9372 
9373 template<>
9374 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex>(int32_t o) {
9375     using ::android::hardware::details::toHexString;
9376     std::string os;
9377     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex> flipped = 0;
9378     bool first = true;
9379     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::STATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::STATE)) {
9380         os += (first ? "" : " | ");
9381         os += "STATE";
9382         first = false;
9383         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::STATE;
9384     }
9385     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::ADDITIONAL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::ADDITIONAL)) {
9386         os += (first ? "" : " | ");
9387         os += "ADDITIONAL";
9388         first = false;
9389         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::ADDITIONAL;
9390     }
9391     if (o != flipped) {
9392         os += (first ? "" : " | ");
9393         os += toHexString(o & (~flipped));
9394     }os += " (";
9395     os += toHexString(o);
9396     os += ")";
9397     return os;
9398 }
9399 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex o)9400 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex o) {
9401     using ::android::hardware::details::toHexString;
9402     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::STATE) {
9403         return "STATE";
9404     }
9405     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex::ADDITIONAL) {
9406         return "ADDITIONAL";
9407     }
9408     std::string os;
9409     os += toHexString(static_cast<int32_t>(o));
9410     return os;
9411 }
9412 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex o,::std::ostream * os)9413 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReqIndex o, ::std::ostream* os) {
9414     *os << toString(o);
9415 }
9416 
9417 template<>
9418 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam>(int32_t o) {
9419     using ::android::hardware::details::toHexString;
9420     std::string os;
9421     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam> flipped = 0;
9422     bool first = true;
9423     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_IMMEDIATELY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_IMMEDIATELY)) {
9424         os += (first ? "" : " | ");
9425         os += "SHUTDOWN_IMMEDIATELY";
9426         first = false;
9427         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_IMMEDIATELY;
9428     }
9429     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::CAN_SLEEP) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::CAN_SLEEP)) {
9430         os += (first ? "" : " | ");
9431         os += "CAN_SLEEP";
9432         first = false;
9433         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::CAN_SLEEP;
9434     }
9435     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_ONLY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_ONLY)) {
9436         os += (first ? "" : " | ");
9437         os += "SHUTDOWN_ONLY";
9438         first = false;
9439         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_ONLY;
9440     }
9441     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SLEEP_IMMEDIATELY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SLEEP_IMMEDIATELY)) {
9442         os += (first ? "" : " | ");
9443         os += "SLEEP_IMMEDIATELY";
9444         first = false;
9445         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SLEEP_IMMEDIATELY;
9446     }
9447     if (o != flipped) {
9448         os += (first ? "" : " | ");
9449         os += toHexString(o & (~flipped));
9450     }os += " (";
9451     os += toHexString(o);
9452     os += ")";
9453     return os;
9454 }
9455 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam o)9456 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam o) {
9457     using ::android::hardware::details::toHexString;
9458     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_IMMEDIATELY) {
9459         return "SHUTDOWN_IMMEDIATELY";
9460     }
9461     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::CAN_SLEEP) {
9462         return "CAN_SLEEP";
9463     }
9464     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SHUTDOWN_ONLY) {
9465         return "SHUTDOWN_ONLY";
9466     }
9467     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam::SLEEP_IMMEDIATELY) {
9468         return "SLEEP_IMMEDIATELY";
9469     }
9470     std::string os;
9471     os += toHexString(static_cast<int32_t>(o));
9472     return os;
9473 }
9474 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam o,::std::ostream * os)9475 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateShutdownParam o, ::std::ostream* os) {
9476     *os << toString(o);
9477 }
9478 
9479 template<>
9480 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport>(int32_t o) {
9481     using ::android::hardware::details::toHexString;
9482     std::string os;
9483     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport> flipped = 0;
9484     bool first = true;
9485     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::WAIT_FOR_VHAL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::WAIT_FOR_VHAL)) {
9486         os += (first ? "" : " | ");
9487         os += "WAIT_FOR_VHAL";
9488         first = false;
9489         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::WAIT_FOR_VHAL;
9490     }
9491     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_ENTRY) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_ENTRY)) {
9492         os += (first ? "" : " | ");
9493         os += "DEEP_SLEEP_ENTRY";
9494         first = false;
9495         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_ENTRY;
9496     }
9497     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_EXIT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_EXIT)) {
9498         os += (first ? "" : " | ");
9499         os += "DEEP_SLEEP_EXIT";
9500         first = false;
9501         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_EXIT;
9502     }
9503     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_POSTPONE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_POSTPONE)) {
9504         os += (first ? "" : " | ");
9505         os += "SHUTDOWN_POSTPONE";
9506         first = false;
9507         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_POSTPONE;
9508     }
9509     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_START) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_START)) {
9510         os += (first ? "" : " | ");
9511         os += "SHUTDOWN_START";
9512         first = false;
9513         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_START;
9514     }
9515     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::ON)) {
9516         os += (first ? "" : " | ");
9517         os += "ON";
9518         first = false;
9519         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::ON;
9520     }
9521     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_PREPARE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_PREPARE)) {
9522         os += (first ? "" : " | ");
9523         os += "SHUTDOWN_PREPARE";
9524         first = false;
9525         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_PREPARE;
9526     }
9527     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_CANCELLED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_CANCELLED)) {
9528         os += (first ? "" : " | ");
9529         os += "SHUTDOWN_CANCELLED";
9530         first = false;
9531         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_CANCELLED;
9532     }
9533     if (o != flipped) {
9534         os += (first ? "" : " | ");
9535         os += toHexString(o & (~flipped));
9536     }os += " (";
9537     os += toHexString(o);
9538     os += ")";
9539     return os;
9540 }
9541 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport o)9542 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport o) {
9543     using ::android::hardware::details::toHexString;
9544     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::WAIT_FOR_VHAL) {
9545         return "WAIT_FOR_VHAL";
9546     }
9547     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_ENTRY) {
9548         return "DEEP_SLEEP_ENTRY";
9549     }
9550     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::DEEP_SLEEP_EXIT) {
9551         return "DEEP_SLEEP_EXIT";
9552     }
9553     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_POSTPONE) {
9554         return "SHUTDOWN_POSTPONE";
9555     }
9556     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_START) {
9557         return "SHUTDOWN_START";
9558     }
9559     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::ON) {
9560         return "ON";
9561     }
9562     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_PREPARE) {
9563         return "SHUTDOWN_PREPARE";
9564     }
9565     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport::SHUTDOWN_CANCELLED) {
9566         return "SHUTDOWN_CANCELLED";
9567     }
9568     std::string os;
9569     os += toHexString(static_cast<int32_t>(o));
9570     return os;
9571 }
9572 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport o,::std::ostream * os)9573 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleApPowerStateReport o, ::std::ostream* os) {
9574     *os << toString(o);
9575 }
9576 
9577 template<>
9578 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction>(int32_t o) {
9579     using ::android::hardware::details::toHexString;
9580     std::string os;
9581     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction> flipped = 0;
9582     bool first = true;
9583     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_DOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_DOWN)) {
9584         os += (first ? "" : " | ");
9585         os += "ACTION_DOWN";
9586         first = false;
9587         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_DOWN;
9588     }
9589     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_UP) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_UP)) {
9590         os += (first ? "" : " | ");
9591         os += "ACTION_UP";
9592         first = false;
9593         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_UP;
9594     }
9595     if (o != flipped) {
9596         os += (first ? "" : " | ");
9597         os += toHexString(o & (~flipped));
9598     }os += " (";
9599     os += toHexString(o);
9600     os += ")";
9601     return os;
9602 }
9603 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction o)9604 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction o) {
9605     using ::android::hardware::details::toHexString;
9606     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_DOWN) {
9607         return "ACTION_DOWN";
9608     }
9609     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction::ACTION_UP) {
9610         return "ACTION_UP";
9611     }
9612     std::string os;
9613     os += toHexString(static_cast<int32_t>(o));
9614     return os;
9615 }
9616 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction o,::std::ostream * os)9617 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleHwKeyInputAction o, ::std::ostream* os) {
9618     *os << toString(o);
9619 }
9620 
9621 template<>
9622 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleDisplay>(int32_t o) {
9623     using ::android::hardware::details::toHexString;
9624     std::string os;
9625     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleDisplay> flipped = 0;
9626     bool first = true;
9627     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::MAIN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::MAIN)) {
9628         os += (first ? "" : " | ");
9629         os += "MAIN";
9630         first = false;
9631         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::MAIN;
9632     }
9633     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::INSTRUMENT_CLUSTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::INSTRUMENT_CLUSTER)) {
9634         os += (first ? "" : " | ");
9635         os += "INSTRUMENT_CLUSTER";
9636         first = false;
9637         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::INSTRUMENT_CLUSTER;
9638     }
9639     if (o != flipped) {
9640         os += (first ? "" : " | ");
9641         os += toHexString(o & (~flipped));
9642     }os += " (";
9643     os += toHexString(o);
9644     os += ")";
9645     return os;
9646 }
9647 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay o)9648 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay o) {
9649     using ::android::hardware::details::toHexString;
9650     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::MAIN) {
9651         return "MAIN";
9652     }
9653     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleDisplay::INSTRUMENT_CLUSTER) {
9654         return "INSTRUMENT_CLUSTER";
9655     }
9656     std::string os;
9657     os += toHexString(static_cast<int32_t>(o));
9658     return os;
9659 }
9660 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay o,::std::ostream * os)9661 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleDisplay o, ::std::ostream* os) {
9662     *os << toString(o);
9663 }
9664 
9665 template<>
9666 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleUnit>(int32_t o) {
9667     using ::android::hardware::details::toHexString;
9668     std::string os;
9669     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleUnit> flipped = 0;
9670     bool first = true;
9671     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SHOULD_NOT_USE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SHOULD_NOT_USE)) {
9672         os += (first ? "" : " | ");
9673         os += "SHOULD_NOT_USE";
9674         first = false;
9675         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SHOULD_NOT_USE;
9676     }
9677     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER_PER_SEC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER_PER_SEC)) {
9678         os += (first ? "" : " | ");
9679         os += "METER_PER_SEC";
9680         first = false;
9681         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER_PER_SEC;
9682     }
9683     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::RPM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::RPM)) {
9684         os += (first ? "" : " | ");
9685         os += "RPM";
9686         first = false;
9687         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::RPM;
9688     }
9689     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::HERTZ) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::HERTZ)) {
9690         os += (first ? "" : " | ");
9691         os += "HERTZ";
9692         first = false;
9693         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::HERTZ;
9694     }
9695     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PERCENTILE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PERCENTILE)) {
9696         os += (first ? "" : " | ");
9697         os += "PERCENTILE";
9698         first = false;
9699         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PERCENTILE;
9700     }
9701     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIMETER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIMETER)) {
9702         os += (first ? "" : " | ");
9703         os += "MILLIMETER";
9704         first = false;
9705         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIMETER;
9706     }
9707     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER)) {
9708         os += (first ? "" : " | ");
9709         os += "METER";
9710         first = false;
9711         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER;
9712     }
9713     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETER)) {
9714         os += (first ? "" : " | ");
9715         os += "KILOMETER";
9716         first = false;
9717         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETER;
9718     }
9719     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILE)) {
9720         os += (first ? "" : " | ");
9721         os += "MILE";
9722         first = false;
9723         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILE;
9724     }
9725     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::CELSIUS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::CELSIUS)) {
9726         os += (first ? "" : " | ");
9727         os += "CELSIUS";
9728         first = false;
9729         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::CELSIUS;
9730     }
9731     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::FAHRENHEIT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::FAHRENHEIT)) {
9732         os += (first ? "" : " | ");
9733         os += "FAHRENHEIT";
9734         first = false;
9735         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::FAHRENHEIT;
9736     }
9737     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KELVIN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KELVIN)) {
9738         os += (first ? "" : " | ");
9739         os += "KELVIN";
9740         first = false;
9741         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KELVIN;
9742     }
9743     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLILITER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLILITER)) {
9744         os += (first ? "" : " | ");
9745         os += "MILLILITER";
9746         first = false;
9747         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLILITER;
9748     }
9749     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::LITER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::LITER)) {
9750         os += (first ? "" : " | ");
9751         os += "LITER";
9752         first = false;
9753         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::LITER;
9754     }
9755     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::GALLON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::GALLON)) {
9756         os += (first ? "" : " | ");
9757         os += "GALLON";
9758         first = false;
9759         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::GALLON;
9760     }
9761     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::US_GALLON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::US_GALLON)) {
9762         os += (first ? "" : " | ");
9763         os += "US_GALLON";
9764         first = false;
9765         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::US_GALLON;
9766     }
9767     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::IMPERIAL_GALLON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::IMPERIAL_GALLON)) {
9768         os += (first ? "" : " | ");
9769         os += "IMPERIAL_GALLON";
9770         first = false;
9771         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::IMPERIAL_GALLON;
9772     }
9773     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::NANO_SECS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::NANO_SECS)) {
9774         os += (first ? "" : " | ");
9775         os += "NANO_SECS";
9776         first = false;
9777         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::NANO_SECS;
9778     }
9779     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SECS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SECS)) {
9780         os += (first ? "" : " | ");
9781         os += "SECS";
9782         first = false;
9783         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SECS;
9784     }
9785     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::YEAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::YEAR)) {
9786         os += (first ? "" : " | ");
9787         os += "YEAR";
9788         first = false;
9789         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::YEAR;
9790     }
9791     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::WATT_HOUR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::WATT_HOUR)) {
9792         os += (first ? "" : " | ");
9793         os += "WATT_HOUR";
9794         first = false;
9795         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::WATT_HOUR;
9796     }
9797     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIAMPERE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIAMPERE)) {
9798         os += (first ? "" : " | ");
9799         os += "MILLIAMPERE";
9800         first = false;
9801         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIAMPERE;
9802     }
9803     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIVOLT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIVOLT)) {
9804         os += (first ? "" : " | ");
9805         os += "MILLIVOLT";
9806         first = false;
9807         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIVOLT;
9808     }
9809     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIWATTS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIWATTS)) {
9810         os += (first ? "" : " | ");
9811         os += "MILLIWATTS";
9812         first = false;
9813         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIWATTS;
9814     }
9815     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::AMPERE_HOURS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::AMPERE_HOURS)) {
9816         os += (first ? "" : " | ");
9817         os += "AMPERE_HOURS";
9818         first = false;
9819         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::AMPERE_HOURS;
9820     }
9821     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOWATT_HOUR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOWATT_HOUR)) {
9822         os += (first ? "" : " | ");
9823         os += "KILOWATT_HOUR";
9824         first = false;
9825         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOWATT_HOUR;
9826     }
9827     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOPASCAL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOPASCAL)) {
9828         os += (first ? "" : " | ");
9829         os += "KILOPASCAL";
9830         first = false;
9831         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOPASCAL;
9832     }
9833     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PSI) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PSI)) {
9834         os += (first ? "" : " | ");
9835         os += "PSI";
9836         first = false;
9837         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PSI;
9838     }
9839     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::BAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::BAR)) {
9840         os += (first ? "" : " | ");
9841         os += "BAR";
9842         first = false;
9843         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::BAR;
9844     }
9845     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::DEGREES) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::DEGREES)) {
9846         os += (first ? "" : " | ");
9847         os += "DEGREES";
9848         first = false;
9849         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::DEGREES;
9850     }
9851     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILES_PER_HOUR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILES_PER_HOUR)) {
9852         os += (first ? "" : " | ");
9853         os += "MILES_PER_HOUR";
9854         first = false;
9855         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILES_PER_HOUR;
9856     }
9857     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETERS_PER_HOUR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETERS_PER_HOUR)) {
9858         os += (first ? "" : " | ");
9859         os += "KILOMETERS_PER_HOUR";
9860         first = false;
9861         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETERS_PER_HOUR;
9862     }
9863     if (o != flipped) {
9864         os += (first ? "" : " | ");
9865         os += toHexString(o & (~flipped));
9866     }os += " (";
9867     os += toHexString(o);
9868     os += ")";
9869     return os;
9870 }
9871 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleUnit o)9872 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleUnit o) {
9873     using ::android::hardware::details::toHexString;
9874     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SHOULD_NOT_USE) {
9875         return "SHOULD_NOT_USE";
9876     }
9877     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER_PER_SEC) {
9878         return "METER_PER_SEC";
9879     }
9880     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::RPM) {
9881         return "RPM";
9882     }
9883     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::HERTZ) {
9884         return "HERTZ";
9885     }
9886     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PERCENTILE) {
9887         return "PERCENTILE";
9888     }
9889     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIMETER) {
9890         return "MILLIMETER";
9891     }
9892     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::METER) {
9893         return "METER";
9894     }
9895     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETER) {
9896         return "KILOMETER";
9897     }
9898     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILE) {
9899         return "MILE";
9900     }
9901     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::CELSIUS) {
9902         return "CELSIUS";
9903     }
9904     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::FAHRENHEIT) {
9905         return "FAHRENHEIT";
9906     }
9907     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KELVIN) {
9908         return "KELVIN";
9909     }
9910     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLILITER) {
9911         return "MILLILITER";
9912     }
9913     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::LITER) {
9914         return "LITER";
9915     }
9916     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::GALLON) {
9917         return "GALLON";
9918     }
9919     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::US_GALLON) {
9920         return "US_GALLON";
9921     }
9922     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::IMPERIAL_GALLON) {
9923         return "IMPERIAL_GALLON";
9924     }
9925     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::NANO_SECS) {
9926         return "NANO_SECS";
9927     }
9928     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::SECS) {
9929         return "SECS";
9930     }
9931     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::YEAR) {
9932         return "YEAR";
9933     }
9934     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::WATT_HOUR) {
9935         return "WATT_HOUR";
9936     }
9937     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIAMPERE) {
9938         return "MILLIAMPERE";
9939     }
9940     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIVOLT) {
9941         return "MILLIVOLT";
9942     }
9943     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILLIWATTS) {
9944         return "MILLIWATTS";
9945     }
9946     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::AMPERE_HOURS) {
9947         return "AMPERE_HOURS";
9948     }
9949     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOWATT_HOUR) {
9950         return "KILOWATT_HOUR";
9951     }
9952     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOPASCAL) {
9953         return "KILOPASCAL";
9954     }
9955     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::PSI) {
9956         return "PSI";
9957     }
9958     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::BAR) {
9959         return "BAR";
9960     }
9961     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::DEGREES) {
9962         return "DEGREES";
9963     }
9964     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::MILES_PER_HOUR) {
9965         return "MILES_PER_HOUR";
9966     }
9967     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleUnit::KILOMETERS_PER_HOUR) {
9968         return "KILOMETERS_PER_HOUR";
9969     }
9970     std::string os;
9971     os += toHexString(static_cast<int32_t>(o));
9972     return os;
9973 }
9974 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleUnit o,::std::ostream * os)9975 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleUnit o, ::std::ostream* os) {
9976     *os << toString(o);
9977 }
9978 
9979 template<>
9980 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode>(int32_t o) {
9981     using ::android::hardware::details::toHexString;
9982     std::string os;
9983     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode> flipped = 0;
9984     bool first = true;
9985     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::STATIC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::STATIC)) {
9986         os += (first ? "" : " | ");
9987         os += "STATIC";
9988         first = false;
9989         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::STATIC;
9990     }
9991     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::ON_CHANGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::ON_CHANGE)) {
9992         os += (first ? "" : " | ");
9993         os += "ON_CHANGE";
9994         first = false;
9995         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::ON_CHANGE;
9996     }
9997     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::CONTINUOUS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::CONTINUOUS)) {
9998         os += (first ? "" : " | ");
9999         os += "CONTINUOUS";
10000         first = false;
10001         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::CONTINUOUS;
10002     }
10003     if (o != flipped) {
10004         os += (first ? "" : " | ");
10005         os += toHexString(o & (~flipped));
10006     }os += " (";
10007     os += toHexString(o);
10008     os += ")";
10009     return os;
10010 }
10011 
toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode o)10012 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode o) {
10013     using ::android::hardware::details::toHexString;
10014     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::STATIC) {
10015         return "STATIC";
10016     }
10017     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::ON_CHANGE) {
10018         return "ON_CHANGE";
10019     }
10020     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode::CONTINUOUS) {
10021         return "CONTINUOUS";
10022     }
10023     std::string os;
10024     os += toHexString(static_cast<int32_t>(o));
10025     return os;
10026 }
10027 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode o,::std::ostream * os)10028 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyChangeMode o, ::std::ostream* os) {
10029     *os << toString(o);
10030 }
10031 
10032 template<>
10033 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess>(int32_t o) {
10034     using ::android::hardware::details::toHexString;
10035     std::string os;
10036     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess> flipped = 0;
10037     bool first = true;
10038     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::NONE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::NONE)) {
10039         os += (first ? "" : " | ");
10040         os += "NONE";
10041         first = false;
10042         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::NONE;
10043     }
10044     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ)) {
10045         os += (first ? "" : " | ");
10046         os += "READ";
10047         first = false;
10048         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ;
10049     }
10050     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::WRITE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::WRITE)) {
10051         os += (first ? "" : " | ");
10052         os += "WRITE";
10053         first = false;
10054         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::WRITE;
10055     }
10056     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ_WRITE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ_WRITE)) {
10057         os += (first ? "" : " | ");
10058         os += "READ_WRITE";
10059         first = false;
10060         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ_WRITE;
10061     }
10062     if (o != flipped) {
10063         os += (first ? "" : " | ");
10064         os += toHexString(o & (~flipped));
10065     }os += " (";
10066     os += toHexString(o);
10067     os += ")";
10068     return os;
10069 }
10070 
toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess o)10071 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess o) {
10072     using ::android::hardware::details::toHexString;
10073     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::NONE) {
10074         return "NONE";
10075     }
10076     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ) {
10077         return "READ";
10078     }
10079     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::WRITE) {
10080         return "WRITE";
10081     }
10082     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess::READ_WRITE) {
10083         return "READ_WRITE";
10084     }
10085     std::string os;
10086     os += toHexString(static_cast<int32_t>(o));
10087     return os;
10088 }
10089 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess o,::std::ostream * os)10090 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyAccess o, ::std::ostream* os) {
10091     *os << toString(o);
10092 }
10093 
10094 template<>
10095 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus>(int32_t o) {
10096     using ::android::hardware::details::toHexString;
10097     std::string os;
10098     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus> flipped = 0;
10099     bool first = true;
10100     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::AVAILABLE)) {
10101         os += (first ? "" : " | ");
10102         os += "AVAILABLE";
10103         first = false;
10104         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::AVAILABLE;
10105     }
10106     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::UNAVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::UNAVAILABLE)) {
10107         os += (first ? "" : " | ");
10108         os += "UNAVAILABLE";
10109         first = false;
10110         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::UNAVAILABLE;
10111     }
10112     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::ERROR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::ERROR)) {
10113         os += (first ? "" : " | ");
10114         os += "ERROR";
10115         first = false;
10116         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::ERROR;
10117     }
10118     if (o != flipped) {
10119         os += (first ? "" : " | ");
10120         os += toHexString(o & (~flipped));
10121     }os += " (";
10122     os += toHexString(o);
10123     os += ")";
10124     return os;
10125 }
10126 
toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus o)10127 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus o) {
10128     using ::android::hardware::details::toHexString;
10129     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::AVAILABLE) {
10130         return "AVAILABLE";
10131     }
10132     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::UNAVAILABLE) {
10133         return "UNAVAILABLE";
10134     }
10135     if (o == ::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus::ERROR) {
10136         return "ERROR";
10137     }
10138     std::string os;
10139     os += toHexString(static_cast<int32_t>(o));
10140     return os;
10141 }
10142 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus o,::std::ostream * os)10143 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehiclePropertyStatus o, ::std::ostream* os) {
10144     *os << toString(o);
10145 }
10146 
10147 template<>
10148 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleGear>(int32_t o) {
10149     using ::android::hardware::details::toHexString;
10150     std::string os;
10151     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleGear> flipped = 0;
10152     bool first = true;
10153     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_UNKNOWN)) {
10154         os += (first ? "" : " | ");
10155         os += "GEAR_UNKNOWN";
10156         first = false;
10157         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_UNKNOWN;
10158     }
10159     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_NEUTRAL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_NEUTRAL)) {
10160         os += (first ? "" : " | ");
10161         os += "GEAR_NEUTRAL";
10162         first = false;
10163         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_NEUTRAL;
10164     }
10165     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_REVERSE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_REVERSE)) {
10166         os += (first ? "" : " | ");
10167         os += "GEAR_REVERSE";
10168         first = false;
10169         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_REVERSE;
10170     }
10171     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_PARK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_PARK)) {
10172         os += (first ? "" : " | ");
10173         os += "GEAR_PARK";
10174         first = false;
10175         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_PARK;
10176     }
10177     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_DRIVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_DRIVE)) {
10178         os += (first ? "" : " | ");
10179         os += "GEAR_DRIVE";
10180         first = false;
10181         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_DRIVE;
10182     }
10183     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_1)) {
10184         os += (first ? "" : " | ");
10185         os += "GEAR_1";
10186         first = false;
10187         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_1;
10188     }
10189     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_2)) {
10190         os += (first ? "" : " | ");
10191         os += "GEAR_2";
10192         first = false;
10193         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_2;
10194     }
10195     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_3) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_3)) {
10196         os += (first ? "" : " | ");
10197         os += "GEAR_3";
10198         first = false;
10199         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_3;
10200     }
10201     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_4) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_4)) {
10202         os += (first ? "" : " | ");
10203         os += "GEAR_4";
10204         first = false;
10205         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_4;
10206     }
10207     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_5) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_5)) {
10208         os += (first ? "" : " | ");
10209         os += "GEAR_5";
10210         first = false;
10211         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_5;
10212     }
10213     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_6) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_6)) {
10214         os += (first ? "" : " | ");
10215         os += "GEAR_6";
10216         first = false;
10217         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_6;
10218     }
10219     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_7) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_7)) {
10220         os += (first ? "" : " | ");
10221         os += "GEAR_7";
10222         first = false;
10223         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_7;
10224     }
10225     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_8) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_8)) {
10226         os += (first ? "" : " | ");
10227         os += "GEAR_8";
10228         first = false;
10229         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_8;
10230     }
10231     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_9) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_9)) {
10232         os += (first ? "" : " | ");
10233         os += "GEAR_9";
10234         first = false;
10235         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_9;
10236     }
10237     if (o != flipped) {
10238         os += (first ? "" : " | ");
10239         os += toHexString(o & (~flipped));
10240     }os += " (";
10241     os += toHexString(o);
10242     os += ")";
10243     return os;
10244 }
10245 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleGear o)10246 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleGear o) {
10247     using ::android::hardware::details::toHexString;
10248     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_UNKNOWN) {
10249         return "GEAR_UNKNOWN";
10250     }
10251     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_NEUTRAL) {
10252         return "GEAR_NEUTRAL";
10253     }
10254     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_REVERSE) {
10255         return "GEAR_REVERSE";
10256     }
10257     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_PARK) {
10258         return "GEAR_PARK";
10259     }
10260     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_DRIVE) {
10261         return "GEAR_DRIVE";
10262     }
10263     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_1) {
10264         return "GEAR_1";
10265     }
10266     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_2) {
10267         return "GEAR_2";
10268     }
10269     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_3) {
10270         return "GEAR_3";
10271     }
10272     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_4) {
10273         return "GEAR_4";
10274     }
10275     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_5) {
10276         return "GEAR_5";
10277     }
10278     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_6) {
10279         return "GEAR_6";
10280     }
10281     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_7) {
10282         return "GEAR_7";
10283     }
10284     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_8) {
10285         return "GEAR_8";
10286     }
10287     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleGear::GEAR_9) {
10288         return "GEAR_9";
10289     }
10290     std::string os;
10291     os += toHexString(static_cast<int32_t>(o));
10292     return os;
10293 }
10294 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleGear o,::std::ostream * os)10295 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleGear o, ::std::ostream* os) {
10296     *os << toString(o);
10297 }
10298 
10299 template<>
10300 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat>(int32_t o) {
10301     using ::android::hardware::details::toHexString;
10302     std::string os;
10303     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat> flipped = 0;
10304     bool first = true;
10305     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_LEFT)) {
10306         os += (first ? "" : " | ");
10307         os += "ROW_1_LEFT";
10308         first = false;
10309         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_LEFT;
10310     }
10311     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_CENTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_CENTER)) {
10312         os += (first ? "" : " | ");
10313         os += "ROW_1_CENTER";
10314         first = false;
10315         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_CENTER;
10316     }
10317     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_RIGHT)) {
10318         os += (first ? "" : " | ");
10319         os += "ROW_1_RIGHT";
10320         first = false;
10321         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_RIGHT;
10322     }
10323     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_LEFT)) {
10324         os += (first ? "" : " | ");
10325         os += "ROW_2_LEFT";
10326         first = false;
10327         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_LEFT;
10328     }
10329     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_CENTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_CENTER)) {
10330         os += (first ? "" : " | ");
10331         os += "ROW_2_CENTER";
10332         first = false;
10333         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_CENTER;
10334     }
10335     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_RIGHT)) {
10336         os += (first ? "" : " | ");
10337         os += "ROW_2_RIGHT";
10338         first = false;
10339         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_RIGHT;
10340     }
10341     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_LEFT)) {
10342         os += (first ? "" : " | ");
10343         os += "ROW_3_LEFT";
10344         first = false;
10345         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_LEFT;
10346     }
10347     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_CENTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_CENTER)) {
10348         os += (first ? "" : " | ");
10349         os += "ROW_3_CENTER";
10350         first = false;
10351         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_CENTER;
10352     }
10353     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_RIGHT)) {
10354         os += (first ? "" : " | ");
10355         os += "ROW_3_RIGHT";
10356         first = false;
10357         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_RIGHT;
10358     }
10359     if (o != flipped) {
10360         os += (first ? "" : " | ");
10361         os += toHexString(o & (~flipped));
10362     }os += " (";
10363     os += toHexString(o);
10364     os += ")";
10365     return os;
10366 }
10367 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat o)10368 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat o) {
10369     using ::android::hardware::details::toHexString;
10370     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_LEFT) {
10371         return "ROW_1_LEFT";
10372     }
10373     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_CENTER) {
10374         return "ROW_1_CENTER";
10375     }
10376     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_1_RIGHT) {
10377         return "ROW_1_RIGHT";
10378     }
10379     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_LEFT) {
10380         return "ROW_2_LEFT";
10381     }
10382     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_CENTER) {
10383         return "ROW_2_CENTER";
10384     }
10385     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_2_RIGHT) {
10386         return "ROW_2_RIGHT";
10387     }
10388     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_LEFT) {
10389         return "ROW_3_LEFT";
10390     }
10391     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_CENTER) {
10392         return "ROW_3_CENTER";
10393     }
10394     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat::ROW_3_RIGHT) {
10395         return "ROW_3_RIGHT";
10396     }
10397     std::string os;
10398     os += toHexString(static_cast<int32_t>(o));
10399     return os;
10400 }
10401 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat o,::std::ostream * os)10402 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaSeat o, ::std::ostream* os) {
10403     *os << toString(o);
10404 }
10405 
10406 template<>
10407 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow>(int32_t o) {
10408     using ::android::hardware::details::toHexString;
10409     std::string os;
10410     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow> flipped = 0;
10411     bool first = true;
10412     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::FRONT_WINDSHIELD) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::FRONT_WINDSHIELD)) {
10413         os += (first ? "" : " | ");
10414         os += "FRONT_WINDSHIELD";
10415         first = false;
10416         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::FRONT_WINDSHIELD;
10417     }
10418     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::REAR_WINDSHIELD) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::REAR_WINDSHIELD)) {
10419         os += (first ? "" : " | ");
10420         os += "REAR_WINDSHIELD";
10421         first = false;
10422         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::REAR_WINDSHIELD;
10423     }
10424     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_LEFT)) {
10425         os += (first ? "" : " | ");
10426         os += "ROW_1_LEFT";
10427         first = false;
10428         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_LEFT;
10429     }
10430     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_RIGHT)) {
10431         os += (first ? "" : " | ");
10432         os += "ROW_1_RIGHT";
10433         first = false;
10434         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_RIGHT;
10435     }
10436     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_LEFT)) {
10437         os += (first ? "" : " | ");
10438         os += "ROW_2_LEFT";
10439         first = false;
10440         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_LEFT;
10441     }
10442     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_RIGHT)) {
10443         os += (first ? "" : " | ");
10444         os += "ROW_2_RIGHT";
10445         first = false;
10446         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_RIGHT;
10447     }
10448     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_LEFT)) {
10449         os += (first ? "" : " | ");
10450         os += "ROW_3_LEFT";
10451         first = false;
10452         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_LEFT;
10453     }
10454     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_RIGHT)) {
10455         os += (first ? "" : " | ");
10456         os += "ROW_3_RIGHT";
10457         first = false;
10458         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_RIGHT;
10459     }
10460     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_1)) {
10461         os += (first ? "" : " | ");
10462         os += "ROOF_TOP_1";
10463         first = false;
10464         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_1;
10465     }
10466     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_2)) {
10467         os += (first ? "" : " | ");
10468         os += "ROOF_TOP_2";
10469         first = false;
10470         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_2;
10471     }
10472     if (o != flipped) {
10473         os += (first ? "" : " | ");
10474         os += toHexString(o & (~flipped));
10475     }os += " (";
10476     os += toHexString(o);
10477     os += ")";
10478     return os;
10479 }
10480 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow o)10481 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow o) {
10482     using ::android::hardware::details::toHexString;
10483     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::FRONT_WINDSHIELD) {
10484         return "FRONT_WINDSHIELD";
10485     }
10486     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::REAR_WINDSHIELD) {
10487         return "REAR_WINDSHIELD";
10488     }
10489     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_LEFT) {
10490         return "ROW_1_LEFT";
10491     }
10492     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_1_RIGHT) {
10493         return "ROW_1_RIGHT";
10494     }
10495     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_LEFT) {
10496         return "ROW_2_LEFT";
10497     }
10498     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_2_RIGHT) {
10499         return "ROW_2_RIGHT";
10500     }
10501     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_LEFT) {
10502         return "ROW_3_LEFT";
10503     }
10504     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROW_3_RIGHT) {
10505         return "ROW_3_RIGHT";
10506     }
10507     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_1) {
10508         return "ROOF_TOP_1";
10509     }
10510     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow::ROOF_TOP_2) {
10511         return "ROOF_TOP_2";
10512     }
10513     std::string os;
10514     os += toHexString(static_cast<int32_t>(o));
10515     return os;
10516 }
10517 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow o,::std::ostream * os)10518 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWindow o, ::std::ostream* os) {
10519     *os << toString(o);
10520 }
10521 
10522 template<>
10523 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor>(int32_t o) {
10524     using ::android::hardware::details::toHexString;
10525     std::string os;
10526     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor> flipped = 0;
10527     bool first = true;
10528     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_LEFT)) {
10529         os += (first ? "" : " | ");
10530         os += "ROW_1_LEFT";
10531         first = false;
10532         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_LEFT;
10533     }
10534     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_RIGHT)) {
10535         os += (first ? "" : " | ");
10536         os += "ROW_1_RIGHT";
10537         first = false;
10538         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_RIGHT;
10539     }
10540     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_LEFT)) {
10541         os += (first ? "" : " | ");
10542         os += "ROW_2_LEFT";
10543         first = false;
10544         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_LEFT;
10545     }
10546     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_RIGHT)) {
10547         os += (first ? "" : " | ");
10548         os += "ROW_2_RIGHT";
10549         first = false;
10550         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_RIGHT;
10551     }
10552     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_LEFT)) {
10553         os += (first ? "" : " | ");
10554         os += "ROW_3_LEFT";
10555         first = false;
10556         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_LEFT;
10557     }
10558     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_RIGHT)) {
10559         os += (first ? "" : " | ");
10560         os += "ROW_3_RIGHT";
10561         first = false;
10562         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_RIGHT;
10563     }
10564     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::HOOD) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::HOOD)) {
10565         os += (first ? "" : " | ");
10566         os += "HOOD";
10567         first = false;
10568         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::HOOD;
10569     }
10570     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::REAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::REAR)) {
10571         os += (first ? "" : " | ");
10572         os += "REAR";
10573         first = false;
10574         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::REAR;
10575     }
10576     if (o != flipped) {
10577         os += (first ? "" : " | ");
10578         os += toHexString(o & (~flipped));
10579     }os += " (";
10580     os += toHexString(o);
10581     os += ")";
10582     return os;
10583 }
10584 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor o)10585 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor o) {
10586     using ::android::hardware::details::toHexString;
10587     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_LEFT) {
10588         return "ROW_1_LEFT";
10589     }
10590     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_1_RIGHT) {
10591         return "ROW_1_RIGHT";
10592     }
10593     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_LEFT) {
10594         return "ROW_2_LEFT";
10595     }
10596     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_2_RIGHT) {
10597         return "ROW_2_RIGHT";
10598     }
10599     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_LEFT) {
10600         return "ROW_3_LEFT";
10601     }
10602     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::ROW_3_RIGHT) {
10603         return "ROW_3_RIGHT";
10604     }
10605     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::HOOD) {
10606         return "HOOD";
10607     }
10608     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor::REAR) {
10609         return "REAR";
10610     }
10611     std::string os;
10612     os += toHexString(static_cast<int32_t>(o));
10613     return os;
10614 }
10615 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor o,::std::ostream * os)10616 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaDoor o, ::std::ostream* os) {
10617     *os << toString(o);
10618 }
10619 
10620 template<>
10621 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror>(int32_t o) {
10622     using ::android::hardware::details::toHexString;
10623     std::string os;
10624     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror> flipped = 0;
10625     bool first = true;
10626     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_LEFT)) {
10627         os += (first ? "" : " | ");
10628         os += "DRIVER_LEFT";
10629         first = false;
10630         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_LEFT;
10631     }
10632     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_RIGHT)) {
10633         os += (first ? "" : " | ");
10634         os += "DRIVER_RIGHT";
10635         first = false;
10636         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_RIGHT;
10637     }
10638     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_CENTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_CENTER)) {
10639         os += (first ? "" : " | ");
10640         os += "DRIVER_CENTER";
10641         first = false;
10642         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_CENTER;
10643     }
10644     if (o != flipped) {
10645         os += (first ? "" : " | ");
10646         os += toHexString(o & (~flipped));
10647     }os += " (";
10648     os += toHexString(o);
10649     os += ")";
10650     return os;
10651 }
10652 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror o)10653 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror o) {
10654     using ::android::hardware::details::toHexString;
10655     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_LEFT) {
10656         return "DRIVER_LEFT";
10657     }
10658     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_RIGHT) {
10659         return "DRIVER_RIGHT";
10660     }
10661     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror::DRIVER_CENTER) {
10662         return "DRIVER_CENTER";
10663     }
10664     std::string os;
10665     os += toHexString(static_cast<int32_t>(o));
10666     return os;
10667 }
10668 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror o,::std::ostream * os)10669 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaMirror o, ::std::ostream* os) {
10670     *os << toString(o);
10671 }
10672 
10673 template<>
10674 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal>(int32_t o) {
10675     using ::android::hardware::details::toHexString;
10676     std::string os;
10677     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal> flipped = 0;
10678     bool first = true;
10679     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::NONE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::NONE)) {
10680         os += (first ? "" : " | ");
10681         os += "NONE";
10682         first = false;
10683         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::NONE;
10684     }
10685     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::RIGHT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::RIGHT)) {
10686         os += (first ? "" : " | ");
10687         os += "RIGHT";
10688         first = false;
10689         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::RIGHT;
10690     }
10691     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::LEFT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::LEFT)) {
10692         os += (first ? "" : " | ");
10693         os += "LEFT";
10694         first = false;
10695         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::LEFT;
10696     }
10697     if (o != flipped) {
10698         os += (first ? "" : " | ");
10699         os += toHexString(o & (~flipped));
10700     }os += " (";
10701     os += toHexString(o);
10702     os += ")";
10703     return os;
10704 }
10705 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal o)10706 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal o) {
10707     using ::android::hardware::details::toHexString;
10708     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::NONE) {
10709         return "NONE";
10710     }
10711     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::RIGHT) {
10712         return "RIGHT";
10713     }
10714     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal::LEFT) {
10715         return "LEFT";
10716     }
10717     std::string os;
10718     os += toHexString(static_cast<int32_t>(o));
10719     return os;
10720 }
10721 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal o,::std::ostream * os)10722 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleTurnSignal o, ::std::ostream* os) {
10723     *os << toString(o);
10724 }
10725 
toString(const::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig & o)10726 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& o) {
10727     using ::android::hardware::toString;
10728     std::string os;
10729     os += "{";
10730     os += ".areaId = ";
10731     os += ::android::hardware::toString(o.areaId);
10732     os += ", .minInt32Value = ";
10733     os += ::android::hardware::toString(o.minInt32Value);
10734     os += ", .maxInt32Value = ";
10735     os += ::android::hardware::toString(o.maxInt32Value);
10736     os += ", .minInt64Value = ";
10737     os += ::android::hardware::toString(o.minInt64Value);
10738     os += ", .maxInt64Value = ";
10739     os += ::android::hardware::toString(o.maxInt64Value);
10740     os += ", .minFloatValue = ";
10741     os += ::android::hardware::toString(o.minFloatValue);
10742     os += ", .maxFloatValue = ";
10743     os += ::android::hardware::toString(o.maxFloatValue);
10744     os += "}"; return os;
10745 }
10746 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig & o,::std::ostream * os)10747 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& o, ::std::ostream* os) {
10748     *os << toString(o);
10749 }
10750 
10751 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& rhs) {
10752     if (lhs.areaId != rhs.areaId) {
10753         return false;
10754     }
10755     if (lhs.minInt32Value != rhs.minInt32Value) {
10756         return false;
10757     }
10758     if (lhs.maxInt32Value != rhs.maxInt32Value) {
10759         return false;
10760     }
10761     if (lhs.minInt64Value != rhs.minInt64Value) {
10762         return false;
10763     }
10764     if (lhs.maxInt64Value != rhs.maxInt64Value) {
10765         return false;
10766     }
10767     if (lhs.minFloatValue != rhs.minFloatValue) {
10768         return false;
10769     }
10770     if (lhs.maxFloatValue != rhs.maxFloatValue) {
10771         return false;
10772     }
10773     return true;
10774 }
10775 
10776 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehicleAreaConfig& rhs){
10777     return !(lhs == rhs);
10778 }
10779 
toString(const::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig & o)10780 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& o) {
10781     using ::android::hardware::toString;
10782     std::string os;
10783     os += "{";
10784     os += ".prop = ";
10785     os += ::android::hardware::toString(o.prop);
10786     os += ", .access = ";
10787     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.access);
10788     os += ", .changeMode = ";
10789     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.changeMode);
10790     os += ", .areaConfigs = ";
10791     os += ::android::hardware::toString(o.areaConfigs);
10792     os += ", .configArray = ";
10793     os += ::android::hardware::toString(o.configArray);
10794     os += ", .configString = ";
10795     os += ::android::hardware::toString(o.configString);
10796     os += ", .minSampleRate = ";
10797     os += ::android::hardware::toString(o.minSampleRate);
10798     os += ", .maxSampleRate = ";
10799     os += ::android::hardware::toString(o.maxSampleRate);
10800     os += "}"; return os;
10801 }
10802 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig & o,::std::ostream * os)10803 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& o, ::std::ostream* os) {
10804     *os << toString(o);
10805 }
10806 
10807 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& rhs) {
10808     if (lhs.prop != rhs.prop) {
10809         return false;
10810     }
10811     if (lhs.access != rhs.access) {
10812         return false;
10813     }
10814     if (lhs.changeMode != rhs.changeMode) {
10815         return false;
10816     }
10817     if (lhs.areaConfigs != rhs.areaConfigs) {
10818         return false;
10819     }
10820     if (lhs.configArray != rhs.configArray) {
10821         return false;
10822     }
10823     if (lhs.configString != rhs.configString) {
10824         return false;
10825     }
10826     if (lhs.minSampleRate != rhs.minSampleRate) {
10827         return false;
10828     }
10829     if (lhs.maxSampleRate != rhs.maxSampleRate) {
10830         return false;
10831     }
10832     return true;
10833 }
10834 
10835 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropConfig& rhs){
10836     return !(lhs == rhs);
10837 }
10838 
toString(const::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue & o)10839 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& o) {
10840     using ::android::hardware::toString;
10841     std::string os;
10842     os += "{";
10843     os += ".int32Values = ";
10844     os += ::android::hardware::toString(o.int32Values);
10845     os += ", .floatValues = ";
10846     os += ::android::hardware::toString(o.floatValues);
10847     os += ", .int64Values = ";
10848     os += ::android::hardware::toString(o.int64Values);
10849     os += ", .bytes = ";
10850     os += ::android::hardware::toString(o.bytes);
10851     os += ", .stringValue = ";
10852     os += ::android::hardware::toString(o.stringValue);
10853     os += "}"; return os;
10854 }
10855 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue & o,::std::ostream * os)10856 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& o, ::std::ostream* os) {
10857     *os << toString(o);
10858 }
10859 
10860 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& rhs) {
10861     if (lhs.int32Values != rhs.int32Values) {
10862         return false;
10863     }
10864     if (lhs.floatValues != rhs.floatValues) {
10865         return false;
10866     }
10867     if (lhs.int64Values != rhs.int64Values) {
10868         return false;
10869     }
10870     if (lhs.bytes != rhs.bytes) {
10871         return false;
10872     }
10873     if (lhs.stringValue != rhs.stringValue) {
10874         return false;
10875     }
10876     return true;
10877 }
10878 
10879 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue::RawValue& rhs){
10880     return !(lhs == rhs);
10881 }
10882 
toString(const::android::hardware::automotive::vehicle::V2_0::VehiclePropValue & o)10883 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& o) {
10884     using ::android::hardware::toString;
10885     std::string os;
10886     os += "{";
10887     os += ".timestamp = ";
10888     os += ::android::hardware::toString(o.timestamp);
10889     os += ", .areaId = ";
10890     os += ::android::hardware::toString(o.areaId);
10891     os += ", .prop = ";
10892     os += ::android::hardware::toString(o.prop);
10893     os += ", .status = ";
10894     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.status);
10895     os += ", .value = ";
10896     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.value);
10897     os += "}"; return os;
10898 }
10899 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::VehiclePropValue & o,::std::ostream * os)10900 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& o, ::std::ostream* os) {
10901     *os << toString(o);
10902 }
10903 
10904 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& rhs) {
10905     if (lhs.timestamp != rhs.timestamp) {
10906         return false;
10907     }
10908     if (lhs.areaId != rhs.areaId) {
10909         return false;
10910     }
10911     if (lhs.prop != rhs.prop) {
10912         return false;
10913     }
10914     if (lhs.status != rhs.status) {
10915         return false;
10916     }
10917     if (lhs.value != rhs.value) {
10918         return false;
10919     }
10920     return true;
10921 }
10922 
10923 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& lhs, const ::android::hardware::automotive::vehicle::V2_0::VehiclePropValue& rhs){
10924     return !(lhs == rhs);
10925 }
10926 
10927 template<>
10928 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState>(int32_t o) {
10929     using ::android::hardware::details::toHexString;
10930     std::string os;
10931     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState> flipped = 0;
10932     bool first = true;
10933     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::UNDEFINED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::UNDEFINED)) {
10934         os += (first ? "" : " | ");
10935         os += "UNDEFINED";
10936         first = false;
10937         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::UNDEFINED;
10938     }
10939     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::LOCK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::LOCK)) {
10940         os += (first ? "" : " | ");
10941         os += "LOCK";
10942         first = false;
10943         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::LOCK;
10944     }
10945     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::OFF) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::OFF)) {
10946         os += (first ? "" : " | ");
10947         os += "OFF";
10948         first = false;
10949         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::OFF;
10950     }
10951     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ACC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ACC)) {
10952         os += (first ? "" : " | ");
10953         os += "ACC";
10954         first = false;
10955         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ACC;
10956     }
10957     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ON)) {
10958         os += (first ? "" : " | ");
10959         os += "ON";
10960         first = false;
10961         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ON;
10962     }
10963     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::START) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::START)) {
10964         os += (first ? "" : " | ");
10965         os += "START";
10966         first = false;
10967         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::START;
10968     }
10969     if (o != flipped) {
10970         os += (first ? "" : " | ");
10971         os += toHexString(o & (~flipped));
10972     }os += " (";
10973     os += toHexString(o);
10974     os += ")";
10975     return os;
10976 }
10977 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState o)10978 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState o) {
10979     using ::android::hardware::details::toHexString;
10980     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::UNDEFINED) {
10981         return "UNDEFINED";
10982     }
10983     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::LOCK) {
10984         return "LOCK";
10985     }
10986     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::OFF) {
10987         return "OFF";
10988     }
10989     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ACC) {
10990         return "ACC";
10991     }
10992     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::ON) {
10993         return "ON";
10994     }
10995     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState::START) {
10996         return "START";
10997     }
10998     std::string os;
10999     os += toHexString(static_cast<int32_t>(o));
11000     return os;
11001 }
11002 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState o,::std::ostream * os)11003 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleIgnitionState o, ::std::ostream* os) {
11004     *os << toString(o);
11005 }
11006 
11007 template<>
11008 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::SubscribeFlags>(int32_t o) {
11009     using ::android::hardware::details::toHexString;
11010     std::string os;
11011     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::SubscribeFlags> flipped = 0;
11012     bool first = true;
11013     if ((o & ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::UNDEFINED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::UNDEFINED)) {
11014         os += (first ? "" : " | ");
11015         os += "UNDEFINED";
11016         first = false;
11017         flipped |= ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::UNDEFINED;
11018     }
11019     if ((o & ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_CAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_CAR)) {
11020         os += (first ? "" : " | ");
11021         os += "EVENTS_FROM_CAR";
11022         first = false;
11023         flipped |= ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_CAR;
11024     }
11025     if ((o & ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_ANDROID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_ANDROID)) {
11026         os += (first ? "" : " | ");
11027         os += "EVENTS_FROM_ANDROID";
11028         first = false;
11029         flipped |= ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_ANDROID;
11030     }
11031     if (o != flipped) {
11032         os += (first ? "" : " | ");
11033         os += toHexString(o & (~flipped));
11034     }os += " (";
11035     os += toHexString(o);
11036     os += ")";
11037     return os;
11038 }
11039 
toString(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags o)11040 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags o) {
11041     using ::android::hardware::details::toHexString;
11042     if (o == ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::UNDEFINED) {
11043         return "UNDEFINED";
11044     }
11045     if (o == ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_CAR) {
11046         return "EVENTS_FROM_CAR";
11047     }
11048     if (o == ::android::hardware::automotive::vehicle::V2_0::SubscribeFlags::EVENTS_FROM_ANDROID) {
11049         return "EVENTS_FROM_ANDROID";
11050     }
11051     std::string os;
11052     os += toHexString(static_cast<int32_t>(o));
11053     return os;
11054 }
11055 
PrintTo(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags o,::std::ostream * os)11056 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::SubscribeFlags o, ::std::ostream* os) {
11057     *os << toString(o);
11058 }
11059 
toString(const::android::hardware::automotive::vehicle::V2_0::SubscribeOptions & o)11060 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& o) {
11061     using ::android::hardware::toString;
11062     std::string os;
11063     os += "{";
11064     os += ".propId = ";
11065     os += ::android::hardware::toString(o.propId);
11066     os += ", .sampleRate = ";
11067     os += ::android::hardware::toString(o.sampleRate);
11068     os += ", .flags = ";
11069     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.flags);
11070     os += "}"; return os;
11071 }
11072 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::SubscribeOptions & o,::std::ostream * os)11073 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& o, ::std::ostream* os) {
11074     *os << toString(o);
11075 }
11076 
11077 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& rhs) {
11078     if (lhs.propId != rhs.propId) {
11079         return false;
11080     }
11081     if (lhs.sampleRate != rhs.sampleRate) {
11082         return false;
11083     }
11084     if (lhs.flags != rhs.flags) {
11085         return false;
11086     }
11087     return true;
11088 }
11089 
11090 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& lhs, const ::android::hardware::automotive::vehicle::V2_0::SubscribeOptions& rhs){
11091     return !(lhs == rhs);
11092 }
11093 
11094 template<>
11095 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::StatusCode>(int32_t o) {
11096     using ::android::hardware::details::toHexString;
11097     std::string os;
11098     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::StatusCode> flipped = 0;
11099     bool first = true;
11100     if ((o & ::android::hardware::automotive::vehicle::V2_0::StatusCode::OK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::StatusCode::OK)) {
11101         os += (first ? "" : " | ");
11102         os += "OK";
11103         first = false;
11104         flipped |= ::android::hardware::automotive::vehicle::V2_0::StatusCode::OK;
11105     }
11106     if ((o & ::android::hardware::automotive::vehicle::V2_0::StatusCode::TRY_AGAIN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::StatusCode::TRY_AGAIN)) {
11107         os += (first ? "" : " | ");
11108         os += "TRY_AGAIN";
11109         first = false;
11110         flipped |= ::android::hardware::automotive::vehicle::V2_0::StatusCode::TRY_AGAIN;
11111     }
11112     if ((o & ::android::hardware::automotive::vehicle::V2_0::StatusCode::INVALID_ARG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::StatusCode::INVALID_ARG)) {
11113         os += (first ? "" : " | ");
11114         os += "INVALID_ARG";
11115         first = false;
11116         flipped |= ::android::hardware::automotive::vehicle::V2_0::StatusCode::INVALID_ARG;
11117     }
11118     if ((o & ::android::hardware::automotive::vehicle::V2_0::StatusCode::NOT_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::StatusCode::NOT_AVAILABLE)) {
11119         os += (first ? "" : " | ");
11120         os += "NOT_AVAILABLE";
11121         first = false;
11122         flipped |= ::android::hardware::automotive::vehicle::V2_0::StatusCode::NOT_AVAILABLE;
11123     }
11124     if ((o & ::android::hardware::automotive::vehicle::V2_0::StatusCode::ACCESS_DENIED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::StatusCode::ACCESS_DENIED)) {
11125         os += (first ? "" : " | ");
11126         os += "ACCESS_DENIED";
11127         first = false;
11128         flipped |= ::android::hardware::automotive::vehicle::V2_0::StatusCode::ACCESS_DENIED;
11129     }
11130     if ((o & ::android::hardware::automotive::vehicle::V2_0::StatusCode::INTERNAL_ERROR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::StatusCode::INTERNAL_ERROR)) {
11131         os += (first ? "" : " | ");
11132         os += "INTERNAL_ERROR";
11133         first = false;
11134         flipped |= ::android::hardware::automotive::vehicle::V2_0::StatusCode::INTERNAL_ERROR;
11135     }
11136     if (o != flipped) {
11137         os += (first ? "" : " | ");
11138         os += toHexString(o & (~flipped));
11139     }os += " (";
11140     os += toHexString(o);
11141     os += ")";
11142     return os;
11143 }
11144 
toString(::android::hardware::automotive::vehicle::V2_0::StatusCode o)11145 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::StatusCode o) {
11146     using ::android::hardware::details::toHexString;
11147     if (o == ::android::hardware::automotive::vehicle::V2_0::StatusCode::OK) {
11148         return "OK";
11149     }
11150     if (o == ::android::hardware::automotive::vehicle::V2_0::StatusCode::TRY_AGAIN) {
11151         return "TRY_AGAIN";
11152     }
11153     if (o == ::android::hardware::automotive::vehicle::V2_0::StatusCode::INVALID_ARG) {
11154         return "INVALID_ARG";
11155     }
11156     if (o == ::android::hardware::automotive::vehicle::V2_0::StatusCode::NOT_AVAILABLE) {
11157         return "NOT_AVAILABLE";
11158     }
11159     if (o == ::android::hardware::automotive::vehicle::V2_0::StatusCode::ACCESS_DENIED) {
11160         return "ACCESS_DENIED";
11161     }
11162     if (o == ::android::hardware::automotive::vehicle::V2_0::StatusCode::INTERNAL_ERROR) {
11163         return "INTERNAL_ERROR";
11164     }
11165     std::string os;
11166     os += toHexString(static_cast<int32_t>(o));
11167     return os;
11168 }
11169 
PrintTo(::android::hardware::automotive::vehicle::V2_0::StatusCode o,::std::ostream * os)11170 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::StatusCode o, ::std::ostream* os) {
11171     *os << toString(o);
11172 }
11173 
11174 template<>
11175 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel>(int32_t o) {
11176     using ::android::hardware::details::toHexString;
11177     std::string os;
11178     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel> flipped = 0;
11179     bool first = true;
11180     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::UNKNOWN)) {
11181         os += (first ? "" : " | ");
11182         os += "UNKNOWN";
11183         first = false;
11184         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::UNKNOWN;
11185     }
11186     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_FRONT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_FRONT)) {
11187         os += (first ? "" : " | ");
11188         os += "LEFT_FRONT";
11189         first = false;
11190         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_FRONT;
11191     }
11192     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_FRONT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_FRONT)) {
11193         os += (first ? "" : " | ");
11194         os += "RIGHT_FRONT";
11195         first = false;
11196         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_FRONT;
11197     }
11198     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_REAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_REAR)) {
11199         os += (first ? "" : " | ");
11200         os += "LEFT_REAR";
11201         first = false;
11202         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_REAR;
11203     }
11204     if ((o & ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_REAR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_REAR)) {
11205         os += (first ? "" : " | ");
11206         os += "RIGHT_REAR";
11207         first = false;
11208         flipped |= ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_REAR;
11209     }
11210     if (o != flipped) {
11211         os += (first ? "" : " | ");
11212         os += toHexString(o & (~flipped));
11213     }os += " (";
11214     os += toHexString(o);
11215     os += ")";
11216     return os;
11217 }
11218 
toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel o)11219 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel o) {
11220     using ::android::hardware::details::toHexString;
11221     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::UNKNOWN) {
11222         return "UNKNOWN";
11223     }
11224     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_FRONT) {
11225         return "LEFT_FRONT";
11226     }
11227     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_FRONT) {
11228         return "RIGHT_FRONT";
11229     }
11230     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::LEFT_REAR) {
11231         return "LEFT_REAR";
11232     }
11233     if (o == ::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel::RIGHT_REAR) {
11234         return "RIGHT_REAR";
11235     }
11236     std::string os;
11237     os += toHexString(static_cast<int32_t>(o));
11238     return os;
11239 }
11240 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel o,::std::ostream * os)11241 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VehicleAreaWheel o, ::std::ostream* os) {
11242     *os << toString(o);
11243 }
11244 
11245 template<>
11246 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus>(int32_t o) {
11247     using ::android::hardware::details::toHexString;
11248     std::string os;
11249     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus> flipped = 0;
11250     bool first = true;
11251     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_INSUFFICIENT_ENGINE_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_INSUFFICIENT_ENGINE_TEMPERATURE)) {
11252         os += (first ? "" : " | ");
11253         os += "OPEN_INSUFFICIENT_ENGINE_TEMPERATURE";
11254         first = false;
11255         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_INSUFFICIENT_ENGINE_TEMPERATURE;
11256     }
11257     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP)) {
11258         os += (first ? "" : " | ");
11259         os += "CLOSED_LOOP";
11260         first = false;
11261         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP;
11262     }
11263     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_ENGINE_LOAD_OR_DECELERATION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_ENGINE_LOAD_OR_DECELERATION)) {
11264         os += (first ? "" : " | ");
11265         os += "OPEN_ENGINE_LOAD_OR_DECELERATION";
11266         first = false;
11267         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_ENGINE_LOAD_OR_DECELERATION;
11268     }
11269     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_SYSTEM_FAILURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_SYSTEM_FAILURE)) {
11270         os += (first ? "" : " | ");
11271         os += "OPEN_SYSTEM_FAILURE";
11272         first = false;
11273         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_SYSTEM_FAILURE;
11274     }
11275     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP_BUT_FEEDBACK_FAULT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP_BUT_FEEDBACK_FAULT)) {
11276         os += (first ? "" : " | ");
11277         os += "CLOSED_LOOP_BUT_FEEDBACK_FAULT";
11278         first = false;
11279         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP_BUT_FEEDBACK_FAULT;
11280     }
11281     if (o != flipped) {
11282         os += (first ? "" : " | ");
11283         os += toHexString(o & (~flipped));
11284     }os += " (";
11285     os += toHexString(o);
11286     os += ")";
11287     return os;
11288 }
11289 
toString(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus o)11290 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus o) {
11291     using ::android::hardware::details::toHexString;
11292     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_INSUFFICIENT_ENGINE_TEMPERATURE) {
11293         return "OPEN_INSUFFICIENT_ENGINE_TEMPERATURE";
11294     }
11295     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP) {
11296         return "CLOSED_LOOP";
11297     }
11298     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_ENGINE_LOAD_OR_DECELERATION) {
11299         return "OPEN_ENGINE_LOAD_OR_DECELERATION";
11300     }
11301     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::OPEN_SYSTEM_FAILURE) {
11302         return "OPEN_SYSTEM_FAILURE";
11303     }
11304     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus::CLOSED_LOOP_BUT_FEEDBACK_FAULT) {
11305         return "CLOSED_LOOP_BUT_FEEDBACK_FAULT";
11306     }
11307     std::string os;
11308     os += toHexString(static_cast<int32_t>(o));
11309     return os;
11310 }
11311 
PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus o,::std::ostream * os)11312 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2FuelSystemStatus o, ::std::ostream* os) {
11313     *os << toString(o);
11314 }
11315 
11316 template<>
11317 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind>(int32_t o) {
11318     using ::android::hardware::details::toHexString;
11319     std::string os;
11320     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind> flipped = 0;
11321     bool first = true;
11322     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::SPARK) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::SPARK)) {
11323         os += (first ? "" : " | ");
11324         os += "SPARK";
11325         first = false;
11326         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::SPARK;
11327     }
11328     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::COMPRESSION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::COMPRESSION)) {
11329         os += (first ? "" : " | ");
11330         os += "COMPRESSION";
11331         first = false;
11332         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::COMPRESSION;
11333     }
11334     if (o != flipped) {
11335         os += (first ? "" : " | ");
11336         os += toHexString(o & (~flipped));
11337     }os += " (";
11338     os += toHexString(o);
11339     os += ")";
11340     return os;
11341 }
11342 
toString(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind o)11343 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind o) {
11344     using ::android::hardware::details::toHexString;
11345     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::SPARK) {
11346         return "SPARK";
11347     }
11348     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind::COMPRESSION) {
11349         return "COMPRESSION";
11350     }
11351     std::string os;
11352     os += toHexString(static_cast<int32_t>(o));
11353     return os;
11354 }
11355 
PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind o,::std::ostream * os)11356 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2IgnitionMonitorKind o, ::std::ostream* os) {
11357     *os << toString(o);
11358 }
11359 
11360 template<>
11361 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors>(int32_t o) {
11362     using ::android::hardware::details::toHexString;
11363     std::string os;
11364     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors> flipped = 0;
11365     bool first = true;
11366     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_AVAILABLE)) {
11367         os += (first ? "" : " | ");
11368         os += "COMPONENTS_AVAILABLE";
11369         first = false;
11370         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_AVAILABLE;
11371     }
11372     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_INCOMPLETE)) {
11373         os += (first ? "" : " | ");
11374         os += "COMPONENTS_INCOMPLETE";
11375         first = false;
11376         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_INCOMPLETE;
11377     }
11378     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_AVAILABLE)) {
11379         os += (first ? "" : " | ");
11380         os += "FUEL_SYSTEM_AVAILABLE";
11381         first = false;
11382         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_AVAILABLE;
11383     }
11384     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE)) {
11385         os += (first ? "" : " | ");
11386         os += "FUEL_SYSTEM_INCOMPLETE";
11387         first = false;
11388         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE;
11389     }
11390     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_AVAILABLE)) {
11391         os += (first ? "" : " | ");
11392         os += "MISFIRE_AVAILABLE";
11393         first = false;
11394         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_AVAILABLE;
11395     }
11396     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_INCOMPLETE)) {
11397         os += (first ? "" : " | ");
11398         os += "MISFIRE_INCOMPLETE";
11399         first = false;
11400         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_INCOMPLETE;
11401     }
11402     if (o != flipped) {
11403         os += (first ? "" : " | ");
11404         os += toHexString(o & (~flipped));
11405     }os += " (";
11406     os += toHexString(o);
11407     os += ")";
11408     return os;
11409 }
11410 
toString(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors o)11411 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors o) {
11412     using ::android::hardware::details::toHexString;
11413     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_AVAILABLE) {
11414         return "COMPONENTS_AVAILABLE";
11415     }
11416     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::COMPONENTS_INCOMPLETE) {
11417         return "COMPONENTS_INCOMPLETE";
11418     }
11419     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_AVAILABLE) {
11420         return "FUEL_SYSTEM_AVAILABLE";
11421     }
11422     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE) {
11423         return "FUEL_SYSTEM_INCOMPLETE";
11424     }
11425     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_AVAILABLE) {
11426         return "MISFIRE_AVAILABLE";
11427     }
11428     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors::MISFIRE_INCOMPLETE) {
11429         return "MISFIRE_INCOMPLETE";
11430     }
11431     std::string os;
11432     os += toHexString(static_cast<int32_t>(o));
11433     return os;
11434 }
11435 
PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors o,::std::ostream * os)11436 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2CommonIgnitionMonitors o, ::std::ostream* os) {
11437     *os << toString(o);
11438 }
11439 
11440 template<>
11441 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors>(int32_t o) {
11442     using ::android::hardware::details::toHexString;
11443     std::string os;
11444     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors> flipped = 0;
11445     bool first = true;
11446     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_AVAILABLE)) {
11447         os += (first ? "" : " | ");
11448         os += "COMPONENTS_AVAILABLE";
11449         first = false;
11450         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_AVAILABLE;
11451     }
11452     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_INCOMPLETE)) {
11453         os += (first ? "" : " | ");
11454         os += "COMPONENTS_INCOMPLETE";
11455         first = false;
11456         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_INCOMPLETE;
11457     }
11458     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_AVAILABLE)) {
11459         os += (first ? "" : " | ");
11460         os += "FUEL_SYSTEM_AVAILABLE";
11461         first = false;
11462         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_AVAILABLE;
11463     }
11464     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE)) {
11465         os += (first ? "" : " | ");
11466         os += "FUEL_SYSTEM_INCOMPLETE";
11467         first = false;
11468         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE;
11469     }
11470     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_AVAILABLE)) {
11471         os += (first ? "" : " | ");
11472         os += "MISFIRE_AVAILABLE";
11473         first = false;
11474         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_AVAILABLE;
11475     }
11476     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_INCOMPLETE)) {
11477         os += (first ? "" : " | ");
11478         os += "MISFIRE_INCOMPLETE";
11479         first = false;
11480         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_INCOMPLETE;
11481     }
11482     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_AVAILABLE)) {
11483         os += (first ? "" : " | ");
11484         os += "EGR_AVAILABLE";
11485         first = false;
11486         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_AVAILABLE;
11487     }
11488     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_INCOMPLETE)) {
11489         os += (first ? "" : " | ");
11490         os += "EGR_INCOMPLETE";
11491         first = false;
11492         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_INCOMPLETE;
11493     }
11494     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_AVAILABLE)) {
11495         os += (first ? "" : " | ");
11496         os += "OXYGEN_SENSOR_HEATER_AVAILABLE";
11497         first = false;
11498         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_AVAILABLE;
11499     }
11500     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_INCOMPLETE)) {
11501         os += (first ? "" : " | ");
11502         os += "OXYGEN_SENSOR_HEATER_INCOMPLETE";
11503         first = false;
11504         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_INCOMPLETE;
11505     }
11506     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_AVAILABLE)) {
11507         os += (first ? "" : " | ");
11508         os += "OXYGEN_SENSOR_AVAILABLE";
11509         first = false;
11510         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_AVAILABLE;
11511     }
11512     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_INCOMPLETE)) {
11513         os += (first ? "" : " | ");
11514         os += "OXYGEN_SENSOR_INCOMPLETE";
11515         first = false;
11516         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_INCOMPLETE;
11517     }
11518     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE)) {
11519         os += (first ? "" : " | ");
11520         os += "AC_REFRIGERANT_AVAILABLE";
11521         first = false;
11522         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE;
11523     }
11524     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_INCOMPLETE)) {
11525         os += (first ? "" : " | ");
11526         os += "AC_REFRIGERANT_INCOMPLETE";
11527         first = false;
11528         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_INCOMPLETE;
11529     }
11530     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_AVAILABLE)) {
11531         os += (first ? "" : " | ");
11532         os += "SECONDARY_AIR_SYSTEM_AVAILABLE";
11533         first = false;
11534         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_AVAILABLE;
11535     }
11536     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_INCOMPLETE)) {
11537         os += (first ? "" : " | ");
11538         os += "SECONDARY_AIR_SYSTEM_INCOMPLETE";
11539         first = false;
11540         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_INCOMPLETE;
11541     }
11542     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE)) {
11543         os += (first ? "" : " | ");
11544         os += "EVAPORATIVE_SYSTEM_AVAILABLE";
11545         first = false;
11546         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE;
11547     }
11548     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_INCOMPLETE)) {
11549         os += (first ? "" : " | ");
11550         os += "EVAPORATIVE_SYSTEM_INCOMPLETE";
11551         first = false;
11552         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_INCOMPLETE;
11553     }
11554     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_AVAILABLE)) {
11555         os += (first ? "" : " | ");
11556         os += "HEATED_CATALYST_AVAILABLE";
11557         first = false;
11558         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_AVAILABLE;
11559     }
11560     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_INCOMPLETE)) {
11561         os += (first ? "" : " | ");
11562         os += "HEATED_CATALYST_INCOMPLETE";
11563         first = false;
11564         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_INCOMPLETE;
11565     }
11566     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_AVAILABLE)) {
11567         os += (first ? "" : " | ");
11568         os += "CATALYST_AVAILABLE";
11569         first = false;
11570         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_AVAILABLE;
11571     }
11572     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_INCOMPLETE)) {
11573         os += (first ? "" : " | ");
11574         os += "CATALYST_INCOMPLETE";
11575         first = false;
11576         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_INCOMPLETE;
11577     }
11578     if (o != flipped) {
11579         os += (first ? "" : " | ");
11580         os += toHexString(o & (~flipped));
11581     }os += " (";
11582     os += toHexString(o);
11583     os += ")";
11584     return os;
11585 }
11586 
toString(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors o)11587 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors o) {
11588     using ::android::hardware::details::toHexString;
11589     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_AVAILABLE) {
11590         return "COMPONENTS_AVAILABLE";
11591     }
11592     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::COMPONENTS_INCOMPLETE) {
11593         return "COMPONENTS_INCOMPLETE";
11594     }
11595     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_AVAILABLE) {
11596         return "FUEL_SYSTEM_AVAILABLE";
11597     }
11598     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE) {
11599         return "FUEL_SYSTEM_INCOMPLETE";
11600     }
11601     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_AVAILABLE) {
11602         return "MISFIRE_AVAILABLE";
11603     }
11604     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::MISFIRE_INCOMPLETE) {
11605         return "MISFIRE_INCOMPLETE";
11606     }
11607     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_AVAILABLE) {
11608         return "EGR_AVAILABLE";
11609     }
11610     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EGR_INCOMPLETE) {
11611         return "EGR_INCOMPLETE";
11612     }
11613     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_AVAILABLE) {
11614         return "OXYGEN_SENSOR_HEATER_AVAILABLE";
11615     }
11616     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_HEATER_INCOMPLETE) {
11617         return "OXYGEN_SENSOR_HEATER_INCOMPLETE";
11618     }
11619     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_AVAILABLE) {
11620         return "OXYGEN_SENSOR_AVAILABLE";
11621     }
11622     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::OXYGEN_SENSOR_INCOMPLETE) {
11623         return "OXYGEN_SENSOR_INCOMPLETE";
11624     }
11625     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_AVAILABLE) {
11626         return "AC_REFRIGERANT_AVAILABLE";
11627     }
11628     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::AC_REFRIGERANT_INCOMPLETE) {
11629         return "AC_REFRIGERANT_INCOMPLETE";
11630     }
11631     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_AVAILABLE) {
11632         return "SECONDARY_AIR_SYSTEM_AVAILABLE";
11633     }
11634     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::SECONDARY_AIR_SYSTEM_INCOMPLETE) {
11635         return "SECONDARY_AIR_SYSTEM_INCOMPLETE";
11636     }
11637     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_AVAILABLE) {
11638         return "EVAPORATIVE_SYSTEM_AVAILABLE";
11639     }
11640     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::EVAPORATIVE_SYSTEM_INCOMPLETE) {
11641         return "EVAPORATIVE_SYSTEM_INCOMPLETE";
11642     }
11643     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_AVAILABLE) {
11644         return "HEATED_CATALYST_AVAILABLE";
11645     }
11646     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::HEATED_CATALYST_INCOMPLETE) {
11647         return "HEATED_CATALYST_INCOMPLETE";
11648     }
11649     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_AVAILABLE) {
11650         return "CATALYST_AVAILABLE";
11651     }
11652     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors::CATALYST_INCOMPLETE) {
11653         return "CATALYST_INCOMPLETE";
11654     }
11655     std::string os;
11656     os += toHexString(static_cast<int32_t>(o));
11657     return os;
11658 }
11659 
PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors o,::std::ostream * os)11660 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2SparkIgnitionMonitors o, ::std::ostream* os) {
11661     *os << toString(o);
11662 }
11663 
11664 template<>
11665 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors>(int32_t o) {
11666     using ::android::hardware::details::toHexString;
11667     std::string os;
11668     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors> flipped = 0;
11669     bool first = true;
11670     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_AVAILABLE)) {
11671         os += (first ? "" : " | ");
11672         os += "COMPONENTS_AVAILABLE";
11673         first = false;
11674         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_AVAILABLE;
11675     }
11676     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_INCOMPLETE)) {
11677         os += (first ? "" : " | ");
11678         os += "COMPONENTS_INCOMPLETE";
11679         first = false;
11680         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_INCOMPLETE;
11681     }
11682     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_AVAILABLE)) {
11683         os += (first ? "" : " | ");
11684         os += "FUEL_SYSTEM_AVAILABLE";
11685         first = false;
11686         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_AVAILABLE;
11687     }
11688     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE)) {
11689         os += (first ? "" : " | ");
11690         os += "FUEL_SYSTEM_INCOMPLETE";
11691         first = false;
11692         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE;
11693     }
11694     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_AVAILABLE)) {
11695         os += (first ? "" : " | ");
11696         os += "MISFIRE_AVAILABLE";
11697         first = false;
11698         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_AVAILABLE;
11699     }
11700     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_INCOMPLETE)) {
11701         os += (first ? "" : " | ");
11702         os += "MISFIRE_INCOMPLETE";
11703         first = false;
11704         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_INCOMPLETE;
11705     }
11706     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_AVAILABLE)) {
11707         os += (first ? "" : " | ");
11708         os += "EGR_OR_VVT_AVAILABLE";
11709         first = false;
11710         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_AVAILABLE;
11711     }
11712     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_INCOMPLETE)) {
11713         os += (first ? "" : " | ");
11714         os += "EGR_OR_VVT_INCOMPLETE";
11715         first = false;
11716         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_INCOMPLETE;
11717     }
11718     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_AVAILABLE)) {
11719         os += (first ? "" : " | ");
11720         os += "PM_FILTER_AVAILABLE";
11721         first = false;
11722         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_AVAILABLE;
11723     }
11724     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_INCOMPLETE)) {
11725         os += (first ? "" : " | ");
11726         os += "PM_FILTER_INCOMPLETE";
11727         first = false;
11728         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_INCOMPLETE;
11729     }
11730     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_AVAILABLE)) {
11731         os += (first ? "" : " | ");
11732         os += "EXHAUST_GAS_SENSOR_AVAILABLE";
11733         first = false;
11734         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_AVAILABLE;
11735     }
11736     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_INCOMPLETE)) {
11737         os += (first ? "" : " | ");
11738         os += "EXHAUST_GAS_SENSOR_INCOMPLETE";
11739         first = false;
11740         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_INCOMPLETE;
11741     }
11742     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_AVAILABLE)) {
11743         os += (first ? "" : " | ");
11744         os += "BOOST_PRESSURE_AVAILABLE";
11745         first = false;
11746         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_AVAILABLE;
11747     }
11748     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_INCOMPLETE)) {
11749         os += (first ? "" : " | ");
11750         os += "BOOST_PRESSURE_INCOMPLETE";
11751         first = false;
11752         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_INCOMPLETE;
11753     }
11754     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_AVAILABLE)) {
11755         os += (first ? "" : " | ");
11756         os += "NOx_SCR_AVAILABLE";
11757         first = false;
11758         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_AVAILABLE;
11759     }
11760     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_INCOMPLETE)) {
11761         os += (first ? "" : " | ");
11762         os += "NOx_SCR_INCOMPLETE";
11763         first = false;
11764         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_INCOMPLETE;
11765     }
11766     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_AVAILABLE)) {
11767         os += (first ? "" : " | ");
11768         os += "NMHC_CATALYST_AVAILABLE";
11769         first = false;
11770         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_AVAILABLE;
11771     }
11772     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_INCOMPLETE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_INCOMPLETE)) {
11773         os += (first ? "" : " | ");
11774         os += "NMHC_CATALYST_INCOMPLETE";
11775         first = false;
11776         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_INCOMPLETE;
11777     }
11778     if (o != flipped) {
11779         os += (first ? "" : " | ");
11780         os += toHexString(o & (~flipped));
11781     }os += " (";
11782     os += toHexString(o);
11783     os += ")";
11784     return os;
11785 }
11786 
toString(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors o)11787 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors o) {
11788     using ::android::hardware::details::toHexString;
11789     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_AVAILABLE) {
11790         return "COMPONENTS_AVAILABLE";
11791     }
11792     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::COMPONENTS_INCOMPLETE) {
11793         return "COMPONENTS_INCOMPLETE";
11794     }
11795     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_AVAILABLE) {
11796         return "FUEL_SYSTEM_AVAILABLE";
11797     }
11798     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::FUEL_SYSTEM_INCOMPLETE) {
11799         return "FUEL_SYSTEM_INCOMPLETE";
11800     }
11801     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_AVAILABLE) {
11802         return "MISFIRE_AVAILABLE";
11803     }
11804     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::MISFIRE_INCOMPLETE) {
11805         return "MISFIRE_INCOMPLETE";
11806     }
11807     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_AVAILABLE) {
11808         return "EGR_OR_VVT_AVAILABLE";
11809     }
11810     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EGR_OR_VVT_INCOMPLETE) {
11811         return "EGR_OR_VVT_INCOMPLETE";
11812     }
11813     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_AVAILABLE) {
11814         return "PM_FILTER_AVAILABLE";
11815     }
11816     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::PM_FILTER_INCOMPLETE) {
11817         return "PM_FILTER_INCOMPLETE";
11818     }
11819     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_AVAILABLE) {
11820         return "EXHAUST_GAS_SENSOR_AVAILABLE";
11821     }
11822     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::EXHAUST_GAS_SENSOR_INCOMPLETE) {
11823         return "EXHAUST_GAS_SENSOR_INCOMPLETE";
11824     }
11825     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_AVAILABLE) {
11826         return "BOOST_PRESSURE_AVAILABLE";
11827     }
11828     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::BOOST_PRESSURE_INCOMPLETE) {
11829         return "BOOST_PRESSURE_INCOMPLETE";
11830     }
11831     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_AVAILABLE) {
11832         return "NOx_SCR_AVAILABLE";
11833     }
11834     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NOx_SCR_INCOMPLETE) {
11835         return "NOx_SCR_INCOMPLETE";
11836     }
11837     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_AVAILABLE) {
11838         return "NMHC_CATALYST_AVAILABLE";
11839     }
11840     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors::NMHC_CATALYST_INCOMPLETE) {
11841         return "NMHC_CATALYST_INCOMPLETE";
11842     }
11843     std::string os;
11844     os += toHexString(static_cast<int32_t>(o));
11845     return os;
11846 }
11847 
PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors o,::std::ostream * os)11848 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2CompressionIgnitionMonitors o, ::std::ostream* os) {
11849     *os << toString(o);
11850 }
11851 
11852 template<>
11853 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus>(int32_t o) {
11854     using ::android::hardware::details::toHexString;
11855     std::string os;
11856     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus> flipped = 0;
11857     bool first = true;
11858     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::UPSTREAM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::UPSTREAM)) {
11859         os += (first ? "" : " | ");
11860         os += "UPSTREAM";
11861         first = false;
11862         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::UPSTREAM;
11863     }
11864     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::DOWNSTREAM_OF_CATALYCIC_CONVERTER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::DOWNSTREAM_OF_CATALYCIC_CONVERTER)) {
11865         os += (first ? "" : " | ");
11866         os += "DOWNSTREAM_OF_CATALYCIC_CONVERTER";
11867         first = false;
11868         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::DOWNSTREAM_OF_CATALYCIC_CONVERTER;
11869     }
11870     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::FROM_OUTSIDE_OR_OFF) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::FROM_OUTSIDE_OR_OFF)) {
11871         os += (first ? "" : " | ");
11872         os += "FROM_OUTSIDE_OR_OFF";
11873         first = false;
11874         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::FROM_OUTSIDE_OR_OFF;
11875     }
11876     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::PUMP_ON_FOR_DIAGNOSTICS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::PUMP_ON_FOR_DIAGNOSTICS)) {
11877         os += (first ? "" : " | ");
11878         os += "PUMP_ON_FOR_DIAGNOSTICS";
11879         first = false;
11880         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::PUMP_ON_FOR_DIAGNOSTICS;
11881     }
11882     if (o != flipped) {
11883         os += (first ? "" : " | ");
11884         os += toHexString(o & (~flipped));
11885     }os += " (";
11886     os += toHexString(o);
11887     os += ")";
11888     return os;
11889 }
11890 
toString(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus o)11891 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus o) {
11892     using ::android::hardware::details::toHexString;
11893     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::UPSTREAM) {
11894         return "UPSTREAM";
11895     }
11896     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::DOWNSTREAM_OF_CATALYCIC_CONVERTER) {
11897         return "DOWNSTREAM_OF_CATALYCIC_CONVERTER";
11898     }
11899     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::FROM_OUTSIDE_OR_OFF) {
11900         return "FROM_OUTSIDE_OR_OFF";
11901     }
11902     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus::PUMP_ON_FOR_DIAGNOSTICS) {
11903         return "PUMP_ON_FOR_DIAGNOSTICS";
11904     }
11905     std::string os;
11906     os += toHexString(static_cast<int32_t>(o));
11907     return os;
11908 }
11909 
PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus o,::std::ostream * os)11910 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2SecondaryAirStatus o, ::std::ostream* os) {
11911     *os << toString(o);
11912 }
11913 
11914 template<>
11915 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::Obd2FuelType>(int32_t o) {
11916     using ::android::hardware::details::toHexString;
11917     std::string os;
11918     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::Obd2FuelType> flipped = 0;
11919     bool first = true;
11920     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::NOT_AVAILABLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::NOT_AVAILABLE)) {
11921         os += (first ? "" : " | ");
11922         os += "NOT_AVAILABLE";
11923         first = false;
11924         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::NOT_AVAILABLE;
11925     }
11926     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::GASOLINE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::GASOLINE)) {
11927         os += (first ? "" : " | ");
11928         os += "GASOLINE";
11929         first = false;
11930         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::GASOLINE;
11931     }
11932     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::METHANOL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::METHANOL)) {
11933         os += (first ? "" : " | ");
11934         os += "METHANOL";
11935         first = false;
11936         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::METHANOL;
11937     }
11938     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ETHANOL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ETHANOL)) {
11939         os += (first ? "" : " | ");
11940         os += "ETHANOL";
11941         first = false;
11942         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ETHANOL;
11943     }
11944     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::DIESEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::DIESEL)) {
11945         os += (first ? "" : " | ");
11946         os += "DIESEL";
11947         first = false;
11948         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::DIESEL;
11949     }
11950     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::LPG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::LPG)) {
11951         os += (first ? "" : " | ");
11952         os += "LPG";
11953         first = false;
11954         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::LPG;
11955     }
11956     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::CNG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::CNG)) {
11957         os += (first ? "" : " | ");
11958         os += "CNG";
11959         first = false;
11960         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::CNG;
11961     }
11962     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::PROPANE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::PROPANE)) {
11963         os += (first ? "" : " | ");
11964         os += "PROPANE";
11965         first = false;
11966         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::PROPANE;
11967     }
11968     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ELECTRIC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ELECTRIC)) {
11969         os += (first ? "" : " | ");
11970         os += "ELECTRIC";
11971         first = false;
11972         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ELECTRIC;
11973     }
11974     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_GASOLINE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_GASOLINE)) {
11975         os += (first ? "" : " | ");
11976         os += "BIFUEL_RUNNING_GASOLINE";
11977         first = false;
11978         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_GASOLINE;
11979     }
11980     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_METHANOL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_METHANOL)) {
11981         os += (first ? "" : " | ");
11982         os += "BIFUEL_RUNNING_METHANOL";
11983         first = false;
11984         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_METHANOL;
11985     }
11986     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ETHANOL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ETHANOL)) {
11987         os += (first ? "" : " | ");
11988         os += "BIFUEL_RUNNING_ETHANOL";
11989         first = false;
11990         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ETHANOL;
11991     }
11992     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_LPG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_LPG)) {
11993         os += (first ? "" : " | ");
11994         os += "BIFUEL_RUNNING_LPG";
11995         first = false;
11996         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_LPG;
11997     }
11998     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_CNG) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_CNG)) {
11999         os += (first ? "" : " | ");
12000         os += "BIFUEL_RUNNING_CNG";
12001         first = false;
12002         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_CNG;
12003     }
12004     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_PROPANE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_PROPANE)) {
12005         os += (first ? "" : " | ");
12006         os += "BIFUEL_RUNNING_PROPANE";
12007         first = false;
12008         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_PROPANE;
12009     }
12010     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC)) {
12011         os += (first ? "" : " | ");
12012         os += "BIFUEL_RUNNING_ELECTRIC";
12013         first = false;
12014         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC;
12015     }
12016     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION)) {
12017         os += (first ? "" : " | ");
12018         os += "BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION";
12019         first = false;
12020         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION;
12021     }
12022     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_GASOLINE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_GASOLINE)) {
12023         os += (first ? "" : " | ");
12024         os += "HYBRID_GASOLINE";
12025         first = false;
12026         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_GASOLINE;
12027     }
12028     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ETHANOL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ETHANOL)) {
12029         os += (first ? "" : " | ");
12030         os += "HYBRID_ETHANOL";
12031         first = false;
12032         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ETHANOL;
12033     }
12034     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_DIESEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_DIESEL)) {
12035         os += (first ? "" : " | ");
12036         os += "HYBRID_DIESEL";
12037         first = false;
12038         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_DIESEL;
12039     }
12040     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ELECTRIC) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ELECTRIC)) {
12041         os += (first ? "" : " | ");
12042         os += "HYBRID_ELECTRIC";
12043         first = false;
12044         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ELECTRIC;
12045     }
12046     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION)) {
12047         os += (first ? "" : " | ");
12048         os += "HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION";
12049         first = false;
12050         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION;
12051     }
12052     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_REGENERATIVE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_REGENERATIVE)) {
12053         os += (first ? "" : " | ");
12054         os += "HYBRID_REGENERATIVE";
12055         first = false;
12056         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_REGENERATIVE;
12057     }
12058     if ((o & ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_DIESEL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_DIESEL)) {
12059         os += (first ? "" : " | ");
12060         os += "BIFUEL_RUNNING_DIESEL";
12061         first = false;
12062         flipped |= ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_DIESEL;
12063     }
12064     if (o != flipped) {
12065         os += (first ? "" : " | ");
12066         os += toHexString(o & (~flipped));
12067     }os += " (";
12068     os += toHexString(o);
12069     os += ")";
12070     return os;
12071 }
12072 
toString(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType o)12073 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType o) {
12074     using ::android::hardware::details::toHexString;
12075     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::NOT_AVAILABLE) {
12076         return "NOT_AVAILABLE";
12077     }
12078     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::GASOLINE) {
12079         return "GASOLINE";
12080     }
12081     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::METHANOL) {
12082         return "METHANOL";
12083     }
12084     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ETHANOL) {
12085         return "ETHANOL";
12086     }
12087     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::DIESEL) {
12088         return "DIESEL";
12089     }
12090     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::LPG) {
12091         return "LPG";
12092     }
12093     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::CNG) {
12094         return "CNG";
12095     }
12096     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::PROPANE) {
12097         return "PROPANE";
12098     }
12099     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::ELECTRIC) {
12100         return "ELECTRIC";
12101     }
12102     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_GASOLINE) {
12103         return "BIFUEL_RUNNING_GASOLINE";
12104     }
12105     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_METHANOL) {
12106         return "BIFUEL_RUNNING_METHANOL";
12107     }
12108     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ETHANOL) {
12109         return "BIFUEL_RUNNING_ETHANOL";
12110     }
12111     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_LPG) {
12112         return "BIFUEL_RUNNING_LPG";
12113     }
12114     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_CNG) {
12115         return "BIFUEL_RUNNING_CNG";
12116     }
12117     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_PROPANE) {
12118         return "BIFUEL_RUNNING_PROPANE";
12119     }
12120     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC) {
12121         return "BIFUEL_RUNNING_ELECTRIC";
12122     }
12123     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION) {
12124         return "BIFUEL_RUNNING_ELECTRIC_AND_COMBUSTION";
12125     }
12126     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_GASOLINE) {
12127         return "HYBRID_GASOLINE";
12128     }
12129     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ETHANOL) {
12130         return "HYBRID_ETHANOL";
12131     }
12132     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_DIESEL) {
12133         return "HYBRID_DIESEL";
12134     }
12135     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_ELECTRIC) {
12136         return "HYBRID_ELECTRIC";
12137     }
12138     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION) {
12139         return "HYBRID_RUNNING_ELECTRIC_AND_COMBUSTION";
12140     }
12141     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::HYBRID_REGENERATIVE) {
12142         return "HYBRID_REGENERATIVE";
12143     }
12144     if (o == ::android::hardware::automotive::vehicle::V2_0::Obd2FuelType::BIFUEL_RUNNING_DIESEL) {
12145         return "BIFUEL_RUNNING_DIESEL";
12146     }
12147     std::string os;
12148     os += toHexString(static_cast<int32_t>(o));
12149     return os;
12150 }
12151 
PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType o,::std::ostream * os)12152 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::Obd2FuelType o, ::std::ostream* os) {
12153     *os << toString(o);
12154 }
12155 
12156 template<>
12157 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex>(int32_t o) {
12158     using ::android::hardware::details::toHexString;
12159     std::string os;
12160     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex> flipped = 0;
12161     bool first = true;
12162     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_SYSTEM_STATUS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_SYSTEM_STATUS)) {
12163         os += (first ? "" : " | ");
12164         os += "FUEL_SYSTEM_STATUS";
12165         first = false;
12166         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_SYSTEM_STATUS;
12167     }
12168     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON)) {
12169         os += (first ? "" : " | ");
12170         os += "MALFUNCTION_INDICATOR_LIGHT_ON";
12171         first = false;
12172         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON;
12173     }
12174     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_MONITORS_SUPPORTED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_MONITORS_SUPPORTED)) {
12175         os += (first ? "" : " | ");
12176         os += "IGNITION_MONITORS_SUPPORTED";
12177         first = false;
12178         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_MONITORS_SUPPORTED;
12179     }
12180     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_SPECIFIC_MONITORS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_SPECIFIC_MONITORS)) {
12181         os += (first ? "" : " | ");
12182         os += "IGNITION_SPECIFIC_MONITORS";
12183         first = false;
12184         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_SPECIFIC_MONITORS;
12185     }
12186     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::INTAKE_AIR_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::INTAKE_AIR_TEMPERATURE)) {
12187         os += (first ? "" : " | ");
12188         os += "INTAKE_AIR_TEMPERATURE";
12189         first = false;
12190         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::INTAKE_AIR_TEMPERATURE;
12191     }
12192     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS)) {
12193         os += (first ? "" : " | ");
12194         os += "COMMANDED_SECONDARY_AIR_STATUS";
12195         first = false;
12196         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS;
12197     }
12198     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT)) {
12199         os += (first ? "" : " | ");
12200         os += "NUM_OXYGEN_SENSORS_PRESENT";
12201         first = false;
12202         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT;
12203     }
12204     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::RUNTIME_SINCE_ENGINE_START) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::RUNTIME_SINCE_ENGINE_START)) {
12205         os += (first ? "" : " | ");
12206         os += "RUNTIME_SINCE_ENGINE_START";
12207         first = false;
12208         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::RUNTIME_SINCE_ENGINE_START;
12209     }
12210     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON)) {
12211         os += (first ? "" : " | ");
12212         os += "DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON";
12213         first = false;
12214         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON;
12215     }
12216     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED)) {
12217         os += (first ? "" : " | ");
12218         os += "WARMUPS_SINCE_CODES_CLEARED";
12219         first = false;
12220         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED;
12221     }
12222     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED)) {
12223         os += (first ? "" : " | ");
12224         os += "DISTANCE_TRAVELED_SINCE_CODES_CLEARED";
12225         first = false;
12226         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED;
12227     }
12228     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE)) {
12229         os += (first ? "" : " | ");
12230         os += "ABSOLUTE_BAROMETRIC_PRESSURE";
12231         first = false;
12232         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE;
12233     }
12234     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::CONTROL_MODULE_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::CONTROL_MODULE_VOLTAGE)) {
12235         os += (first ? "" : " | ");
12236         os += "CONTROL_MODULE_VOLTAGE";
12237         first = false;
12238         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::CONTROL_MODULE_VOLTAGE;
12239     }
12240     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::AMBIENT_AIR_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::AMBIENT_AIR_TEMPERATURE)) {
12241         os += (first ? "" : " | ");
12242         os += "AMBIENT_AIR_TEMPERATURE";
12243         first = false;
12244         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::AMBIENT_AIR_TEMPERATURE;
12245     }
12246     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_WITH_MALFUNCTION_LIGHT_ON) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_WITH_MALFUNCTION_LIGHT_ON)) {
12247         os += (first ? "" : " | ");
12248         os += "TIME_WITH_MALFUNCTION_LIGHT_ON";
12249         first = false;
12250         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_WITH_MALFUNCTION_LIGHT_ON;
12251     }
12252     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_SINCE_TROUBLE_CODES_CLEARED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_SINCE_TROUBLE_CODES_CLEARED)) {
12253         os += (first ? "" : " | ");
12254         os += "TIME_SINCE_TROUBLE_CODES_CLEARED";
12255         first = false;
12256         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_SINCE_TROUBLE_CODES_CLEARED;
12257     }
12258     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO)) {
12259         os += (first ? "" : " | ");
12260         os += "MAX_FUEL_AIR_EQUIVALENCE_RATIO";
12261         first = false;
12262         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO;
12263     }
12264     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_VOLTAGE)) {
12265         os += (first ? "" : " | ");
12266         os += "MAX_OXYGEN_SENSOR_VOLTAGE";
12267         first = false;
12268         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_VOLTAGE;
12269     }
12270     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_CURRENT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_CURRENT)) {
12271         os += (first ? "" : " | ");
12272         os += "MAX_OXYGEN_SENSOR_CURRENT";
12273         first = false;
12274         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_CURRENT;
12275     }
12276     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE)) {
12277         os += (first ? "" : " | ");
12278         os += "MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE";
12279         first = false;
12280         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE;
12281     }
12282     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR)) {
12283         os += (first ? "" : " | ");
12284         os += "MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR";
12285         first = false;
12286         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR;
12287     }
12288     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_TYPE)) {
12289         os += (first ? "" : " | ");
12290         os += "FUEL_TYPE";
12291         first = false;
12292         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_TYPE;
12293     }
12294     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_RAIL_ABSOLUTE_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_RAIL_ABSOLUTE_PRESSURE)) {
12295         os += (first ? "" : " | ");
12296         os += "FUEL_RAIL_ABSOLUTE_PRESSURE";
12297         first = false;
12298         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_RAIL_ABSOLUTE_PRESSURE;
12299     }
12300     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_OIL_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_OIL_TEMPERATURE)) {
12301         os += (first ? "" : " | ");
12302         os += "ENGINE_OIL_TEMPERATURE";
12303         first = false;
12304         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_OIL_TEMPERATURE;
12305     }
12306     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DRIVER_DEMAND_PERCENT_TORQUE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DRIVER_DEMAND_PERCENT_TORQUE)) {
12307         os += (first ? "" : " | ");
12308         os += "DRIVER_DEMAND_PERCENT_TORQUE";
12309         first = false;
12310         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DRIVER_DEMAND_PERCENT_TORQUE;
12311     }
12312     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_ACTUAL_PERCENT_TORQUE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_ACTUAL_PERCENT_TORQUE)) {
12313         os += (first ? "" : " | ");
12314         os += "ENGINE_ACTUAL_PERCENT_TORQUE";
12315         first = false;
12316         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_ACTUAL_PERCENT_TORQUE;
12317     }
12318     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_REFERENCE_PERCENT_TORQUE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_REFERENCE_PERCENT_TORQUE)) {
12319         os += (first ? "" : " | ");
12320         os += "ENGINE_REFERENCE_PERCENT_TORQUE";
12321         first = false;
12322         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_REFERENCE_PERCENT_TORQUE;
12323     }
12324     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_IDLE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_IDLE)) {
12325         os += (first ? "" : " | ");
12326         os += "ENGINE_PERCENT_TORQUE_DATA_IDLE";
12327         first = false;
12328         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_IDLE;
12329     }
12330     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT1)) {
12331         os += (first ? "" : " | ");
12332         os += "ENGINE_PERCENT_TORQUE_DATA_POINT1";
12333         first = false;
12334         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT1;
12335     }
12336     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT2)) {
12337         os += (first ? "" : " | ");
12338         os += "ENGINE_PERCENT_TORQUE_DATA_POINT2";
12339         first = false;
12340         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT2;
12341     }
12342     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT3) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT3)) {
12343         os += (first ? "" : " | ");
12344         os += "ENGINE_PERCENT_TORQUE_DATA_POINT3";
12345         first = false;
12346         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT3;
12347     }
12348     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT4) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT4)) {
12349         os += (first ? "" : " | ");
12350         os += "ENGINE_PERCENT_TORQUE_DATA_POINT4";
12351         first = false;
12352         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT4;
12353     }
12354     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::LAST_SYSTEM_INDEX) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::LAST_SYSTEM_INDEX)) {
12355         os += (first ? "" : " | ");
12356         os += "LAST_SYSTEM_INDEX";
12357         first = false;
12358         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::LAST_SYSTEM_INDEX;
12359     }
12360     if (o != flipped) {
12361         os += (first ? "" : " | ");
12362         os += toHexString(o & (~flipped));
12363     }os += " (";
12364     os += toHexString(o);
12365     os += ")";
12366     return os;
12367 }
12368 
toString(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex o)12369 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex o) {
12370     using ::android::hardware::details::toHexString;
12371     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_SYSTEM_STATUS) {
12372         return "FUEL_SYSTEM_STATUS";
12373     }
12374     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MALFUNCTION_INDICATOR_LIGHT_ON) {
12375         return "MALFUNCTION_INDICATOR_LIGHT_ON";
12376     }
12377     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_MONITORS_SUPPORTED) {
12378         return "IGNITION_MONITORS_SUPPORTED";
12379     }
12380     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::IGNITION_SPECIFIC_MONITORS) {
12381         return "IGNITION_SPECIFIC_MONITORS";
12382     }
12383     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::INTAKE_AIR_TEMPERATURE) {
12384         return "INTAKE_AIR_TEMPERATURE";
12385     }
12386     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::COMMANDED_SECONDARY_AIR_STATUS) {
12387         return "COMMANDED_SECONDARY_AIR_STATUS";
12388     }
12389     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::NUM_OXYGEN_SENSORS_PRESENT) {
12390         return "NUM_OXYGEN_SENSORS_PRESENT";
12391     }
12392     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::RUNTIME_SINCE_ENGINE_START) {
12393         return "RUNTIME_SINCE_ENGINE_START";
12394     }
12395     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON) {
12396         return "DISTANCE_TRAVELED_WITH_MALFUNCTION_INDICATOR_LIGHT_ON";
12397     }
12398     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::WARMUPS_SINCE_CODES_CLEARED) {
12399         return "WARMUPS_SINCE_CODES_CLEARED";
12400     }
12401     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DISTANCE_TRAVELED_SINCE_CODES_CLEARED) {
12402         return "DISTANCE_TRAVELED_SINCE_CODES_CLEARED";
12403     }
12404     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ABSOLUTE_BAROMETRIC_PRESSURE) {
12405         return "ABSOLUTE_BAROMETRIC_PRESSURE";
12406     }
12407     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::CONTROL_MODULE_VOLTAGE) {
12408         return "CONTROL_MODULE_VOLTAGE";
12409     }
12410     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::AMBIENT_AIR_TEMPERATURE) {
12411         return "AMBIENT_AIR_TEMPERATURE";
12412     }
12413     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_WITH_MALFUNCTION_LIGHT_ON) {
12414         return "TIME_WITH_MALFUNCTION_LIGHT_ON";
12415     }
12416     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::TIME_SINCE_TROUBLE_CODES_CLEARED) {
12417         return "TIME_SINCE_TROUBLE_CODES_CLEARED";
12418     }
12419     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_FUEL_AIR_EQUIVALENCE_RATIO) {
12420         return "MAX_FUEL_AIR_EQUIVALENCE_RATIO";
12421     }
12422     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_VOLTAGE) {
12423         return "MAX_OXYGEN_SENSOR_VOLTAGE";
12424     }
12425     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_OXYGEN_SENSOR_CURRENT) {
12426         return "MAX_OXYGEN_SENSOR_CURRENT";
12427     }
12428     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE) {
12429         return "MAX_INTAKE_MANIFOLD_ABSOLUTE_PRESSURE";
12430     }
12431     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR) {
12432         return "MAX_AIR_FLOW_RATE_FROM_MASS_AIR_FLOW_SENSOR";
12433     }
12434     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_TYPE) {
12435         return "FUEL_TYPE";
12436     }
12437     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::FUEL_RAIL_ABSOLUTE_PRESSURE) {
12438         return "FUEL_RAIL_ABSOLUTE_PRESSURE";
12439     }
12440     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_OIL_TEMPERATURE) {
12441         return "ENGINE_OIL_TEMPERATURE";
12442     }
12443     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::DRIVER_DEMAND_PERCENT_TORQUE) {
12444         return "DRIVER_DEMAND_PERCENT_TORQUE";
12445     }
12446     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_ACTUAL_PERCENT_TORQUE) {
12447         return "ENGINE_ACTUAL_PERCENT_TORQUE";
12448     }
12449     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_REFERENCE_PERCENT_TORQUE) {
12450         return "ENGINE_REFERENCE_PERCENT_TORQUE";
12451     }
12452     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_IDLE) {
12453         return "ENGINE_PERCENT_TORQUE_DATA_IDLE";
12454     }
12455     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT1) {
12456         return "ENGINE_PERCENT_TORQUE_DATA_POINT1";
12457     }
12458     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT2) {
12459         return "ENGINE_PERCENT_TORQUE_DATA_POINT2";
12460     }
12461     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT3) {
12462         return "ENGINE_PERCENT_TORQUE_DATA_POINT3";
12463     }
12464     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::ENGINE_PERCENT_TORQUE_DATA_POINT4) {
12465         return "ENGINE_PERCENT_TORQUE_DATA_POINT4";
12466     }
12467     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex::LAST_SYSTEM_INDEX) {
12468         return "LAST_SYSTEM_INDEX";
12469     }
12470     std::string os;
12471     os += toHexString(static_cast<int32_t>(o));
12472     return os;
12473 }
12474 
PrintTo(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex o,::std::ostream * os)12475 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::DiagnosticIntegerSensorIndex o, ::std::ostream* os) {
12476     *os << toString(o);
12477 }
12478 
12479 template<>
12480 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex>(int32_t o) {
12481     using ::android::hardware::details::toHexString;
12482     std::string os;
12483     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex> flipped = 0;
12484     bool first = true;
12485     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CALCULATED_ENGINE_LOAD) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CALCULATED_ENGINE_LOAD)) {
12486         os += (first ? "" : " | ");
12487         os += "CALCULATED_ENGINE_LOAD";
12488         first = false;
12489         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CALCULATED_ENGINE_LOAD;
12490     }
12491     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_COOLANT_TEMPERATURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_COOLANT_TEMPERATURE)) {
12492         os += (first ? "" : " | ");
12493         os += "ENGINE_COOLANT_TEMPERATURE";
12494         first = false;
12495         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_COOLANT_TEMPERATURE;
12496     }
12497     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1)) {
12498         os += (first ? "" : " | ");
12499         os += "SHORT_TERM_FUEL_TRIM_BANK1";
12500         first = false;
12501         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1;
12502     }
12503     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1)) {
12504         os += (first ? "" : " | ");
12505         os += "LONG_TERM_FUEL_TRIM_BANK1";
12506         first = false;
12507         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1;
12508     }
12509     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2)) {
12510         os += (first ? "" : " | ");
12511         os += "SHORT_TERM_FUEL_TRIM_BANK2";
12512         first = false;
12513         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2;
12514     }
12515     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2)) {
12516         os += (first ? "" : " | ");
12517         os += "LONG_TERM_FUEL_TRIM_BANK2";
12518         first = false;
12519         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2;
12520     }
12521     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_PRESSURE)) {
12522         os += (first ? "" : " | ");
12523         os += "FUEL_PRESSURE";
12524         first = false;
12525         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_PRESSURE;
12526     }
12527     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE)) {
12528         os += (first ? "" : " | ");
12529         os += "INTAKE_MANIFOLD_ABSOLUTE_PRESSURE";
12530         first = false;
12531         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE;
12532     }
12533     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_RPM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_RPM)) {
12534         os += (first ? "" : " | ");
12535         os += "ENGINE_RPM";
12536         first = false;
12537         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_RPM;
12538     }
12539     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::VEHICLE_SPEED) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::VEHICLE_SPEED)) {
12540         os += (first ? "" : " | ");
12541         os += "VEHICLE_SPEED";
12542         first = false;
12543         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::VEHICLE_SPEED;
12544     }
12545     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::TIMING_ADVANCE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::TIMING_ADVANCE)) {
12546         os += (first ? "" : " | ");
12547         os += "TIMING_ADVANCE";
12548         first = false;
12549         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::TIMING_ADVANCE;
12550     }
12551     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::MAF_AIR_FLOW_RATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::MAF_AIR_FLOW_RATE)) {
12552         os += (first ? "" : " | ");
12553         os += "MAF_AIR_FLOW_RATE";
12554         first = false;
12555         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::MAF_AIR_FLOW_RATE;
12556     }
12557     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::THROTTLE_POSITION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::THROTTLE_POSITION)) {
12558         os += (first ? "" : " | ");
12559         os += "THROTTLE_POSITION";
12560         first = false;
12561         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::THROTTLE_POSITION;
12562     }
12563     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE)) {
12564         os += (first ? "" : " | ");
12565         os += "OXYGEN_SENSOR1_VOLTAGE";
12566         first = false;
12567         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE;
12568     }
12569     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM)) {
12570         os += (first ? "" : " | ");
12571         os += "OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM";
12572         first = false;
12573         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM;
12574     }
12575     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO)) {
12576         os += (first ? "" : " | ");
12577         os += "OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO";
12578         first = false;
12579         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO;
12580     }
12581     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_VOLTAGE)) {
12582         os += (first ? "" : " | ");
12583         os += "OXYGEN_SENSOR2_VOLTAGE";
12584         first = false;
12585         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_VOLTAGE;
12586     }
12587     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM)) {
12588         os += (first ? "" : " | ");
12589         os += "OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM";
12590         first = false;
12591         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM;
12592     }
12593     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO)) {
12594         os += (first ? "" : " | ");
12595         os += "OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO";
12596         first = false;
12597         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO;
12598     }
12599     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_VOLTAGE)) {
12600         os += (first ? "" : " | ");
12601         os += "OXYGEN_SENSOR3_VOLTAGE";
12602         first = false;
12603         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_VOLTAGE;
12604     }
12605     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM)) {
12606         os += (first ? "" : " | ");
12607         os += "OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM";
12608         first = false;
12609         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM;
12610     }
12611     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO)) {
12612         os += (first ? "" : " | ");
12613         os += "OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO";
12614         first = false;
12615         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO;
12616     }
12617     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_VOLTAGE)) {
12618         os += (first ? "" : " | ");
12619         os += "OXYGEN_SENSOR4_VOLTAGE";
12620         first = false;
12621         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_VOLTAGE;
12622     }
12623     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM)) {
12624         os += (first ? "" : " | ");
12625         os += "OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM";
12626         first = false;
12627         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM;
12628     }
12629     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO)) {
12630         os += (first ? "" : " | ");
12631         os += "OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO";
12632         first = false;
12633         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO;
12634     }
12635     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_VOLTAGE)) {
12636         os += (first ? "" : " | ");
12637         os += "OXYGEN_SENSOR5_VOLTAGE";
12638         first = false;
12639         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_VOLTAGE;
12640     }
12641     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM)) {
12642         os += (first ? "" : " | ");
12643         os += "OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM";
12644         first = false;
12645         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM;
12646     }
12647     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO)) {
12648         os += (first ? "" : " | ");
12649         os += "OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO";
12650         first = false;
12651         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO;
12652     }
12653     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_VOLTAGE)) {
12654         os += (first ? "" : " | ");
12655         os += "OXYGEN_SENSOR6_VOLTAGE";
12656         first = false;
12657         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_VOLTAGE;
12658     }
12659     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM)) {
12660         os += (first ? "" : " | ");
12661         os += "OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM";
12662         first = false;
12663         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM;
12664     }
12665     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO)) {
12666         os += (first ? "" : " | ");
12667         os += "OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO";
12668         first = false;
12669         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO;
12670     }
12671     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_VOLTAGE)) {
12672         os += (first ? "" : " | ");
12673         os += "OXYGEN_SENSOR7_VOLTAGE";
12674         first = false;
12675         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_VOLTAGE;
12676     }
12677     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM)) {
12678         os += (first ? "" : " | ");
12679         os += "OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM";
12680         first = false;
12681         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM;
12682     }
12683     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO)) {
12684         os += (first ? "" : " | ");
12685         os += "OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO";
12686         first = false;
12687         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO;
12688     }
12689     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_VOLTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_VOLTAGE)) {
12690         os += (first ? "" : " | ");
12691         os += "OXYGEN_SENSOR8_VOLTAGE";
12692         first = false;
12693         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_VOLTAGE;
12694     }
12695     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM)) {
12696         os += (first ? "" : " | ");
12697         os += "OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM";
12698         first = false;
12699         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM;
12700     }
12701     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO)) {
12702         os += (first ? "" : " | ");
12703         os += "OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO";
12704         first = false;
12705         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO;
12706     }
12707     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_PRESSURE)) {
12708         os += (first ? "" : " | ");
12709         os += "FUEL_RAIL_PRESSURE";
12710         first = false;
12711         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_PRESSURE;
12712     }
12713     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_GAUGE_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_GAUGE_PRESSURE)) {
12714         os += (first ? "" : " | ");
12715         os += "FUEL_RAIL_GAUGE_PRESSURE";
12716         first = false;
12717         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_GAUGE_PRESSURE;
12718     }
12719     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EXHAUST_GAS_RECIRCULATION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EXHAUST_GAS_RECIRCULATION)) {
12720         os += (first ? "" : " | ");
12721         os += "COMMANDED_EXHAUST_GAS_RECIRCULATION";
12722         first = false;
12723         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EXHAUST_GAS_RECIRCULATION;
12724     }
12725     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EXHAUST_GAS_RECIRCULATION_ERROR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EXHAUST_GAS_RECIRCULATION_ERROR)) {
12726         os += (first ? "" : " | ");
12727         os += "EXHAUST_GAS_RECIRCULATION_ERROR";
12728         first = false;
12729         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EXHAUST_GAS_RECIRCULATION_ERROR;
12730     }
12731     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EVAPORATIVE_PURGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EVAPORATIVE_PURGE)) {
12732         os += (first ? "" : " | ");
12733         os += "COMMANDED_EVAPORATIVE_PURGE";
12734         first = false;
12735         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EVAPORATIVE_PURGE;
12736     }
12737     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_TANK_LEVEL_INPUT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_TANK_LEVEL_INPUT)) {
12738         os += (first ? "" : " | ");
12739         os += "FUEL_TANK_LEVEL_INPUT";
12740         first = false;
12741         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_TANK_LEVEL_INPUT;
12742     }
12743     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE)) {
12744         os += (first ? "" : " | ");
12745         os += "EVAPORATION_SYSTEM_VAPOR_PRESSURE";
12746         first = false;
12747         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE;
12748     }
12749     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1)) {
12750         os += (first ? "" : " | ");
12751         os += "CATALYST_TEMPERATURE_BANK1_SENSOR1";
12752         first = false;
12753         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1;
12754     }
12755     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR1)) {
12756         os += (first ? "" : " | ");
12757         os += "CATALYST_TEMPERATURE_BANK2_SENSOR1";
12758         first = false;
12759         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR1;
12760     }
12761     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR2)) {
12762         os += (first ? "" : " | ");
12763         os += "CATALYST_TEMPERATURE_BANK1_SENSOR2";
12764         first = false;
12765         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR2;
12766     }
12767     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR2)) {
12768         os += (first ? "" : " | ");
12769         os += "CATALYST_TEMPERATURE_BANK2_SENSOR2";
12770         first = false;
12771         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR2;
12772     }
12773     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_LOAD_VALUE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_LOAD_VALUE)) {
12774         os += (first ? "" : " | ");
12775         os += "ABSOLUTE_LOAD_VALUE";
12776         first = false;
12777         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_LOAD_VALUE;
12778     }
12779     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO)) {
12780         os += (first ? "" : " | ");
12781         os += "FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO";
12782         first = false;
12783         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO;
12784     }
12785     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_THROTTLE_POSITION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_THROTTLE_POSITION)) {
12786         os += (first ? "" : " | ");
12787         os += "RELATIVE_THROTTLE_POSITION";
12788         first = false;
12789         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_THROTTLE_POSITION;
12790     }
12791     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B)) {
12792         os += (first ? "" : " | ");
12793         os += "ABSOLUTE_THROTTLE_POSITION_B";
12794         first = false;
12795         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B;
12796     }
12797     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_C) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_C)) {
12798         os += (first ? "" : " | ");
12799         os += "ABSOLUTE_THROTTLE_POSITION_C";
12800         first = false;
12801         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_C;
12802     }
12803     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D)) {
12804         os += (first ? "" : " | ");
12805         os += "ACCELERATOR_PEDAL_POSITION_D";
12806         first = false;
12807         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D;
12808     }
12809     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E)) {
12810         os += (first ? "" : " | ");
12811         os += "ACCELERATOR_PEDAL_POSITION_E";
12812         first = false;
12813         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E;
12814     }
12815     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_F) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_F)) {
12816         os += (first ? "" : " | ");
12817         os += "ACCELERATOR_PEDAL_POSITION_F";
12818         first = false;
12819         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_F;
12820     }
12821     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR)) {
12822         os += (first ? "" : " | ");
12823         os += "COMMANDED_THROTTLE_ACTUATOR";
12824         first = false;
12825         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR;
12826     }
12827     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ETHANOL_FUEL_PERCENTAGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ETHANOL_FUEL_PERCENTAGE)) {
12828         os += (first ? "" : " | ");
12829         os += "ETHANOL_FUEL_PERCENTAGE";
12830         first = false;
12831         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ETHANOL_FUEL_PERCENTAGE;
12832     }
12833     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE)) {
12834         os += (first ? "" : " | ");
12835         os += "ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE";
12836         first = false;
12837         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE;
12838     }
12839     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1)) {
12840         os += (first ? "" : " | ");
12841         os += "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1";
12842         first = false;
12843         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1;
12844     }
12845     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2)) {
12846         os += (first ? "" : " | ");
12847         os += "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2";
12848         first = false;
12849         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2;
12850     }
12851     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3)) {
12852         os += (first ? "" : " | ");
12853         os += "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3";
12854         first = false;
12855         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3;
12856     }
12857     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4)) {
12858         os += (first ? "" : " | ");
12859         os += "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4";
12860         first = false;
12861         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4;
12862     }
12863     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1)) {
12864         os += (first ? "" : " | ");
12865         os += "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1";
12866         first = false;
12867         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1;
12868     }
12869     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2)) {
12870         os += (first ? "" : " | ");
12871         os += "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2";
12872         first = false;
12873         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2;
12874     }
12875     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3)) {
12876         os += (first ? "" : " | ");
12877         os += "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3";
12878         first = false;
12879         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3;
12880     }
12881     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4)) {
12882         os += (first ? "" : " | ");
12883         os += "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4";
12884         first = false;
12885         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4;
12886     }
12887     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_ACCELERATOR_PEDAL_POSITION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_ACCELERATOR_PEDAL_POSITION)) {
12888         os += (first ? "" : " | ");
12889         os += "RELATIVE_ACCELERATOR_PEDAL_POSITION";
12890         first = false;
12891         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_ACCELERATOR_PEDAL_POSITION;
12892     }
12893     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::HYBRID_BATTERY_PACK_REMAINING_LIFE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::HYBRID_BATTERY_PACK_REMAINING_LIFE)) {
12894         os += (first ? "" : " | ");
12895         os += "HYBRID_BATTERY_PACK_REMAINING_LIFE";
12896         first = false;
12897         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::HYBRID_BATTERY_PACK_REMAINING_LIFE;
12898     }
12899     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_INJECTION_TIMING) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_INJECTION_TIMING)) {
12900         os += (first ? "" : " | ");
12901         os += "FUEL_INJECTION_TIMING";
12902         first = false;
12903         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_INJECTION_TIMING;
12904     }
12905     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_FUEL_RATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_FUEL_RATE)) {
12906         os += (first ? "" : " | ");
12907         os += "ENGINE_FUEL_RATE";
12908         first = false;
12909         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_FUEL_RATE;
12910     }
12911     if ((o & ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LAST_SYSTEM_INDEX) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LAST_SYSTEM_INDEX)) {
12912         os += (first ? "" : " | ");
12913         os += "LAST_SYSTEM_INDEX";
12914         first = false;
12915         flipped |= ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LAST_SYSTEM_INDEX;
12916     }
12917     if (o != flipped) {
12918         os += (first ? "" : " | ");
12919         os += toHexString(o & (~flipped));
12920     }os += " (";
12921     os += toHexString(o);
12922     os += ")";
12923     return os;
12924 }
12925 
toString(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex o)12926 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex o) {
12927     using ::android::hardware::details::toHexString;
12928     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CALCULATED_ENGINE_LOAD) {
12929         return "CALCULATED_ENGINE_LOAD";
12930     }
12931     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_COOLANT_TEMPERATURE) {
12932         return "ENGINE_COOLANT_TEMPERATURE";
12933     }
12934     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK1) {
12935         return "SHORT_TERM_FUEL_TRIM_BANK1";
12936     }
12937     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK1) {
12938         return "LONG_TERM_FUEL_TRIM_BANK1";
12939     }
12940     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_FUEL_TRIM_BANK2) {
12941         return "SHORT_TERM_FUEL_TRIM_BANK2";
12942     }
12943     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_FUEL_TRIM_BANK2) {
12944         return "LONG_TERM_FUEL_TRIM_BANK2";
12945     }
12946     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_PRESSURE) {
12947         return "FUEL_PRESSURE";
12948     }
12949     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::INTAKE_MANIFOLD_ABSOLUTE_PRESSURE) {
12950         return "INTAKE_MANIFOLD_ABSOLUTE_PRESSURE";
12951     }
12952     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_RPM) {
12953         return "ENGINE_RPM";
12954     }
12955     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::VEHICLE_SPEED) {
12956         return "VEHICLE_SPEED";
12957     }
12958     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::TIMING_ADVANCE) {
12959         return "TIMING_ADVANCE";
12960     }
12961     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::MAF_AIR_FLOW_RATE) {
12962         return "MAF_AIR_FLOW_RATE";
12963     }
12964     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::THROTTLE_POSITION) {
12965         return "THROTTLE_POSITION";
12966     }
12967     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_VOLTAGE) {
12968         return "OXYGEN_SENSOR1_VOLTAGE";
12969     }
12970     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM) {
12971         return "OXYGEN_SENSOR1_SHORT_TERM_FUEL_TRIM";
12972     }
12973     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO) {
12974         return "OXYGEN_SENSOR1_FUEL_AIR_EQUIVALENCE_RATIO";
12975     }
12976     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_VOLTAGE) {
12977         return "OXYGEN_SENSOR2_VOLTAGE";
12978     }
12979     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM) {
12980         return "OXYGEN_SENSOR2_SHORT_TERM_FUEL_TRIM";
12981     }
12982     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO) {
12983         return "OXYGEN_SENSOR2_FUEL_AIR_EQUIVALENCE_RATIO";
12984     }
12985     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_VOLTAGE) {
12986         return "OXYGEN_SENSOR3_VOLTAGE";
12987     }
12988     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM) {
12989         return "OXYGEN_SENSOR3_SHORT_TERM_FUEL_TRIM";
12990     }
12991     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO) {
12992         return "OXYGEN_SENSOR3_FUEL_AIR_EQUIVALENCE_RATIO";
12993     }
12994     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_VOLTAGE) {
12995         return "OXYGEN_SENSOR4_VOLTAGE";
12996     }
12997     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM) {
12998         return "OXYGEN_SENSOR4_SHORT_TERM_FUEL_TRIM";
12999     }
13000     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO) {
13001         return "OXYGEN_SENSOR4_FUEL_AIR_EQUIVALENCE_RATIO";
13002     }
13003     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_VOLTAGE) {
13004         return "OXYGEN_SENSOR5_VOLTAGE";
13005     }
13006     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM) {
13007         return "OXYGEN_SENSOR5_SHORT_TERM_FUEL_TRIM";
13008     }
13009     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO) {
13010         return "OXYGEN_SENSOR5_FUEL_AIR_EQUIVALENCE_RATIO";
13011     }
13012     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_VOLTAGE) {
13013         return "OXYGEN_SENSOR6_VOLTAGE";
13014     }
13015     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM) {
13016         return "OXYGEN_SENSOR6_SHORT_TERM_FUEL_TRIM";
13017     }
13018     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO) {
13019         return "OXYGEN_SENSOR6_FUEL_AIR_EQUIVALENCE_RATIO";
13020     }
13021     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_VOLTAGE) {
13022         return "OXYGEN_SENSOR7_VOLTAGE";
13023     }
13024     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM) {
13025         return "OXYGEN_SENSOR7_SHORT_TERM_FUEL_TRIM";
13026     }
13027     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO) {
13028         return "OXYGEN_SENSOR7_FUEL_AIR_EQUIVALENCE_RATIO";
13029     }
13030     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_VOLTAGE) {
13031         return "OXYGEN_SENSOR8_VOLTAGE";
13032     }
13033     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM) {
13034         return "OXYGEN_SENSOR8_SHORT_TERM_FUEL_TRIM";
13035     }
13036     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO) {
13037         return "OXYGEN_SENSOR8_FUEL_AIR_EQUIVALENCE_RATIO";
13038     }
13039     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_PRESSURE) {
13040         return "FUEL_RAIL_PRESSURE";
13041     }
13042     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_RAIL_GAUGE_PRESSURE) {
13043         return "FUEL_RAIL_GAUGE_PRESSURE";
13044     }
13045     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EXHAUST_GAS_RECIRCULATION) {
13046         return "COMMANDED_EXHAUST_GAS_RECIRCULATION";
13047     }
13048     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EXHAUST_GAS_RECIRCULATION_ERROR) {
13049         return "EXHAUST_GAS_RECIRCULATION_ERROR";
13050     }
13051     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_EVAPORATIVE_PURGE) {
13052         return "COMMANDED_EVAPORATIVE_PURGE";
13053     }
13054     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_TANK_LEVEL_INPUT) {
13055         return "FUEL_TANK_LEVEL_INPUT";
13056     }
13057     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::EVAPORATION_SYSTEM_VAPOR_PRESSURE) {
13058         return "EVAPORATION_SYSTEM_VAPOR_PRESSURE";
13059     }
13060     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR1) {
13061         return "CATALYST_TEMPERATURE_BANK1_SENSOR1";
13062     }
13063     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR1) {
13064         return "CATALYST_TEMPERATURE_BANK2_SENSOR1";
13065     }
13066     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK1_SENSOR2) {
13067         return "CATALYST_TEMPERATURE_BANK1_SENSOR2";
13068     }
13069     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::CATALYST_TEMPERATURE_BANK2_SENSOR2) {
13070         return "CATALYST_TEMPERATURE_BANK2_SENSOR2";
13071     }
13072     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_LOAD_VALUE) {
13073         return "ABSOLUTE_LOAD_VALUE";
13074     }
13075     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO) {
13076         return "FUEL_AIR_COMMANDED_EQUIVALENCE_RATIO";
13077     }
13078     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_THROTTLE_POSITION) {
13079         return "RELATIVE_THROTTLE_POSITION";
13080     }
13081     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_B) {
13082         return "ABSOLUTE_THROTTLE_POSITION_B";
13083     }
13084     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_THROTTLE_POSITION_C) {
13085         return "ABSOLUTE_THROTTLE_POSITION_C";
13086     }
13087     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_D) {
13088         return "ACCELERATOR_PEDAL_POSITION_D";
13089     }
13090     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_E) {
13091         return "ACCELERATOR_PEDAL_POSITION_E";
13092     }
13093     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ACCELERATOR_PEDAL_POSITION_F) {
13094         return "ACCELERATOR_PEDAL_POSITION_F";
13095     }
13096     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::COMMANDED_THROTTLE_ACTUATOR) {
13097         return "COMMANDED_THROTTLE_ACTUATOR";
13098     }
13099     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ETHANOL_FUEL_PERCENTAGE) {
13100         return "ETHANOL_FUEL_PERCENTAGE";
13101     }
13102     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE) {
13103         return "ABSOLUTE_EVAPORATION_SYSTEM_VAPOR_PRESSURE";
13104     }
13105     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1) {
13106         return "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1";
13107     }
13108     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2) {
13109         return "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2";
13110     }
13111     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3) {
13112         return "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3";
13113     }
13114     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4) {
13115         return "SHORT_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4";
13116     }
13117     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1) {
13118         return "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK1";
13119     }
13120     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2) {
13121         return "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK2";
13122     }
13123     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3) {
13124         return "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK3";
13125     }
13126     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4) {
13127         return "LONG_TERM_SECONDARY_OXYGEN_SENSOR_TRIM_BANK4";
13128     }
13129     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::RELATIVE_ACCELERATOR_PEDAL_POSITION) {
13130         return "RELATIVE_ACCELERATOR_PEDAL_POSITION";
13131     }
13132     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::HYBRID_BATTERY_PACK_REMAINING_LIFE) {
13133         return "HYBRID_BATTERY_PACK_REMAINING_LIFE";
13134     }
13135     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::FUEL_INJECTION_TIMING) {
13136         return "FUEL_INJECTION_TIMING";
13137     }
13138     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::ENGINE_FUEL_RATE) {
13139         return "ENGINE_FUEL_RATE";
13140     }
13141     if (o == ::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex::LAST_SYSTEM_INDEX) {
13142         return "LAST_SYSTEM_INDEX";
13143     }
13144     std::string os;
13145     os += toHexString(static_cast<int32_t>(o));
13146     return os;
13147 }
13148 
PrintTo(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex o,::std::ostream * os)13149 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::DiagnosticFloatSensorIndex o, ::std::ostream* os) {
13150     *os << toString(o);
13151 }
13152 
13153 template<>
13154 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsMessageType>(int32_t o) {
13155     using ::android::hardware::details::toHexString;
13156     std::string os;
13157     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsMessageType> flipped = 0;
13158     bool first = true;
13159     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE)) {
13160         os += (first ? "" : " | ");
13161         os += "SUBSCRIBE";
13162         first = false;
13163         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE;
13164     }
13165     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE_TO_PUBLISHER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE_TO_PUBLISHER)) {
13166         os += (first ? "" : " | ");
13167         os += "SUBSCRIBE_TO_PUBLISHER";
13168         first = false;
13169         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE_TO_PUBLISHER;
13170     }
13171     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE)) {
13172         os += (first ? "" : " | ");
13173         os += "UNSUBSCRIBE";
13174         first = false;
13175         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE;
13176     }
13177     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE_TO_PUBLISHER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE_TO_PUBLISHER)) {
13178         os += (first ? "" : " | ");
13179         os += "UNSUBSCRIBE_TO_PUBLISHER";
13180         first = false;
13181         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE_TO_PUBLISHER;
13182     }
13183     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::OFFERING) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::OFFERING)) {
13184         os += (first ? "" : " | ");
13185         os += "OFFERING";
13186         first = false;
13187         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::OFFERING;
13188     }
13189     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_REQUEST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_REQUEST)) {
13190         os += (first ? "" : " | ");
13191         os += "AVAILABILITY_REQUEST";
13192         first = false;
13193         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_REQUEST;
13194     }
13195     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_REQUEST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_REQUEST)) {
13196         os += (first ? "" : " | ");
13197         os += "SUBSCRIPTIONS_REQUEST";
13198         first = false;
13199         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_REQUEST;
13200     }
13201     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_RESPONSE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_RESPONSE)) {
13202         os += (first ? "" : " | ");
13203         os += "AVAILABILITY_RESPONSE";
13204         first = false;
13205         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_RESPONSE;
13206     }
13207     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_CHANGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_CHANGE)) {
13208         os += (first ? "" : " | ");
13209         os += "AVAILABILITY_CHANGE";
13210         first = false;
13211         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_CHANGE;
13212     }
13213     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_RESPONSE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_RESPONSE)) {
13214         os += (first ? "" : " | ");
13215         os += "SUBSCRIPTIONS_RESPONSE";
13216         first = false;
13217         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_RESPONSE;
13218     }
13219     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_CHANGE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_CHANGE)) {
13220         os += (first ? "" : " | ");
13221         os += "SUBSCRIPTIONS_CHANGE";
13222         first = false;
13223         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_CHANGE;
13224     }
13225     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::DATA) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::DATA)) {
13226         os += (first ? "" : " | ");
13227         os += "DATA";
13228         first = false;
13229         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::DATA;
13230     }
13231     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_REQUEST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_REQUEST)) {
13232         os += (first ? "" : " | ");
13233         os += "PUBLISHER_ID_REQUEST";
13234         first = false;
13235         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_REQUEST;
13236     }
13237     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_RESPONSE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_RESPONSE)) {
13238         os += (first ? "" : " | ");
13239         os += "PUBLISHER_ID_RESPONSE";
13240         first = false;
13241         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_RESPONSE;
13242     }
13243     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_REQUEST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_REQUEST)) {
13244         os += (first ? "" : " | ");
13245         os += "PUBLISHER_INFORMATION_REQUEST";
13246         first = false;
13247         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_REQUEST;
13248     }
13249     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_RESPONSE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_RESPONSE)) {
13250         os += (first ? "" : " | ");
13251         os += "PUBLISHER_INFORMATION_RESPONSE";
13252         first = false;
13253         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_RESPONSE;
13254     }
13255     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::START_SESSION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::START_SESSION)) {
13256         os += (first ? "" : " | ");
13257         os += "START_SESSION";
13258         first = false;
13259         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::START_SESSION;
13260     }
13261     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::LAST_VMS_MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageType::LAST_VMS_MESSAGE_TYPE)) {
13262         os += (first ? "" : " | ");
13263         os += "LAST_VMS_MESSAGE_TYPE";
13264         first = false;
13265         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::LAST_VMS_MESSAGE_TYPE;
13266     }
13267     if (o != flipped) {
13268         os += (first ? "" : " | ");
13269         os += toHexString(o & (~flipped));
13270     }os += " (";
13271     os += toHexString(o);
13272     os += ")";
13273     return os;
13274 }
13275 
toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageType o)13276 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageType o) {
13277     using ::android::hardware::details::toHexString;
13278     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE) {
13279         return "SUBSCRIBE";
13280     }
13281     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIBE_TO_PUBLISHER) {
13282         return "SUBSCRIBE_TO_PUBLISHER";
13283     }
13284     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE) {
13285         return "UNSUBSCRIBE";
13286     }
13287     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::UNSUBSCRIBE_TO_PUBLISHER) {
13288         return "UNSUBSCRIBE_TO_PUBLISHER";
13289     }
13290     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::OFFERING) {
13291         return "OFFERING";
13292     }
13293     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_REQUEST) {
13294         return "AVAILABILITY_REQUEST";
13295     }
13296     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_REQUEST) {
13297         return "SUBSCRIPTIONS_REQUEST";
13298     }
13299     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_RESPONSE) {
13300         return "AVAILABILITY_RESPONSE";
13301     }
13302     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::AVAILABILITY_CHANGE) {
13303         return "AVAILABILITY_CHANGE";
13304     }
13305     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_RESPONSE) {
13306         return "SUBSCRIPTIONS_RESPONSE";
13307     }
13308     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::SUBSCRIPTIONS_CHANGE) {
13309         return "SUBSCRIPTIONS_CHANGE";
13310     }
13311     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::DATA) {
13312         return "DATA";
13313     }
13314     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_REQUEST) {
13315         return "PUBLISHER_ID_REQUEST";
13316     }
13317     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_ID_RESPONSE) {
13318         return "PUBLISHER_ID_RESPONSE";
13319     }
13320     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_REQUEST) {
13321         return "PUBLISHER_INFORMATION_REQUEST";
13322     }
13323     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::PUBLISHER_INFORMATION_RESPONSE) {
13324         return "PUBLISHER_INFORMATION_RESPONSE";
13325     }
13326     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::START_SESSION) {
13327         return "START_SESSION";
13328     }
13329     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageType::LAST_VMS_MESSAGE_TYPE) {
13330         return "LAST_VMS_MESSAGE_TYPE";
13331     }
13332     std::string os;
13333     os += toHexString(static_cast<int32_t>(o));
13334     return os;
13335 }
13336 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageType o,::std::ostream * os)13337 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageType o, ::std::ostream* os) {
13338     *os << toString(o);
13339 }
13340 
13341 template<>
13342 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex>(int32_t o) {
13343     using ::android::hardware::details::toHexString;
13344     std::string os;
13345     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex> flipped = 0;
13346     bool first = true;
13347     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex::MESSAGE_TYPE)) {
13348         os += (first ? "" : " | ");
13349         os += "MESSAGE_TYPE";
13350         first = false;
13351         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex::MESSAGE_TYPE;
13352     }
13353     if (o != flipped) {
13354         os += (first ? "" : " | ");
13355         os += toHexString(o & (~flipped));
13356     }os += " (";
13357     os += toHexString(o);
13358     os += ")";
13359     return os;
13360 }
13361 
toString(::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex o)13362 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex o) {
13363     using ::android::hardware::details::toHexString;
13364     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex::MESSAGE_TYPE) {
13365         return "MESSAGE_TYPE";
13366     }
13367     std::string os;
13368     os += toHexString(static_cast<int32_t>(o));
13369     return os;
13370 }
13371 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex o,::std::ostream * os)13372 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsBaseMessageIntegerValuesIndex o, ::std::ostream* os) {
13373     *os << toString(o);
13374 }
13375 
13376 template<>
13377 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex>(int32_t o) {
13378     using ::android::hardware::details::toHexString;
13379     std::string os;
13380     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex> flipped = 0;
13381     bool first = true;
13382     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::MESSAGE_TYPE)) {
13383         os += (first ? "" : " | ");
13384         os += "MESSAGE_TYPE";
13385         first = false;
13386         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::MESSAGE_TYPE;
13387     }
13388     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::SERVICE_ID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::SERVICE_ID)) {
13389         os += (first ? "" : " | ");
13390         os += "SERVICE_ID";
13391         first = false;
13392         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::SERVICE_ID;
13393     }
13394     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::CLIENT_ID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::CLIENT_ID)) {
13395         os += (first ? "" : " | ");
13396         os += "CLIENT_ID";
13397         first = false;
13398         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::CLIENT_ID;
13399     }
13400     if (o != flipped) {
13401         os += (first ? "" : " | ");
13402         os += toHexString(o & (~flipped));
13403     }os += " (";
13404     os += toHexString(o);
13405     os += ")";
13406     return os;
13407 }
13408 
toString(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex o)13409 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex o) {
13410     using ::android::hardware::details::toHexString;
13411     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::MESSAGE_TYPE) {
13412         return "MESSAGE_TYPE";
13413     }
13414     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::SERVICE_ID) {
13415         return "SERVICE_ID";
13416     }
13417     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex::CLIENT_ID) {
13418         return "CLIENT_ID";
13419     }
13420     std::string os;
13421     os += toHexString(static_cast<int32_t>(o));
13422     return os;
13423 }
13424 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex o,::std::ostream * os)13425 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsStartSessionMessageIntegerValuesIndex o, ::std::ostream* os) {
13426     *os << toString(o);
13427 }
13428 
13429 template<>
13430 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex>(int32_t o) {
13431     using ::android::hardware::details::toHexString;
13432     std::string os;
13433     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex> flipped = 0;
13434     bool first = true;
13435     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::MESSAGE_TYPE)) {
13436         os += (first ? "" : " | ");
13437         os += "MESSAGE_TYPE";
13438         first = false;
13439         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::MESSAGE_TYPE;
13440     }
13441     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_TYPE)) {
13442         os += (first ? "" : " | ");
13443         os += "LAYER_TYPE";
13444         first = false;
13445         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_TYPE;
13446     }
13447     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_SUBTYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_SUBTYPE)) {
13448         os += (first ? "" : " | ");
13449         os += "LAYER_SUBTYPE";
13450         first = false;
13451         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_SUBTYPE;
13452     }
13453     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_VERSION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_VERSION)) {
13454         os += (first ? "" : " | ");
13455         os += "LAYER_VERSION";
13456         first = false;
13457         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_VERSION;
13458     }
13459     if (o != flipped) {
13460         os += (first ? "" : " | ");
13461         os += toHexString(o & (~flipped));
13462     }os += " (";
13463     os += toHexString(o);
13464     os += ")";
13465     return os;
13466 }
13467 
toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex o)13468 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex o) {
13469     using ::android::hardware::details::toHexString;
13470     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::MESSAGE_TYPE) {
13471         return "MESSAGE_TYPE";
13472     }
13473     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_TYPE) {
13474         return "LAYER_TYPE";
13475     }
13476     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_SUBTYPE) {
13477         return "LAYER_SUBTYPE";
13478     }
13479     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex::LAYER_VERSION) {
13480         return "LAYER_VERSION";
13481     }
13482     std::string os;
13483     os += toHexString(static_cast<int32_t>(o));
13484     return os;
13485 }
13486 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex o,::std::ostream * os)13487 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerIntegerValuesIndex o, ::std::ostream* os) {
13488     *os << toString(o);
13489 }
13490 
13491 template<>
13492 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex>(int32_t o) {
13493     using ::android::hardware::details::toHexString;
13494     std::string os;
13495     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex> flipped = 0;
13496     bool first = true;
13497     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::MESSAGE_TYPE)) {
13498         os += (first ? "" : " | ");
13499         os += "MESSAGE_TYPE";
13500         first = false;
13501         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::MESSAGE_TYPE;
13502     }
13503     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_TYPE)) {
13504         os += (first ? "" : " | ");
13505         os += "LAYER_TYPE";
13506         first = false;
13507         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_TYPE;
13508     }
13509     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_SUBTYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_SUBTYPE)) {
13510         os += (first ? "" : " | ");
13511         os += "LAYER_SUBTYPE";
13512         first = false;
13513         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_SUBTYPE;
13514     }
13515     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_VERSION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_VERSION)) {
13516         os += (first ? "" : " | ");
13517         os += "LAYER_VERSION";
13518         first = false;
13519         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_VERSION;
13520     }
13521     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::PUBLISHER_ID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::PUBLISHER_ID)) {
13522         os += (first ? "" : " | ");
13523         os += "PUBLISHER_ID";
13524         first = false;
13525         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::PUBLISHER_ID;
13526     }
13527     if (o != flipped) {
13528         os += (first ? "" : " | ");
13529         os += toHexString(o & (~flipped));
13530     }os += " (";
13531     os += toHexString(o);
13532     os += ")";
13533     return os;
13534 }
13535 
toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex o)13536 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex o) {
13537     using ::android::hardware::details::toHexString;
13538     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::MESSAGE_TYPE) {
13539         return "MESSAGE_TYPE";
13540     }
13541     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_TYPE) {
13542         return "LAYER_TYPE";
13543     }
13544     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_SUBTYPE) {
13545         return "LAYER_SUBTYPE";
13546     }
13547     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::LAYER_VERSION) {
13548         return "LAYER_VERSION";
13549     }
13550     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex::PUBLISHER_ID) {
13551         return "PUBLISHER_ID";
13552     }
13553     std::string os;
13554     os += toHexString(static_cast<int32_t>(o));
13555     return os;
13556 }
13557 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex o,::std::ostream * os)13558 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsMessageWithLayerAndPublisherIdIntegerValuesIndex o, ::std::ostream* os) {
13559     *os << toString(o);
13560 }
13561 
13562 template<>
13563 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex>(int32_t o) {
13564     using ::android::hardware::details::toHexString;
13565     std::string os;
13566     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex> flipped = 0;
13567     bool first = true;
13568     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::MESSAGE_TYPE)) {
13569         os += (first ? "" : " | ");
13570         os += "MESSAGE_TYPE";
13571         first = false;
13572         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::MESSAGE_TYPE;
13573     }
13574     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::PUBLISHER_ID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::PUBLISHER_ID)) {
13575         os += (first ? "" : " | ");
13576         os += "PUBLISHER_ID";
13577         first = false;
13578         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::PUBLISHER_ID;
13579     }
13580     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::NUMBER_OF_OFFERS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::NUMBER_OF_OFFERS)) {
13581         os += (first ? "" : " | ");
13582         os += "NUMBER_OF_OFFERS";
13583         first = false;
13584         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::NUMBER_OF_OFFERS;
13585     }
13586     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::OFFERING_START) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::OFFERING_START)) {
13587         os += (first ? "" : " | ");
13588         os += "OFFERING_START";
13589         first = false;
13590         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::OFFERING_START;
13591     }
13592     if (o != flipped) {
13593         os += (first ? "" : " | ");
13594         os += toHexString(o & (~flipped));
13595     }os += " (";
13596     os += toHexString(o);
13597     os += ")";
13598     return os;
13599 }
13600 
toString(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex o)13601 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex o) {
13602     using ::android::hardware::details::toHexString;
13603     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::MESSAGE_TYPE) {
13604         return "MESSAGE_TYPE";
13605     }
13606     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::PUBLISHER_ID) {
13607         return "PUBLISHER_ID";
13608     }
13609     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::NUMBER_OF_OFFERS) {
13610         return "NUMBER_OF_OFFERS";
13611     }
13612     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex::OFFERING_START) {
13613         return "OFFERING_START";
13614     }
13615     std::string os;
13616     os += toHexString(static_cast<int32_t>(o));
13617     return os;
13618 }
13619 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex o,::std::ostream * os)13620 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsOfferingMessageIntegerValuesIndex o, ::std::ostream* os) {
13621     *os << toString(o);
13622 }
13623 
13624 template<>
13625 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex>(int32_t o) {
13626     using ::android::hardware::details::toHexString;
13627     std::string os;
13628     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex> flipped = 0;
13629     bool first = true;
13630     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::MESSAGE_TYPE)) {
13631         os += (first ? "" : " | ");
13632         os += "MESSAGE_TYPE";
13633         first = false;
13634         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::MESSAGE_TYPE;
13635     }
13636     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SEQUENCE_NUMBER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SEQUENCE_NUMBER)) {
13637         os += (first ? "" : " | ");
13638         os += "SEQUENCE_NUMBER";
13639         first = false;
13640         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SEQUENCE_NUMBER;
13641     }
13642     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_LAYERS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_LAYERS)) {
13643         os += (first ? "" : " | ");
13644         os += "NUMBER_OF_LAYERS";
13645         first = false;
13646         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_LAYERS;
13647     }
13648     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS)) {
13649         os += (first ? "" : " | ");
13650         os += "NUMBER_OF_ASSOCIATED_LAYERS";
13651         first = false;
13652         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS;
13653     }
13654     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SUBSCRIPTIONS_START) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SUBSCRIPTIONS_START)) {
13655         os += (first ? "" : " | ");
13656         os += "SUBSCRIPTIONS_START";
13657         first = false;
13658         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SUBSCRIPTIONS_START;
13659     }
13660     if (o != flipped) {
13661         os += (first ? "" : " | ");
13662         os += toHexString(o & (~flipped));
13663     }os += " (";
13664     os += toHexString(o);
13665     os += ")";
13666     return os;
13667 }
13668 
toString(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex o)13669 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex o) {
13670     using ::android::hardware::details::toHexString;
13671     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::MESSAGE_TYPE) {
13672         return "MESSAGE_TYPE";
13673     }
13674     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SEQUENCE_NUMBER) {
13675         return "SEQUENCE_NUMBER";
13676     }
13677     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_LAYERS) {
13678         return "NUMBER_OF_LAYERS";
13679     }
13680     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS) {
13681         return "NUMBER_OF_ASSOCIATED_LAYERS";
13682     }
13683     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex::SUBSCRIPTIONS_START) {
13684         return "SUBSCRIPTIONS_START";
13685     }
13686     std::string os;
13687     os += toHexString(static_cast<int32_t>(o));
13688     return os;
13689 }
13690 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex o,::std::ostream * os)13691 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsSubscriptionsStateIntegerValuesIndex o, ::std::ostream* os) {
13692     *os << toString(o);
13693 }
13694 
13695 template<>
13696 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex>(int32_t o) {
13697     using ::android::hardware::details::toHexString;
13698     std::string os;
13699     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex> flipped = 0;
13700     bool first = true;
13701     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::MESSAGE_TYPE)) {
13702         os += (first ? "" : " | ");
13703         os += "MESSAGE_TYPE";
13704         first = false;
13705         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::MESSAGE_TYPE;
13706     }
13707     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::SEQUENCE_NUMBER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::SEQUENCE_NUMBER)) {
13708         os += (first ? "" : " | ");
13709         os += "SEQUENCE_NUMBER";
13710         first = false;
13711         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::SEQUENCE_NUMBER;
13712     }
13713     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS)) {
13714         os += (first ? "" : " | ");
13715         os += "NUMBER_OF_ASSOCIATED_LAYERS";
13716         first = false;
13717         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS;
13718     }
13719     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::LAYERS_START) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::LAYERS_START)) {
13720         os += (first ? "" : " | ");
13721         os += "LAYERS_START";
13722         first = false;
13723         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::LAYERS_START;
13724     }
13725     if (o != flipped) {
13726         os += (first ? "" : " | ");
13727         os += toHexString(o & (~flipped));
13728     }os += " (";
13729     os += toHexString(o);
13730     os += ")";
13731     return os;
13732 }
13733 
toString(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex o)13734 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex o) {
13735     using ::android::hardware::details::toHexString;
13736     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::MESSAGE_TYPE) {
13737         return "MESSAGE_TYPE";
13738     }
13739     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::SEQUENCE_NUMBER) {
13740         return "SEQUENCE_NUMBER";
13741     }
13742     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::NUMBER_OF_ASSOCIATED_LAYERS) {
13743         return "NUMBER_OF_ASSOCIATED_LAYERS";
13744     }
13745     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex::LAYERS_START) {
13746         return "LAYERS_START";
13747     }
13748     std::string os;
13749     os += toHexString(static_cast<int32_t>(o));
13750     return os;
13751 }
13752 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex o,::std::ostream * os)13753 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsAvailabilityStateIntegerValuesIndex o, ::std::ostream* os) {
13754     *os << toString(o);
13755 }
13756 
13757 template<>
13758 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex>(int32_t o) {
13759     using ::android::hardware::details::toHexString;
13760     std::string os;
13761     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex> flipped = 0;
13762     bool first = true;
13763     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::MESSAGE_TYPE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::MESSAGE_TYPE)) {
13764         os += (first ? "" : " | ");
13765         os += "MESSAGE_TYPE";
13766         first = false;
13767         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::MESSAGE_TYPE;
13768     }
13769     if ((o & ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::PUBLISHER_ID) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::PUBLISHER_ID)) {
13770         os += (first ? "" : " | ");
13771         os += "PUBLISHER_ID";
13772         first = false;
13773         flipped |= ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::PUBLISHER_ID;
13774     }
13775     if (o != flipped) {
13776         os += (first ? "" : " | ");
13777         os += toHexString(o & (~flipped));
13778     }os += " (";
13779     os += toHexString(o);
13780     os += ")";
13781     return os;
13782 }
13783 
toString(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex o)13784 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex o) {
13785     using ::android::hardware::details::toHexString;
13786     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::MESSAGE_TYPE) {
13787         return "MESSAGE_TYPE";
13788     }
13789     if (o == ::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex::PUBLISHER_ID) {
13790         return "PUBLISHER_ID";
13791     }
13792     std::string os;
13793     os += toHexString(static_cast<int32_t>(o));
13794     return os;
13795 }
13796 
PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex o,::std::ostream * os)13797 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::VmsPublisherInformationIntegerValuesIndex o, ::std::ostream* os) {
13798     *os << toString(o);
13799 }
13800 
13801 template<>
13802 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::UserFlags>(int32_t o) {
13803     using ::android::hardware::details::toHexString;
13804     std::string os;
13805     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::UserFlags> flipped = 0;
13806     bool first = true;
13807     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserFlags::NONE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserFlags::NONE)) {
13808         os += (first ? "" : " | ");
13809         os += "NONE";
13810         first = false;
13811         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::NONE;
13812     }
13813     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserFlags::SYSTEM) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserFlags::SYSTEM)) {
13814         os += (first ? "" : " | ");
13815         os += "SYSTEM";
13816         first = false;
13817         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::SYSTEM;
13818     }
13819     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserFlags::GUEST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserFlags::GUEST)) {
13820         os += (first ? "" : " | ");
13821         os += "GUEST";
13822         first = false;
13823         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::GUEST;
13824     }
13825     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserFlags::EPHEMERAL) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserFlags::EPHEMERAL)) {
13826         os += (first ? "" : " | ");
13827         os += "EPHEMERAL";
13828         first = false;
13829         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::EPHEMERAL;
13830     }
13831     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserFlags::ADMIN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserFlags::ADMIN)) {
13832         os += (first ? "" : " | ");
13833         os += "ADMIN";
13834         first = false;
13835         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserFlags::ADMIN;
13836     }
13837     if (o != flipped) {
13838         os += (first ? "" : " | ");
13839         os += toHexString(o & (~flipped));
13840     }os += " (";
13841     os += toHexString(o);
13842     os += ")";
13843     return os;
13844 }
13845 
toString(::android::hardware::automotive::vehicle::V2_0::UserFlags o)13846 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserFlags o) {
13847     using ::android::hardware::details::toHexString;
13848     if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::NONE) {
13849         return "NONE";
13850     }
13851     if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::SYSTEM) {
13852         return "SYSTEM";
13853     }
13854     if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::GUEST) {
13855         return "GUEST";
13856     }
13857     if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::EPHEMERAL) {
13858         return "EPHEMERAL";
13859     }
13860     if (o == ::android::hardware::automotive::vehicle::V2_0::UserFlags::ADMIN) {
13861         return "ADMIN";
13862     }
13863     std::string os;
13864     os += toHexString(static_cast<int32_t>(o));
13865     return os;
13866 }
13867 
PrintTo(::android::hardware::automotive::vehicle::V2_0::UserFlags o,::std::ostream * os)13868 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserFlags o, ::std::ostream* os) {
13869     *os << toString(o);
13870 }
13871 
toString(const::android::hardware::automotive::vehicle::V2_0::UserInfo & o)13872 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& o) {
13873     using ::android::hardware::toString;
13874     std::string os;
13875     os += "{";
13876     os += ".userId = ";
13877     os += ::android::hardware::toString(o.userId);
13878     os += ", .flags = ";
13879     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.flags);
13880     os += "}"; return os;
13881 }
13882 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::UserInfo & o,::std::ostream * os)13883 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& o, ::std::ostream* os) {
13884     *os << toString(o);
13885 }
13886 
13887 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserInfo& rhs) {
13888     if (lhs.userId != rhs.userId) {
13889         return false;
13890     }
13891     if (lhs.flags != rhs.flags) {
13892         return false;
13893     }
13894     return true;
13895 }
13896 
13897 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserInfo& rhs){
13898     return !(lhs == rhs);
13899 }
13900 
toString(const::android::hardware::automotive::vehicle::V2_0::UsersInfo & o)13901 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& o) {
13902     using ::android::hardware::toString;
13903     std::string os;
13904     os += "{";
13905     os += ".currentUser = ";
13906     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.currentUser);
13907     os += ", .numberUsers = ";
13908     os += ::android::hardware::toString(o.numberUsers);
13909     os += ", .existingUsers = ";
13910     os += ::android::hardware::toString(o.existingUsers);
13911     os += "}"; return os;
13912 }
13913 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::UsersInfo & o,::std::ostream * os)13914 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& o, ::std::ostream* os) {
13915     *os << toString(o);
13916 }
13917 
13918 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& rhs) {
13919     if (lhs.currentUser != rhs.currentUser) {
13920         return false;
13921     }
13922     if (lhs.numberUsers != rhs.numberUsers) {
13923         return false;
13924     }
13925     if (lhs.existingUsers != rhs.existingUsers) {
13926         return false;
13927     }
13928     return true;
13929 }
13930 
13931 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& lhs, const ::android::hardware::automotive::vehicle::V2_0::UsersInfo& rhs){
13932     return !(lhs == rhs);
13933 }
13934 
13935 template<>
13936 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType>(int32_t o) {
13937     using ::android::hardware::details::toHexString;
13938     std::string os;
13939     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType> flipped = 0;
13940     bool first = true;
13941     if ((o & ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT)) {
13942         os += (first ? "" : " | ");
13943         os += "FIRST_BOOT";
13944         first = false;
13945         flipped |= ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT;
13946     }
13947     if ((o & ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT_AFTER_OTA) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT_AFTER_OTA)) {
13948         os += (first ? "" : " | ");
13949         os += "FIRST_BOOT_AFTER_OTA";
13950         first = false;
13951         flipped |= ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT_AFTER_OTA;
13952     }
13953     if ((o & ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::COLD_BOOT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::COLD_BOOT)) {
13954         os += (first ? "" : " | ");
13955         os += "COLD_BOOT";
13956         first = false;
13957         flipped |= ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::COLD_BOOT;
13958     }
13959     if ((o & ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::RESUME) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::RESUME)) {
13960         os += (first ? "" : " | ");
13961         os += "RESUME";
13962         first = false;
13963         flipped |= ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::RESUME;
13964     }
13965     if (o != flipped) {
13966         os += (first ? "" : " | ");
13967         os += toHexString(o & (~flipped));
13968     }os += " (";
13969     os += toHexString(o);
13970     os += ")";
13971     return os;
13972 }
13973 
toString(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType o)13974 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType o) {
13975     using ::android::hardware::details::toHexString;
13976     if (o == ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT) {
13977         return "FIRST_BOOT";
13978     }
13979     if (o == ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::FIRST_BOOT_AFTER_OTA) {
13980         return "FIRST_BOOT_AFTER_OTA";
13981     }
13982     if (o == ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::COLD_BOOT) {
13983         return "COLD_BOOT";
13984     }
13985     if (o == ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType::RESUME) {
13986         return "RESUME";
13987     }
13988     std::string os;
13989     os += toHexString(static_cast<int32_t>(o));
13990     return os;
13991 }
13992 
PrintTo(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType o,::std::ostream * os)13993 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequestType o, ::std::ostream* os) {
13994     *os << toString(o);
13995 }
13996 
toString(const::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest & o)13997 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& o) {
13998     using ::android::hardware::toString;
13999     std::string os;
14000     os += "{";
14001     os += ".requestId = ";
14002     os += ::android::hardware::toString(o.requestId);
14003     os += ", .requestType = ";
14004     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.requestType);
14005     os += ", .usersInfo = ";
14006     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.usersInfo);
14007     os += "}"; return os;
14008 }
14009 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest & o,::std::ostream * os)14010 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& o, ::std::ostream* os) {
14011     *os << toString(o);
14012 }
14013 
14014 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& rhs) {
14015     if (lhs.requestId != rhs.requestId) {
14016         return false;
14017     }
14018     if (lhs.requestType != rhs.requestType) {
14019         return false;
14020     }
14021     if (lhs.usersInfo != rhs.usersInfo) {
14022         return false;
14023     }
14024     return true;
14025 }
14026 
14027 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoRequest& rhs){
14028     return !(lhs == rhs);
14029 }
14030 
14031 template<>
14032 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction>(int32_t o) {
14033     using ::android::hardware::details::toHexString;
14034     std::string os;
14035     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction> flipped = 0;
14036     bool first = true;
14037     if ((o & ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::DEFAULT) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::DEFAULT)) {
14038         os += (first ? "" : " | ");
14039         os += "DEFAULT";
14040         first = false;
14041         flipped |= ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::DEFAULT;
14042     }
14043     if ((o & ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::SWITCH)) {
14044         os += (first ? "" : " | ");
14045         os += "SWITCH";
14046         first = false;
14047         flipped |= ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::SWITCH;
14048     }
14049     if ((o & ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::CREATE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::CREATE)) {
14050         os += (first ? "" : " | ");
14051         os += "CREATE";
14052         first = false;
14053         flipped |= ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::CREATE;
14054     }
14055     if (o != flipped) {
14056         os += (first ? "" : " | ");
14057         os += toHexString(o & (~flipped));
14058     }os += " (";
14059     os += toHexString(o);
14060     os += ")";
14061     return os;
14062 }
14063 
toString(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction o)14064 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction o) {
14065     using ::android::hardware::details::toHexString;
14066     if (o == ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::DEFAULT) {
14067         return "DEFAULT";
14068     }
14069     if (o == ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::SWITCH) {
14070         return "SWITCH";
14071     }
14072     if (o == ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction::CREATE) {
14073         return "CREATE";
14074     }
14075     std::string os;
14076     os += toHexString(static_cast<int32_t>(o));
14077     return os;
14078 }
14079 
PrintTo(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction o,::std::ostream * os)14080 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponseAction o, ::std::ostream* os) {
14081     *os << toString(o);
14082 }
14083 
toString(const::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse & o)14084 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& o) {
14085     using ::android::hardware::toString;
14086     std::string os;
14087     os += "{";
14088     os += ".requestId = ";
14089     os += ::android::hardware::toString(o.requestId);
14090     os += ", .action = ";
14091     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.action);
14092     os += ", .userToSwitchOrCreate = ";
14093     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.userToSwitchOrCreate);
14094     os += ", .userNameToCreate = ";
14095     os += ::android::hardware::toString(o.userNameToCreate);
14096     os += "}"; return os;
14097 }
14098 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse & o,::std::ostream * os)14099 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& o, ::std::ostream* os) {
14100     *os << toString(o);
14101 }
14102 
14103 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& rhs) {
14104     if (lhs.requestId != rhs.requestId) {
14105         return false;
14106     }
14107     if (lhs.action != rhs.action) {
14108         return false;
14109     }
14110     if (lhs.userToSwitchOrCreate != rhs.userToSwitchOrCreate) {
14111         return false;
14112     }
14113     if (lhs.userNameToCreate != rhs.userNameToCreate) {
14114         return false;
14115     }
14116     return true;
14117 }
14118 
14119 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::InitialUserInfoResponse& rhs){
14120     return !(lhs == rhs);
14121 }
14122 
14123 template<>
14124 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType>(int32_t o) {
14125     using ::android::hardware::details::toHexString;
14126     std::string os;
14127     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType> flipped = 0;
14128     bool first = true;
14129     if ((o & ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::LEGACY_ANDROID_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::LEGACY_ANDROID_SWITCH)) {
14130         os += (first ? "" : " | ");
14131         os += "LEGACY_ANDROID_SWITCH";
14132         first = false;
14133         flipped |= ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::LEGACY_ANDROID_SWITCH;
14134     }
14135     if ((o & ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_SWITCH)) {
14136         os += (first ? "" : " | ");
14137         os += "ANDROID_SWITCH";
14138         first = false;
14139         flipped |= ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_SWITCH;
14140     }
14141     if ((o & ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_RESPONSE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_RESPONSE)) {
14142         os += (first ? "" : " | ");
14143         os += "VEHICLE_RESPONSE";
14144         first = false;
14145         flipped |= ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_RESPONSE;
14146     }
14147     if ((o & ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_REQUEST) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_REQUEST)) {
14148         os += (first ? "" : " | ");
14149         os += "VEHICLE_REQUEST";
14150         first = false;
14151         flipped |= ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_REQUEST;
14152     }
14153     if ((o & ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_POST_SWITCH) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_POST_SWITCH)) {
14154         os += (first ? "" : " | ");
14155         os += "ANDROID_POST_SWITCH";
14156         first = false;
14157         flipped |= ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_POST_SWITCH;
14158     }
14159     if (o != flipped) {
14160         os += (first ? "" : " | ");
14161         os += toHexString(o & (~flipped));
14162     }os += " (";
14163     os += toHexString(o);
14164     os += ")";
14165     return os;
14166 }
14167 
toString(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType o)14168 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType o) {
14169     using ::android::hardware::details::toHexString;
14170     if (o == ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::LEGACY_ANDROID_SWITCH) {
14171         return "LEGACY_ANDROID_SWITCH";
14172     }
14173     if (o == ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_SWITCH) {
14174         return "ANDROID_SWITCH";
14175     }
14176     if (o == ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_RESPONSE) {
14177         return "VEHICLE_RESPONSE";
14178     }
14179     if (o == ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::VEHICLE_REQUEST) {
14180         return "VEHICLE_REQUEST";
14181     }
14182     if (o == ::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType::ANDROID_POST_SWITCH) {
14183         return "ANDROID_POST_SWITCH";
14184     }
14185     std::string os;
14186     os += toHexString(static_cast<int32_t>(o));
14187     return os;
14188 }
14189 
PrintTo(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType o,::std::ostream * os)14190 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::SwitchUserMessageType o, ::std::ostream* os) {
14191     *os << toString(o);
14192 }
14193 
toString(const::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest & o)14194 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& o) {
14195     using ::android::hardware::toString;
14196     std::string os;
14197     os += "{";
14198     os += ".requestId = ";
14199     os += ::android::hardware::toString(o.requestId);
14200     os += ", .messageType = ";
14201     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.messageType);
14202     os += ", .targetUser = ";
14203     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.targetUser);
14204     os += ", .usersInfo = ";
14205     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.usersInfo);
14206     os += "}"; return os;
14207 }
14208 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest & o,::std::ostream * os)14209 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& o, ::std::ostream* os) {
14210     *os << toString(o);
14211 }
14212 
14213 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& rhs) {
14214     if (lhs.requestId != rhs.requestId) {
14215         return false;
14216     }
14217     if (lhs.messageType != rhs.messageType) {
14218         return false;
14219     }
14220     if (lhs.targetUser != rhs.targetUser) {
14221         return false;
14222     }
14223     if (lhs.usersInfo != rhs.usersInfo) {
14224         return false;
14225     }
14226     return true;
14227 }
14228 
14229 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserRequest& rhs){
14230     return !(lhs == rhs);
14231 }
14232 
14233 template<>
14234 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus>(int32_t o) {
14235     using ::android::hardware::details::toHexString;
14236     std::string os;
14237     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus> flipped = 0;
14238     bool first = true;
14239     if ((o & ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::SUCCESS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::SUCCESS)) {
14240         os += (first ? "" : " | ");
14241         os += "SUCCESS";
14242         first = false;
14243         flipped |= ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::SUCCESS;
14244     }
14245     if ((o & ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::FAILURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::FAILURE)) {
14246         os += (first ? "" : " | ");
14247         os += "FAILURE";
14248         first = false;
14249         flipped |= ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::FAILURE;
14250     }
14251     if (o != flipped) {
14252         os += (first ? "" : " | ");
14253         os += toHexString(o & (~flipped));
14254     }os += " (";
14255     os += toHexString(o);
14256     os += ")";
14257     return os;
14258 }
14259 
toString(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus o)14260 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus o) {
14261     using ::android::hardware::details::toHexString;
14262     if (o == ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::SUCCESS) {
14263         return "SUCCESS";
14264     }
14265     if (o == ::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus::FAILURE) {
14266         return "FAILURE";
14267     }
14268     std::string os;
14269     os += toHexString(static_cast<int32_t>(o));
14270     return os;
14271 }
14272 
PrintTo(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus o,::std::ostream * os)14273 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::SwitchUserStatus o, ::std::ostream* os) {
14274     *os << toString(o);
14275 }
14276 
toString(const::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse & o)14277 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& o) {
14278     using ::android::hardware::toString;
14279     std::string os;
14280     os += "{";
14281     os += ".requestId = ";
14282     os += ::android::hardware::toString(o.requestId);
14283     os += ", .messageType = ";
14284     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.messageType);
14285     os += ", .status = ";
14286     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.status);
14287     os += ", .errorMessage = ";
14288     os += ::android::hardware::toString(o.errorMessage);
14289     os += "}"; return os;
14290 }
14291 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse & o,::std::ostream * os)14292 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& o, ::std::ostream* os) {
14293     *os << toString(o);
14294 }
14295 
14296 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& rhs) {
14297     if (lhs.requestId != rhs.requestId) {
14298         return false;
14299     }
14300     if (lhs.messageType != rhs.messageType) {
14301         return false;
14302     }
14303     if (lhs.status != rhs.status) {
14304         return false;
14305     }
14306     if (lhs.errorMessage != rhs.errorMessage) {
14307         return false;
14308     }
14309     return true;
14310 }
14311 
14312 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::SwitchUserResponse& rhs){
14313     return !(lhs == rhs);
14314 }
14315 
toString(const::android::hardware::automotive::vehicle::V2_0::CreateUserRequest & o)14316 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& o) {
14317     using ::android::hardware::toString;
14318     std::string os;
14319     os += "{";
14320     os += ".requestId = ";
14321     os += ::android::hardware::toString(o.requestId);
14322     os += ", .newUserInfo = ";
14323     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.newUserInfo);
14324     os += ", .newUserName = ";
14325     os += ::android::hardware::toString(o.newUserName);
14326     os += ", .usersInfo = ";
14327     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.usersInfo);
14328     os += "}"; return os;
14329 }
14330 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::CreateUserRequest & o,::std::ostream * os)14331 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& o, ::std::ostream* os) {
14332     *os << toString(o);
14333 }
14334 
14335 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& rhs) {
14336     if (lhs.requestId != rhs.requestId) {
14337         return false;
14338     }
14339     if (lhs.newUserInfo != rhs.newUserInfo) {
14340         return false;
14341     }
14342     if (lhs.newUserName != rhs.newUserName) {
14343         return false;
14344     }
14345     if (lhs.usersInfo != rhs.usersInfo) {
14346         return false;
14347     }
14348     return true;
14349 }
14350 
14351 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserRequest& rhs){
14352     return !(lhs == rhs);
14353 }
14354 
14355 template<>
14356 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::CreateUserStatus>(int32_t o) {
14357     using ::android::hardware::details::toHexString;
14358     std::string os;
14359     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::CreateUserStatus> flipped = 0;
14360     bool first = true;
14361     if ((o & ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::SUCCESS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::SUCCESS)) {
14362         os += (first ? "" : " | ");
14363         os += "SUCCESS";
14364         first = false;
14365         flipped |= ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::SUCCESS;
14366     }
14367     if ((o & ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::FAILURE) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::FAILURE)) {
14368         os += (first ? "" : " | ");
14369         os += "FAILURE";
14370         first = false;
14371         flipped |= ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::FAILURE;
14372     }
14373     if (o != flipped) {
14374         os += (first ? "" : " | ");
14375         os += toHexString(o & (~flipped));
14376     }os += " (";
14377     os += toHexString(o);
14378     os += ")";
14379     return os;
14380 }
14381 
toString(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus o)14382 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus o) {
14383     using ::android::hardware::details::toHexString;
14384     if (o == ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::SUCCESS) {
14385         return "SUCCESS";
14386     }
14387     if (o == ::android::hardware::automotive::vehicle::V2_0::CreateUserStatus::FAILURE) {
14388         return "FAILURE";
14389     }
14390     std::string os;
14391     os += toHexString(static_cast<int32_t>(o));
14392     return os;
14393 }
14394 
PrintTo(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus o,::std::ostream * os)14395 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::CreateUserStatus o, ::std::ostream* os) {
14396     *os << toString(o);
14397 }
14398 
toString(const::android::hardware::automotive::vehicle::V2_0::CreateUserResponse & o)14399 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& o) {
14400     using ::android::hardware::toString;
14401     std::string os;
14402     os += "{";
14403     os += ".requestId = ";
14404     os += ::android::hardware::toString(o.requestId);
14405     os += ", .status = ";
14406     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.status);
14407     os += ", .errorMessage = ";
14408     os += ::android::hardware::toString(o.errorMessage);
14409     os += "}"; return os;
14410 }
14411 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::CreateUserResponse & o,::std::ostream * os)14412 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& o, ::std::ostream* os) {
14413     *os << toString(o);
14414 }
14415 
14416 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& rhs) {
14417     if (lhs.requestId != rhs.requestId) {
14418         return false;
14419     }
14420     if (lhs.status != rhs.status) {
14421         return false;
14422     }
14423     if (lhs.errorMessage != rhs.errorMessage) {
14424         return false;
14425     }
14426     return true;
14427 }
14428 
14429 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::CreateUserResponse& rhs){
14430     return !(lhs == rhs);
14431 }
14432 
toString(const::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest & o)14433 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& o) {
14434     using ::android::hardware::toString;
14435     std::string os;
14436     os += "{";
14437     os += ".requestId = ";
14438     os += ::android::hardware::toString(o.requestId);
14439     os += ", .removedUserInfo = ";
14440     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.removedUserInfo);
14441     os += ", .usersInfo = ";
14442     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.usersInfo);
14443     os += "}"; return os;
14444 }
14445 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest & o,::std::ostream * os)14446 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& o, ::std::ostream* os) {
14447     *os << toString(o);
14448 }
14449 
14450 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& rhs) {
14451     if (lhs.requestId != rhs.requestId) {
14452         return false;
14453     }
14454     if (lhs.removedUserInfo != rhs.removedUserInfo) {
14455         return false;
14456     }
14457     if (lhs.usersInfo != rhs.usersInfo) {
14458         return false;
14459     }
14460     return true;
14461 }
14462 
14463 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::RemoveUserRequest& rhs){
14464     return !(lhs == rhs);
14465 }
14466 
14467 template<>
14468 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType>(int32_t o) {
14469     using ::android::hardware::details::toHexString;
14470     std::string os;
14471     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType> flipped = 0;
14472     bool first = true;
14473     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::KEY_FOB) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::KEY_FOB)) {
14474         os += (first ? "" : " | ");
14475         os += "KEY_FOB";
14476         first = false;
14477         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::KEY_FOB;
14478     }
14479     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_1) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_1)) {
14480         os += (first ? "" : " | ");
14481         os += "CUSTOM_1";
14482         first = false;
14483         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_1;
14484     }
14485     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_2) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_2)) {
14486         os += (first ? "" : " | ");
14487         os += "CUSTOM_2";
14488         first = false;
14489         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_2;
14490     }
14491     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_3) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_3)) {
14492         os += (first ? "" : " | ");
14493         os += "CUSTOM_3";
14494         first = false;
14495         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_3;
14496     }
14497     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_4) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_4)) {
14498         os += (first ? "" : " | ");
14499         os += "CUSTOM_4";
14500         first = false;
14501         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_4;
14502     }
14503     if (o != flipped) {
14504         os += (first ? "" : " | ");
14505         os += toHexString(o & (~flipped));
14506     }os += " (";
14507     os += toHexString(o);
14508     os += ")";
14509     return os;
14510 }
14511 
toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType o)14512 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType o) {
14513     using ::android::hardware::details::toHexString;
14514     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::KEY_FOB) {
14515         return "KEY_FOB";
14516     }
14517     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_1) {
14518         return "CUSTOM_1";
14519     }
14520     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_2) {
14521         return "CUSTOM_2";
14522     }
14523     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_3) {
14524         return "CUSTOM_3";
14525     }
14526     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType::CUSTOM_4) {
14527         return "CUSTOM_4";
14528     }
14529     std::string os;
14530     os += toHexString(static_cast<int32_t>(o));
14531     return os;
14532 }
14533 
PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType o,::std::ostream * os)14534 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationType o, ::std::ostream* os) {
14535     *os << toString(o);
14536 }
14537 
14538 template<>
14539 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue>(int32_t o) {
14540     using ::android::hardware::details::toHexString;
14541     std::string os;
14542     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue> flipped = 0;
14543     bool first = true;
14544     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::UNKNOWN) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::UNKNOWN)) {
14545         os += (first ? "" : " | ");
14546         os += "UNKNOWN";
14547         first = false;
14548         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::UNKNOWN;
14549     }
14550     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER)) {
14551         os += (first ? "" : " | ");
14552         os += "ASSOCIATED_CURRENT_USER";
14553         first = false;
14554         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER;
14555     }
14556     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_ANOTHER_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_ANOTHER_USER)) {
14557         os += (first ? "" : " | ");
14558         os += "ASSOCIATED_ANOTHER_USER";
14559         first = false;
14560         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_ANOTHER_USER;
14561     }
14562     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER)) {
14563         os += (first ? "" : " | ");
14564         os += "NOT_ASSOCIATED_ANY_USER";
14565         first = false;
14566         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER;
14567     }
14568     if (o != flipped) {
14569         os += (first ? "" : " | ");
14570         os += toHexString(o & (~flipped));
14571     }os += " (";
14572     os += toHexString(o);
14573     os += ")";
14574     return os;
14575 }
14576 
toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue o)14577 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue o) {
14578     using ::android::hardware::details::toHexString;
14579     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::UNKNOWN) {
14580         return "UNKNOWN";
14581     }
14582     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_CURRENT_USER) {
14583         return "ASSOCIATED_CURRENT_USER";
14584     }
14585     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::ASSOCIATED_ANOTHER_USER) {
14586         return "ASSOCIATED_ANOTHER_USER";
14587     }
14588     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue::NOT_ASSOCIATED_ANY_USER) {
14589         return "NOT_ASSOCIATED_ANY_USER";
14590     }
14591     std::string os;
14592     os += toHexString(static_cast<int32_t>(o));
14593     return os;
14594 }
14595 
PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue o,::std::ostream * os)14596 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationValue o, ::std::ostream* os) {
14597     *os << toString(o);
14598 }
14599 
14600 template<>
14601 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue>(int32_t o) {
14602     using ::android::hardware::details::toHexString;
14603     std::string os;
14604     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue> flipped = 0;
14605     bool first = true;
14606     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::ASSOCIATE_CURRENT_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::ASSOCIATE_CURRENT_USER)) {
14607         os += (first ? "" : " | ");
14608         os += "ASSOCIATE_CURRENT_USER";
14609         first = false;
14610         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::ASSOCIATE_CURRENT_USER;
14611     }
14612     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_CURRENT_USER) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_CURRENT_USER)) {
14613         os += (first ? "" : " | ");
14614         os += "DISASSOCIATE_CURRENT_USER";
14615         first = false;
14616         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_CURRENT_USER;
14617     }
14618     if ((o & ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_ALL_USERS) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_ALL_USERS)) {
14619         os += (first ? "" : " | ");
14620         os += "DISASSOCIATE_ALL_USERS";
14621         first = false;
14622         flipped |= ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_ALL_USERS;
14623     }
14624     if (o != flipped) {
14625         os += (first ? "" : " | ");
14626         os += toHexString(o & (~flipped));
14627     }os += " (";
14628     os += toHexString(o);
14629     os += ")";
14630     return os;
14631 }
14632 
toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue o)14633 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue o) {
14634     using ::android::hardware::details::toHexString;
14635     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::ASSOCIATE_CURRENT_USER) {
14636         return "ASSOCIATE_CURRENT_USER";
14637     }
14638     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_CURRENT_USER) {
14639         return "DISASSOCIATE_CURRENT_USER";
14640     }
14641     if (o == ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue::DISASSOCIATE_ALL_USERS) {
14642         return "DISASSOCIATE_ALL_USERS";
14643     }
14644     std::string os;
14645     os += toHexString(static_cast<int32_t>(o));
14646     return os;
14647 }
14648 
PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue o,::std::ostream * os)14649 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociationSetValue o, ::std::ostream* os) {
14650     *os << toString(o);
14651 }
14652 
toString(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest & o)14653 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& o) {
14654     using ::android::hardware::toString;
14655     std::string os;
14656     os += "{";
14657     os += ".userInfo = ";
14658     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.userInfo);
14659     os += ", .numberAssociationTypes = ";
14660     os += ::android::hardware::toString(o.numberAssociationTypes);
14661     os += ", .associationTypes = ";
14662     os += ::android::hardware::toString(o.associationTypes);
14663     os += "}"; return os;
14664 }
14665 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest & o,::std::ostream * os)14666 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& o, ::std::ostream* os) {
14667     *os << toString(o);
14668 }
14669 
14670 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& rhs) {
14671     if (lhs.userInfo != rhs.userInfo) {
14672         return false;
14673     }
14674     if (lhs.numberAssociationTypes != rhs.numberAssociationTypes) {
14675         return false;
14676     }
14677     if (lhs.associationTypes != rhs.associationTypes) {
14678         return false;
14679     }
14680     return true;
14681 }
14682 
14683 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationGetRequest& rhs){
14684     return !(lhs == rhs);
14685 }
14686 
toString(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest & o)14687 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& o) {
14688     using ::android::hardware::toString;
14689     std::string os;
14690     os += "{";
14691     os += ".userInfo = ";
14692     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.userInfo);
14693     os += ", .numberAssociations = ";
14694     os += ::android::hardware::toString(o.numberAssociations);
14695     os += ", .associations = ";
14696     os += ::android::hardware::toString(o.associations);
14697     os += "}"; return os;
14698 }
14699 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest & o,::std::ostream * os)14700 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& o, ::std::ostream* os) {
14701     *os << toString(o);
14702 }
14703 
14704 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& rhs) {
14705     if (lhs.userInfo != rhs.userInfo) {
14706         return false;
14707     }
14708     if (lhs.numberAssociations != rhs.numberAssociations) {
14709         return false;
14710     }
14711     if (lhs.associations != rhs.associations) {
14712         return false;
14713     }
14714     return true;
14715 }
14716 
14717 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetRequest& rhs){
14718     return !(lhs == rhs);
14719 }
14720 
toString(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse & o)14721 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& o) {
14722     using ::android::hardware::toString;
14723     std::string os;
14724     os += "{";
14725     os += ".numberAssociation = ";
14726     os += ::android::hardware::toString(o.numberAssociation);
14727     os += ", .associations = ";
14728     os += ::android::hardware::toString(o.associations);
14729     os += ", .errorMessage = ";
14730     os += ::android::hardware::toString(o.errorMessage);
14731     os += "}"; return os;
14732 }
14733 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse & o,::std::ostream * os)14734 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& o, ::std::ostream* os) {
14735     *os << toString(o);
14736 }
14737 
14738 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& rhs) {
14739     if (lhs.numberAssociation != rhs.numberAssociation) {
14740         return false;
14741     }
14742     if (lhs.associations != rhs.associations) {
14743         return false;
14744     }
14745     if (lhs.errorMessage != rhs.errorMessage) {
14746         return false;
14747     }
14748     return true;
14749 }
14750 
14751 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationResponse& rhs){
14752     return !(lhs == rhs);
14753 }
14754 
toString(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation & o)14755 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& o) {
14756     using ::android::hardware::toString;
14757     std::string os;
14758     os += "{";
14759     os += ".type = ";
14760     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.type);
14761     os += ", .value = ";
14762     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.value);
14763     os += "}"; return os;
14764 }
14765 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation & o,::std::ostream * os)14766 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& o, ::std::ostream* os) {
14767     *os << toString(o);
14768 }
14769 
14770 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& rhs) {
14771     if (lhs.type != rhs.type) {
14772         return false;
14773     }
14774     if (lhs.value != rhs.value) {
14775         return false;
14776     }
14777     return true;
14778 }
14779 
14780 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationAssociation& rhs){
14781     return !(lhs == rhs);
14782 }
14783 
toString(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation & o)14784 static inline std::string toString(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& o) {
14785     using ::android::hardware::toString;
14786     std::string os;
14787     os += "{";
14788     os += ".type = ";
14789     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.type);
14790     os += ", .value = ";
14791     os += ::android::hardware::automotive::vehicle::V2_0::toString(o.value);
14792     os += "}"; return os;
14793 }
14794 
PrintTo(const::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation & o,::std::ostream * os)14795 static inline void PrintTo(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& o, ::std::ostream* os) {
14796     *os << toString(o);
14797 }
14798 
14799 static inline bool operator==(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& rhs) {
14800     if (lhs.type != rhs.type) {
14801         return false;
14802     }
14803     if (lhs.value != rhs.value) {
14804         return false;
14805     }
14806     return true;
14807 }
14808 
14809 static inline bool operator!=(const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& lhs, const ::android::hardware::automotive::vehicle::V2_0::UserIdentificationSetAssociation& rhs){
14810     return !(lhs == rhs);
14811 }
14812 
14813 template<>
14814 inline std::string toString<::android::hardware::automotive::vehicle::V2_0::RotaryInputType>(int32_t o) {
14815     using ::android::hardware::details::toHexString;
14816     std::string os;
14817     ::android::hardware::hidl_bitfield<::android::hardware::automotive::vehicle::V2_0::RotaryInputType> flipped = 0;
14818     bool first = true;
14819     if ((o & ::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION)) {
14820         os += (first ? "" : " | ");
14821         os += "ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION";
14822         first = false;
14823         flipped |= ::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION;
14824     }
14825     if ((o & ::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_AUDIO_VOLUME) == static_cast<int32_t>(::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_AUDIO_VOLUME)) {
14826         os += (first ? "" : " | ");
14827         os += "ROTARY_INPUT_TYPE_AUDIO_VOLUME";
14828         first = false;
14829         flipped |= ::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_AUDIO_VOLUME;
14830     }
14831     if (o != flipped) {
14832         os += (first ? "" : " | ");
14833         os += toHexString(o & (~flipped));
14834     }os += " (";
14835     os += toHexString(o);
14836     os += ")";
14837     return os;
14838 }
14839 
toString(::android::hardware::automotive::vehicle::V2_0::RotaryInputType o)14840 static inline std::string toString(::android::hardware::automotive::vehicle::V2_0::RotaryInputType o) {
14841     using ::android::hardware::details::toHexString;
14842     if (o == ::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION) {
14843         return "ROTARY_INPUT_TYPE_SYSTEM_NAVIGATION";
14844     }
14845     if (o == ::android::hardware::automotive::vehicle::V2_0::RotaryInputType::ROTARY_INPUT_TYPE_AUDIO_VOLUME) {
14846         return "ROTARY_INPUT_TYPE_AUDIO_VOLUME";
14847     }
14848     std::string os;
14849     os += toHexString(static_cast<int32_t>(o));
14850     return os;
14851 }
14852 
PrintTo(::android::hardware::automotive::vehicle::V2_0::RotaryInputType o,::std::ostream * os)14853 static inline void PrintTo(::android::hardware::automotive::vehicle::V2_0::RotaryInputType o, ::std::ostream* os) {
14854     *os << toString(o);
14855 }
14856 
14857 
14858 }  // namespace V2_0
14859 }  // namespace vehicle
14860 }  // namespace automotive
14861 }  // namespace hardware
14862 }  // namespace android
14863 
14864 #endif  // HIDL_GENERATED_ANDROID_HARDWARE_AUTOMOTIVE_VEHICLE_V2_0_TYPES_H
14865