1:硬件初始化網絡
2:初始化設備:路由,Z3設備dom
3:初始化發送回調函數:messageSentCallbacks函數
4:端點初始化ui
端點號,PROFILEID,設備ID,設備版本,插件
簇的初始化:端點包含的簇的屬性,服務端仍是客戶端,簇的初始化函數,屬性屬性變化函數blog
EmberAfGenericClusterFunction emberAfFuncArrayOtaBootloadClusterClient[] = { (EmberAfGenericClusterFunction)emberAfOtaBootloadClusterClientInitCallback,(EmberAfGenericClusterFunction)emberAfOtaBootloadClusterClientDefaultResponseCallback};路由
初始化函數只是初始化,如今並無調用簇的初始化函數,屬性只是分配空間,尚未賦值rem
5:emberAfInit回調函數
初始化屬性值,而後把NV裏的值裝到屬性裏it
初始化插件
#define EMBER_AF_GENERATED_PLUGIN_INIT_FUNCTION_CALLS \
emberAfPluginBulbPwmDriverInitCallback(); \
emberAfPluginCountersInitCallback(); \
emberAfPluginEepromInitCallback(); \
emberAfPluginElectricalMeasurementServerInitCallback(); \
emberAfPluginLedDimPwmInitCallback(); \
emberAfPluginPowerMeterCs5463InitCallback(); \
emberAfPluginReportingInitCallback(); \
調用簇的初始化函數
網絡初始化
EM_AF_NETWORK_INIT();
//========
網絡狀態起來的時候調用。
#define\
void emberAfPluginElectricalMeasurementServerStackStatusCallback(EmberStatus status); \
void emberAfPluginManufacturingLibraryOtaStackStatusCallback(EmberStatus status); \
void emberAfPluginMeteringServerStackStatusCallback(EmberStatus status); \
void emberAfPluginNetworkSteeringStackStatusCallback(EmberStatus status); \
void emberAfPluginOtaClientStackStatusCallback(EmberStatus status); \
void emberAfPluginReportingStackStatusCallback(EmberStatus status); \
6:
void emberAfPluginOtaClientStackStatusCallback(EmberStatus status)
{
enum BootloadState{
BOOTLOAD_STATE_NONE,
BOOTLOAD_STATE_DELAY,
BOOTLOAD_STATE_DISCOVER_SERVER,
BOOTLOAD_STATE_GET_SERVER_EUI,
BOOTLOAD_STATE_OBTAIN_LINK_KEY,
BOOTLOAD_STATE_QUERY_NEXT_IMAGE,
BOOTLOAD_STATE_DOWNLOAD,
BOOTLOAD_STATE_VERIFY_IMAGE,
BOOTLOAD_STATE_WAITING_FOR_UPGRADE_MESSAGE,
BOOTLOAD_STATE_COUNTDOWN_TO_UPGRADE,
BOOTLOAD_STATE_UPGRADE_VIA_OUT_OF_BAND,
};
typedef uint8_t BootloadState;
//升級狀態,對應簇的屬性ID:0x0006
static PGM uint8_t bootloadStateToExternalState[] = {
OTA_UPGRADE_STATUS_NORMAL,
OTA_UPGRADE_STATUS_NORMAL,
OTA_UPGRADE_STATUS_NORMAL,
OTA_UPGRADE_STATUS_NORMAL,
OTA_UPGRADE_STATUS_NORMAL,
OTA_UPGRADE_STATUS_NORMAL,
OTA_UPGRADE_STATUS_DOWNLOAD_IN_PROGRESS,
OTA_UPGRADE_STATUS_DOWNLOAD_COMPLETE,
OTA_UPGRADE_STATUS_WAIT,
OTA_UPGRADE_STATUS_COUNTDOWN,
OTA_UPGRADE_STATUS_WAIT_TO_UPGRADE_VIA_OUT_OF_BAND,
};
recordUpgradeStatus(BOOTLOAD_STATE_DELAY); //
currentBootloadState=BOOTLOAD_STATE_DELAY;
emberAfScheduleClientTickExtended(myEndpoint,
ZCL_OTA_BOOTLOAD_CLUSTER_ID,
randomDelaySeconds * MILLISECOND_TICKS_PER_SECOND,
pollControl,
sleepControl);
{ 0x1, 0x19, true, EMBER_AF_LONG_POLL, EMBER_AF_OK_TO_SLEEP, &emberAfOtaBootloadClusterClientTickCallbackControl1}, \
}
7:有幾個屬性必須得設定