Loading system/include/hardware/ble_scanner.h +21 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,15 @@ class BleScannerInterface { base::Callback<void(uint8_t /* filt_type */, uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* btm_status */)>; using MsftAdvMonitorAddCallback = base::Callback<void(uint8_t /* monitor_handle */, uint8_t /* status */)>; using MsftAdvMonitorRemoveCallback = base::Callback<void(uint8_t /* status */)>; using MsftAdvMonitorEnableCallback = base::Callback<void(uint8_t /* status */)>; /** Registers a scanner with the stack */ virtual void RegisterScanner(const bluetooth::Uuid& app_uuid, RegisterCallback) = 0; Loading @@ -155,6 +164,18 @@ class BleScannerInterface { /** Enable / disable scan filter feature*/ virtual void ScanFilterEnable(bool enable, EnableCallback cb) = 0; /** Configures MSFT scan filter (advertisement monitor) */ virtual void MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) = 0; /** Removes previously added MSFT scan filter */ virtual void MsftAdvMonitorRemove(uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) = 0; /** Enable / disable MSFT scan filter feature */ virtual void MsftAdvMonitorEnable(bool enable, MsftAdvMonitorEnableCallback cb) = 0; /** Sets the LE scan interval and window in units of N*0.625 msec */ virtual void SetScanParameters(int scanner_id, int scan_interval, int scan_window, Callback cb) = 0; Loading system/include/hardware/bt_common_types.h +16 −0 Original line number Diff line number Diff line Loading @@ -107,4 +107,20 @@ struct ApcfCommand { std::array<uint8_t, 16> irk; // 128 bit/16 octet IRK }; // MSFT scan filter pattern struct MsftAdvMonitorPattern { uint8_t ad_type; uint8_t start_byte; std::vector<uint8_t> pattern; }; // LE Scan filter defined by MSFT extension. struct MsftAdvMonitor { uint8_t rssi_threshold_high; uint8_t rssi_threshold_low; uint8_t rssi_threshold_low_time_interval; uint8_t rssi_sampling_period; std::vector<MsftAdvMonitorPattern> patterns; }; #endif /* ANDROID_INCLUDE_BT_COMMON_TYPES_H */ system/main/shim/ble_scanner_interface_impl.h +6 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,12 @@ class BleScannerInterfaceImpl : public ::BleScannerInterface, FilterConfigCallback cb) override; void ScanFilterClear(int filter_index, FilterConfigCallback cb) override; void ScanFilterEnable(bool enable, EnableCallback cb) override; void MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) override; void MsftAdvMonitorRemove(uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) override; void MsftAdvMonitorEnable(bool enable, MsftAdvMonitorEnableCallback cb) override; void SetScanParameters(int scanner_id, int scan_interval, int scan_window, Callback cb) override; void BatchscanConfigStorage(int client_if, int batch_scan_full_max, Loading system/main/shim/le_scanning_manager.cc +19 −1 Original line number Diff line number Diff line Loading @@ -241,6 +241,24 @@ void BleScannerInterfaceImpl::ScanFilterEnable(bool enable, EnableCallback cb) { base::Bind(cb, action, btm_status_value(BTM_SUCCESS))); } /** Adds MSFT filter */ void BleScannerInterfaceImpl::MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) { // TODO(b/246404026): Implement. } /** Removes MSFT filter */ void BleScannerInterfaceImpl::MsftAdvMonitorRemove( uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) { // TODO(b/246404026): Implement. } /** Enable / disable MSFT scan filter */ void BleScannerInterfaceImpl::MsftAdvMonitorEnable( bool enable, MsftAdvMonitorEnableCallback cb) { // TODO(b/246404026): Implement. } /** Sets the LE scan interval and window in units of N*0.625 msec */ void BleScannerInterfaceImpl::SetScanParameters(int scanner_id, int scan_interval, Loading system/service/test/low_energy_scanner_unittest.cc +9 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,15 @@ class MockScannerHandler : public BleScannerInterface { ScanFilterParamSetupImpl(client_if, action, filt_index, filt_param.get(), std::move(cb)); } void MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) override{}; void MsftAdvMonitorRemove(uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) override{}; void MsftAdvMonitorEnable(bool enable, MsftAdvMonitorEnableCallback cb) override{}; }; class TestDelegate : public LowEnergyScanner::Delegate { Loading Loading
system/include/hardware/ble_scanner.h +21 −0 Original line number Diff line number Diff line Loading @@ -129,6 +129,15 @@ class BleScannerInterface { base::Callback<void(uint8_t /* filt_type */, uint8_t /* avbl_space */, uint8_t /* action */, uint8_t /* btm_status */)>; using MsftAdvMonitorAddCallback = base::Callback<void(uint8_t /* monitor_handle */, uint8_t /* status */)>; using MsftAdvMonitorRemoveCallback = base::Callback<void(uint8_t /* status */)>; using MsftAdvMonitorEnableCallback = base::Callback<void(uint8_t /* status */)>; /** Registers a scanner with the stack */ virtual void RegisterScanner(const bluetooth::Uuid& app_uuid, RegisterCallback) = 0; Loading @@ -155,6 +164,18 @@ class BleScannerInterface { /** Enable / disable scan filter feature*/ virtual void ScanFilterEnable(bool enable, EnableCallback cb) = 0; /** Configures MSFT scan filter (advertisement monitor) */ virtual void MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) = 0; /** Removes previously added MSFT scan filter */ virtual void MsftAdvMonitorRemove(uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) = 0; /** Enable / disable MSFT scan filter feature */ virtual void MsftAdvMonitorEnable(bool enable, MsftAdvMonitorEnableCallback cb) = 0; /** Sets the LE scan interval and window in units of N*0.625 msec */ virtual void SetScanParameters(int scanner_id, int scan_interval, int scan_window, Callback cb) = 0; Loading
system/include/hardware/bt_common_types.h +16 −0 Original line number Diff line number Diff line Loading @@ -107,4 +107,20 @@ struct ApcfCommand { std::array<uint8_t, 16> irk; // 128 bit/16 octet IRK }; // MSFT scan filter pattern struct MsftAdvMonitorPattern { uint8_t ad_type; uint8_t start_byte; std::vector<uint8_t> pattern; }; // LE Scan filter defined by MSFT extension. struct MsftAdvMonitor { uint8_t rssi_threshold_high; uint8_t rssi_threshold_low; uint8_t rssi_threshold_low_time_interval; uint8_t rssi_sampling_period; std::vector<MsftAdvMonitorPattern> patterns; }; #endif /* ANDROID_INCLUDE_BT_COMMON_TYPES_H */
system/main/shim/ble_scanner_interface_impl.h +6 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,12 @@ class BleScannerInterfaceImpl : public ::BleScannerInterface, FilterConfigCallback cb) override; void ScanFilterClear(int filter_index, FilterConfigCallback cb) override; void ScanFilterEnable(bool enable, EnableCallback cb) override; void MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) override; void MsftAdvMonitorRemove(uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) override; void MsftAdvMonitorEnable(bool enable, MsftAdvMonitorEnableCallback cb) override; void SetScanParameters(int scanner_id, int scan_interval, int scan_window, Callback cb) override; void BatchscanConfigStorage(int client_if, int batch_scan_full_max, Loading
system/main/shim/le_scanning_manager.cc +19 −1 Original line number Diff line number Diff line Loading @@ -241,6 +241,24 @@ void BleScannerInterfaceImpl::ScanFilterEnable(bool enable, EnableCallback cb) { base::Bind(cb, action, btm_status_value(BTM_SUCCESS))); } /** Adds MSFT filter */ void BleScannerInterfaceImpl::MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) { // TODO(b/246404026): Implement. } /** Removes MSFT filter */ void BleScannerInterfaceImpl::MsftAdvMonitorRemove( uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) { // TODO(b/246404026): Implement. } /** Enable / disable MSFT scan filter */ void BleScannerInterfaceImpl::MsftAdvMonitorEnable( bool enable, MsftAdvMonitorEnableCallback cb) { // TODO(b/246404026): Implement. } /** Sets the LE scan interval and window in units of N*0.625 msec */ void BleScannerInterfaceImpl::SetScanParameters(int scanner_id, int scan_interval, Loading
system/service/test/low_energy_scanner_unittest.cc +9 −0 Original line number Diff line number Diff line Loading @@ -93,6 +93,15 @@ class MockScannerHandler : public BleScannerInterface { ScanFilterParamSetupImpl(client_if, action, filt_index, filt_param.get(), std::move(cb)); } void MsftAdvMonitorAdd(MsftAdvMonitor monitor, MsftAdvMonitorAddCallback cb) override{}; void MsftAdvMonitorRemove(uint8_t monitor_handle, MsftAdvMonitorRemoveCallback cb) override{}; void MsftAdvMonitorEnable(bool enable, MsftAdvMonitorEnableCallback cb) override{}; }; class TestDelegate : public LowEnergyScanner::Delegate { Loading