Files
open-xiaoai/packages/client-v2/src/net/protocol.rs
T

68 lines
1.2 KiB
Rust
Raw Normal View History

2026-01-02 13:04:19 +08:00
use crate::audio::config::AudioConfig;
2026-01-02 09:59:29 +08:00
use serde::{Deserialize, Serialize};
2026-01-03 19:17:13 +08:00
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct ClientInfo {
2026-01-02 13:04:19 +08:00
pub model: String,
2026-01-03 19:17:13 +08:00
pub serial_number: String,
2026-01-02 17:23:24 +08:00
}
2026-01-02 09:59:29 +08:00
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum ControlPacket {
2026-01-02 17:23:24 +08:00
// Discovery
2026-01-03 19:17:13 +08:00
Discovery {
protocol: String,
port: u16,
2026-01-02 09:59:29 +08:00
},
2026-01-02 13:04:19 +08:00
2026-01-03 19:17:13 +08:00
// Handshake
ServerHello {
auth: String,
version: String,
udp_port: u16, // for audio
2026-01-02 09:59:29 +08:00
},
2026-01-03 19:17:13 +08:00
ClientHello {
auth: String,
version: String,
udp_port: u16, // for audio
info: ClientInfo,
2026-01-02 09:59:29 +08:00
},
2026-01-03 19:17:13 +08:00
// Heartbeat
Ping,
Pong,
2026-01-02 13:04:19 +08:00
// RPC
RpcRequest {
id: u32,
method: String,
args: Vec<String>,
},
RpcResponse {
id: u32,
result: RpcResult,
},
2026-01-03 19:17:13 +08:00
// Audio Control
StartRecording {
config: AudioConfig,
},
StopRecording,
StartPlayback {
config: AudioConfig,
},
StopPlayback,
2026-01-02 13:04:19 +08:00
}
2026-01-02 17:23:24 +08:00
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
2026-01-02 13:04:19 +08:00
pub struct RpcResult {
pub stdout: String,
pub stderr: String,
pub code: i32,
2026-01-02 09:59:29 +08:00
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct AudioPacket {
2026-01-02 17:23:24 +08:00
pub data: Vec<u8>,
2026-01-02 09:59:29 +08:00
}