5.4 接收数据 如果应用程序已注册了一个数据指示回调,如5.2.9节的描述,它可以接收数据,当一个帧被接收,通过堆栈处理,通有一个注册的回调函数给应用程序指示。这个功能有以下原型“bool appDataInd(NWK_DataInd_t *ind)”.NWK_DataLnd_t的字段如下表描述。回调函数必须返回布尔值告诉堆栈是否送射确认帧。此功能允许应用程序数据流控制。 表5_4 网络数据指示结构字段 srcAddr: 网络源驱动的网络地址 dstEndpoint: 目地端点数(本地) srcEndpoint: 源端点数(远程) Options: 数扰指示选择,它可以任何常量如表5_5所示的以比特方式或提作。 Data: 指向装载数据 Lqi: 接收帧的LQI Rssi:接收帧的Rssi 数据指示选择 NWK_IND_OPT_ACK_REQUESTED: 应答被请求 NWK_IND_OPT_SECURED:帧被加密 NWK_IND_OpT_BROADCAST:帧被发射到一个广播地址(0xffff) NWK_IND_OPT_LOCAL: 帧被接收从一个直接访问节点 NWK_IND_OPT_BROADCAST_PAN_ID:帧被发送到一个广播PAN ID(oxffff) NWK_IND_OPT_LINK_LOCAL:帧被发射带一个设置为1的本地字段 NWK_IND_OPT_MULTICAST:帧被发舑 到一个组地址 应用程序可以在应答帧设置1字节数据被发送。这个是用NWK_SetAckControl()函数来完成的。这个字节可以用来传递给发送端的附加信息,例如上位端可以告诉一个休眠的设备,不休眠一段时间,并等待额外的数据。 接收数据的例子: static bool appDataInd(NWK_DataInd_t *ind) { if (!appReadyToReceive) return false; // process ind->size bytes of the data pointed by ind->data NWK_SetAckControl(APP_DO_NOT_SLEEP); return true; }
|