From 9a820356ff0e2f45e3fe9e17fe1f4c59891f391e Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Tue, 29 Sep 2026 15:25:16 +0200 Subject: [PATCH] ble: Set short name in advertisement --- src/ble.rs | 13 +++++++++---- src/main.rs | 5 +++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/ble.rs b/src/ble.rs index a460d4e..ba2ce99 100644 --- a/src/ble.rs +++ b/src/ble.rs @@ -110,6 +110,7 @@ pub async fn run( CONTROLLER_SLOTS, >, name: alloc::string::String, + short_name: alloc::string::String, ) { let mut resources: HostResources = HostResources::new(); @@ -120,6 +121,7 @@ pub async fn run( .. } = stack.build(); + info!("BLE name: {name} (short: {short_name})"); info!( "Starting advertising and GATT service for {}", crate::util::get_rx_feature_list().join(",") @@ -132,7 +134,7 @@ pub async fn run( let _ = embassy_futures::join::join(ble_task(runner), async { loop { - match advertise(&mut peripheral, &server).await { + match advertise(&mut peripheral, &server, &short_name).await { Ok(conn) => { info!("BLE: New client connected"); @@ -176,16 +178,19 @@ pub fn update(payload: BleSendable) { async fn advertise<'values, 'server, C: Controller>( peripheral: &mut Peripheral<'values, C, DefaultPacketPool>, server: &'server Server<'values>, + // name in advertisement, max. 8 characters + short_name: &'values str, ) -> Result, BleHostError> { - let mut advertiser_data = [0; 35]; + let mut advertiser_data = [0; 31]; // 37 bytes payload - 6 byte address let service_uuid = Uuid::from(0xc0b7_0000_d4f4_4000_ada8_f99a_02ee_315c_u128) .as_raw() .try_into() .unwrap(); let len = AdStructure::encode_slice( &[ - AdStructure::Flags(LE_GENERAL_DISCOVERABLE | BR_EDR_NOT_SUPPORTED), - AdStructure::ServiceUuids128(&[service_uuid]), + AdStructure::Flags(LE_GENERAL_DISCOVERABLE | BR_EDR_NOT_SUPPORTED), // 2+ 1 byte + AdStructure::ServiceUuids128(&[service_uuid]), // 2+16 byte = 21 + AdStructure::ShortenedLocalName(short_name.as_bytes()), // 2+ 8 byte = 31 ], &mut advertiser_data[..], )?; diff --git a/src/main.rs b/src/main.rs index 5c23fe6..57a8963 100644 --- a/src/main.rs +++ b/src/main.rs @@ -222,12 +222,13 @@ async fn main(spawner: Spawner) -> ! { let controller = ble::make_controller(peripherals.BT); let serial = &mac.as_bytes()[3..6]; let name = alloc::format!( - "ESP32 C-ITS {:02x}{:02x}{:02x}", + "C-ITS ESP {:02x}:{:02x}:{:02x}", serial[0], serial[1], serial[2] ); - spawner.spawn(ble::run(controller, name).expect("Failed to spawn BLE task")); + let short_name = alloc::format!("V2X {:02x}{:02x}", serial[1], serial[2]); // max 8 chars! + spawner.spawn(ble::run(controller, name, short_name).expect("Failed to spawn BLE task")); } // Setup GNSS: