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