ZStack API解读3

zigbee之Zstack协议栈使用 zigbee;zstack 阅读详情

应用框架(AF)

应用框架层是应用道APS层的OTA数据接口。此层也接收数据消息的终端多路复用器。AF为应用提供以下功能:

·                    终端(Endpoint)管理

·                    发送和接收数据

哈哈,这里的函数应该就是我们经常要用到的函数了。

终端管理

每个设备都是Zigbee中的节点,每个节点有长地址和短地址,短地址被其他设备用来发送数据。每个节点又241个终端(0保留,1-240可分配给应用)。每个终端可以独立设置地址;当设备发送数据时必须指定目标设备的短地址和接收终端。一个应用必须注册一个或多个终端用来接收或者发送数据。

简单描述符-SimpLEDescriptionFormat_t

每个终端都必须有一个Zigbee简单描述。这些描述对Zigbee网络刻画了这个终端,其他设备可以询问这个终端以知道这个设备的类型。

typedef struct

{

 byte         EndPoint;

 uint16       AppProfId;

 uint16       AppDeviceId;

 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 – 终端号:1-240 这是节点的子地址,用来接收数据

AppProfId – 定义了这个终端上支持的Profile ID(剖面ID),ID最好遵循由ZigBee联盟的分配。

AppDeviceId –终端支持的设备ID,ID最好遵循ZigBee联盟的分配。

AppDevVer –此终端上设备执行的设备描述的版本:0x00为Version 1.0.

Reserved – 保留

AppNumInClusters – 终端支持的输入簇数目

pAppInClusterList – 指向输入Cluster ID列表的指针

AppNumOutClusters – 终端支持的输出簇数目

pAppOutClusterList – 指向输出Cluster ID列表的指针

终端描述符-endPointDesc_t

节点中的每一个终端都必须有一个终端描述符

typedef struct

{

  byte endPoint;

  byte *task_id; // Pointer to location of the Application task ID.

  SimpleDescriptionFormat_t*simpleDesc;

  afNetworkLatencyReq_tlatencyReq;

} endPointDesc_t;

task_id-任务ID指针,当接收到消息时,此任务ID将指示消息传递目的。接收到的消息是以OSAL消息形式包装的,将发送到一个任务

simpleDesc  -指向这个终端的ZigBee简单描述

latencyReq -必须用noLatencyReqs来填充

afStatus_t afRegister( endPointDesc_t *epDesc);

为设备注册一个新的终端

epDesc     -指向终端描述符

返回值:afStatus_t  -若成功则返回ZSuccess,否则返回ZComDef.h中定义的错误

epList_t *afRegisterExtended( endPointDesc_t*epDesc, pDescCB descFn );

在上面函数功能的基础上增加了回调函数,当终端的简单描述符被查询时将调用此回调函数。这样应有就可以动态改变简单描述符而不用RAM/ROM来储存描述符了。

descFn     -回调函数指针。相关函数必须为简单描述符分配足够的空间,填充简单描述符,然后返回指向简单描述符的指针,调用者将释放为描述符分配空间。

epList     -指向终端列表元件的指针,如果失败则为NULL

endPointDesc_t *afFindEndPointDesc( byte endPoint);

从一个终端找到终端描述符

endPoint   -要寻找的终端描述符的终端号

endPointDesc_t -指向终端描述符的指针,若失败则为NULL

byte afFindSimpleDesc( SimpleDescriptionFormat_t**ppDesc, byte EP );

从一个终端找到终端描述符。若返回值非零则必须调用osal_mem_free()来释放描述符的内存占用。

ppDesc  -指向指向简单描述符的指针。

EP –终端简单描述符需要

uint8 afGetMatch( uint8 ep );

默认情况下,设备将响应ZDO匹配描述符请求。用这个函数来获得ZDO匹配描述符应答的设置。

ep  -用来获得ZDO匹配描述符响应行为的终端

返回值:TRUE-允许响应,FALSE-不允许或者终端未找到

uint8 afSetMatch( uint8 ep, uint8 action );

默认情况下,设备将响应ZDO匹配描述符。可以用这个函数来改变这个行为,比如ep为1,action为FALSE,ZDO将不响应终端1的ZDO匹配面述符请求。

ep  -用来获得ZDO匹配描述符响应行为的终端

action -TRUE-允许响应,FALSE-不允许或者终端未找到

返回值:TRUE-成功,FALSE-失败或者终端未找到

byte afNumEndPoints( void );

查找已注册的终端数目,返回此设备上已注册的终端数目,包括终端0

void afEndPoints( byte *epBuf, byte skipZDO );

返回包含已注册的终端的一个数组。

epBuf –指向存放终端的数组,每个终端占一个字节  

skipZDO -设置为TRUE,则不包含ZDO终端(终端0)

发送数据

afStatus_t AF_DataRequest( afAddrType_t *dstAddr,endPointDesc_t *srcEP,

               uint16 cID, uint16 len, uint8 *buf, uint8 *transID,

              uint8 options, uint8 radius );

dstAddr -目标地址指针。

   afAddrNotPresent   由反射器(邦定源,也即路由器或者协调器)指定

   afAddrGroup    发送到组

   afAddrBroADCast发送广播消息

   afAddr16Bit    直接发送到节点(单播)

srcEP      -发送终端的终端描述符指针

cID    -簇ID,cluster ID如同消息ID,并且在剖面(profile)中各不相同

len    -要发送的字节数

buf    -指向要发送的数据缓存的指针

transID -事务序列号指针。如果消息缓存发送,这个函数将增加这个数字

options   -发送选项,可以由下面一项,或几项相或得到

   AF_ACK_REQUEST 0x10 要求APS应答,这是应用层的应答,支在直接发送(单播)时使用。

   AF_DISCV_ROUTE 0x20 总要包含这个选项

   AF_SKIP_ROUTING 0x80设置这个选项将导致设备跳过路由而直接发送消息。终点设备将不向其父亲发送消息。在直接发送(单播)和广播消息时很好用。

radius – 最大的跳数,用默认值AF_DEFAULT_RADIUS

afStatus_t – 成功则为ZSuccess(defined in ZComDef.h). 否则Errors(defined in ZComDef.h)

uint8 afDataReqMTU( afDataReqMTU_t* fields );

找出基于输入参数的最大可发送字节数,返回能发送的最大字节数

fields     -要发送的消息类型参数

    typedefstruct

    {

       uint8             kvp;

      APSDE_DataReqMTU_t aps;

    }afDataReqMTU_t;

    kvp –设为false.

    typedefstruct

    {

       uint8secure;

    }APSDE_DataReqMTU_t;

    aps.secure –设为false.如果在一个安全网络中此位将自动设置.


ZStack 2.5.1a协议栈OSAL调度器源码逐行解读:从main函数到事件循环的完整执行链路 本文深入解析ZStack 2.5.1a协议栈中OSAL调度器的源码实现,从main函数启动流程到事件循环的完整执行链路。详细剖析了硬件初始化、任务调度机制、事件处理及低功耗设计等核心模块,为开发者优化ZigBee协议栈性能提供技术参考。特别针对ZStack2.5.1a版本的内存管理、中断控制和定时器协同等关键实现细节进行源码级分析。 阅读详情

相关推荐

ZStack与传感器集成:环境监测系统构建指南

深入解析如何利用ZStack协议栈实现无线传感器网络的高效通信,结合环境监测应用场景,详细讲解节点部署、数据采集与传输优化,助力构建稳定可靠的低功耗监测系统。

weixin_31800911的博客 399

应用框架(AF)

http://blog.163.com/ssou_1985/blog/static/2953203620121012112749593/ 应用框架(AF) 应用框架层是应用道APS层的OTA数据接口。此层也接收数据消息的终端多路复用器。AF为应用提供以下功能: ·                     终端(Endpoint)管理 ·     

诺尔曼 1974

【鸿蒙南向开发】OpenHarmony——分布式数据对象之功能实践

通过本文的学习可了解到分布式数据对象的主要接口、大致调用方法和功能实现等。结合对应内容,可以进一步对分布式数据对象同步机制做深度学习。下一步,(1) 着重理解同步组网的构建原理。(2) 着重理解同步组网内,监听change和status变化的实现。●如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:●关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识。

HarmonyOS_666的博客 1089

Z-Stack3.0.2协议栈能入网多少个设备

Z-Stack3.0.2协议栈能入网多少个设备 1、系统信息 协议栈 Z-Stack3.0.2 协调器 CC2538 路由器 CC2530 终端 CC2530 2、协调器能直连多少个终端设备和路由设备   在预编译中设置“NWK_MAX_DEVICE_LIST”:此参数设置协调器最大能直连多少个“Zigbee3.0以下版本”的设备,如果是“Zigbee3.0版本”的设备...

Jesse_嘉伟的专栏 1899

从寄存器到驱动:深入解读RFSoC RF-ADC阈值与校准API的底层逻辑

本文深入解析Xilinx RFSoC中RF-ADC的阈值检测与校准API的底层逻辑,涵盖寄存器映射、驱动实现及Gen3增强功能。通过详细代码示例和寄存器操作流程,揭示如何精准控制信号阈值检测与校准时序,提升系统稳定性与性能。特别探讨RF数据转换器在无线通信和雷达信号处理中的关键应用。

weixin_30552811的博客 687

Cadence IC617仿真实践:有源电流镜的共模抑制比优化策略

本文基于Cadence IC617平台,详细介绍了有源电流镜共模抑制比(CMRR)的仿真与优化全流程。从电路搭建、DC工作点分析到AC仿真获取差模/共模增益,逐步解析CMRR计算方法。核心优化策略包括提升电流镜输出阻抗、优化差分对匹配性及调整晶体管尺寸,并探讨了与电源抑制比(PSRR)的权衡,为模拟集成电路设计提供实用指南。

weixin_29313817的博客 183

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

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

TOM的专栏 3236

rv1106 模型部署

ONNX(Open Neural Network Exchange),开放神经网络交换,是一种模型IR,用于在各种深度学习训练和推理框架转换的一个中间表示格式,支持多种深度学习框架,包括 TensorFlow、PyTorch、Caffe 等。将模型转换为 ONNX 格式后,可以更容易地在不同的深度学习框架中进行部署和推理,而无需重新训练模型。

weixin_50993868的博客 1285

zigbee学习笔记-----单播、广播、组播、绑定

这篇博文主要和大家分享一下我在学习这四种数据发送模式的时候踩过的坑,以及一些心得。在介绍发送数据模式之前有必要先介绍一下终端(endpoint)的管理,我可是在这上面踩过大坑的,为方便讨论已,现在约定以下终端(endpoint)和端点(endpoint)以及端口号为同一个意思。 每个终端必须被注册了才能被使用,否则是接收不到数据的。我以前以为终端注册了只是在别的节点查询周围节点描述符时才会用到,...

qq_42370291的博客 2086

从 30 天试用到企业级落地,2026 年学习和试用 SAP AI 的完整路线图

摘要:SAP AI产品体系存在试用版本与商业版本的边界模糊问题,需区分业务嵌入AI(如Joule)、开发者工具(SAP Build Code)和AI基础平台(Generative AI Hub)三个层级。建议学习路径:1)通过SAP Learning专区掌握理论框架;2)优先使用30天Generative AI Hub基础试用体验模型编排;3)结合90天BTP试用账户开发完整应用。特别注意免费计划已陆续停止,需以最新官方文档为准。开发者应重点关注AI如何与SAP技术栈(CAP、Fiori等)集成,而非单纯功

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 114

