Loading system/gd/rust/topshim/gatt/gatt_ble_scanner_shim.cc +67 −0 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,45 @@ std::vector<ApcfCommand> ConvertApcfVec(const ::rust::Vec<RustApcfCommand>& rust return converted; return converted; } } std::vector<uint8_t> ConvertRustByteArray(const ::rust::Vec<uint8_t>& bytes) { std::vector<uint8_t> converted; std::copy(bytes.begin(), bytes.end(), std::back_inserter(converted)); return converted; } MsftAdvMonitorPattern ConvertAdvMonitorPattern(const RustMsftAdvMonitorPattern& pattern) { MsftAdvMonitorPattern converted = { .ad_type = pattern.ad_type, .start_byte = pattern.start_byte, .pattern = ConvertRustByteArray(pattern.pattern), }; return converted; } std::vector<MsftAdvMonitorPattern> ConvertAdvMonitorPatterns(const ::rust::Vec<RustMsftAdvMonitorPattern>& patterns) { std::vector<MsftAdvMonitorPattern> converted; for (const auto& pattern : patterns) { converted.push_back(ConvertAdvMonitorPattern(pattern)); } return converted; } MsftAdvMonitor ConvertAdvMonitor(const RustMsftAdvMonitor& monitor) { MsftAdvMonitor converted = { .rssi_threshold_high = monitor.rssi_high_threshold, .rssi_threshold_low = monitor.rssi_low_threshold, .rssi_threshold_low_time_interval = monitor.rssi_low_timeout, .rssi_sampling_period = monitor.rssi_sampling_period, .patterns = ConvertAdvMonitorPatterns(monitor.patterns), }; return converted; } ::btgatt_filt_param_setup_t ConvertRustFilterParam(const RustGattFilterParam& param) { ::btgatt_filt_param_setup_t ConvertRustFilterParam(const RustGattFilterParam& param) { ::btgatt_filt_param_setup_t converted = { ::btgatt_filt_param_setup_t converted = { .feat_seln = param.feat_seln, .feat_seln = param.feat_seln, Loading Loading @@ -206,6 +245,22 @@ void BleScannerIntf::ScanFilterEnable(bool enable) { scanner_intf_->ScanFilterEnable(enable, base::Bind(&BleScannerIntf::OnEnableCallback, base::Unretained(this))); scanner_intf_->ScanFilterEnable(enable, base::Bind(&BleScannerIntf::OnEnableCallback, base::Unretained(this))); } } void BleScannerIntf::MsftAdvMonitorAdd(RustMsftAdvMonitor monitor) { scanner_intf_->MsftAdvMonitorAdd( internal::ConvertAdvMonitor(monitor), base::Bind(&BleScannerIntf::OnMsftAdvMonitorAddCallback, base::Unretained(this))); } void BleScannerIntf::MsftAdvMonitorRemove(uint8_t monitor_handle) { scanner_intf_->MsftAdvMonitorRemove( monitor_handle, base::Bind(&BleScannerIntf::OnMsftAdvMonitorRemoveCallback, base::Unretained(this))); } void BleScannerIntf::MsftAdvMonitorEnable(bool enable) { scanner_intf_->MsftAdvMonitorEnable( enable, base::Bind(&BleScannerIntf::OnMsftAdvMonitorEnableCallback, base::Unretained(this))); } void BleScannerIntf::SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window) { void BleScannerIntf::SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window) { scanner_intf_->SetScanParameters( scanner_intf_->SetScanParameters( scanner_id, scanner_id, Loading Loading @@ -292,6 +347,18 @@ void BleScannerIntf::OnFilterConfigCallback( rusty::gdscan_filter_config_callback(filter_index, filt_type, avbl_space, action, btm_status); rusty::gdscan_filter_config_callback(filter_index, filt_type, avbl_space, action, btm_status); } } void BleScannerIntf::OnMsftAdvMonitorAddCallback(uint8_t monitor_handle, uint8_t status) { rusty::gdscan_msft_adv_monitor_add_callback(monitor_handle, status); } void BleScannerIntf::OnMsftAdvMonitorRemoveCallback(uint8_t status) { rusty::gdscan_msft_adv_monitor_remove_callback(status); } void BleScannerIntf::OnMsftAdvMonitorEnableCallback(uint8_t status) { rusty::gdscan_msft_adv_monitor_enable_callback(status); } void BleScannerIntf::OnPeriodicSyncStarted( void BleScannerIntf::OnPeriodicSyncStarted( int, int, uint8_t status, uint8_t status, Loading system/gd/rust/topshim/gatt/gatt_ble_scanner_shim.h +13 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,7 @@ namespace topshim { namespace rust { namespace rust { struct RustApcfCommand; struct RustApcfCommand; struct RustMsftAdvMonitor; struct RustGattFilterParam; struct RustGattFilterParam; struct RustUuid; struct RustUuid; Loading Loading @@ -101,6 +102,15 @@ class BleScannerIntf : public ScanningCallbacks { // Enable/disable scan filter. Gets responses via |OnEnableCallback|. // Enable/disable scan filter. Gets responses via |OnEnableCallback|. void ScanFilterEnable(bool enable); void ScanFilterEnable(bool enable); // Adds an MSFT filter. Gets responses via |OnMsftAdvMonitorAddCallback|. void MsftAdvMonitorAdd(RustMsftAdvMonitor monitor); // Removes a previously added MSFT scan filter. void MsftAdvMonitorRemove(uint8_t monitor_handle); // Enables or disables MSFT advertisement monitor. void MsftAdvMonitorEnable(bool enable); // Sets the LE scan interval and window in units of N * 0.625 msec. The result // Sets the LE scan interval and window in units of N * 0.625 msec. The result // of this action is returned via |OnStatusCallback|. // of this action is returned via |OnStatusCallback|. void SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window); void SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window); Loading Loading @@ -161,6 +171,9 @@ class BleScannerIntf : public ScanningCallbacks { void OnFilterParamSetupCallback(uint8_t scanner_id, uint8_t avbl_space, uint8_t action_type, uint8_t btm_status); void OnFilterParamSetupCallback(uint8_t scanner_id, uint8_t avbl_space, uint8_t action_type, uint8_t btm_status); void OnFilterConfigCallback( void OnFilterConfigCallback( uint8_t filt_index, uint8_t filt_type, uint8_t avbl_space, uint8_t action, uint8_t btm_status); uint8_t filt_index, uint8_t filt_type, uint8_t avbl_space, uint8_t action, uint8_t btm_status); void OnMsftAdvMonitorAddCallback(uint8_t monitor_handle, uint8_t status); void OnMsftAdvMonitorRemoveCallback(uint8_t status); void OnMsftAdvMonitorEnableCallback(uint8_t status); BleScannerInterface* scanner_intf_; BleScannerInterface* scanner_intf_; }; }; Loading system/gd/rust/topshim/src/profiles/gatt.rs +55 −0 Original line number Original line Diff line number Diff line Loading @@ -83,6 +83,24 @@ pub mod ffi { irk: [u8; 16], irk: [u8; 16], } } // Defined in C++ and needs a translation in shim. #[derive(Debug, Clone)] pub struct RustMsftAdvMonitorPattern { pub ad_type: u8, pub start_byte: u8, pub pattern: Vec<u8>, } // Defined in C++ and needs a translation in shim. #[derive(Debug, Clone)] pub struct RustMsftAdvMonitor { pub rssi_high_threshold: u8, pub rssi_low_threshold: u8, pub rssi_low_timeout: u8, pub rssi_sampling_period: u8, pub patterns: Vec<RustMsftAdvMonitorPattern>, } #[derive(Debug, Clone)] #[derive(Debug, Clone)] pub struct RustAdvertiseParameters { pub struct RustAdvertiseParameters { advertising_event_properties: u16, advertising_event_properties: u16, Loading Loading @@ -144,6 +162,9 @@ pub mod ffi { ); ); fn ScanFilterClear(self: Pin<&mut BleScannerIntf>, filter_index: u8); fn ScanFilterClear(self: Pin<&mut BleScannerIntf>, filter_index: u8); fn ScanFilterEnable(self: Pin<&mut BleScannerIntf>, enable: bool); fn ScanFilterEnable(self: Pin<&mut BleScannerIntf>, enable: bool); fn MsftAdvMonitorAdd(self: Pin<&mut BleScannerIntf>, monitor: RustMsftAdvMonitor); fn MsftAdvMonitorRemove(self: Pin<&mut BleScannerIntf>, monitor_handle: u8); fn MsftAdvMonitorEnable(self: Pin<&mut BleScannerIntf>, enable: bool); fn SetScanParameters( fn SetScanParameters( self: Pin<&mut BleScannerIntf>, self: Pin<&mut BleScannerIntf>, scanner_id: u8, scanner_id: u8, Loading Loading @@ -249,6 +270,9 @@ pub mod ffi { action: u8, action: u8, btm_status: u8, btm_status: u8, ); ); unsafe fn gdscan_msft_adv_monitor_add_callback(monitor_handle: u8, status: u8); unsafe fn gdscan_msft_adv_monitor_remove_callback(status: u8); unsafe fn gdscan_msft_adv_monitor_enable_callback(status: u8); unsafe fn gdscan_start_sync_callback( unsafe fn gdscan_start_sync_callback( status: u8, status: u8, sync_handle: u16, sync_handle: u16, Loading Loading @@ -366,6 +390,7 @@ pub mod ffi { pub type AdvertisingTrackInfo = ffi::RustAdvertisingTrackInfo; pub type AdvertisingTrackInfo = ffi::RustAdvertisingTrackInfo; pub type GattFilterParam = ffi::RustGattFilterParam; pub type GattFilterParam = ffi::RustGattFilterParam; pub type ApcfCommand = ffi::RustApcfCommand; pub type ApcfCommand = ffi::RustApcfCommand; pub type MsftAdvMonitor = ffi::RustMsftAdvMonitor; pub type AdvertiseParameters = ffi::RustAdvertiseParameters; pub type AdvertiseParameters = ffi::RustAdvertiseParameters; pub type PeriodicAdvertisingParameters = ffi::RustPeriodicAdvertisingParameters; pub type PeriodicAdvertisingParameters = ffi::RustPeriodicAdvertisingParameters; Loading Loading @@ -900,6 +925,15 @@ pub enum GattScannerInbandCallbacks { /// Params: Filter Index, Filter Type, Available Space, Action, BTM Status /// Params: Filter Index, Filter Type, Available Space, Action, BTM Status FilterConfigCallback(u8, u8, u8, u8, u8), FilterConfigCallback(u8, u8, u8, u8, u8), /// Params: Monitor handle, status MsftAdvMonitorAddCallback(u8, u8), /// Params: status MsftAdvMonitorRemoveCallback(u8), /// Params: status MsftAdvMonitorEnableCallback(u8), /// Params: Status, Sync Handle, Advertising Sid, Address Type, Address, Phy, Interval /// Params: Status, Sync Handle, Advertising Sid, Address Type, Address, Phy, Interval StartSyncCallback(u8, u16, u8, u8, RawAddress, u8, u16), StartSyncCallback(u8, u16, u8, u8, RawAddress, u8, u16), Loading Loading @@ -930,6 +964,15 @@ cb_variant!(GDScannerInbandCb, cb_variant!(GDScannerInbandCb, cb_variant!(GDScannerInbandCb, gdscan_filter_config_callback -> GattScannerInbandCallbacks::FilterConfigCallback, gdscan_filter_config_callback -> GattScannerInbandCallbacks::FilterConfigCallback, u8, u8, u8, u8, u8); u8, u8, u8, u8, u8); cb_variant!(GDScannerInbandCb, gdscan_msft_adv_monitor_add_callback -> GattScannerInbandCallbacks::MsftAdvMonitorAddCallback, u8, u8); cb_variant!(GDScannerInbandCb, gdscan_msft_adv_monitor_remove_callback -> GattScannerInbandCallbacks::MsftAdvMonitorRemoveCallback, u8); cb_variant!(GDScannerInbandCb, gdscan_msft_adv_monitor_enable_callback -> GattScannerInbandCallbacks::MsftAdvMonitorEnableCallback, u8); cb_variant!(GDScannerInbandCb, cb_variant!(GDScannerInbandCb, gdscan_start_sync_callback -> GattScannerInbandCallbacks::StartSyncCallback, gdscan_start_sync_callback -> GattScannerInbandCallbacks::StartSyncCallback, u8, u16, u8, u8, *const RawAddress, u8, u16, { u8, u16, u8, u8, *const RawAddress, u8, u16, { Loading Loading @@ -1421,6 +1464,18 @@ impl BleScanner { mutcxxcall!(self, ScanFilterEnable, false); mutcxxcall!(self, ScanFilterEnable, false); } } pub fn msft_adv_monitor_add(&mut self, monitor: MsftAdvMonitor) { mutcxxcall!(self, MsftAdvMonitorAdd, monitor); } pub fn msft_adv_monitor_remove(&mut self, monitor_handle: u8) { mutcxxcall!(self, MsftAdvMonitorRemove, monitor_handle); } pub fn msft_adv_monitor_enable(&mut self, enable: bool) { mutcxxcall!(self, MsftAdvMonitorEnable, enable); } pub fn set_scan_parameters(&mut self, scanner_id: u8, scan_interval: u16, scan_window: u16) { pub fn set_scan_parameters(&mut self, scanner_id: u8, scan_interval: u16, scan_window: u16) { mutcxxcall!(self, SetScanParameters, scanner_id, scan_interval, scan_window); mutcxxcall!(self, SetScanParameters, scanner_id, scan_interval, scan_window); } } Loading Loading
system/gd/rust/topshim/gatt/gatt_ble_scanner_shim.cc +67 −0 Original line number Original line Diff line number Diff line Loading @@ -75,6 +75,45 @@ std::vector<ApcfCommand> ConvertApcfVec(const ::rust::Vec<RustApcfCommand>& rust return converted; return converted; } } std::vector<uint8_t> ConvertRustByteArray(const ::rust::Vec<uint8_t>& bytes) { std::vector<uint8_t> converted; std::copy(bytes.begin(), bytes.end(), std::back_inserter(converted)); return converted; } MsftAdvMonitorPattern ConvertAdvMonitorPattern(const RustMsftAdvMonitorPattern& pattern) { MsftAdvMonitorPattern converted = { .ad_type = pattern.ad_type, .start_byte = pattern.start_byte, .pattern = ConvertRustByteArray(pattern.pattern), }; return converted; } std::vector<MsftAdvMonitorPattern> ConvertAdvMonitorPatterns(const ::rust::Vec<RustMsftAdvMonitorPattern>& patterns) { std::vector<MsftAdvMonitorPattern> converted; for (const auto& pattern : patterns) { converted.push_back(ConvertAdvMonitorPattern(pattern)); } return converted; } MsftAdvMonitor ConvertAdvMonitor(const RustMsftAdvMonitor& monitor) { MsftAdvMonitor converted = { .rssi_threshold_high = monitor.rssi_high_threshold, .rssi_threshold_low = monitor.rssi_low_threshold, .rssi_threshold_low_time_interval = monitor.rssi_low_timeout, .rssi_sampling_period = monitor.rssi_sampling_period, .patterns = ConvertAdvMonitorPatterns(monitor.patterns), }; return converted; } ::btgatt_filt_param_setup_t ConvertRustFilterParam(const RustGattFilterParam& param) { ::btgatt_filt_param_setup_t ConvertRustFilterParam(const RustGattFilterParam& param) { ::btgatt_filt_param_setup_t converted = { ::btgatt_filt_param_setup_t converted = { .feat_seln = param.feat_seln, .feat_seln = param.feat_seln, Loading Loading @@ -206,6 +245,22 @@ void BleScannerIntf::ScanFilterEnable(bool enable) { scanner_intf_->ScanFilterEnable(enable, base::Bind(&BleScannerIntf::OnEnableCallback, base::Unretained(this))); scanner_intf_->ScanFilterEnable(enable, base::Bind(&BleScannerIntf::OnEnableCallback, base::Unretained(this))); } } void BleScannerIntf::MsftAdvMonitorAdd(RustMsftAdvMonitor monitor) { scanner_intf_->MsftAdvMonitorAdd( internal::ConvertAdvMonitor(monitor), base::Bind(&BleScannerIntf::OnMsftAdvMonitorAddCallback, base::Unretained(this))); } void BleScannerIntf::MsftAdvMonitorRemove(uint8_t monitor_handle) { scanner_intf_->MsftAdvMonitorRemove( monitor_handle, base::Bind(&BleScannerIntf::OnMsftAdvMonitorRemoveCallback, base::Unretained(this))); } void BleScannerIntf::MsftAdvMonitorEnable(bool enable) { scanner_intf_->MsftAdvMonitorEnable( enable, base::Bind(&BleScannerIntf::OnMsftAdvMonitorEnableCallback, base::Unretained(this))); } void BleScannerIntf::SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window) { void BleScannerIntf::SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window) { scanner_intf_->SetScanParameters( scanner_intf_->SetScanParameters( scanner_id, scanner_id, Loading Loading @@ -292,6 +347,18 @@ void BleScannerIntf::OnFilterConfigCallback( rusty::gdscan_filter_config_callback(filter_index, filt_type, avbl_space, action, btm_status); rusty::gdscan_filter_config_callback(filter_index, filt_type, avbl_space, action, btm_status); } } void BleScannerIntf::OnMsftAdvMonitorAddCallback(uint8_t monitor_handle, uint8_t status) { rusty::gdscan_msft_adv_monitor_add_callback(monitor_handle, status); } void BleScannerIntf::OnMsftAdvMonitorRemoveCallback(uint8_t status) { rusty::gdscan_msft_adv_monitor_remove_callback(status); } void BleScannerIntf::OnMsftAdvMonitorEnableCallback(uint8_t status) { rusty::gdscan_msft_adv_monitor_enable_callback(status); } void BleScannerIntf::OnPeriodicSyncStarted( void BleScannerIntf::OnPeriodicSyncStarted( int, int, uint8_t status, uint8_t status, Loading
system/gd/rust/topshim/gatt/gatt_ble_scanner_shim.h +13 −0 Original line number Original line Diff line number Diff line Loading @@ -27,6 +27,7 @@ namespace topshim { namespace rust { namespace rust { struct RustApcfCommand; struct RustApcfCommand; struct RustMsftAdvMonitor; struct RustGattFilterParam; struct RustGattFilterParam; struct RustUuid; struct RustUuid; Loading Loading @@ -101,6 +102,15 @@ class BleScannerIntf : public ScanningCallbacks { // Enable/disable scan filter. Gets responses via |OnEnableCallback|. // Enable/disable scan filter. Gets responses via |OnEnableCallback|. void ScanFilterEnable(bool enable); void ScanFilterEnable(bool enable); // Adds an MSFT filter. Gets responses via |OnMsftAdvMonitorAddCallback|. void MsftAdvMonitorAdd(RustMsftAdvMonitor monitor); // Removes a previously added MSFT scan filter. void MsftAdvMonitorRemove(uint8_t monitor_handle); // Enables or disables MSFT advertisement monitor. void MsftAdvMonitorEnable(bool enable); // Sets the LE scan interval and window in units of N * 0.625 msec. The result // Sets the LE scan interval and window in units of N * 0.625 msec. The result // of this action is returned via |OnStatusCallback|. // of this action is returned via |OnStatusCallback|. void SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window); void SetScanParameters(uint8_t scanner_id, uint16_t scan_interval, uint16_t scan_window); Loading Loading @@ -161,6 +171,9 @@ class BleScannerIntf : public ScanningCallbacks { void OnFilterParamSetupCallback(uint8_t scanner_id, uint8_t avbl_space, uint8_t action_type, uint8_t btm_status); void OnFilterParamSetupCallback(uint8_t scanner_id, uint8_t avbl_space, uint8_t action_type, uint8_t btm_status); void OnFilterConfigCallback( void OnFilterConfigCallback( uint8_t filt_index, uint8_t filt_type, uint8_t avbl_space, uint8_t action, uint8_t btm_status); uint8_t filt_index, uint8_t filt_type, uint8_t avbl_space, uint8_t action, uint8_t btm_status); void OnMsftAdvMonitorAddCallback(uint8_t monitor_handle, uint8_t status); void OnMsftAdvMonitorRemoveCallback(uint8_t status); void OnMsftAdvMonitorEnableCallback(uint8_t status); BleScannerInterface* scanner_intf_; BleScannerInterface* scanner_intf_; }; }; Loading
system/gd/rust/topshim/src/profiles/gatt.rs +55 −0 Original line number Original line Diff line number Diff line Loading @@ -83,6 +83,24 @@ pub mod ffi { irk: [u8; 16], irk: [u8; 16], } } // Defined in C++ and needs a translation in shim. #[derive(Debug, Clone)] pub struct RustMsftAdvMonitorPattern { pub ad_type: u8, pub start_byte: u8, pub pattern: Vec<u8>, } // Defined in C++ and needs a translation in shim. #[derive(Debug, Clone)] pub struct RustMsftAdvMonitor { pub rssi_high_threshold: u8, pub rssi_low_threshold: u8, pub rssi_low_timeout: u8, pub rssi_sampling_period: u8, pub patterns: Vec<RustMsftAdvMonitorPattern>, } #[derive(Debug, Clone)] #[derive(Debug, Clone)] pub struct RustAdvertiseParameters { pub struct RustAdvertiseParameters { advertising_event_properties: u16, advertising_event_properties: u16, Loading Loading @@ -144,6 +162,9 @@ pub mod ffi { ); ); fn ScanFilterClear(self: Pin<&mut BleScannerIntf>, filter_index: u8); fn ScanFilterClear(self: Pin<&mut BleScannerIntf>, filter_index: u8); fn ScanFilterEnable(self: Pin<&mut BleScannerIntf>, enable: bool); fn ScanFilterEnable(self: Pin<&mut BleScannerIntf>, enable: bool); fn MsftAdvMonitorAdd(self: Pin<&mut BleScannerIntf>, monitor: RustMsftAdvMonitor); fn MsftAdvMonitorRemove(self: Pin<&mut BleScannerIntf>, monitor_handle: u8); fn MsftAdvMonitorEnable(self: Pin<&mut BleScannerIntf>, enable: bool); fn SetScanParameters( fn SetScanParameters( self: Pin<&mut BleScannerIntf>, self: Pin<&mut BleScannerIntf>, scanner_id: u8, scanner_id: u8, Loading Loading @@ -249,6 +270,9 @@ pub mod ffi { action: u8, action: u8, btm_status: u8, btm_status: u8, ); ); unsafe fn gdscan_msft_adv_monitor_add_callback(monitor_handle: u8, status: u8); unsafe fn gdscan_msft_adv_monitor_remove_callback(status: u8); unsafe fn gdscan_msft_adv_monitor_enable_callback(status: u8); unsafe fn gdscan_start_sync_callback( unsafe fn gdscan_start_sync_callback( status: u8, status: u8, sync_handle: u16, sync_handle: u16, Loading Loading @@ -366,6 +390,7 @@ pub mod ffi { pub type AdvertisingTrackInfo = ffi::RustAdvertisingTrackInfo; pub type AdvertisingTrackInfo = ffi::RustAdvertisingTrackInfo; pub type GattFilterParam = ffi::RustGattFilterParam; pub type GattFilterParam = ffi::RustGattFilterParam; pub type ApcfCommand = ffi::RustApcfCommand; pub type ApcfCommand = ffi::RustApcfCommand; pub type MsftAdvMonitor = ffi::RustMsftAdvMonitor; pub type AdvertiseParameters = ffi::RustAdvertiseParameters; pub type AdvertiseParameters = ffi::RustAdvertiseParameters; pub type PeriodicAdvertisingParameters = ffi::RustPeriodicAdvertisingParameters; pub type PeriodicAdvertisingParameters = ffi::RustPeriodicAdvertisingParameters; Loading Loading @@ -900,6 +925,15 @@ pub enum GattScannerInbandCallbacks { /// Params: Filter Index, Filter Type, Available Space, Action, BTM Status /// Params: Filter Index, Filter Type, Available Space, Action, BTM Status FilterConfigCallback(u8, u8, u8, u8, u8), FilterConfigCallback(u8, u8, u8, u8, u8), /// Params: Monitor handle, status MsftAdvMonitorAddCallback(u8, u8), /// Params: status MsftAdvMonitorRemoveCallback(u8), /// Params: status MsftAdvMonitorEnableCallback(u8), /// Params: Status, Sync Handle, Advertising Sid, Address Type, Address, Phy, Interval /// Params: Status, Sync Handle, Advertising Sid, Address Type, Address, Phy, Interval StartSyncCallback(u8, u16, u8, u8, RawAddress, u8, u16), StartSyncCallback(u8, u16, u8, u8, RawAddress, u8, u16), Loading Loading @@ -930,6 +964,15 @@ cb_variant!(GDScannerInbandCb, cb_variant!(GDScannerInbandCb, cb_variant!(GDScannerInbandCb, gdscan_filter_config_callback -> GattScannerInbandCallbacks::FilterConfigCallback, gdscan_filter_config_callback -> GattScannerInbandCallbacks::FilterConfigCallback, u8, u8, u8, u8, u8); u8, u8, u8, u8, u8); cb_variant!(GDScannerInbandCb, gdscan_msft_adv_monitor_add_callback -> GattScannerInbandCallbacks::MsftAdvMonitorAddCallback, u8, u8); cb_variant!(GDScannerInbandCb, gdscan_msft_adv_monitor_remove_callback -> GattScannerInbandCallbacks::MsftAdvMonitorRemoveCallback, u8); cb_variant!(GDScannerInbandCb, gdscan_msft_adv_monitor_enable_callback -> GattScannerInbandCallbacks::MsftAdvMonitorEnableCallback, u8); cb_variant!(GDScannerInbandCb, cb_variant!(GDScannerInbandCb, gdscan_start_sync_callback -> GattScannerInbandCallbacks::StartSyncCallback, gdscan_start_sync_callback -> GattScannerInbandCallbacks::StartSyncCallback, u8, u16, u8, u8, *const RawAddress, u8, u16, { u8, u16, u8, u8, *const RawAddress, u8, u16, { Loading Loading @@ -1421,6 +1464,18 @@ impl BleScanner { mutcxxcall!(self, ScanFilterEnable, false); mutcxxcall!(self, ScanFilterEnable, false); } } pub fn msft_adv_monitor_add(&mut self, monitor: MsftAdvMonitor) { mutcxxcall!(self, MsftAdvMonitorAdd, monitor); } pub fn msft_adv_monitor_remove(&mut self, monitor_handle: u8) { mutcxxcall!(self, MsftAdvMonitorRemove, monitor_handle); } pub fn msft_adv_monitor_enable(&mut self, enable: bool) { mutcxxcall!(self, MsftAdvMonitorEnable, enable); } pub fn set_scan_parameters(&mut self, scanner_id: u8, scan_interval: u16, scan_window: u16) { pub fn set_scan_parameters(&mut self, scanner_id: u8, scan_interval: u16, scan_window: u16) { mutcxxcall!(self, SetScanParameters, scanner_id, scan_interval, scan_window); mutcxxcall!(self, SetScanParameters, scanner_id, scan_interval, scan_window); } } Loading