这个错误出现在BLE Mesh快速配置过程中,通常是因为在快速配置期间触发了太多的osi_alarm_new警报,这导致了alarm_cbs资源的耗尽。解决此问题的一种方法是增加alarm_cbs的数量。下面是示例代码:
#define MY_NUM_ALARM_CBS 20
static osi_alarm_t* my_alarm_cbs[MY_NUM_ALARM_CBS];
osi_alarm_pool_t my_alarm_pool = {
.num_entries = MY_NUM_ALARM_CBS,
.alarms = my_alarm_cbs,
};
void my_app_init(void) {
osi_alarm_init_pool(&my_alarm_pool);
...
}
这将创建一个具有20个osi_alarm_t项目的闹钟池,并将其设置为应用程序的默认池。这应该足以避免在BLE Mesh快速配置期间出现alarm_cbs耗尽的情况。