rivian-python-client 2.2.0b8__tar.gz → 2.2.0b10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/PKG-INFO +1 -1
  2. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/__version__.py +1 -1
  3. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/body.py +15 -4
  4. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/device_table.py +20 -4
  5. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/dynamics.py +31 -5
  6. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/energy.py +2 -2
  7. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/holiday_celebration.py +1 -1
  8. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/ota.py +8 -2
  9. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/body.proto +10 -3
  10. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/body_pb2.py +36 -34
  11. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/body_pb2.pyi +15 -4
  12. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/device_table.proto +13 -2
  13. rivian_python_client-2.2.0b10/src/rivian/parallax/proto/device_table_pb2.py +52 -0
  14. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/device_table_pb2.pyi +26 -8
  15. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/dynamics.proto +10 -4
  16. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/dynamics_pb2.py +18 -16
  17. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/dynamics_pb2.pyi +13 -4
  18. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/holiday_celebration.proto +1 -1
  19. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/holiday_celebration_pb2.py +12 -12
  20. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/holiday_celebration_pb2.pyi +2 -2
  21. rivian_python_client-2.2.0b8/src/rivian/parallax/proto/device_table_pb2.py +0 -50
  22. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/.gitignore +0 -0
  23. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/README.md +0 -0
  24. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/pyproject.toml +0 -0
  25. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/__init__.py +0 -0
  26. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/ble.py +0 -0
  27. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/const.py +0 -0
  28. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/exceptions.py +0 -0
  29. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/__init__.py +0 -0
  30. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/charging.py +0 -0
  31. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/comfort.py +0 -0
  32. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/core.py +0 -0
  33. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/departure.py +0 -0
  34. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/energy_edge_compute.py +0 -0
  35. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/gearguard_streaming.py +0 -0
  36. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/geofence.py +0 -0
  37. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/navigation.py +0 -0
  38. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/parallax.py +0 -0
  39. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/__init__.py +0 -0
  40. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/charging.proto +0 -0
  41. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/charging_pb2.py +0 -0
  42. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/charging_pb2.pyi +0 -0
  43. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/comfort.proto +0 -0
  44. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/comfort_pb2.py +0 -0
  45. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/comfort_pb2.pyi +0 -0
  46. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/departure.proto +0 -0
  47. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/departure_pb2.py +0 -0
  48. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/departure_pb2.pyi +0 -0
  49. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/energy.proto +0 -0
  50. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/energy_edge_compute.proto +0 -0
  51. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/energy_edge_compute_pb2.py +0 -0
  52. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/energy_edge_compute_pb2.pyi +0 -0
  53. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/energy_pb2.py +0 -0
  54. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/energy_pb2.pyi +0 -0
  55. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/gearguard_streaming.proto +0 -0
  56. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/gearguard_streaming_pb2.py +0 -0
  57. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/gearguard_streaming_pb2.pyi +0 -0
  58. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/geofence.proto +0 -0
  59. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/geofence_pb2.py +0 -0
  60. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/geofence_pb2.pyi +0 -0
  61. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/navigation.proto +0 -0
  62. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/navigation_pb2.py +0 -0
  63. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/navigation_pb2.pyi +0 -0
  64. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/ota.proto +0 -0
  65. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/ota_pb2.py +0 -0
  66. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/ota_pb2.pyi +0 -0
  67. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/parallax.proto +0 -0
  68. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/parallax_pb2.py +0 -0
  69. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/parallax_pb2.pyi +0 -0
  70. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/secure_file_transfer.proto +0 -0
  71. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/secure_file_transfer_pb2.py +0 -0
  72. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/secure_file_transfer_pb2.pyi +0 -0
  73. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/security.proto +0 -0
  74. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/security_pb2.py +0 -0
  75. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/security_pb2.pyi +0 -0
  76. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/user_passcodes.proto +0 -0
  77. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/user_passcodes_pb2.py +0 -0
  78. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/user_passcodes_pb2.pyi +0 -0
  79. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/vehicle.proto +0 -0
  80. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/vehicle_access.proto +0 -0
  81. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/vehicle_access_pb2.py +0 -0
  82. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/vehicle_access_pb2.pyi +0 -0
  83. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/vehicle_pb2.py +0 -0
  84. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/proto/vehicle_pb2.pyi +0 -0
  85. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/secure_file_transfer.py +0 -0
  86. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/security.py +0 -0
  87. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/user_passcodes.py +0 -0
  88. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/vehicle.py +0 -0
  89. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/parallax/vehicle_access.py +0 -0
  90. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/py.typed +0 -0
  91. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/rivian.py +0 -0
  92. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/schemas/charging.graphql +0 -0
  93. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/schemas/gateway.graphql +0 -0
  94. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/schemas/orders.graphql +0 -0
  95. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/utils.py +0 -0
  96. {rivian_python_client-2.2.0b8 → rivian_python_client-2.2.0b10}/src/rivian/ws_monitor.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: rivian-python-client
3
- Version: 2.2.0b8
3
+ Version: 2.2.0b10
4
4
  Summary: Rivian API Client (Unofficial)
5
5
  Author-email: Brian Retterer <bretterer@gmail.com>, "J.R. Gutierrez" <jrgutier@gmail.com>, Nathan Spencer <natekspencer@gmail.com>, Trevor Mack <drummer8001@gmail.com>
6
6
  License-Expression: MIT
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '2.2.0b8'
4
+ __version__ = VERSION = '2.2.0b10'
@@ -241,9 +241,20 @@ def decode_trailer_state(m: body_pb2.TrailerState) -> dict[str, Any]:
241
241
  def decode_wiper_fluid_level(m: body_pb2.WiperFluidLevel) -> dict[str, Any]:
242
242
  """body.wipers.fluid_level — washer fluid level.
243
243
 
244
+ The value numbering is a best guess.
245
+
244
246
  Fields:
245
- _wiperFluidLevel: int — raw
247
+ wiperFluidState: str | None ("normal" | "low" | "empty")
246
248
  """
247
- if (v := _present(m, "field_2")) is None:
248
- return {}
249
- return {"_wiperFluidLevel": v}
249
+ return {
250
+ "wiperFluidState": _enum(
251
+ _WIPER_FLUID_STATE_MAP, m.state or None, what="wiper fluid state"
252
+ )
253
+ }
254
+
255
+
256
+ _WIPER_FLUID_STATE_MAP: Final[dict[int, str]] = {
257
+ body_pb2.WIPER_FLUID_STATE_NORMAL: "normal",
258
+ body_pb2.WIPER_FLUID_STATE_LOW: "low",
259
+ body_pb2.WIPER_FLUID_STATE_EMPTY: "empty",
260
+ }
@@ -16,6 +16,15 @@ _KEY_STATUS_MAP: Final[dict[int, str]] = {
16
16
  _Devices.KEY_STATUS_PAIRING: "pairing",
17
17
  }
18
18
 
