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

feat(ble): Allow apps to make the device bondable

parent fc920835
No related branches found
No related tags found
No related merge requests found
......@@ -43,6 +43,7 @@
#include "api/interrupt-sender.h"
#include "modules/log.h"
static bool active;
/**************************************************************************************************
Macros
**************************************************************************************************/
......@@ -360,6 +361,30 @@ static void bleSetup(bleMsg_t *pMsg)
} else {
AppAdvStart(APP_MODE_CONNECTABLE);
}
active = true;
}
void epic_ble_set_bondable(bool bondable)
{
if(!active) {
return;
}
if(bondable) {
LOG_INFO("ble", "Making bondable and discoverable");
/* We need to stop advertising in between or the
* adv set will not be changed... */
AppAdvStop();
AppSetBondable(TRUE);
AppAdvStart(APP_MODE_DISCOVERABLE);
} else {
LOG_INFO("ble", "Making connectable");
AppAdvStop();
AppSetBondable(FALSE);
if(AppDbCheckBonded()) {
AppAdvStart(APP_MODE_CONNECTABLE);
}
}
}
uint32_t epic_ble_get_compare_value(void)
......
......@@ -150,6 +150,7 @@ typedef _Bool bool;
#define API_BLE_GET_COMPARE_VALUE 0x140
#define API_BLE_CONFIRM_COMPARE_VALUE 0x141
#define API_BLE_SET_BONDABLE 0x142
/* clang-format on */
......@@ -2092,5 +2093,6 @@ API(API_CONFIG_SET_STRING, int epic_config_set_string(const char *key, const cha
API(API_BLE_GET_COMPARE_VALUE, uint32_t epic_ble_get_compare_value(void));
API(API_BLE_CONFIRM_COMPARE_VALUE, void epic_ble_confirm_compare_value(void));
API_ISR(EPIC_INT_BLE_NUMERIC_COMPARISON, epic_isr_ble_numeric_comparison);
API(API_BLE_SET_BONDABLE, void epic_ble_set_bondable(bool bondable));
#endif /* _EPICARDIUM_H */
......@@ -289,5 +289,10 @@ int hardware_reset(void)
epic_max86150_disable_sensor();
/*
* BLE
*/
epic_ble_set_bondable(false);
return 0;
}
......@@ -196,4 +196,5 @@ Q(get_string)
Q(ble)
Q(get_compare_value)
Q(confirm_compare_value)
Q(set_bondable)
......@@ -19,10 +19,19 @@ static mp_obj_t mp_ble_get_compare_value(void)
}
static MP_DEFINE_CONST_FUN_OBJ_0(ble_get_compare_value_obj, mp_ble_get_compare_value);
static mp_obj_t mp_ble_set_bondable(mp_obj_t bondable_obj)
{
bool bondable = mp_obj_is_true(bondable_obj);
epic_ble_set_bondable(bondable);
return mp_const_none;
}
static MP_DEFINE_CONST_FUN_OBJ_1(ble_set_bondable_obj, mp_ble_set_bondable);
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_set_bondable), MP_ROM_PTR(&ble_set_bondable_obj) },
};
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.
Please register or to comment