分享

AF_DataRequest ()函数说明

 乘舟泛海赏雨 2016-10-09
afStatus_t AF_DataRequest( afAddrType_t *dstAddr, 
endPointDesc_t *srcEP,
uint16 cID, 
uint16 len, 
uint8 *buf, 
uint8 *transID,
uint8 options, uint8 radius )
参数说明:  
*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 )。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多