dexcontrol 0.2.12__py3-none-any.whl → 0.3.4__py3-none-any.whl

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 (60) hide show
  1. dexcontrol/__init__.py +17 -8
  2. dexcontrol/apps/dualsense_teleop_base.py +1 -1
  3. dexcontrol/comm/__init__.py +51 -0
  4. dexcontrol/comm/rtc.py +401 -0
  5. dexcontrol/comm/subscribers.py +329 -0
  6. dexcontrol/config/core/chassis.py +9 -4
  7. dexcontrol/config/core/hand.py +1 -0
  8. dexcontrol/config/sensors/cameras/__init__.py +1 -2
  9. dexcontrol/config/sensors/cameras/zed_camera.py +2 -2
  10. dexcontrol/config/sensors/vega_sensors.py +12 -18
  11. dexcontrol/config/vega.py +4 -1
  12. dexcontrol/core/arm.py +66 -42
  13. dexcontrol/core/chassis.py +142 -120
  14. dexcontrol/core/component.py +107 -58
  15. dexcontrol/core/hand.py +119 -86
  16. dexcontrol/core/head.py +22 -33
  17. dexcontrol/core/misc.py +331 -158
  18. dexcontrol/core/robot_query_interface.py +467 -0
  19. dexcontrol/core/torso.py +5 -9
  20. dexcontrol/robot.py +245 -574
  21. dexcontrol/sensors/__init__.py +1 -2
  22. dexcontrol/sensors/camera/__init__.py +0 -2
  23. dexcontrol/sensors/camera/base_camera.py +150 -0
  24. dexcontrol/sensors/camera/rgb_camera.py +68 -64
  25. dexcontrol/sensors/camera/zed_camera.py +140 -164
  26. dexcontrol/sensors/imu/chassis_imu.py +81 -62
  27. dexcontrol/sensors/imu/zed_imu.py +54 -43
  28. dexcontrol/sensors/lidar/rplidar.py +16 -20
  29. dexcontrol/sensors/manager.py +4 -14
  30. dexcontrol/sensors/ultrasonic.py +15 -28
  31. dexcontrol/utils/__init__.py +0 -11
  32. dexcontrol/utils/comm_helper.py +110 -0
  33. dexcontrol/utils/constants.py +1 -1
  34. dexcontrol/utils/error_code.py +2 -4
  35. dexcontrol/utils/os_utils.py +172 -4
  36. dexcontrol/utils/pb_utils.py +6 -28
  37. {dexcontrol-0.2.12.dist-info → dexcontrol-0.3.4.dist-info}/METADATA +16 -3
  38. dexcontrol-0.3.4.dist-info/RECORD +62 -0
  39. {dexcontrol-0.2.12.dist-info → dexcontrol-0.3.4.dist-info}/WHEEL +1 -1
  40. dexcontrol/config/sensors/cameras/luxonis_camera.py +0 -51
  41. dexcontrol/proto/dexcontrol_msg_pb2.py +0 -73
  42. dexcontrol/proto/dexcontrol_msg_pb2.pyi +0 -220
  43. dexcontrol/proto/dexcontrol_query_pb2.py +0 -77
  44. dexcontrol/proto/dexcontrol_query_pb2.pyi +0 -162
  45. dexcontrol/sensors/camera/luxonis_camera.py +0 -169
  46. dexcontrol/utils/motion_utils.py +0 -199
  47. dexcontrol/utils/rate_limiter.py +0 -172
  48. dexcontrol/utils/rtc_utils.py +0 -144
  49. dexcontrol/utils/subscribers/__init__.py +0 -52
  50. dexcontrol/utils/subscribers/base.py +0 -281
  51. dexcontrol/utils/subscribers/camera.py +0 -332
  52. dexcontrol/utils/subscribers/decoders.py +0 -88
  53. dexcontrol/utils/subscribers/generic.py +0 -110
  54. dexcontrol/utils/subscribers/imu.py +0 -175
  55. dexcontrol/utils/subscribers/lidar.py +0 -172
  56. dexcontrol/utils/subscribers/protobuf.py +0 -111
  57. dexcontrol/utils/subscribers/rtc.py +0 -316
  58. dexcontrol/utils/zenoh_utils.py +0 -122
  59. dexcontrol-0.2.12.dist-info/RECORD +0 -75
  60. {dexcontrol-0.2.12.dist-info → dexcontrol-0.3.4.dist-info}/licenses/LICENSE +0 -0
