INNER CODE UNIT · Rust
main_loop
qaul/qaul.net · rust/ble_module/src/lib.rs:40
async fn main_loop(mut sys_rpc_callback: Box<dyn FnMut(Vec<u8>) + Send>, ble_rpc_receiver: BleRpc) {
let ble_service = IdleBleService::new().await.unwrap_or_else(|err| {
error!("{:#?}", err);
std::process::exit(1);
});
let (tx, mut rx) = tokio::sync::mpsc::unbounded_channel::<Vec<u8>>();
tokio::task::spawn_local(async move {
while let Some(result) = rx.recv().await {
sys_rpc_callback(result)
}
});
listen_for_sys_msgs(ble_rpc_receiver, ble_service, BleResultSender::new(tx))
.await
.unwrap_or_else(|err| {
error!("{:#?}", err);