准备开始分析代码的,忽然发现还有一个重要的知识点没有讲,没办法仍是得补齐,呵呵api
消息提取函数markdown
uint8 *osal_msg_receive( uint8 task_id ) //这个函数返回一个指向所需提取信息的指针 属性(at tribute) 设备之间通讯的每一种数据像开关的状态或温度计值等皆可称为属性。每一个 属性可获得惟一的 ID,它们都用结构体来描述。 FS_Zstack\zcl .h typedef struct { uint16 attrId; // Attribute ID uint8 dataType; // Data Type - defined in AF.h uint8 accessControl; // Read/write - bit field void *dataPtr; // Pointer to data field } zclAttribute_t; typedef struct { uint16 clusterID; // Real cluster ID zclAttribute_t attr; } zclAttrRec_t; 描述符(Descriptor) 一个设备(device)能够有 240 个端点(endpoint 1~endpoint 240),每个端点 必 须 有 一 个 端 点 描 述 符 endPointDesc, 端 点 描 述 符 里 包 括 一 个 简 单 描 述 符 SimpleDescript ionFormat,它们都用结构体来描述。 Typedef struct { Byte endPoint; //端点号 1-240 byte *task_id; //任务 ID号 SimpleDescriptionFormat_t *simpleDesc; //简单描述符 afNetworkLatencyReq_t latencyReq; //延时请求 } endPointDesc_t; //端点描述符 譬如: FS_Zstack \sapi .c 对端点描述符进行初始化 sapi_epDesc.endPoint = zb_SimpleDesc.EndPoint; sapi_epDesc.task_id = &sapi_TaskID; sapi_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&zb_SimpleDesc; sapi_epDesc.latencyReq = noLatencyReqs; 特别的, FS_Zstack \ZDApp.c 端点 0 的端点描述符为: endPointDesc_t ZDApp_epDesc = { ZDO_EP, //端点 0 ID, 0 &ZDAppTaskID, (SimpleDescriptionFormat_t *)NULL, // No Simple description for ZDO (afNetworkLatencyReq_t)0 // No Network Latency req }; typedef struct { byte EndPoint; //端点号 1-240 uint16 AppProfId; //支持的Profile ID uint16 AppDeviceId; //支持的设备 ID byte AppDevVer:4; //执行的设备描述的版本 byte Reserved:4; //保留 byte AppNumInClusters; //终端支持的输入簇数目 cId_t *pAppInClusterList; //指向输入Cluster ID 列表的指针 byte AppNumOutClusters; //终端支持的输出簇数目 cId_t *pAppOutClusterList; //指向输出Cluster ID 列表的指针 } SimpleDescriptionFormat_t; //简单描述符 1)开关设备(switch)简单描述符: FS_Zstack\SimpleSwi tch.c const SimpleDescriptionFormat_t zb_SimpleDesc = { MY_ENDPOINT_ID, // Endpoint, 0x02 MY_PROFILE_ID, // Profile ID, 0x0F10 DEV_ID_SWITCH, // Device ID, 1 DEVICE_VERSION_SWITCH, // Device Version, 1 0, // Reserved NUM_IN_CMD_SWITCH, // Number of Input C (cId_t *) NULL, // Input Command List NUM_OUT_CMD_SWITCH, // Number of Output Commands, 1 (cId_t *) zb_OutCmdList // Output Command List }; 2)控制器设备(Control ler)简单描述符: FS_Zstack \SimpleControl ler.c const SimpleDescriptionFormat_t zb_SimpleDesc = { MY_ENDPOINT_ID, // Endpoint, 0x02 MY_PROFILE_ID, // Profile ID, 0x0F10 DEV_ID_CONTROLLER, // Device ID, 2 DEVICE_VERSION_CONTROLLER, // Device Version, 1 0, // Reserved NUM_IN_CMD_CONTROLLER, // Number of Input Commands, 1 (cId_t *) zb_InCmdList, // Input Command List, NUM_OUT_CMD_CONTROLLER, // Number of Output Commands, 0 (cId_t *) NULL // Output Command List, };