Now actually gets started

This commit is contained in:
Philip Gladstone 2021-10-19 00:54:01 +00:00
parent 69405ce183
commit e80361061c
2 changed files with 36 additions and 9 deletions

View File

@ -48,6 +48,7 @@
#define PERROR() printf("pcall failed: %s\n", lua_tostring(L, -1)) #define PERROR() printf("pcall failed: %s\n", lua_tostring(L, -1))
static volatile bool synced = false;
static int lble_start_advertising(); static int lble_start_advertising();
static int lble_gap_event(struct ble_gap_event *event, void *arg); static int lble_gap_event(struct ble_gap_event *event, void *arg);
@ -542,7 +543,6 @@ gatt_svr_init(lua_State *L) {
return luaL_error(L, "Failed to add gatts: %d", rc); return luaL_error(L, "Failed to add gatts: %d", rc);
} }
ble_gatts_start();
return 0; return 0;
} }
@ -618,11 +618,6 @@ lble_init_stack(lua_State *L) {
nimble_port_freertos_init(lble_host_task); nimble_port_freertos_init(lble_host_task);
printf("about to call gap_init\n");
ble_svc_gap_init();
printf("about to call gatt_init\n");
ble_svc_gatt_init();
} }
} }
@ -814,7 +809,11 @@ lble_on_sync(void)
rc = ble_hs_util_ensure_addr(0); rc = ble_hs_util_ensure_addr(0);
assert(rc == 0); assert(rc == 0);
lble_start_advertising(); if (!synced) {
synced = true;
} else {
lble_start_advertising();
}
} }
void void
@ -862,8 +861,6 @@ static int lble_init(lua_State *L) {
// Passed the config table // Passed the config table
luaL_checktype(L, 1, LUA_TTABLE); luaL_checktype(L, 1, LUA_TTABLE);
lble_init_stack(L);
lua_getfield(L, 1, "name"); lua_getfield(L, 1, "name");
const char *name = strdup(luaL_checkstring(L, -1)); const char *name = strdup(luaL_checkstring(L, -1));
@ -888,6 +885,10 @@ static int lble_init(lua_State *L) {
memcpy(gadget_mfg, mfg, len); memcpy(gadget_mfg, mfg, len);
} }
synced = false;
lble_init_stack(L);
/* Initialize the NimBLE host configuration. */ /* Initialize the NimBLE host configuration. */
// ble_hs_cfg.reset_cb = bleprph_on_reset; // ble_hs_cfg.reset_cb = bleprph_on_reset;
ble_hs_cfg.sync_cb = lble_on_sync; ble_hs_cfg.sync_cb = lble_on_sync;
@ -899,6 +900,30 @@ static int lble_init(lua_State *L) {
luaL_error(L, "Failed to gatt_svr_init: %d", rc); luaL_error(L, "Failed to gatt_svr_init: %d", rc);
} }
bool seen1800 = false;
// See if we already have the 1800 service registered
for (struct ble_gatt_svc_def *svcs = gatt_svr_svcs; svcs->type; svcs++) {
if (!ble_uuid_cmp(svcs->uuid, BLE_UUID16_DECLARE(0x1800))) {
seen1800 = true;
}
}
if (!seen1800) {
printf("about to call gap_init\n");
ble_svc_gap_init();
}
printf("about to call gatt_init\n");
ble_svc_gatt_init();
printf("about to call gatts_start\n");
ble_gatts_start();
if (synced) {
lble_start_advertising();
} else {
synced = true;
}
return 0; return 0;
} }

View File

@ -30,6 +30,8 @@ static int lledc_new_channel( lua_State *L )
ledc_timer.timer_num = opt_checkint_range(L, "timer", -1, 0, LEDC_TIMER_MAX-1); ledc_timer.timer_num = opt_checkint_range(L, "timer", -1, 0, LEDC_TIMER_MAX-1);
ledc_timer.clk_cfg = LEDC_AUTO_CLK;
/* Setup channel */ /* Setup channel */
ledc_channel_config_t channel_config = { ledc_channel_config_t channel_config = {
.speed_mode = ledc_timer.speed_mode, .speed_mode = ledc_timer.speed_mode,