自定义的订阅地址,在未断电前是正常的,可以接收到此订阅地址的信息,但是重启后,发现此订阅地址并没有保存到,
反复试了多次,发现就是只能存储前面两个,后面4个是存储不到的。
void User_Subscribe_Address_Set(uint8_t add_flag, uint16_t sub_addr)
{
? ? uint8_t i;
? ? uint8_t status;
? ? uint16_t *match;
? ? if(add_flag)? ? ? //添加订阅地址
? ? {
? ? ? ? match = App_model_find_group( &vnd_models[0], BLE_MESH_ADDR_UNASSIGNED);
? ? ? ? if( match )
? ? ? ? {
? ? ? ? ? ? // 本地添加订阅地址
? ? ? ? ? ? *match = (uint16_t)sub_addr;
? ? ? ? ? ? bt_mesh_store_mod_sub(&vnd_models[0]);
? ? ? ? ? ? status = STATUS_SUCCESS;
? ? ? ? ? ? APP_DBG("lcoal sub addr added");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? status = STATUS_NOMEM;
? ? ? ? }
? ? ? ? //打印订阅地址,正常添加,也能够接收订阅地址的信息
? ? ? ? for (i = 0; i < CONFIG_MESH_MOD_GROUP_COUNT_DEF; i++)
? ? ? ? {
? ? ? ? ? ? PRINT("G%d: 0x%04x\r\n", i, vnd_models->groups[i] );
? ? ? ? }
? ? }
? ? else? ? ? ? ? ? ? ? ? //删除订阅地址
? ? {
? ? ? ? match = App_model_find_group( &vnd_models[0], sub_addr);
? ? ? ? if( match )
? ? ? ? {
? ? ? ? ? ? // 本地删除订阅地址
? ? ? ? ? ? *match = (uint16_t)BLE_MESH_ADDR_UNASSIGNED;
? ? ? ? ? ? bt_mesh_store_mod_sub(&vnd_models[0]);
? ? ? ? ? ? status = STATUS_SUCCESS;
? ? ? ? ? ? APP_DBG("lcoal sub addr deleted");
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? status = STATUS_INVALID;
? ? ? ? }
? ? }
? ? if(status)
? ? {
? ? ? ? APP_DBG("set sub ack failed %d", status);
? ? }
}
void App_Init()
{
? ? uint8_t i;
? ? GAPRole_PeripheralInit();
? ? Peripheral_Init();
? ? App_TaskID = TMOS_ProcessEventRegister(App_ProcessEvent);
? ? vendor_model_srv_init(vnd_models);
? ? blemesh_on_sync();
? ? //打印订阅地址,重启后添加的订阅地址不见了
? ? for (i = 0; i < CONFIG_MESH_MOD_GROUP_COUNT_DEF; i++)
? ? {
? ? ? ? PRINT("G%d: 0x%04x\r\n", i, vnd_models->groups[i] );
? ? }
? ? User_ProcessEventRegister();
? ? HAL_PwmInit();
? ? User_Config_Init( );
? ? HAL_LedInit ();
? ? HAL_KeyInit();
? ? HalKeyConfig(keyPress);
}