rivian-python-client 2.2.0b9__tar.gz → 2.2.0b11__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.
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/PKG-INFO +1 -1
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/__version__.py +1 -1
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/charging.py +18 -13
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/comfort.py +5 -3
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/device_table.py +20 -4
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/dynamics.py +16 -1
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/energy_edge_compute.py +17 -14
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/holiday_celebration.py +1 -1
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/ota.py +8 -2
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/charging.proto +6 -3
- rivian_python_client-2.2.0b11/src/rivian/parallax/proto/charging_pb2.py +86 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/charging_pb2.pyi +4 -2
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/comfort.proto +2 -2
- rivian_python_client-2.2.0b11/src/rivian/parallax/proto/comfort_pb2.py +84 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/device_table.proto +13 -2
- rivian_python_client-2.2.0b11/src/rivian/parallax/proto/device_table_pb2.py +52 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/device_table_pb2.pyi +26 -8
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/dynamics.proto +1 -1
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/holiday_celebration.proto +1 -1
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/holiday_celebration_pb2.py +12 -12
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/holiday_celebration_pb2.pyi +2 -2
- rivian_python_client-2.2.0b9/src/rivian/parallax/proto/charging_pb2.py +0 -86
- rivian_python_client-2.2.0b9/src/rivian/parallax/proto/comfort_pb2.py +0 -84
- rivian_python_client-2.2.0b9/src/rivian/parallax/proto/device_table_pb2.py +0 -50
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/.gitignore +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/README.md +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/pyproject.toml +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/__init__.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/ble.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/const.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/exceptions.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/__init__.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/body.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/core.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/departure.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/energy.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/gearguard_streaming.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/geofence.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/navigation.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/parallax.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/__init__.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/body.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/body_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/body_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/comfort_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/departure.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/departure_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/departure_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/dynamics_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/dynamics_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/energy.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/energy_edge_compute.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/energy_edge_compute_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/energy_edge_compute_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/energy_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/energy_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/gearguard_streaming.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/gearguard_streaming_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/gearguard_streaming_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/geofence.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/geofence_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/geofence_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/navigation.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/navigation_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/navigation_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/ota.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/ota_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/ota_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/parallax.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/parallax_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/parallax_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/secure_file_transfer.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/secure_file_transfer_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/secure_file_transfer_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/security.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/security_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/security_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/user_passcodes.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/user_passcodes_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/user_passcodes_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/vehicle.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/vehicle_access.proto +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/vehicle_access_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/vehicle_access_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/vehicle_pb2.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/proto/vehicle_pb2.pyi +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/secure_file_transfer.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/security.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/user_passcodes.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/vehicle.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/vehicle_access.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/py.typed +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/rivian.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/schemas/charging.graphql +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/schemas/gateway.graphql +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/schemas/orders.graphql +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/utils.py +0 -0
- {rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/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.
|
|
3
|
+
Version: 2.2.0b11
|
|
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
|
{rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/charging.py
RENAMED
|
@@ -362,24 +362,29 @@ _CHARGER_STATUS_MAP: Final[dict[int, str]] = {
|
|
|
362
362
|
def decode_energy_state(m: charging_pb2.EnergyState) -> dict[str, Any]:
|
|
363
363
|
"""charging.energy.state — charger connection and charging state.
|
|
364
364
|
|
|
365
|
+
Partial updates, so each field only when sent; most messages carry only
|
|
366
|
+
power (not reported; charging.session.power has it). charging.session.status
|
|
367
|
+
is the reliable source for the connection and charging states.
|
|
368
|
+
|
|
365
369
|
Fields:
|
|
366
370
|
chargerStatus: str — GraphQL chargerStatus values
|
|
367
371
|
("chrgr_sts_not_connected" | "chrgr_sts_connected_no_chrg" |
|
|
368
|
-
"chrgr_sts_connected_charging"); inferred
|
|
369
|
-
|
|
370
|
-
|
|
372
|
+
"chrgr_sts_connected_charging"); inferred. Only sent when the
|
|
373
|
+
plug state changes on some vehicles
|
|
374
|
+
energyChargerState, energyConnectionState: str — as
|
|
375
|
+
charging.session.status's chargerState / connectionState, which
|
|
376
|
+
these can lag
|
|
371
377
|
_field3: int — raw
|
|
372
378
|
"""
|
|
373
|
-
result: dict[str, Any] = {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
what="charging connection state"
|
|
381
|
-
)
|
|
382
|
-
}
|
|
379
|
+
result: dict[str, Any] = {}
|
|
380
|
+
if (v := _present(m, "charging_state")) is not None:
|
|
381
|
+
result["energyChargerState"] = _enum(
|
|
382
|
+
_CHARGING_STATE_MAP, v, what="charging state"
|
|
383
|
+
)
|
|
384
|
+
if (v := _present(m, "connection_state")) is not None:
|
|
385
|
+
result["energyConnectionState"] = _enum(
|
|
386
|
+
_CONNECTION_STATE_MAP, v, what="charging connection state"
|
|
387
|
+
)
|
|
383
388
|
if (v := _present(m, "charger_status")) is not None:
|
|
384
389
|
result["chargerStatus"] = _enum(_CHARGER_STATUS_MAP, v, what="charger status")
|
|
385
390
|
if (v := _present(m, "field_3")) is not None:
|
{rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/comfort.py
RENAMED
|
@@ -173,13 +173,15 @@ def decode_cabin_temperatures(m: comfort_pb2.CabinTemperatures) -> dict[str, Any
|
|
|
173
173
|
|
|
174
174
|
Fields:
|
|
175
175
|
cabinClimateInteriorTemperature: float (°C)
|
|
176
|
-
cabinClimateDriverTemperature: float (°C) — set point, same
|
|
177
|
-
`hvacTargetTemperature
|
|
176
|
+
cabinClimateDriverTemperature: float | None (°C) — set point, same
|
|
177
|
+
as `hvacTargetTemperature`; None when the vehicle doesn't send it
|
|
178
178
|
cabinClimateExteriorTemperature: float (°C), when sent
|
|
179
179
|
"""
|
|
180
180
|
result: dict[str, Any] = {
|
|
181
181
|
"cabinClimateInteriorTemperature": round(m.interior_temperature, 1),
|
|
182
|
-
"cabinClimateDriverTemperature":
|
|
182
|
+
"cabinClimateDriverTemperature": (
|
|
183
|
+
round(v, 1) if (v := _present(m, "driver_set_point")) is not None else None
|
|
184
|
+
),
|
|
183
185
|
}
|
|
184
186
|
if (v := _present(m, "exterior_temperature")) is not None:
|
|
185
187
|
result["cabinClimateExteriorTemperature"] = round(v, 1)
|
{rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/device_table.py
RENAMED
|
@@ -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:
|
|
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
|
-
|
|
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, "
|
|
101
|
-
result["
|
|
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
|
{rivian_python_client-2.2.0b9 → rivian_python_client-2.2.0b11}/src/rivian/parallax/dynamics.py
RENAMED
|
@@ -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": {
|
|
@@ -98,16 +98,19 @@ def decode_charge_session_breakdown(
|
|
|
98
98
|
|
|
99
99
|
Fields:
|
|
100
100
|
totalChargedEnergy: float (kWh)
|
|
101
|
-
|
|
101
|
+
chargeSessionPower: float (kW; charging.session.power reports `power`)
|
|
102
102
|
rangeAddedThisSession: float (km)
|
|
103
103
|
kilometersChargedPerHour: float (km of range per hour; 0 while
|
|
104
104
|
power is 0, since it can be stale)
|
|
105
|
-
|
|
105
|
+
chargeSessionTimeToEndOfCharge: int (minutes;
|
|
106
|
+
charging.session.time_estimation reports `timeToEndOfCharge`)
|
|
106
107
|
activeChargingTime: int (minutes; pauses while stopped/scheduled)
|
|
107
108
|
packEnergy, thermalEnergy, outletsEnergy, systemEnergy: float (kWh)
|
|
108
109
|
isFreeSession: bool
|
|
109
110
|
currentPrice: float, currentCurrency: str — only when there's a cost
|
|
110
|
-
|
|
111
|
+
chargeSessionChargerState: str — the session's state, which goes
|
|
112
|
+
stale after a session (charging.session.status reports
|
|
113
|
+
`chargerState`)
|
|
111
114
|
|
|
112
115
|
A session's totals survive stops and holds, and persist after plug-in
|
|
113
116
|
until the next session starts. The last message before charging
|
|
@@ -116,10 +119,10 @@ def decode_charge_session_breakdown(
|
|
|
116
119
|
power = round(m.power, 2)
|
|
117
120
|
result: dict[str, Any] = {
|
|
118
121
|
"totalChargedEnergy": round(m.total_energy, 4),
|
|
119
|
-
"
|
|
122
|
+
"chargeSessionPower": power,
|
|
120
123
|
"rangeAddedThisSession": float(m.range_added),
|
|
121
124
|
"kilometersChargedPerHour": float(m.range_rate) if power > 0 else 0.0,
|
|
122
|
-
"
|
|
125
|
+
"chargeSessionTimeToEndOfCharge": m.time_remaining,
|
|
123
126
|
"activeChargingTime": m.active_charging_time,
|
|
124
127
|
"packEnergy": round(m.pack_energy, 4),
|
|
125
128
|
"thermalEnergy": round(m.thermal_energy, 4),
|
|
@@ -132,7 +135,7 @@ def decode_charge_session_breakdown(
|
|
|
132
135
|
result["currentPrice"] = cost.units + cost.nanos / 1e9
|
|
133
136
|
result["currentCurrency"] = cost.currency_code
|
|
134
137
|
if m.HasField("charging_state"):
|
|
135
|
-
result["
|
|
138
|
+
result["chargeSessionChargerState"] = _enum(
|
|
136
139
|
_CHARGING_STATE_MAP, m.charging_state, what="charging state"
|
|
137
140
|
)
|
|
138
141
|
return result
|
|
@@ -150,11 +153,11 @@ def decode_charging_graph_global(
|
|
|
150
153
|
Fields:
|
|
151
154
|
startTime: datetime (session start)
|
|
152
155
|
timeElapsed: int (seconds spent charging)
|
|
153
|
-
|
|
154
|
-
|
|
156
|
+
chargingGraphPower: float (kW, latest segment)
|
|
157
|
+
chargingGraphKilometersChargedPerHour: float (estimated from power)
|
|
155
158
|
|
|
156
|
-
Power updates about once a minute;
|
|
157
|
-
|
|
159
|
+
Power updates about once a minute; charging.session.power and
|
|
160
|
+
charge_session_breakdown report live power and rate.
|
|
158
161
|
"""
|
|
159
162
|
segments = m.segment
|
|
160
163
|
if not segments:
|
|
@@ -179,12 +182,12 @@ def decode_charging_graph_global(
|
|
|
179
182
|
|
|
180
183
|
latest_power = round(segments[-1].power, 2)
|
|
181
184
|
if latest_power > 0 and segments[-1].state != charging_pb2.CHARGING_USER_STOPPED:
|
|
182
|
-
result["
|
|
183
|
-
result["
|
|
185
|
+
result["chargingGraphPower"] = latest_power
|
|
186
|
+
result["chargingGraphKilometersChargedPerHour"] = round(
|
|
184
187
|
latest_power * _FALLBACK_KM_PER_KWH, 1
|
|
185
188
|
)
|
|
186
189
|
else:
|
|
187
|
-
result["
|
|
188
|
-
result["
|
|
190
|
+
result["chargingGraphPower"] = 0.0
|
|
191
|
+
result["chargingGraphKilometersChargedPerHour"] = 0.0
|
|
189
192
|
|
|
190
193
|
return result
|
|
@@ -135,7 +135,7 @@ def decode_halloween_celebration_settings(
|
|
|
135
135
|
halloweenLightShowEnabled: bool
|
|
136
136
|
halloweenInteriorOverheadLightsEnabled: bool
|
|
137
137
|
halloweenExteriorLightShowEnabled: bool
|
|
138
|
-
halloweenLightsColor:
|
|
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
|
-
|
|
215
|
-
|
|
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
|
|
@@ -209,13 +209,16 @@ enum TimeEstimationValidity {
|
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
// charging.energy.state
|
|
212
|
-
//
|
|
212
|
+
// Partial updates: most messages carry only power, and the states are sent
|
|
213
|
+
// only when the plug state changes, so they can't be relied on. The states
|
|
214
|
+
// match charging.session.status, give or take a message.
|
|
213
215
|
message EnergyState {
|
|
214
|
-
ChargingState charging_state = 1;
|
|
216
|
+
optional ChargingState charging_state = 1;
|
|
215
217
|
optional ChargerStatus charger_status = 2; // inferred
|
|
216
218
|
optional int32 field_3 = 3; // unknown
|
|
219
|
+
float power = 4; // kW; same as charging.session.power
|
|
217
220
|
string field_10 = 10; // unknown
|
|
218
|
-
ConnectionState connection_state = 11;
|
|
221
|
+
optional ConnectionState connection_state = 11;
|
|
219
222
|
}
|
|
220
223
|
|
|
221
224
|
enum ChargerStatus {
|
|
@@ -0,0 +1,86 @@
|
|
|
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/charging.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/charging.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/charging.proto\x12\x18rivian.parallax.charging\"\xe8\x04\n\x12ScheduleTimeWindow\x12\x0f\n\x07\x65nabled\x18\x01 \x01(\x08\x12\x43\n\x06window\x18\x02 \x01(\x0b\x32\x33.rivian.parallax.charging.ScheduleTimeWindow.Window\x1a\xbe\x02\n\x06Window\x12\x12\n\nstart_time\x18\x01 \x01(\x05\x12\x10\n\x08\x65nd_time\x18\x02 \x01(\x05\x12\x10\n\x08\x64uration\x18\x03 \x01(\x05\x12\x11\n\x04\x61mps\x18\x04 \x01(\x05H\x00\x88\x01\x01\x12L\n\x08location\x18\x05 \x01(\x0b\x32:.rivian.parallax.charging.ScheduleTimeWindow.GeoCoordinate\x12I\n\tstart_day\x18\x06 \x01(\x0e\x32\x36.rivian.parallax.charging.ScheduleTimeWindow.DayOfWeek\x12G\n\x07\x65nd_day\x18\x07 \x01(\x0e\x32\x36.rivian.parallax.charging.ScheduleTimeWindow.DayOfWeekB\x07\n\x05_amps\x1a\x34\n\rGeoCoordinate\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\"\x84\x01\n\tDayOfWeek\x12\x1b\n\x17\x44\x41Y_OF_WEEK_UNSPECIFIED\x10\x00\x12\n\n\x06SUNDAY\x10\x01\x12\n\n\x06MONDAY\x10\x02\x12\x0b\n\x07TUESDAY\x10\x03\x12\r\n\tWEDNESDAY\x10\x04\x12\x0c\n\x08THURSDAY\x10\x05\x12\n\n\x06\x46RIDAY\x10\x06\x12\x0c\n\x08SATURDAY\x10\x07\"\xb6\x01\n\x13SessionNotification\x12\x1e\n\x16unexpected_stop_reason\x18\x01 \x01(\x05\x12\x44\n\rderate_status\x18\x02 \x01(\x0e\x32-.rivian.parallax.charging.ChargerDerateStatus\x12\x39\n\x0b\x66\x61ult_chime\x18\x03 \x01(\x0e\x32$.rivian.parallax.charging.FaultChime\"\\\n\x14SessionRemoteCommand\x12\x44\n\x0fstart_available\x18\x01 \x01(\x0e\x32+.rivian.parallax.charging.StartAvailability\"1\n\tSocSlider\x12\x16\n\tsoc_limit\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x0c\n\n_soc_limit\"\x1f\n\nTripTarget\x12\x11\n\tsoc_limit\x18\x02 \x01(\x05\"\xf3\x01\n\x15SmartChargingSettings\x12S\n\x0eready_by_times\x18\x01 \x03(\x0b\x32;.rivian.parallax.charging.SmartChargingSettings.ReadyByTime\x12\x1c\n\x14\x63lean_energy_enabled\x18\x02 \x01(\x08\x1ag\n\x0bReadyByTime\x12\r\n\x05hours\x18\x01 \x01(\x05\x12\x0f\n\x07minutes\x18\x02 \x01(\x05\x12\x38\n\x04\x64\x61ys\x18\x03 \x03(\x0e\x32*.rivian.parallax.charging.SmartChargingDay\"\xf0\x01\n\x11SmartChargingInfo\x12K\n\x0bresume_time\x18\x01 \x01(\x0b\x32\x36.rivian.parallax.charging.SmartChargingInfo.ResumeTime\x12I\n\x0cnotification\x18\x02 \x01(\x0e\x32\x33.rivian.parallax.charging.SmartChargingNotification\x12\x15\n\rschedule_type\x18\x03 \x01(\x05\x1a,\n\nResumeTime\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05\"\x1a\n\x18WeightedChargingForecast\"\xda\x01\n\rSessionStatus\x12H\n\x10\x63onnection_state\x18\x01 \x01(\x0e\x32).rivian.parallax.charging.ConnectionStateH\x00\x88\x01\x01\x12\x44\n\x0e\x63harging_state\x18\x02 \x01(\x0e\x32\'.rivian.parallax.charging.ChargingStateH\x01\x88\x01\x01\x12\x11\n\tevse_type\x18\x03 \x01(\x05\x42\x13\n\x11_connection_stateB\x11\n\x0f_charging_state\"v\n\x0eTimeEstimation\x12\x42\n\x08validity\x18\x01 \x01(\x0e\x32\x30.rivian.parallax.charging.TimeEstimationValidity\x12 \n\x18\x65stimated_time_remaining\x18\x02 \x01(\x05\"\xe1\x02\n\x0b\x45nergyState\x12\x44\n\x0e\x63harging_state\x18\x01 \x01(\x0e\x32\'.rivian.parallax.charging.ChargingStateH\x00\x88\x01\x01\x12\x44\n\x0e\x63harger_status\x18\x02 \x01(\x0e\x32\'.rivian.parallax.charging.ChargerStatusH\x01\x88\x01\x01\x12\x14\n\x07\x66ield_3\x18\x03 \x01(\x05H\x02\x88\x01\x01\x12\r\n\x05power\x18\x04 \x01(\x02\x12\x10\n\x08\x66ield_10\x18\n \x01(\t\x12H\n\x10\x63onnection_state\x18\x0b \x01(\x0e\x32).rivian.parallax.charging.ConnectionStateH\x03\x88\x01\x01\x42\x11\n\x0f_charging_stateB\x11\n\x0f_charger_statusB\n\n\x08_field_3B\x13\n\x11_connection_state\"\x1d\n\x0cSessionPower\x12\r\n\x05power\x18\x01 \x01(\x02*\xb2\x05\n\x13\x43hargerDerateStatus\x12\x16\n\x12\x44\x45RATE_STATUS_NONE\x10\x00\x12\x1e\n\x1a\x44\x45RATE_STATUS_WARM_ADAPTER\x10\x01\x12\x1e\n\x1a\x44\x45RATE_STATUS_DC_WARM_PLUG\x10\x02\x12\x1e\n\x1a\x44\x45RATE_STATUS_AC_WARM_PLUG\x10\x03\x12\x1f\n\x1b\x44\x45RATE_STATUS_EVSE_DERATING\x10\x04\x12\x1d\n\x19\x44\x45RATE_STATUS_NEARING_TOC\x10\x05\x12/\n+DERATE_STATUS_NEAR_TOC_LFP_BATT_CALIBRATING\x10\x06\x12\"\n\x1e\x44\x45RATE_STATUS_HVAC_PRIORITIZED\x10\x07\x12!\n\x1d\x44\x45RATE_STATUS_BATTERY_HEATING\x10\x08\x12!\n\x1d\x44\x45RATE_STATUS_BATTERY_COOLING\x10\t\x12\x32\n.DERATE_STATUS_CELL_THERMAL_LIM_COLD_NO_CURRENT\x10\n\x12\x31\n-DERATE_STATUS_CELL_THERMAL_LIM_HOT_NO_CURRENT\x10\x0b\x12\'\n#DERATE_STATUS_CELL_THERMAL_LIM_COLD\x10\x0c\x12&\n\"DERATE_STATUS_CELL_THERMAL_LIM_HOT\x10\r\x12+\n\'DERATE_STATUS_PACK_HARDWARE_THERMAL_LIM\x10\x0e\x12 \n\x1c\x44\x45RATE_STATUS_HIGH_SOC_SIGMA\x10\x0f\x12\"\n\x1e\x44\x45RATE_STATUS_HV_BATTERY_FAULT\x10\x10\x12\x1d\n\x19\x44\x45RATE_STATUS_DCAC_EXPORT\x10\x11*\xdb\x03\n\nFaultChime\x12\x14\n\x10\x46\x41ULT_CHIME_NONE\x10\x00\x12%\n!FAULT_CHIME_CHARGING_DISABLED_ALL\x10\x01\x12$\n FAULT_CHIME_CHARGING_DISABLED_DC\x10\x02\x12-\n)FAULT_CHIME_CHARGING_DISABLED_PIN_TEMP_DC\x10\x03\x12\x36\n2FAULT_CHIME_CHARGING_DISABLED_PIN_TEMP_GRADIENT_DC\x10\x04\x12$\n FAULT_CHIME_CHARGING_DEGRADED_DC\x10\x05\x12$\n FAULT_CHIME_CHARGING_DISABLED_AC\x10\x06\x12-\n)FAULT_CHIME_CHARGING_DISABLED_PIN_TEMP_AC\x10\x07\x12$\n FAULT_CHIME_CHARGING_DEGRADED_AC\x10\x08\x12\x34\n0FAULT_CHIME_CHARGING_DISABLED_PARTIAL_CONNECTION\x10\t\x12,\n(FAULT_CHIME_CHARGING_DISABLED_NOT_PARKED\x10\n*j\n\x11StartAvailability\x12\x1a\n\x16START_AVAILABILITY_SNA\x10\x00\x12\x1c\n\x18START_AVAILABILITY_FALSE\x10\x01\x12\x1b\n\x17START_AVAILABILITY_TRUE\x10\x02*\x97\x02\n\x10SmartChargingDay\x12\"\n\x1eSMART_CHARGING_DAY_UNSPECIFIED\x10\x00\x12\x1d\n\x19SMART_CHARGING_DAY_MONDAY\x10\x01\x12\x1e\n\x1aSMART_CHARGING_DAY_TUESDAY\x10\x02\x12 \n\x1cSMART_CHARGING_DAY_WEDNESDAY\x10\x03\x12\x1f\n\x1bSMART_CHARGING_DAY_THURSDAY\x10\x04\x12\x1d\n\x19SMART_CHARGING_DAY_FRIDAY\x10\x05\x12\x1f\n\x1bSMART_CHARGING_DAY_SATURDAY\x10\x06\x12\x1d\n\x19SMART_CHARGING_DAY_SUNDAY\x10\x07*\xbc\x02\n\x19SmartChargingNotification\x12#\n\x1fSMART_CHARGING_NOTIFICATION_SNA\x10\x00\x12:\n6SMART_CHARGING_NOTIFICATION_CHARGING_WITH_CLEAN_ENERGY\x10\x01\x12/\n+SMART_CHARGING_NOTIFICATION_CHARGING_PAUSED\x10\x02\x12<\n8SMART_CHARGING_NOTIFICATION_CLEAN_ENERGY_NOT_ENOUGH_TIME\x10\x03\x12O\nKSMART_CHARGING_NOTIFICATION_CLEAN_ENERGY_FORECAST_UNAVAILABLE_OR_INCOMPLETE\x10\x04*\xaf\x01\n\x0f\x43onnectionState\x12\x19\n\x15\x43ONNECTION_STATE_INIT\x10\x00\x12!\n\x1d\x43ONNECTION_STATE_DISCONNECTED\x10\x01\x12\x1e\n\x1a\x43ONNECTION_STATE_CONNECTED\x10\x02\x12\x1a\n\x16\x43ONNECTION_STATE_ERROR\x10\x03\x12\"\n\x1e\x43ONNECTION_STATE_V2L_CONNECTED\x10\x04*\xc4\x06\n\rChargingState\x12\x1e\n\x1a\x43HARGING_STATE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HARGING_READY\x10\x01\x12\x17\n\x13\x43HARGING_CONNECTING\x10\x02\x12\x13\n\x0f\x43HARGING_ACTIVE\x10\x03\x12\x15\n\x11\x43HARGING_COMPLETE\x10\x04\x12\x16\n\x12\x43HARGING_SCHEDULED\x10\x05\x12\x1a\n\x16\x43HARGING_VEHICLE_ERROR\x10\x06\x12\x1a\n\x16\x43HARGING_STATION_ERROR\x10\x07\x12\x19\n\x15\x43HARGING_USER_STOPPED\x10\x08\x12\x1c\n\x18\x43HARGING_STATION_STOPPED\x10\t\x12\x1a\n\x16\x43HARGING_PAYMENT_ERROR\x10\n\x12\x17\n\x13\x43HARGING_CERT_ERROR\x10\x0b\x12\x16\n\x12\x43HARGING_TLS_ERROR\x10\x0c\x12(\n$CHARGING_ERROR_AC_ADAPTER_USED_ON_DC\x10\r\x12(\n$CHARGING_ERROR_DC_ADAPTER_USED_ON_AC\x10\x0e\x12\'\n#CHARGING_ERROR_INCOMPATIBLE_CHARGER\x10\x0f\x12\x1c\n\x18\x43HARGING_SD_COMPENSATION\x10\x10\x12\x16\n\x12WAITING_ON_CHARGER\x10\x11\x12%\n!CHARGER_NOT_READY_OR_INCOMPATIBLE\x10\x12\x12\x1c\n\x18\x43HARGING_VEHICLE_STOPPED\x10\x13\x12+\n\'CHARGING_PAYMENT_ERROR_START_RIVIAN_APP\x10\x14\x12&\n\"CHARGING_TLS_ERROR_UNKNOWN_CHARGER\x10\x15\x12&\n\"CHARGING_TLS_ERROR_UNEXPECTED_FAIL\x10\x16\x12\'\n#CHARGING_TLS_ERROR_START_RIVIAN_APP\x10\x17\x12\"\n\x1e\x43HARGING_SMART_CHARGING_PAUSED\x10\x18\x12\"\n\x1e\x43HARGING_SMART_CHARGING_ACTIVE\x10\x19*\xb4\x01\n\x16TimeEstimationValidity\x12!\n\x1dTIME_ESTIMATION_VALIDITY_NONE\x10\x00\x12\"\n\x1eTIME_ESTIMATION_VALIDITY_VALID\x10\x01\x12$\n TIME_ESTIMATION_VALIDITY_INVALID\x10\x02\x12-\n)TIME_ESTIMATION_VALIDITY_PACK_DISCHARGING\x10\x03*\xa0\x01\n\rChargerStatus\x12\x1e\n\x1a\x43HARGER_STATUS_UNSPECIFIED\x10\x00\x12 \n\x1c\x43HARGER_STATUS_NOT_CONNECTED\x10\x01\x12&\n\"CHARGER_STATUS_CONNECTED_NO_CHARGE\x10\x02\x12%\n!CHARGER_STATUS_CONNECTED_CHARGING\x10\x03\x62\x06proto3')
|
|
28
|
+
|
|
29
|
+
_globals = globals()
|
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.charging_pb2', _globals)
|
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
|
+
DESCRIPTOR._loaded_options = None
|
|
34
|
+
_globals['_CHARGERDERATESTATUS']._serialized_start=2294
|
|
35
|
+
_globals['_CHARGERDERATESTATUS']._serialized_end=2984
|
|
36
|
+
_globals['_FAULTCHIME']._serialized_start=2987
|
|
37
|
+
_globals['_FAULTCHIME']._serialized_end=3462
|
|
38
|
+
_globals['_STARTAVAILABILITY']._serialized_start=3464
|
|
39
|
+
_globals['_STARTAVAILABILITY']._serialized_end=3570
|
|
40
|
+
_globals['_SMARTCHARGINGDAY']._serialized_start=3573
|
|
41
|
+
_globals['_SMARTCHARGINGDAY']._serialized_end=3852
|
|
42
|
+
_globals['_SMARTCHARGINGNOTIFICATION']._serialized_start=3855
|
|
43
|
+
_globals['_SMARTCHARGINGNOTIFICATION']._serialized_end=4171
|
|
44
|
+
_globals['_CONNECTIONSTATE']._serialized_start=4174
|
|
45
|
+
_globals['_CONNECTIONSTATE']._serialized_end=4349
|
|
46
|
+
_globals['_CHARGINGSTATE']._serialized_start=4352
|
|
47
|
+
_globals['_CHARGINGSTATE']._serialized_end=5188
|
|
48
|
+
_globals['_TIMEESTIMATIONVALIDITY']._serialized_start=5191
|
|
49
|
+
_globals['_TIMEESTIMATIONVALIDITY']._serialized_end=5371
|
|
50
|
+
_globals['_CHARGERSTATUS']._serialized_start=5374
|
|
51
|
+
_globals['_CHARGERSTATUS']._serialized_end=5534
|
|
52
|
+
_globals['_SCHEDULETIMEWINDOW']._serialized_start=67
|
|
53
|
+
_globals['_SCHEDULETIMEWINDOW']._serialized_end=683
|
|
54
|
+
_globals['_SCHEDULETIMEWINDOW_WINDOW']._serialized_start=176
|
|
55
|
+
_globals['_SCHEDULETIMEWINDOW_WINDOW']._serialized_end=494
|
|
56
|
+
_globals['_SCHEDULETIMEWINDOW_GEOCOORDINATE']._serialized_start=496
|
|
57
|
+
_globals['_SCHEDULETIMEWINDOW_GEOCOORDINATE']._serialized_end=548
|
|
58
|
+
_globals['_SCHEDULETIMEWINDOW_DAYOFWEEK']._serialized_start=551
|
|
59
|
+
_globals['_SCHEDULETIMEWINDOW_DAYOFWEEK']._serialized_end=683
|
|
60
|
+
_globals['_SESSIONNOTIFICATION']._serialized_start=686
|
|
61
|
+
_globals['_SESSIONNOTIFICATION']._serialized_end=868
|
|
62
|
+
_globals['_SESSIONREMOTECOMMAND']._serialized_start=870
|
|
63
|
+
_globals['_SESSIONREMOTECOMMAND']._serialized_end=962
|
|
64
|
+
_globals['_SOCSLIDER']._serialized_start=964
|
|
65
|
+
_globals['_SOCSLIDER']._serialized_end=1013
|
|
66
|
+
_globals['_TRIPTARGET']._serialized_start=1015
|
|
67
|
+
_globals['_TRIPTARGET']._serialized_end=1046
|
|
68
|
+
_globals['_SMARTCHARGINGSETTINGS']._serialized_start=1049
|
|
69
|
+
_globals['_SMARTCHARGINGSETTINGS']._serialized_end=1292
|
|
70
|
+
_globals['_SMARTCHARGINGSETTINGS_READYBYTIME']._serialized_start=1189
|
|
71
|
+
_globals['_SMARTCHARGINGSETTINGS_READYBYTIME']._serialized_end=1292
|
|
72
|
+
_globals['_SMARTCHARGINGINFO']._serialized_start=1295
|
|
73
|
+
_globals['_SMARTCHARGINGINFO']._serialized_end=1535
|
|
74
|
+
_globals['_SMARTCHARGINGINFO_RESUMETIME']._serialized_start=1491
|
|
75
|
+
_globals['_SMARTCHARGINGINFO_RESUMETIME']._serialized_end=1535
|
|
76
|
+
_globals['_WEIGHTEDCHARGINGFORECAST']._serialized_start=1537
|
|
77
|
+
_globals['_WEIGHTEDCHARGINGFORECAST']._serialized_end=1563
|
|
78
|
+
_globals['_SESSIONSTATUS']._serialized_start=1566
|
|
79
|
+
_globals['_SESSIONSTATUS']._serialized_end=1784
|
|
80
|
+
_globals['_TIMEESTIMATION']._serialized_start=1786
|
|
81
|
+
_globals['_TIMEESTIMATION']._serialized_end=1904
|
|
82
|
+
_globals['_ENERGYSTATE']._serialized_start=1907
|
|
83
|
+
_globals['_ENERGYSTATE']._serialized_end=2260
|
|
84
|
+
_globals['_SESSIONPOWER']._serialized_start=2262
|
|
85
|
+
_globals['_SESSIONPOWER']._serialized_end=2291
|
|
86
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -337,18 +337,20 @@ class TimeEstimation(_message.Message):
|
|
|
337
337
|
def __init__(self, validity: _Optional[_Union[TimeEstimationValidity, str]] = ..., estimated_time_remaining: _Optional[int] = ...) -> None: ...
|
|
338
338
|
|
|
339
339
|
class EnergyState(_message.Message):
|
|
340
|
-
__slots__ = ("charging_state", "charger_status", "field_3", "field_10", "connection_state")
|
|
340
|
+
__slots__ = ("charging_state", "charger_status", "field_3", "power", "field_10", "connection_state")
|
|
341
341
|
CHARGING_STATE_FIELD_NUMBER: _ClassVar[int]
|
|
342
342
|
CHARGER_STATUS_FIELD_NUMBER: _ClassVar[int]
|
|
343
343
|
FIELD_3_FIELD_NUMBER: _ClassVar[int]
|
|
344
|
+
POWER_FIELD_NUMBER: _ClassVar[int]
|
|
344
345
|
FIELD_10_FIELD_NUMBER: _ClassVar[int]
|
|
345
346
|
CONNECTION_STATE_FIELD_NUMBER: _ClassVar[int]
|
|
346
347
|
charging_state: ChargingState
|
|
347
348
|
charger_status: ChargerStatus
|
|
348
349
|
field_3: int
|
|
350
|
+
power: float
|
|
349
351
|
field_10: str
|
|
350
352
|
connection_state: ConnectionState
|
|
351
|
-
def __init__(self, charging_state: _Optional[_Union[ChargingState, str]] = ..., charger_status: _Optional[_Union[ChargerStatus, str]] = ..., field_3: _Optional[int] = ..., field_10: _Optional[str] = ..., connection_state: _Optional[_Union[ConnectionState, str]] = ...) -> None: ...
|
|
353
|
+
def __init__(self, charging_state: _Optional[_Union[ChargingState, str]] = ..., charger_status: _Optional[_Union[ChargerStatus, str]] = ..., field_3: _Optional[int] = ..., power: _Optional[float] = ..., field_10: _Optional[str] = ..., connection_state: _Optional[_Union[ConnectionState, str]] = ...) -> None: ...
|
|
352
354
|
|
|
353
355
|
class SessionPower(_message.Message):
|
|
354
356
|
__slots__ = ("power",)
|
|
@@ -55,8 +55,8 @@ message CabinTemperatures {
|
|
|
55
55
|
optional float exterior_temperature = 2; // °C
|
|
56
56
|
float interior_temperature = 3; // °C
|
|
57
57
|
// The app's interior display temperature: the set point, same as
|
|
58
|
-
// HvacSettingsStatus's target.
|
|
59
|
-
float driver_set_point = 4; // °C
|
|
58
|
+
// HvacSettingsStatus's target. Not sent by every vehicle.
|
|
59
|
+
optional float driver_set_point = 4; // °C
|
|
60
60
|
|
|
61
61
|
message ZoneTemperature {
|
|
62
62
|
int32 seat = 1;
|
|
@@ -0,0 +1,84 @@
|
|
|
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/comfort.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/comfort.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/comfort.proto\x12\x17rivian.parallax.comfort\"0\n\x12HvacSettingsStatus\x12\x1a\n\x12target_temperature\x18\x01 \x01(\x02\"\xa4\x01\n\x0eUserModesState\x12\x12\n\nin_service\x18\x01 \x01(\x08\x12\x15\n\rcar_wash_mode\x18\x02 \x01(\x08\x12\x10\n\x08pet_mode\x18\x03 \x01(\x05\x12\x11\n\tcamp_mode\x18\x04 \x01(\x05\x12\x16\n\x0etransport_mode\x18\x05 \x01(\x05\x12\x14\n\x0c\x63limate_keep\x18\x06 \x01(\x05\x12\x14\n\x0c\x66\x61\x63tory_mode\x18\x07 \x01(\x05\"\x98\x01\n\x1a\x43\x61\x62inPreconditioningStatus\x12>\n\x06status\x18\x01 \x01(\x0e\x32..rivian.parallax.comfort.PreconditioningStatus\x12:\n\x04type\x18\x02 \x01(\x0e\x32,.rivian.parallax.comfort.PreconditioningType\"\xa9\x02\n\x11\x43\x61\x62inTemperatures\x12P\n\x0ctemperatures\x18\x01 \x03(\x0b\x32:.rivian.parallax.comfort.CabinTemperatures.ZoneTemperature\x12!\n\x14\x65xterior_temperature\x18\x02 \x01(\x02H\x00\x88\x01\x01\x12\x1c\n\x14interior_temperature\x18\x03 \x01(\x02\x12\x1d\n\x10\x64river_set_point\x18\x04 \x01(\x02H\x01\x88\x01\x01\x1a\x34\n\x0fZoneTemperature\x12\x0c\n\x04seat\x18\x01 \x01(\x05\x12\x13\n\x0btemperature\x18\x02 \x01(\x02\x42\x17\n\x15_exterior_temperatureB\x13\n\x11_driver_set_point\"A\n\x17\x43\x61\x62inVentilationSetting\x12&\n\x1e\x61uto_cabin_ventilation_enabled\x18\x01 \x01(\x08\"&\n\x12\x43limateHoldSetting\x12\x10\n\x08\x64uration\x18\x01 \x01(\x05\"\xd7\x02\n\x11\x43limateHoldStatus\x12?\n\x06status\x18\x01 \x01(\x0e\x32/.rivian.parallax.comfort.ClimateHoldStatusValue\x12\x46\n\x0c\x61vailability\x18\x02 \x01(\x0e\x32\x30.rivian.parallax.comfort.ClimateHoldAvailability\x12W\n\x15unavailability_reason\x18\x03 \x01(\x0e\x32\x38.rivian.parallax.comfort.ClimateHoldUnavailabilityReason\x12\x44\n\x08\x65nd_time\x18\x04 \x01(\x0b\x32\x32.rivian.parallax.comfort.ClimateHoldStatus.EndTime\x1a\x1a\n\x07\x45ndTime\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\"L\n\x12\x44\x65\x66rostDefogStatus\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32&.rivian.parallax.comfort.DefrostStatus\"\xda\x01\n\rPetModeStatus\x12\x35\n\x06status\x18\x01 \x01(\x0e\x32%.rivian.parallax.comfort.PetModeState\x12M\n\x12temperature_status\x18\x02 \x01(\x0e\x32\x31.rivian.parallax.comfort.PetModeTemperatureStatus\x12\x43\n\rcabin_climate\x18\x03 \x01(\x0e\x32,.rivian.parallax.comfort.PetModeCabinClimate\"\xa4\x02\n\x16SeatConditioningStatus\x12H\n\x07surface\x18\x01 \x03(\x0b\x32\x37.rivian.parallax.comfort.SeatConditioningStatus.Surface\x1a\xbf\x01\n\x07Surface\x12\x31\n\x02id\x18\x01 \x01(\x0e\x32%.rivian.parallax.comfort.CabinSurface\x12\x37\n\x04type\x18\x02 \x01(\x0e\x32).rivian.parallax.comfort.ConditioningType\x12>\n\x05state\x18\x03 \x01(\x0e\x32*.rivian.parallax.comfort.ConditioningLevelH\x00\x88\x01\x01\x42\x08\n\x06_state*\x85\x03\n\x15PreconditioningStatus\x12&\n\"PRECONDITIONING_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n\x18PRECONDITIONING_INITIATE\x10\x01\x12\x1a\n\x16PRECONDITIONING_ACTIVE\x10\x02\x12\"\n\x1ePRECONDITIONING_ACTIVE_WARNING\x10\x03\x12%\n!PRECONDITIONING_COMPLETE_MAINTAIN\x10\x04\x12-\n)PRECONDITIONING_TIMEOUT_TEMP_NOT_ACHIEVED\x10\x05\x12!\n\x1dPRECONDITIONING_ERROR_SOC_LOW\x10\x06\x12&\n\"PRECONDITIONING_ERROR_SYSTEM_FAULT\x10\x07\x12\x1f\n\x1bPRECONDITIONING_UNAVAILABLE\x10\x08\x12$\n PRECONDITIONING_TIMEOUT_COMPLETE\x10\t*\xe4\x01\n\x13PreconditioningType\x12$\n PRECONDITIONING_TYPE_UNSPECIFIED\x10\x00\x12&\n\"PRECONDITIONING_TYPE_USER_SELECTED\x10\x01\x12*\n&PRECONDITIONING_TYPE_SCREEN_PROTECTION\x10\x02\x12\"\n\x1ePRECONDITIONING_TYPE_SCHEDULED\x10\x03\x12/\n+PRECONDITIONING_TYPE_AUTO_CABIN_VENTILATION\x10\x04*\xba\x01\n\x16\x43limateHoldStatusValue\x12#\n\x1f\x43LIMATE_HOLD_STATUS_UNSPECIFIED\x10\x00\x12#\n\x1f\x43LIMATE_HOLD_STATUS_UNAVAILABLE\x10\x01\x12\x1b\n\x17\x43LIMATE_HOLD_STATUS_OFF\x10\x02\x12\x1a\n\x16\x43LIMATE_HOLD_STATUS_ON\x10\x03\x12\x1d\n\x19\x43LIMATE_HOLD_STATUS_FAULT\x10\x04*\x9d\x01\n\x17\x43limateHoldAvailability\x12)\n%CLIMATE_HOLD_AVAILABILITY_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x43LIMATE_HOLD_AVAILABLE\x10\x01\x12\x1d\n\x19\x43LIMATE_HOLD_CONTROLLABLE\x10\x02\x12\x1c\n\x18\x43LIMATE_HOLD_UNAVAILABLE\x10\x03*\xc7\x01\n\x1f\x43limateHoldUnavailabilityReason\x12+\n\'CLIMATE_HOLD_UNAVAILABILITY_UNSPECIFIED\x10\x00\x12\'\n#CLIMATE_HOLD_UNAVAILABILITY_UNKNOWN\x10\x01\x12\'\n#CLIMATE_HOLD_UNAVAILABILITY_LOW_SOC\x10\x02\x12%\n!CLIMATE_HOLD_UNAVAILABILITY_FAULT\x10\x03*\x82\x01\n\rDefrostStatus\x12\x1e\n\x1a\x44\x45\x46ROST_STATUS_UNSPECIFIED\x10\x00\x12\x11\n\rDEFROST_DEFOG\x10\x01\x12\x12\n\x0e\x44\x45\x46ROST_ACTIVE\x10\x02\x12\x19\n\x15\x44\x45\x46ROST_DEFOG_DEFROST\x10\x03\x12\x0f\n\x0b\x44\x45\x46ROST_OFF\x10\x04*~\n\x13PetModeCabinClimate\x12&\n\"PET_MODE_CABIN_CLIMATE_COMFORTABLE\x10\x00\x12\x1f\n\x1bPET_MODE_CABIN_CLIMATE_COLD\x10\x01\x12\x1e\n\x1aPET_MODE_CABIN_CLIMATE_HOT\x10\x02*]\n\x0cPetModeState\x12\x10\n\x0cPET_MODE_OFF\x10\x00\x12\x0f\n\x0bPET_MODE_ON\x10\x01\x12\x15\n\x11PET_MODE_DISABLED\x10\x02\x12\x13\n\x0fPET_MODE_FAULTY\x10\x03*\x9a\x01\n\x18PetModeTemperatureStatus\x12 \n\x1cPET_MODE_TEMPERATURE_DEFAULT\x10\x00\x12\x1d\n\x19PET_MODE_TEMPERATURE_COLD\x10\x01\x12\x1c\n\x18PET_MODE_TEMPERATURE_HOT\x10\x02\x12\x1f\n\x1bPET_MODE_TEMPERATURE_FAULTY\x10\x03*\xce\x02\n\x0c\x43\x61\x62inSurface\x12\x1d\n\x19\x43\x41\x42IN_SURFACE_UNSPECIFIED\x10\x00\x12\x12\n\x0eSTEERING_WHEEL\x10\x01\x12\x0e\n\nREAR_GLASS\x10\x02\x12\x0f\n\x0b\x46RONT_GLASS\x10\x03\x12\x14\n\x10SIDEVIEW_MIRRORS\x10\x04\x12\x13\n\x0fSEAT_ROW_1_LEFT\x10\x05\x12\x15\n\x11SEAT_ROW_1_MIDDLE\x10\x06\x12\x14\n\x10SEAT_ROW_1_RIGHT\x10\x07\x12\x13\n\x0fSEAT_ROW_2_LEFT\x10\x08\x12\x15\n\x11SEAT_ROW_2_MIDDLE\x10\t\x12\x14\n\x10SEAT_ROW_2_RIGHT\x10\n\x12\x13\n\x0fSEAT_ROW_3_LEFT\x10\x0b\x12\x15\n\x11SEAT_ROW_3_MIDDLE\x10\x0c\x12\x14\n\x10SEAT_ROW_3_RIGHT\x10\r\x12\x0e\n\nWIPER_AREA\x10\x0e*c\n\x10\x43onditioningType\x12!\n\x1d\x43ONDITIONING_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11\x43ONDITIONING_HEAT\x10\x01\x12\x15\n\x11\x43ONDITIONING_VENT\x10\x02*\x85\x01\n\x11\x43onditioningLevel\x12\"\n\x1e\x43ONDITIONING_LEVEL_UNSPECIFIED\x10\x00\x12\x18\n\x14\x43ONDITIONING_LEVEL_1\x10\x01\x12\x18\n\x14\x43ONDITIONING_LEVEL_2\x10\x02\x12\x18\n\x14\x43ONDITIONING_LEVEL_3\x10\x03\x62\x06proto3')
|
|
28
|
+
|
|
29
|
+
_globals = globals()
|
|
30
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
31
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'rivian.parallax.proto.comfort_pb2', _globals)
|
|
32
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
33
|
+
DESCRIPTOR._loaded_options = None
|
|
34
|
+
_globals['_PRECONDITIONINGSTATUS']._serialized_start=1784
|
|
35
|
+
_globals['_PRECONDITIONINGSTATUS']._serialized_end=2173
|
|
36
|
+
_globals['_PRECONDITIONINGTYPE']._serialized_start=2176
|
|
37
|
+
_globals['_PRECONDITIONINGTYPE']._serialized_end=2404
|
|
38
|
+
_globals['_CLIMATEHOLDSTATUSVALUE']._serialized_start=2407
|
|
39
|
+
_globals['_CLIMATEHOLDSTATUSVALUE']._serialized_end=2593
|
|
40
|
+
_globals['_CLIMATEHOLDAVAILABILITY']._serialized_start=2596
|
|
41
|
+
_globals['_CLIMATEHOLDAVAILABILITY']._serialized_end=2753
|
|
42
|
+
_globals['_CLIMATEHOLDUNAVAILABILITYREASON']._serialized_start=2756
|
|
43
|
+
_globals['_CLIMATEHOLDUNAVAILABILITYREASON']._serialized_end=2955
|
|
44
|
+
_globals['_DEFROSTSTATUS']._serialized_start=2958
|
|
45
|
+
_globals['_DEFROSTSTATUS']._serialized_end=3088
|
|
46
|
+
_globals['_PETMODECABINCLIMATE']._serialized_start=3090
|
|
47
|
+
_globals['_PETMODECABINCLIMATE']._serialized_end=3216
|
|
48
|
+
_globals['_PETMODESTATE']._serialized_start=3218
|
|
49
|
+
_globals['_PETMODESTATE']._serialized_end=3311
|
|
50
|
+
_globals['_PETMODETEMPERATURESTATUS']._serialized_start=3314
|
|
51
|
+
_globals['_PETMODETEMPERATURESTATUS']._serialized_end=3468
|
|
52
|
+
_globals['_CABINSURFACE']._serialized_start=3471
|
|
53
|
+
_globals['_CABINSURFACE']._serialized_end=3805
|
|
54
|
+
_globals['_CONDITIONINGTYPE']._serialized_start=3807
|
|
55
|
+
_globals['_CONDITIONINGTYPE']._serialized_end=3906
|
|
56
|
+
_globals['_CONDITIONINGLEVEL']._serialized_start=3909
|
|
57
|
+
_globals['_CONDITIONINGLEVEL']._serialized_end=4042
|
|
58
|
+
_globals['_HVACSETTINGSSTATUS']._serialized_start=64
|
|
59
|
+
_globals['_HVACSETTINGSSTATUS']._serialized_end=112
|
|
60
|
+
_globals['_USERMODESSTATE']._serialized_start=115
|
|
61
|
+
_globals['_USERMODESSTATE']._serialized_end=279
|
|
62
|
+
_globals['_CABINPRECONDITIONINGSTATUS']._serialized_start=282
|
|
63
|
+
_globals['_CABINPRECONDITIONINGSTATUS']._serialized_end=434
|
|
64
|
+
_globals['_CABINTEMPERATURES']._serialized_start=437
|
|
65
|
+
_globals['_CABINTEMPERATURES']._serialized_end=734
|
|
66
|
+
_globals['_CABINTEMPERATURES_ZONETEMPERATURE']._serialized_start=636
|
|
67
|
+
_globals['_CABINTEMPERATURES_ZONETEMPERATURE']._serialized_end=688
|
|
68
|
+
_globals['_CABINVENTILATIONSETTING']._serialized_start=736
|
|
69
|
+
_globals['_CABINVENTILATIONSETTING']._serialized_end=801
|
|
70
|
+
_globals['_CLIMATEHOLDSETTING']._serialized_start=803
|
|
71
|
+
_globals['_CLIMATEHOLDSETTING']._serialized_end=841
|
|
72
|
+
_globals['_CLIMATEHOLDSTATUS']._serialized_start=844
|
|
73
|
+
_globals['_CLIMATEHOLDSTATUS']._serialized_end=1187
|
|
74
|
+
_globals['_CLIMATEHOLDSTATUS_ENDTIME']._serialized_start=1161
|
|
75
|
+
_globals['_CLIMATEHOLDSTATUS_ENDTIME']._serialized_end=1187
|
|
76
|
+
_globals['_DEFROSTDEFOGSTATUS']._serialized_start=1189
|
|
77
|
+
_globals['_DEFROSTDEFOGSTATUS']._serialized_end=1265
|
|
78
|
+
_globals['_PETMODESTATUS']._serialized_start=1268
|
|
79
|
+
_globals['_PETMODESTATUS']._serialized_end=1486
|
|
80
|
+
_globals['_SEATCONDITIONINGSTATUS']._serialized_start=1489
|
|
81
|
+
_globals['_SEATCONDITIONINGSTATUS']._serialized_end=1781
|
|
82
|
+
_globals['_SEATCONDITIONINGSTATUS_SURFACE']._serialized_start=1590
|
|
83
|
+
_globals['_SEATCONDITIONINGSTATUS_SURFACE']._serialized_end=1781
|
|
84
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -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
|
|
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
|
|
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)
|