diff --git a/examples/stereo/Makefile b/examples/stereo/Makefile index b91f980..7e04425 100644 --- a/examples/stereo/Makefile +++ b/examples/stereo/Makefile @@ -2,7 +2,7 @@ build: docker run --rm -v $(shell pwd):/app idootop/open-xiaoai-runtime:oh2p \ cargo build --target armv7-unknown-linux-gnueabihf --release -# 部署到小爱音箱(调试用) +# 部署到小爱音箱(调试自用) deploy: dd if=target/armv7-unknown-linux-gnueabihf/release/stereo \ | sshpass -p open-xiaoai ssh -o HostKeyAlgorithms=+ssh-rsa root@192.168.31.153 "dd of=/data/stereo" diff --git a/examples/stereo/src/app/entry.rs b/examples/stereo/src/app/entry.rs index e564326..5aee647 100644 --- a/examples/stereo/src/app/entry.rs +++ b/examples/stereo/src/app/entry.rs @@ -13,14 +13,21 @@ pub async fn run_stereo() -> Result<()> { return Ok(()); } - let mode = &args[1]; + let mode = if args[1].to_lowercase() == "master" { + "主节点" + } else { + "从节点" + }; + let role = if args[2].to_lowercase() == "left" { ChannelRole::Left } else { ChannelRole::Right }; - if mode == "master" { + println!("🚗 当前为: {} {}", mode, role.to_string()); + + if mode == "主节点" { run_master(role).await } else { run_slave(role).await diff --git a/examples/stereo/src/app/master.rs b/examples/stereo/src/app/master.rs index a6ee604..b290a23 100644 --- a/examples/stereo/src/app/master.rs +++ b/examples/stereo/src/app/master.rs @@ -26,8 +26,6 @@ struct SlaveSession { } pub async fn run_master(master_role: ChannelRole) -> Result<()> { - println!("--- 主节点模式 ({}) ---", master_role.to_string()); - // 0. 设置 ALSA 重定向 println!("🔥 启动中,请稍等..."); let _alsa_guard = AlsaRedirector::new()?; diff --git a/examples/stereo/src/app/slave.rs b/examples/stereo/src/app/slave.rs index 7857629..e1cf5d3 100644 --- a/examples/stereo/src/app/slave.rs +++ b/examples/stereo/src/app/slave.rs @@ -9,6 +9,7 @@ use crate::net::protocol::{AudioPacket, ChannelRole, ControlPacket}; use crate::utils::jitter_buffer::JitterBuffer; use crate::utils::sync::{ClockSync, now_us}; use anyhow::{Result, anyhow}; +use std::process::Command; use std::sync::Arc; use std::time::Duration; use tokio::io::{AsyncReadExt, AsyncWriteExt}; @@ -16,8 +17,6 @@ use tokio::sync::{Mutex, mpsc}; /// 运行从节点模式 pub async fn run_slave(role: ChannelRole) -> Result<()> { - println!("--- 从节点模式 ({}) ---", role.to_string()); - loop { match handle_connection(role.clone()).await { Err(e) => { @@ -134,6 +133,14 @@ async fn handle_connection(role: ChannelRole) -> Result<()> { // 8. 播放主循环 println!("✅ 主节点已连接,音频串流中..."); + let _ = Command::new("sh") + .arg("-c") + .arg(format!( + "/usr/sbin/tts_play.sh \"主节点已连接,{}\" >/dev/null 2>&1", + role.to_string() + )) + .status(); + let mut pcm_buf = vec![0i16; config.frame_size]; let mut last_seq: Option = None; let mut last_packet_time = now_us();