@@ -1,51 +0,0 @@
1
- # Copyright (C) 2025 Dexmate Inc.
2
- #
3
- # This software is dual-licensed:
4
- #
5
- # 1. GNU Affero General Public License v3.0 (AGPL-3.0)
6
- # See LICENSE-AGPL for details
7
- #
8
- # 2. Commercial License
9
- # For commercial licensing terms, contact: contact@dexmate.ai
10
-
11
- from dataclasses import dataclass, field
12
-
13
-
14
- @dataclass
15
- class LuxonisCameraConfig:
16
- """Configuration for LuxonisCameraSensor (wrist camera).
17
-
18
- Attributes:
19
- _target_: Target sensor class for Hydra instantiation.
20
- name: Logical name of the camera.
21
- enable: Whether this sensor is enabled.
22
- enable_fps_tracking: Enable FPS tracking logs.
23
- fps_log_interval: Frames between FPS logs.
24
- subscriber_config: Topics for RGB and Depth Zenoh subscribers.
25
- """
26
-
27
- _target_: str = "dexcontrol.sensors.camera.luxonis_camera.LuxonisCameraSensor"
28
- name: str = "wrist_camera"
29
- enable: bool = False
30
- enable_fps_tracking: bool = False
31
- fps_log_interval: int = 30
32
-
33
- # Note: Resolution is set by the publisher (dexsensor). The publisher now defaults
34
- # to 720p to match common Luxonis sensor capabilities (e.g., OV9782 supports 720p/800p).
35
- # These subscribers only define topics to consume.
36
- subscriber_config: dict = field(
37
- default_factory=lambda: {
38
- "left_rgb": {
39
- "enable": True,
40
- "topic": "camera/wrist/left_rgb",
41
- },
42
- "right_rgb": {
43
- "enable": True,
44
- "topic": "camera/wrist/right_rgb",
45
- },
46
- "depth": {
47
- "enable": False,
48
- "topic": "camera/wrist/depth",
49
- },
50
- }
51
- )
@@ -1,73 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # NO CHECKED-IN PROTOBUF GENCODE
4
- # source: dexcontrol_msg.proto
5
- # Protobuf Python Version: 6.31.0
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
-
13
- _runtime_version.ValidateProtobufRuntimeVersion(
14
- _runtime_version.Domain.PUBLIC,
15
- 6,
16
- 31,
17
- 0,
18
- '',
19
- 'dexcontrol_msg.proto'
20
- )
21
- # @@protoc_insertion_point(imports)
22
-
23
- _sym_db = _symbol_database.Default()
24
-
25
-
26
-
27
-
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x64\x65xcontrol_msg.proto\x12\ndexcontrol\"l\n\x08\x41rmState\x12\x11\n\tjoint_pos\x18\x01 \x03(\x02\x12\x11\n\tjoint_vel\x18\x02 \x03(\x02\x12\x11\n\tjoint_cur\x18\x03 \x03(\x02\x12\x11\n\tjoint_err\x18\x04 \x03(\r\x12\x14\n\x0ctimestamp_ns\x18\x05 \x01(\x04\"\\\n\tHandState\x12\x11\n\tjoint_pos\x18\x01 \x03(\x02\x12\x11\n\tjoint_vel\x18\x02 \x03(\x02\x12\x13\n\x0bjoint_statu\x18\x03 \x03(\r\x12\x14\n\x0ctimestamp_ns\x18\x04 \x01(\x04\"G\n\tHeadState\x12\x11\n\tjoint_pos\x18\x01 \x03(\x02\x12\x11\n\tjoint_vel\x18\x02 \x03(\x02\x12\x14\n\x0ctimestamp_ns\x18\x03 \x01(\x04\"H\n\nTorsoState\x12\x11\n\tjoint_pos\x18\x01 \x03(\x02\x12\x11\n\tjoint_vel\x18\x02 \x03(\x02\x12\x14\n\x0ctimestamp_ns\x18\x03 \x01(\x04\"a\n\x10SingleWheelState\x12\x14\n\x0csteering_pos\x18\x01 \x01(\x02\x12\x11\n\twheel_pos\x18\x02 \x01(\x02\x12\x11\n\twheel_vel\x18\x03 \x01(\x02\x12\x11\n\twheel_cur\x18\x04 \x01(\x02\"}\n\x0c\x43hassisState\x12*\n\x04left\x18\x01 \x01(\x0b\x32\x1c.dexcontrol.SingleWheelState\x12+\n\x05right\x18\x02 \x01(\x0b\x32\x1c.dexcontrol.SingleWheelState\x12\x14\n\x0ctimestamp_ns\x18\x05 \x01(\x04\"\x8f\x01\n\x08\x42MSState\x12\x0f\n\x07voltage\x18\x01 \x01(\x02\x12\x0f\n\x07\x63urrent\x18\x02 \x01(\x02\x12\x13\n\x0btemperature\x18\x03 \x01(\x02\x12\x12\n\npercentage\x18\x04 \x01(\r\x12\x13\n\x0bis_charging\x18\x05 \x01(\x08\x12\r\n\x05\x65rror\x18\x06 \x01(\r\x12\x14\n\x0ctimestamp_ns\x18\x07 \x01(\x04\"^\n\x0bWrenchState\x12\x0e\n\x06wrench\x18\x01 \x03(\x02\x12\x13\n\x0b\x62lue_button\x18\x02 \x01(\x08\x12\x14\n\x0cgreen_button\x18\x03 \x01(\x08\x12\x14\n\x0ctimestamp_ns\x18\x04 \x01(\x04\"Z\n\nEStopState\x12\x16\n\x0e\x62utton_pressed\x18\x01 \x01(\x08\x12\x1e\n\x16software_estop_enabled\x18\x02 \x01(\x08\x12\x14\n\x0ctimestamp_ns\x18\x03 \x01(\x04\"w\n\x0fUltrasonicState\x12\x12\n\nfront_left\x18\x01 \x01(\x02\x12\x13\n\x0b\x66ront_right\x18\x02 \x01(\x02\x12\x11\n\tback_left\x18\x03 \x01(\x02\x12\x12\n\nback_right\x18\x04 \x01(\x02\x12\x14\n\x0ctimestamp_ns\x18\x05 \x01(\x04\"\xbd\x01\n\x08IMUState\x12\r\n\x05\x61\x63\x63_x\x18\x01 \x01(\x02\x12\r\n\x05\x61\x63\x63_y\x18\x02 \x01(\x02\x12\r\n\x05\x61\x63\x63_z\x18\x03 \x01(\x02\x12\x0e\n\x06gyro_x\x18\x04 \x01(\x02\x12\x0e\n\x06gyro_y\x18\x05 \x01(\x02\x12\x0e\n\x06gyro_z\x18\x06 \x01(\x02\x12\x0e\n\x06quat_w\x18\x07 \x01(\x02\x12\x0e\n\x06quat_x\x18\x08 \x01(\x02\x12\x0e\n\x06quat_y\x18\t \x01(\x02\x12\x0e\n\x06quat_z\x18\n \x01(\x02\x12\x14\n\x0ctimestamp_ns\x18\x0b \x01(\x04\"\xa3\x01\n\nArmCommand\x12\x38\n\x0c\x63ommand_type\x18\x01 \x01(\x0e\x32\".dexcontrol.ArmCommand.CommandType\x12\x11\n\tjoint_pos\x18\x02 \x03(\x02\x12\x11\n\tjoint_vel\x18\x03 \x03(\x02\"5\n\x0b\x43ommandType\x12\x0c\n\x08POSITION\x10\x00\x12\x18\n\x14VELOCITY_FEEDFORWARD\x10\x01\" \n\x0bHandCommand\x12\x11\n\tjoint_pos\x18\x01 \x03(\x02\"3\n\x0bHeadCommand\x12\x11\n\tjoint_pos\x18\x01 \x03(\x02\x12\x11\n\tjoint_vel\x18\x02 \x03(\x02\"4\n\x0cTorsoCommand\x12\x11\n\tjoint_pos\x18\x01 \x03(\x02\x12\x11\n\tjoint_vel\x18\x02 \x03(\x02\"=\n\x12SingleWheelCommand\x12\x14\n\x0csteering_pos\x18\x01 \x01(\x02\x12\x11\n\twheel_vel\x18\x02 \x01(\x02\"m\n\x0e\x43hassisCommand\x12,\n\x04left\x18\x01 \x01(\x0b\x32\x1e.dexcontrol.SingleWheelCommand\x12-\n\x05right\x18\x02 \x01(\x0b\x32\x1e.dexcontrol.SingleWheelCommand\"-\n\x1d\x45ndEffectorPassThroughCommand\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x62\x06proto3')
29
-
30
- _globals = globals()
31
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
32
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'dexcontrol_msg_pb2', _globals)
33
- if not _descriptor._USE_C_DESCRIPTORS:
34
- DESCRIPTOR._loaded_options = None
35
- _globals['_ARMSTATE']._serialized_start=36
36
- _globals['_ARMSTATE']._serialized_end=144
37
- _globals['_HANDSTATE']._serialized_start=146
38
- _globals['_HANDSTATE']._serialized_end=238
39
- _globals['_HEADSTATE']._serialized_start=240
40
- _globals['_HEADSTATE']._serialized_end=311
41
- _globals['_TORSOSTATE']._serialized_start=313
42
- _globals['_TORSOSTATE']._serialized_end=385
43
- _globals['_SINGLEWHEELSTATE']._serialized_start=387
44
- _globals['_SINGLEWHEELSTATE']._serialized_end=484
45
- _globals['_CHASSISSTATE']._serialized_start=486
46
- _globals['_CHASSISSTATE']._serialized_end=611
47
- _globals['_BMSSTATE']._serialized_start=614
48
- _globals['_BMSSTATE']._serialized_end=757
49
- _globals['_WRENCHSTATE']._serialized_start=759
50
- _globals['_WRENCHSTATE']._serialized_end=853
51
- _globals['_ESTOPSTATE']._serialized_start=855
52
- _globals['_ESTOPSTATE']._serialized_end=945
53
- _globals['_ULTRASONICSTATE']._serialized_start=947
54
- _globals['_ULTRASONICSTATE']._serialized_end=1066
55
- _globals['_IMUSTATE']._serialized_start=1069
56
- _globals['_IMUSTATE']._serialized_end=1258
57
- _globals['_ARMCOMMAND']._serialized_start=1261
58
- _globals['_ARMCOMMAND']._serialized_end=1424
59
- _globals['_ARMCOMMAND_COMMANDTYPE']._serialized_start=1371
60
- _globals['_ARMCOMMAND_COMMANDTYPE']._serialized_end=1424
61
- _globals['_HANDCOMMAND']._serialized_start=1426
62
- _globals['_HANDCOMMAND']._serialized_end=1458
63
- _globals['_HEADCOMMAND']._serialized_start=1460
64
- _globals['_HEADCOMMAND']._serialized_end=1511
65
- _globals['_TORSOCOMMAND']._serialized_start=1513
66
- _globals['_TORSOCOMMAND']._serialized_end=1565
67
- _globals['_SINGLEWHEELCOMMAND']._serialized_start=1567
68
- _globals['_SINGLEWHEELCOMMAND']._serialized_end=1628
69
- _globals['_CHASSISCOMMAND']._serialized_start=1630
70
- _globals['_CHASSISCOMMAND']._serialized_end=1739
71
- _globals['_ENDEFFECTORPASSTHROUGHCOMMAND']._serialized_start=1741
72
- _globals['_ENDEFFECTORPASSTHROUGHCOMMAND']._serialized_end=1786
73
- # @@protoc_insertion_point(module_scope)
@@ -1,220 +0,0 @@
1
- from collections.abc import Iterable as _Iterable
2
- from collections.abc import Mapping as _Mapping
3
- from typing import ClassVar as _ClassVar
4
- from typing import Optional as _Optional
5
- from typing import Union as _Union
6
-
7
- from google.protobuf import descriptor as _descriptor
8
- from google.protobuf import message as _message
9
- from google.protobuf.internal import containers as _containers
10
- from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
11
-
12
- DESCRIPTOR: _descriptor.FileDescriptor
13
-
14
- class ArmState(_message.Message):
15
- __slots__ = ("joint_pos", "joint_vel", "joint_cur", "joint_err", "timestamp_ns")
16
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
17
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
18
- JOINT_CUR_FIELD_NUMBER: _ClassVar[int]
19
- JOINT_ERR_FIELD_NUMBER: _ClassVar[int]
20
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
21
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
22
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
23
- joint_cur: _containers.RepeatedScalarFieldContainer[float]
24
- joint_err: _containers.RepeatedScalarFieldContainer[int]
25
- timestamp_ns: int
26
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., joint_cur: _Optional[_Iterable[float]] = ..., joint_err: _Optional[_Iterable[int]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
27
-
28
- class HandState(_message.Message):
29
- __slots__ = ("joint_pos", "joint_vel", "joint_statu", "timestamp_ns")
30
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
31
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
32
- JOINT_STATU_FIELD_NUMBER: _ClassVar[int]
33
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
34
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
35
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
36
- joint_statu: _containers.RepeatedScalarFieldContainer[int]
37
- timestamp_ns: int
38
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., joint_statu: _Optional[_Iterable[int]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
39
-
40
- class HeadState(_message.Message):
41
- __slots__ = ("joint_pos", "joint_vel", "timestamp_ns")
42
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
43
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
44
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
45
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
46
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
47
- timestamp_ns: int
48
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
49
-
50
- class TorsoState(_message.Message):
51
- __slots__ = ("joint_pos", "joint_vel", "timestamp_ns")
52
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
53
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
54
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
55
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
56
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
57
- timestamp_ns: int
58
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
59
-
60
- class SingleWheelState(_message.Message):
61
- __slots__ = ("steering_pos", "wheel_pos", "wheel_vel", "wheel_cur")
62
- STEERING_POS_FIELD_NUMBER: _ClassVar[int]
63
- WHEEL_POS_FIELD_NUMBER: _ClassVar[int]
64
- WHEEL_VEL_FIELD_NUMBER: _ClassVar[int]
65
- WHEEL_CUR_FIELD_NUMBER: _ClassVar[int]
66
- steering_pos: float
67
- wheel_pos: float
68
- wheel_vel: float
69
- wheel_cur: float
70
- def __init__(self, steering_pos: _Optional[float] = ..., wheel_pos: _Optional[float] = ..., wheel_vel: _Optional[float] = ..., wheel_cur: _Optional[float] = ...) -> None: ...
71
-
72
- class ChassisState(_message.Message):
73
- __slots__ = ("left", "right", "timestamp_ns")
74
- LEFT_FIELD_NUMBER: _ClassVar[int]
75
- RIGHT_FIELD_NUMBER: _ClassVar[int]
76
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
77
- left: SingleWheelState
78
- right: SingleWheelState
79
- timestamp_ns: int
80
- def __init__(self, left: _Optional[_Union[SingleWheelState, _Mapping]] = ..., right: _Optional[_Union[SingleWheelState, _Mapping]] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
81
-
82
- class BMSState(_message.Message):
83
- __slots__ = ("voltage", "current", "temperature", "percentage", "is_charging", "error", "timestamp_ns")
84
- VOLTAGE_FIELD_NUMBER: _ClassVar[int]
85
- CURRENT_FIELD_NUMBER: _ClassVar[int]
86
- TEMPERATURE_FIELD_NUMBER: _ClassVar[int]
87
- PERCENTAGE_FIELD_NUMBER: _ClassVar[int]
88
- IS_CHARGING_FIELD_NUMBER: _ClassVar[int]
89
- ERROR_FIELD_NUMBER: _ClassVar[int]
90
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
91
- voltage: float
92
- current: float
93
- temperature: float
94
- percentage: int
95
- is_charging: bool
96
- error: int
97
- timestamp_ns: int
98
- def __init__(self, voltage: _Optional[float] = ..., current: _Optional[float] = ..., temperature: _Optional[float] = ..., percentage: _Optional[int] = ..., is_charging: bool = ..., error: _Optional[int] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
99
-
100
- class WrenchState(_message.Message):
101
- __slots__ = ("wrench", "blue_button", "green_button", "timestamp_ns")
102
- WRENCH_FIELD_NUMBER: _ClassVar[int]
103
- BLUE_BUTTON_FIELD_NUMBER: _ClassVar[int]
104
- GREEN_BUTTON_FIELD_NUMBER: _ClassVar[int]
105
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
106
- wrench: _containers.RepeatedScalarFieldContainer[float]
107
- blue_button: bool
108
- green_button: bool
109
- timestamp_ns: int
110
- def __init__(self, wrench: _Optional[_Iterable[float]] = ..., blue_button: bool = ..., green_button: bool = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
111
-
112
- class EStopState(_message.Message):
113
- __slots__ = ("button_pressed", "software_estop_enabled", "timestamp_ns")
114
- BUTTON_PRESSED_FIELD_NUMBER: _ClassVar[int]
115
- SOFTWARE_ESTOP_ENABLED_FIELD_NUMBER: _ClassVar[int]
116
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
117
- button_pressed: bool
118
- software_estop_enabled: bool
119
- timestamp_ns: int
120
- def __init__(self, button_pressed: bool = ..., software_estop_enabled: bool = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
121
-
122
- class UltrasonicState(_message.Message):
123
- __slots__ = ("front_left", "front_right", "back_left", "back_right", "timestamp_ns")
124
- FRONT_LEFT_FIELD_NUMBER: _ClassVar[int]
125
- FRONT_RIGHT_FIELD_NUMBER: _ClassVar[int]
126
- BACK_LEFT_FIELD_NUMBER: _ClassVar[int]
127
- BACK_RIGHT_FIELD_NUMBER: _ClassVar[int]
128
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
129
- front_left: float
130
- front_right: float
131
- back_left: float
132
- back_right: float
133
- timestamp_ns: int
134
- def __init__(self, front_left: _Optional[float] = ..., front_right: _Optional[float] = ..., back_left: _Optional[float] = ..., back_right: _Optional[float] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
135
-
136
- class IMUState(_message.Message):
137
- __slots__ = ("acc_x", "acc_y", "acc_z", "gyro_x", "gyro_y", "gyro_z", "quat_w", "quat_x", "quat_y", "quat_z", "timestamp_ns")
138
- ACC_X_FIELD_NUMBER: _ClassVar[int]
139
- ACC_Y_FIELD_NUMBER: _ClassVar[int]
140
- ACC_Z_FIELD_NUMBER: _ClassVar[int]
141
- GYRO_X_FIELD_NUMBER: _ClassVar[int]
142
- GYRO_Y_FIELD_NUMBER: _ClassVar[int]
143
- GYRO_Z_FIELD_NUMBER: _ClassVar[int]
144
- QUAT_W_FIELD_NUMBER: _ClassVar[int]
145
- QUAT_X_FIELD_NUMBER: _ClassVar[int]
146
- QUAT_Y_FIELD_NUMBER: _ClassVar[int]
147
- QUAT_Z_FIELD_NUMBER: _ClassVar[int]
148
- TIMESTAMP_NS_FIELD_NUMBER: _ClassVar[int]
149
- acc_x: float
150
- acc_y: float
151
- acc_z: float
152
- gyro_x: float
153
- gyro_y: float
154
- gyro_z: float
155
- quat_w: float
156
- quat_x: float
157
- quat_y: float
158
- quat_z: float
159
- timestamp_ns: int
160
- def __init__(self, acc_x: _Optional[float] = ..., acc_y: _Optional[float] = ..., acc_z: _Optional[float] = ..., gyro_x: _Optional[float] = ..., gyro_y: _Optional[float] = ..., gyro_z: _Optional[float] = ..., quat_w: _Optional[float] = ..., quat_x: _Optional[float] = ..., quat_y: _Optional[float] = ..., quat_z: _Optional[float] = ..., timestamp_ns: _Optional[int] = ...) -> None: ...
161
-
162
- class ArmCommand(_message.Message):
163
- __slots__ = ("command_type", "joint_pos", "joint_vel")
164
- class CommandType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
165
- __slots__ = ()
166
- POSITION: _ClassVar[ArmCommand.CommandType]
167
- VELOCITY_FEEDFORWARD: _ClassVar[ArmCommand.CommandType]
168
- POSITION: ArmCommand.CommandType
169
- VELOCITY_FEEDFORWARD: ArmCommand.CommandType
170
- COMMAND_TYPE_FIELD_NUMBER: _ClassVar[int]
171
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
172
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
173
- command_type: ArmCommand.CommandType
174
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
175
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
176
- def __init__(self, command_type: _Optional[_Union[ArmCommand.CommandType, str]] = ..., joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ...) -> None: ...
177
-
178
- class HandCommand(_message.Message):
179
- __slots__ = ("joint_pos",)
180
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
181
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
182
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ...) -> None: ...
183
-
184
- class HeadCommand(_message.Message):
185
- __slots__ = ("joint_pos", "joint_vel")
186
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
187
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
188
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
189
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
190
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ...) -> None: ...
191
-
192
- class TorsoCommand(_message.Message):
193
- __slots__ = ("joint_pos", "joint_vel")
194
- JOINT_POS_FIELD_NUMBER: _ClassVar[int]
195
- JOINT_VEL_FIELD_NUMBER: _ClassVar[int]
196
- joint_pos: _containers.RepeatedScalarFieldContainer[float]
197
- joint_vel: _containers.RepeatedScalarFieldContainer[float]
198
- def __init__(self, joint_pos: _Optional[_Iterable[float]] = ..., joint_vel: _Optional[_Iterable[float]] = ...) -> None: ...
199
-
200
- class SingleWheelCommand(_message.Message):
201
- __slots__ = ("steering_pos", "wheel_vel")
202
- STEERING_POS_FIELD_NUMBER: _ClassVar[int]
203
- WHEEL_VEL_FIELD_NUMBER: _ClassVar[int]
204
- steering_pos: float
205
- wheel_vel: float
206
- def __init__(self, steering_pos: _Optional[float] = ..., wheel_vel: _Optional[float] = ...) -> None: ...
207
-
208
- class ChassisCommand(_message.Message):
209
- __slots__ = ("left", "right")
210
- LEFT_FIELD_NUMBER: _ClassVar[int]
211
- RIGHT_FIELD_NUMBER: _ClassVar[int]
212
- left: SingleWheelCommand
213
- right: SingleWheelCommand
214
- def __init__(self, left: _Optional[_Union[SingleWheelCommand, _Mapping]] = ..., right: _Optional[_Union[SingleWheelCommand, _Mapping]] = ...) -> None: ...
215
-
216
- class EndEffectorPassThroughCommand(_message.Message):
217
- __slots__ = ("data",)
218
- DATA_FIELD_NUMBER: _ClassVar[int]
219
- data: bytes
220
- def __init__(self, data: _Optional[bytes] = ...) -> None: ...
@@ -1,77 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- # Generated by the protocol buffer compiler. DO NOT EDIT!
3
- # NO CHECKED-IN PROTOBUF GENCODE
4
- # source: dexcontrol_query.proto
5
- # Protobuf Python Version: 6.31.0
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
-
13
- _runtime_version.ValidateProtobufRuntimeVersion(
14
- _runtime_version.Domain.PUBLIC,
15
- 6,
16
- 31,
17
- 0,
18
- '',
19
- 'dexcontrol_query.proto'
20
- )
21
- # @@protoc_insertion_point(imports)
22
-
23
- _sym_db = _symbol_database.Default()
24
-
25
-
26
-
27
-
28
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x64\x65xcontrol_query.proto\x12\ndexcontrol\"Z\n\nSetArmMode\x12)\n\x04mode\x18\x01 \x01(\x0e\x32\x1b.dexcontrol.SetArmMode.Mode\"!\n\x04Mode\x12\x0c\n\x08POSITION\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\"Z\n\x0bSetHeadMode\x12*\n\x04mode\x18\x01 \x01(\x0e\x32\x1c.dexcontrol.SetHeadMode.Mode\"\x1f\n\x04Mode\x12\n\n\x06\x45NABLE\x10\x00\x12\x0b\n\x07\x44ISABLE\x10\x01\"\x1a\n\x08SetEstop\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\x18\n\x06SetLed\x12\x0e\n\x06\x65nable\x18\x01 \x01(\x08\"\x82\x01\n\nClearError\x12\x33\n\tcomponent\x18\x01 \x01(\x0e\x32 .dexcontrol.ClearError.Component\"?\n\tComponent\x12\x0c\n\x08LEFT_ARM\x10\x00\x12\r\n\tRIGHT_ARM\x10\x01\x12\x08\n\x04HEAD\x10\x02\x12\x0b\n\x07\x43HASSIS\x10\x03\"y\n\x0fRebootComponent\x12\x38\n\tcomponent\x18\x01 \x01(\x0e\x32%.dexcontrol.RebootComponent.Component\",\n\tComponent\x12\x07\n\x03\x41RM\x10\x00\x12\t\n\x05TORSO\x10\x01\x12\x0b\n\x07\x43HASSIS\x10\x02\"\x80\x01\n\x0f\x46irmwareVersion\x12\x18\n\x10hardware_version\x18\x01 \x01(\x05\x12\x18\n\x10software_version\x18\x02 \x01(\x05\x12\x14\n\x0c\x63ompile_time\x18\x03 \x01(\x05\x12\x11\n\tmain_hash\x18\x04 \x01(\t\x12\x10\n\x08sub_hash\x18\x05 \x01(\t\"\xb2\x01\n\x0fSoftwareVersion\x12J\n\x10\x66irmware_version\x18\x01 \x03(\x0b\x32\x30.dexcontrol.SoftwareVersion.FirmwareVersionEntry\x1aS\n\x14\x46irmwareVersionEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12*\n\x05value\x18\x02 \x01(\x0b\x32\x1b.dexcontrol.FirmwareVersion:\x02\x38\x01\"\x9d\x01\n\x14SingleComponentState\x12\x11\n\tconnected\x18\x01 \x01(\x08\x12,\n\x07\x65nabled\x18\x02 \x01(\x0e\x32\x1b.dexcontrol.ComponentStatus\x12\x30\n\x0b\x65rror_state\x18\x03 \x01(\x0e\x32\x1b.dexcontrol.ComponentStatus\x12\x12\n\nerror_code\x18\x04 \x01(\t\"\x9b\x01\n\x0f\x43omponentStates\x12\x37\n\x06states\x18\x01 \x03(\x0b\x32\'.dexcontrol.ComponentStates.StatesEntry\x1aO\n\x0bStatesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12/\n\x05value\x18\x02 \x01(\x0b\x32 .dexcontrol.SingleComponentState:\x02\x38\x01\"U\n\nNTPRequest\x12\x1b\n\x13\x63lient_send_time_ns\x18\x01 \x01(\x04\x12\x14\n\x0csample_count\x18\x02 \x01(\r\x12\x14\n\x0csample_index\x18\x03 \x01(\r\"\x94\x01\n\x0bNTPResponse\x12\x1b\n\x13\x63lient_send_time_ns\x18\x01 \x01(\x04\x12\x1e\n\x16server_receive_time_ns\x18\x02 \x01(\x04\x12\x1b\n\x13server_send_time_ns\x18\x03 \x01(\x04\x12\x14\n\x0csample_index\x18\x04 \x01(\r\x12\x15\n\rtotal_samples\x18\x05 \x01(\r*0\n\x0f\x43omponentStatus\x12\n\n\x06NORMAL\x10\x00\x12\x06\n\x02NA\x10\x01\x12\t\n\x05\x45RROR\x10\x02\x62\x06proto3')
29
-
30
- _globals = globals()
31
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
32
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'dexcontrol_query_pb2', _globals)
33
- if not _descriptor._USE_C_DESCRIPTORS:
34
- DESCRIPTOR._loaded_options = None
35
- _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._loaded_options = None
36
- _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_options = b'8\001'
37
- _globals['_COMPONENTSTATES_STATESENTRY']._loaded_options = None
38
- _globals['_COMPONENTSTATES_STATESENTRY']._serialized_options = b'8\001'
39
- _globals['_COMPONENTSTATUS']._serialized_start=1400
40
- _globals['_COMPONENTSTATUS']._serialized_end=1448
41
- _globals['_SETARMMODE']._serialized_start=38
42
- _globals['_SETARMMODE']._serialized_end=128
43
- _globals['_SETARMMODE_MODE']._serialized_start=95
44
- _globals['_SETARMMODE_MODE']._serialized_end=128
45
- _globals['_SETHEADMODE']._serialized_start=130
46
- _globals['_SETHEADMODE']._serialized_end=220
47
- _globals['_SETHEADMODE_MODE']._serialized_start=189
48
- _globals['_SETHEADMODE_MODE']._serialized_end=220
49
- _globals['_SETESTOP']._serialized_start=222
50
- _globals['_SETESTOP']._serialized_end=248
51
- _globals['_SETLED']._serialized_start=250
52
- _globals['_SETLED']._serialized_end=274
53
- _globals['_CLEARERROR']._serialized_start=277
54
- _globals['_CLEARERROR']._serialized_end=407
55
- _globals['_CLEARERROR_COMPONENT']._serialized_start=344
56
- _globals['_CLEARERROR_COMPONENT']._serialized_end=407
57
- _globals['_REBOOTCOMPONENT']._serialized_start=409
58
- _globals['_REBOOTCOMPONENT']._serialized_end=530
59
- _globals['_REBOOTCOMPONENT_COMPONENT']._serialized_start=486
60
- _globals['_REBOOTCOMPONENT_COMPONENT']._serialized_end=530
61
- _globals['_FIRMWAREVERSION']._serialized_start=533
62
- _globals['_FIRMWAREVERSION']._serialized_end=661
63
- _globals['_SOFTWAREVERSION']._serialized_start=664
64
- _globals['_SOFTWAREVERSION']._serialized_end=842
65
- _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_start=759
66
- _globals['_SOFTWAREVERSION_FIRMWAREVERSIONENTRY']._serialized_end=842
67
- _globals['_SINGLECOMPONENTSTATE']._serialized_start=845
68
- _globals['_SINGLECOMPONENTSTATE']._serialized_end=1002
69
- _globals['_COMPONENTSTATES']._serialized_start=1005
70
- _globals['_COMPONENTSTATES']._serialized_end=1160
71
- _globals['_COMPONENTSTATES_STATESENTRY']._serialized_start=1081
72
- _globals['_COMPONENTSTATES_STATESENTRY']._serialized_end=1160
73
- _globals['_NTPREQUEST']._serialized_start=1162
74
- _globals['_NTPREQUEST']._serialized_end=1247
75
- _globals['_NTPRESPONSE']._serialized_start=1250
76
- _globals['_NTPRESPONSE']._serialized_end=1398
77
- # @@protoc_insertion_point(module_scope)
@@ -1,162 +0,0 @@
1
- from collections.abc import Mapping as _Mapping
2
- from typing import ClassVar as _ClassVar
3
- from typing import Optional as _Optional
4
- from typing import Union as _Union
5
-
6
- from google.protobuf import descriptor as _descriptor
7
- from google.protobuf import message as _message
8
- from google.protobuf.internal import containers as _containers
9
- from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
10
-
11
- DESCRIPTOR: _descriptor.FileDescriptor
12
-
13
- class ComponentStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
14
- __slots__ = ()
15
- NORMAL: _ClassVar[ComponentStatus]
16
- NA: _ClassVar[ComponentStatus]
17
- ERROR: _ClassVar[ComponentStatus]
18
- NORMAL: ComponentStatus
19
- NA: ComponentStatus
20
- ERROR: ComponentStatus
21
-
22
- class SetArmMode(_message.Message):
23
- __slots__ = ("mode",)
24
- class Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
25
- __slots__ = ()
26
- POSITION: _ClassVar[SetArmMode.Mode]
27
- DISABLE: _ClassVar[SetArmMode.Mode]
28
- POSITION: SetArmMode.Mode
29
- DISABLE: SetArmMode.Mode
30
- MODE_FIELD_NUMBER: _ClassVar[int]
31
- mode: SetArmMode.Mode
32
- def __init__(self, mode: _Optional[_Union[SetArmMode.Mode, str]] = ...) -> None: ...
33
-
34
- class SetHeadMode(_message.Message):
35
- __slots__ = ("mode",)
36
- class Mode(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
37
- __slots__ = ()
38
- ENABLE: _ClassVar[SetHeadMode.Mode]
39
- DISABLE: _ClassVar[SetHeadMode.Mode]
40
- ENABLE: SetHeadMode.Mode
41
- DISABLE: SetHeadMode.Mode
42
- MODE_FIELD_NUMBER: _ClassVar[int]
43
- mode: SetHeadMode.Mode
44
- def __init__(self, mode: _Optional[_Union[SetHeadMode.Mode, str]] = ...) -> None: ...
45
-
46
- class SetEstop(_message.Message):
47
- __slots__ = ("enable",)
48
- ENABLE_FIELD_NUMBER: _ClassVar[int]
49
- enable: bool
50
- def __init__(self, enable: bool = ...) -> None: ...
51
-
52
- class SetLed(_message.Message):
53
- __slots__ = ("enable",)
54
- ENABLE_FIELD_NUMBER: _ClassVar[int]
55
- enable: bool
56
- def __init__(self, enable: bool = ...) -> None: ...
57
-
58
- class ClearError(_message.Message):
59
- __slots__ = ("component",)
60
- class Component(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
61
- __slots__ = ()
62
- LEFT_ARM: _ClassVar[ClearError.Component]
63
- RIGHT_ARM: _ClassVar[ClearError.Component]
64
- HEAD: _ClassVar[ClearError.Component]
65
- CHASSIS: _ClassVar[ClearError.Component]
66
- LEFT_ARM: ClearError.Component
67
- RIGHT_ARM: ClearError.Component
68
- HEAD: ClearError.Component
69
- CHASSIS: ClearError.Component
70
- COMPONENT_FIELD_NUMBER: _ClassVar[int]
71
- component: ClearError.Component
72
- def __init__(self, component: _Optional[_Union[ClearError.Component, str]] = ...) -> None: ...
73
-
74
- class RebootComponent(_message.Message):
75
- __slots__ = ("component",)
76
- class Component(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
77
- __slots__ = ()
78
- ARM: _ClassVar[RebootComponent.Component]
79
- TORSO: _ClassVar[RebootComponent.Component]
80
- CHASSIS: _ClassVar[RebootComponent.Component]
81
- ARM: RebootComponent.Component
82
- TORSO: RebootComponent.Component
83
- CHASSIS: RebootComponent.Component
84
- COMPONENT_FIELD_NUMBER: _ClassVar[int]
85
- component: RebootComponent.Component
86
- def __init__(self, component: _Optional[_Union[RebootComponent.Component, str]] = ...) -> None: ...
87
-
88
- class FirmwareVersion(_message.Message):
89
- __slots__ = ("hardware_version", "software_version", "compile_time", "main_hash", "sub_hash")
90
- HARDWARE_VERSION_FIELD_NUMBER: _ClassVar[int]
91
- SOFTWARE_VERSION_FIELD_NUMBER: _ClassVar[int]
92
- COMPILE_TIME_FIELD_NUMBER: _ClassVar[int]
93
- MAIN_HASH_FIELD_NUMBER: _ClassVar[int]
94
- SUB_HASH_FIELD_NUMBER: _ClassVar[int]
95
- hardware_version: int
96
- software_version: int
97
- compile_time: int
98
- main_hash: str
99
- sub_hash: str
100
- def __init__(self, hardware_version: _Optional[int] = ..., software_version: _Optional[int] = ..., compile_time: _Optional[int] = ..., main_hash: _Optional[str] = ..., sub_hash: _Optional[str] = ...) -> None: ...
101
-
102
- class SoftwareVersion(_message.Message):
103
- __slots__ = ("firmware_version",)
104
- class FirmwareVersionEntry(_message.Message):
105
- __slots__ = ("key", "value")
106
- KEY_FIELD_NUMBER: _ClassVar[int]
107
- VALUE_FIELD_NUMBER: _ClassVar[int]
108
- key: str
109
- value: FirmwareVersion
110
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[FirmwareVersion, _Mapping]] = ...) -> None: ...
111
- FIRMWARE_VERSION_FIELD_NUMBER: _ClassVar[int]
112
- firmware_version: _containers.MessageMap[str, FirmwareVersion]
113
- def __init__(self, firmware_version: _Optional[_Mapping[str, FirmwareVersion]] = ...) -> None: ...
114
-
115
- class SingleComponentState(_message.Message):
116
- __slots__ = ("connected", "enabled", "error_state", "error_code")
117
- CONNECTED_FIELD_NUMBER: _ClassVar[int]
118
- ENABLED_FIELD_NUMBER: _ClassVar[int]
119
- ERROR_STATE_FIELD_NUMBER: _ClassVar[int]
120
- ERROR_CODE_FIELD_NUMBER: _ClassVar[int]
121
- connected: bool
122
- enabled: ComponentStatus
123
- error_state: ComponentStatus
124
- error_code: str
125
- def __init__(self, connected: bool = ..., enabled: _Optional[_Union[ComponentStatus, str]] = ..., error_state: _Optional[_Union[ComponentStatus, str]] = ..., error_code: _Optional[str] = ...) -> None: ...
126
-
127
- class ComponentStates(_message.Message):
128
- __slots__ = ("states",)
129
- class StatesEntry(_message.Message):
130
- __slots__ = ("key", "value")
131
- KEY_FIELD_NUMBER: _ClassVar[int]
132
- VALUE_FIELD_NUMBER: _ClassVar[int]
133
- key: str
134
- value: SingleComponentState
135
- def __init__(self, key: _Optional[str] = ..., value: _Optional[_Union[SingleComponentState, _Mapping]] = ...) -> None: ...
136
- STATES_FIELD_NUMBER: _ClassVar[int]
137
- states: _containers.MessageMap[str, SingleComponentState]
138
- def __init__(self, states: _Optional[_Mapping[str, SingleComponentState]] = ...) -> None: ...
139
-
140
- class NTPRequest(_message.Message):
141
- __slots__ = ("client_send_time_ns", "sample_count", "sample_index")
142
- CLIENT_SEND_TIME_NS_FIELD_NUMBER: _ClassVar[int]
143
- SAMPLE_COUNT_FIELD_NUMBER: _ClassVar[int]
144
- SAMPLE_INDEX_FIELD_NUMBER: _ClassVar[int]
145
- client_send_time_ns: int
146
- sample_count: int
147
- sample_index: int
148
- def __init__(self, client_send_time_ns: _Optional[int] = ..., sample_count: _Optional[int] = ..., sample_index: _Optional[int] = ...) -> None: ...
149
-
150
- class NTPResponse(_message.Message):
151
- __slots__ = ("client_send_time_ns", "server_receive_time_ns", "server_send_time_ns", "sample_index", "total_samples")
152
- CLIENT_SEND_TIME_NS_FIELD_NUMBER: _ClassVar[int]
153
- SERVER_RECEIVE_TIME_NS_FIELD_NUMBER: _ClassVar[int]
154
- SERVER_SEND_TIME_NS_FIELD_NUMBER: _ClassVar[int]
155
- SAMPLE_INDEX_FIELD_NUMBER: _ClassVar[int]
156
- TOTAL_SAMPLES_FIELD_NUMBER: _ClassVar[int]
157
- client_send_time_ns: int
158
- server_receive_time_ns: int
159
- server_send_time_ns: int
160
- sample_index: int
161
- total_samples: int
162
- def __init__(self, client_send_time_ns: _Optional[int] = ..., server_receive_time_ns: _Optional[int] = ..., server_send_time_ns: _Optional[int] = ..., sample_index: _Optional[int] = ..., total_samples: _Optional[int] = ...) -> None: ...