自定義的訂閱地址,在未斷電前是正常的,可以接收到此訂閱地址的信息,但是重啟后,發(fā)現(xiàn)此訂閱地址并沒有保存到,
反復(fù)試了多次,發(fā)現(xiàn)就是只能存儲(chǔ)前面兩個(gè),后面4個(gè)是存儲(chǔ)不到的。
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);
}