z-stack 数据传输AF层application frame

【信息科学与工程学】【通信工程】第八十六篇 通信网络设备及通信网络组网的所有学科知识01 编号001类型网络虚拟化与覆盖技术网络领域数据中心网络子领域大二层网络 / 网络虚拟化核心数学方程式/算法模型核心算法:VXLAN封装与解封装。关键在于24位VNI(虚拟网络标识符)到物理网络的三层IP地址的映射。封装:收到原始以太帧后,为其添加 VXLAN 头部(含 VNI)、外层 UDP 头(目的端口 4789)、外层 IP 头(源 IP 为本地 VTEP IP,目的 IP 为对端 VTEP IP)以及外层 MAC 头。解封装:对端 收到报文后,剥离外层头部,根据内层帧的目的 MAC 和 VNI 进行二 阅读详情

前面已经把z-stack里面的操作系统的基本原理搞懂了,紧接着的任务就是深入了解,不同设备之间是如何进行数据传输的。(个人习惯喜欢自顶而下的学习方式)

AF层是application通过空中向APS层传输数据的接口,它包括从通过aps层和NEW层空中传输数据的功能函数。它也能接收数据。AF层的功能:终端管理和数据收发。

在zigbee中每个设备看做一个节点(node),每个node有长地址和短地址,短地址被其他node用来传输数据,每个node可以有240个应用终点(endpoint,每个endpoint又要用地址来分开,device发送任务的时候。一个应用必须注册一个或多个endpoint来接收和发送数据。(来自ti的API的数据手册的资料)这说明z-stack数据传输的最小单位是endpoint。

下面看看AF层是如何对ENDPOINT进行管理的呢?

每个zigbee的endpoint有simple description,SimpleDescriptionFormat_t的结构体定义如下:

typedef struct
{
byte EndPoint;                               //endpoint的编号,也可以理解成地址1-240
uint16 AppProfId;                          //应用规范号,从zigbee联盟里面获得
uint16 AppDeviceId;                     //设备ID,这个endpoint的设备ID,也是从zigbee联盟里面获得。这里的device指的是CC2430节点后面接的设备,不是指CC2430本身。
byte AppDevVer:4;                  //设备描述的版本号,
byte Reserved:4; // AF_V1_SUPPORT uses for AppFlags:4.
byte AppNumInClusters;           //输入簇的数目
cId_t *pAppInClusterList;          //输入簇表的首地址,指针
byte AppNumOutClusters;        //输出簇的数目
cId_t *pAppOutClusterList;       //输出簇的首地址,指针
} SimpleDescriptionFormat_t;

endpoint描述结构:endPointDesc_t

typedef struct
{
byte endPoint;                                      //endpoint的编号,也可以理解成地址1-240(难以理解为什么要出现两个endpoint)byte *task_id;                                       // Pointer to location of the Application task ID.Task  ID pointer. When               a message is received, this task ID will be used to
SimpleDescriptionFormat_t  *simpleDesc;   //上面的结构体,这里是结构体嵌套结构体
afNetworkLatencyReq_t  latencyReq;           //充满没有潜伏时间的回复
} endPointDesc_t;

看了结构体,我们再看看功能函数

afRegister()用来注册一个新的endpoint到一个设备(device)上也就是(node)。

函数的原型(prototype)

afStatus_t afRegister( endPointDesc_t *epDesc );

epDesc是指向设备描述结构体的指针。

返回值是状态也就是Zsuccess 或者是Zfaules

接着还有一些endpoint管理的函数这里就不一一讲了。

终于到发送数据了。

发送数据的函数是 AF_DataRequest()
                           Call this function to send data.
              Prototype原型
afStatus_t AF_DataRequest( afAddrType_t *dstAddr, endPointDesc_t *srcEP,
                                             uint16 cID, uint16 len, uint8 *buf, uint8 *transID,
                                             uint8 options, uint8 radius );参数超多
Parameter Details(参数详解:)
dstAddr – Destination address pointer. 目标地址指针
The address mode in this structure must be either: 它有四种形式

1。afAddrNotPresent tolet the reflector (source binding) figure out the destination address;

2。afAddrGroup to send to a group;

3。afAddrBroadcast to send a broadcast message;

4。afAddr16Bit to send directly (unicast) to a node.

srcEP – Endpoint Descriptor pointer of the sending endpoint.//发送设备的描述结构体的地址
cID – Cluster ID – the message’s cluster ID is like a message ID and is unique with in the profile.//簇ID
len – number of bytes in the buf field. The number of bytes to send.//发送数据buff的长度
buf – buffer pointer of data to send.//buff指针
transID – transaction sequence number pointer. This number will be incremented by this function if the message
is buffered to be sent.//序列数的指针
options – the options to send this message are to be OR’d into this field are:

AF_FRAGMENTED       0x01       Not to be used.
AF_ACK_REQUEST      0x10       APS Ack requested. This is an application level
                                                     acknowledgement – meaning that the destination
                                                     device will acknowledge the message. Only used on
                                                      messages send direct (unicast).//目标设备收到将会回复
AF_DISCV_ROUTE       0x20        Should always be included.//发现路由
AF_EN_SECURITY        0x40         Not needed.
AF_SKIP_ROUTING       0x80         Setting this option will cause the device to skip routing and try to send the message                                          directly End devices will not send the message to its parent first. Good for only                                                   direct (unicast) andbroadcast messages.//直接发送到目的设备,不发送到他的父节点

radius –Maximum number of hops 最大跳数

奇怪,怎么AF层里面只有发送的函数没有接收的函数。经过,鄙人不懈的努力,终于找到数据接收的函数。原来在ZDO层里面。

一个应用通过用ZDO_RegisterForZDOMsg()注册能从空中接收任何信息。
ZDO_RegisterForZDOMsg()
Call this function to request an over-the-air message. A copy of the message will be sent to a task in an OSAL
message. The task receiving the message can either parse the message themselves or call a ZDO Parser function to
parse the message. Only response messages have a ZDO Parser function.
After registering for a message, and the message is received (OTA), the message is sent to the application/task as a
ZDO_CB_MSG (OSAL Msg). The body of the message (zdoIncomingMsg_t – defined in ZDProfile.h) contains the
OTA message.

程序原型(prototype)

ZStatus_t ZDO_RegisterForZDOMsg( uint8 taskID, uint16 clusterID );
参数详解(Parameter Details)
taskID – the application’s task ID. This will be used to send the OSAL message.
clusterID – the over the air message’s clusterID that you would like to receive (example: NWK_addr_rsp).
These are defined in ZDProfile.h.
Return
ZStatus_t –status values defined in ZStatus_t in ZComDef.h,可惜在z-stack里面没有找到,而且,NEW层和MAC层没有给出源文件


【信息科学与工程学】【通信工程】计算机科学与自动化——第二百三十三篇 云NaaS服务 系列二02 字段内容类型​云网络自定义路由表(Custom Route Table):允许用户自定义 VPC 或子网的路由规则,控制流量走向,支持黑白名单、策略路由。端计算节点->边缘计算节点->边缘DC->中心云的网络情况及存储需求及配置情况列表​端计算节点为 VPC 内的云资源。边缘计算节点不适用。边缘 DC 和中心云为路由表管理平台。存储需求:路由条目存储于数据库。网络:路由表在虚拟路由器中执行。QoS:无。网络的端到端配置(从接入到汇聚到核心)​。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02

编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2.

weixin_49199313的博客 309

ZigBee学习——基于AF的数据通信

基于AF的数据通信

struggle_success的博客 1816

【信息科学与工程学】【通信工程】计算机科学与自动化——第二百三十三篇 云NaaS服务 系列二01

国家骨干网(含核心网、IP骨干网、OTN骨干网)/城域网【含3G/4G/5G接入网/PON接入网/OTN接入网+OTN/IP城域网+其他】/中心云(多/双/单Region+多AZ/双AZ/单AZ)+边缘DC+边缘计算节点+端计算节点包括IoT传感器、移动终端、CPE设备。通过5G NR(n78频段,带宽100MHz,子载波间隔30kHz)或GPON(下行2.5Gbps,上行1.25Gbps)接入。本地缓存小于10GB,主要用于临时数据暂存。位于地市级机房,部署MEC服务器(Intel Xeon Platin

weixin_49199313的博客 1332

ZStack-CC2530-2.5.1a协议栈数据传输

数据传输的基本功能:两个Zigbee节点进行点对点通信,Zigbee节点2发送"LED"三个字符,Zigbee节点1收到数据后,对接收到的数据进行判断,如果收到的数据是"LED",则使开发板上的LED灯闪烁。数据传输实验原理如下图所示: 协调器节点编程: 在Zigbee无线传感器网络中有三种设备类型:协调器、路由器和终端节点,设备类型是由Zigbee协议栈不同的编译选项来选择的。协调器

努力创作有价值的文章 1万+

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 403

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 282

通过例子理解Zigbee Application Profile和cluster

The following is a way to use the simple api to develop an application. 按照以下步骤, 创建私有的Application Profile。  ———————————————————— •  Identify all the devices in the application  标识应用中所有的设备(类型) –  e.g

WWBOY249的专栏 2130

【信息科学与工程学】【产品体系】第三十三篇 DPU/smartinic芯片中的学科知识03

需求实现DMA 与流边界检测优化​分级超时状态机(短/中/长)+ 积压计数 + 批量触发DMA 控制器优化​描述符预取(深度 4)+ 中断合并(阈值 8)Fence 语义正确性验证​RTL 断言 + C 语言序列号检测 + 性能对比 + 硬件计数器所有代码均为可综合 Verilog,已在仿真器中通过基本功能测试。在 FPGA 原型上运行上述 RTL,配合 ChipScope 观察 fence 时序在 BlueField-3 上运行 DOCA DPA 测试程序,对比加/不加 fence 的结果。

weixin_49199313的博客 281

AF层学习总结

AF层学习总结 2010-03-16 19:00 /* * afInit - Initialize the AF. */ extern void afInit( void ); 作用:初始化AF层,在ZMain中mian()函数中调用 /* * afRegisterExtended - Register an Application's EndPoint

海纳百川 3677

Zigbee AF层使用说明

ZigBee Application Framework - Product Profiles Phil Jamieson, ZigBee AFG Chair

zigbee AF层使用说明白皮书

Understanding the ZigBee™ Application Framework Abstract This paper provides an introductory description of the ZigBee application framework. Topics include the application layer structure, the ZigBee Cluster Library, the ZigBee Device Profile and the process for

Zigbee协议栈发送函数AF_DataRequest说明

Zigbee协议栈进行数据发送是调用AF_DataRequest这个函数,该函数会调用协议栈里面与硬件相关的函数最终将数据通过天线发送出去。    afStatus_t AF_DataRequest( afAddrType_t *dstAddr, //目的地址指针                               endPointDesc_t *srcEP, //发送节点

Xecho 4248

ZStack各层API手册

ZStack各层API手册 ZDO层ZDO 层的API 为应用程序的终端提供了管理ZigBee 协调器、路由器或终端设备的接口。这包括创建、查找和加入一个ZigBee 网络,绑定应用程序终端以及安全管理。

【信息科学与工程学】【产品体系】第二十篇 CDN网络 01

CDN技术体系全景解析​1. 业务类型与随机过程建模​​类型​​随机过程描述​​测度空间​​突发流量冲击​复合泊松过程X_i为请求强度)​区域热点聚集​空间霍克斯过程​分布式共振​耦合振子模型相空间​2. PRD核心指标(泛函约束)​​:节点队列状态向量A:网络拓扑关联矩阵(图论邻接矩阵):随机需求过程(Levy过程驱动)时间状态特征与代数结构​1. 系统状态流形​graph LRS[状态空间 S] -->|微分同胚| M[特征流形 M]

weixin_49199313的博客 4116

XIAO ESP32S3 Sense摄像头与麦克风实战:从硬件连接到AI语音视觉项目

本文详细介绍了如何使用Seeed Studio XIAO ESP32S3 Sense开发板进行AI语音视觉项目开发。从硬件连接到Arduino环境搭建,再到摄像头拍照、视频流传输、麦克风录音等实战操作,最后引导读者探索基于TensorFlow Lite Micro的语音唤醒和SenseCraft AI的图像识别等AI应用,为物联网和边缘AI项目提供了完整的入门指南。

xray4的博客 1022

从仿真曲线到电路状态:用Cadence Virtuoso深度剖析CS放大器各个工作区(以电流源负载为例)

本文通过Cadence Virtuoso平台,深入剖析电流源负载CS放大器在不同工作区的表现,从仿真曲线解读电路状态。详细介绍了如何通过Vout-Vin直流扫描曲线判断MOS管工作区域(截止区、饱和区、线性区),并验证理论与仿真的一致性,提升模拟IC设计调试效率。

weixin_30940783的博客 442

ZStack-OSAL中任务初始化中的afRegister函数调用分析总结

首先看下以下几个结构体,定义在AF.h文件中 typedef struct { uint8 EndPoint; //端点/端口/终端号 1-240 uint16 AppProfId; //支持的Profile ID,配置文件ID uint16 AppDeviceId;

努力创作有价值的文章 3353

从图片到3D模型:用Tripo+Unity打造AI建模流水线(避坑指南)

本文详细介绍了如何利用Tripo和Unity构建AI驱动的3D建模流水线,从图片到3D模型的高效转换。通过文生模型和图生模型的双模系统,开发者可以大幅提升建模效率,适用于游戏开发和数字内容创作。文章还提供了环境配置、图片预处理、批量生成等实用技巧,帮助开发者避开常见陷阱。

weixin_27024175的博客 613

注册一个应用的端点描述符afRegister( endPointDesc_t *epDesc )

afRegister( endPointDesc_t *epDesc )这个函数用来注册一个新的端点到task,这样当空中有这个端点的数据到来会直接发送到对应的task。 传入参数: typedef struct {   byte endPoint; //端点号   byte *task_id;   //端点对应的任务号   SimpleDescriptionFormat_t *sim

TOM的专栏 3236

面试复习题--RN面试

考察点:热更新方案的深度理解,选型能力,实战落地经验。答题思路主流热更新方案对比。

hqiangtai的博客 725

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 580

ZigBee学习之13——ZStack ZDO和AF层API解读

Z-Stack API[Z-Stack API _F8W-2006-0021_.pdf]这个文档是一个关键了,Z-Stack的应用程序接口。我们在程序中基本上应该调用的是这些API吧。ZDO层API实现了所有ZDP(ZigBee Device Profile)定义的命令和回应所需要的函数。ZDP描述了ZDO如何实现普通ZigBee设备的特性,它定义了设备描述和簇,ZDP为ZDO和应用提供一下功能:

河北正定欢迎您-少占鱼 3112

Avalonia+ReactiveUI跨平台路由:从零到舞者,你的UI也能跨界起舞?

至此,你已掌握了Avalonia+ReactiveUI的跨平台路由精髓!你的应用现在能够优雅地在各个界面间穿梭,就像是在不同星球间跳跃的宇宙飞船。无论是初探跨平台开发的新手,还是经验丰富的老船长,这段旅程都能让你的UI编排技能更上一层楼。现在,是时候让世界见证你的跨平台魔术了!💫记住,每一次实践都是向着完美编舞迈进的一步,勇敢地在你的项目中尝试吧!如果在航行中遇到风暴,别忘了回来看看这篇指南,或者在评论区抛出你的救生圈,我们一起解决!🌊。

java专栏 1534

关于在AF层注册的具体过程

zigbee相关

bnblzq的博客 870

提交 ieee 手稿出现:Do not include the Reviewer PDF with my submission 怎么办

IEEE投稿Reviewer PDF选项说明 投稿时出现的"Do not include the Reviewer PDF with my submission"选项控制是否附带评审专用PDF文件。Reviewer PDF是系统自动生成包含所有投稿材料的完整PDF,用于同行评审。建议保持默认不勾选状态,除非确认编辑部不需要该文件,否则可能影响审稿流程。勾选表示不附带此PDF,不勾选则会正常生成并提交该评审文件。

ZhangJiqun&191cm&85kg 2193

cesium 淹没分析

cesium淹没分析

God's asylum的博客 480
上一篇: z-stack halprocesspoll与初始化
下一篇: 如何建立cc2430串口与上位机通信的任务
cucmakeit
博客等级 码龄14年 30粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值