From ef28121f5d02de583dfac4bb6bb0905a00ffc2eb Mon Sep 17 00:00:00 2001 From: Del Wang Date: Fri, 2 Jan 2026 10:22:16 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client-v2/Cargo.toml | 4 ++++ packages/client-v2/Makefile | 18 ++++++++++++------ packages/client-v2/src/app/client/entry.rs | 8 ++++++++ packages/client-v2/src/app/client/mod.rs | 1 + packages/client-v2/src/app/mod.rs | 6 +++--- packages/client-v2/src/app/server/entry.rs | 6 ++++++ packages/client-v2/src/app/server/mod.rs | 1 + .../client-v2/src/app/{ => stereo}/entry.rs | 2 +- .../client-v2/src/app/{ => stereo}/master.rs | 0 packages/client-v2/src/app/stereo/mod.rs | 3 +++ .../client-v2/src/app/{ => stereo}/slave.rs | 0 packages/client-v2/src/bin/client.rs | 9 ++++++--- packages/client-v2/src/bin/server.rs | 10 ++++++++++ packages/client-v2/src/bin/stereo.rs | 14 ++++++++++++++ packages/client-v2/src/lib.rs | 4 +++- 15 files changed, 72 insertions(+), 14 deletions(-) create mode 100644 packages/client-v2/src/app/client/entry.rs create mode 100644 packages/client-v2/src/app/client/mod.rs create mode 100644 packages/client-v2/src/app/server/entry.rs create mode 100644 packages/client-v2/src/app/server/mod.rs rename packages/client-v2/src/app/{ => stereo}/entry.rs (94%) rename packages/client-v2/src/app/{ => stereo}/master.rs (100%) create mode 100644 packages/client-v2/src/app/stereo/mod.rs rename packages/client-v2/src/app/{ => stereo}/slave.rs (100%) create mode 100644 packages/client-v2/src/bin/server.rs create mode 100644 packages/client-v2/src/bin/stereo.rs diff --git a/packages/client-v2/Cargo.toml b/packages/client-v2/Cargo.toml index 15fee32..79a2541 100644 --- a/packages/client-v2/Cargo.toml +++ b/packages/client-v2/Cargo.toml @@ -11,6 +11,10 @@ panic = "abort" strip = true debug = false +[features] +default = [] +app = [] + [dependencies] opus = "0.3" anyhow = "1.0" diff --git a/packages/client-v2/Makefile b/packages/client-v2/Makefile index 0ecbf3b..ba65170 100644 --- a/packages/client-v2/Makefile +++ b/packages/client-v2/Makefile @@ -1,10 +1,16 @@ -build: +build-server: + cargo build --release --bin server --features app + +build-client: docker run --rm -v $(shell pwd):/app idootop/open-xiaoai-runtime:oh2p \ - cargo build --target armv7-unknown-linux-gnueabihf --release + cargo build --target armv7-unknown-linux-gnueabihf --release --bin client --features app + +run-server: + cargo run --bin server --features app # 部署到小爱音箱(调试自用) deploy: - dd if=target/armv7-unknown-linux-gnueabihf/release/xiao \ - | sshpass -p open-xiaoai ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.153 "dd of=/data/xiao" - dd if=target/armv7-unknown-linux-gnueabihf/release/xiao \ - | sshpass -p open-xiaoai ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.235 "dd of=/data/xiao" \ No newline at end of file + dd if=target/armv7-unknown-linux-gnueabihf/release/client \ + | sshpass -p open-xiaoai ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.153 "dd of=/data/client" + dd if=target/armv7-unknown-linux-gnueabihf/release/client \ + | sshpass -p open-xiaoai ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.235 "dd of=/data/client" \ No newline at end of file diff --git a/packages/client-v2/src/app/client/entry.rs b/packages/client-v2/src/app/client/entry.rs new file mode 100644 index 0000000..639ae06 --- /dev/null +++ b/packages/client-v2/src/app/client/entry.rs @@ -0,0 +1,8 @@ +#![cfg(target_os = "linux")] + +use anyhow::Result; + +pub async fn run_client() -> Result<()> { + println!("Hello, Client!"); + Ok(()) +} diff --git a/packages/client-v2/src/app/client/mod.rs b/packages/client-v2/src/app/client/mod.rs new file mode 100644 index 0000000..eb5becf --- /dev/null +++ b/packages/client-v2/src/app/client/mod.rs @@ -0,0 +1 @@ +pub mod entry; diff --git a/packages/client-v2/src/app/mod.rs b/packages/client-v2/src/app/mod.rs index 8af1333..ae350e2 100644 --- a/packages/client-v2/src/app/mod.rs +++ b/packages/client-v2/src/app/mod.rs @@ -1,3 +1,3 @@ -pub mod entry; -pub mod master; -pub mod slave; +pub mod client; +pub mod server; +pub mod stereo; diff --git a/packages/client-v2/src/app/server/entry.rs b/packages/client-v2/src/app/server/entry.rs new file mode 100644 index 0000000..df15716 --- /dev/null +++ b/packages/client-v2/src/app/server/entry.rs @@ -0,0 +1,6 @@ +use anyhow::Result; + +pub async fn run_server() -> Result<()> { + println!("Hello, Server!"); + Ok(()) +} diff --git a/packages/client-v2/src/app/server/mod.rs b/packages/client-v2/src/app/server/mod.rs new file mode 100644 index 0000000..eb5becf --- /dev/null +++ b/packages/client-v2/src/app/server/mod.rs @@ -0,0 +1 @@ +pub mod entry; diff --git a/packages/client-v2/src/app/entry.rs b/packages/client-v2/src/app/stereo/entry.rs similarity index 94% rename from packages/client-v2/src/app/entry.rs rename to packages/client-v2/src/app/stereo/entry.rs index 8d281c3..5aee647 100644 --- a/packages/client-v2/src/app/entry.rs +++ b/packages/client-v2/src/app/stereo/entry.rs @@ -6,7 +6,7 @@ use crate::net::protocol::ChannelRole; use anyhow::Result; use std::env; -pub async fn run_xiao() -> Result<()> { +pub async fn run_stereo() -> Result<()> { let args: Vec = env::args().collect(); if args.len() < 3 { eprintln!("用法: {} [master|slave] [left|right]", args[0]); diff --git a/packages/client-v2/src/app/master.rs b/packages/client-v2/src/app/stereo/master.rs similarity index 100% rename from packages/client-v2/src/app/master.rs rename to packages/client-v2/src/app/stereo/master.rs diff --git a/packages/client-v2/src/app/stereo/mod.rs b/packages/client-v2/src/app/stereo/mod.rs new file mode 100644 index 0000000..8af1333 --- /dev/null +++ b/packages/client-v2/src/app/stereo/mod.rs @@ -0,0 +1,3 @@ +pub mod entry; +pub mod master; +pub mod slave; diff --git a/packages/client-v2/src/app/slave.rs b/packages/client-v2/src/app/stereo/slave.rs similarity index 100% rename from packages/client-v2/src/app/slave.rs rename to packages/client-v2/src/app/stereo/slave.rs diff --git a/packages/client-v2/src/bin/client.rs b/packages/client-v2/src/bin/client.rs index 37d36f8..aede7f7 100644 --- a/packages/client-v2/src/bin/client.rs +++ b/packages/client-v2/src/bin/client.rs @@ -2,10 +2,13 @@ use anyhow::Result; #[tokio::main] async fn main() -> Result<()> { - #[cfg(target_os = "linux")] + #[cfg(feature = "app")] { - xiao::app::entry::run_xiao().await.unwrap(); + xiao::app::client::entry::run_client().await?; + } + #[cfg(not(target_os = "linux"))] + { + eprintln!("Only support Linux"); } - println!("Only support Linux"); Ok(()) } diff --git a/packages/client-v2/src/bin/server.rs b/packages/client-v2/src/bin/server.rs new file mode 100644 index 0000000..dc6e979 --- /dev/null +++ b/packages/client-v2/src/bin/server.rs @@ -0,0 +1,10 @@ +use anyhow::Result; + +#[tokio::main] +async fn main() -> Result<()> { + #[cfg(feature = "app")] + { + xiao::app::server::entry::run_server().await?; + } + Ok(()) +} diff --git a/packages/client-v2/src/bin/stereo.rs b/packages/client-v2/src/bin/stereo.rs new file mode 100644 index 0000000..fa4ff1c --- /dev/null +++ b/packages/client-v2/src/bin/stereo.rs @@ -0,0 +1,14 @@ +use anyhow::Result; + +#[tokio::main] +async fn main() -> Result<()> { + #[cfg(feature = "app")] + { + xiao::app::stereo::entry::run_stereo().await?; + } + #[cfg(not(target_os = "linux"))] + { + eprintln!("Only support Linux"); + } + Ok(()) +} diff --git a/packages/client-v2/src/lib.rs b/packages/client-v2/src/lib.rs index bc714b2..d1c3b68 100644 --- a/packages/client-v2/src/lib.rs +++ b/packages/client-v2/src/lib.rs @@ -1,4 +1,6 @@ -pub mod app; pub mod audio; pub mod net; pub mod utils; + +#[cfg(feature = "app")] +pub mod app;