From a99cab94ccac8bd428ce40ac1144b98dedff4f2e Mon Sep 17 00:00:00 2001 From: Sachymetsu Date: Tue, 14 Jul 2026 08:20:54 +0000 Subject: [PATCH] Time sync test code --- Cargo.lock | 26 ++++++++++++++++++++++---- Cargo.toml | 1 + .cargo/config.toml | 2 ++ src/main.rs | 36 +++++++++++++++++++++--------------- 4 file(s) changed, 46 insertion(s)(+), 19 deletion(s)(-) diff --git a/Cargo.lock b/Cargo.lock --- a/Cargo.lock +++ b/Cargo.lock @@ -459,27 +459,44 @@ [[package]] name = "jiff" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634" +checksum = "961d16382652bfdd8c6f68b223b26a8c93e0d475c672f414411db31c6c5c900e" dependencies = [ "defmt", "jiff-static", + "jiff-tzdb-platform", "log", "portable-atomic", "portable-atomic-util", "serde_core", + "windows-link", ] [[package]] name = "jiff-static" -version = "0.2.31" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2" +checksum = "d0879bd39df99c4c5e2c6615ccc026391a423dde10532c573e6086eb94a802cc" dependencies = [ "proc-macro2", "quote", "syn", +] + +[[package]] +name = "jiff-tzdb" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" + +[[package]] +name = "jiff-tzdb-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "875a5a69ac2bab1a891711cf5eccbec1ce0341ea805560dcd90b7a2e925132e8" +dependencies = [ + "jiff-tzdb", ] [[package]] @@ -958,6 +975,7 @@ "bluer", "env_logger", "futures-lite", + "jiff", "log", "tokio", "winnow", diff --git a/Cargo.toml b/Cargo.toml --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,4 @@ bluer = { version = "0.17.4", features = ["full"] } winnow = "1" futures-lite = "2.6.1" +jiff = "0.2.32" diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,2 @@ +[env] +RUST_LOG="info" diff --git a/src/main.rs b/src/main.rs --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ -use bluer::{ - AddressType, - l2cap::{SocketAddr, Stream}, -}; +use std::time::Duration; + +use bluer::l2cap::{SocketAddr, Stream}; +use jiff::Timestamp; use tokio::io::{AsyncReadExt, AsyncWriteExt}; mod scan; @@ -12,8 +12,10 @@ async fn main() -> Result<(), std::io::Error> { env_logger::init(); + log::info!("Starting session"); let session = bluer::Session::new().await?; + log::info!("Get adapter"); let adapter = session.default_adapter().await?; let filter = bluer::DiscoveryFilter { @@ -21,22 +23,26 @@ ..Default::default() }; + log::info!("Setting discovery filter"); adapter.set_discovery_filter(filter).await?; - log::info!( - "Using discovery filter:\n{:#?}\n\n", - adapter.discovery_filter().await - ); if let Some(device) = scan::scan_for_water(&adapter).await? { - let target_sa = SocketAddr::new(device.address(), AddressType::LePublic, SPSM_L2CAP_WATER); + let addr_type = device.address_type().await?; + let target_sa = SocketAddr::new(device.address(), addr_type, SPSM_L2CAP_WATER); let mut stream = Stream::connect(target_sa).await?; - stream.write(b"JOHN MADDEN").await?; - let mut buf = [0; 251]; - if let Ok(received) = stream.read(&mut buf).await - && &buf[..received] == b"FOOTBALL" - { - log::info!("SUCCESSFUL ACK with {}", device.address()); + let mut buf = vec![0; 251]; + + if let Ok(_) = stream.read(&mut buf).await { + buf.clear(); + let now1 = Timestamp::now().as_millisecond().to_le_bytes(); + buf.extend_from_slice(&now1); + tokio::time::sleep(Duration::from_millis(1)).await; + let now2 = Timestamp::now().as_millisecond().to_le_bytes(); + buf.extend_from_slice(&now2); + stream.write(&buf[..]).await.ok(); + + log::info!("SUCCESSFUL SYNC with {}", device.address()); } } Ok(()) -- tangled.sh