void zclHomelink_zigbeeReset(void) { uint16 clusters[2]; zAddrType_t tempAddr = {{0}, (afAddrMode_t)AddrGroup}; aps_Group_t tempGroup = {0, "SwitchX"}; int i; for (i = HAL_NV_PAGE_BEG; i <= (HAL_NV_PAGE_BEG + HAL_NV_PAGE_CNT); i++) { HalFlashErase(i); } clusters[0] = ZCL_CLUSTER_ID_GEN_ON_OFF; clusters[1] = ZCL_CLUSTER_ID_GEN_LEVEL_CONTROL; BindSetDefaultNV(); aps_GroupsSetDefaultNV(); // Initialize default groups. Each button has a group ID built from the MAC. // The top 2 bits are for the endpoints. for(i = 0; i < NUM_BUTTONS; i ++) { tempGroup.ID = i << 14 | (aExtendedAddress[1] & 0x3F) << 8 | aExtendedAddress[0]; tempGroup.name[6] = '1' + i; tempAddr.addr.shortAddr = tempGroup.ID; bindAddEntry(ENDPOINT+i, &tempAddr, 0, 2, clusters); aps_AddGroup(ENDPOINT+i, &tempGroup); } BindWriteNV(); aps_GroupsWriteNV(); Onboard_soft_reset(); }
uint8 MT_UblCommandProcessing(uint8 *pBuf) { if (pBuf[MT_RPC_POS_CMD1] == MT_UBL_ERASE) { uint16 crc[2]; HalFlashRead(UBL_RC_IMG_PG_BEG, UBL_MD_PG_OFFSET, (uint8 *)(crc+1), 2); if (crc[1] != 0) { crc[1] ^= 0xFFFF; // Only write to zero bits that are not already zero. crc[0] = 0xFFFF; HalFlashWrite((UBL_MD_ADDR - 2) / HAL_FLASH_WORD_SIZE, (uint8 *)crc, 1); } Onboard_soft_reset(); } return MT_RPC_ERR_COMMAND_ID; }