psmovebridge 0.1.0__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.
@@ -0,0 +1 @@
1
+ from .client import PSMoveClient
psmovebridge/client.py ADDED
@@ -0,0 +1,172 @@
1
+ """PSMoveClient Socket & Network Protocol Manager.
2
+
3
+ Handles dual TCP/UDP socket communication with PSMoveServiceEx, managing initial
4
+ handshakes, UDP binding, subscription requests, and event-driven data streaming.
5
+ """
6
+
7
+ import select
8
+ import socket
9
+ import struct
10
+ import time
11
+ from typing import Callable, Optional
12
+
13
+ from psmovebridge import protocol_pb2 as proto
14
+ from .tracker import HMDData
15
+
16
+
17
+ class PSMoveClient:
18
+ """Network client for interfacing with PSMoveServiceEx over TCP and UDP.
19
+
20
+ Attributes:
21
+ ip (str): Target IP address of the PSMoveServiceEx server.
22
+ port (int): Target TCP/UDP port (default is 9512).
23
+ tcp_sock (Optional[socket.socket]): TCP socket for control/handshake.
24
+ udp_sock (Optional[socket.socket]): UDP socket for high-frequency tracking streams.
25
+ connection_id (int): Session ID assigned by the server upon connection.
26
+ is_running (bool): State flag controlling the main event loop.
27
+ hmd_data (HMDData): Instance storing the parsed HMD spatial state.
28
+ """
29
+
30
+ def __init__(self, ip: str = "127.0.0.1", port: int = 9512) -> None:
31
+ """Initializes the PSMoveClient instance."""
32
+ self.ip: str = ip
33
+ self.port: int = port
34
+ self.tcp_sock: Optional[socket.socket] = None
35
+ self.udp_sock: Optional[socket.socket] = None
36
+ self.connection_id: int = -1
37
+ self.is_running: bool = False
38
+ self.hmd_data: HMDData = HMDData()
39
+
40
+ def connect(self) -> None:
41
+ """Establishes dual TCP/UDP connections and executes the service handshake.
42
+
43
+ Configures socket options (including Windows-specific SIO_UDP_CONNRESET fixes),
44
+ retrieves the session TCP connection ID, and registers the local UDP socket.
45
+ """
46
+ # 1. Initialize and bind local UDP socket
47
+ self.udp_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
48
+ try:
49
+ # Fix WinError 10054: Prevents UDP socket termination when ICMP Port Unreachable is returned
50
+ self.udp_sock.ioctl(-1744830452, False)
51
+ except (AttributeError, OSError, ValueError):
52
+ pass
53
+ self.udp_sock.bind(("127.0.0.1", 0))
54
+
55
+ # 2. Establish control TCP socket connection
56
+ self.tcp_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
57
+ self.tcp_sock.connect((self.ip, self.port))
58
+
59
+ # 3. Read initial response to extract assigned session connection_id
60
+ init_payload = self._recv_tcp()
61
+ if init_payload:
62
+ res = proto.Response()
63
+ res.ParseFromString(init_payload)
64
+ if hasattr(res, "result_connection_info"):
65
+ self.connection_id = res.result_connection_info.tcp_connection_id
66
+
67
+ # 4. Transmit UDP registration frame to pair sockets on the server side
68
+ input_df = proto.DeviceInputDataFrame()
69
+ if hasattr(input_df, "connection_id"):
70
+ input_df.connection_id = self.connection_id
71
+ elif hasattr(input_df, "tcp_connection_id"):
72
+ input_df.tcp_connection_id = self.connection_id
73
+
74
+ serialized_msg = input_df.SerializeToString()
75
+ header = struct.pack(">I", len(serialized_msg))
76
+
77
+ # Send packet burst to guarantee UDP registration
78
+ for _ in range(3):
79
+ self.udp_sock.sendto(header + serialized_msg, (self.ip, self.port))
80
+ time.sleep(0.01)
81
+
82
+ def subscribe_hmd(self, hmd_id: int = 0) -> None:
83
+ """Sends a request over TCP to subscribe to a specific HMD data stream.
84
+
85
+ Args:
86
+ hmd_id (int): Target HMD device identifier (default is 0).
87
+ """
88
+ if not self.tcp_sock:
89
+ raise RuntimeError("TCP socket is not connected. Call connect() first.")
90
+
91
+ req = proto.Request()
92
+ req.type = proto.Request.RequestType.Value("START_HMD_DATA_STREAM")
93
+ req.request_id = 1
94
+ stream_req = req.request_start_hmd_data_stream
95
+ stream_req.hmd_id = hmd_id
96
+ stream_req.include_position_data = True
97
+ stream_req.include_raw_tracker_data = True
98
+
99
+ req_bytes = req.SerializeToString()
100
+ self.tcp_sock.sendall(struct.pack(">I", len(req_bytes)) + req_bytes)
101
+ self._recv_tcp() # Await server ACK response
102
+
103
+ def listen(self, callback: Callable[[HMDData], None]) -> None:
104
+ """Main non-blocking event loop using I/O multiplexing.
105
+
106
+ Listens for incoming UDP datagrams, parses Protobuf payloads, and invokes
107
+ the provided callback upon valid pose updates.
108
+
109
+ Args:
110
+ callback (Callable[[HMDData], None]): Function triggered when HMD pose updates.
111
+ """
112
+ if not self.udp_sock or not self.tcp_sock:
113
+ raise RuntimeError("Sockets are not initialized. Call connect() first.")
114
+
115
+ self.is_running = True
116
+ try:
117
+ while self.is_running:
118
+ # Multiplex socket I/O with 50ms timeout to prevent CPU spinning
119
+ readable, _, _ = select.select(
120
+ [self.udp_sock, self.tcp_sock], [], [], 0.05
121
+ )
122
+ for s in readable:
123
+ if s is self.udp_sock:
124
+ data, _ = self.udp_sock.recvfrom(4096)
125
+ if len(data) > 4:
126
+ # Extract 4-byte big-endian framing length header
127
+ size = struct.unpack(">I", data[:4])[0]
128
+ df = proto.DeviceOutputDataFrame()
129
+ df.ParseFromString(data[4 : 4 + size])
130
+
131
+ if df.HasField("hmd_data_packet"):
132
+ if self.hmd_data.update_from_protobuf(df.hmd_data_packet):
133
+ callback(self.hmd_data)
134
+ except KeyboardInterrupt:
135
+ self.close()
136
+
137
+ def close(self) -> None:
138
+ """Gracefully terminates sockets and stops the listening loop."""
139
+ self.is_running = False
140
+ if self.tcp_sock:
141
+ self.tcp_sock.close()
142
+ self.tcp_sock = None
143
+ if self.udp_sock:
144
+ self.udp_sock.close()
145
+ self.udp_sock = None
146
+
147
+ def _recv_tcp(self) -> Optional[bytes]:
148
+ """Internal helper to read length-prefixed messages over TCP.
149
+
150
+ Returns:
151
+ Optional[bytes]: The deserialized binary payload, or None on failure.
152
+ """
153
+ if not self.tcp_sock:
154
+ return None
155
+
156
+ try:
157
+ # Read 4-byte big-endian message length header
158
+ raw_len = self.tcp_sock.recv(4)
159
+ if not raw_len:
160
+ return None
161
+ length = struct.unpack(">I", raw_len)[0]
162
+
163
+ # Read exact payload byte count
164
+ payload = b""
165
+ while len(payload) < length:
166
+ chunk = self.tcp_sock.recv(length - len(payload))
167
+ if not chunk:
168
+ break
169
+ payload += chunk
170
+ return payload
171
+ except Exception:
172
+ return None
@@ -0,0 +1,310 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # NO CHECKED-IN PROTOBUF GENCODE
4
+ # source: PSMoveProtocol.proto
5
+ # Protobuf Python Version: 7.35.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
+ 7,
15
+ 35,
16
+ 1,
17
+ '',
18
+ 'PSMoveProtocol.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\x14PSMoveProtocol.proto\x12\x0ePSMoveProtocol\"\x1d\n\x05Pixel\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\".\n\x0b\x46loatVector\x12\t\n\x01i\x18\x01 \x01(\x02\x12\t\n\x01j\x18\x02 \x01(\x02\x12\t\n\x01k\x18\x03 \x01(\x02\",\n\tIntVector\x12\t\n\x01i\x18\x01 \x01(\x05\x12\t\n\x01j\x18\x02 \x01(\x05\x12\t\n\x01k\x18\x03 \x01(\x05\"+\n\x08Position\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"(\n\x05\x45uler\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\"9\n\x0bOrientation\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\x12\t\n\x01w\x18\x04 \x01(\x02\"m\n\x07\x45llipse\x12%\n\x06\x63\x65nter\x18\x01 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x15\n\rhalf_x_extent\x18\x02 \x01(\x02\x12\x15\n\rhalf_y_extent\x18\x03 \x01(\x02\x12\r\n\x05\x61ngle\x18\x04 \x01(\x02\"2\n\x07Polygon\x12\'\n\x08vertices\x18\x01 \x03(\x0b\x32\x15.PSMoveProtocol.Pixel\"N\n\tOptionSet\x12\x13\n\x0boption_name\x18\x01 \x01(\t\x12\x16\n\x0eoption_strings\x18\x02 \x03(\t\x12\x14\n\x0coption_index\x18\x03 \x01(\x05\"d\n\x04Pose\x12\x30\n\x0borientation\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x12*\n\x08position\x18\x02 \x01(\x0b\x32\x18.PSMoveProtocol.Position\"\x8e\x02\n\x17ProjectionBlacklistList\x12/\n\x02_1\x18\x01 \x01(\x0b\x32#.PSMoveProtocol.ProjectionBlacklist\x12/\n\x02_2\x18\x02 \x01(\x0b\x32#.PSMoveProtocol.ProjectionBlacklist\x12/\n\x02_3\x18\x03 \x01(\x0b\x32#.PSMoveProtocol.ProjectionBlacklist\x12/\n\x02_4\x18\x04 \x01(\x0b\x32#.PSMoveProtocol.ProjectionBlacklist\x12/\n\x02_5\x18\x05 \x01(\x0b\x32#.PSMoveProtocol.ProjectionBlacklist\"A\n\x13ProjectionBlacklist\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01w\x18\x03 \x01(\x02\x12\t\n\x01h\x18\x04 \x01(\x02\"\xd3\x01\n\x13TrackingColorPreset\x12\x35\n\ncolor_type\x18\x01 \x01(\x0e\x32!.PSMoveProtocol.TrackingColorType\x12\x12\n\nhue_center\x18\x02 \x01(\x02\x12\x11\n\thue_range\x18\x03 \x01(\x02\x12\x19\n\x11saturation_center\x18\x04 \x01(\x02\x12\x18\n\x10saturation_range\x18\x05 \x01(\x02\x12\x14\n\x0cvalue_center\x18\x06 \x01(\x02\x12\x13\n\x0bvalue_range\x18\x07 \x01(\x02\"\x9f\x82\x01\n\x07Request\x12\x12\n\nrequest_id\x18\x01 \x01(\x05\x12\x31\n\x04type\x18\x02 \x01(\x0e\x32#.PSMoveProtocol.Request.RequestType\x12U\n\x1brequest_get_controller_list\x18\x03 \x01(\x0b\x32\x30.PSMoveProtocol.Request.RequestGetControllerList\x12^\n request_start_psmove_data_stream\x18\x04 \x01(\x0b\x32\x34.PSMoveProtocol.Request.RequestStartPSMoveDataStream\x12\\\n\x1frequest_stop_psmove_data_stream\x18\x05 \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestStopPSMoveDataStream\x12\x43\n\x11reset_orientation\x18\x07 \x01(\x0b\x32(.PSMoveProtocol.Request.RequestResetPose\x12J\n\x11unpair_controller\x18\x08 \x01(\x0b\x32/.PSMoveProtocol.Request.RequestUnpairController\x12\x46\n\x0fpair_controller\x18\t \x01(\x0b\x32-.PSMoveProtocol.Request.RequestPairController\x12W\n\x18\x63\x61ncel_bluetooth_request\x18\n \x01(\x0b\x32\x35.PSMoveProtocol.Request.RequestCancelBluetoothRequest\x12Z\n\x1eset_led_tracking_color_request\x18\x0c \x01(\x0b\x32\x32.PSMoveProtocol.Request.RequestSetLEDTrackingColor\x12|\n/set_controller_magnetometer_calibration_request\x18\r \x01(\x0b\x32\x43.PSMoveProtocol.Request.RequestSetControllerMagnetometerCalibration\x12~\n0set_controller_accelerometer_calibration_request\x18\x0e \x01(\x0b\x32\x44.PSMoveProtocol.Request.RequestSetControllerAccelerometerCalibration\x12v\n,set_controller_gyroscope_calibration_request\x18\x0f \x01(\x0b\x32@.PSMoveProtocol.Request.RequestSetControllerGyroscopeCalibration\x12h\n%request_set_optical_noise_calibration\x18\x10 \x01(\x0b\x32\x39.PSMoveProtocol.Request.RequestSetOpticalNoiseCalibration\x12[\n\x1erequest_set_orientation_filter\x18\x11 \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestSetOrientationFilter\x12U\n\x1brequest_set_position_filter\x18\x12 \x01(\x0b\x32\x30.PSMoveProtocol.Request.RequestSetPositionFilter\x12j\n&request_set_controller_prediction_time\x18\x13 \x01(\x0b\x32:.PSMoveProtocol.Request.RequestSetControllerPredictionTime\x12]\n\x1frequest_set_attached_controller\x18\x14 \x01(\x0b\x32\x34.PSMoveProtocol.Request.RequestSetAttachedController\x12Q\n\x19request_set_gamepad_index\x18\x15 \x01(\x0b\x32..PSMoveProtocol.Request.RequestSetGamepadIndex\x12|\n0request_set_controller_data_stream_tracker_index\x18\x16 \x01(\x0b\x32\x42.PSMoveProtocol.Request.RequestSetControllerDataStreamTrackerIndex\x12U\n\x1brequest_set_controller_hand\x18\x17 \x01(\x0b\x32\x30.PSMoveProtocol.Request.RequestSetControllerHand\x12`\n!request_start_tracker_data_stream\x18\x18 \x01(\x0b\x32\x35.PSMoveProtocol.Request.RequestStartTrackerDataStream\x12^\n request_stop_tracker_data_stream\x18\x19 \x01(\x0b\x32\x34.PSMoveProtocol.Request.RequestStopTrackerDataStream\x12W\n\x1crequest_get_tracker_settings\x18\x1a \x01(\x0b\x32\x31.PSMoveProtocol.Request.RequestGetTrackerSettings\x12W\n\x1crequest_set_tracker_exposure\x18\x1b \x01(\x0b\x32\x31.PSMoveProtocol.Request.RequestSetTrackerExposure\x12O\n\x18request_set_tracker_gain\x18\x1c \x01(\x0b\x32-.PSMoveProtocol.Request.RequestSetTrackerGain\x12S\n\x1arequest_set_tracker_option\x18\x1d \x01(\x0b\x32/.PSMoveProtocol.Request.RequestSetTrackerOption\x12^\n request_set_tracker_color_preset\x18\x1e \x01(\x0b\x32\x34.PSMoveProtocol.Request.RequestSetTrackerColorPreset\x12[\n\x1erequest_set_tracker_intrinsics\x18\x1f \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestSetTrackerIntrinsics\x12O\n\x18request_set_tracker_pose\x18 \x01(\x0b\x32-.PSMoveProtocol.Request.RequestSetTrackerPose\x12]\n\x1frequest_reload_tracker_settings\x18! \x01(\x0b\x32\x34.PSMoveProtocol.Request.RequestReloadTrackerSettings\x12W\n\x1crequest_save_tracker_profile\x18\" \x01(\x0b\x32\x31.PSMoveProtocol.Request.RequestSaveTrackerProfile\x12Y\n\x1drequest_apply_tracker_profile\x18# \x01(\x0b\x32\x32.PSMoveProtocol.Request.RequestApplyTrackerProfile\x12X\n\x1drequest_start_hmd_data_stream\x18$ \x01(\x0b\x32\x31.PSMoveProtocol.Request.RequestStartHmdDataStream\x12V\n\x1crequest_stop_hmd_data_stream\x18% \x01(\x0b\x32\x30.PSMoveProtocol.Request.RequestStopHmdDataStream\x12\x61\n\"set_hmd_led_tracking_color_request\x18& \x01(\x0b\x32\x35.PSMoveProtocol.Request.RequestSetHmdLEDTrackingColor\x12p\n)set_hmd_accelerometer_calibration_request\x18\' \x01(\x0b\x32=.PSMoveProtocol.Request.RequestSetHMDAccelerometerCalibration\x12h\n%set_hmd_gyroscope_calibration_request\x18( \x01(\x0b\x32\x39.PSMoveProtocol.Request.RequestSetHMDGyroscopeCalibration\x12\x62\n\"request_set_hmd_orientation_filter\x18) \x01(\x0b\x32\x36.PSMoveProtocol.Request.RequestSetHMDOrientationFilter\x12\\\n\x1frequest_set_hmd_position_filter\x18* \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestSetHMDPositionFilter\x12\\\n\x1frequest_set_hmd_prediction_time\x18+ \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestSetHMDPredictionTime\x12n\n)request_set_hmd_data_stream_tracker_index\x18, \x01(\x0b\x32;.PSMoveProtocol.Request.RequestSetHMDDataStreamTrackerIndex\x12Z\n\x1erequest_set_tracker_frame_rate\x18- \x01(\x0b\x32\x32.PSMoveProtocol.Request.RequestSetTrackerFrameRate\x12\\\n\x1frequest_set_tracker_frame_width\x18. \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestSetTrackerFrameWidth\x12^\n request_set_tracker_frame_height\x18/ \x01(\x0b\x32\x34.PSMoveProtocol.Request.RequestSetTrackerFrameHeight\x12l\n\'request_set_controller_optical_tracking\x18\x30 \x01(\x0b\x32;.PSMoveProtocol.Request.RequestSetControllerOpticalTracking\x12l\n\'request_set_controller_psmove_emulation\x18\x31 \x01(\x0b\x32;.PSMoveProtocol.Request.RequestSetControllerPSmoveEmulation\x12n\n(request_set_tracker_projection_blacklist\x18\x32 \x01(\x0b\x32<.PSMoveProtocol.Request.RequestSetTrackerProjectionBlacklist\x12[\n\x1erequest_set_controller_offsets\x18\x33 \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestSetControllerOffsets\x12M\n\x17request_set_hmd_offsets\x18\x34 \x01(\x0b\x32,.PSMoveProtocol.Request.RequestSetHMDOffsets\x12Y\n\x1drequest_get_playspace_offsets\x18\x35 \x01(\x0b\x32\x32.PSMoveProtocol.Request.RequestGetPlayspaceOffsets\x12Y\n\x1drequest_set_playspace_offsets\x18\x36 \x01(\x0b\x32\x32.PSMoveProtocol.Request.RequestSetPlayspaceOffsets\x12j\n&request_set_controller_filter_settings\x18\x37 \x01(\x0b\x32:.PSMoveProtocol.Request.RequestSetControllerFilterSettings\x12\\\n\x1frequest_set_hmd_filter_settings\x18\x38 \x01(\x0b\x32\x33.PSMoveProtocol.Request.RequestSetHmdFilterSettings\x12\x87\x01\n5set_controller_magnetometer_calibration_basic_request\x18\x39 \x01(\x0b\x32H.PSMoveProtocol.Request.RequestSetControllerMagnetometerCalibrationBasic\x12\x81\x01\n2request_set_controller_orientation_prediction_time\x18: \x01(\x0b\x32\x45.PSMoveProtocol.Request.RequestSetControllerOrientationPredictionTime\x12s\n+request_set_hmd_orientation_prediction_time\x18; \x01(\x0b\x32>.PSMoveProtocol.Request.RequestSetHmdOrientationPredictionTime\x12\x85\x01\n4set_controller_accelerometer_calibration_avg_request\x18< \x01(\x0b\x32G.PSMoveProtocol.Request.RequestSetControllerAccelerometerCalibrationAvg\x12\x83\x01\n3set_controller_accelerometer_calibration_ex_request\x18= \x01(\x0b\x32\x46.PSMoveProtocol.Request.RequestSetControllerAccelerometerCalibrationEx\x12i\n&set_hmd_tracking_led_overrides_request\x18> \x01(\x0b\x32\x39.PSMoveProtocol.Request.RequestSetHmdTrackingLedOverrides\x1a;\n\x18RequestGetControllerList\x12\x1f\n\x17include_usb_controllers\x18\x01 \x01(\x08\x1a\xf2\x01\n\x1cRequestStartPSMoveDataStream\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x1d\n\x15include_position_data\x18\x02 \x01(\x08\x12\x1c\n\x14include_physics_data\x18\x03 \x01(\x08\x12\x1f\n\x17include_raw_sensor_data\x18\x04 \x01(\x08\x12&\n\x1einclude_calibrated_sensor_data\x18\x05 \x01(\x08\x12 \n\x18include_raw_tracker_data\x18\x06 \x01(\x08\x12\x13\n\x0b\x64isable_roi\x18\x07 \x01(\x08\x1a\x34\n\x1bRequestStopPSMoveDataStream\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x1a[\n\x10RequestResetPose\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x30\n\x0borientation\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x1a\x30\n\x17RequestUnpairController\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x1a.\n\x15RequestPairController\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x1a\x36\n\x1dRequestCancelBluetoothRequest\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x1aj\n\x1aRequestSetLEDTrackingColor\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x35\n\ncolor_type\x18\x02 \x01(\x0e\x32!.PSMoveProtocol.TrackingColorType\x1a\xc7\x03\n+RequestSetControllerMagnetometerCalibration\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x33\n\x0e\x65llipse_center\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_extents\x18\x03 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_basis_x\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_basis_y\x18\x05 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_basis_z\x18\x06 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x19\n\x11\x65llipse_fit_error\x18\x07 \x01(\x02\x12:\n\x15magnetometer_identity\x18\x08 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x1d\n\x15magnetometer_variance\x18\t \x01(\x02\x1am\n,RequestSetControllerAccelerometerCalibration\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x14\n\x0cnoise_radius\x18\x02 \x01(\x02\x12\x10\n\x08variance\x18\x03 \x01(\x02\x1a\xac\x01\n(RequestSetControllerGyroscopeCalibration\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12-\n\x08raw_bias\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x10\n\x08variance\x18\x03 \x01(\x02\x12\r\n\x05\x64rift\x18\x04 \x01(\x02\x12\x19\n\x11gyro_gain_setting\x18\x05 \x01(\t\x1a\xd4\x01\n!RequestSetOpticalNoiseCalibration\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12#\n\x1bposition_variance_exp_fit_a\x18\x02 \x01(\x02\x12#\n\x1bposition_variance_exp_fit_b\x18\x03 \x01(\x02\x12&\n\x1eorientation_variance_exp_fit_a\x18\x04 \x01(\x02\x12&\n\x1eorientation_variance_exp_fit_b\x18\x05 \x01(\x02\x1aP\n\x1bRequestSetOrientationFilter\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x1a\n\x12orientation_filter\x18\x02 \x01(\t\x1aJ\n\x18RequestSetPositionFilter\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x17\n\x0fposition_filter\x18\x02 \x01(\t\x1aT\n\"RequestSetControllerPredictionTime\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x17\n\x0fprediction_time\x18\x02 \x01(\x02\x1aY\n\x1cRequestSetAttachedController\x12\x1b\n\x13\x63hild_controller_id\x18\x01 \x01(\x05\x12\x1c\n\x14parent_controller_id\x18\x02 \x01(\x05\x1a\x46\n\x16RequestSetGamepadIndex\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x15\n\rgamepad_index\x18\x02 \x01(\x05\x1aW\n*RequestSetControllerDataStreamTrackerIndex\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x12\n\ntracker_id\x18\x02 \x01(\x05\x1aj\n\x18RequestSetControllerHand\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x37\n\x0f\x63ontroller_hand\x18\x02 \x01(\x0e\x32\x1e.PSMoveProtocol.ControllerHand\x1a\x33\n\x1dRequestStartTrackerDataStream\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x1a\x32\n\x1cRequestStopTrackerDataStream\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x1a\xc8\x01\n\x19RequestGetTrackerSettings\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x11\n\tdevice_id\x18\x02 \x01(\x05\x12Y\n\x0f\x64\x65vice_category\x18\x03 \x01(\x0e\x32@.PSMoveProtocol.Request.RequestGetTrackerSettings.DeviceCategory\")\n\x0e\x44\x65viceCategory\x12\x0e\n\nCONTROLLER\x10\x00\x12\x07\n\x03HMD\x10\x01\x1aT\n\x19RequestSetTrackerExposure\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x14\n\x0csave_setting\x18\x03 \x01(\x08\x1aP\n\x15RequestSetTrackerGain\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x14\n\x0csave_setting\x18\x03 \x01(\x08\x1aX\n\x17RequestSetTrackerOption\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x13\n\x0boption_name\x18\x02 \x01(\t\x12\x14\n\x0coption_index\x18\x03 \x01(\x05\x1a\x89\x02\n\x1cRequestSetTrackerColorPreset\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x11\n\tdevice_id\x18\x02 \x01(\x05\x12\\\n\x0f\x64\x65vice_category\x18\x03 \x01(\x0e\x32\x43.PSMoveProtocol.Request.RequestSetTrackerColorPreset.DeviceCategory\x12\x39\n\x0c\x63olor_preset\x18\x04 \x01(\x0b\x32#.PSMoveProtocol.TrackingColorPreset\")\n\x0e\x44\x65viceCategory\x12\x0e\n\nCONTROLLER\x10\x00\x12\x07\n\x03HMD\x10\x01\x1a\x83\x02\n\x1bRequestSetTrackerIntrinsics\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x34\n\x15tracker_focal_lengths\x18\x02 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x36\n\x17tracker_principal_point\x18\x03 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x12\n\ntracker_k1\x18\x04 \x01(\x02\x12\x12\n\ntracker_k2\x18\x05 \x01(\x02\x12\x12\n\ntracker_k3\x18\x06 \x01(\x02\x12\x12\n\ntracker_p1\x18\x07 \x01(\x02\x12\x12\n\ntracker_p2\x18\x08 \x01(\x02\x1aO\n\x15RequestSetTrackerPose\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\"\n\x04pose\x18\x02 \x01(\x0b\x32\x14.PSMoveProtocol.Pose\x1a\x32\n\x1cRequestReloadTrackerSettings\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x1a\x46\n\x19RequestSaveTrackerProfile\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x15\n\rcontroller_id\x18\x02 \x01(\x05\x1aG\n\x1aRequestApplyTrackerProfile\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x15\n\rcontroller_id\x18\x02 \x01(\x05\x1a\xe8\x01\n\x19RequestStartHmdDataStream\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x1d\n\x15include_position_data\x18\x02 \x01(\x08\x12\x1c\n\x14include_physics_data\x18\x03 \x01(\x08\x12\x1f\n\x17include_raw_sensor_data\x18\x04 \x01(\x08\x12&\n\x1einclude_calibrated_sensor_data\x18\x05 \x01(\x08\x12 \n\x18include_raw_tracker_data\x18\x06 \x01(\x08\x12\x13\n\x0b\x64isable_roi\x18\x07 \x01(\x08\x1a*\n\x18RequestStopHmdDataStream\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x1a\x66\n\x1dRequestSetHmdLEDTrackingColor\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x35\n\ncolor_type\x18\x02 \x01(\x0e\x32!.PSMoveProtocol.TrackingColorType\x1a\x87\x01\n%RequestSetHMDAccelerometerCalibration\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x38\n\x13raw_average_gravity\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x14\n\x0craw_variance\x18\x03 \x01(\x02\x1a\x8b\x01\n!RequestSetHMDGyroscopeCalibration\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12-\n\x08raw_bias\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x14\n\x0craw_variance\x18\x03 \x01(\x02\x12\x11\n\traw_drift\x18\x04 \x01(\x02\x1aL\n\x1eRequestSetHMDOrientationFilter\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x1a\n\x12orientation_filter\x18\x02 \x01(\t\x1a\x46\n\x1bRequestSetHMDPositionFilter\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x17\n\x0fposition_filter\x18\x02 \x01(\t\x1a\x46\n\x1bRequestSetHMDPredictionTime\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x17\n\x0fprediction_time\x18\x02 \x01(\x02\x1aI\n#RequestSetHMDDataStreamTrackerIndex\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x12\n\ntracker_id\x18\x02 \x01(\x05\x1aU\n\x1aRequestSetTrackerFrameRate\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x14\n\x0csave_setting\x18\x03 \x01(\x08\x1aV\n\x1bRequestSetTrackerFrameWidth\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x14\n\x0csave_setting\x18\x03 \x01(\x08\x1aW\n\x1cRequestSetTrackerFrameHeight\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x02\x12\x14\n\x0csave_setting\x18\x03 \x01(\x08\x1aM\n#RequestSetControllerOpticalTracking\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\x1aM\n#RequestSetControllerPSmoveEmulation\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x0f\n\x07\x65nabled\x18\x02 \x01(\x08\x1a\x81\x01\n$RequestSetTrackerProjectionBlacklist\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x45\n\x14projection_blacklist\x18\x02 \x01(\x0b\x32\'.PSMoveProtocol.ProjectionBlacklistList\x1a\xa0\x02\n\x1bRequestSetControllerOffsets\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x31\n\x0foffset_position\x18\x02 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x12offset_orientation\x18\x03 \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12\x37\n\x18offset_world_orientation\x18\x04 \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12.\n\x0coffset_scale\x18\x05 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x1b\n\x13offset_magnetometer\x18\x06 \x01(\x02\x1a\xf5\x01\n\x14RequestSetHMDOffsets\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x31\n\x0foffset_position\x18\x02 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x12offset_orientation\x18\x03 \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12\x37\n\x18offset_world_orientation\x18\x04 \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12.\n\x0coffset_scale\x18\x05 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x1a\xa8\x01\n\x1aRequestGetPlayspaceOffsets\x12!\n\x19playspace_orientation_yaw\x18\x01 \x01(\x02\x12\x34\n\x12playspace_position\x18\x02 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x0fplayspace_scale\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x1a\xa8\x01\n\x1aRequestSetPlayspaceOffsets\x12!\n\x19playspace_orientation_yaw\x18\x01 \x01(\x02\x12\x34\n\x12playspace_position\x18\x02 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x0fplayspace_scale\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x1a\xde\x08\n\"RequestSetControllerFilterSettings\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\'\n\x1f\x66ilter_lowpassoptical_smoothing\x18\x02 \x01(\x02\x12&\n\x1e\x66ilter_lowpassoptical_distance\x18\x03 \x01(\x02\x12\"\n\x1a\x66ilter_enable_magnetometer\x18\x04 \x01(\x08\x12+\n#filter_use_passive_drift_correction\x18\x05 \x01(\x08\x12.\n&filter_passive_drift_correction_method\x18\x06 \x01(\x05\x12\x30\n(filter_passive_drift_correction_deadzone\x18\x07 \x01(\x02\x12\x38\n0filter_passive_drift_correction_gravity_deadzone\x18\x08 \x01(\x02\x12-\n%filter_passive_drift_correction_delay\x18\t \x01(\x02\x12*\n\"filter_opticaltarget_controller_id\x18\n \x01(\x05\x12 \n\x18\x66ilter_use_stabilization\x18\x0b \x01(\x08\x12&\n\x1e\x66ilter_stabilization_min_scale\x18\x0c \x01(\x02\x12\x1c\n\x14\x66ilter_madgwick_beta\x18\r \x01(\x02\x12%\n\x1d\x66ilter_madgwick_stabilization\x18\x0e \x01(\x08\x12.\n&filter_madgwick_stabilization_min_beta\x18\x0f \x01(\x02\x12\x36\n.filter_madgwick_stabilization_smoothing_factor\x18\x10 \x01(\x02\x12(\n filter_velocity_smoothing_factor\x18\x11 \x01(\x02\x12\'\n\x1f\x66ilter_angular_smoothing_factor\x18\x12 \x01(\x02\x12)\n!filter_velocity_prediction_cutoff\x18\x13 \x01(\x02\x12(\n filter_angular_prediction_cutoff\x18\x14 \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_error\x18\x15 \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_noise\x18\x16 \x01(\x02\x12-\n%filter_position_kalman_disable_cutoff\x18\x17 \x01(\x08\x12%\n\x1d\x66ilter_madgwick_smart_correct\x18\x18 \x01(\x08\x12\x19\n\x11UNUSED_4567457475\x18\x19 \x01(\x08\x12,\n$filter_magnetometer_deviation_cutoff\x18\x1a \x01(\x02\x1a\x90\x05\n\x1bRequestSetHmdFilterSettings\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\'\n\x1f\x66ilter_lowpassoptical_smoothing\x18\x02 \x01(\x02\x12&\n\x1e\x66ilter_lowpassoptical_distance\x18\x03 \x01(\x02\x12\x1c\n\x14\x66ilter_madgwick_beta\x18\x04 \x01(\x02\x12%\n\x1d\x66ilter_madgwick_stabilization\x18\x05 \x01(\x08\x12.\n&filter_madgwick_stabilization_min_beta\x18\x06 \x01(\x02\x12\x36\n.filter_madgwick_stabilization_smoothing_factor\x18\x07 \x01(\x02\x12(\n filter_velocity_smoothing_factor\x18\x08 \x01(\x02\x12\'\n\x1f\x66ilter_angular_smoothing_factor\x18\t \x01(\x02\x12)\n!filter_velocity_prediction_cutoff\x18\n \x01(\x02\x12(\n filter_angular_prediction_cutoff\x18\x0b \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_error\x18\x0c \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_noise\x18\r \x01(\x02\x12-\n%filter_position_kalman_disable_cutoff\x18\x0e \x01(\x08\x12%\n\x1d\x66ilter_madgwick_smart_correct\x18\x0f \x01(\x08\x12\x19\n\x11UNUSED_4567457475\x18\x10 \x01(\x08\x1a\xf1\x02\n0RequestSetControllerMagnetometerCalibrationBasic\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x33\n\x0e\x65llipse_center\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_extents\x18\x03 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_basis_x\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_basis_y\x18\x05 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x34\n\x0f\x65llipse_basis_z\x18\x06 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x19\n\x11\x65llipse_fit_error\x18\x07 \x01(\x02\x1a\x63\n-RequestSetControllerOrientationPredictionTime\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x1b\n\x13\x61ng_prediction_time\x18\x02 \x01(\x02\x1aU\n&RequestSetHmdOrientationPredictionTime\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x1b\n\x13\x61ng_prediction_time\x18\x02 \x01(\x02\x1a\x98\x01\n/RequestSetControllerAccelerometerCalibrationAvg\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x38\n\x13raw_average_gravity\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x14\n\x0craw_variance\x18\x03 \x01(\x02\x1a\xe4\x01\n.RequestSetControllerAccelerometerCalibrationEx\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x32\n\rscale_gravity\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x33\n\x0eoffset_gravity\x18\x03 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x32\n\rdrift_gravity\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x1a^\n!RequestSetHmdTrackingLedOverrides\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12\x12\n\nuse_custom\x18\x02 \x01(\x08\x12\x15\n\rled_overrides\x18\x03 \x01(\x05\"\xb3\x0f\n\x0bRequestType\x12\x17\n\x13GET_CONTROLLER_LIST\x10\x00\x12 \n\x1cSTART_CONTROLLER_DATA_STREAM\x10\x01\x12\x1f\n\x1bSTOP_CONTROLLER_DATA_STREAM\x10\x02\x12\x15\n\x11RESET_ORIENTATION\x10\x03\x12\x15\n\x11UNPAIR_CONTROLLER\x10\x04\x12\x13\n\x0fPAIR_CONTROLLER\x10\x05\x12\x1c\n\x18\x43\x41NCEL_BLUETOOTH_REQUEST\x10\x06\x12\x1a\n\x16SET_LED_TRACKING_COLOR\x10\x07\x12+\n\'SET_CONTROLLER_MAGNETOMETER_CALIBRATION\x10\x08\x12,\n(SET_CONTROLLER_ACCELEROMETER_CALIBRATION\x10\t\x12(\n$SET_CONTROLLER_GYROSCOPE_CALIBRATION\x10\n\x12!\n\x1dSET_OPTICAL_NOISE_CALIBRATION\x10\x0b\x12\x1a\n\x16SET_ORIENTATION_FILTER\x10\x0c\x12\x17\n\x13SET_POSITION_FILTER\x10\r\x12\"\n\x1eSET_CONTROLLER_PREDICTION_TIME\x10\x0e\x12\x1b\n\x17SET_ATTACHED_CONTROLLER\x10\x0f\x12\x15\n\x11SET_GAMEPAD_INDEX\x10\x10\x12,\n(SET_CONTROLLER_DATA_STREAM_TRACKER_INDEX\x10\x11\x12\x17\n\x13SET_CONTROLLER_HAND\x10\x12\x12\x14\n\x10GET_TRACKER_LIST\x10\x13\x12\x1d\n\x19START_TRACKER_DATA_STREAM\x10\x14\x12\x1c\n\x18STOP_TRACKER_DATA_STREAM\x10\x15\x12\x18\n\x14GET_TRACKER_SETTINGS\x10\x16\x12\x18\n\x14SET_TRACKER_EXPOSURE\x10\x17\x12\x14\n\x10SET_TRACKER_GAIN\x10\x18\x12\x16\n\x12SET_TRACKER_OPTION\x10\x19\x12\x1c\n\x18SET_TRACKER_COLOR_PRESET\x10\x1a\x12\x14\n\x10SET_TRACKER_POSE\x10\x1b\x12\x1a\n\x16SET_TRACKER_INTRINSICS\x10\x1c\x12\x1b\n\x17RELOAD_TRACKER_SETTINGS\x10\x1d\x12\x18\n\x14SAVE_TRACKER_PROFILE\x10\x1e\x12\x19\n\x15\x41PPLY_TRACKER_PROFILE\x10\x1f\x12\x1b\n\x17SEARCH_FOR_NEW_TRACKERS\x10 \x12\x1f\n\x1bGET_TRACKING_SPACE_SETTINGS\x10!\x12\x10\n\x0cGET_HMD_LIST\x10\"\x12\x19\n\x15START_HMD_DATA_STREAM\x10#\x12\x18\n\x14STOP_HMD_DATA_STREAM\x10$\x12\x1e\n\x1aSET_HMD_LED_TRACKING_COLOR\x10%\x12%\n!SET_HMD_ACCELEROMETER_CALIBRATION\x10&\x12!\n\x1dSET_HMD_GYROSCOPE_CALIBRATION\x10\'\x12\x1b\n\x17SET_HMD_PREDICTION_TIME\x10(\x12\x1e\n\x1aSET_HMD_ORIENTATION_FILTER\x10)\x12\x1b\n\x17SET_HMD_POSITION_FILTER\x10*\x12%\n!SET_HMD_DATA_STREAM_TRACKER_INDEX\x10+\x12\x17\n\x13GET_SERVICE_VERSION\x10,\x12\x1a\n\x16SET_TRACKER_FRAME_RATE\x10-\x12\x1b\n\x17SET_TRACKER_FRAME_WIDTH\x10.\x12\x1c\n\x18SET_TRACKER_FRAME_HEIGHT\x10/\x12#\n\x1fSET_CONTROLLER_OPTICAL_TRACKING\x10\x30\x12#\n\x1fSET_CONTROLLER_PSMOVE_EMULATION\x10\x31\x12#\n\x1fSET_TRACKER_PROJECTIONBLACKLIST\x10\x32\x12\x1a\n\x16SET_CONTROLLER_OFFSETS\x10\x33\x12\x13\n\x0fSET_HMD_OFFSETS\x10\x34\x12\x19\n\x15GET_PLAYSPACE_OFFSETS\x10\x35\x12\x19\n\x15SET_PLAYSPACE_OFFSETS\x10\x36\x12\"\n\x1eSET_CONTROLLER_FILTER_SETTINGS\x10\x37\x12\x1b\n\x17SET_HMD_FILTER_SETTINGS\x10\x38\x12\x31\n-SET_CONTROLLER_MAGNETOMETER_CALIBRATION_BASIC\x10\x39\x12&\n\"SET_CONTROLLER_ANG_PREDICTION_TIME\x10:\x12\x1f\n\x1bSET_HMD_ANG_PREDICTION_TIME\x10;\x12\x30\n,SET_CONTROLLER_ACCELEROMETER_CALIBRATION_AVG\x10<\x12/\n+SET_CONTROLLER_ACCELEROMETER_CALIBRATION_EX\x10=\x12\"\n\x1eSET_HMD_TRACKING_LED_OVERRIDES\x10>\"\xee<\n\x08Response\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32%.PSMoveProtocol.Response.ResponseType\x12\x12\n\nrequest_id\x18\x02 \x01(\x05\x12\x38\n\x0bresult_code\x18\x03 \x01(\x0e\x32#.PSMoveProtocol.Response.ResultCode\x12M\n\x16result_connection_info\x18\x14 \x01(\x0b\x32-.PSMoveProtocol.Response.ResultConnectionInfo\x12`\n result_controller_stream_started\x18\x15 \x01(\x0b\x32\x36.PSMoveProtocol.Response.ResultControllerStreamStarted\x12M\n\x16result_controller_list\x18\x16 \x01(\x0b\x32-.PSMoveProtocol.Response.ResultControllerList\x12\x62\n!result_bluetooth_request_progress\x18\x17 \x01(\x0b\x32\x37.PSMoveProtocol.Response.ResultBluetoothRequestProgress\x12G\n\x13result_tracker_list\x18\x18 \x01(\x0b\x32*.PSMoveProtocol.Response.ResultTrackerList\x12O\n\x17result_tracker_settings\x18\x19 \x01(\x0b\x32..PSMoveProtocol.Response.ResultTrackerSettings\x12V\n\x1bresult_set_tracker_exposure\x18\x1a \x01(\x0b\x32\x31.PSMoveProtocol.Response.ResultSetTrackerExposure\x12N\n\x17result_set_tracker_gain\x18\x1b \x01(\x0b\x32-.PSMoveProtocol.Response.ResultSetTrackerGain\x12R\n\x19result_set_tracker_option\x18\x1c \x01(\x0b\x32/.PSMoveProtocol.Response.ResultSetTrackerOption\x12]\n\x1fresult_set_tracker_color_preset\x18\x1d \x01(\x0b\x32\x34.PSMoveProtocol.Response.ResultSetTrackerColorPreset\x12\\\n\x1eresult_tracking_space_settings\x18\x1e \x01(\x0b\x32\x34.PSMoveProtocol.Response.ResultTrackingSpaceSettings\x12?\n\x0fresult_hmd_list\x18\x1f \x01(\x0b\x32&.PSMoveProtocol.Response.ResultHMDList\x12M\n\x16result_service_version\x18 \x01(\x0b\x32-.PSMoveProtocol.Response.ResultServiceVersion\x12Y\n\x1dresult_set_tracker_frame_rate\x18! \x01(\x0b\x32\x32.PSMoveProtocol.Response.ResultSetTrackerFrameRate\x12[\n\x1eresult_set_tracker_frame_width\x18\" \x01(\x0b\x32\x33.PSMoveProtocol.Response.ResultSetTrackerFrameWidth\x12]\n\x1fresult_set_tracker_frame_height\x18# \x01(\x0b\x32\x34.PSMoveProtocol.Response.ResultSetTrackerFrameHeight\x12X\n\x1cresult_get_playspace_offsets\x18$ \x01(\x0b\x32\x32.PSMoveProtocol.Response.ResultGetPlayspaceOffsets\x1a\x31\n\x14ResultConnectionInfo\x12\x19\n\x11tcp_connection_id\x18\x01 \x01(\x05\x1a\x62\n\x1dResultControllerStreamStarted\x12\x41\n\x12initial_data_frame\x18\x01 \x01(\x0b\x32%.PSMoveProtocol.DeviceOutputDataFrame\x1a\x9b\x11\n\x14ResultControllerList\x12Q\n\x0b\x63ontrollers\x18\x01 \x03(\x0b\x32<.PSMoveProtocol.Response.ResultControllerList.ControllerInfo\x12\x13\n\x0bhost_serial\x18\x02 \x01(\t\x12\x15\n\rgamepad_count\x18\x03 \x01(\x05\x1a\x83\x10\n\x0e\x43ontrollerInfo\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x64\n\x0f\x63onnection_type\x18\x02 \x01(\x0e\x32K.PSMoveProtocol.Response.ResultControllerList.ControllerInfo.ConnectionType\x12\x37\n\x0f\x63ontroller_type\x18\x03 \x01(\x0e\x32\x1e.PSMoveProtocol.ControllerType\x12\x37\n\x0f\x63ontroller_hand\x18\x04 \x01(\x0e\x32\x1e.PSMoveProtocol.ControllerHand\x12>\n\x13tracking_color_type\x18\x05 \x01(\x0e\x32!.PSMoveProtocol.TrackingColorType\x12\x13\n\x0b\x64\x65vice_path\x18\x06 \x01(\t\x12\x15\n\rdevice_serial\x18\x07 \x01(\t\x12\x1c\n\x14\x61ssigned_host_serial\x18\x08 \x01(\t\x12 \n\x18parent_controller_serial\x18\t \x01(\t\x12\x18\n\x10\x66irmware_version\x18\n \x01(\x05\x12\x19\n\x11\x66irmware_revision\x18\x0b \x01(\x05\x12\x18\n\x10has_magnetometer\x18\x0c \x01(\x08\x12\x1a\n\x12orientation_filter\x18\r \x01(\t\x12\x17\n\x0fposition_filter\x18\x0e \x01(\t\x12\x19\n\x11gyro_gain_setting\x18\x0f \x01(\t\x12\x17\n\x0fprediction_time\x18\x10 \x01(\x02\x12\x15\n\rgamepad_index\x18\x11 \x01(\x05\x12\x17\n\x0fopticaltracking\x18\x12 \x01(\x08\x12\x18\n\x10psmove_emulation\x18\x13 \x01(\x08\x12\x31\n\x0foffset_position\x18\x14 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x12offset_orientation\x18\x15 \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12\x37\n\x18offset_world_orientation\x18\x16 \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12.\n\x0coffset_scale\x18\x17 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x1b\n\x13offset_magnetometer\x18\x18 \x01(\x02\x12\'\n\x1f\x66ilter_lowpassoptical_smoothing\x18\x19 \x01(\x02\x12&\n\x1e\x66ilter_lowpassoptical_distance\x18\x1a \x01(\x02\x12\"\n\x1a\x66ilter_enable_magnetometer\x18\x1b \x01(\x08\x12+\n#filter_use_passive_drift_correction\x18\x1c \x01(\x08\x12.\n&filter_passive_drift_correction_method\x18\x1d \x01(\x05\x12\x30\n(filter_passive_drift_correction_deadzone\x18\x1e \x01(\x02\x12\x38\n0filter_passive_drift_correction_gravity_deadzone\x18\x1f \x01(\x02\x12-\n%filter_passive_drift_correction_delay\x18 \x01(\x02\x12*\n\"filter_opticaltarget_controller_id\x18! \x01(\x05\x12 \n\x18\x66ilter_use_stabilization\x18\" \x01(\x08\x12&\n\x1e\x66ilter_stabilization_min_scale\x18# \x01(\x02\x12\x1b\n\x13\x61ng_prediction_time\x18$ \x01(\x02\x12\x1c\n\x14\x66ilter_madgwick_beta\x18% \x01(\x02\x12%\n\x1d\x66ilter_madgwick_stabilization\x18& \x01(\x08\x12.\n&filter_madgwick_stabilization_min_beta\x18\' \x01(\x02\x12\x36\n.filter_madgwick_stabilization_smoothing_factor\x18( \x01(\x02\x12(\n filter_velocity_smoothing_factor\x18) \x01(\x02\x12\'\n\x1f\x66ilter_angular_smoothing_factor\x18* \x01(\x02\x12)\n!filter_velocity_prediction_cutoff\x18+ \x01(\x02\x12(\n filter_angular_prediction_cutoff\x18, \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_error\x18- \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_noise\x18. \x01(\x02\x12-\n%filter_position_kalman_disable_cutoff\x18/ \x01(\x08\x12%\n\x1d\x66ilter_madgwick_smart_correct\x18\x30 \x01(\x08\x12\x19\n\x11UNUSED_4567457475\x18\x31 \x01(\x08\x12,\n$filter_magnetometer_deviation_cutoff\x18\x32 \x01(\x02\"(\n\x0e\x43onnectionType\x12\x07\n\x03USB\x10\x00\x12\r\n\tBLUETOOTH\x10\x01\x1a\x65\n\x1eResultBluetoothRequestProgress\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x17\n\x0fsteps_completed\x18\x02 \x01(\x05\x12\x13\n\x0btotal_steps\x18\x03 \x01(\x05\x1a\xcd\x05\n\x11ResultTrackerList\x12H\n\x08trackers\x18\x01 \x03(\x0b\x32\x36.PSMoveProtocol.Response.ResultTrackerList.TrackerInfo\x12\x1e\n\x16global_forward_degrees\x18\x02 \x01(\x02\x1a\xcd\x04\n\x0bTrackerInfo\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x31\n\x0ctracker_type\x18\x02 \x01(\x0e\x32\x1b.PSMoveProtocol.TrackerType\x12\x35\n\x0etracker_driver\x18\x03 \x01(\x0e\x32\x1d.PSMoveProtocol.TrackerDriver\x12\x13\n\x0b\x64\x65vice_path\x18\x04 \x01(\t\x12\x1a\n\x12shared_memory_name\x18\x05 \x01(\t\x12\x34\n\x15tracker_focal_lengths\x18\x06 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x36\n\x17tracker_principal_point\x18\x07 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x38\n\x19tracker_screen_dimensions\x18\x08 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x14\n\x0ctracker_hfov\x18\t \x01(\x02\x12\x14\n\x0ctracker_vfov\x18\n \x01(\x02\x12\x15\n\rtracker_znear\x18\x0b \x01(\x02\x12\x14\n\x0ctracker_zfar\x18\x0c \x01(\x02\x12\x12\n\ntracker_k1\x18\r \x01(\x02\x12\x12\n\ntracker_k2\x18\x0e \x01(\x02\x12\x12\n\ntracker_k3\x18\x0f \x01(\x02\x12\x12\n\ntracker_p1\x18\x10 \x01(\x02\x12\x12\n\ntracker_p2\x18\x11 \x01(\x02\x12*\n\x0ctracker_pose\x18\x12 \x01(\x0b\x32\x14.PSMoveProtocol.Pose\x1a\xa9\x02\n\x15ResultTrackerSettings\x12\x10\n\x08\x65xposure\x18\x01 \x01(\x02\x12\x0c\n\x04gain\x18\x02 \x01(\x02\x12.\n\x0boption_sets\x18\x03 \x03(\x0b\x32\x19.PSMoveProtocol.OptionSet\x12:\n\rcolor_presets\x18\x04 \x03(\x0b\x32#.PSMoveProtocol.TrackingColorPreset\x12\x12\n\nframe_rate\x18\x05 \x01(\x02\x12\x13\n\x0b\x66rame_width\x18\x06 \x01(\x02\x12\x14\n\x0c\x66rame_height\x18\x07 \x01(\x02\x12\x45\n\x14projection_blacklist\x18\x08 \x01(\x0b\x32\'.PSMoveProtocol.ProjectionBlacklistList\x1a\x30\n\x18ResultSetTrackerExposure\x12\x14\n\x0cnew_exposure\x18\x01 \x01(\x02\x1a(\n\x14ResultSetTrackerGain\x12\x10\n\x08new_gain\x18\x01 \x01(\x02\x1aG\n\x16ResultSetTrackerOption\x12\x13\n\x0boption_name\x18\x01 \x01(\t\x12\x18\n\x10new_option_index\x18\x02 \x01(\x05\x1ap\n\x1bResultSetTrackerColorPreset\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12=\n\x10new_color_preset\x18\x02 \x01(\x0b\x32#.PSMoveProtocol.TrackingColorPreset\x1a=\n\x1bResultTrackingSpaceSettings\x12\x1e\n\x16global_forward_degrees\x18\x01 \x01(\x02\x1a\xd9\t\n\rResultHMDList\x12\x43\n\x0bhmd_entries\x18\x01 \x03(\x0b\x32..PSMoveProtocol.Response.ResultHMDList.HMDInfo\x1a\x82\t\n\x07HMDInfo\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12)\n\x08hmd_type\x18\x02 \x01(\x0e\x32\x17.PSMoveProtocol.HMDType\x12>\n\x13tracking_color_type\x18\x03 \x01(\x0e\x32!.PSMoveProtocol.TrackingColorType\x12\x13\n\x0b\x64\x65vice_path\x18\x04 \x01(\t\x12\x1a\n\x12orientation_filter\x18\x05 \x01(\t\x12\x17\n\x0fposition_filter\x18\x06 \x01(\t\x12\x17\n\x0fprediction_time\x18\x07 \x01(\x02\x12\x31\n\x12offset_orientation\x18\x08 \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12\x37\n\x18offset_world_orientation\x18\t \x01(\x0b\x32\x15.PSMoveProtocol.Euler\x12\x31\n\x0foffset_position\x18\n \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12.\n\x0coffset_scale\x18\x0b \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\'\n\x1f\x66ilter_lowpassoptical_smoothing\x18\x0c \x01(\x02\x12&\n\x1e\x66ilter_lowpassoptical_distance\x18\r \x01(\x02\x12\x1b\n\x13\x61ng_prediction_time\x18\x0e \x01(\x02\x12\x1c\n\x14\x66ilter_madgwick_beta\x18\x0f \x01(\x02\x12%\n\x1d\x66ilter_madgwick_stabilization\x18\x10 \x01(\x08\x12.\n&filter_madgwick_stabilization_min_beta\x18\x11 \x01(\x02\x12\x36\n.filter_madgwick_stabilization_smoothing_factor\x18\x12 \x01(\x02\x12(\n filter_velocity_smoothing_factor\x18\x13 \x01(\x02\x12\'\n\x1f\x66ilter_angular_smoothing_factor\x18\x14 \x01(\x02\x12)\n!filter_velocity_prediction_cutoff\x18\x15 \x01(\x02\x12(\n filter_angular_prediction_cutoff\x18\x16 \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_error\x18\x17 \x01(\x02\x12$\n\x1c\x66ilter_position_kalman_noise\x18\x18 \x01(\x02\x12-\n%filter_position_kalman_disable_cutoff\x18\x19 \x01(\x08\x12%\n\x1d\x66ilter_madgwick_smart_correct\x18\x1a \x01(\x08\x12\x19\n\x11UNUSED_4567457475\x18\x1b \x01(\x08\x12#\n\x1buse_custom_optical_tracking\x18\x1c \x01(\x08\x12%\n\x1doverride_custom_tracking_leds\x18\x1d \x01(\x05\x1a\'\n\x14ResultServiceVersion\x12\x0f\n\x07version\x18\x01 \x01(\t\x1a\x33\n\x19ResultSetTrackerFrameRate\x12\x16\n\x0enew_frame_rate\x18\x01 \x01(\x02\x1a\x35\n\x1aResultSetTrackerFrameWidth\x12\x17\n\x0fnew_frame_width\x18\x01 \x01(\x02\x1a\x37\n\x1bResultSetTrackerFrameHeight\x12\x18\n\x10new_frame_height\x18\x01 \x01(\x02\x1a\xa7\x01\n\x19ResultGetPlayspaceOffsets\x12!\n\x19playspace_orientation_yaw\x18\x01 \x01(\x02\x12\x34\n\x12playspace_position\x18\x02 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x0fplayspace_scale\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\"\xa0\x05\n\x0cResponseType\x12\x12\n\x0eGENERAL_RESULT\x10\x00\x12\x13\n\x0f\x43ONNECTION_INFO\x10\x01\x12\x13\n\x0f\x43ONTROLLER_LIST\x10\x02\x12\x1d\n\x19\x43ONTROLLER_STREAM_STARTED\x10\x03\x12\x1b\n\x17\x43ONTROLLER_LIST_UPDATED\x10\x04\x12\x1c\n\x18UNPAIR_REQUEST_COMPLETED\x10\x05\x12\x1a\n\x16PAIR_REQUEST_COMPLETED\x10\x06\x12\x1e\n\x1a\x42LUETOOTH_REQUEST_PROGRESS\x10\x07\x12\x10\n\x0cTRACKER_LIST\x10\x08\x12\x18\n\x14TRACKER_LIST_UPDATED\x10\t\x12\x14\n\x10TRACKER_SETTINGS\x10\n\x12\x1c\n\x18TRACKER_EXPOSURE_UPDATED\x10\x0b\x12\x18\n\x14TRACKER_GAIN_UPDATED\x10\x0c\x12\x1a\n\x16TRACKER_OPTION_UPDATED\x10\r\x12\x1a\n\x16TRACKER_PRESET_UPDATED\x10\x0e\x12\x1b\n\x17TRACKING_SPACE_SETTINGS\x10\x0f\x12\x0c\n\x08HMD_LIST\x10\x10\x12\x14\n\x10HMD_LIST_UPDATED\x10\x11\x12\x13\n\x0fSERVICE_VERSION\x10\x12\x12\x1e\n\x1aTRACKER_FRAME_RATE_UPDATED\x10\x13\x12\x1f\n\x1bTRACKER_FRAME_WIDTH_UPDATED\x10\x14\x12 \n\x1cTRACKER_FRAME_HEIGHT_UPDATED\x10\x15\x12\x19\n\x15SYSTEM_BUTTON_PRESSED\x10\x16\x12\x19\n\x15GET_PLAYSPACE_OFFSETS\x10\x17\x12\x1b\n\x17PLAYSPACE_OFFSET_UPDATE\x10\x18\"B\n\nResultCode\x12\r\n\tRESULT_OK\x10\x00\x12\x10\n\x0cRESULT_ERROR\x10\x01\x12\x13\n\x0fRESULT_CANCELED\x10\x02\"\xe3\x42\n\x15\x44\x65viceOutputDataFrame\x12M\n\x0f\x64\x65vice_category\x18\x01 \x01(\x0e\x32\x34.PSMoveProtocol.DeviceOutputDataFrame.DeviceCategory\x12Z\n\x16\x63ontroller_data_packet\x18\x02 \x01(\x0b\x32:.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket\x12T\n\x13tracker_data_packet\x18\x03 \x01(\x0b\x32\x37.PSMoveProtocol.DeviceOutputDataFrame.TrackerDataPacket\x12L\n\x0fhmd_data_packet\x18\x04 \x01(\x0b\x32\x33.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket\x1a\xaf*\n\x14\x43ontrollerDataPacket\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x37\n\x0f\x63ontroller_type\x18\x02 \x01(\x0e\x32\x1e.PSMoveProtocol.ControllerType\x12\x14\n\x0csequence_num\x18\x03 \x01(\x05\x12\x13\n\x0bIsConnected\x18\x04 \x01(\x08\x12\x1b\n\x13\x62utton_down_bitmask\x18\x05 \x01(\r\x12\\\n\x0cpsmove_state\x18\x06 \x01(\x0b\x32\x46.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSMoveState\x12\\\n\x0cpsnavi_state\x18\x07 \x01(\x0b\x32\x46.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSNaviState\x12h\n\x12psdualshock4_state\x18\x08 \x01(\x0b\x32L.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSDualShock4State\x12r\n\x17virtualcontroller_state\x18\t \x01(\x0b\x32Q.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.VirtualControllerState\x1a\x95\r\n\x0bPSMoveState\x12 \n\x18ValidHardwareCalibration\x18\x01 \x01(\x08\x12\x19\n\x11IsTrackingEnabled\x18\x02 \x01(\x08\x12\x1b\n\x13IsCurrentlyTracking\x18\x03 \x01(\x08\x12\x1a\n\x12IsOrientationValid\x18\x04 \x01(\x08\x12\x17\n\x0fIsPositionValid\x18\x05 \x01(\x08\x12-\n\x0bposition_cm\x18\x06 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x30\n\x0borientation\x18\x07 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x12\x15\n\rtrigger_value\x18\x08 \x01(\x05\x12m\n\x0fraw_sensor_data\x18\t \x01(\x0b\x32T.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSMoveState.RawSensorData\x12{\n\x16\x63\x61librated_sensor_data\x18\n \x01(\x0b\x32[.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSMoveState.CalibratedSensorData\x12o\n\x10raw_tracker_data\x18\x0b \x01(\x0b\x32U.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSMoveState.RawTrackerData\x12h\n\x0cphysics_data\x18\x0c \x01(\x0b\x32R.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSMoveState.PhysicsData\x12\x15\n\rbattery_value\x18\r \x01(\x05\x12\x1b\n\x13tracking_color_type\x18\x0e \x01(\x05\x1a\xa0\x01\n\rRawSensorData\x12/\n\x0cmagnetometer\x18\x01 \x01(\x0b\x32\x19.PSMoveProtocol.IntVector\x12\x30\n\raccelerometer\x18\x02 \x01(\x0b\x32\x19.PSMoveProtocol.IntVector\x12,\n\tgyroscope\x18\x03 \x01(\x0b\x32\x19.PSMoveProtocol.IntVector\x1a\xad\x01\n\x14\x43\x61libratedSensorData\x12\x31\n\x0cmagnetometer\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x32\n\raccelerometer\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12.\n\tgyroscope\x18\x03 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x1a\x96\x02\n\x0eRawTrackerData\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12.\n\x0fscreen_location\x18\x02 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x36\n\x14relative_position_cm\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x10projected_sphere\x18\x04 \x01(\x0b\x32\x17.PSMoveProtocol.Ellipse\x12\x36\n\x14multicam_position_cm\x18\x05 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x1d\n\x15valid_tracker_bitmask\x18\x06 \x01(\r\x1a\x97\x02\n\x0bPhysicsData\x12\x38\n\x13velocity_cm_per_sec\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12@\n\x1b\x61\x63\x63\x65leration_cm_per_sec_sqr\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x41\n\x1c\x61ngular_velocity_rad_per_sec\x18\x03 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12I\n$angular_acceleration_rad_per_sec_sqr\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x1aN\n\x0bPSNaviState\x12\x15\n\rtrigger_value\x18\x01 \x01(\x05\x12\x13\n\x0bstick_xaxis\x18\x02 \x01(\x05\x12\x13\n\x0bstick_yaxis\x18\x03 \x01(\x05\x1a\xee\x0e\n\x11PSDualShock4State\x12 \n\x18ValidHardwareCalibration\x18\x01 \x01(\x08\x12\x19\n\x11IsTrackingEnabled\x18\x02 \x01(\x08\x12\x1b\n\x13IsCurrentlyTracking\x18\x03 \x01(\x08\x12\x1a\n\x12IsOrientationValid\x18\x04 \x01(\x08\x12\x17\n\x0fIsPositionValid\x18\x05 \x01(\x08\x12-\n\x0bposition_cm\x18\x06 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x30\n\x0borientation\x18\x07 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x12\x19\n\x11left_thumbstick_x\x18\x08 \x01(\x02\x12\x19\n\x11left_thumbstick_y\x18\t \x01(\x02\x12\x1a\n\x12right_thumbstick_x\x18\n \x01(\x02\x12\x1a\n\x12right_thumbstick_y\x18\x0b \x01(\x02\x12\x1a\n\x12left_trigger_value\x18\x0c \x01(\x02\x12\x1b\n\x13right_trigger_value\x18\r \x01(\x02\x12s\n\x0fraw_sensor_data\x18\x0e \x01(\x0b\x32Z.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSDualShock4State.RawSensorData\x12\x81\x01\n\x16\x63\x61librated_sensor_data\x18\x0f \x01(\x0b\x32\x61.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSDualShock4State.CalibratedSensorData\x12u\n\x10raw_tracker_data\x18\x10 \x01(\x0b\x32[.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSDualShock4State.RawTrackerData\x12n\n\x0cphysics_data\x18\x11 \x01(\x0b\x32X.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.PSDualShock4State.PhysicsData\x12\x1b\n\x13tracking_color_type\x18\x12 \x01(\x05\x1ao\n\rRawSensorData\x12\x30\n\raccelerometer\x18\x01 \x01(\x0b\x32\x19.PSMoveProtocol.IntVector\x12,\n\tgyroscope\x18\x02 \x01(\x0b\x32\x19.PSMoveProtocol.IntVector\x1az\n\x14\x43\x61libratedSensorData\x12\x32\n\raccelerometer\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12.\n\tgyroscope\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x1a\xbd\x03\n\x0eRawTrackerData\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12.\n\x0fscreen_location\x18\x02 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x36\n\x14relative_position_cm\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x39\n\x14relative_orientation\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x12\x31\n\x10projected_sphere\x18\x05 \x01(\x0b\x32\x17.PSMoveProtocol.Ellipse\x12/\n\x0eprojected_blob\x18\x06 \x01(\x0b\x32\x17.PSMoveProtocol.Polygon\x12\x36\n\x14multicam_position_cm\x18\x07 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x39\n\x14multicam_orientation\x18\x08 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x12\x1d\n\x15valid_tracker_bitmask\x18\t \x01(\r\x1a\x97\x02\n\x0bPhysicsData\x12\x38\n\x13velocity_cm_per_sec\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12@\n\x1b\x61\x63\x63\x65leration_cm_per_sec_sqr\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x41\n\x1c\x61ngular_velocity_rad_per_sec\x18\x03 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12I\n$angular_acceleration_rad_per_sec_sqr\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x1a\x98\x07\n\x16VirtualControllerState\x12\x19\n\x11IsTrackingEnabled\x18\x01 \x01(\x08\x12\x1b\n\x13IsCurrentlyTracking\x18\x02 \x01(\x08\x12\x17\n\x0fIsPositionValid\x18\x03 \x01(\x08\x12-\n\x0bposition_cm\x18\x04 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x10\n\x08vendorID\x18\x05 \x01(\x05\x12\x11\n\tproductID\x18\x06 \x01(\x05\x12\x12\n\nnumButtons\x18\x07 \x01(\x05\x12\x12\n\naxisStates\x18\x08 \x03(\x05\x12z\n\x10raw_tracker_data\x18\t \x01(\x0b\x32`.PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.VirtualControllerState.RawTrackerData\x12s\n\x0cphysics_data\x18\n \x01(\x0b\x32].PSMoveProtocol.DeviceOutputDataFrame.ControllerDataPacket.VirtualControllerState.PhysicsData\x12\x1b\n\x13tracking_color_type\x18\x0b \x01(\x05\x1a\x96\x02\n\x0eRawTrackerData\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12.\n\x0fscreen_location\x18\x02 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x36\n\x14relative_position_cm\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x10projected_sphere\x18\x04 \x01(\x0b\x32\x17.PSMoveProtocol.Ellipse\x12\x36\n\x14multicam_position_cm\x18\x05 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x1d\n\x15valid_tracker_bitmask\x18\x06 \x01(\r\x1a\x89\x01\n\x0bPhysicsData\x12\x38\n\x13velocity_cm_per_sec\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12@\n\x1b\x61\x63\x63\x65leration_cm_per_sec_sqr\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\"\xf0\x01\n\nButtonType\x12\x0c\n\x08TRIANGLE\x10\x00\x12\n\n\x06\x43IRCLE\x10\x01\x12\t\n\x05\x43ROSS\x10\x02\x12\n\n\x06SQUARE\x10\x03\x12\n\n\x06SELECT\x10\x04\x12\t\n\x05START\x10\x05\x12\x06\n\x02PS\x10\x06\x12\x08\n\x04MOVE\x10\x07\x12\x0b\n\x07TRIGGER\x10\x08\x12\x06\n\x02UP\x10\t\x12\x08\n\x04\x44OWN\x10\n\x12\x08\n\x04LEFT\x10\x0b\x12\t\n\x05RIGHT\x10\x0c\x12\x06\n\x02L1\x10\r\x12\x06\n\x02L2\x10\x0e\x12\x06\n\x02L3\x10\x0f\x12\x06\n\x02R1\x10\x10\x12\x06\n\x02R2\x10\x11\x12\x06\n\x02R3\x10\x12\x12\t\n\x05SHARE\x10\x13\x12\x0b\n\x07OPTIONS\x10\x14\x12\x0c\n\x08TRACKPAD\x10\x15\x1a\xcc\x01\n\x11TrackerDataPacket\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12\x31\n\x0ctracker_type\x18\x02 \x01(\x0e\x32\x1b.PSMoveProtocol.TrackerType\x12\x14\n\x0csequence_num\x18\x03 \x01(\x05\x12\x13\n\x0bIsConnected\x18\x04 \x01(\x08\x12\x18\n\x10tracker_exposure\x18\x05 \x01(\x05\x12\x14\n\x0ctracker_gain\x18\x06 \x01(\x05\x12\x15\n\rtracker_width\x18\x07 \x01(\x05\x1a\xc1\x13\n\rHMDDataPacket\x12\x0e\n\x06hmd_id\x18\x01 \x01(\x05\x12)\n\x08hmd_type\x18\x02 \x01(\x0e\x32\x17.PSMoveProtocol.HMDType\x12\x14\n\x0csequence_num\x18\x03 \x01(\x05\x12\x13\n\x0bIsConnected\x18\x04 \x01(\x08\x12Y\n\x0emorpheus_state\x18\x05 \x01(\x0b\x32\x41.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.MorpheusState\x12^\n\x11virtual_hmd_state\x18\x06 \x01(\x0b\x32\x43.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.VirtualHMDState\x1a\xb8\x0b\n\rMorpheusState\x12\x19\n\x11IsTrackingEnabled\x18\x01 \x01(\x08\x12\x1b\n\x13IsCurrentlyTracking\x18\x02 \x01(\x08\x12\x1a\n\x12IsOrientationValid\x18\x03 \x01(\x08\x12\x17\n\x0fIsPositionValid\x18\x04 \x01(\x08\x12-\n\x0bposition_cm\x18\x05 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x30\n\x0borientation\x18\x06 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x12h\n\x0fraw_sensor_data\x18\x07 \x01(\x0b\x32O.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.MorpheusState.RawSensorData\x12v\n\x16\x63\x61librated_sensor_data\x18\x08 \x01(\x0b\x32V.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.MorpheusState.CalibratedSensorData\x12j\n\x10raw_tracker_data\x18\t \x01(\x0b\x32P.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.MorpheusState.RawTrackerData\x12\x63\n\x0cphysics_data\x18\n \x01(\x0b\x32M.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.MorpheusState.PhysicsData\x1ao\n\rRawSensorData\x12\x30\n\raccelerometer\x18\x01 \x01(\x0b\x32\x19.PSMoveProtocol.IntVector\x12,\n\tgyroscope\x18\x02 \x01(\x0b\x32\x19.PSMoveProtocol.IntVector\x1az\n\x14\x43\x61libratedSensorData\x12\x32\n\raccelerometer\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12.\n\tgyroscope\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x1a\x9e\x02\n\x0eRawTrackerData\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12.\n\x0fscreen_location\x18\x02 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x36\n\x14relative_position_cm\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x39\n\x14relative_orientation\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.Orientation\x12\x36\n\x15projected_point_cloud\x18\x05 \x01(\x0b\x32\x17.PSMoveProtocol.Polygon\x12\x1d\n\x15valid_tracker_bitmask\x18\x06 \x01(\r\x1a\x97\x02\n\x0bPhysicsData\x12\x38\n\x13velocity_cm_per_sec\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12@\n\x1b\x61\x63\x63\x65leration_cm_per_sec_sqr\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12\x41\n\x1c\x61ngular_velocity_rad_per_sec\x18\x03 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12I\n$angular_acceleration_rad_per_sec_sqr\x18\x04 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x1a\xd3\x05\n\x0fVirtualHMDState\x12\x19\n\x11IsTrackingEnabled\x18\x01 \x01(\x08\x12\x1b\n\x13IsCurrentlyTracking\x18\x02 \x01(\x08\x12\x17\n\x0fIsPositionValid\x18\x03 \x01(\x08\x12-\n\x0bposition_cm\x18\x04 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12l\n\x10raw_tracker_data\x18\x05 \x01(\x0b\x32R.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.VirtualHMDState.RawTrackerData\x12\x65\n\x0cphysics_data\x18\x06 \x01(\x0b\x32O.PSMoveProtocol.DeviceOutputDataFrame.HMDDataPacket.VirtualHMDState.PhysicsData\x1a\xde\x01\n\x0eRawTrackerData\x12\x12\n\ntracker_id\x18\x01 \x01(\x05\x12.\n\x0fscreen_location\x18\x02 \x01(\x0b\x32\x15.PSMoveProtocol.Pixel\x12\x36\n\x14relative_position_cm\x18\x03 \x01(\x0b\x32\x18.PSMoveProtocol.Position\x12\x31\n\x10projected_sphere\x18\x04 \x01(\x0b\x32\x17.PSMoveProtocol.Ellipse\x12\x1d\n\x15valid_tracker_bitmask\x18\x05 \x01(\r\x1a\x89\x01\n\x0bPhysicsData\x12\x38\n\x13velocity_cm_per_sec\x18\x01 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\x12@\n\x1b\x61\x63\x63\x65leration_cm_per_sec_sqr\x18\x02 \x01(\x0b\x32\x1b.PSMoveProtocol.FloatVector\"6\n\x0e\x44\x65viceCategory\x12\x0e\n\nCONTROLLER\x10\x00\x12\x0b\n\x07TRACKER\x10\x01\x12\x07\n\x03HMD\x10\x02\"\x94\x06\n\x14\x44\x65viceInputDataFrame\x12\x15\n\rconnection_id\x18\x01 \x01(\x05\x12L\n\x0f\x64\x65vice_category\x18\x02 \x01(\x0e\x32\x33.PSMoveProtocol.DeviceInputDataFrame.DeviceCategory\x12Y\n\x16\x63ontroller_data_packet\x18\x03 \x01(\x0b\x32\x39.PSMoveProtocol.DeviceInputDataFrame.ControllerDataPacket\x1a\x8c\x04\n\x14\x43ontrollerDataPacket\x12\x15\n\rcontroller_id\x18\x01 \x01(\x05\x12\x37\n\x0f\x63ontroller_type\x18\x02 \x01(\x0e\x32\x1e.PSMoveProtocol.ControllerType\x12\x14\n\x0csequence_num\x18\x03 \x01(\x05\x12[\n\x0cpsmove_state\x18\x04 \x01(\x0b\x32\x45.PSMoveProtocol.DeviceInputDataFrame.ControllerDataPacket.PSMoveState\x12g\n\x12psdualshock4_state\x18\x05 \x01(\x0b\x32K.PSMoveProtocol.DeviceInputDataFrame.ControllerDataPacket.PSDualShock4State\x1aP\n\x0bPSMoveState\x12\x14\n\x0crumble_value\x18\x01 \x01(\x05\x12\r\n\x05led_r\x18\x02 \x01(\x05\x12\r\n\x05led_g\x18\x03 \x01(\x05\x12\r\n\x05led_b\x18\x04 \x01(\x05\x1av\n\x11PSDualShock4State\x12\x18\n\x10\x62ig_rumble_value\x18\x01 \x01(\x05\x12\x1a\n\x12small_rumble_value\x18\x02 \x01(\x05\x12\r\n\x05led_r\x18\x03 \x01(\x05\x12\r\n\x05led_g\x18\x04 \x01(\x05\x12\r\n\x05led_b\x18\x05 \x01(\x05\"-\n\x0e\x44\x65viceCategory\x12\x0b\n\x07INVALID\x10\x00\x12\x0e\n\nCONTROLLER\x10\x01*Q\n\x0e\x43ontrollerType\x12\n\n\x06PSMOVE\x10\x00\x12\n\n\x06PSNAVI\x10\x01\x12\x10\n\x0cPSDUALSHOCK4\x10\x02\x12\x15\n\x11VIRTUALCONTROLLER\x10\x03*=\n\x0e\x43ontrollerHand\x12\x0c\n\x08HAND_ANY\x10\x00\x12\r\n\tHAND_LEFT\x10\x01\x12\x0e\n\nHAND_RIGHT\x10\x02*\x19\n\x0bTrackerType\x12\n\n\x06PS3EYE\x10\x00*P\n\rTrackerDriver\x12\n\n\x06LIBUSB\x10\x00\x12\n\n\x06\x43L_EYE\x10\x01\x12\x13\n\x0f\x43L_EYE_MULTICAM\x10\x02\x12\x12\n\x0eGENERIC_WEBCAM\x10\x03*\xf4\x01\n\x11TrackingColorType\x12\x0b\n\x07Magenta\x10\x00\x12\x08\n\x04\x43yan\x10\x01\x12\n\n\x06Yellow\x10\x02\x12\x07\n\x03Red\x10\x03\x12\t\n\x05Green\x10\x04\x12\x08\n\x04\x42lue\x10\x05\x12\x0b\n\x07\x43ustom0\x10\x06\x12\x0b\n\x07\x43ustom1\x10\x07\x12\x0b\n\x07\x43ustom2\x10\x08\x12\x0b\n\x07\x43ustom3\x10\t\x12\x0b\n\x07\x43ustom4\x10\n\x12\x0b\n\x07\x43ustom5\x10\x0b\x12\x0b\n\x07\x43ustom6\x10\x0c\x12\x0b\n\x07\x43ustom7\x10\r\x12\x0b\n\x07\x43ustom8\x10\x0e\x12\x0b\n\x07\x43ustom9\x10\x0f\x12\x1c\n\x18MAX_PSMOVE_COLOR_PRESETS\x10\x10*\'\n\x07HMDType\x12\x0c\n\x08Morpheus\x10\x00\x12\x0e\n\nVirtualHMD\x10\x01\x62\x06proto3')
28
+
29
+ _globals = globals()
30
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
31
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'PSMoveProtocol_pb2', _globals)
32
+ if not _descriptor._USE_C_DESCRIPTORS:
33
+ DESCRIPTOR._loaded_options = None
34
+ _globals['_CONTROLLERTYPE']._serialized_start=35019
35
+ _globals['_CONTROLLERTYPE']._serialized_end=35100
36
+ _globals['_CONTROLLERHAND']._serialized_start=35102
37
+ _globals['_CONTROLLERHAND']._serialized_end=35163
38
+ _globals['_TRACKERTYPE']._serialized_start=35165
39
+ _globals['_TRACKERTYPE']._serialized_end=35190
40
+ _globals['_TRACKERDRIVER']._serialized_start=35192
41
+ _globals['_TRACKERDRIVER']._serialized_end=35272
42
+ _globals['_TRACKINGCOLORTYPE']._serialized_start=35275
43
+ _globals['_TRACKINGCOLORTYPE']._serialized_end=35519
44
+ _globals['_HMDTYPE']._serialized_start=35521
45
+ _globals['_HMDTYPE']._serialized_end=35560
46
+ _globals['_PIXEL']._serialized_start=40
47
+ _globals['_PIXEL']._serialized_end=69
48
+ _globals['_FLOATVECTOR']._serialized_start=71
49
+ _globals['_FLOATVECTOR']._serialized_end=117
50
+ _globals['_INTVECTOR']._serialized_start=119
51
+ _globals['_INTVECTOR']._serialized_end=163
52
+ _globals['_POSITION']._serialized_start=165
53
+ _globals['_POSITION']._serialized_end=208
54
+ _globals['_EULER']._serialized_start=210
55
+ _globals['_EULER']._serialized_end=250
56
+ _globals['_ORIENTATION']._serialized_start=252
57
+ _globals['_ORIENTATION']._serialized_end=309
58
+ _globals['_ELLIPSE']._serialized_start=311
59
+ _globals['_ELLIPSE']._serialized_end=420
60
+ _globals['_POLYGON']._serialized_start=422
61
+ _globals['_POLYGON']._serialized_end=472
62
+ _globals['_OPTIONSET']._serialized_start=474
63
+ _globals['_OPTIONSET']._serialized_end=552
64
+ _globals['_POSE']._serialized_start=554
65
+ _globals['_POSE']._serialized_end=654
66
+ _globals['_PROJECTIONBLACKLISTLIST']._serialized_start=657
67
+ _globals['_PROJECTIONBLACKLISTLIST']._serialized_end=927
68
+ _globals['_PROJECTIONBLACKLIST']._serialized_start=929
69
+ _globals['_PROJECTIONBLACKLIST']._serialized_end=994
70
+ _globals['_TRACKINGCOLORPRESET']._serialized_start=997
71
+ _globals['_TRACKINGCOLORPRESET']._serialized_end=1208
72
+ _globals['_REQUEST']._serialized_start=1212
73
+ _globals['_REQUEST']._serialized_end=17883
74
+ _globals['_REQUEST_REQUESTGETCONTROLLERLIST']._serialized_start=7042
75
+ _globals['_REQUEST_REQUESTGETCONTROLLERLIST']._serialized_end=7101
76
+ _globals['_REQUEST_REQUESTSTARTPSMOVEDATASTREAM']._serialized_start=7104
77
+ _globals['_REQUEST_REQUESTSTARTPSMOVEDATASTREAM']._serialized_end=7346
78
+ _globals['_REQUEST_REQUESTSTOPPSMOVEDATASTREAM']._serialized_start=7348
79
+ _globals['_REQUEST_REQUESTSTOPPSMOVEDATASTREAM']._serialized_end=7400
80
+ _globals['_REQUEST_REQUESTRESETPOSE']._serialized_start=7402
81
+ _globals['_REQUEST_REQUESTRESETPOSE']._serialized_end=7493
82
+ _globals['_REQUEST_REQUESTUNPAIRCONTROLLER']._serialized_start=7495
83
+ _globals['_REQUEST_REQUESTUNPAIRCONTROLLER']._serialized_end=7543
84
+ _globals['_REQUEST_REQUESTPAIRCONTROLLER']._serialized_start=7545
85
+ _globals['_REQUEST_REQUESTPAIRCONTROLLER']._serialized_end=7591
86
+ _globals['_REQUEST_REQUESTCANCELBLUETOOTHREQUEST']._serialized_start=7593
87
+ _globals['_REQUEST_REQUESTCANCELBLUETOOTHREQUEST']._serialized_end=7647
88
+ _globals['_REQUEST_REQUESTSETLEDTRACKINGCOLOR']._serialized_start=7649
89
+ _globals['_REQUEST_REQUESTSETLEDTRACKINGCOLOR']._serialized_end=7755
90
+ _globals['_REQUEST_REQUESTSETCONTROLLERMAGNETOMETERCALIBRATION']._serialized_start=7758
91
+ _globals['_REQUEST_REQUESTSETCONTROLLERMAGNETOMETERCALIBRATION']._serialized_end=8213
92
+ _globals['_REQUEST_REQUESTSETCONTROLLERACCELEROMETERCALIBRATION']._serialized_start=8215
93
+ _globals['_REQUEST_REQUESTSETCONTROLLERACCELEROMETERCALIBRATION']._serialized_end=8324
94
+ _globals['_REQUEST_REQUESTSETCONTROLLERGYROSCOPECALIBRATION']._serialized_start=8327
95
+ _globals['_REQUEST_REQUESTSETCONTROLLERGYROSCOPECALIBRATION']._serialized_end=8499
96
+ _globals['_REQUEST_REQUESTSETOPTICALNOISECALIBRATION']._serialized_start=8502
97
+ _globals['_REQUEST_REQUESTSETOPTICALNOISECALIBRATION']._serialized_end=8714
98
+ _globals['_REQUEST_REQUESTSETORIENTATIONFILTER']._serialized_start=8716
99
+ _globals['_REQUEST_REQUESTSETORIENTATIONFILTER']._serialized_end=8796
100
+ _globals['_REQUEST_REQUESTSETPOSITIONFILTER']._serialized_start=8798
101
+ _globals['_REQUEST_REQUESTSETPOSITIONFILTER']._serialized_end=8872
102
+ _globals['_REQUEST_REQUESTSETCONTROLLERPREDICTIONTIME']._serialized_start=8874
103
+ _globals['_REQUEST_REQUESTSETCONTROLLERPREDICTIONTIME']._serialized_end=8958
104
+ _globals['_REQUEST_REQUESTSETATTACHEDCONTROLLER']._serialized_start=8960
105
+ _globals['_REQUEST_REQUESTSETATTACHEDCONTROLLER']._serialized_end=9049
106
+ _globals['_REQUEST_REQUESTSETGAMEPADINDEX']._serialized_start=9051
107
+ _globals['_REQUEST_REQUESTSETGAMEPADINDEX']._serialized_end=9121
108
+ _globals['_REQUEST_REQUESTSETCONTROLLERDATASTREAMTRACKERINDEX']._serialized_start=9123
109
+ _globals['_REQUEST_REQUESTSETCONTROLLERDATASTREAMTRACKERINDEX']._serialized_end=9210
110
+ _globals['_REQUEST_REQUESTSETCONTROLLERHAND']._serialized_start=9212
111
+ _globals['_REQUEST_REQUESTSETCONTROLLERHAND']._serialized_end=9318
112
+ _globals['_REQUEST_REQUESTSTARTTRACKERDATASTREAM']._serialized_start=9320
113
+ _globals['_REQUEST_REQUESTSTARTTRACKERDATASTREAM']._serialized_end=9371
114
+ _globals['_REQUEST_REQUESTSTOPTRACKERDATASTREAM']._serialized_start=9373
115
+ _globals['_REQUEST_REQUESTSTOPTRACKERDATASTREAM']._serialized_end=9423
116
+ _globals['_REQUEST_REQUESTGETTRACKERSETTINGS']._serialized_start=9426
117
+ _globals['_REQUEST_REQUESTGETTRACKERSETTINGS']._serialized_end=9626
118
+ _globals['_REQUEST_REQUESTGETTRACKERSETTINGS_DEVICECATEGORY']._serialized_start=9585
119
+ _globals['_REQUEST_REQUESTGETTRACKERSETTINGS_DEVICECATEGORY']._serialized_end=9626
120
+ _globals['_REQUEST_REQUESTSETTRACKEREXPOSURE']._serialized_start=9628
121
+ _globals['_REQUEST_REQUESTSETTRACKEREXPOSURE']._serialized_end=9712
122
+ _globals['_REQUEST_REQUESTSETTRACKERGAIN']._serialized_start=9714
123
+ _globals['_REQUEST_REQUESTSETTRACKERGAIN']._serialized_end=9794
124
+ _globals['_REQUEST_REQUESTSETTRACKEROPTION']._serialized_start=9796
125
+ _globals['_REQUEST_REQUESTSETTRACKEROPTION']._serialized_end=9884
126
+ _globals['_REQUEST_REQUESTSETTRACKERCOLORPRESET']._serialized_start=9887
127
+ _globals['_REQUEST_REQUESTSETTRACKERCOLORPRESET']._serialized_end=10152
128
+ _globals['_REQUEST_REQUESTSETTRACKERCOLORPRESET_DEVICECATEGORY']._serialized_start=9585
129
+ _globals['_REQUEST_REQUESTSETTRACKERCOLORPRESET_DEVICECATEGORY']._serialized_end=9626
130
+ _globals['_REQUEST_REQUESTSETTRACKERINTRINSICS']._serialized_start=10155
131
+ _globals['_REQUEST_REQUESTSETTRACKERINTRINSICS']._serialized_end=10414
132
+ _globals['_REQUEST_REQUESTSETTRACKERPOSE']._serialized_start=10416
133
+ _globals['_REQUEST_REQUESTSETTRACKERPOSE']._serialized_end=10495
134
+ _globals['_REQUEST_REQUESTRELOADTRACKERSETTINGS']._serialized_start=10497
135
+ _globals['_REQUEST_REQUESTRELOADTRACKERSETTINGS']._serialized_end=10547
136
+ _globals['_REQUEST_REQUESTSAVETRACKERPROFILE']._serialized_start=10549
137
+ _globals['_REQUEST_REQUESTSAVETRACKERPROFILE']._serialized_end=10619
138
+ _globals['_REQUEST_REQUESTAPPLYTRACKERPROFILE']._serialized_start=10621
139
+ _globals['_REQUEST_REQUESTAPPLYTRACKERPROFILE']._serialized_end=10692
140
+ _globals['_REQUEST_REQUESTSTARTHMDDATASTREAM']._serialized_start=10695
141
+ _globals['_REQUEST_REQUESTSTARTHMDDATASTREAM']._serialized_end=10927
142
+ _globals['_REQUEST_REQUESTSTOPHMDDATASTREAM']._serialized_start=10929
143
+ _globals['_REQUEST_REQUESTSTOPHMDDATASTREAM']._serialized_end=10971
144
+ _globals['_REQUEST_REQUESTSETHMDLEDTRACKINGCOLOR']._serialized_start=10973
145
+ _globals['_REQUEST_REQUESTSETHMDLEDTRACKINGCOLOR']._serialized_end=11075
146
+ _globals['_REQUEST_REQUESTSETHMDACCELEROMETERCALIBRATION']._serialized_start=11078
147
+ _globals['_REQUEST_REQUESTSETHMDACCELEROMETERCALIBRATION']._serialized_end=11213
148
+ _globals['_REQUEST_REQUESTSETHMDGYROSCOPECALIBRATION']._serialized_start=11216
149
+ _globals['_REQUEST_REQUESTSETHMDGYROSCOPECALIBRATION']._serialized_end=11355
150
+ _globals['_REQUEST_REQUESTSETHMDORIENTATIONFILTER']._serialized_start=11357
151
+ _globals['_REQUEST_REQUESTSETHMDORIENTATIONFILTER']._serialized_end=11433
152
+ _globals['_REQUEST_REQUESTSETHMDPOSITIONFILTER']._serialized_start=11435
153
+ _globals['_REQUEST_REQUESTSETHMDPOSITIONFILTER']._serialized_end=11505
154
+ _globals['_REQUEST_REQUESTSETHMDPREDICTIONTIME']._serialized_start=11507
155
+ _globals['_REQUEST_REQUESTSETHMDPREDICTIONTIME']._serialized_end=11577
156
+ _globals['_REQUEST_REQUESTSETHMDDATASTREAMTRACKERINDEX']._serialized_start=11579
157
+ _globals['_REQUEST_REQUESTSETHMDDATASTREAMTRACKERINDEX']._serialized_end=11652
158
+ _globals['_REQUEST_REQUESTSETTRACKERFRAMERATE']._serialized_start=11654
159
+ _globals['_REQUEST_REQUESTSETTRACKERFRAMERATE']._serialized_end=11739
160
+ _globals['_REQUEST_REQUESTSETTRACKERFRAMEWIDTH']._serialized_start=11741
161
+ _globals['_REQUEST_REQUESTSETTRACKERFRAMEWIDTH']._serialized_end=11827
162
+ _globals['_REQUEST_REQUESTSETTRACKERFRAMEHEIGHT']._serialized_start=11829
163
+ _globals['_REQUEST_REQUESTSETTRACKERFRAMEHEIGHT']._serialized_end=11916
164
+ _globals['_REQUEST_REQUESTSETCONTROLLEROPTICALTRACKING']._serialized_start=11918
165
+ _globals['_REQUEST_REQUESTSETCONTROLLEROPTICALTRACKING']._serialized_end=11995
166
+ _globals['_REQUEST_REQUESTSETCONTROLLERPSMOVEEMULATION']._serialized_start=11997
167
+ _globals['_REQUEST_REQUESTSETCONTROLLERPSMOVEEMULATION']._serialized_end=12074
168
+ _globals['_REQUEST_REQUESTSETTRACKERPROJECTIONBLACKLIST']._serialized_start=12077
169
+ _globals['_REQUEST_REQUESTSETTRACKERPROJECTIONBLACKLIST']._serialized_end=12206
170
+ _globals['_REQUEST_REQUESTSETCONTROLLEROFFSETS']._serialized_start=12209
171
+ _globals['_REQUEST_REQUESTSETCONTROLLEROFFSETS']._serialized_end=12497
172
+ _globals['_REQUEST_REQUESTSETHMDOFFSETS']._serialized_start=12500
173
+ _globals['_REQUEST_REQUESTSETHMDOFFSETS']._serialized_end=12745
174
+ _globals['_REQUEST_REQUESTGETPLAYSPACEOFFSETS']._serialized_start=12748
175
+ _globals['_REQUEST_REQUESTGETPLAYSPACEOFFSETS']._serialized_end=12916
176
+ _globals['_REQUEST_REQUESTSETPLAYSPACEOFFSETS']._serialized_start=12919
177
+ _globals['_REQUEST_REQUESTSETPLAYSPACEOFFSETS']._serialized_end=13087
178
+ _globals['_REQUEST_REQUESTSETCONTROLLERFILTERSETTINGS']._serialized_start=13090
179
+ _globals['_REQUEST_REQUESTSETCONTROLLERFILTERSETTINGS']._serialized_end=14208
180
+ _globals['_REQUEST_REQUESTSETHMDFILTERSETTINGS']._serialized_start=14211
181
+ _globals['_REQUEST_REQUESTSETHMDFILTERSETTINGS']._serialized_end=14867
182
+ _globals['_REQUEST_REQUESTSETCONTROLLERMAGNETOMETERCALIBRATIONBASIC']._serialized_start=14870
183
+ _globals['_REQUEST_REQUESTSETCONTROLLERMAGNETOMETERCALIBRATIONBASIC']._serialized_end=15239
184
+ _globals['_REQUEST_REQUESTSETCONTROLLERORIENTATIONPREDICTIONTIME']._serialized_start=15241
185
+ _globals['_REQUEST_REQUESTSETCONTROLLERORIENTATIONPREDICTIONTIME']._serialized_end=15340
186
+ _globals['_REQUEST_REQUESTSETHMDORIENTATIONPREDICTIONTIME']._serialized_start=15342
187
+ _globals['_REQUEST_REQUESTSETHMDORIENTATIONPREDICTIONTIME']._serialized_end=15427
188
+ _globals['_REQUEST_REQUESTSETCONTROLLERACCELEROMETERCALIBRATIONAVG']._serialized_start=15430
189
+ _globals['_REQUEST_REQUESTSETCONTROLLERACCELEROMETERCALIBRATIONAVG']._serialized_end=15582
190
+ _globals['_REQUEST_REQUESTSETCONTROLLERACCELEROMETERCALIBRATIONEX']._serialized_start=15585
191
+ _globals['_REQUEST_REQUESTSETCONTROLLERACCELEROMETERCALIBRATIONEX']._serialized_end=15813
192
+ _globals['_REQUEST_REQUESTSETHMDTRACKINGLEDOVERRIDES']._serialized_start=15815
193
+ _globals['_REQUEST_REQUESTSETHMDTRACKINGLEDOVERRIDES']._serialized_end=15909
194
+ _globals['_REQUEST_REQUESTTYPE']._serialized_start=15912
195
+ _globals['_REQUEST_REQUESTTYPE']._serialized_end=17883
196
+ _globals['_RESPONSE']._serialized_start=17886
197
+ _globals['_RESPONSE']._serialized_end=25676
198
+ _globals['_RESPONSE_RESULTCONNECTIONINFO']._serialized_start=19493
199
+ _globals['_RESPONSE_RESULTCONNECTIONINFO']._serialized_end=19542
200
+ _globals['_RESPONSE_RESULTCONTROLLERSTREAMSTARTED']._serialized_start=19544
201
+ _globals['_RESPONSE_RESULTCONTROLLERSTREAMSTARTED']._serialized_end=19642
202
+ _globals['_RESPONSE_RESULTCONTROLLERLIST']._serialized_start=19645
203
+ _globals['_RESPONSE_RESULTCONTROLLERLIST']._serialized_end=21848
204
+ _globals['_RESPONSE_RESULTCONTROLLERLIST_CONTROLLERINFO']._serialized_start=19797
205
+ _globals['_RESPONSE_RESULTCONTROLLERLIST_CONTROLLERINFO']._serialized_end=21848
206
+ _globals['_RESPONSE_RESULTCONTROLLERLIST_CONTROLLERINFO_CONNECTIONTYPE']._serialized_start=21808
207
+ _globals['_RESPONSE_RESULTCONTROLLERLIST_CONTROLLERINFO_CONNECTIONTYPE']._serialized_end=21848
208
+ _globals['_RESPONSE_RESULTBLUETOOTHREQUESTPROGRESS']._serialized_start=21850
209
+ _globals['_RESPONSE_RESULTBLUETOOTHREQUESTPROGRESS']._serialized_end=21951
210
+ _globals['_RESPONSE_RESULTTRACKERLIST']._serialized_start=21954
211
+ _globals['_RESPONSE_RESULTTRACKERLIST']._serialized_end=22671
212
+ _globals['_RESPONSE_RESULTTRACKERLIST_TRACKERINFO']._serialized_start=22082
213
+ _globals['_RESPONSE_RESULTTRACKERLIST_TRACKERINFO']._serialized_end=22671
214
+ _globals['_RESPONSE_RESULTTRACKERSETTINGS']._serialized_start=22674
215
+ _globals['_RESPONSE_RESULTTRACKERSETTINGS']._serialized_end=22971
216
+ _globals['_RESPONSE_RESULTSETTRACKEREXPOSURE']._serialized_start=22973
217
+ _globals['_RESPONSE_RESULTSETTRACKEREXPOSURE']._serialized_end=23021
218
+ _globals['_RESPONSE_RESULTSETTRACKERGAIN']._serialized_start=23023
219
+ _globals['_RESPONSE_RESULTSETTRACKERGAIN']._serialized_end=23063
220
+ _globals['_RESPONSE_RESULTSETTRACKEROPTION']._serialized_start=23065
221
+ _globals['_RESPONSE_RESULTSETTRACKEROPTION']._serialized_end=23136
222
+ _globals['_RESPONSE_RESULTSETTRACKERCOLORPRESET']._serialized_start=23138
223
+ _globals['_RESPONSE_RESULTSETTRACKERCOLORPRESET']._serialized_end=23250
224
+ _globals['_RESPONSE_RESULTTRACKINGSPACESETTINGS']._serialized_start=23252
225
+ _globals['_RESPONSE_RESULTTRACKINGSPACESETTINGS']._serialized_end=23313
226
+ _globals['_RESPONSE_RESULTHMDLIST']._serialized_start=23316
227
+ _globals['_RESPONSE_RESULTHMDLIST']._serialized_end=24557
228
+ _globals['_RESPONSE_RESULTHMDLIST_HMDINFO']._serialized_start=23403
229
+ _globals['_RESPONSE_RESULTHMDLIST_HMDINFO']._serialized_end=24557
230
+ _globals['_RESPONSE_RESULTSERVICEVERSION']._serialized_start=24559
231
+ _globals['_RESPONSE_RESULTSERVICEVERSION']._serialized_end=24598
232
+ _globals['_RESPONSE_RESULTSETTRACKERFRAMERATE']._serialized_start=24600
233
+ _globals['_RESPONSE_RESULTSETTRACKERFRAMERATE']._serialized_end=24651
234
+ _globals['_RESPONSE_RESULTSETTRACKERFRAMEWIDTH']._serialized_start=24653
235
+ _globals['_RESPONSE_RESULTSETTRACKERFRAMEWIDTH']._serialized_end=24706
236
+ _globals['_RESPONSE_RESULTSETTRACKERFRAMEHEIGHT']._serialized_start=24708
237
+ _globals['_RESPONSE_RESULTSETTRACKERFRAMEHEIGHT']._serialized_end=24763
238
+ _globals['_RESPONSE_RESULTGETPLAYSPACEOFFSETS']._serialized_start=24766
239
+ _globals['_RESPONSE_RESULTGETPLAYSPACEOFFSETS']._serialized_end=24933
240
+ _globals['_RESPONSE_RESPONSETYPE']._serialized_start=24936
241
+ _globals['_RESPONSE_RESPONSETYPE']._serialized_end=25608
242
+ _globals['_RESPONSE_RESULTCODE']._serialized_start=25610
243
+ _globals['_RESPONSE_RESULTCODE']._serialized_end=25676
244
+ _globals['_DEVICEOUTPUTDATAFRAME']._serialized_start=25679
245
+ _globals['_DEVICEOUTPUTDATAFRAME']._serialized_end=34226
246
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET']._serialized_start=26040
247
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET']._serialized_end=31463
248
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE']._serialized_start=26627
249
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE']._serialized_end=28312
250
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_RAWSENSORDATA']._serialized_start=27413
251
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_RAWSENSORDATA']._serialized_end=27573
252
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_CALIBRATEDSENSORDATA']._serialized_start=27576
253
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_CALIBRATEDSENSORDATA']._serialized_end=27749
254
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_RAWTRACKERDATA']._serialized_start=27752
255
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_RAWTRACKERDATA']._serialized_end=28030
256
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_PHYSICSDATA']._serialized_start=28033
257
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE_PHYSICSDATA']._serialized_end=28312
258
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSNAVISTATE']._serialized_start=28314
259
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSNAVISTATE']._serialized_end=28392
260
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE']._serialized_start=28395
261
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE']._serialized_end=30297
262
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_RAWSENSORDATA']._serialized_start=29332
263
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_RAWSENSORDATA']._serialized_end=29443
264
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_CALIBRATEDSENSORDATA']._serialized_start=29445
265
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_CALIBRATEDSENSORDATA']._serialized_end=29567
266
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_RAWTRACKERDATA']._serialized_start=29570
267
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_RAWTRACKERDATA']._serialized_end=30015
268
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_PHYSICSDATA']._serialized_start=28033
269
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE_PHYSICSDATA']._serialized_end=28312
270
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_VIRTUALCONTROLLERSTATE']._serialized_start=30300
271
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_VIRTUALCONTROLLERSTATE']._serialized_end=31220
272
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_VIRTUALCONTROLLERSTATE_RAWTRACKERDATA']._serialized_start=27752
273
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_VIRTUALCONTROLLERSTATE_RAWTRACKERDATA']._serialized_end=28030
274
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_VIRTUALCONTROLLERSTATE_PHYSICSDATA']._serialized_start=28033
275
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_VIRTUALCONTROLLERSTATE_PHYSICSDATA']._serialized_end=28170
276
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_BUTTONTYPE']._serialized_start=31223
277
+ _globals['_DEVICEOUTPUTDATAFRAME_CONTROLLERDATAPACKET_BUTTONTYPE']._serialized_end=31463
278
+ _globals['_DEVICEOUTPUTDATAFRAME_TRACKERDATAPACKET']._serialized_start=31466
279
+ _globals['_DEVICEOUTPUTDATAFRAME_TRACKERDATAPACKET']._serialized_end=31670
280
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET']._serialized_start=31673
281
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET']._serialized_end=34170
282
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE']._serialized_start=31980
283
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE']._serialized_end=33444
284
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_RAWSENSORDATA']._serialized_start=29332
285
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_RAWSENSORDATA']._serialized_end=29443
286
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_CALIBRATEDSENSORDATA']._serialized_start=29445
287
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_CALIBRATEDSENSORDATA']._serialized_end=29567
288
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_RAWTRACKERDATA']._serialized_start=32876
289
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_RAWTRACKERDATA']._serialized_end=33162
290
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_PHYSICSDATA']._serialized_start=28033
291
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_MORPHEUSSTATE_PHYSICSDATA']._serialized_end=28312
292
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_VIRTUALHMDSTATE']._serialized_start=33447
293
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_VIRTUALHMDSTATE']._serialized_end=34170
294
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_VIRTUALHMDSTATE_RAWTRACKERDATA']._serialized_start=33808
295
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_VIRTUALHMDSTATE_RAWTRACKERDATA']._serialized_end=34030
296
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_VIRTUALHMDSTATE_PHYSICSDATA']._serialized_start=28033
297
+ _globals['_DEVICEOUTPUTDATAFRAME_HMDDATAPACKET_VIRTUALHMDSTATE_PHYSICSDATA']._serialized_end=28170
298
+ _globals['_DEVICEOUTPUTDATAFRAME_DEVICECATEGORY']._serialized_start=34172
299
+ _globals['_DEVICEOUTPUTDATAFRAME_DEVICECATEGORY']._serialized_end=34226
300
+ _globals['_DEVICEINPUTDATAFRAME']._serialized_start=34229
301
+ _globals['_DEVICEINPUTDATAFRAME']._serialized_end=35017
302
+ _globals['_DEVICEINPUTDATAFRAME_CONTROLLERDATAPACKET']._serialized_start=34446
303
+ _globals['_DEVICEINPUTDATAFRAME_CONTROLLERDATAPACKET']._serialized_end=34970
304
+ _globals['_DEVICEINPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE']._serialized_start=34770
305
+ _globals['_DEVICEINPUTDATAFRAME_CONTROLLERDATAPACKET_PSMOVESTATE']._serialized_end=34850
306
+ _globals['_DEVICEINPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE']._serialized_start=34852
307
+ _globals['_DEVICEINPUTDATAFRAME_CONTROLLERDATAPACKET_PSDUALSHOCK4STATE']._serialized_end=34970
308
+ _globals['_DEVICEINPUTDATAFRAME_DEVICECATEGORY']._serialized_start=34972
309
+ _globals['_DEVICEINPUTDATAFRAME_DEVICECATEGORY']._serialized_end=35017
310
+ # @@protoc_insertion_point(module_scope)
@@ -0,0 +1,72 @@
1
+ """HMD Data Abstraction Module.
2
+
3
+ Provides data structures and parsing logic for Head-Mounted Display (HMD)
4
+ position and orientation data extracted from PSMoveServiceEx Protobuf
5
+ packets.
6
+ """
7
+
8
+ from dataclasses import dataclass
9
+
10
+
11
+ @dataclass
12
+ class Position:
13
+ """3D spatial coordinates in centimeters."""
14
+
15
+ x: float = 0.0
16
+ y: float = 0.0
17
+ z: float = 0.0
18
+
19
+
20
+ @dataclass
21
+ class Orientation:
22
+ """3D angular rotation in degrees (Euler angles)."""
23
+
24
+ yaw: float = 0.0
25
+ pitch: float = 0.0
26
+ roll: float = 0.0
27
+
28
+
29
+ class HMDData:
30
+ """Encapsulates tracking state for an HMD device.
31
+
32
+ Parses raw Protobuf HMD packets and updates internal position/orientation
33
+ states with fallback support for standard pose structures.
34
+ """
35
+
36
+ def __init__(self):
37
+ self.position = Position()
38
+ self.orientation = Orientation()
39
+ self.raw_packet = None
40
+
41
+ def update_from_protobuf(self, hmd_packet) -> bool:
42
+ """Parses an incoming HMD data packet from PSMoveServiceEx.
43
+
44
+ Args:
45
+ hmd_packet: The deserialized `hmd_data_packet` Protobuf message.
46
+
47
+ Returns:
48
+ bool: True if positional data was successfully updated, False
49
+ otherwise.
50
+ """
51
+ self.raw_packet = hmd_packet
52
+
53
+ # Primary extraction path: PSMoveServiceEx virtual HMD state wrapper
54
+ if hasattr(
55
+ hmd_packet, "virtual_hmd_state"
56
+ ) and hmd_packet.HasField("virtual_hmd_state"):
57
+ state = hmd_packet.virtual_hmd_state
58
+ if hasattr(state, "position_cm") and state.HasField("position_cm"):
59
+ self.position.x = state.position_cm.x
60
+ self.position.y = state.position_cm.y
61
+ self.position.z = state.position_cm.z
62
+ return True
63
+
64
+ # Fallback path: Standard PSMoveService HMD pose structure
65
+ if hasattr(hmd_packet, "pose") and hmd_packet.HasField("pose"):
66
+ if hasattr(hmd_packet.pose, "position"):
67
+ self.position.x = hmd_packet.pose.position.x
68
+ self.position.y = hmd_packet.pose.position.y
69
+ self.position.z = hmd_packet.pose.position.z
70
+ return True
71
+
72
+ return False
@@ -0,0 +1,13 @@
1
+ Metadata-Version: 2.4
2
+ Name: psmovebridge
3
+ Version: 0.1.0
4
+ Summary: Asynchronous Python client and OpenTrack UDP bridge for PSMoveServiceEx.
5
+ Author: Yohan KONAN
6
+ Requires-Python: >=3.8
7
+ License-File: LICENSE
8
+ Requires-Dist: protobuf>=3.20.0
9
+ Dynamic: author
10
+ Dynamic: license-file
11
+ Dynamic: requires-dist
12
+ Dynamic: requires-python
13
+ Dynamic: summary
@@ -0,0 +1,9 @@
1
+ psmovebridge/__init__.py,sha256=Gs00gAtCetgOfqxcgxLdZxK2etIMUsOHfRk-sCnxZ14,34
2
+ psmovebridge/client.py,sha256=eIidYIcQLYodLpBhn9L4ws_vFauRpFBAXqO89V3GSoA,7086
3
+ psmovebridge/protocol_pb2.py,sha256=SoXGYDlMG7XkAbjOOkPgJWBWtzygEvTpblU6FjQVFXE,75754
4
+ psmovebridge/tracker.py,sha256=pjBUyWxsTTutgRJ6ldYERfCe9HYo4mcbzBJWU6sMlIM,2264
5
+ psmovebridge-0.1.0.dist-info/licenses/LICENSE,sha256=YSApAprWPgnUXhwK-8WR1TeyMwInEohO641mrmgHXs0,1087
6
+ psmovebridge-0.1.0.dist-info/METADATA,sha256=laAcqytvmcjfSRDxiEyAyXN3B3-ki7fpwq8VES6lFuY,351
7
+ psmovebridge-0.1.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
8
+ psmovebridge-0.1.0.dist-info/top_level.txt,sha256=GNzv7Yntp_4RbK72329p0HyV967arWuGbbLGCvuF298,13
9
+ psmovebridge-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Yohan Konan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ psmovebridge