Skip to content

Commit c3dd483

Browse files
committed
backup
1 parent 7e938aa commit c3dd483

File tree

4 files changed

+98
-14
lines changed

4 files changed

+98
-14
lines changed

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ udp-stream = "0.0.12"
2828
uuid = { version = "1.8", features = ["serde"] }
2929
validator = "0.18.1"
3030
thiserror = "1.0.61"
31+
ts-rs = { version = "9.0.1" , features = ["serde-compat", "uuid-impl"] }
3132

3233
[build-dependencies]
3334
vergen-gix = { version = "1.0.0-beta.2", default-features = false, features = ["build", "cargo"] }

src/device/devices.rs

+19-4
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use bluerobotics_ping::device::PingDevice;
22
use serde::{Deserialize, Serialize};
33
use tokio::sync::{mpsc, oneshot};
44
use tracing::{error, trace, warn};
5+
use ts_rs::TS;
56

67
pub struct DeviceActor {
78
pub receiver: mpsc::Receiver<DeviceActorRequest>,
@@ -267,7 +268,7 @@ pub enum UpgradeResult {
267268
Ping360,
268269
}
269270

270-
#[derive(Debug, Clone, Serialize, Deserialize)]
271+
#[derive(Debug, Clone, Serialize, Deserialize,TS)]
271272
pub enum PingRequest {
272273
Ping1D(Ping1DRequest),
273274
Ping360(Ping360Request),
@@ -277,7 +278,7 @@ pub enum PingRequest {
277278
Stop,
278279
}
279280

280-
#[derive(Debug, Clone, Serialize, Deserialize)]
281+
#[derive(Debug, Clone, Serialize, Deserialize,TS)]
281282
pub enum Ping1DRequest {
282283
DeviceID,
283284
ModeAuto,
@@ -296,33 +297,47 @@ pub enum Ping1DRequest {
296297
GainSetting,
297298
PingEnable,
298299
DistanceSimple,
300+
#[ts(skip)]
299301
SetDeviceId(bluerobotics_ping::ping1d::SetDeviceIdStruct),
302+
#[ts(skip)]
300303
SetModeAuto(bluerobotics_ping::ping1d::SetModeAutoStruct),
304+
#[ts(skip)]
301305
SetPingInterval(bluerobotics_ping::ping1d::SetPingIntervalStruct),
306+
#[ts(skip)]
302307
SetPingEnable(bluerobotics_ping::ping1d::SetPingEnableStruct),
308+
#[ts(skip)]
303309
SetSpeedOfSound(bluerobotics_ping::ping1d::SetSpeedOfSoundStruct),
310+
#[ts(skip)]
304311
SetRange(bluerobotics_ping::ping1d::SetRangeStruct),
312+
#[ts(skip)]
305313
SetGainSetting(bluerobotics_ping::ping1d::SetGainSettingStruct),
314+
#[ts(skip)]
306315
ContinuousStart(bluerobotics_ping::ping1d::ContinuousStartStruct),
316+
#[ts(skip)]
307317
ContinuousStop(bluerobotics_ping::ping1d::ContinuousStopStruct),
308318
GotoBootloader,
309319
}
310320

311-
#[derive(Debug, Clone, Serialize, Deserialize)]
321+
#[derive(Debug, Clone, Serialize, Deserialize,TS)]
312322
pub enum Ping360Request {
313323
MotorOff,
314324
DeviceData,
315325
AutoDeviceData,
326+
#[ts(skip)]
316327
SetDeviceId(bluerobotics_ping::ping360::SetDeviceIdStruct),
328+
#[ts(skip)]
317329
Transducer(bluerobotics_ping::ping360::TransducerStruct),
330+
#[ts(skip)]
318331
Reset(bluerobotics_ping::ping360::ResetStruct),
332+
#[ts(skip)]
319333
AutoTransmit(bluerobotics_ping::ping360::AutoTransmitStruct),
320334
}
321335

322-
#[derive(Debug, Clone, Serialize, Deserialize)]
336+
#[derive(Debug, Clone, Serialize, Deserialize,TS)]
323337
pub enum PingCommonRequest {
324338
DeviceInformation,
325339
ProtocolVersion,
340+
#[ts(skip)]
326341
SetDeviceId(bluerobotics_ping::common::SetDeviceIdStruct),
327342
}
328343

src/device/manager.rs

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use paperclip::actix::Apiv2Schema;
22
use serde::{Deserialize, Serialize};
3+
use ts_rs::TS;
34
use std::{
45
collections::{hash_map::DefaultHasher, HashMap},
56
hash::{Hash, Hasher},
@@ -56,15 +57,15 @@ impl Drop for Device {
5657
}
5758
}
5859

59-
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
60+
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, TS)]
6061
pub enum DeviceSelection {
6162
Common,
6263
Ping1D,
6364
Ping360,
6465
Auto,
6566
}
6667

67-
#[derive(Debug, Clone, Deserialize, Serialize, Hash)]
68+
#[derive(Debug, Clone, Deserialize, Serialize, Hash, TS)]
6869
pub enum SourceSelection {
6970
UdpStream(SourceUdpStruct),
7071
SerialStream(SourceSerialStruct),
@@ -75,13 +76,13 @@ enum SourceType {
7576
Serial(SerialStream),
7677
}
7778

78-
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema)]
79+
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema, TS)]
7980
pub struct SourceUdpStruct {
8081
pub ip: Ipv4Addr,
8182
pub port: u16,
8283
}
8384

