OTA過程分析

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:有幾個屬性必須得設定

   

相關文章
相關標籤/搜索