feat(ble): support retention attach/detach to bt module

This commit is contained in:
cjin
2026-05-21 11:46:16 +08:00
committed by BOT
parent e7921ed7dc
commit 9521182c67
5 changed files with 124 additions and 21 deletions
@@ -253,10 +253,25 @@ btdm_lp_modem_state_init(void)
{
sleep_retention_module_init_param_t init_param = {
.cbs = {.create = {.handle = (void *)btdm_lp_modem_retention_create, .arg = NULL}},
.depends = RETENTION_MODULE_BITMAP_INIT(BT_BB)};
.attribute = SLEEP_RETENTION_MODULE_ATTR_ATTACH,
.depends = RETENTION_MODULE_BITMAP_INIT(BT_BB)
};
esp_err_t err = sleep_retention_module_init(SLEEP_RETENTION_MODULE_BLE_MAC, &init_param);
if (err == ESP_OK) {
err = sleep_retention_module_allocate(SLEEP_RETENTION_MODULE_BLE_MAC);
if (err != ESP_OK) {
ESP_LOGE(NIMBLE_PORT_LOG_TAG, "BT sleep retention init error");
return err;
}
err = sleep_retention_module_allocate(SLEEP_RETENTION_MODULE_BLE_MAC);
if (err != ESP_OK) {
ESP_LOGE(NIMBLE_PORT_LOG_TAG, "BT sleep retention allocate error");
return err;
}
err = sleep_retention_module_attach(SLEEP_RETENTION_MODULE_BLE_MAC);
if (err != ESP_OK) {
ESP_LOGE(NIMBLE_PORT_LOG_TAG, "BT sleep retention attach error");
}
return err;
}
@@ -264,9 +279,21 @@ btdm_lp_modem_state_init(void)
static void
btdm_lp_modem_state_deinit(void)
{
esp_err_t err = sleep_retention_module_free(SLEEP_RETENTION_MODULE_BLE_MAC);
if (err == ESP_OK) {
err = sleep_retention_module_deinit(SLEEP_RETENTION_MODULE_BLE_MAC);
esp_err_t err = sleep_retention_module_detach(SLEEP_RETENTION_MODULE_BLE_MAC);
if (err != ESP_OK) {
ESP_LOGE(NIMBLE_PORT_LOG_TAG, "BT sleep retention detach error");
assert(err == ESP_OK);
}
err = sleep_retention_module_free(SLEEP_RETENTION_MODULE_BLE_MAC);
if (err != ESP_OK) {
ESP_LOGE(NIMBLE_PORT_LOG_TAG, "BT sleep retention free error");
assert(err == ESP_OK);
}
err = sleep_retention_module_deinit(SLEEP_RETENTION_MODULE_BLE_MAC);
if (err != ESP_OK) {
ESP_LOGE(NIMBLE_PORT_LOG_TAG, "BT sleep retention deinit error");
assert(err == ESP_OK);
}
}