84-
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema)]
85+
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema, TS)]
8586
pub struct SourceSerialStruct {
8687
pub path: String,
8788
pub baudrate: u32,
@@ -137,7 +138,7 @@ pub struct DeviceAnswer {
137138
pub device_id: Uuid,
138139
}
139140

140-
#[derive(Debug, Clone, Serialize, Deserialize, Apiv2Schema)]
141+
#[derive(Debug, Clone, Serialize, Deserialize, Apiv2Schema, TS)]
141142
#[serde(tag = "type", content = "payload")]
142143
pub enum Request {
143144
Create(CreateStruct),
@@ -151,7 +152,7 @@ pub enum Request {
151152
DisableContinuousMode(UuidWrapper),
152153
}
153154

154-
#[derive(Debug, Clone, Serialize, Deserialize)]
155+
#[derive(Debug, Clone, Serialize, Deserialize,TS)]
155156
pub struct UuidWrapper {
156157
pub uuid: Uuid,
157158
}
@@ -174,13 +175,13 @@ impl From<UuidWrapper> for Uuid {
174175
}
175176
}
176177

177-
#[derive(Debug, Clone, Serialize, Deserialize)]
178+
#[derive(Debug, Clone, Serialize, Deserialize,TS)]
178179
pub struct CreateStruct {
179180
pub source: SourceSelection,
180181
pub device_selection: DeviceSelection,
181182
}
182183

183-
#[derive(Debug, Clone, Serialize, Deserialize)]
184+
#[derive(Debug, Clone, Serialize, Deserialize,TS)]
184185
pub struct DeviceRequestStruct {
185186
pub uuid: Uuid,
186187
pub device_request: crate::device::devices::PingRequest,

src/main.rs

+69-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1+
use std::{net::Ipv4Addr, str::FromStr};
2+
3+
use device::manager::{CreateStruct, DeviceRequestStruct, UuidWrapper};
4+
use serde::{Deserialize, Serialize};
15
use tracing::info;
6+
use ts_rs::TS;
27

38
#[macro_use]
49
extern crate lazy_static;
@@ -9,16 +14,23 @@ mod device;
914
mod logger;
1015
mod server;
1116

12-
#[derive(Debug, Clone, Serialize, Deserialize)]
17+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
18+
#[ts(export, export_to = "RequestModels.ts")]
1319
pub struct Command {
1420
pub command: CommandType,
1521
}
1622

17-
#[derive(Debug, Clone, Serialize, Deserialize)]
23+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
24+
#[serde(tag = "module")]
1825
pub enum CommandType {
1926
DeviceManager(device::manager::Request),
2027
}
2128

29+
// #[derive(Debug, Clone, Serialize, Deserialize)]
30+
// pub enum Command {
31+
// DeviceManager(device::manager::Request),
32+
// }
33+
2234
#[tokio::main]
2335
async fn main() {
2436
// CLI should be started before logger to allow control over verbosity
@@ -34,6 +46,61 @@ async fn main() {
3446
"DeviceManager initialized with following devices: {:?}",
3547
handler.send(crate::device::manager::Request::List).await
3648
);
49+
use uuid::Uuid;
50+
use serde_json::json;
51+
52+
// Define your requests
53+
let requests = vec![
54+
crate::device::manager::Request::Ping(
55+
DeviceRequestStruct {
56+
uuid: Uuid::parse_str("00000000-0000-0000-001e-10da679f8cee").unwrap(),
57+
device_request: crate::device::devices::PingRequest::Ping360(
58+
crate::device::devices::Ping360Request::Transducer(
59+
bluerobotics_ping::ping360::TransducerStruct {
60+
mode: 1,
61+
gain_setting: 2,
62+
angle: 0,
63+
transmit_duration: 500,
64+
sample_period: 80,
65+
transmit_frequency: 700,
66+
number_of_samples: 1200,
67+
transmit: 1,
68+
reserved: 1,
69+
},
70+
),
71+
),
72+
},
73+
),
74+
crate::device::manager::Request::EnableContinuousMode(
75+
UuidWrapper {
76+
uuid: Uuid::parse_str("00000000-0000-0000-001e-10da679f8cee").unwrap(),
77+
}
78+
),
79+
crate::device::manager::Request::List,
80+
crate::device::manager::Request::Create(CreateStruct {
81+
source: device::manager::SourceSelection::SerialStream(
82+
device::manager::SourceSerialStruct {
83+
path: "/dev/ttyUSB0".to_string(),
84+
baudrate: 115200,
85+
}
86+
),
87+
device_selection: device::manager::DeviceSelection::Auto,
88+
}),
89+
crate::device::manager::Request::Create(CreateStruct {
90+
source: device::manager::SourceSelection::UdpStream(
91+
device::manager::SourceUdpStruct {
92+
ip: "192.168.0.1".parse().unwrap(),
93+
port: 9092,
94+
}
95+
),
96+
device_selection: device::manager::DeviceSelection::Auto,
97+
}),
98+
];
99+
100+
// Print each request as JSON
101+
for request in requests {
102+
println!("{}", json!(Command{command : CommandType::DeviceManager(request)}));
103+
}
37104

38105
server::manager::run(&cli::manager::server_address(), handler)
39106
.await

0 commit comments

Comments
 (0)