开发环境:IAR 8.10 Z-stack 2.5
功能:协调器与终端节点组网,实现点对点通信。终端向协调器发送“D1”,协调器LED灯闪烁。
流程图:
具体代码:
- 定义所需要的变量
- 端点描述符
endPointDesc_t GenericApp_epDesc;
- 任务ID,应用层的优先级
byte GenericApp_TaskID;
- 定义简单端点描述符
SimpleDescriptionFormat_t 是一个结构体,我们可以具体分析一下,这里是它的定义:
const SimpleDescriptionFormat_t GenericApp_SimpleDesc =
{
GENERICAPP_ENDPOINT, //端口号
GENERICAPP_PROFID, //Profile的ID
GENERICAPP_DEVICEID, //设备ID
GENERICAPP_DEVICE_VERSION, //设备版本号,只占前四位
GENERICAPP_FLAGS, //预留位,只占前四位
GENERICAPP_MAX_CLUSTERS, //输入命令数
(cId_t *)GenericApp_ClusterList, //输入命令地址
0, //输出命令数
(cId_t *)NULL //输出命令地址
};
由于在本次实验中协调器节点角度(被命令的一方)所以要求是输入命令
- 定义输入命令集列表
const cId_t GenericApp_ClusterList[GENERICAPP_MAX_CLUSTERS] =
{
GENERICAPP_CLUSTERID //命令号
};
- 重新定义一些函数
- 初始化函数 void GenericApp_Init( byte task_id )
在这个函数里只做了三件事 保存系统分配的任务ID、填充端口描述符和注册端点描述符
//任务初始化函数, 系统初始化时会被调用
void GenericApp_Init( byte task_id )
{
GenericApp_TaskID = task_id;
// Fill out the endpoint description.
//填充端点描述符