腾讯Android开发面试指南与参考答案

腾讯深圳元宝高级Android开发工程师岗位要求3-5年Android开发经验,熟悉Kotlin和性能优化,具备架构设计能力。岗位职责包括元宝Android客户端研发、稳定性优化及跨团队协作。面试重点考察Kotlin、Jetpack Compose、多线程编程等核心技术,3轮线上面试流程较快。无AI项目经验也可应聘,需突出展示Android架构设计、性能调优等实战能力。建议准备Compose开发、算法等加分项案例。

郑伟强dev的专栏 1132

ZStack API解读

网络层(NWK)  网络层为高层提供下面函数功能:  · 网络管理  · 地址管理  · 网络变量和效能函数  除了管理功能外,NWK还提供数据服务,只是应用不能访问数据服务。应用需要通过AF数据接口AF_DataRequest()来发送数据。  网络管理  ZStatus_t NLME_NetworkDiscoveryRequest( uint32 ScanChannels,b

cucmakeit的专栏 1813

基于树莓派4B与NCNN的YOLOv8高效部署实战:无GPU环境下的C++加速优化全流程指南**

本文详细介绍了在树莓派4B上基于NCNN框架部署YOLOv8目标检测模型的全流程。内容包括:从PyTorch模型导出NCNN格式文件、树莓派环境配置(OpenCV和NCNN编译)、C++实现代码解析(含模型加载、推理及后处理),以及实际部署测试结果。在树莓派4B上达到约2FPS,并提供INT8量化、多线程等优化建议。该方案为无GPU设备提供了轻量化目标检测的实用部署方案,适合边缘计算场景。

FJN110的博客 917

深度解读:ZStack混合云如何实现网络互联互通?

近年来,得益于SDN的快速发展,数据中心建设不再与用户业务绑定,而将网络互联的任务交给IaaS服务商来完成。ZStack做为IaaS云服务商中的一员,从ZStack 1.8版本开始,ZStack云路由就开始承担起日益复杂的网络建设任务。随着越来越多的用户将业务迁移云上,ZStack也开始支持越来越多复杂的网络功能。     部署混合云,网络打通是难点     从当前市场趋势以及Gartner、

qq_41443030的博客 4888

【数字IC验证快速入门】26、SystemVerilog项目实践之AHB-SRAMC(6)(AHB-SRAMC SVTB Overview)

导读:作者有幸在中国电子信息领域的排头兵院校“电子科技大学”攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思、清华紫光、联发科技等业界顶尖集成电路相关企业面授课程,对数字IC验证有了一些知识积累和学习心得。为帮助想入门前端IC验证的朋友,思忱一二后,特开此专栏,以期花最短的时间,走最少的弯路,学最多的IC验证技术知识。 文章目录一、内容概述二、AHB-SRAMC 验证计划 一、内容概述 AHB-SRAMC 验证计划 AHB-SRAMC 验证平台的架构图 AHB-SRAMC 验证平台的代.

悟已往之不谏 知来者之可追 2650

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ZigBee学习之17——ZStack API解读5

网络层(NWK) 网络层为高层提供下面函数功能: ·                     网络管理 ·                     地址管理 ·                     网络变量和效能函数 除了管理功能外,NWK还提供数据服务,只是应用不能访问数据服务。应用需要通过AF数据接口AF_DataRequest()来发送数据。 网络管理

xiaoaide01的专栏 1241

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ZigBee学习之17——ZStack 网络层API解读

 网络层(NWK) 网络层为高层提供下面函数功能: ·                     网络管理 ·                     地址管理 ·                     网络变量和效能函数 除了管理功能外,NWK还提供数据服务,只是应用不能访问数据服务。应用需要通过AF数据接口AF_DataRequest()来

jk110333的专栏 3401

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

ZStack云计算入门视频解读(附视频及QA)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33785972的博客 413

替代VMware VCF | 详解ZStack Cloud开放架构与异构整合能力

企业 VMware 迁移无单一替代方案,需多元技术组合。ZStack 凭产品组合实现对VMware 100%核心场景替代。其 Cloud 开放架构具解耦、异构适配等优势,为数字化转型深水区提供灵活路径。

ZStack_io的博客 682

Zigbee学习Zstack【转】

【原创】ZigBee学习之1——SPI&LCD - 小组 - EDN China 【原创】ZigBee学习之2——SPI&LCD - 小组 - EDN China ZigBee学习之3——USART之UART - longhaihai's Blog -EDN Chi... 【原创】ZigBee学习之4——DMA - longhaihai's Blog -EDNCh

挨踢 打工仔 665

ZStack协议栈深度解析:从源码结构到OSAL任务调度实战

本文深入解析ZStack协议栈的架构与实现,从源码结构到OSAL任务调度机制,提供ZigBee开发的实战指南。通过ZStack2.5.1a版本的具体案例,详细讲解如何创建自定义任务、优化性能及避免常见陷阱,帮助开发者高效构建物联网应用。

weixin_42535461的博客 399

云轴科技ZStack AI多语种翻译平台建设实践

本文主要聚焦多语种场景,从ZStack文档实践出发,围绕本地模型部署与精调、一站式AI翻译平台设计思路、实际建设难题与攻克等要点,向大家全面深入介绍ZStack AI多语种翻译平台建设的成功实践。

ZStack_io的博客 876

4、ZStack云平台功能概述

文章目录前言一:云平台功能1.1:首页介绍1.2:云资源池功能1.3:硬件设施1.4:网络资源1.5:网络服务1.6:平台运维1.7:平台管理1.8:设置1.9:云平台功能总结谢谢赏阅,如有疑问可以私信我或者评论区交流! 前言 一:云平台功能 1.1:首页介绍 首页每一个都是一个功能模块,每一个功能模块都是字面意思,很简单 1.2:云资源池功能 云主机的各种操作 云盘 为云主机提供虚拟逻辑存储,创建后绑定云主机即可。 镜像 用于创建云主机的镜像,先创建镜像,创建云主机时选择镜像

CN_TangZheng的博客 1375

如何在私有云语境下定义VPC

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33737134的博客 399

基于HarmonyOS ArkTS API 24响应式编程模型的核心机制之一,与 Vue.js 的 reactive 或 MobX 的 observable 在理念上相通

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。本文以一个名为"智能账单"的三标签页记账应用为切入点,逐层拆解其数据模型设计、@Builder 组件复用策略、@State 状态管理机制、条件渲染导航模式,以及静态写死渲染与动态循环渲染之间的性能权衡,为

jin421352的博客 159
上一篇: S3C6410 IROM启动
下一篇: Zstack Zmain流程
shareCode
博客等级 码龄15年 125粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值