Skip to content
Snippets Groups Projects
Commit 8c7cd9ad authored by schneider's avatar schneider
Browse files

feat(ble): pycardium support for scanning

parent bbb027ba
No related branches found
No related tags found
1 merge request!392Show COVID-19 exposure notification statistics
......@@ -199,11 +199,14 @@ Q(get_string)
Q(BLE)
Q(ble)
Q(get_compare_value)
Q(get_scan_report)
Q(confirm_compare_value)
Q(set_bondable)
Q(scan_start)
Q(get_event)
Q(EVENT_NONE)
Q(EVENT_HANDLE_NUMERIC_COMPARISON)
Q(EVENT_PAIRING_COMPLETE)
Q(EVENT_PAIRING_FAILED)
Q(EVENT_SCAN_REPORT)
......@@ -24,6 +24,29 @@ static MP_DEFINE_CONST_FUN_OBJ_0(
ble_get_compare_value_obj, mp_ble_get_compare_value
);
static mp_obj_t mp_ble_get_scan_report(void)
{
struct epic_scan_report scan_report;
int ret = epic_ble_get_scan_report(&scan_report);
if (ret < 0) {
return mp_const_none;
}
mp_obj_t data = mp_obj_new_bytes(scan_report.data, scan_report.len);
mp_obj_t rssi = MP_OBJ_NEW_SMALL_INT(scan_report.rssi);
mp_obj_t eventType = MP_OBJ_NEW_SMALL_INT(scan_report.eventType);
mp_obj_t addrType = MP_OBJ_NEW_SMALL_INT(scan_report.addrType);
mp_obj_t addr = mp_obj_new_bytes(scan_report.addr, 6);
mp_obj_t values_list[] = { data, rssi, eventType, addrType, addr };
return mp_obj_new_tuple(5, values_list);
}
static MP_DEFINE_CONST_FUN_OBJ_0(
ble_get_scan_report_obj, mp_ble_get_scan_report
);
static mp_obj_t mp_ble_get_event(void)
{
return mp_obj_new_int(epic_ble_get_event());
......@@ -38,15 +61,25 @@ static mp_obj_t mp_ble_set_bondable(mp_obj_t bondable_obj)
}
static MP_DEFINE_CONST_FUN_OBJ_1(ble_set_bondable_obj, mp_ble_set_bondable);
static mp_obj_t mp_ble_scan_start()
{
epic_ble_set_mode(false, true);
return mp_const_none;
}
static MP_DEFINE_CONST_FUN_OBJ_0(ble_scan_start_obj, mp_ble_scan_start);
static const mp_rom_map_elem_t ble_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_sys_ble) },
{ MP_ROM_QSTR(MP_QSTR_confirm_compare_value),
MP_ROM_PTR(&ble_confirm_compare_value_obj) },
{ MP_ROM_QSTR(MP_QSTR_get_compare_value),
MP_ROM_PTR(&ble_get_compare_value_obj) },
{ MP_ROM_QSTR(MP_QSTR_get_scan_report),
MP_ROM_PTR(&ble_get_scan_report_obj) },
{ MP_ROM_QSTR(MP_QSTR_get_event), MP_ROM_PTR(&ble_get_event_obj) },
{ MP_ROM_QSTR(MP_QSTR_set_bondable),
MP_ROM_PTR(&ble_set_bondable_obj) },
{ MP_ROM_QSTR(MP_QSTR_scan_start), MP_ROM_PTR(&ble_scan_start_obj) },
/* Event Numbers */
{ MP_ROM_QSTR(MP_QSTR_EVENT_NONE),
......@@ -57,6 +90,8 @@ static const mp_rom_map_elem_t ble_module_globals_table[] = {
MP_OBJ_NEW_SMALL_INT(BLE_EVENT_PAIRING_FAILED) },
{ MP_ROM_QSTR(MP_QSTR_EVENT_PAIRING_COMPLETE),
MP_OBJ_NEW_SMALL_INT(BLE_EVENT_PAIRING_COMPLETE) },
{ MP_ROM_QSTR(MP_QSTR_EVENT_SCAN_REPORT),
MP_OBJ_NEW_SMALL_INT(BLE_EVENT_SCAN_REPORT) },
};
static MP_DEFINE_CONST_DICT(ble_module_globals, ble_module_globals_table);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment