afStatus_t AF_DataRequest( afAddrType_t *dstAddr,
参数说明: *dstAddr :发送目的地址+端点地址(端点号)和传送模式 *srcEP :源(答复或确认)终端的描述(比如操作系统中任务ID等)源EP cID :被Profile指定的有效的集群号 len :发送数据长度 *buf :发送数据缓冲区 *transID : 任务ID号 options :有效位掩码的发送选项 radius :传送跳数,通常设置为AF_DEFAULT_RADIUS 其中 1、afAddrType_t *dstAddr af地址类型 typedefstruct { union { uint16 shortAddr; //短地址 }addr; afAddrMode_t addrMode; //传送模式 byte endPoint; //端点号 }afAddrType_t; 2、endPointDesc_t *srcEP 端点描述 typedefstruct { byteendPoint; //端点号 byte*task_id; //那一个任务的端点号(调用任务的ID) SimpleDescriptionFormat_t *simpleDesc; //简单的端点描述 afNetworkLatencyReq_tlatencyReq; }endPointDesc_t; 3、SimpleDescriptionFormat_t 简单描述格式 typedefstruct { byte EndPoint; //EP uint16 AppProfId; //应用规范ID uint16 AppDeviceId; //特定规范ID的设备类型 byte AppDevVer:4; //特定规范ID的设备的版本 byte Reserved:4; //AF_V1_SUPPORTusesforAppFlags:4. byte AppNumInClusters; //输入簇ID的个数 cId_t *pAppInClusterList; //输入簇ID的列表 byte AppNumOutClusters; //输出簇ID的个数 cId_t *pAppOutClusterList; //输出簇ID的列表 }SimpleDescriptionFormat_t; 4、uint16 cID ClusterID--具体应用串ID 5、uint8 options 发送模式选项有如下选项 #defineAF_FRAGMENTED 0x01 #defineAF_ACK_REQUEST 0x10 #defineAF_DISCV_ROUTE 0x20 #defineAF_EN_SECURITY 0x40 #defineAF_SKIP_ROUTING 0x80 其中AF_ACK_REQUEST为发送后需要接收方的确认 6、uint8 radius 传输跳数或传输半径,默认值为10 对于非广播消息,有两种基本的消息重试类型:端到端的确认(APS ACK)和单级确认(single hop acknowledgement)(MAC ACK)。MAC ACK默认情况下是一直打开的,通常能够充分保证网络的高可靠性。为了提供附加的可靠性,同时使发送设备能够得到数据包已经被发送到目的地的确认,可以使用APS ACK。 APS acknowledgement在APS层完成,是从目标设备到源设备的一个消息确认系统。源设备将保留这个消息知道目标设备发送一个APS ACK消息表明它已经收到了消息。对于每个发出的消息可以通过调用函数AF_DataRequest()的选项来使能/禁止来禁止这个功能。这个选项区域是一个位映射选项,对于将要发送的消息的选项区域或上(OR)AF_ACK_REQUEST就可以使能APS ACK。消息重试(如果APS ACK消息没有收到)的次数和重试之间的时间间隔的配置项在f8wConfig.cfg文件中。APSC_MAX_FRAME_RETRIES是APS层在放弃发送数据之前,没有收到APS ACK确认重新发送消息的次数。APSC_ACK_WAIT_DURATION_POLLED是重新发送之间的时间间隔。 APS ACK 数据确认命令在应用层event-loop函数中,通过AF_DATA_CONFIRM_CMD进行处理,原始AF层函数为afDataConfirm( uint8 endPoint, uint8 transID, ZStatus_t status )。
|
|