feat: 前端显示 mdns 搜索到的板子连接信息。
This commit is contained in:
@ -11,7 +11,7 @@ mod screenshot_manager;
|
||||
use ambient_light::{Border, ColorCalibration, LedStripConfig, LedStripConfigGroup};
|
||||
use display_info::DisplayInfo;
|
||||
use paris::{error, info, warn};
|
||||
use rpc::{MqttRpc, UdpRpc};
|
||||
use rpc::{BoardInfo, MqttRpc, UdpRpc};
|
||||
use screenshot::Screenshot;
|
||||
use screenshot_manager::ScreenshotManager;
|
||||
use serde::{Deserialize, Serialize};
|
||||
@ -188,6 +188,21 @@ async fn read_config() -> ambient_light::LedStripConfigGroup {
|
||||
config_manager.configs().await
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
async fn get_boards() -> Result<Vec<BoardInfo>, String> {
|
||||
let udp_rpc = UdpRpc::global().await;
|
||||
|
||||
if let Err(e) = udp_rpc {
|
||||
return Err(format!("can not ping: {}", e));
|
||||
}
|
||||
|
||||
let udp_rpc = udp_rpc.as_ref().unwrap();
|
||||
|
||||
let boards = udp_rpc.get_boards().await;
|
||||
let boards = boards.into_iter().collect::<Vec<_>>();
|
||||
Ok(boards)
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
env_logger::init();
|
||||
@ -200,8 +215,6 @@ async fn main() {
|
||||
|
||||
let _mqtt = MqttRpc::global().await;
|
||||
|
||||
let _udp = UdpRpc::global().await;
|
||||
|
||||
tauri::Builder::default()
|
||||
.invoke_handler(tauri::generate_handler![
|
||||
greet,
|
||||
@ -216,6 +229,7 @@ async fn main() {
|
||||
reverse_led_strip_part,
|
||||
set_color_calibration,
|
||||
read_config,
|
||||
get_boards,
|
||||
])
|
||||
.register_uri_scheme_protocol("ambient-light", move |_app, request| {
|
||||
let response = ResponseBuilder::new().header("Access-Control-Allow-Origin", "*");
|
||||
@ -400,6 +414,33 @@ async fn main() {
|
||||
}
|
||||
});
|
||||
|
||||
let app_handle = app.handle().clone();
|
||||
tokio::spawn(async move {
|
||||
loop {
|
||||
match UdpRpc::global().await {
|
||||
Ok(udp_rpc) => {
|
||||
let mut receiver = udp_rpc.clone_boards_change_receiver().await;
|
||||
loop {
|
||||
if let Err(err) = receiver.changed().await {
|
||||
error!("boards change receiver changed error: {}", err);
|
||||
return;
|
||||
}
|
||||
|
||||
let boards = receiver.borrow().clone();
|
||||
|
||||
let boards = boards.into_iter().collect::<Vec<_>>();
|
||||
|
||||
app_handle.emit_all("boards_changed", boards).unwrap();
|
||||
}
|
||||
}
|
||||
Err(err) => {
|
||||
error!("udp rpc error: {}", err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.run(tauri::generate_context!())
|
||||
|
Reference in New Issue
Block a user