Skip to content

Commit 2ad2297

Browse files
committed
ts models for vue
1 parent 31f95ca commit 2ad2297

File tree

3 files changed

+27
-11
lines changed

3 files changed

+27
-11
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

+17-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>,
@@ -271,7 +272,7 @@ pub enum UpgradeResult {
271272
Ping360,
272273
}
273274

274-
#[derive(Debug, Clone, Serialize, Deserialize)]
275+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
275276
pub enum PingRequest {
276277
Ping1D(Ping1DRequest),
277278
Ping360(Ping360Request),
@@ -281,7 +282,7 @@ pub enum PingRequest {
281282
Stop,
282283
}
283284

284-
#[derive(Debug, Clone, Serialize, Deserialize)]
285+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
285286
pub enum Ping1DRequest {
286287
DeviceID,
287288
ModeAuto,
@@ -300,33 +301,45 @@ pub enum Ping1DRequest {
300301
GainSetting,
301302
PingEnable,
302303
DistanceSimple,
304+
#[ts(skip)]
303305
SetDeviceId(bluerobotics_ping::ping1d::SetDeviceIdStruct),
306+
#[ts(skip)]
304307
SetModeAuto(bluerobotics_ping::ping1d::SetModeAutoStruct),
308+
#[ts(skip)]
305309
SetPingInterval(bluerobotics_ping::ping1d::SetPingIntervalStruct),
310+
#[ts(skip)]
306311
SetPingEnable(bluerobotics_ping::ping1d::SetPingEnableStruct),
312+
#[ts(skip)]
307313
SetSpeedOfSound(bluerobotics_ping::ping1d::SetSpeedOfSoundStruct),
314+
#[ts(skip)]
308315
SetRange(bluerobotics_ping::ping1d::SetRangeStruct),
316+
#[ts(skip)]
309317
SetGainSetting(bluerobotics_ping::ping1d::SetGainSettingStruct),
318+
#[ts(skip)]
310319
ContinuousStart(bluerobotics_ping::ping1d::ContinuousStartStruct),
320+
#[ts(skip)]
311321
ContinuousStop(bluerobotics_ping::ping1d::ContinuousStopStruct),
322+
#[ts(skip)]
312323
GotoBootloader(bluerobotics_ping::ping1d::GotoBootloaderStruct),
313324
}
314325

315-
#[derive(Debug, Clone, Serialize, Deserialize)]
326+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
316327
pub enum Ping360Request {
317328
MotorOff,
318329
DeviceData,
319330
AutoDeviceData,
331+
#[ts(skip)]
320332
SetDeviceId(bluerobotics_ping::ping1d::SetDeviceIdStruct),
321333
Transducer,
322334
Reset,
323335
AutoTransmit,
324336
}
325337

326-
#[derive(Debug, Clone, Serialize, Deserialize)]
338+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
327339
pub enum PingCommonRequest {
328340
DeviceInformation,
329341
ProtocolVersion,
342+
#[ts(skip)]
330343
SetDeviceId(bluerobotics_ping::common::SetDeviceIdStruct),
331344
}
332345

src/device/manager.rs

+9-7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use std::{
88
use tokio::sync::{mpsc, oneshot};
99
use tokio_serial::{SerialPort, SerialPortBuilderExt, SerialStream};
1010
use tracing::{error, info, trace};
11+
use ts_rs::TS;
1112
use udp_stream::UdpStream;
1213
use uuid::Uuid;
1314

@@ -41,15 +42,15 @@ impl Device {
4142
}
4243
}
4344

44-
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
45+
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, TS)]
4546
pub enum DeviceSelection {
4647
Common,
4748
Ping1D,
4849
Ping360,
4950
Auto,
5051
}
5152

52-
#[derive(Debug, Clone, Deserialize, Serialize, Hash)]
53+
#[derive(Debug, Clone, Deserialize, Serialize, Hash, TS)]
5354
pub enum SourceSelection {
5455
UdpStream(SourceUdpStruct),
5556
SerialStream(SourceSerialStruct),
@@ -60,13 +61,13 @@ enum SourceType {
6061
Serial(SerialStream),
6162
}
6263

63-
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema)]
64+
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema, TS)]
6465
pub struct SourceUdpStruct {
6566
pub ip: Ipv4Addr,
6667
pub port: u16,
6768
}
6869

69-
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema)]
70+
#[derive(Clone, Debug, Deserialize, Serialize, Hash, Apiv2Schema, TS)]
7071
pub struct SourceSerialStruct {
7172
pub path: String,
7273
pub baudrate: u32,
@@ -119,7 +120,8 @@ pub struct DeviceAnswer {
119120
pub device_id: Uuid,
120121
}
121122

122-
#[derive(Debug, Clone, Serialize, Deserialize, Apiv2Schema)]
123+
#[derive(Debug, Clone, Serialize, Deserialize, Apiv2Schema, TS)]
124+
#[ts(export, export_to = "RequestModels.ts")]
123125
pub enum Request {
124126
Create(CreateStruct),
125127
Delete(Uuid),
@@ -130,13 +132,13 @@ pub enum Request {
130132
GetDeviceHandler(Uuid),
131133
}
132134

133-
#[derive(Debug, Clone, Serialize, Deserialize)]
135+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
134136
pub struct CreateStruct {
135137
pub source: SourceSelection,
136138
pub device_selection: DeviceSelection,
137139
}
138140

139-
#[derive(Debug, Clone, Serialize, Deserialize)]
141+
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
140142
pub struct DeviceRequestStruct {
141143
pub target: Uuid,
142144
pub request: crate::device::devices::PingRequest,

0 commit comments

Comments
 (0)