diff --git a/examples/gatt_server.rs b/examples/gatt_server.rs index 1a388915ca9..50a572794ab 100644 --- a/examples/gatt_server.rs +++ b/examples/gatt_server.rs @@ -1,8 +1,12 @@ -use std::sync::{Arc, RwLock}; - -use esp_idf_svc::ble::{ - gatt_server::{Characteristic, Profile, Service, GLOBAL_GATT_SERVER}, - utilities::{AttributePermissions, BleUuid, CharacteristicProperties}, +use std::sync::{Arc, Mutex, RwLock}; + +use esp_idf_svc::{ + ble::{ + self, + gatt_server::{Characteristic, Profile, Service, GLOBAL_GATT_SERVER}, + utilities::{AttributePermissions, BleUuid, CharacteristicProperties}, + }, + nvs::{EspDefaultNvs, EspDefaultNvsPartition}, }; use esp_idf_sys::{esp_get_free_heap_size, esp_get_free_internal_heap_size}; @@ -99,14 +103,15 @@ fn main() { .service(&service) .build(); - GLOBAL_GATT_SERVER - .lock() - .unwrap() - .profile(profile) - .device_name("ESP32-GATT-Server") - .appearance(ble::utilities::Appearance::WristWornPulseOximeter) - .advertise_service(&service) - .start(); + match &mut *GLOBAL_GATT_SERVER.lock() { + Some(gatt_server) => gatt_server + .profile(profile) + .device_name("ESP32-GATT-Server") + .appearance(ble::utilities::Appearance::WristWornPulseOximeter) + .advertise_service(&service) + .start(), + None => panic!("GATT server not initialized"), + }; std::thread::spawn(move || { let mut counter = 0; diff --git a/src/ble/gatt_server/characteristic.rs b/src/ble/gatt_server/characteristic.rs index e588c652501..f048ed55ccf 100644 --- a/src/ble/gatt_server/characteristic.rs +++ b/src/ble/gatt_server/characteristic.rs @@ -1,18 +1,19 @@ -use crate::{ - ble::gatt_server::descriptor::Descriptor, - ble::utilities::{AttributeControl, AttributePermissions, BleUuid, CharacteristicProperties}, - nvs::EspDefaultNvs, -}; +use core::fmt::Formatter; + +use std::sync::{Arc, Mutex, RwLock}; + +use ::log::{debug, warn}; use esp_idf_sys::{ esp_attr_control_t, esp_attr_value_t, esp_ble_gatts_add_char, esp_ble_gatts_cb_param_t_gatts_read_evt_param, esp_ble_gatts_cb_param_t_gatts_write_evt_param, esp_ble_gatts_set_attr_value, esp_nofail, }; -use log::{debug, warn}; -use std::{ - fmt::Formatter, - sync::{Arc, Mutex, RwLock}, + +use crate::{ + ble::gatt_server::descriptor::Descriptor, + ble::utilities::{AttributeControl, AttributePermissions, BleUuid, CharacteristicProperties}, + nvs::EspDefaultNvs, }; type WriteCallback = dyn Fn(Vec, esp_ble_gatts_cb_param_t_gatts_write_evt_param) + Send + Sync; diff --git a/src/ble/gatt_server/custom_attributes.rs b/src/ble/gatt_server/custom_attributes.rs index 11feb036261..61aa54432fe 100644 --- a/src/ble/gatt_server/custom_attributes.rs +++ b/src/ble/gatt_server/custom_attributes.rs @@ -1,13 +1,13 @@ use std::sync::{Arc, Mutex}; +use ::log::debug; + use crate::{ ble::gatt_server::Descriptor, ble::utilities::{AttributePermissions, BleUuid}, nvs::EspDefaultNvs, }; -use log::debug; - impl Descriptor { /// Creates a new descriptor with the `0x2901` UUID, and the description string as its value. /// diff --git a/src/ble/gatt_server/descriptor.rs b/src/ble/gatt_server/descriptor.rs index 69cc10063ab..f9ca2fc8b3d 100644 --- a/src/ble/gatt_server/descriptor.rs +++ b/src/ble/gatt_server/descriptor.rs @@ -1,17 +1,19 @@ +use alloc::fmt; + use std::{ collections::HashMap, sync::{Arc, RwLock}, }; -use crate::ble::utilities::{AttributeControl, AttributePermissions, BleUuid}; +use ::log::{debug, info, warn}; -use alloc::fmt; use esp_idf_sys::{ esp_attr_control_t, esp_attr_value_t, esp_ble_gatts_add_char_descr, esp_ble_gatts_cb_param_t_gatts_read_evt_param, esp_ble_gatts_cb_param_t_gatts_write_evt_param, esp_ble_gatts_set_attr_value, esp_nofail, }; -use log::{debug, info, warn}; + +use crate::ble::utilities::{AttributeControl, AttributePermissions, BleUuid}; type DescriptorWriteCallback = dyn Fn(Vec, esp_ble_gatts_cb_param_t_gatts_write_evt_param) + Send + Sync; diff --git a/src/ble/gatt_server/gap_event_handler.rs b/src/ble/gatt_server/gap_event_handler.rs index 4d62822b549..9e3ef9b97c8 100644 --- a/src/ble/gatt_server/gap_event_handler.rs +++ b/src/ble/gatt_server/gap_event_handler.rs @@ -1,3 +1,5 @@ +use ::log::{debug, info, warn}; + use esp_idf_sys::{ esp_ble_gap_cb_param_t, esp_ble_gap_start_advertising, esp_bt_status_t_ESP_BT_STATUS_SUCCESS, esp_gap_ble_cb_event_t, esp_gap_ble_cb_event_t_ESP_GAP_BLE_ADV_DATA_SET_COMPLETE_EVT, @@ -7,9 +9,7 @@ use esp_idf_sys::{ esp_gap_ble_cb_event_t_ESP_GAP_BLE_UPDATE_CONN_PARAMS_EVT, esp_nofail, }; -use log::{debug, info, warn}; - -use super::GattServer; +use crate::ble::gatt_server::GattServer; impl GattServer { pub(crate) extern "C" fn gap_event_handler( diff --git a/src/ble/gatt_server/gatts_event_handler/mod.rs b/src/ble/gatt_server/gatts_event_handler/mod.rs index 331bf302ece..12b5fafbaca 100644 --- a/src/ble/gatt_server/gatts_event_handler/mod.rs +++ b/src/ble/gatt_server/gatts_event_handler/mod.rs @@ -1,11 +1,11 @@ -use crate::ble::gatt_server::{GattServer, Profile}; +mod profile; +mod server; + +use ::log::{debug, warn}; -#[allow(clippy::wildcard_imports)] use esp_idf_sys::*; -use log::{debug, warn}; -mod profile; -mod server; +use crate::ble::gatt_server::{GattServer, Profile}; impl GattServer { /// The main GATT server event loop. diff --git a/src/ble/gatt_server/gatts_event_handler/profile/add_char.rs b/src/ble/gatt_server/gatts_event_handler/profile/add_char.rs index d1d438a7552..fb9efb7e1ae 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/add_char.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/add_char.rs @@ -1,7 +1,9 @@ +use ::log::{info, warn}; + +use esp_idf_sys::*; + use crate::ble::gatt_server::Profile; use crate::ble::utilities::BleUuid; -use esp_idf_sys::*; -use log::{info, warn}; impl Profile { pub(crate) fn on_char_add(&mut self, param: esp_ble_gatts_cb_param_t_gatts_add_char_evt_param) { diff --git a/src/ble/gatt_server/gatts_event_handler/profile/add_char_descr.rs b/src/ble/gatt_server/gatts_event_handler/profile/add_char_descr.rs index f42eb506c58..08dc2395db8 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/add_char_descr.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/add_char_descr.rs @@ -1,7 +1,9 @@ +use ::log::{info, warn}; + +use esp_idf_sys::*; + use crate::ble::gatt_server::Profile; use crate::ble::utilities::BleUuid; -use esp_idf_sys::*; -use log::{info, warn}; impl Profile { pub(crate) fn on_char_add_descr( diff --git a/src/ble/gatt_server/gatts_event_handler/profile/conf.rs b/src/ble/gatt_server/gatts_event_handler/profile/conf.rs deleted file mode 100644 index 8b137891791..00000000000 --- a/src/ble/gatt_server/gatts_event_handler/profile/conf.rs +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/ble/gatt_server/gatts_event_handler/profile/create.rs b/src/ble/gatt_server/gatts_event_handler/profile/create.rs index 8e3394d85b0..643abcd8b35 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/create.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/create.rs @@ -1,7 +1,9 @@ +use ::log::{info, warn}; + +use esp_idf_sys::*; + use crate::ble::gatt_server::Profile; use crate::ble::utilities::BleUuid; -use esp_idf_sys::*; -use log::{info, warn}; impl Profile { pub(crate) fn on_create(&mut self, param: esp_ble_gatts_cb_param_t_gatts_create_evt_param) { diff --git a/src/ble/gatt_server/gatts_event_handler/profile/mod.rs b/src/ble/gatt_server/gatts_event_handler/profile/mod.rs index 21d82bfb9cb..27fdb209fa4 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/mod.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/mod.rs @@ -1,6 +1,5 @@ mod add_char; mod add_char_descr; -mod conf; mod create; mod read; mod reg; diff --git a/src/ble/gatt_server/gatts_event_handler/profile/read.rs b/src/ble/gatt_server/gatts_event_handler/profile/read.rs index 07ab4de5762..55a9ca54809 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/read.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/read.rs @@ -1,7 +1,9 @@ +use ::log::debug; + +use esp_idf_sys::*; + use crate::ble::gatt_server::Profile; use crate::ble::utilities::AttributeControl; -use esp_idf_sys::*; -use log::debug; impl Profile { pub(crate) fn on_read( diff --git a/src/ble/gatt_server/gatts_event_handler/profile/reg.rs b/src/ble/gatt_server/gatts_event_handler/profile/reg.rs index d4cf8eb6ed1..2faef5f9c65 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/reg.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/reg.rs @@ -1,6 +1,8 @@ -use crate::ble::gatt_server::Profile; +use ::log::{info, warn}; + use esp_idf_sys::*; -use log::{info, warn}; + +use crate::ble::gatt_server::Profile; impl Profile { pub(crate) fn on_reg(&mut self, param: esp_ble_gatts_cb_param_t_gatts_reg_evt_param) { diff --git a/src/ble/gatt_server/gatts_event_handler/profile/start.rs b/src/ble/gatt_server/gatts_event_handler/profile/start.rs index c1374ed2204..d2caa79806d 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/start.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/start.rs @@ -1,6 +1,8 @@ -use crate::ble::gatt_server::Profile; +use ::log::{debug, warn}; + use esp_idf_sys::*; -use log::{debug, warn}; + +use crate::ble::gatt_server::Profile; impl Profile { pub(crate) fn on_start(&mut self, param: esp_ble_gatts_cb_param_t_gatts_start_evt_param) { diff --git a/src/ble/gatt_server/gatts_event_handler/profile/write.rs b/src/ble/gatt_server/gatts_event_handler/profile/write.rs index 7d85193ff5f..eb8031fee88 100644 --- a/src/ble/gatt_server/gatts_event_handler/profile/write.rs +++ b/src/ble/gatt_server/gatts_event_handler/profile/write.rs @@ -1,7 +1,9 @@ +use ::log::debug; + +use esp_idf_sys::*; + use crate::ble::gatt_server::Profile; use crate::ble::utilities::AttributeControl; -use esp_idf_sys::*; -use log::debug; impl Profile { #[allow(clippy::too_many_lines)] diff --git a/src/ble/gatt_server/gatts_event_handler/server/connect.rs b/src/ble/gatt_server/gatts_event_handler/server/connect.rs index a4951540fda..a1445bcd791 100644 --- a/src/ble/gatt_server/gatts_event_handler/server/connect.rs +++ b/src/ble/gatt_server/gatts_event_handler/server/connect.rs @@ -1,6 +1,7 @@ +use ::log::info; + use crate::ble::gatt_server::GattServer; use crate::ble::utilities::Connection; -use log::info; impl GattServer { pub(crate) fn on_connect( diff --git a/src/ble/gatt_server/gatts_event_handler/server/disconnect.rs b/src/ble/gatt_server/gatts_event_handler/server/disconnect.rs index 5a4033bf52f..c641f25bba4 100644 --- a/src/ble/gatt_server/gatts_event_handler/server/disconnect.rs +++ b/src/ble/gatt_server/gatts_event_handler/server/disconnect.rs @@ -1,5 +1,6 @@ +use ::log::info; + use crate::ble::gatt_server::GattServer; -use log::info; impl GattServer { pub(crate) fn on_disconnect( diff --git a/src/ble/gatt_server/gatts_event_handler/server/mtu.rs b/src/ble/gatt_server/gatts_event_handler/server/mtu.rs index bdbcb0ce877..9515f7cc4e4 100644 --- a/src/ble/gatt_server/gatts_event_handler/server/mtu.rs +++ b/src/ble/gatt_server/gatts_event_handler/server/mtu.rs @@ -1,5 +1,6 @@ +use ::log::debug; + use crate::ble::gatt_server::GattServer; -use log::debug; impl GattServer { #[allow(clippy::unused_self)] diff --git a/src/ble/gatt_server/gatts_event_handler/server/reg.rs b/src/ble/gatt_server/gatts_event_handler/server/reg.rs index ac4fa5c4190..36a8dcc3895 100644 --- a/src/ble/gatt_server/gatts_event_handler/server/reg.rs +++ b/src/ble/gatt_server/gatts_event_handler/server/reg.rs @@ -1,7 +1,8 @@ -use crate::ble::gatt_server::GattServer; -#[allow(clippy::wildcard_imports)] +use ::log::debug; + use esp_idf_sys::*; -use log::debug; + +use crate::ble::gatt_server::GattServer; impl GattServer { pub(crate) fn on_reg( diff --git a/src/ble/gatt_server/gatts_event_handler/server/response.rs b/src/ble/gatt_server/gatts_event_handler/server/response.rs index b72919d2964..b414b50f277 100644 --- a/src/ble/gatt_server/gatts_event_handler/server/response.rs +++ b/src/ble/gatt_server/gatts_event_handler/server/response.rs @@ -1,5 +1,6 @@ +use ::log::debug; + use crate::ble::gatt_server::GattServer; -use log::debug; impl GattServer { #[allow(clippy::unused_self)] diff --git a/src/ble/gatt_server/gatts_event_handler/server/set_attr_val.rs b/src/ble/gatt_server/gatts_event_handler/server/set_attr_val.rs index 7272b555390..e6f8f6c7220 100644 --- a/src/ble/gatt_server/gatts_event_handler/server/set_attr_val.rs +++ b/src/ble/gatt_server/gatts_event_handler/server/set_attr_val.rs @@ -1,7 +1,9 @@ +use ::log::{debug, warn}; + +use esp_idf_sys::*; + use crate::ble::gatt_server::GattServer; use crate::ble::utilities::BleUuid; -use esp_idf_sys::*; -use log::{debug, warn}; impl GattServer { #[allow(clippy::too_many_lines)] diff --git a/src/ble/gatt_server/mod.rs b/src/ble/gatt_server/mod.rs index 9ab8af834e3..2ded2cbb5e6 100644 --- a/src/ble/gatt_server/mod.rs +++ b/src/ble/gatt_server/mod.rs @@ -1,12 +1,24 @@ //! The GATT server. - #![allow(clippy::cast_possible_truncation)] +// Structs. +mod characteristic; +mod descriptor; +mod profile; +mod service; + +// Custom stuff. +mod custom_attributes; + +// Event handler. +mod gap_event_handler; +mod gatts_event_handler; use alloc::{boxed::Box, sync::Arc}; use std::{collections::HashSet, sync::RwLock}; +use ::log::{info, warn}; + use esp_idf_sys::*; -use log::{info, warn}; use crate::{ ble::utilities::{Appearance, Connection}, @@ -18,19 +30,6 @@ pub use descriptor::Descriptor; pub use profile::Profile; pub use service::Service; -// Structs. -mod characteristic; -mod descriptor; -mod profile; -mod service; - -// Custom stuff. -mod custom_attributes; - -// Event handler. -mod gap_event_handler; -mod gatts_event_handler; - type Singleton = Mutex>>; /// The GATT server singleton. diff --git a/src/ble/gatt_server/profile.rs b/src/ble/gatt_server/profile.rs index 1112ce1a608..4b7041a078f 100644 --- a/src/ble/gatt_server/profile.rs +++ b/src/ble/gatt_server/profile.rs @@ -1,8 +1,10 @@ use std::sync::{Arc, RwLock}; -use crate::ble::gatt_server::service::Service; +use ::log::debug; + use esp_idf_sys::*; -use log::debug; + +use crate::ble::gatt_server::service::Service; /// Represents a GATT profile. /// diff --git a/src/ble/gatt_server/service.rs b/src/ble/gatt_server/service.rs index 6e04e9187c4..fd27488795e 100644 --- a/src/ble/gatt_server/service.rs +++ b/src/ble/gatt_server/service.rs @@ -1,13 +1,14 @@ +use core::fmt::Formatter; +use std::sync::{Arc, RwLock}; + +use ::log::debug; + +use esp_idf_sys::*; + use crate::{ ble::gatt_server::characteristic::Characteristic, ble::gatt_server::descriptor::Descriptor, ble::utilities::BleUuid, }; -use esp_idf_sys::*; -use log::debug; -use std::{ - fmt::Formatter, - sync::{Arc, RwLock}, -}; /// Represents a GATT service. #[derive(Debug, Clone)] diff --git a/src/ble/utilities/attribute_control.rs b/src/ble/utilities/attribute_control.rs index db694ab584d..3c6c5890c8d 100644 --- a/src/ble/utilities/attribute_control.rs +++ b/src/ble/utilities/attribute_control.rs @@ -1,6 +1,7 @@ -use esp_idf_sys::*; use std::sync::Arc; +use esp_idf_sys::*; + #[derive(Clone)] pub(crate) enum AttributeControl { ResponseByApp( diff --git a/src/ble/utilities/characteristic_properties.rs b/src/ble/utilities/characteristic_properties.rs index 3add20f45bf..254d906ab0c 100644 --- a/src/ble/utilities/characteristic_properties.rs +++ b/src/ble/utilities/characteristic_properties.rs @@ -1,5 +1,6 @@ +use ::log::warn; + use esp_idf_sys::*; -use log::warn; /// Represents the properties of a [`Characteristic`]. ///