summaryrefslogtreecommitdiff
path: root/ports/nrf/drivers/bluetooth
diff options
context:
space:
mode:
authorarturo182 <arturo182@tlen.pl>2018-07-18 10:22:11 +0200
committerarturo182 <arturo182@tlen.pl>2018-10-21 15:43:29 +0200
commit1c6bf9a15061d64ea097a024d73ad0a6da8f8e2b (patch)
treeac0a919e38d8324d7c7698f90d092e07b7e0536b /ports/nrf/drivers/bluetooth
parent7390dc7dab2c5ccd34a1fa5a33e1e5241b8f9bd7 (diff)
bleio: Move the Scanner class to a shared module
Diffstat (limited to 'ports/nrf/drivers/bluetooth')
-rw-r--r--ports/nrf/drivers/bluetooth/ble_drv.c19
-rw-r--r--ports/nrf/drivers/bluetooth/ble_drv.h8
2 files changed, 14 insertions, 13 deletions
diff --git a/ports/nrf/drivers/bluetooth/ble_drv.c b/ports/nrf/drivers/bluetooth/ble_drv.c
index 766660828..1d67842ef 100644
--- a/ports/nrf/drivers/bluetooth/ble_drv.c
+++ b/ports/nrf/drivers/bluetooth/ble_drv.c
@@ -94,7 +94,7 @@ static volatile ble_drv_disc_add_service_callback_t disc_add_service_handler;
static volatile ble_drv_disc_add_char_callback_t disc_add_char_handler;
static volatile ble_drv_gattc_char_data_callback_t gattc_char_data_handle;
-static mp_obj_t mp_adv_observer;
+static bleio_scanner_obj_t *mp_adv_observer;
static mp_obj_t mp_gattc_observer;
static mp_obj_t mp_gattc_disc_service_observer;
static mp_obj_t mp_gattc_disc_char_observer;
@@ -707,8 +707,8 @@ void ble_drv_gattc_event_handler_set(mp_obj_t obj, ble_drv_gattc_evt_callback_t
gattc_event_handler = evt_handler;
}
-void ble_drv_adv_report_handler_set(mp_obj_t obj, ble_drv_adv_evt_callback_t evt_handler) {
- mp_adv_observer = obj;
+void ble_drv_adv_report_handler_set(bleio_scanner_obj_t *self, ble_drv_adv_evt_callback_t evt_handler) {
+ mp_adv_observer = self;
adv_event_handler = evt_handler;
}
@@ -760,15 +760,15 @@ void ble_drv_attr_c_write(uint16_t conn_handle, uint16_t handle, uint16_t len, u
;
}
}
-void ble_drv_scan_start(void) {
+void ble_drv_scan_start(uint16_t interval, uint16_t window) {
SD_TEST_OR_ENABLE();
ble_gap_scan_params_t scan_params;
memset(&scan_params, 0, sizeof(ble_gap_scan_params_t));
scan_params.active = 1;
- scan_params.interval = MSEC_TO_UNITS(100, UNIT_0_625_MS);
- scan_params.window = MSEC_TO_UNITS(100, UNIT_0_625_MS);
+ scan_params.interval = MSEC_TO_UNITS(interval, UNIT_0_625_MS);
+ scan_params.window = MSEC_TO_UNITS(window, UNIT_0_625_MS);
#if (BLUETOOTH_SD == 140)
scan_params.scan_phys = BLE_GAP_PHY_1MBPS;
#endif
@@ -1003,10 +1003,9 @@ static void ble_evt_handler(ble_evt_t * p_ble_evt) {
#endif
};
- // TODO: Fix unsafe callback to possible undefined callback...
- adv_event_handler(mp_adv_observer,
- p_ble_evt->header.evt_id,
- &adv_data);
+ if (adv_event_handler != NULL) {
+ adv_event_handler(mp_adv_observer, &adv_data);
+ }
break;
case BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST:
diff --git a/ports/nrf/drivers/bluetooth/ble_drv.h b/ports/nrf/drivers/bluetooth/ble_drv.h
index ca9a38fdd..d344e2690 100644
--- a/ports/nrf/drivers/bluetooth/ble_drv.h
+++ b/ports/nrf/drivers/bluetooth/ble_drv.h
@@ -32,6 +32,8 @@
#include <stdint.h>
#include <stdbool.h>
+#include "shared-module/bleio/Scanner.h"
+
#include "modubluepy.h"
typedef struct {
@@ -67,7 +69,7 @@ typedef struct {
typedef void (*ble_drv_gap_evt_callback_t)(mp_obj_t self, uint16_t event_id, uint16_t conn_handle, uint16_t length, uint8_t * data);
typedef void (*ble_drv_gatts_evt_callback_t)(mp_obj_t self, uint16_t event_id, uint16_t attr_handle, uint16_t length, uint8_t * data);
typedef void (*ble_drv_gattc_evt_callback_t)(mp_obj_t self, uint16_t event_id, uint16_t attr_handle, uint16_t length, uint8_t * data);
-typedef void (*ble_drv_adv_evt_callback_t)(mp_obj_t self, uint16_t event_id, ble_drv_adv_data_t * data);
+typedef void (*ble_drv_adv_evt_callback_t)(bleio_scanner_obj_t *self, ble_drv_adv_data_t *data);
typedef void (*ble_drv_disc_add_service_callback_t)(mp_obj_t self, ble_drv_service_data_t * p_service_data);
typedef void (*ble_drv_disc_add_char_callback_t)(mp_obj_t self, ble_drv_char_data_t * p_desc_data);
typedef void (*ble_drv_gattc_char_data_callback_t)(mp_obj_t self, uint16_t length, uint8_t * p_data);
@@ -106,13 +108,13 @@ void ble_drv_attr_s_notify(uint16_t conn_handle, uint16_t handle, uint16_t len,
void ble_drv_attr_c_write(uint16_t conn_handle, uint16_t handle, uint16_t len, uint8_t * p_data, bool w_response);
-void ble_drv_scan_start(void);
+void ble_drv_scan_start(uint16_t interval, uint16_t window);
void ble_drv_scan_continue(void);
void ble_drv_scan_stop(void);
-void ble_drv_adv_report_handler_set(mp_obj_t obj, ble_drv_adv_evt_callback_t evt_handler);
+void ble_drv_adv_report_handler_set(bleio_scanner_obj_t *self, ble_drv_adv_evt_callback_t evt_handler);
void ble_drv_connect(uint8_t * p_addr, uint8_t addr_type);