autd3_link_remote/
lib.rs

1#![cfg_attr(docsrs, feature(doc_cfg))]
2#![warn(missing_docs)]
3#![warn(rustdoc::missing_crate_level_docs)]
4#![warn(rustdoc::unescaped_backticks)]
5
6//! This crate provides a link for remote server or [`AUTD3 Simulator`].
7//!
8//! [`AUTD3 Simulator`]: https://github.com/shinolab/autd3-server
9
10#[cfg_attr(docsrs, doc(cfg(feature = "link")))]
11#[cfg(feature = "link")]
12mod link;
13
14#[cfg(feature = "link")]
15pub use link::{Remote, RemoteOption};
16
17#[cfg_attr(docsrs, doc(cfg(feature = "server")))]
18#[cfg(feature = "server")]
19mod server;
20
21#[cfg(feature = "server")]
22pub use server::RemoteServer;
23
24// # Protocol Specification
25//
26// ## Message Types
27//
28// - `0x01`: Configure Geometry
29// - `0x02`: Update Geometry
30// - `0x03`: Send Data
31// - `0x04`: Read Data
32// - `0x05`: Close
33//
34// ## Response Status Codes
35//
36// - `0x00`: OK
37// - `0xFF`: Error
38//
39// ## Message Formats
40//
41// ### Configure/Update Geometry
42// Request:
43// - 1 byte: message type (0x01 or 0x02)
44// - 4 bytes: number of devices (u32, little-endian)
45// - For each device:
46//   - 12 bytes: position (3x f32, little-endian)
47//   - 16 bytes: rotation quaternion (w, i, j, k as f32, little-endian)
48//
49// Response (Success):
50// - 1 byte: status (0x00 = OK)
51//
52// Response (Error):
53// - 1 byte: status (0xFF = Error)
54// - 4 bytes: error message length (u32, little-endian)
55// - N bytes: error message (UTF-8 string)
56//
57// ### Send Data
58// Request:
59// - 1 byte: message type (0x03)
60// - 4 bytes: number of devices (u32, little-endian)
61// - Raw TxMessage data for each device
62//
63// Response (Success):
64// - 1 byte: status (0x00 = OK)
65//
66// Response (Error):
67// - 1 byte: status (0xFF = Error)
68// - 4 bytes: error message length (u32, little-endian)
69// - N bytes: error message (UTF-8 string)
70//
71// ### Read Data
72// Request:
73// - 1 byte: message type (0x04)
74//
75// Response (Success):
76// - 1 byte: status (0x00 = OK)
77// - 4 bytes: number of devices (u32, little-endian)
78// - Raw RxMessage data for each device
79//
80// Response (Error):
81// - 1 byte: status (0xFF = Error)
82// - 4 bytes: error message length (u32, little-endian)
83// - N bytes: error message (UTF-8 string)
84//
85// ### Close
86// Request:
87// - 1 byte: message type (0x05)
88//
89// Response (Success):
90// - 1 byte: status (0x00 = OK)
91//
92// Response (Error):
93// - 1 byte: status (0xFF = Error)
94// - 4 bytes: error message length (u32, little-endian)
95// - N bytes: error message (UTF-8 string)
96
97pub(crate) const MSG_CONFIG_GEOMETRY: u8 = 0x01;
98pub(crate) const MSG_UPDATE_GEOMETRY: u8 = 0x02;
99pub(crate) const MSG_SEND_DATA: u8 = 0x03;
100pub(crate) const MSG_READ_DATA: u8 = 0x04;
101pub(crate) const MSG_CLOSE: u8 = 0x05;
102
103pub(crate) const MSG_OK: u8 = 0x00;
104pub(crate) const MSG_ERROR: u8 = 0xFF;