19
+ _DEVICE_OEM_MAP: Final[dict[int, str]] = {
20
+ _Devices.DEVICE_OEM_UNKNOWN: "unknown",
21
+ _Devices.DEVICE_OEM_RIVIAN: "rivian",
22
+ _Devices.DEVICE_OEM_APPLE: "apple",
23
+ _Devices.DEVICE_OEM_GOOGLE: "google",
24
+ _Devices.DEVICE_OEM_SAMSUNG: "samsung",
25
+ _Devices.DEVICE_OEM_VW: "vw",
26
+ }
27
+
19
28
  _KEY_TYPE_MAP: Final[dict[int, str]] = {
20
29
  _Devices.KEY_TYPE_PHONE: "phone",
21
30
  _Devices.KEY_TYPE_KEY_CARD: "key_card",
@@ -35,13 +44,15 @@ def decode_vas_keyper_devices(m: device_table_pb2.VasKeyperDevices) -> dict[str,
35
44
  Fields (partial updates, so each only when sent):
36
45
  deviceName: str — phone keys, e.g. the phone's name
37
46
  keyType: str ("phone" | "key_card" | "key_fob"; key_fob inferred)
47
+ keyDeletable: bool
48
+ wccVersion: int
38
49
  mappedIdentityId: str — the GraphQL device's `mappedIdentityId`
39
50
  hrid: str — short human-readable id (key card)
40
51
  profileId: str — the driver profile the key belongs to (as in
41
52
  vehicle.profiles.active_user)
42
53
  publicKey: str — hex; phone keys
43
54
  keyRevision: int — key table revision when the entry was last written
44
- vehicleResponseRequired: bool
55
+ vehicleResponseRequired: int — raw
45
56
  keyStatus: str ("active" | "inactive" | "waiting_to_pair" |
46
57
  "pairing"); inactive covers unpaired, no longer paired and
47
58
  deleted keys
@@ -51,7 +62,8 @@ def decode_vas_keyper_devices(m: device_table_pb2.VasKeyperDevices) -> dict[str,
51
62
  deviceId: str — hex; for a key card, the GraphQL `devices[].id`
52
63
  phoneId: str — the phone's UUID; phone keys
53
64
  credentialHex: str — hex; likely key material
54
- active: bool
65
+ deviceOem: str ("unknown" | "rivian" | "apple" | "google" |
66
+ "samsung" | "vw") — the device maker
55
67
  """
56
68
  result: dict[str, Any] = {}
57
69
  if m.HasField("label"):
@@ -59,6 +71,10 @@ def decode_vas_keyper_devices(m: device_table_pb2.VasKeyperDevices) -> dict[str,
59
71
  result["deviceName"] = v
60
72
  if (v := _present(m.label, "key_type")) is not None:
61
73
  result["keyType"] = _enum(_KEY_TYPE_MAP, v, what="key type")
74
+ if (v := _present(m.label, "deletable")) is not None:
75
+ result["keyDeletable"] = v
76
+ if (v := _present(m.label, "wcc_version")) is not None:
77
+ result["wccVersion"] = v
62
78
  if m.HasField("device"):
63
79
  for field, key in (
64
80
  ("mapped_identity_id", "mappedIdentityId"),
@@ -97,6 +113,6 @@ def decode_vas_keyper_devices(m: device_table_pb2.VasKeyperDevices) -> dict[str,
97
113
  result["credentialHex"] = cred.hex()
98
114
  if (v := _present(credentials, "key_type")) is not None:
99
115
  result["keyType"] = _enum(_KEY_TYPE_MAP, v, what="key type")
100
- if (v := _present(credentials, "active")) is not None:
101
- result["active"] = v
116
+ if (v := _present(credentials, "device_oem")) is not None:
117
+ result["deviceOem"] = _enum(_DEVICE_OEM_MAP, v, what="device OEM")
102
118
  return result
@@ -94,6 +94,21 @@ def decode_gear(m: dynamics_pb2.Gear) -> dict[str, Any]:
94
94
  return {"gearStatus": _enum(_GEAR_MAP, m.gear, what="gear")}
95
95
 
96
96
 
97
+ # Some vehicles send the fix time as GPS time (milliseconds since the GPS
98
+ # epoch, 1980-01-06, without leap seconds) instead of Unix time. Any time
99
+ # before 2020 is taken as GPS time.
100
+ _GPS_EPOCH_OFFSET_MS: Final = 315_964_800_000
101
+ _GPS_LEAP_SECONDS_MS: Final = 18_000
102
+ _GPS_TIME_CUTOFF_MS: Final = 1_577_836_800_000 # 2020-01-01 in Unix ms
103
+
104
+
105
+ def _gnss_unix_ms(time: int) -> int:
106
+ """A GNSS fix time as Unix epoch milliseconds."""
107
+ if 0 < time < _GPS_TIME_CUTOFF_MS:
108
+ return time + _GPS_EPOCH_OFFSET_MS - _GPS_LEAP_SECONDS_MS
109
+ return time
110
+
111
+
97
112
  @RVMDecoder.register("dynamics.vehicle.gnss", dynamics_pb2.Gnss)
98
113
  def decode_gnss(m: dynamics_pb2.Gnss) -> dict[str, Any]:
99
114
  """dynamics.vehicle.gnss — GPS position, altitude, bearing and speed.
@@ -111,7 +126,7 @@ def decode_gnss(m: dynamics_pb2.Gnss) -> dict[str, Any]:
111
126
  """
112
127
  if not m.ByteSize():
113
128
  return {}
114
- fix_time = from_epoch(m.time)
129
+ fix_time = from_epoch(_gnss_unix_ms(m.time))
115
130
  return {
116
131
  "gnssTimeStamp": fix_time,
117
132
  "gnssLocation": {
@@ -248,9 +263,20 @@ def decode_mass_estimate(m: dynamics_pb2.MassEstimate) -> dict[str, Any]:
248
263
  def decode_brake_fluid_level(m: dynamics_pb2.BrakeFluidLevel) -> dict[str, Any]:
249
264
  """dynamics.brakes.fluid_level — brake fluid level.
250
265
 
266
+ The value numbering is a best guess.
267
+
251
268
  Fields:
252
- _brakeFluidLevel: int — raw
269
+ brakeFluidLow: str ("inactive" | "active" | "signal_not_available")
253
270
  """
254
- if (v := _present(m, "field_1")) is None:
255
- return {}
256
- return {"_brakeFluidLevel": v}
271
+ return {
272
+ "brakeFluidLow": _enum(
273
+ _BRAKE_FLUID_LOW_MAP, m.fluid_low, what="brake fluid low"
274
+ )
275
+ }
276
+
277
+
278
+ _BRAKE_FLUID_LOW_MAP: Final[dict[int, str]] = {
279
+ dynamics_pb2.BRAKE_FLUID_LOW_SIGNAL_NOT_AVAILABLE: "signal_not_available",
280
+ dynamics_pb2.BRAKE_FLUID_LOW_INACTIVE: "inactive",
281
+ dynamics_pb2.BRAKE_FLUID_LOW_ACTIVE: "active",
282
+ }
@@ -64,7 +64,7 @@ def decode_battery_characteristics(
64
64
  batteryChemistry: str | None ("nca" | "lfp" | "nmc")
65
65
  batteryModuleType: str | None (e.g. "9m")
66
66
  batteryPackCapacity: str | None (e.g. "135kwh")
67
- batteryCapacity: float (kWh; usable)
67
+ batteryUsableCapacity: float (kWh)
68
68
  batteryMaxCapacity: float (kWh)
69
69
  """
70
70
  result: dict[str, Any] = {
@@ -83,7 +83,7 @@ def decode_battery_characteristics(
83
83
  "batteryMaxCapacity": round(m.user_max_kwh, 2),
84
84
  }
85
85
  if (v := _present(m, "user_total_kwh")) is not None:
86
- result["batteryCapacity"] = round(v, 2)
86
+ result["batteryUsableCapacity"] = round(v, 2)
87
87
  return result
88
88
 
89
89
 
@@ -135,7 +135,7 @@ def decode_halloween_celebration_settings(
135
135
  halloweenLightShowEnabled: bool
136
136
  halloweenInteriorOverheadLightsEnabled: bool
137
137
  halloweenExteriorLightShowEnabled: bool
138
- halloweenLightsColor: str
138
+ halloweenLightsColor: int
139
139
  halloweenCarCostumeAvailability: str
140
140
  halloweenMotionLightSoundEnabled: bool
141
141
  """
@@ -211,8 +211,14 @@ def decode_ota_config(m: ota_pb2.OtaConfig) -> dict[str, Any]:
211
211
  and (v := _present(daily.location, "name")) is not None
212
212
  ):
213
213
  entry["location"] = v
214
- if one_time and (
215
- seconds := _present(schedule.single_occurrence.starts_at, "seconds")
214
+ # A non-positive starts_at is a "not set" sentinel.
215
+ if (
216
+ one_time
217
+ and (
218
+ (seconds := _present(schedule.single_occurrence.starts_at, "seconds"))
219
+ or 0
220
+ )
221
+ > 0
216
222
  ):
217
223
  entry["installTime"] = from_epoch(seconds)
218
224
  entry["enabled"] = schedule.enabled
@@ -254,7 +254,14 @@ enum WindowsNextAction {
254
254
 
255
255
  // body.wipers.fluid_level
256
256
  message WiperFluidLevel {
257
- // Likely the app's FluidLevelState (normal | low | empty, i.e. the
258
- // gateway's wiperFluidState); its numbers are unknown.
259
- optional int32 field_2 = 2;
257
+ WiperFluidState state = 2;
258
+ }
259
+
260
+ // Best guess: the app's FluidLevelState values (the gateway's
261
+ // wiperFluidState), numbered in the app's normal | low | empty order.
262
+ enum WiperFluidState {
263
+ WIPER_FLUID_STATE_UNSPECIFIED = 0;
264
+ WIPER_FLUID_STATE_NORMAL = 1;
265
+ WIPER_FLUID_STATE_LOW = 2;
266
+ WIPER_FLUID_STATE_EMPTY = 3;
260
267
  }
@@ -24,45 +24,47 @@ _sym_db = _symbol_database.Default()
24
24
 
25
25
 
26
26
 
27
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n rivian/parallax/proto/body.proto\x12\x14rivian.parallax.body\"\xa4\x07\n\rClosuresState\x12<\n\x07\x63losure\x18\x01 \x03(\x0b\x32+.rivian.parallax.body.ClosuresState.Closure\x1a\xd4\x06\n\x07\x43losure\x12+\n\x02id\x18\x01 \x01(\x0e\x32\x1f.rivian.parallax.body.ClosureId\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32\".rivian.parallax.body.ClosureStateH\x00\x88\x01\x01\x12\x1d\n\x15open_position_percent\x18\x03 \x01(\x05\x12\x31\n\x05\x66\x61ult\x18\x04 \x01(\x0e\x32\".rivian.parallax.body.ClosureFault\x12I\n\x13windows_next_action\x18\x05 \x01(\x0e\x32\'.rivian.parallax.body.WindowsNextActionH\x01\x88\x01\x01\x12\x45\n\x11\x66runk_next_action\x18\x06 \x01(\x0e\x32%.rivian.parallax.body.FrunkNextActionH\x02\x88\x01\x01\x12K\n\x14liftgate_next_action\x18\x07 \x01(\x0e\x32(.rivian.parallax.body.LiftgateNextActionH\x03\x88\x01\x01\x12J\n\x14side_bin_next_action\x18\x08 \x01(\x0e\x32\'.rivian.parallax.body.SideBinNextActionH\x04\x88\x01\x01\x12K\n\x14tailgate_next_action\x18\t \x01(\x0e\x32(.rivian.parallax.body.TailgateNextActionH\x05\x88\x01\x01\x12Y\n\x1c\x63harge_port_door_next_action\x18\n \x01(\x0e\x32..rivian.parallax.body.ChargePortDoorNextActionH\x06\x88\x01\x01\x12\x1b\n\x13tonneau_next_action\x18\x0b \x01(\x05\x42\x08\n\x06_stateB\x16\n\x14_windows_next_actionB\x14\n\x12_frunk_next_actionB\x17\n\x15_liftgate_next_actionB\x17\n\x15_side_bin_next_actionB\x17\n\x15_tailgate_next_actionB\x1f\n\x1d_charge_port_door_next_action\"\xe3\x01\n\nLocksState\x12\x33\n\x04lock\x18\x01 \x03(\x0b\x32%.rivian.parallax.body.LocksState.Lock\x1a\x9f\x01\n\x04Lock\x12(\n\x02id\x18\x01 \x01(\x0e\x32\x1c.rivian.parallax.body.LockId\x12\x33\n\x05state\x18\x02 \x01(\x0e\x32\x1f.rivian.parallax.body.LockStateH\x00\x88\x01\x01\x12.\n\x05\x66\x61ult\x18\x03 \x01(\x0e\x32\x1f.rivian.parallax.body.LockFaultB\x08\n\x06_state\"\xd1\x01\n\x0cWindowsState\x12\x39\n\x06window\x18\x01 \x03(\x0b\x32).rivian.parallax.body.WindowsState.Window\x1a\x85\x01\n\x06Window\x12\x36\n\x08instance\x18\x01 \x01(\x0e\x32$.rivian.parallax.body.WindowInstance\x12\x43\n\x12\x63\x61libration_status\x18\x02 \x01(\x0e\x32\'.rivian.parallax.body.CalibrationStatus\"\x9b\x01\n\x0cTrailerState\x12<\n\x08presence\x18\x01 \x01(\x0e\x32%.rivian.parallax.body.TrailerPresenceH\x00\x88\x01\x01\x12@\n\x11rear_hitch_status\x18\x02 \x01(\x0e\x32%.rivian.parallax.body.RearHitchStatusB\x0b\n\t_presence\"3\n\x0fWiperFluidLevel\x12\x14\n\x07\x66ield_2\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_field_2*\xe8\x02\n\tClosureId\x12\x1a\n\x16\x43LOSURE_ID_UNSPECIFIED\x10\x00\x12\x13\n\x0f\x44OOR_FRONT_LEFT\x10\x01\x12\x14\n\x10\x44OOR_FRONT_RIGHT\x10\x02\x12\x12\n\x0e\x44OOR_REAR_LEFT\x10\x03\x12\x13\n\x0f\x44OOR_REAR_RIGHT\x10\x04\x12\t\n\x05\x46RUNK\x10\x05\x12\x0c\n\x08TAILGATE\x10\x06\x12\x0c\n\x08LIFTGATE\x10\x07\x12\x11\n\rSIDE_BIN_LEFT\x10\x08\x12\x12\n\x0eSIDE_BIN_RIGHT\x10\t\x12\x0f\n\x0b\x43HARGE_PORT\x10\n\x12\x0b\n\x07TONNEAU\x10\x0b\x12\x15\n\x11WINDOW_FRONT_LEFT\x10\x0c\x12\x16\n\x12WINDOW_FRONT_RIGHT\x10\r\x12\x14\n\x10WINDOW_REAR_LEFT\x10\x0e\x12\x15\n\x11WINDOW_REAR_RIGHT\x10\x0f\x12\x0f\n\x0bWINDOW_REAR\x10\x10\x12\x12\n\rGROUP_WINDOWS\x10\x90N*\xad\x01\n\x0c\x43losureState\x12\x1d\n\x19\x43LOSURE_STATE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x43LOSURE_STATE_OPEN\x10\x01\x12\x18\n\x14\x43LOSURE_STATE_CLOSED\x10\x02\x12\x16\n\x12\x43LOSURE_STATE_AJAR\x10\x03\x12\x19\n\x15\x43LOSURE_STATE_OPENING\x10\x04\x12\x19\n\x15\x43LOSURE_STATE_CLOSING\x10\x05*\xf3\x02\n\x06LockId\x12\x17\n\x13LOCK_ID_UNSPECIFIED\x10\x00\x12\x18\n\x14LOCK_DOOR_FRONT_LEFT\x10\x01\x12\x19\n\x15LOCK_DOOR_FRONT_RIGHT\x10\x02\x12\x17\n\x13LOCK_DOOR_REAR_LEFT\x10\x03\x12\x18\n\x14LOCK_DOOR_REAR_RIGHT\x10\x04\x12\x0e\n\nLOCK_FRUNK\x10\x05\x12\x11\n\rLOCK_TAILGATE\x10\x06\x12\x11\n\rLOCK_LIFTGATE\x10\x07\x12\x16\n\x12LOCK_SIDE_BIN_LEFT\x10\x08\x12\x17\n\x13LOCK_SIDE_BIN_RIGHT\x10\t\x12\x14\n\x10LOCK_CHARGE_PORT\x10\n\x12\x17\n\x13LOCK_TRUNK_SECURITY\x10\x0b\x12\x17\n\x13LOCK_CENTER_CONSOLE\x10\x0c\x12\x12\n\x0eLOCK_GLOVE_BOX\x10\r\x12\x13\n\x0fLOCK_GEAR_GUARD\x10\x0e\x12\x10\n\x0cLOCK_TONNEAU\x10\x0f*z\n\tLockState\x12\x1a\n\x16LOCK_STATE_UNSPECIFIED\x10\x00\x12\x15\n\x11LOCK_STATE_LOCKED\x10\x01\x12\x17\n\x13LOCK_STATE_UNLOCKED\x10\x02\x12!\n\x1dLOCK_STATE_PARTIALLY_UNLOCKED\x10\x03*?\n\tLockFault\x12\x1a\n\x16LOCK_FAULT_UNSPECIFIED\x10\x00\x12\x16\n\x12LOCK_FAULT_FAULTED\x10\x01*\xcb\x01\n\x0eWindowInstance\x12\x1f\n\x1bWINDOW_INSTANCE_UNSPECIFIED\x10\x00\x12\x1e\n\x1aWINDOW_INSTANCE_FRONT_LEFT\x10\x01\x12\x1f\n\x1bWINDOW_INSTANCE_FRONT_RIGHT\x10\x02\x12\x1d\n\x19WINDOW_INSTANCE_REAR_LEFT\x10\x03\x12\x1e\n\x1aWINDOW_INSTANCE_REAR_RIGHT\x10\x04\x12\x18\n\x14WINDOW_INSTANCE_REAR\x10\x05*\x81\x01\n\x11\x43\x61librationStatus\x12\"\n\x1e\x43\x41LIBRATION_STATUS_UNSPECIFIED\x10\x00\x12!\n\x1d\x43\x41LIBRATION_STATUS_CALIBRATED\x10\x01\x12%\n!CALIBRATION_STATUS_NOT_CALIBRATED\x10\x02*\xd8\x01\n\x0fRearHitchStatus\x12!\n\x1dREAR_HITCH_STATUS_UNSPECIFIED\x10\x00\x12!\n\x1dREAR_HITCH_STATUS_NOT_PRESENT\x10\x01\x12\x1f\n\x1bREAR_HITCH_STATUS_ACCESSORY\x10\x02\x12\x1e\n\x1aREAR_HITCH_STATUS_TRAILER1\x10\x03\x12\x1e\n\x1aREAR_HITCH_STATUS_TRAILER2\x10\x04\x12\x1e\n\x1aREAR_HITCH_STATUS_TRAILER3\x10\x05*\xaa\x01\n\x0c\x43losureFault\x12\x1d\n\x19\x43LOSURE_FAULT_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43LOSURE_FAULT_NO_FAULT\x10\x01\x12\x19\n\x15\x43LOSURE_FAULT_GENERAL\x10\x02\x12&\n\"CLOSURE_FAULT_NO_POWERED_OPERATION\x10\x03\x12\x1c\n\x18\x43LOSURE_FAULT_OBSTRUCTED\x10\x04*\x97\x01\n\x0fTrailerPresence\x12 \n\x1cTRAILER_PRESENCE_UNSPECIFIED\x10\x00\x12\x17\n\x13TRAILER_NOT_PRESENT\x10\x01\x12\x13\n\x0fTRAILER_PRESENT\x10\x02\x12\x1f\n\x1bTRAILER_PRESENT_WITH_BRAKES\x10\x03\x12\x13\n\x0fTRAILER_INVALID\x10\x04*\x9f\x04\n\x18\x43hargePortDoorNextAction\x12\x18\n\x14\x43HARGE_PORT_DOOR_SNA\x10\x00\x12!\n\x1d\x43HARGE_PORT_DOOR_OPEN_ALLOWED\x10\x01\x12\'\n#CHARGE_PORT_DOOR_OPEN_NOT_AVAILABLE\x10\x02\x12-\n)CHARGE_PORT_DOOR_OPEN_NOT_ALLOWED_FAULTED\x10\x03\x12\x1c\n\x18\x43HARGE_PORT_DOOR_OPENING\x10\x04\x12\"\n\x1e\x43HARGE_PORT_DOOR_CLOSE_ALLOWED\x10\x05\x12;\n7CHARGE_PORT_DOOR_OBSTRUCTED_WHILE_OPENING_CLOSE_ALLOWED\x10\x06\x12:\n6CHARGE_PORT_DOOR_OBSTRUCTED_WHILE_OPENING_OPEN_ALLOWED\x10\x07\x12;\n7CHARGE_PORT_DOOR_OBSTRUCTED_WHILE_CLOSING_CLOSE_ALLOWED\x10\x08\x12(\n$CHARGE_PORT_DOOR_CLOSE_NOT_AVAILABLE\x10\t\x12.\n*CHARGE_PORT_DOOR_CLOSE_NOT_ALLOWED_FAULTED\x10\n\x12\x1c\n\x18\x43HARGE_PORT_DOOR_CLOSING\x10\x0b*\xb0\x03\n\x0f\x46runkNextAction\x12\r\n\tFRUNK_SNA\x10\x00\x12\x16\n\x12\x46RUNK_OPEN_ALLOWED\x10\x01\x12\x17\n\x13\x46RUNK_CLOSE_ALLOWED\x10\x02\x12\x11\n\rFRUNK_OPENING\x10\x03\x12\x11\n\rFRUNK_CLOSING\x10\x04\x12\x1c\n\x18\x46RUNK_OPEN_NOT_AVAILABLE\x10\x05\x12\x1d\n\x19\x46RUNK_CLOSE_NOT_AVAILABLE\x10\x06\x12\"\n\x1e\x46RUNK_OPEN_NOT_ALLOWED_FAULTED\x10\x07\x12#\n\x1f\x46RUNK_CLOSE_NOT_ALLOWED_FAULTED\x10\x08\x12)\n%FRUNK_OPEN_ALLOWED_NO_POWER_OPERATION\x10\t\x12.\n*FRUNK_CLOSE_NOT_ALLOWED_NO_POWER_OPERATION\x10\n\x12*\n&FRUNK_OBSTRUCTED_OPENING_CLOSE_ALLOWED\x10\x0b\x12*\n&FRUNK_OBSTRUCTED_CLOSING_CLOSE_ALLOWED\x10\x0c*\xa7\x06\n\x12LiftgateNextAction\x12\x10\n\x0cLIFTGATE_SNA\x10\x00\x12\x19\n\x15LIFTGATE_OPEN_ALLOWED\x10\x01\x12\x1a\n\x16LIFTGATE_CLOSE_ALLOWED\x10\x02\x12\x14\n\x10LIFTGATE_OPENING\x10\x03\x12\x14\n\x10LIFTGATE_CLOSING\x10\x04\x12\x1f\n\x1bLIFTGATE_OPEN_NOT_AVAILABLE\x10\x05\x12 \n\x1cLIFTGATE_CLOSE_NOT_AVAILABLE\x10\x06\x12%\n!LIFTGATE_OPEN_NOT_ALLOWED_FAULTED\x10\x07\x12&\n\"LIFTGATE_CLOSE_NOT_ALLOWED_FAULTED\x10\x08\x12,\n(LIFTGATE_OPEN_ALLOWED_NO_POWER_OPERATION\x10\t\x12\x31\n-LIFTGATE_CLOSE_NOT_ALLOWED_NO_POWER_OPERATION\x10\n\x12-\n)LIFTGATE_OBSTRUCTED_OPENING_CLOSE_ALLOWED\x10\x0b\x12-\n)LIFTGATE_OBSTRUCTED_CLOSING_CLOSE_ALLOWED\x10\x0c\x12.\n*LIFTGATE_LOWER_GATE_OPEN_CLOSE_NOT_ALLOWED\x10\r\x12&\n\"LIFTGATE_OPENING_PAUSE_NOT_ALLOWED\x10\x0e\x12&\n\"LIFTGATE_CLOSING_PAUSE_NOT_ALLOWED\x10\x0f\x12+\n\'LIFTGATE_OPEN_ALLOWED_OBSTACLE_DETECTED\x10\x10\x12*\n&LIFTGATE_OPEN_ALLOWED_TRAILER_DETECTED\x10\x11\x12,\n(LIFTGATE_CLOSE_ALLOWED_OBSTACLE_DETECTED\x10\x12\x12+\n\'LIFTGATE_CLOSE_ALLOWED_TRAILER_DETECTED\x10\x13\x12\x17\n\x13LIFTGATE_PROCESSING\x10\x14*\xb2\x02\n\x11SideBinNextAction\x12\x10\n\x0cSIDE_BIN_SNA\x10\x00\x12\x19\n\x15SIDE_BIN_OPEN_ALLOWED\x10\x01\x12\x14\n\x10SIDE_BIN_OPENING\x10\x02\x12\x1f\n\x1bSIDE_BIN_OPEN_NOT_AVAILABLE\x10\x03\x12%\n!SIDE_BIN_OPEN_NOT_ALLOWED_FAULTED\x10\x04\x12\x32\n.SIDE_BIN_STUCK_AJAR_WHILE_OPENING_OPEN_ALLOWED\x10\x05\x12-\n)SIDE_BIN_OPEN_ALREADY_NO_ACTION_AVAILABLE\x10\x06\x12/\n+SIDE_BIN_OPEN_ALLOWED_CONFIRM_VEHICLE_ANGLE\x10\x07*\x8c\x03\n\x12TailgateNextAction\x12\x10\n\x0cTAILGATE_SNA\x10\x00\x12\x19\n\x15TAILGATE_OPEN_ALLOWED\x10\x01\x12\x14\n\x10TAILGATE_OPENING\x10\x02\x12\x1f\n\x1bTAILGATE_OPEN_NOT_AVAILABLE\x10\x03\x12%\n!TAILGATE_OPEN_NOT_ALLOWED_FAULTED\x10\x04\x12\x32\n.TAILGATE_STUCK_AJAR_WHILE_OPENING_OPEN_ALLOWED\x10\x05\x12-\n)TAILGATE_OPEN_ALREADY_NO_ACTION_AVAILABLE\x10\x06\x12/\n+TAILGATE_OPEN_ALLOWED_CONFIRM_VEHICLE_ANGLE\x10\x07\x12+\n\'TAILGATE_OPEN_ALLOWED_OBSTACLE_DETECTED\x10\x08\x12*\n&TAILGATE_OPEN_ALLOWED_TRAILER_DETECTED\x10\t*\xb0\x03\n\x11WindowsNextAction\x12\x0f\n\x0bWINDOWS_SNA\x10\x00\x12\x18\n\x14WINDOWS_OPEN_ALLOWED\x10\x01\x12\x19\n\x15WINDOWS_CLOSE_ALLOWED\x10\x02\x12\x13\n\x0fWINDOWS_OPENING\x10\x03\x12\x13\n\x0fWINDOWS_CLOSING\x10\x04\x12\x12\n\x0eWINDOWS_MOVING\x10\x05\x12\x1e\n\x1aWINDOWS_OPEN_NOT_AVAILABLE\x10\x06\x12\x1f\n\x1bWINDOWS_CLOSE_NOT_AVAILABLE\x10\x07\x12$\n WINDOWS_OPEN_NOT_ALLOWED_FAULTED\x10\x08\x12%\n!WINDOWS_CLOSE_NOT_ALLOWED_FAULTED\x10\t\x12\x32\n.WINDOWS_OBSTRUCTED_WHILE_CLOSING_CLOSE_ALLOWED\x10\n\x12*\n&WINDOWS_CLOSE_NOT_ALLOWED_UNCALIBRATED\x10\x0b\x12)\n%WINDOWS_OPEN_NOT_ALLOWED_UNCALIBRATED\x10\x0c\x62\x06proto3')
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n rivian/parallax/proto/body.proto\x12\x14rivian.parallax.body\"\xa4\x07\n\rClosuresState\x12<\n\x07\x63losure\x18\x01 \x03(\x0b\x32+.rivian.parallax.body.ClosuresState.Closure\x1a\xd4\x06\n\x07\x43losure\x12+\n\x02id\x18\x01 \x01(\x0e\x32\x1f.rivian.parallax.body.ClosureId\x12\x36\n\x05state\x18\x02 \x01(\x0e\x32\".rivian.parallax.body.ClosureStateH\x00\x88\x01\x01\x12\x1d\n\x15open_position_percent\x18\x03 \x01(\x05\x12\x31\n\x05\x66\x61ult\x18\x04 \x01(\x0e\x32\".rivian.parallax.body.ClosureFault\x12I\n\x13windows_next_action\x18\x05 \x01(\x0e\x32\'.rivian.parallax.body.WindowsNextActionH\x01\x88\x01\x01\x12\x45\n\x11\x66runk_next_action\x18\x06 \x01(\x0e\x32%.rivian.parallax.body.FrunkNextActionH\x02\x88\x01\x01\x12K\n\x14liftgate_next_action\x18\x07 \x01(\x0e\x32(.rivian.parallax.body.LiftgateNextActionH\x03\x88\x01\x01\x12J\n\x14side_bin_next_action\x18\x08 \x01(\x0e\x32\'.rivian.parallax.body.SideBinNextActionH\x04\x88\x01\x01\x12K\n\x14tailgate_next_action\x18\t \x01(\x0e\x32(.rivian.parallax.body.TailgateNextActionH\x05\x88\x01\x01\x12Y\n\x1c\x63harge_port_door_next_action\x18\n \x01(\x0e\x32..rivian.parallax.body.ChargePortDoorNextActionH\x06\x88\x01\x01\x12\x1b\n\x13tonneau_next_action\x18\x0b \x01(\x05\x42\x08\n\x06_stateB\x16\n\x14_windows_next_actionB\x14\n\x12_frunk_next_actionB\x17\n\x15_liftgate_next_actionB\x17\n\x15_side_bin_next_actionB\x17\n\x15_tailgate_next_actionB\x1f\n\x1d_charge_port_door_next_action\"\xe3\x01\n\nLocksState\x12\x33\n\x04lock\x18\x01 \x03(\x0b\x32%.rivian.parallax.body.LocksState.Lock\x1a\x9f\x01\n\x04Lock\x12(\n\x02id\x18\x01 \x01(\x0e\x32\x1c.rivian.parallax.body.LockId\x12\x33\n\x05state\x18\x02 \x01(\x0e\x32\x1f.rivian.parallax.body.LockStateH\x00\x88\x01\x01\x12.\n\x05\x66\x61ult\x18\x03 \x01(\x0e\x32\x1f.rivian.parallax.body.LockFaultB\x08\n\x06_state\"\xd1\x01\n\x0cWindowsState\x12\x39\n\x06window\x18\x01 \x03(\x0b\x32).rivian.parallax.body.WindowsState.Window\x1a\x85\x01\n\x06Window\x12\x36\n\x08instance\x18\x01 \x01(\x0e\x32$.rivian.parallax.body.WindowInstance\x12\x43\n\x12\x63\x61libration_status\x18\x02 \x01(\x0e\x32\'.rivian.parallax.body.CalibrationStatus\"\x9b\x01\n\x0cTrailerState\x12<\n\x08presence\x18\x01 \x01(\x0e\x32%.rivian.parallax.body.TrailerPresenceH\x00\x88\x01\x01\x12@\n\x11rear_hitch_status\x18\x02 \x01(\x0e\x32%.rivian.parallax.body.RearHitchStatusB\x0b\n\t_presence\"G\n\x0fWiperFluidLevel\x12\x34\n\x05state\x18\x02 \x01(\x0e\x32%.rivian.parallax.body.WiperFluidState*\xe8\x02\n\tClosureId\x12\x1a\n\x16\x43LOSURE_ID_UNSPECIFIED\x10\x00\x12\x13\n\x0f\x44OOR_FRONT_LEFT\x10\x01\x12\x14\n\x10\x44OOR_FRONT_RIGHT\x10\x02\x12\x12\n\x0e\x44OOR_REAR_LEFT\x10\x03\x12\x13\n\x0f\x44OOR_REAR_RIGHT\x10\x04\x12\t\n\x05\x46RUNK\x10\x05\x12\x0c\n\x08TAILGATE\x10\x06\x12\x0c\n\x08LIFTGATE\x10\x07\x12\x11\n\rSIDE_BIN_LEFT\x10\x08\x12\x12\n\x0eSIDE_BIN_RIGHT\x10\t\x12\x0f\n\x0b\x43HARGE_PORT\x10\n\x12\x0b\n\x07TONNEAU\x10\x0b\x12\x15\n\x11WINDOW_FRONT_LEFT\x10\x0c\x12\x16\n\x12WINDOW_FRONT_RIGHT\x10\r\x12\x14\n\x10WINDOW_REAR_LEFT\x10\x0e\x12\x15\n\x11WINDOW_REAR_RIGHT\x10\x0f\x12\x0f\n\x0bWINDOW_REAR\x10\x10\x12\x12\n\rGROUP_WINDOWS\x10\x90N*\xad\x01\n\x0c\x43losureState\x12\x1d\n\x19\x43LOSURE_STATE_UNSPECIFIED\x10\x00\x12\x16\n\x12\x43LOSURE_STATE_OPEN\x10\x01\x12\x18\n\x14\x43LOSURE_STATE_CLOSED\x10\x02\x12\x16\n\x12\x43LOSURE_STATE_AJAR\x10\x03\x12\x19\n\x15\x43LOSURE_STATE_OPENING\x10\x04\x12\x19\n\x15\x43LOSURE_STATE_CLOSING\x10\x05*\xf3\x02\n\x06LockId\x12\x17\n\x13LOCK_ID_UNSPECIFIED\x10\x00\x12\x18\n\x14LOCK_DOOR_FRONT_LEFT\x10\x01\x12\x19\n\x15LOCK_DOOR_FRONT_RIGHT\x10\x02\x12\x17\n\x13LOCK_DOOR_REAR_LEFT\x10\x03\x12\x18\n\x14LOCK_DOOR_REAR_RIGHT\x10\x04\x12\x0e\n\nLOCK_FRUNK\x10\x05\x12\x11\n\rLOCK_TAILGATE\x10\x06\x12\x11\n\rLOCK_LIFTGATE\x10\x07\x12\x16\n\x12LOCK_SIDE_BIN_LEFT\x10\x08\x12\x17\n\x13LOCK_SIDE_BIN_RIGHT\x10\t\x12\x14\n\x10LOCK_CHARGE_PORT\x10\n\x12\x17\n\x13LOCK_TRUNK_SECURITY\x10\x0b\x12\x17\n\x13LOCK_CENTER_CONSOLE\x10\x0c\x12\x12\n\x0eLOCK_GLOVE_BOX\x10\r\x12\x13\n\x0fLOCK_GEAR_GUARD\x10\x0e\x12\x10\n\x0cLOCK_TONNEAU\x10\x0f*z\n\tLockState\x12\x1a\n\x16LOCK_STATE_UNSPECIFIED\x10\x00\x12\x15\n\x11LOCK_STATE_LOCKED\x10\x01\x12\x17\n\x13LOCK_STATE_UNLOCKED\x10\x02\x12!\n\x1dLOCK_STATE_PARTIALLY_UNLOCKED\x10\x03*?\n\tLockFault\x12\x1a\n\x16LOCK_FAULT_UNSPECIFIED\x10\x00\x12\x16\n\x12LOCK_FAULT_FAULTED\x10\x01*\xcb\x01\n\x0eWindowInstance\x12\x1f\n\x1bWINDOW_INSTANCE_UNSPECIFIED\x10\x00\x12\x1e\n\x1aWINDOW_INSTANCE_FRONT_LEFT\x10\x01\x12\x1f\n\x1bWINDOW_INSTANCE_FRONT_RIGHT\x10\x02\x12\x1d\n\x19WINDOW_INSTANCE_REAR_LEFT\x10\x03\x12\x1e\n\x1aWINDOW_INSTANCE_REAR_RIGHT\x10\x04\x12\x18\n\x14WINDOW_INSTANCE_REAR\x10\x05*\x81\x01\n\x11\x43\x61librationStatus\x12\"\n\x1e\x43\x41LIBRATION_STATUS_UNSPECIFIED\x10\x00\x12!\n\x1d\x43\x41LIBRATION_STATUS_CALIBRATED\x10\x01\x12%\n!CALIBRATION_STATUS_NOT_CALIBRATED\x10\x02*\xd8\x01\n\x0fRearHitchStatus\x12!\n\x1dREAR_HITCH_STATUS_UNSPECIFIED\x10\x00\x12!\n\x1dREAR_HITCH_STATUS_NOT_PRESENT\x10\x01\x12\x1f\n\x1bREAR_HITCH_STATUS_ACCESSORY\x10\x02\x12\x1e\n\x1aREAR_HITCH_STATUS_TRAILER1\x10\x03\x12\x1e\n\x1aREAR_HITCH_STATUS_TRAILER2\x10\x04\x12\x1e\n\x1aREAR_HITCH_STATUS_TRAILER3\x10\x05*\xaa\x01\n\x0c\x43losureFault\x12\x1d\n\x19\x43LOSURE_FAULT_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43LOSURE_FAULT_NO_FAULT\x10\x01\x12\x19\n\x15\x43LOSURE_FAULT_GENERAL\x10\x02\x12&\n\"CLOSURE_FAULT_NO_POWERED_OPERATION\x10\x03\x12\x1c\n\x18\x43LOSURE_FAULT_OBSTRUCTED\x10\x04*\x97\x01\n\x0fTrailerPresence\x12 \n\x1cTRAILER_PRESENCE_UNSPECIFIED\x10\x00\x12\x17\n\x13TRAILER_NOT_PRESENT\x10\x01\x12\x13\n\x0fTRAILER_PRESENT\x10\x02\x12\x1f\n\x1bTRAILER_PRESENT_WITH_BRAKES\x10\x03\x12\x13\n\x0fTRAILER_INVALID\x10\x04*\x9f\x04\n\x18\x43hargePortDoorNextAction\x12\x18\n\x14\x43HARGE_PORT_DOOR_SNA\x10\x00\x12!\n\x1d\x43HARGE_PORT_DOOR_OPEN_ALLOWED\x10\x01\x12\'\n#CHARGE_PORT_DOOR_OPEN_NOT_AVAILABLE\x10\x02\x12-\n)CHARGE_PORT_DOOR_OPEN_NOT_ALLOWED_FAULTED\x10\x03\x12\x1c\n\x18\x43HARGE_PORT_DOOR_OPENING\x10\x04\x12\"\n\x1e\x43HARGE_PORT_DOOR_CLOSE_ALLOWED\x10\x05\x12;\n7CHARGE_PORT_DOOR_OBSTRUCTED_WHILE_OPENING_CLOSE_ALLOWED\x10\x06\x12:\n6CHARGE_PORT_DOOR_OBSTRUCTED_WHILE_OPENING_OPEN_ALLOWED\x10\x07\x12;\n7CHARGE_PORT_DOOR_OBSTRUCTED_WHILE_CLOSING_CLOSE_ALLOWED\x10\x08\x12(\n$CHARGE_PORT_DOOR_CLOSE_NOT_AVAILABLE\x10\t\x12.\n*CHARGE_PORT_DOOR_CLOSE_NOT_ALLOWED_FAULTED\x10\n\x12\x1c\n\x18\x43HARGE_PORT_DOOR_CLOSING\x10\x0b*\xb0\x03\n\x0f\x46runkNextAction\x12\r\n\tFRUNK_SNA\x10\x00\x12\x16\n\x12\x46RUNK_OPEN_ALLOWED\x10\x01\x12\x17\n\x13\x46RUNK_CLOSE_ALLOWED\x10\x02\x12\x11\n\rFRUNK_OPENING\x10\x03\x12\x11\n\rFRUNK_CLOSING\x10\x04\x12\x1c\n\x18\x46RUNK_OPEN_NOT_AVAILABLE\x10\x05\x12\x1d\n\x19\x46RUNK_CLOSE_NOT_AVAILABLE\x10\x06\x12\"\n\x1e\x46RUNK_OPEN_NOT_ALLOWED_FAULTED\x10\x07\x12#\n\x1f\x46RUNK_CLOSE_NOT_ALLOWED_FAULTED\x10\x08\x12)\n%FRUNK_OPEN_ALLOWED_NO_POWER_OPERATION\x10\t\x12.\n*FRUNK_CLOSE_NOT_ALLOWED_NO_POWER_OPERATION\x10\n\x12*\n&FRUNK_OBSTRUCTED_OPENING_CLOSE_ALLOWED\x10\x0b\x12*\n&FRUNK_OBSTRUCTED_CLOSING_CLOSE_ALLOWED\x10\x0c*\xa7\x06\n\x12LiftgateNextAction\x12\x10\n\x0cLIFTGATE_SNA\x10\x00\x12\x19\n\x15LIFTGATE_OPEN_ALLOWED\x10\x01\x12\x1a\n\x16LIFTGATE_CLOSE_ALLOWED\x10\x02\x12\x14\n\x10LIFTGATE_OPENING\x10\x03\x12\x14\n\x10LIFTGATE_CLOSING\x10\x04\x12\x1f\n\x1bLIFTGATE_OPEN_NOT_AVAILABLE\x10\x05\x12 \n\x1cLIFTGATE_CLOSE_NOT_AVAILABLE\x10\x06\x12%\n!LIFTGATE_OPEN_NOT_ALLOWED_FAULTED\x10\x07\x12&\n\"LIFTGATE_CLOSE_NOT_ALLOWED_FAULTED\x10\x08\x12,\n(LIFTGATE_OPEN_ALLOWED_NO_POWER_OPERATION\x10\t\x12\x31\n-LIFTGATE_CLOSE_NOT_ALLOWED_NO_POWER_OPERATION\x10\n\x12-\n)LIFTGATE_OBSTRUCTED_OPENING_CLOSE_ALLOWED\x10\x0b\x12-\n)LIFTGATE_OBSTRUCTED_CLOSING_CLOSE_ALLOWED\x10\x0c\x12.\n*LIFTGATE_LOWER_GATE_OPEN_CLOSE_NOT_ALLOWED\x10\r\x12&\n\"LIFTGATE_OPENING_PAUSE_NOT_ALLOWED\x10\x0e\x12&\n\"LIFTGATE_CLOSING_PAUSE_NOT_ALLOWED\x10\x0f\x12+\n\'LIFTGATE_OPEN_ALLOWED_OBSTACLE_DETECTED\x10\x10\x12*\n&LIFTGATE_OPEN_ALLOWED_TRAILER_DETECTED\x10\x11\x12,\n(LIFTGATE_CLOSE_ALLOWED_OBSTACLE_DETECTED\x10\x12\x12+\n\'LIFTGATE_CLOSE_ALLOWED_TRAILER_DETECTED\x10\x13\x12\x17\n\x13LIFTGATE_PROCESSING\x10\x14*\xb2\x02\n\x11SideBinNextAction\x12\x10\n\x0cSIDE_BIN_SNA\x10\x00\x12\x19\n\x15SIDE_BIN_OPEN_ALLOWED\x10\x01\x12\x14\n\x10SIDE_BIN_OPENING\x10\x02\x12\x1f\n\x1bSIDE_BIN_OPEN_NOT_AVAILABLE\x10\x03\x12%\n!SIDE_BIN_OPEN_NOT_ALLOWED_FAULTED\x10\x04\x12\x32\n.SIDE_BIN_STUCK_AJAR_WHILE_OPENING_OPEN_ALLOWED\x10\x05\x12-\n)SIDE_BIN_OPEN_ALREADY_NO_ACTION_AVAILABLE\x10\x06\x12/\n+SIDE_BIN_OPEN_ALLOWED_CONFIRM_VEHICLE_ANGLE\x10\x07*\x8c\x03\n\x12TailgateNextAction\x12\x10\n\x0cTAILGATE_SNA\x10\x00\x12\x19\n\x15TAILGATE_OPEN_ALLOWED\x10\x01\x12\x14\n\x10TAILGATE_OPENING\x10\x02\x12\x1f\n\x1bTAILGATE_OPEN_NOT_AVAILABLE\x10\x03\x12%\n!TAILGATE_OPEN_NOT_ALLOWED_FAULTED\x10\x04\x12\x32\n.TAILGATE_STUCK_AJAR_WHILE_OPENING_OPEN_ALLOWED\x10\x05\x12-\n)TAILGATE_OPEN_ALREADY_NO_ACTION_AVAILABLE\x10\x06\x12/\n+TAILGATE_OPEN_ALLOWED_CONFIRM_VEHICLE_ANGLE\x10\x07\x12+\n\'TAILGATE_OPEN_ALLOWED_OBSTACLE_DETECTED\x10\x08\x12*\n&TAILGATE_OPEN_ALLOWED_TRAILER_DETECTED\x10\t*\xb0\x03\n\x11WindowsNextAction\x12\x0f\n\x0bWINDOWS_SNA\x10\x00\x12\x18\n\x14WINDOWS_OPEN_ALLOWED\x10\x01\x12\x19\n\x15WINDOWS_CLOSE_ALLOWED\x10\x02\x12\x13\n\x0fWINDOWS_OPENING\x10\x03\x12\x13\n\x0fWINDOWS_CLOSING\x10\x04\x12\x12\n\x0eWINDOWS_MOVING\x10\x05\x12\x1e\n\x1aWINDOWS_OPEN_NOT_AVAILABLE\x10\x06\x12\x1f\n\x1bWINDOWS_CLOSE_NOT_AVAILABLE\x10\x07\x12$\n WINDOWS_OPEN_NOT_ALLOWED_FAULTED\x10\x08\x12%\n!WINDOWS_CLOSE_NOT_ALLOWED_FAULTED\x10\t\x12\x32\n.WINDOWS_OBSTRUCTED_WHILE_CLOSING_CLOSE_ALLOWED\x10\n\x12*\n&WINDOWS_CLOSE_NOT_ALLOWED_UNCALIBRATED\x10\x0b\x12)\n%WINDOWS_OPEN_NOT_ALLOWED_UNCALIBRATED\x10\x0c*\x8a\x01\n\x0fWiperFluidState\x12!\n\x1dWIPER_FLUID_STATE_UNSPECIFIED\x10\x00\x12\x1c\n\x18WIPER_FLUID_STATE_NORMAL\x10\x01\x12\x19\n\x15WIPER_FLUID_STATE_LOW\x10\x02\x12\x1b\n\x17WIPER_FLUID_STATE_EMPTY\x10\x03\x62\x06proto3')
28
28
 
29
29
  _globals = globals()
30
30
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
31
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.body_pb2', _globals)
32
32
  if not _descriptor._USE_C_DESCRIPTORS:
33
33
  DESCRIPTOR._loaded_options = None
34
- _globals['_CLOSUREID']._serialized_start=1647
35
- _globals['_CLOSUREID']._serialized_end=2007
36
- _globals['_CLOSURESTATE']._serialized_start=2010
37
- _globals['_CLOSURESTATE']._serialized_end=2183
38
- _globals['_LOCKID']._serialized_start=2186
39
- _globals['_LOCKID']._serialized_end=2557
40
- _globals['_LOCKSTATE']._serialized_start=2559
41
- _globals['_LOCKSTATE']._serialized_end=2681
42
- _globals['_LOCKFAULT']._serialized_start=2683
43
- _globals['_LOCKFAULT']._serialized_end=2746
44
- _globals['_WINDOWINSTANCE']._serialized_start=2749
45
- _globals['_WINDOWINSTANCE']._serialized_end=2952
46
- _globals['_CALIBRATIONSTATUS']._serialized_start=2955
47
- _globals['_CALIBRATIONSTATUS']._serialized_end=3084
48
- _globals['_REARHITCHSTATUS']._serialized_start=3087
49
- _globals['_REARHITCHSTATUS']._serialized_end=3303
50
- _globals['_CLOSUREFAULT']._serialized_start=3306
51
- _globals['_CLOSUREFAULT']._serialized_end=3476
52
- _globals['_TRAILERPRESENCE']._serialized_start=3479
53
- _globals['_TRAILERPRESENCE']._serialized_end=3630
54
- _globals['_CHARGEPORTDOORNEXTACTION']._serialized_start=3633
55
- _globals['_CHARGEPORTDOORNEXTACTION']._serialized_end=4176
56
- _globals['_FRUNKNEXTACTION']._serialized_start=4179
57
- _globals['_FRUNKNEXTACTION']._serialized_end=4611
58
- _globals['_LIFTGATENEXTACTION']._serialized_start=4614
59
- _globals['_LIFTGATENEXTACTION']._serialized_end=5421
60
- _globals['_SIDEBINNEXTACTION']._serialized_start=5424
61
- _globals['_SIDEBINNEXTACTION']._serialized_end=5730
62
- _globals['_TAILGATENEXTACTION']._serialized_start=5733
63
- _globals['_TAILGATENEXTACTION']._serialized_end=6129
64
- _globals['_WINDOWSNEXTACTION']._serialized_start=6132
65
- _globals['_WINDOWSNEXTACTION']._serialized_end=6564
34
+ _globals['_CLOSUREID']._serialized_start=1667
35
+ _globals['_CLOSUREID']._serialized_end=2027
36
+ _globals['_CLOSURESTATE']._serialized_start=2030
37
+ _globals['_CLOSURESTATE']._serialized_end=2203
38
+ _globals['_LOCKID']._serialized_start=2206
39
+ _globals['_LOCKID']._serialized_end=2577
40
+ _globals['_LOCKSTATE']._serialized_start=2579
41
+ _globals['_LOCKSTATE']._serialized_end=2701
42
+ _globals['_LOCKFAULT']._serialized_start=2703
43
+ _globals['_LOCKFAULT']._serialized_end=2766
44
+ _globals['_WINDOWINSTANCE']._serialized_start=2769
45
+ _globals['_WINDOWINSTANCE']._serialized_end=2972
46
+ _globals['_CALIBRATIONSTATUS']._serialized_start=2975
47
+ _globals['_CALIBRATIONSTATUS']._serialized_end=3104
48
+ _globals['_REARHITCHSTATUS']._serialized_start=3107
49
+ _globals['_REARHITCHSTATUS']._serialized_end=3323
50
+ _globals['_CLOSUREFAULT']._serialized_start=3326
51
+ _globals['_CLOSUREFAULT']._serialized_end=3496
52
+ _globals['_TRAILERPRESENCE']._serialized_start=3499
53
+ _globals['_TRAILERPRESENCE']._serialized_end=3650
54
+ _globals['_CHARGEPORTDOORNEXTACTION']._serialized_start=3653
55
+ _globals['_CHARGEPORTDOORNEXTACTION']._serialized_end=4196
56
+ _globals['_FRUNKNEXTACTION']._serialized_start=4199
57
+ _globals['_FRUNKNEXTACTION']._serialized_end=4631
58
+ _globals['_LIFTGATENEXTACTION']._serialized_start=4634
59
+ _globals['_LIFTGATENEXTACTION']._serialized_end=5441
60
+ _globals['_SIDEBINNEXTACTION']._serialized_start=5444
61
+ _globals['_SIDEBINNEXTACTION']._serialized_end=5750
62
+ _globals['_TAILGATENEXTACTION']._serialized_start=5753
63
+ _globals['_TAILGATENEXTACTION']._serialized_end=6149
64
+ _globals['_WINDOWSNEXTACTION']._serialized_start=6152
65
+ _globals['_WINDOWSNEXTACTION']._serialized_end=6584
66
+ _globals['_WIPERFLUIDSTATE']._serialized_start=6587
67
+ _globals['_WIPERFLUIDSTATE']._serialized_end=6725
66
68
  _globals['_CLOSURESSTATE']._serialized_start=59
67
69
  _globals['_CLOSURESSTATE']._serialized_end=991
68
70
  _globals['_CLOSURESSTATE_CLOSURE']._serialized_start=139
@@ -78,5 +80,5 @@ if not _descriptor._USE_C_DESCRIPTORS:
78
80
  _globals['_TRAILERSTATE']._serialized_start=1436
79
81
  _globals['_TRAILERSTATE']._serialized_end=1591
80
82
  _globals['_WIPERFLUIDLEVEL']._serialized_start=1593
81
- _globals['_WIPERFLUIDLEVEL']._serialized_end=1644
83
+ _globals['_WIPERFLUIDLEVEL']._serialized_end=1664
82
84
  # @@protoc_insertion_point(module_scope)
@@ -202,6 +202,13 @@ class WindowsNextAction(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
202
202
  WINDOWS_OBSTRUCTED_WHILE_CLOSING_CLOSE_ALLOWED: _ClassVar[WindowsNextAction]
203
203
  WINDOWS_CLOSE_NOT_ALLOWED_UNCALIBRATED: _ClassVar[WindowsNextAction]
204
204
  WINDOWS_OPEN_NOT_ALLOWED_UNCALIBRATED: _ClassVar[WindowsNextAction]
205
+
206
+ class WiperFluidState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
207
+ __slots__ = ()
208
+ WIPER_FLUID_STATE_UNSPECIFIED: _ClassVar[WiperFluidState]
209
+ WIPER_FLUID_STATE_NORMAL: _ClassVar[WiperFluidState]
210
+ WIPER_FLUID_STATE_LOW: _ClassVar[WiperFluidState]
211
+ WIPER_FLUID_STATE_EMPTY: _ClassVar[WiperFluidState]
205
212
  CLOSURE_ID_UNSPECIFIED: ClosureId
206
213
  DOOR_FRONT_LEFT: ClosureId
207
214
  DOOR_FRONT_RIGHT: ClosureId
@@ -350,6 +357,10 @@ WINDOWS_CLOSE_NOT_ALLOWED_FAULTED: WindowsNextAction
350
357
  WINDOWS_OBSTRUCTED_WHILE_CLOSING_CLOSE_ALLOWED: WindowsNextAction
351
358
  WINDOWS_CLOSE_NOT_ALLOWED_UNCALIBRATED: WindowsNextAction
352
359
  WINDOWS_OPEN_NOT_ALLOWED_UNCALIBRATED: WindowsNextAction
360
+ WIPER_FLUID_STATE_UNSPECIFIED: WiperFluidState
361
+ WIPER_FLUID_STATE_NORMAL: WiperFluidState
362
+ WIPER_FLUID_STATE_LOW: WiperFluidState
363
+ WIPER_FLUID_STATE_EMPTY: WiperFluidState
353
364
 
354
365
  class ClosuresState(_message.Message):
355
366
  __slots__ = ("closure",)
@@ -419,7 +430,7 @@ class TrailerState(_message.Message):
419
430
  def __init__(self, presence: _Optional[_Union[TrailerPresence, str]] = ..., rear_hitch_status: _Optional[_Union[RearHitchStatus, str]] = ...) -> None: ...
420
431
 
421
432
  class WiperFluidLevel(_message.Message):
422
- __slots__ = ("field_2",)
423
- FIELD_2_FIELD_NUMBER: _ClassVar[int]
424
- field_2: int
425
- def __init__(self, field_2: _Optional[int] = ...) -> None: ...
433
+ __slots__ = ("state",)
434
+ STATE_FIELD_NUMBER: _ClassVar[int]
435
+ state: WiperFluidState
436
+ def __init__(self, state: _Optional[_Union[WiperFluidState, str]] = ...) -> None: ...
@@ -15,6 +15,8 @@ message VasKeyperDevices {
15
15
  message Label {
16
16
  optional string name = 1; // set on phone keys, e.g. the phone's name
17
17
  optional KeyType key_type = 3; // same as credentials.key_type
18
+ optional bool deletable = 4;
19
+ optional int32 wcc_version = 5;
18
20
  }
19
21
 
20
22
  message Device {
@@ -23,7 +25,7 @@ message VasKeyperDevices {
23
25
  optional string profile_id = 3; // the driver profile the key belongs to
24
26
  optional string public_key = 4; // phone keys; 64 bytes as hex
25
27
  optional int32 revision = 5; // key table revision when last written
26
- optional bool vehicle_response_required = 6;
28
+ optional int32 vehicle_response_required = 6;
27
29
  }
28
30
 
29
31
  message Credentials {
@@ -32,7 +34,7 @@ message VasKeyperDevices {
32
34
  KeyMaterial fob = 6; // key fob
33
35
  KeyMaterial phone = 7; // phone keys; id is the phone's UUID
34
36
  optional KeyType key_type = 9;
35
- optional bool active = 10;
37
+ optional DeviceOem device_oem = 10;
36
38
 
37
39
  message Info {
38
40
  optional int32 a = 1; // unknown
@@ -58,6 +60,15 @@ message VasKeyperDevices {
58
60
  KEY_TYPE_KEY_FOB = 4; // inferred
59
61
  }
60
62
 
63
+ enum DeviceOem {
64
+ DEVICE_OEM_UNKNOWN = 0;
65
+ DEVICE_OEM_RIVIAN = 1;
66
+ DEVICE_OEM_APPLE = 2;
67
+ DEVICE_OEM_GOOGLE = 3;
68
+ DEVICE_OEM_SAMSUNG = 4;
69
+ DEVICE_OEM_VW = 5;
70
+ }
71
+
61
72
  message KeyMaterial {
62
73
  optional bytes id = 1;
63
74
  optional bytes credential = 2; // likely key material
@@ -0,0 +1,52 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: rivian/parallax/proto/device_table.proto
5
+ # Protobuf Python Version: 6.31.1
6
+ """Generated protocol buffer code."""
7
+ from google.protobuf import descriptor as _descriptor
8
+ from google.protobuf import descriptor_pool as _descriptor_pool
9
+ from google.protobuf import runtime_version as _runtime_version
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ from google.protobuf.internal import builder as _builder
12
+ _runtime_version.ValidateProtobufRuntimeVersion(
13
+ _runtime_version.Domain.PUBLIC,
14
+ 6,
15
+ 31,
16
+ 1,
17
+ '',
18
+ 'rivian/parallax/proto/device_table.proto'
19
+ )
20
+ # @@protoc_insertion_point(imports)
21
+
22
+ _sym_db = _symbol_database.Default()
23
+
24
+
25
+
26
+
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(rivian/parallax/proto/device_table.proto\x12\x1crivian.parallax.device_table\"\xd6\x0e\n\x10VasKeyperDevices\x12\x43\n\x05label\x18\x01 \x01(\x0b\x32\x34.rivian.parallax.device_table.VasKeyperDevices.Label\x12\x45\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x35.rivian.parallax.device_table.VasKeyperDevices.Device\x12O\n\x0b\x63redentials\x18\x03 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.Credentials\x1a\xcf\x01\n\x05Label\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12M\n\x08key_type\x18\x03 \x01(\x0e\x32\x36.rivian.parallax.device_table.VasKeyperDevices.KeyTypeH\x01\x88\x01\x01\x12\x16\n\tdeletable\x18\x04 \x01(\x08H\x02\x88\x01\x01\x12\x18\n\x0bwcc_version\x18\x05 \x01(\x05H\x03\x88\x01\x01\x42\x07\n\x05_nameB\x0b\n\t_key_typeB\x0c\n\n_deletableB\x0e\n\x0c_wcc_version\x1a\x96\x02\n\x06\x44\x65vice\x12\x1f\n\x12mapped_identity_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04hrid\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nprofile_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\npublic_key\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08revision\x18\x05 \x01(\x05H\x04\x88\x01\x01\x12&\n\x19vehicle_response_required\x18\x06 \x01(\x05H\x05\x88\x01\x01\x42\x15\n\x13_mapped_identity_idB\x07\n\x05_hridB\r\n\x0b_profile_idB\r\n\x0b_public_keyB\x0b\n\t_revisionB\x1c\n\x1a_vehicle_response_required\x1a\x9d\x05\n\x0b\x43redentials\x12M\n\x04info\x18\x01 \x01(\x0b\x32?.rivian.parallax.device_table.VasKeyperDevices.Credentials.Info\x12H\n\x04\x63\x61rd\x18\x05 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.KeyMaterial\x12G\n\x03\x66ob\x18\x06 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.KeyMaterial\x12I\n\x05phone\x18\x07 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.KeyMaterial\x12M\n\x08key_type\x18\t \x01(\x0e\x32\x36.rivian.parallax.device_table.VasKeyperDevices.KeyTypeH\x00\x88\x01\x01\x12Q\n\ndevice_oem\x18\n \x01(\x0e\x32\x38.rivian.parallax.device_table.VasKeyperDevices.DeviceOemH\x01\x88\x01\x01\x1a\xa2\x01\n\x04Info\x12\x0e\n\x01\x61\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x0e\n\x01\x63\x18\x04 \x01(\x05H\x01\x88\x01\x01\x12M\n\x06status\x18\x05 \x01(\x0e\x32\x38.rivian.parallax.device_table.VasKeyperDevices.KeyStatusH\x02\x88\x01\x01\x12\x0e\n\x01\x62\x18\x06 \x01(\x05H\x03\x88\x01\x01\x42\x04\n\x02_aB\x04\n\x02_cB\t\n\x07_statusB\x04\n\x02_bB\x0b\n\t_key_typeB\r\n\x0b_device_oem\x1aM\n\x0bKeyMaterial\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x17\n\ncredential\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x42\x05\n\x03_idB\r\n\x0b_credential\"\x8f\x01\n\tKeyStatus\x12\x1a\n\x16KEY_STATUS_UNSPECIFIED\x10\x00\x12\x15\n\x11KEY_STATUS_ACTIVE\x10\x01\x12\x17\n\x13KEY_STATUS_INACTIVE\x10\x03\x12\x1e\n\x1aKEY_STATUS_WAITING_TO_PAIR\x10\x05\x12\x16\n\x12KEY_STATUS_PAIRING\x10\x07\"d\n\x07KeyType\x12\x18\n\x14KEY_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eKEY_TYPE_PHONE\x10\x02\x12\x15\n\x11KEY_TYPE_KEY_CARD\x10\x03\x12\x14\n\x10KEY_TYPE_KEY_FOB\x10\x04\"\x92\x01\n\tDeviceOem\x12\x16\n\x12\x44\x45VICE_OEM_UNKNOWN\x10\x00\x12\x15\n\x11\x44\x45VICE_OEM_RIVIAN\x10\x01\x12\x14\n\x10\x44\x45VICE_OEM_APPLE\x10\x02\x12\x15\n\x11\x44\x45VICE_OEM_GOOGLE\x10\x03\x12\x16\n\x12\x44\x45VICE_OEM_SAMSUNG\x10\x04\x12\x11\n\rDEVICE_OEM_VW\x10\x05\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.device_table_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_VASKEYPERDEVICES']._serialized_start=75
35
+ _globals['_VASKEYPERDEVICES']._serialized_end=1953
36
+ _globals['_VASKEYPERDEVICES_LABEL']._serialized_start=317
37
+ _globals['_VASKEYPERDEVICES_LABEL']._serialized_end=524
38
+ _globals['_VASKEYPERDEVICES_DEVICE']._serialized_start=527
39
+ _globals['_VASKEYPERDEVICES_DEVICE']._serialized_end=805
40
+ _globals['_VASKEYPERDEVICES_CREDENTIALS']._serialized_start=808
41
+ _globals['_VASKEYPERDEVICES_CREDENTIALS']._serialized_end=1477
42
+ _globals['_VASKEYPERDEVICES_CREDENTIALS_INFO']._serialized_start=1287
43
+ _globals['_VASKEYPERDEVICES_CREDENTIALS_INFO']._serialized_end=1449
44
+ _globals['_VASKEYPERDEVICES_KEYMATERIAL']._serialized_start=1479
45
+ _globals['_VASKEYPERDEVICES_KEYMATERIAL']._serialized_end=1556
46
+ _globals['_VASKEYPERDEVICES_KEYSTATUS']._serialized_start=1559
47
+ _globals['_VASKEYPERDEVICES_KEYSTATUS']._serialized_end=1702
48
+ _globals['_VASKEYPERDEVICES_KEYTYPE']._serialized_start=1704
49
+ _globals['_VASKEYPERDEVICES_KEYTYPE']._serialized_end=1804
50
+ _globals['_VASKEYPERDEVICES_DEVICEOEM']._serialized_start=1807
51
+ _globals['_VASKEYPERDEVICES_DEVICEOEM']._serialized_end=1953
52
+ # @@protoc_insertion_point(module_scope)
@@ -30,13 +30,31 @@ class VasKeyperDevices(_message.Message):
30
30
  KEY_TYPE_PHONE: VasKeyperDevices.KeyType
31
31
  KEY_TYPE_KEY_CARD: VasKeyperDevices.KeyType
32
32
  KEY_TYPE_KEY_FOB: VasKeyperDevices.KeyType
33
+ class DeviceOem(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
34
+ __slots__ = ()
35
+ DEVICE_OEM_UNKNOWN: _ClassVar[VasKeyperDevices.DeviceOem]
36
+ DEVICE_OEM_RIVIAN: _ClassVar[VasKeyperDevices.DeviceOem]
37
+ DEVICE_OEM_APPLE: _ClassVar[VasKeyperDevices.DeviceOem]
38
+ DEVICE_OEM_GOOGLE: _ClassVar[VasKeyperDevices.DeviceOem]
39
+ DEVICE_OEM_SAMSUNG: _ClassVar[VasKeyperDevices.DeviceOem]
40
+ DEVICE_OEM_VW: _ClassVar[VasKeyperDevices.DeviceOem]
41
+ DEVICE_OEM_UNKNOWN: VasKeyperDevices.DeviceOem
42
+ DEVICE_OEM_RIVIAN: VasKeyperDevices.DeviceOem
43
+ DEVICE_OEM_APPLE: VasKeyperDevices.DeviceOem
44
+ DEVICE_OEM_GOOGLE: VasKeyperDevices.DeviceOem
45
+ DEVICE_OEM_SAMSUNG: VasKeyperDevices.DeviceOem
46
+ DEVICE_OEM_VW: VasKeyperDevices.DeviceOem
33
47
  class Label(_message.Message):
34
- __slots__ = ("name", "key_type")
48
+ __slots__ = ("name", "key_type", "deletable", "wcc_version")
35
49
  NAME_FIELD_NUMBER: _ClassVar[int]
36
50
  KEY_TYPE_FIELD_NUMBER: _ClassVar[int]
51
+ DELETABLE_FIELD_NUMBER: _ClassVar[int]
52
+ WCC_VERSION_FIELD_NUMBER: _ClassVar[int]
37
53
  name: str
38
54
  key_type: VasKeyperDevices.KeyType
39
- def __init__(self, name: _Optional[str] = ..., key_type: _Optional[_Union[VasKeyperDevices.KeyType, str]] = ...) -> None: ...
55
+ deletable: bool
56
+ wcc_version: int
57
+ def __init__(self, name: _Optional[str] = ..., key_type: _Optional[_Union[VasKeyperDevices.KeyType, str]] = ..., deletable: bool = ..., wcc_version: _Optional[int] = ...) -> None: ...
40
58
  class Device(_message.Message):
41
59
  __slots__ = ("mapped_identity_id", "hrid", "profile_id", "public_key", "revision", "vehicle_response_required")
42
60
  MAPPED_IDENTITY_ID_FIELD_NUMBER: _ClassVar[int]
@@ -50,10 +68,10 @@ class VasKeyperDevices(_message.Message):
50
68
  profile_id: str
51
69
  public_key: str
52
70
  revision: int
53
- vehicle_response_required: bool
54
- def __init__(self, mapped_identity_id: _Optional[str] = ..., hrid: _Optional[str] = ..., profile_id: _Optional[str] = ..., public_key: _Optional[str] = ..., revision: _Optional[int] = ..., vehicle_response_required: bool = ...) -> None: ...
71
+ vehicle_response_required: int
72
+ def __init__(self, mapped_identity_id: _Optional[str] = ..., hrid: _Optional[str] = ..., profile_id: _Optional[str] = ..., public_key: _Optional[str] = ..., revision: _Optional[int] = ..., vehicle_response_required: _Optional[int] = ...) -> None: ...
55
73
  class Credentials(_message.Message):
56
- __slots__ = ("info", "card", "fob", "phone", "key_type", "active")
74
+ __slots__ = ("info", "card", "fob", "phone", "key_type", "device_oem")
57
75
  class Info(_message.Message):
58
76
  __slots__ = ("a", "c", "status", "b")
59
77
  A_FIELD_NUMBER: _ClassVar[int]
@@ -70,14 +88,14 @@ class VasKeyperDevices(_message.Message):
70
88
  FOB_FIELD_NUMBER: _ClassVar[int]
71
89
  PHONE_FIELD_NUMBER: _ClassVar[int]
72
90
  KEY_TYPE_FIELD_NUMBER: _ClassVar[int]
73
- ACTIVE_FIELD_NUMBER: _ClassVar[int]
91
+ DEVICE_OEM_FIELD_NUMBER: _ClassVar[int]
74
92
  info: VasKeyperDevices.Credentials.Info
75
93
  card: VasKeyperDevices.KeyMaterial
76
94
  fob: VasKeyperDevices.KeyMaterial
77
95
  phone: VasKeyperDevices.KeyMaterial
78
96
  key_type: VasKeyperDevices.KeyType
79
- active: bool
80
- def __init__(self, info: _Optional[_Union[VasKeyperDevices.Credentials.Info, _Mapping]] = ..., card: _Optional[_Union[VasKeyperDevices.KeyMaterial, _Mapping]] = ..., fob: _Optional[_Union[VasKeyperDevices.KeyMaterial, _Mapping]] = ..., phone: _Optional[_Union[VasKeyperDevices.KeyMaterial, _Mapping]] = ..., key_type: _Optional[_Union[VasKeyperDevices.KeyType, str]] = ..., active: bool = ...) -> None: ...
97
+ device_oem: VasKeyperDevices.DeviceOem
98
+ def __init__(self, info: _Optional[_Union[VasKeyperDevices.Credentials.Info, _Mapping]] = ..., card: _Optional[_Union[VasKeyperDevices.KeyMaterial, _Mapping]] = ..., fob: _Optional[_Union[VasKeyperDevices.KeyMaterial, _Mapping]] = ..., phone: _Optional[_Union[VasKeyperDevices.KeyMaterial, _Mapping]] = ..., key_type: _Optional[_Union[VasKeyperDevices.KeyType, str]] = ..., device_oem: _Optional[_Union[VasKeyperDevices.DeviceOem, str]] = ...) -> None: ...
81
99
  class KeyMaterial(_message.Message):
82
100
  __slots__ = ("id", "credential")
83
101
  ID_FIELD_NUMBER: _ClassVar[int]
@@ -55,7 +55,7 @@ message Gnss {
55
55
  float position_vertical_error = 7; // meters
56
56
  float speed_error = 8; // m/s
57
57
  float bearing_error = 9; // degrees
58
- int64 time = 10; // epoch milliseconds; time of the whole fix
58
+ int64 time = 10; // epoch ms (Unix, or GPS on some vehicles); the whole fix
59
59
  }
60
60
 
61
61
  // dynamics.vehicle.location
@@ -146,7 +146,13 @@ message MassEstimate {
146
146
 
147
147
  // dynamics.brakes.fluid_level
148
148
  message BrakeFluidLevel {
149
- // Likely the app's FluidLevelLow (inactive | active | signal not
150
- // available, i.e. the gateway's brakeFluidLow); its numbers are unknown.
151
- optional int32 field_1 = 1;
149
+ BrakeFluidLow fluid_low = 1;
150
+ }
151
+
152
+ // Best guess: the app's FluidLevelLow values (the gateway's brakeFluidLow),
153
+ // numbered like the other SNA / false / true enums.
154
+ enum BrakeFluidLow {
155
+ BRAKE_FLUID_LOW_SIGNAL_NOT_AVAILABLE = 0;
156
+ BRAKE_FLUID_LOW_INACTIVE = 1;
157
+ BRAKE_FLUID_LOW_ACTIVE = 2;
152
158
  }
@@ -24,27 +24,29 @@ _sym_db = _symbol_database.Default()
24
24
 
25
25
 
26
26
 
27
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$rivian/parallax/proto/dynamics.proto\x12\x18rivian.parallax.dynamics\"\x89\x01\n\tDriveMode\x12;\n\x04mode\x18\x01 \x01(\x0e\x32(.rivian.parallax.dynamics.DriveModeValueH\x00\x88\x01\x01\x12\x1a\n\x12limited_accel_cold\x18\x08 \x01(\x08\x12\x1a\n\x12limited_regen_cold\x18\t \x01(\x08\x42\x07\n\x05_mode\"9\n\x04Gear\x12\x31\n\x04gear\x18\x01 \x01(\x0e\x32#.rivian.parallax.dynamics.GearValue\"\xdb\x01\n\x04Gnss\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x01\x12\r\n\x05speed\x18\x04 \x01(\x02\x12\x0f\n\x07\x62\x65\x61ring\x18\x05 \x01(\x02\x12!\n\x19position_horizontal_error\x18\x06 \x01(\x02\x12\x1f\n\x17position_vertical_error\x18\x07 \x01(\x02\x12\x13\n\x0bspeed_error\x18\x08 \x01(\x02\x12\x15\n\rbearing_error\x18\t \x01(\x02\x12\x0c\n\x04time\x18\n \x01(\x03\"a\n\rKnownLocation\x12\x43\n\x08location\x18\x01 \x01(\x0e\x32,.rivian.parallax.dynamics.KnownLocationValueH\x00\x88\x01\x01\x42\x0b\n\t_location\".\n\x08Odometer\x12\x15\n\x08\x64istance\x18\x01 \x01(\x03H\x00\x88\x01\x01\x42\x0b\n\t_distance\"\xd7\x01\n\x05Range\x12\x19\n\x11\x64istance_to_empty\x18\x01 \x01(\x05\x12@\n\tthreshold\x18\x02 \x01(\x0e\x32(.rivian.parallax.dynamics.RangeThresholdH\x00\x88\x01\x01\x12L\n\x12temperature_impact\x18\x03 \x01(\x0e\x32+.rivian.parallax.dynamics.TemperatureImpactH\x01\x88\x01\x01\x42\x0c\n\n_thresholdB\x15\n\x13_temperature_impact\"\xb6\x02\n\nTiresState\x12\x1b\n\x13tpms_monitor_status\x18\x01 \x01(\x05\x12\x37\n\x04tire\x18\x02 \x03(\x0b\x32).rivian.parallax.dynamics.TiresState.Tire\x1a\xd1\x01\n\x04Tire\x12\x33\n\x03pos\x18\x01 \x01(\x0e\x32&.rivian.parallax.dynamics.TirePosition\x12\x41\n\x06status\x18\x02 \x01(\x0e\x32,.rivian.parallax.dynamics.TirePressureStatusH\x00\x88\x01\x01\x12\x15\n\x08pressure\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x0f\n\x07invalid\x18\x04 \x01(\x08\x12\x11\n\ttimestamp\x18\x05 \x01(\x03\x42\t\n\x07_statusB\x0b\n\t_pressure\"\xbe\x01\n\nEfficiency\x12\x17\n\nefficiency\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x14\n\x07\x66ield_2\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12=\n\x07history\x18\x03 \x03(\x0b\x32,.rivian.parallax.dynamics.Efficiency.History\x1a\'\n\x07History\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05\x42\r\n\x0b_efficiencyB\n\n\x08_field_2\"*\n\x0cMassEstimate\x12\x11\n\x04mass\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x07\n\x05_mass\"3\n\x0f\x42rakeFluidLevel\x12\x14\n\x07\x66ield_1\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\n\n\x08_field_1*\xcd\x03\n\x0e\x44riveModeValue\x12\x1a\n\x16\x44RIVE_MODE_UNSPECIFIED\x10\x00\x12\x13\n\x0f\x44RIVE_MODE_INIT\x10\x01\x12\x17\n\x13\x44RIVE_MODE_EVERYDAY\x10\x02\x12 \n\x1c\x44RIVE_MODE_OFF_ROAD_SNOW_ICE\x10\x03\x12\"\n\x1e\x44RIVE_MODE_OFF_ROAD_SPORT_AUTO\x10\x04\x12#\n\x1f\x44RIVE_MODE_OFF_ROAD_SPORT_DRIFT\x10\x05\x12\x1b\n\x17\x44RIVE_MODE_SPORT_LAUNCH\x10\x06\x12\x14\n\x10\x44RIVE_MODE_FAULT\x10\x07\x12\x14\n\x10\x44RIVE_MODE_SPORT\x10\x08\x12\x17\n\x13\x44RIVE_MODE_DISTANCE\x10\t\x12\x15\n\x11\x44RIVE_MODE_TOWING\x10\n\x12\x1c\n\x18\x44RIVE_MODE_OFF_ROAD_AUTO\x10\x0b\x12\x1c\n\x18\x44RIVE_MODE_OFF_ROAD_SAND\x10\x0c\x12\x1d\n\x19\x44RIVE_MODE_OFF_ROAD_ROCKS\x10\r\x12\x1b\n\x17\x44RIVE_MODE_OFF_ROAD_MUD\x10\x0e\x12\x15\n\x11\x44RIVE_MODE_WINTER\x10\x0f*d\n\tGearValue\x12\x14\n\x10GEAR_NOT_DEFINED\x10\x00\x12\r\n\tGEAR_PARK\x10\x01\x12\x10\n\x0cGEAR_REVERSE\x10\x02\x12\x10\n\x0cGEAR_NEUTRAL\x10\x03\x12\x0e\n\nGEAR_DRIVE\x10\x04*\x82\x01\n\x12KnownLocationValue\x12\x1e\n\x1aKNOWN_LOCATION_UNSPECIFIED\x10\x00\x12\x1a\n\x16KNOWN_LOCATION_UNKNOWN\x10\x01\x12\x17\n\x13KNOWN_LOCATION_HOME\x10\x02\x12\x17\n\x13KNOWN_LOCATION_WORK\x10\x03*\xa3\x01\n\x0eRangeThreshold\x12\x1f\n\x1bRANGE_THRESHOLD_UNSPECIFIED\x10\x00\x12\x1a\n\x16RANGE_THRESHOLD_NORMAL\x10\x01\x12\x17\n\x13RANGE_THRESHOLD_LOW\x10\x02\x12\x17\n\x13RANGE_THRESHOLD_RED\x10\x03\x12\"\n\x1eRANGE_THRESHOLD_CRITICALLY_LOW\x10\x04*\x93\x01\n\x11TemperatureImpact\x12\"\n\x1eTEMPERATURE_IMPACT_UNSPECIFIED\x10\x00\x12\x1c\n\x18TEMPERATURE_NORMAL_RANGE\x10\x01\x12\x1f\n\x1bTEMPERATURE_COLD_MAY_IMPACT\x10\x02\x12\x1b\n\x17TEMPERATURE_COLD_IMPACT\x10\x03*\x81\x01\n\x0cTirePosition\x12\x1d\n\x19TIRE_POSITION_UNSPECIFIED\x10\x00\x12\x13\n\x0fTIRE_FRONT_LEFT\x10\x01\x12\x14\n\x10TIRE_FRONT_RIGHT\x10\x02\x12\x12\n\x0eTIRE_REAR_LEFT\x10\x03\x12\x13\n\x0fTIRE_REAR_RIGHT\x10\x04*\xd4\x01\n\x12TirePressureStatus\x12$\n TIRE_PRESSURE_STATUS_UNSPECIFIED\x10\x00\x12\x1f\n\x1bTIRE_PRESSURE_STATUS_NORMAL\x10\x01\x12%\n!TIRE_PRESSURE_STATUS_WARNING_HARD\x10\x02\x12%\n!TIRE_PRESSURE_STATUS_WARNING_SOFT\x10\x03\x12)\n%TIRE_PRESSURE_STATUS_WARNING_PUNCTURE\x10\x04\x62\x06proto3')
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$rivian/parallax/proto/dynamics.proto\x12\x18rivian.parallax.dynamics\"\x89\x01\n\tDriveMode\x12;\n\x04mode\x18\x01 \x01(\x0e\x32(.rivian.parallax.dynamics.DriveModeValueH\x00\x88\x01\x01\x12\x1a\n\x12limited_accel_cold\x18\x08 \x01(\x08\x12\x1a\n\x12limited_regen_cold\x18\t \x01(\x08\x42\x07\n\x05_mode\"9\n\x04Gear\x12\x31\n\x04gear\x18\x01 \x01(\x0e\x32#.rivian.parallax.dynamics.GearValue\"\xdb\x01\n\x04Gnss\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x01\x12\r\n\x05speed\x18\x04 \x01(\x02\x12\x0f\n\x07\x62\x65\x61ring\x18\x05 \x01(\x02\x12!\n\x19position_horizontal_error\x18\x06 \x01(\x02\x12\x1f\n\x17position_vertical_error\x18\x07 \x01(\x02\x12\x13\n\x0bspeed_error\x18\x08 \x01(\x02\x12\x15\n\rbearing_error\x18\t \x01(\x02\x12\x0c\n\x04time\x18\n \x01(\x03\"a\n\rKnownLocation\x12\x43\n\x08location\x18\x01 \x01(\x0e\x32,.rivian.parallax.dynamics.KnownLocationValueH\x00\x88\x01\x01\x42\x0b\n\t_location\".\n\x08Odometer\x12\x15\n\x08\x64istance\x18\x01 \x01(\x03H\x00\x88\x01\x01\x42\x0b\n\t_distance\"\xd7\x01\n\x05Range\x12\x19\n\x11\x64istance_to_empty\x18\x01 \x01(\x05\x12@\n\tthreshold\x18\x02 \x01(\x0e\x32(.rivian.parallax.dynamics.RangeThresholdH\x00\x88\x01\x01\x12L\n\x12temperature_impact\x18\x03 \x01(\x0e\x32+.rivian.parallax.dynamics.TemperatureImpactH\x01\x88\x01\x01\x42\x0c\n\n_thresholdB\x15\n\x13_temperature_impact\"\xb6\x02\n\nTiresState\x12\x1b\n\x13tpms_monitor_status\x18\x01 \x01(\x05\x12\x37\n\x04tire\x18\x02 \x03(\x0b\x32).rivian.parallax.dynamics.TiresState.Tire\x1a\xd1\x01\n\x04Tire\x12\x33\n\x03pos\x18\x01 \x01(\x0e\x32&.rivian.parallax.dynamics.TirePosition\x12\x41\n\x06status\x18\x02 \x01(\x0e\x32,.rivian.parallax.dynamics.TirePressureStatusH\x00\x88\x01\x01\x12\x15\n\x08pressure\x18\x03 \x01(\x01H\x01\x88\x01\x01\x12\x0f\n\x07invalid\x18\x04 \x01(\x08\x12\x11\n\ttimestamp\x18\x05 \x01(\x03\x42\t\n\x07_statusB\x0b\n\t_pressure\"\xbe\x01\n\nEfficiency\x12\x17\n\nefficiency\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x14\n\x07\x66ield_2\x18\x02 \x01(\x05H\x01\x88\x01\x01\x12=\n\x07history\x18\x03 \x03(\x0b\x32,.rivian.parallax.dynamics.Efficiency.History\x1a\'\n\x07History\x12\r\n\x05index\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x05\x42\r\n\x0b_efficiencyB\n\n\x08_field_2\"*\n\x0cMassEstimate\x12\x11\n\x04mass\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x07\n\x05_mass\"M\n\x0f\x42rakeFluidLevel\x12:\n\tfluid_low\x18\x01 \x01(\x0e\x32\'.rivian.parallax.dynamics.BrakeFluidLow*\xcd\x03\n\x0e\x44riveModeValue\x12\x1a\n\x16\x44RIVE_MODE_UNSPECIFIED\x10\x00\x12\x13\n\x0f\x44RIVE_MODE_INIT\x10\x01\x12\x17\n\x13\x44RIVE_MODE_EVERYDAY\x10\x02\x12 \n\x1c\x44RIVE_MODE_OFF_ROAD_SNOW_ICE\x10\x03\x12\"\n\x1e\x44RIVE_MODE_OFF_ROAD_SPORT_AUTO\x10\x04\x12#\n\x1f\x44RIVE_MODE_OFF_ROAD_SPORT_DRIFT\x10\x05\x12\x1b\n\x17\x44RIVE_MODE_SPORT_LAUNCH\x10\x06\x12\x14\n\x10\x44RIVE_MODE_FAULT\x10\x07\x12\x14\n\x10\x44RIVE_MODE_SPORT\x10\x08\x12\x17\n\x13\x44RIVE_MODE_DISTANCE\x10\t\x12\x15\n\x11\x44RIVE_MODE_TOWING\x10\n\x12\x1c\n\x18\x44RIVE_MODE_OFF_ROAD_AUTO\x10\x0b\x12\x1c\n\x18\x44RIVE_MODE_OFF_ROAD_SAND\x10\x0c\x12\x1d\n\x19\x44RIVE_MODE_OFF_ROAD_ROCKS\x10\r\x12\x1b\n\x17\x44RIVE_MODE_OFF_ROAD_MUD\x10\x0e\x12\x15\n\x11\x44RIVE_MODE_WINTER\x10\x0f*d\n\tGearValue\x12\x14\n\x10GEAR_NOT_DEFINED\x10\x00\x12\r\n\tGEAR_PARK\x10\x01\x12\x10\n\x0cGEAR_REVERSE\x10\x02\x12\x10\n\x0cGEAR_NEUTRAL\x10\x03\x12\x0e\n\nGEAR_DRIVE\x10\x04*\x82\x01\n\x12KnownLocationValue\x12\x1e\n\x1aKNOWN_LOCATION_UNSPECIFIED\x10\x00\x12\x1a\n\x16KNOWN_LOCATION_UNKNOWN\x10\x01\x12\x17\n\x13KNOWN_LOCATION_HOME\x10\x02\x12\x17\n\x13KNOWN_LOCATION_WORK\x10\x03*\xa3\x01\n\x0eRangeThreshold\x12\x1f\n\x1bRANGE_THRESHOLD_UNSPECIFIED\x10\x00\x12\x1a\n\x16RANGE_THRESHOLD_NORMAL\x10\x01\x12\x17\n\x13RANGE_THRESHOLD_LOW\x10\x02\x12\x17\n\x13RANGE_THRESHOLD_RED\x10\x03\x12\"\n\x1eRANGE_THRESHOLD_CRITICALLY_LOW\x10\x04*\x93\x01\n\x11TemperatureImpact\x12\"\n\x1eTEMPERATURE_IMPACT_UNSPECIFIED\x10\x00\x12\x1c\n\x18TEMPERATURE_NORMAL_RANGE\x10\x01\x12\x1f\n\x1bTEMPERATURE_COLD_MAY_IMPACT\x10\x02\x12\x1b\n\x17TEMPERATURE_COLD_IMPACT\x10\x03*\x81\x01\n\x0cTirePosition\x12\x1d\n\x19TIRE_POSITION_UNSPECIFIED\x10\x00\x12\x13\n\x0fTIRE_FRONT_LEFT\x10\x01\x12\x14\n\x10TIRE_FRONT_RIGHT\x10\x02\x12\x12\n\x0eTIRE_REAR_LEFT\x10\x03\x12\x13\n\x0fTIRE_REAR_RIGHT\x10\x04*\xd4\x01\n\x12TirePressureStatus\x12$\n TIRE_PRESSURE_STATUS_UNSPECIFIED\x10\x00\x12\x1f\n\x1bTIRE_PRESSURE_STATUS_NORMAL\x10\x01\x12%\n!TIRE_PRESSURE_STATUS_WARNING_HARD\x10\x02\x12%\n!TIRE_PRESSURE_STATUS_WARNING_SOFT\x10\x03\x12)\n%TIRE_PRESSURE_STATUS_WARNING_PUNCTURE\x10\x04*s\n\rBrakeFluidLow\x12(\n$BRAKE_FLUID_LOW_SIGNAL_NOT_AVAILABLE\x10\x00\x12\x1c\n\x18\x42RAKE_FLUID_LOW_INACTIVE\x10\x01\x12\x1a\n\x16\x42RAKE_FLUID_LOW_ACTIVE\x10\x02\x62\x06proto3')
28
28
 
29
29
  _globals = globals()
30
30
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
31
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.dynamics_pb2', _globals)
32
32
  if not _descriptor._USE_C_DESCRIPTORS:
33
33
  DESCRIPTOR._loaded_options = None
34
- _globals['_DRIVEMODEVALUE']._serialized_start=1456
35
- _globals['_DRIVEMODEVALUE']._serialized_end=1917
36
- _globals['_GEARVALUE']._serialized_start=1919
37
- _globals['_GEARVALUE']._serialized_end=2019
38
- _globals['_KNOWNLOCATIONVALUE']._serialized_start=2022
39
- _globals['_KNOWNLOCATIONVALUE']._serialized_end=2152
40
- _globals['_RANGETHRESHOLD']._serialized_start=2155
41
- _globals['_RANGETHRESHOLD']._serialized_end=2318
42
- _globals['_TEMPERATUREIMPACT']._serialized_start=2321
43
- _globals['_TEMPERATUREIMPACT']._serialized_end=2468
44
- _globals['_TIREPOSITION']._serialized_start=2471
45
- _globals['_TIREPOSITION']._serialized_end=2600
46
- _globals['_TIREPRESSURESTATUS']._serialized_start=2603
47
- _globals['_TIREPRESSURESTATUS']._serialized_end=2815
34
+ _globals['_DRIVEMODEVALUE']._serialized_start=1482
35
+ _globals['_DRIVEMODEVALUE']._serialized_end=1943
36
+ _globals['_GEARVALUE']._serialized_start=1945
37
+ _globals['_GEARVALUE']._serialized_end=2045
38
+ _globals['_KNOWNLOCATIONVALUE']._serialized_start=2048
39
+ _globals['_KNOWNLOCATIONVALUE']._serialized_end=2178
40
+ _globals['_RANGETHRESHOLD']._serialized_start=2181
41
+ _globals['_RANGETHRESHOLD']._serialized_end=2344
42
+ _globals['_TEMPERATUREIMPACT']._serialized_start=2347
43
+ _globals['_TEMPERATUREIMPACT']._serialized_end=2494
44
+ _globals['_TIREPOSITION']._serialized_start=2497
45
+ _globals['_TIREPOSITION']._serialized_end=2626
46
+ _globals['_TIREPRESSURESTATUS']._serialized_start=2629
47
+ _globals['_TIREPRESSURESTATUS']._serialized_end=2841
48
+ _globals['_BRAKEFLUIDLOW']._serialized_start=2843
49
+ _globals['_BRAKEFLUIDLOW']._serialized_end=2958
48
50
  _globals['_DRIVEMODE']._serialized_start=67
49
51
  _globals['_DRIVEMODE']._serialized_end=204
50
52
  _globals['_GEAR']._serialized_start=206
@@ -68,5 +70,5 @@ if not _descriptor._USE_C_DESCRIPTORS:
68
70
  _globals['_MASSESTIMATE']._serialized_start=1358
69
71
  _globals['_MASSESTIMATE']._serialized_end=1400
70
72
  _globals['_BRAKEFLUIDLEVEL']._serialized_start=1402
71
- _globals['_BRAKEFLUIDLEVEL']._serialized_end=1453
73
+ _globals['_BRAKEFLUIDLEVEL']._serialized_end=1479
72
74
  # @@protoc_insertion_point(module_scope)
@@ -71,6 +71,12 @@ class TirePressureStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
71
71
  TIRE_PRESSURE_STATUS_WARNING_HARD: _ClassVar[TirePressureStatus]
72
72
  TIRE_PRESSURE_STATUS_WARNING_SOFT: _ClassVar[TirePressureStatus]
73
73
  TIRE_PRESSURE_STATUS_WARNING_PUNCTURE: _ClassVar[TirePressureStatus]
74
+
75
+ class BrakeFluidLow(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
76
+ __slots__ = ()
77
+ BRAKE_FLUID_LOW_SIGNAL_NOT_AVAILABLE: _ClassVar[BrakeFluidLow]
78
+ BRAKE_FLUID_LOW_INACTIVE: _ClassVar[BrakeFluidLow]
79
+ BRAKE_FLUID_LOW_ACTIVE: _ClassVar[BrakeFluidLow]
74
80
  DRIVE_MODE_UNSPECIFIED: DriveModeValue
75
81
  DRIVE_MODE_INIT: DriveModeValue
76
82
  DRIVE_MODE_EVERYDAY: DriveModeValue
@@ -115,6 +121,9 @@ TIRE_PRESSURE_STATUS_NORMAL: TirePressureStatus
115
121
  TIRE_PRESSURE_STATUS_WARNING_HARD: TirePressureStatus
116
122
  TIRE_PRESSURE_STATUS_WARNING_SOFT: TirePressureStatus
117
123
  TIRE_PRESSURE_STATUS_WARNING_PUNCTURE: TirePressureStatus
124
+ BRAKE_FLUID_LOW_SIGNAL_NOT_AVAILABLE: BrakeFluidLow
125
+ BRAKE_FLUID_LOW_INACTIVE: BrakeFluidLow
126
+ BRAKE_FLUID_LOW_ACTIVE: BrakeFluidLow
118
127
 
119
128
  class DriveMode(_message.Message):
120
129
  __slots__ = ("mode", "limited_accel_cold", "limited_regen_cold")
@@ -223,7 +232,7 @@ class MassEstimate(_message.Message):
223
232
  def __init__(self, mass: _Optional[int] = ...) -> None: ...
224
233
 
225
234
  class BrakeFluidLevel(_message.Message):
226
- __slots__ = ("field_1",)
227
- FIELD_1_FIELD_NUMBER: _ClassVar[int]
228
- field_1: int
229
- def __init__(self, field_1: _Optional[int] = ...) -> None: ...
235
+ __slots__ = ("fluid_low",)
236
+ FLUID_LOW_FIELD_NUMBER: _ClassVar[int]
237
+ fluid_low: BrakeFluidLow
238
+ def __init__(self, fluid_low: _Optional[_Union[BrakeFluidLow, str]] = ...) -> None: ...
@@ -54,7 +54,7 @@ message HalloweenCelebrationSettings {
54
54
  BoolValue light_show_enabled = 8;
55
55
  BoolValue interior_overhead_lights_enabled = 9;
56
56
  BoolValue exterior_light_show_enabled = 10;
57
- StringValue lights_color = 11;
57
+ Int32Value lights_color = 11;
58
58
  StringValue car_costume_availability = 12;
59
59
  optional bool motion_light_sound_enabled = 13;
60
60
 
@@ -24,15 +24,15 @@ _sym_db = _symbol_database.Default()
24
24
 
25
25
 
26
26
 
27
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/rivian/parallax/proto/holiday_celebration.proto\x12#rivian.parallax.holiday_celebration\"\x1b\n\x19HolidayCelebrationEnabled\"\xef\x02\n\x12\x43\x61rCostumeSettings\x12 \n\x18\x63\x65lebration_sound_volume\x18\x01 \x01(\x05\x12\x1e\n\x16interior_music_enabled\x18\x02 \x01(\x08\x12\x1b\n\x13interior_music_type\x18\x03 \x01(\x05\x12*\n\"motion_exterior_light_sound_effect\x18\x04 \x01(\x05\x12#\n\x1binterior_light_show_enabled\x18\x06 \x01(\x08\x12(\n interior_overhead_lights_enabled\x18\x07 \x01(\x08\x12\x14\n\x0clights_color\x18\t \x01(\x05\x12\x16\n\x0e\x63ostume_effect\x18\x0b \x01(\x05\x12Q\n\x0e\x65\x66\x66\x65\x63t_trigger\x18\x0c \x01(\x0e\x32\x39.rivian.parallax.holiday_celebration.CostumeEffectTrigger\"\x93\x02\n\x0f\x43\x61rCostumeState\x12 \n\x18\x63\x61r_costume_availability\x18\x01 \x01(\x05\x12\x15\n\rcostume_theme\x18\x02 \x01(\x05\x12\x1f\n\x17motion_trigger_detected\x18\x03 \x01(\x08\x12Z\n\x12\x63ostume_start_time\x18\x04 \x01(\x0b\x32>.rivian.parallax.holiday_celebration.CarCostumeState.Timestamp\x12\x1d\n\x15\x61\x63tive_costume_effect\x18\x06 \x01(\x05\x1a+\n\tTimestamp\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05\"\xea\x0b\n\x1cHalloweenCelebrationSettings\x12\x65\n\rcostume_theme\x18\x01 \x01(\x0b\x32N.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.CostumeTheme\x12\x62\n\x0csound_volume\x18\x02 \x01(\x0b\x32L.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.Int32Value\x12\x62\n\rmusic_enabled\x18\x03 \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12`\n\nmusic_type\x18\x04 \x01(\x0b\x32L.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.Int32Value\x12\x63\n\x0csound_effect\x18\x05 \x01(\x0b\x32M.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.StringValue\x12\"\n\x15\x65xterior_sound_effect\x18\x06 \x01(\x05H\x00\x88\x01\x01\x12j\n\x15\x65xterior_sounds_muted\x18\x07 \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12g\n\x12light_show_enabled\x18\x08 \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12u\n interior_overhead_lights_enabled\x18\t \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12p\n\x1b\x65xterior_light_show_enabled\x18\n \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12\x63\n\x0clights_color\x18\x0b \x01(\x0b\x32M.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.StringValue\x12o\n\x18\x63\x61r_costume_availability\x18\x0c \x01(\x0b\x32M.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.StringValue\x12\'\n\x1amotion_light_sound_enabled\x18\r \x01(\x08H\x01\x88\x01\x01\x1a\x36\n\x0c\x43ostumeTheme\x12\x17\n\ntheme_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\r\n\x0b_theme_name\x1a)\n\tBoolValue\x12\x12\n\x05value\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_value\x1a*\n\nInt32Value\x12\x12\n\x05value\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x08\n\x06_value\x1a+\n\x0bStringValue\x12\x12\n\x05value\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_valueB\x18\n\x16_exterior_sound_effectB\x1d\n\x1b_motion_light_sound_enabled*\x84\x01\n\x14\x43ostumeEffectTrigger\x12&\n\"COSTUME_EFFECT_TRIGGER_UNSPECIFIED\x10\x00\x12!\n\x1d\x43OSTUME_EFFECT_TRIGGER_MANUAL\x10\x01\x12!\n\x1d\x43OSTUME_EFFECT_TRIGGER_MOTION\x10\x02\x62\x06proto3')
27
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/rivian/parallax/proto/holiday_celebration.proto\x12#rivian.parallax.holiday_celebration\"\x1b\n\x19HolidayCelebrationEnabled\"\xef\x02\n\x12\x43\x61rCostumeSettings\x12 \n\x18\x63\x65lebration_sound_volume\x18\x01 \x01(\x05\x12\x1e\n\x16interior_music_enabled\x18\x02 \x01(\x08\x12\x1b\n\x13interior_music_type\x18\x03 \x01(\x05\x12*\n\"motion_exterior_light_sound_effect\x18\x04 \x01(\x05\x12#\n\x1binterior_light_show_enabled\x18\x06 \x01(\x08\x12(\n interior_overhead_lights_enabled\x18\x07 \x01(\x08\x12\x14\n\x0clights_color\x18\t \x01(\x05\x12\x16\n\x0e\x63ostume_effect\x18\x0b \x01(\x05\x12Q\n\x0e\x65\x66\x66\x65\x63t_trigger\x18\x0c \x01(\x0e\x32\x39.rivian.parallax.holiday_celebration.CostumeEffectTrigger\"\x93\x02\n\x0f\x43\x61rCostumeState\x12 \n\x18\x63\x61r_costume_availability\x18\x01 \x01(\x05\x12\x15\n\rcostume_theme\x18\x02 \x01(\x05\x12\x1f\n\x17motion_trigger_detected\x18\x03 \x01(\x08\x12Z\n\x12\x63ostume_start_time\x18\x04 \x01(\x0b\x32>.rivian.parallax.holiday_celebration.CarCostumeState.Timestamp\x12\x1d\n\x15\x61\x63tive_costume_effect\x18\x06 \x01(\x05\x1a+\n\tTimestamp\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05\"\xe9\x0b\n\x1cHalloweenCelebrationSettings\x12\x65\n\rcostume_theme\x18\x01 \x01(\x0b\x32N.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.CostumeTheme\x12\x62\n\x0csound_volume\x18\x02 \x01(\x0b\x32L.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.Int32Value\x12\x62\n\rmusic_enabled\x18\x03 \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12`\n\nmusic_type\x18\x04 \x01(\x0b\x32L.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.Int32Value\x12\x63\n\x0csound_effect\x18\x05 \x01(\x0b\x32M.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.StringValue\x12\"\n\x15\x65xterior_sound_effect\x18\x06 \x01(\x05H\x00\x88\x01\x01\x12j\n\x15\x65xterior_sounds_muted\x18\x07 \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12g\n\x12light_show_enabled\x18\x08 \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12u\n interior_overhead_lights_enabled\x18\t \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12p\n\x1b\x65xterior_light_show_enabled\x18\n \x01(\x0b\x32K.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.BoolValue\x12\x62\n\x0clights_color\x18\x0b \x01(\x0b\x32L.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.Int32Value\x12o\n\x18\x63\x61r_costume_availability\x18\x0c \x01(\x0b\x32M.rivian.parallax.holiday_celebration.HalloweenCelebrationSettings.StringValue\x12\'\n\x1amotion_light_sound_enabled\x18\r \x01(\x08H\x01\x88\x01\x01\x1a\x36\n\x0c\x43ostumeTheme\x12\x17\n\ntheme_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\r\n\x0b_theme_name\x1a)\n\tBoolValue\x12\x12\n\x05value\x18\x01 \x01(\x08H\x00\x88\x01\x01\x42\x08\n\x06_value\x1a*\n\nInt32Value\x12\x12\n\x05value\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x08\n\x06_value\x1a+\n\x0bStringValue\x12\x12\n\x05value\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x08\n\x06_valueB\x18\n\x16_exterior_sound_effectB\x1d\n\x1b_motion_light_sound_enabled*\x84\x01\n\x14\x43ostumeEffectTrigger\x12&\n\"COSTUME_EFFECT_TRIGGER_UNSPECIFIED\x10\x00\x12!\n\x1d\x43OSTUME_EFFECT_TRIGGER_MANUAL\x10\x01\x12!\n\x1d\x43OSTUME_EFFECT_TRIGGER_MOTION\x10\x02\x62\x06proto3')
28
28
 
29
29
  _globals = globals()
30
30
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
31
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.holiday_celebration_pb2', _globals)
32
32
  if not _descriptor._USE_C_DESCRIPTORS:
33
33
  DESCRIPTOR._loaded_options = None
34
- _globals['_COSTUMEEFFECTTRIGGER']._serialized_start=2283
35
- _globals['_COSTUMEEFFECTTRIGGER']._serialized_end=2415
34
+ _globals['_COSTUMEEFFECTTRIGGER']._serialized_start=2282
35
+ _globals['_COSTUMEEFFECTTRIGGER']._serialized_end=2414
36
36
  _globals['_HOLIDAYCELEBRATIONENABLED']._serialized_start=88
37
37
  _globals['_HOLIDAYCELEBRATIONENABLED']._serialized_end=115
38
38
  _globals['_CARCOSTUMESETTINGS']._serialized_start=118
@@ -42,13 +42,13 @@ if not _descriptor._USE_C_DESCRIPTORS:
42
42
  _globals['_CARCOSTUMESTATE_TIMESTAMP']._serialized_start=720
43
43
  _globals['_CARCOSTUMESTATE_TIMESTAMP']._serialized_end=763
44
44
  _globals['_HALLOWEENCELEBRATIONSETTINGS']._serialized_start=766
45
- _globals['_HALLOWEENCELEBRATIONSETTINGS']._serialized_end=2280
46
- _globals['_HALLOWEENCELEBRATIONSETTINGS_COSTUMETHEME']._serialized_start=2037
47
- _globals['_HALLOWEENCELEBRATIONSETTINGS_COSTUMETHEME']._serialized_end=2091
48
- _globals['_HALLOWEENCELEBRATIONSETTINGS_BOOLVALUE']._serialized_start=2093
49
- _globals['_HALLOWEENCELEBRATIONSETTINGS_BOOLVALUE']._serialized_end=2134
50
- _globals['_HALLOWEENCELEBRATIONSETTINGS_INT32VALUE']._serialized_start=2136
51
- _globals['_HALLOWEENCELEBRATIONSETTINGS_INT32VALUE']._serialized_end=2178
52
- _globals['_HALLOWEENCELEBRATIONSETTINGS_STRINGVALUE']._serialized_start=2180
53
- _globals['_HALLOWEENCELEBRATIONSETTINGS_STRINGVALUE']._serialized_end=2223
45
+ _globals['_HALLOWEENCELEBRATIONSETTINGS']._serialized_end=2279
46
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_COSTUMETHEME']._serialized_start=2036
47
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_COSTUMETHEME']._serialized_end=2090
48
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_BOOLVALUE']._serialized_start=2092
49
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_BOOLVALUE']._serialized_end=2133
50
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_INT32VALUE']._serialized_start=2135
51
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_INT32VALUE']._serialized_end=2177
52
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_STRINGVALUE']._serialized_start=2179
53
+ _globals['_HALLOWEENCELEBRATIONSETTINGS_STRINGVALUE']._serialized_end=2222
54
54
  # @@protoc_insertion_point(module_scope)
@@ -107,7 +107,7 @@ class HalloweenCelebrationSettings(_message.Message):
107
107
  light_show_enabled: HalloweenCelebrationSettings.BoolValue
108
108
  interior_overhead_lights_enabled: HalloweenCelebrationSettings.BoolValue
109
109
  exterior_light_show_enabled: HalloweenCelebrationSettings.BoolValue
110
- lights_color: HalloweenCelebrationSettings.StringValue
110
+ lights_color: HalloweenCelebrationSettings.Int32Value
111
111
  car_costume_availability: HalloweenCelebrationSettings.StringValue
112
112
  motion_light_sound_enabled: bool
113
- def __init__(self, costume_theme: _Optional[_Union[HalloweenCelebrationSettings.CostumeTheme, _Mapping]] = ..., sound_volume: _Optional[_Union[HalloweenCelebrationSettings.Int32Value, _Mapping]] = ..., music_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., music_type: _Optional[_Union[HalloweenCelebrationSettings.Int32Value, _Mapping]] = ..., sound_effect: _Optional[_Union[HalloweenCelebrationSettings.StringValue, _Mapping]] = ..., exterior_sound_effect: _Optional[int] = ..., exterior_sounds_muted: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., light_show_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., interior_overhead_lights_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., exterior_light_show_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., lights_color: _Optional[_Union[HalloweenCelebrationSettings.StringValue, _Mapping]] = ..., car_costume_availability: _Optional[_Union[HalloweenCelebrationSettings.StringValue, _Mapping]] = ..., motion_light_sound_enabled: bool = ...) -> None: ...
113
+ def __init__(self, costume_theme: _Optional[_Union[HalloweenCelebrationSettings.CostumeTheme, _Mapping]] = ..., sound_volume: _Optional[_Union[HalloweenCelebrationSettings.Int32Value, _Mapping]] = ..., music_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., music_type: _Optional[_Union[HalloweenCelebrationSettings.Int32Value, _Mapping]] = ..., sound_effect: _Optional[_Union[HalloweenCelebrationSettings.StringValue, _Mapping]] = ..., exterior_sound_effect: _Optional[int] = ..., exterior_sounds_muted: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., light_show_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., interior_overhead_lights_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., exterior_light_show_enabled: _Optional[_Union[HalloweenCelebrationSettings.BoolValue, _Mapping]] = ..., lights_color: _Optional[_Union[HalloweenCelebrationSettings.Int32Value, _Mapping]] = ..., car_costume_availability: _Optional[_Union[HalloweenCelebrationSettings.StringValue, _Mapping]] = ..., motion_light_sound_enabled: bool = ...) -> None: ...
@@ -1,50 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # NO CHECKED-IN PROTOBUF GENCODE
4
- # source: rivian/parallax/proto/device_table.proto
5
- # Protobuf Python Version: 6.31.1
6
- """Generated protocol buffer code."""
7
- from google.protobuf import descriptor as _descriptor
8
- from google.protobuf import descriptor_pool as _descriptor_pool
9
- from google.protobuf import runtime_version as _runtime_version
10
- from google.protobuf import symbol_database as _symbol_database
11
- from google.protobuf.internal import builder as _builder
12
- _runtime_version.ValidateProtobufRuntimeVersion(
13
- _runtime_version.Domain.PUBLIC,
14
- 6,
15
- 31,
16
- 1,
17
- '',
18
- 'rivian/parallax/proto/device_table.proto'
19
- )
20
- # @@protoc_insertion_point(imports)
21
-
22
- _sym_db = _symbol_database.Default()
23
-
24
-
25
-
26
-
27
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n(rivian/parallax/proto/device_table.proto\x12\x1crivian.parallax.device_table\"\xae\x0c\n\x10VasKeyperDevices\x12\x43\n\x05label\x18\x01 \x01(\x0b\x32\x34.rivian.parallax.device_table.VasKeyperDevices.Label\x12\x45\n\x06\x64\x65vice\x18\x02 \x01(\x0b\x32\x35.rivian.parallax.device_table.VasKeyperDevices.Device\x12O\n\x0b\x63redentials\x18\x03 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.Credentials\x1a\x7f\n\x05Label\x12\x11\n\x04name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12M\n\x08key_type\x18\x03 \x01(\x0e\x32\x36.rivian.parallax.device_table.VasKeyperDevices.KeyTypeH\x01\x88\x01\x01\x42\x07\n\x05_nameB\x0b\n\t_key_type\x1a\x96\x02\n\x06\x44\x65vice\x12\x1f\n\x12mapped_identity_id\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x11\n\x04hrid\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nprofile_id\x18\x03 \x01(\tH\x02\x88\x01\x01\x12\x17\n\npublic_key\x18\x04 \x01(\tH\x03\x88\x01\x01\x12\x15\n\x08revision\x18\x05 \x01(\x05H\x04\x88\x01\x01\x12&\n\x19vehicle_response_required\x18\x06 \x01(\x08H\x05\x88\x01\x01\x42\x15\n\x13_mapped_identity_idB\x07\n\x05_hridB\r\n\x0b_profile_idB\r\n\x0b_public_keyB\x0b\n\t_revisionB\x1c\n\x1a_vehicle_response_required\x1a\xdb\x04\n\x0b\x43redentials\x12M\n\x04info\x18\x01 \x01(\x0b\x32?.rivian.parallax.device_table.VasKeyperDevices.Credentials.Info\x12H\n\x04\x63\x61rd\x18\x05 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.KeyMaterial\x12G\n\x03\x66ob\x18\x06 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.KeyMaterial\x12I\n\x05phone\x18\x07 \x01(\x0b\x32:.rivian.parallax.device_table.VasKeyperDevices.KeyMaterial\x12M\n\x08key_type\x18\t \x01(\x0e\x32\x36.rivian.parallax.device_table.VasKeyperDevices.KeyTypeH\x00\x88\x01\x01\x12\x13\n\x06\x61\x63tive\x18\n \x01(\x08H\x01\x88\x01\x01\x1a\xa2\x01\n\x04Info\x12\x0e\n\x01\x61\x18\x01 \x01(\x05H\x00\x88\x01\x01\x12\x0e\n\x01\x63\x18\x04 \x01(\x05H\x01\x88\x01\x01\x12M\n\x06status\x18\x05 \x01(\x0e\x32\x38.rivian.parallax.device_table.VasKeyperDevices.KeyStatusH\x02\x88\x01\x01\x12\x0e\n\x01\x62\x18\x06 \x01(\x05H\x03\x88\x01\x01\x42\x04\n\x02_aB\x04\n\x02_cB\t\n\x07_statusB\x04\n\x02_bB\x0b\n\t_key_typeB\t\n\x07_active\x1aM\n\x0bKeyMaterial\x12\x0f\n\x02id\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x12\x17\n\ncredential\x18\x02 \x01(\x0cH\x01\x88\x01\x01\x42\x05\n\x03_idB\r\n\x0b_credential\"\x8f\x01\n\tKeyStatus\x12\x1a\n\x16KEY_STATUS_UNSPECIFIED\x10\x00\x12\x15\n\x11KEY_STATUS_ACTIVE\x10\x01\x12\x17\n\x13KEY_STATUS_INACTIVE\x10\x03\x12\x1e\n\x1aKEY_STATUS_WAITING_TO_PAIR\x10\x05\x12\x16\n\x12KEY_STATUS_PAIRING\x10\x07\"d\n\x07KeyType\x12\x18\n\x14KEY_TYPE_UNSPECIFIED\x10\x00\x12\x12\n\x0eKEY_TYPE_PHONE\x10\x02\x12\x15\n\x11KEY_TYPE_KEY_CARD\x10\x03\x12\x14\n\x10KEY_TYPE_KEY_FOB\x10\x04\x62\x06proto3')
28
-
29
- _globals = globals()
30
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.device_table_pb2', _globals)
32
- if not _descriptor._USE_C_DESCRIPTORS:
33
- DESCRIPTOR._loaded_options = None
34
- _globals['_VASKEYPERDEVICES']._serialized_start=75
35
- _globals['_VASKEYPERDEVICES']._serialized_end=1657
36
- _globals['_VASKEYPERDEVICES_LABEL']._serialized_start=316
37
- _globals['_VASKEYPERDEVICES_LABEL']._serialized_end=443
38
- _globals['_VASKEYPERDEVICES_DEVICE']._serialized_start=446
39
- _globals['_VASKEYPERDEVICES_DEVICE']._serialized_end=724
40
- _globals['_VASKEYPERDEVICES_CREDENTIALS']._serialized_start=727
41
- _globals['_VASKEYPERDEVICES_CREDENTIALS']._serialized_end=1330
42
- _globals['_VASKEYPERDEVICES_CREDENTIALS_INFO']._serialized_start=1144
43
- _globals['_VASKEYPERDEVICES_CREDENTIALS_INFO']._serialized_end=1306
44
- _globals['_VASKEYPERDEVICES_KEYMATERIAL']._serialized_start=1332
45
- _globals['_VASKEYPERDEVICES_KEYMATERIAL']._serialized_end=1409
46
- _globals['_VASKEYPERDEVICES_KEYSTATUS']._serialized_start=1412
47
- _globals['_VASKEYPERDEVICES_KEYSTATUS']._serialized_end=1555
48
- _globals['_VASKEYPERDEVICES_KEYTYPE']._serialized_start=1557
49
- _globals['_VASKEYPERDEVICES_KEYTYPE']._serialized_end=1657
50
- # @@protoc_insertion_point(module_scope)