打印
[Atmel]

每天跟我读点资料:轻型网络开发指南(19)

[复制链接]
688|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
5.3 发送数据
为了执行数据传输,应用首先需要建立一个NWK_DataReq_t类型数据传输请求指明数据的载荷,数据载荷尺寸,设置变量传输参数,并且定义回调函数来执行通知应用程序传输结果。
NWK_DataReq()函数被用来发送数据。注意NWK_DataReq()对于同一NWK_DataReq_t 结构必须被调用一次直到确认回调函数被调用。NWK_DataReq_t结构字段,可以被用户处理,如下表所示:


5-1 网络数据请求参数
dstEndpoint 目地设备的网络地址
dstEndpoint 目地设备的端点数
srcEndpoint 本地端点数
Options     数据请求选择。它可以是下列内容的组合(使用位或操作符”|”)
Data       指向装载数据
Size        装载数扰的长度
Confirm     指向确认回调函数。它应有以下原型:
           “void confirmNWK_DataReq_t *req
Status      这个字段由栈添充并且能被确认回调函数访问。它可以有表5-3的值之一。
Control     这个字段由栈添充并且能被确认回调函数访问。它包含从确认命令帧的控制字段中的值



5-2   数据请求操作
NWK_OPT_ACK_REQUEST 请求确认
NWK_OPT_ENABLE_SECURITY 加密的有效载荷
NWK_OPT_BROADCAST_PAN_ID  设置目地PAN ID 0xffff(广播)
NWK_OPT_LINK_LOCAL   在网络帧控制字段中设置一个连接本地字段到1
NWK_OPT_MULTICAST 将多播字段设置为1和将消息发送到由dstaddr字段表示
一组
5-3 数据请求状态码
NWK_SUCCESS_STATUS   操作成功完成
NWK_ERROR_STATUS    不知道的错误
NWK_OUT_OF_MEMORY_STATUS 缓冲区定位失败
NWK_NO_ACK_STATUS  网络级确认不被接怍
NWK_NO_ROUTE_STATUS 路由到目地地址没有找到
NWK_PHY_CHANNEL_ACCESS_FAILURE_STATUS 无线未能获得信道的访问权限
NWK_PHY_NO_ACK_STATUS 没有收到物理层的确认
发送数据例子:
static uint8_t message;
static NWK_DataReq_t nwkDataReq;
static void appDataConf(NWK_DataReq_t *req)
{
if (NWK_SUCCESS_STATUS == req->status)
// frame was sent successfully
else
// some error happened
}
static void sendFrame(void)
{
nwkDataReq.dstAddr = 0;
nwkDataReq.dstEndpoint = 1;
nwkDataReq.srcEndpoint = 5;
nwkDataReq.options = NWK_OPT_ACK_REQUEST | NWK_OPT_ENABLE_SECURITY;
nwkDataReq.data = &message;
nwkDataReq.size = sizeof(message);
nwkDataReq.confirm = appDataConf;
NWK_DataReq(&nwkDataReq);
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6949

帖子

66

粉丝