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:有几个属性必须得设定

   

相关文章
相关标签/搜索