Zigbee 获取设备地址信息
第一种方法,利用NLME.h里面定义的专门API
获取设备自身IEEE地址
extern byte *NLME_GetExtAddr( void );
获取设备自身网络地址
extern uint16 NLME_GetShortAddr( void );
获取父设备网络地址
extern uint16 NLME_GetCoordShortAddr( void );
获取父设备IEEE地址
extern void NLME_GetCoordExtAddr( byte * );
第二种方法:
利用zb_GetDeviceInfo()函数
查看该函数定义即可知用法:
void zb_GetDeviceInfo ( uint8 param, void *pValue )
{
switch(param)
{
case ZB_INFO_DEV_STATE:
osal_memcpy(pValue, &devState, sizeof(uint8));
break;
case ZB_INFO_IEEE_ADDR:
osal_memcpy(pValue, &aExtendedAddress, Z_EXTADDR_LEN);
break;
case ZB_INFO_SHORT_ADDR:
osal_memcpy(pValue, &_NIB.nwkDevAddress, sizeof(uint16));
break;
case ZB_INFO_PARENT_SHORT_ADDR:
osal_memcpy(pValue, &_NIB.nwkCoordAddress, sizeof(uint16));
break;
case ZB_INFO_PARENT_IEEE_ADDR:
osal_memcpy(pValue, &_NIB.nwkCoordExtAddress, Z_EXTADDR_LEN);
break;
case ZB_INFO_CHANNEL:
osal_memcpy(pValue, &_NIB.nwkLogicalChannel, sizeof(uint8));
break;
case ZB_INFO_PAN_ID:
osal_memcpy(pValue, &_NIB.nwkPanId, sizeof(uint16));
break;
case ZB_INFO_EXT_PAN_ID:
osal_memcpy(pValue, &_NIB.extendedPANID, Z_EXTADDR_LEN);
break;
}
}
例如要获取设备短地址,可以这样:
uint16 my_short_addr;
zb_GetDeviceInfo(ZB_INFO_SHORT_ADDR,my_short_addr);
第三种方法:利用上述zb_GetDeviceInfo()函数的定义,同样可知,通过读取_NIB的值也可以获取地址信息,如下调用即可
uint16 my_short_addr = _NIB.nwkDevAddress;
第四种方法:直接读NV,方法如下:
#include "OSAL_Nv.h"
uint8 pValue[8];
osal_nv_read(ZCD_NV_EXTADDR ,0 , Z_EXTADDR_LEN, pValue);
pValue里保存的即是设备扩展地址
第五种方法,利用OnBoard.c里定义的全局变量aExtendedAddress获取IEEE地址,如下:
uint8 pValue[Z_EXTADDR_LEN];
osal_memcpy(pValue, &aExtendedAddress, Z_EXTADDR_LEN);
第六种方法,利用ZMacGetReq()函数,如下:
#include "ZMAC.h"
#include "zmac_internal.h"
uint8 pValue[Z_EXTADDR_LEN];
ZMacGetReq(ZMacExtAddr,pValue);
其中第3中方法是获得NIB属性,NIB属性如下:
typedef struct
{byte SequenceNum;byte PassiveAckTimeout;byte MaxBroadcastRetries;byte MaxChildren;byte MaxDepth;byte MaxRouters;//neighborEntry_t * pNeighborTable;byte dummyNeighborTable; // to make everything a byte!!byte BroadcastDeliveryTime;byte ReportConstantCost;byte RouteDiscRetries;//rtgEntry_t * pRoutingTable;byte dummyRoutingTable; // to make everything a byte!!byte SecureAllFrames;byte SecurityLevel;byte SymLink;byte CapabilityInfo;uint16 TransactionPersistenceTime;byte nwkProtocolVersion;// non-standard attributesbyte RouteDiscoveryTime;byte RouteExpiryTime; // set to 0 to turn off expiration of routes// non-settableuint16 nwkDevAddress;byte nwkLogicalChannel;uint16 nwkCoordAddress;byte nwkCoordExtAddress[Z_EXTADDR_LEN];uint16 nwkPanId;// Other global items - non-settablenwk_states_t nwkState;uint32 channelList;byte beaconOrder;byte superFrameOrder;byte scanDuration;byte battLifeExt;uint32 allocatedRouterAddresses;uint32 allocatedEndDeviceAddresses;byte nodeDepth;// Version 1.1 - extended PAN IDuint8 extendedPANID[Z_EXTADDR_LEN];// Key informationuint8 nwkKeyLoaded;nwkKeyDesc nwkActiveKey;nwkKeyDesc nwkAlternateKey;// Zigbee Pro extensionsuint8 nwkAddrAlloc;uint8 nwkUniqueAddr;uint8 nwkLinkStatusPeriod; // The time in seconds betwee link status// command framesuint8 nwkRouterAgeLimit; // The number of missed link status // command frames before resetting the // link cost to zerouint8 nwkUseMultiCast;// ZigBee Pro extentions: MTO routinguint8 nwkIsConcentrator; // If set, then the device is concentratoruint8 nwkConcentratorDiscoveryTime; // Time period between two consecutive MTO route discoveryuint8 nwkConcentratorRadius; // Broadcast radius of the MTO route discoveryuint8 nwkAllFresh;uint8 nwkSrcRtgExpiryTime;uint16 nwkManagerAddr; // Network Manager Addressuint16 nwkTotalTransmissions;uint8 nwkUpdateId;
} nwkIB_t;
其中第6中方法是获得MIB属性,MIB属性如下:
// MAC PIB Attributes
enum
{ZMacAckWaitDuration = MAC_ACK_WAIT_DURATION,ZMacAssociationPermit = MAC_ASSOCIATION_PERMIT,ZMacAutoRequest = MAC_AUTO_REQUEST,ZMacBattLifeExt = MAC_BATT_LIFE_EXT,ZMacBattLeftExtPeriods = MAC_BATT_LIFE_EXT_PERIODS,ZMacBeaconMSDU = MAC_BEACON_PAYLOAD,ZMacBeaconMSDULength = MAC_BEACON_PAYLOAD_LENGTH,ZMacBeaconOrder = MAC_BEACON_ORDER,ZMacBeaconTxTime = MAC_BEACON_TX_TIME,ZMacBSN = MAC_BSN,ZMacCoordExtendedAddress = MAC_COORD_EXTENDED_ADDRESS,ZMacCoordShortAddress = MAC_COORD_SHORT_ADDRESS,ZMacDSN = MAC_DSN,ZMacGTSPermit = MAC_GTS_PERMIT,ZMacMaxCSMABackoffs = MAC_MAX_CSMA_BACKOFFS,ZMacMinBE = MAC_MIN_BE,ZMacPanId = MAC_PAN_ID,ZMacPromiscuousMode = MAC_PROMISCUOUS_MODE,ZMacRxOnIdle = MAC_RX_ON_WHEN_IDLE,ZMacShortAddress = MAC_SHORT_ADDRESS,ZMacSuperframeOrder = MAC_SUPERFRAME_ORDER,ZMacTransactionPersistenceTime = MAC_TRANSACTION_PERSISTENCE_TIME,ZMacAssociatedPanCoord = MAC_ASSOCIATED_PAN_COORD,ZMacMaxBE = MAC_MAX_BE,ZMacMaxFrameTotalWaitTime = MAC_MAX_FRAME_TOTAL_WAIT_TIME,ZMacMaxFrameRetries = MAC_MAX_FRAME_RETRIES,ZMacResponseWaitTime = MAC_RESPONSE_WAIT_TIME,ZMacSyncSymbolOffset = MAC_SYNC_SYMBOL_OFFSET,ZMacTimestampSupported = MAC_TIMESTAMP_SUPPORTED,ZMacSecurityEnabled = MAC_SECURITY_ENABLED,// Proprietary ItemsZMacPhyTransmitPower = MAC_PHY_TRANSMIT_POWER,ZMacChannel = MAC_LOGICAL_CHANNEL,ZMacExtAddr = MAC_EXTENDED_ADDRESS,ZMacAltBE = MAC_ALT_BE,// JunkZMacACLDefaultSecurityMaterialLength = 0, // not implementedZMacTxGTSId = 1, // not implementedZMacUpperLayerType = 2, // not implementedZMacRxGTSId = 3, // not implementedZMacSnoozePermit = 4 // not implemented
};
转载于:https://www.cnblogs.com/-song/archive/2013/03/13/3331820.html
Zigbee 获取设备地址信息相关推荐
- Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...
- 小程序获取用户地址信息api
小程序获取用户地址信息api 前台部分 <view class="address-wraper"><view bindtap="chooseAddres ...
- 微信h5获取用户地址信息
微信h5页面获取用户地址信息(vue+Java)(清风竹语) 前言: 与之前获取用户信息相同,这次获取用户地址信息也是在用户进入该页面之后,通过取得用户经纬度,在调用高德地图的api获得位置信息. 流 ...
- 获取IP地址信息的API合集
今天给大家分享一些获取IP地址信息的API合集 一.ip.cn查询网获取当前客户端IP 二.ip查询网获取当前客户端IP 三.百度获取IP地址信息 四.本站获取当前客户端IP信息 五.其他平台获取IP ...
- WEB开发 高德地图应用,初始加载,地图定位,层级变化控制,根据经纬度获取详细地址信息,点击事件以及地图自适应
1.前台html位置准备 <div id="Sharingrouter"> <div id="container" r ...
- Android -- 获取设备硬件信息
Android – 获取设备硬件信息 通过 Build 获取指定字段信息: 信息 方法 例子 主板 Build.BOARD PAR 系统定制商 Build.BRAND HUAWEI 硬件名称 Buil ...
- Android 获取设备各种信息以及其它
做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...
- Linux下获取设备IPMI信息常用工具
1.asu (1)概述 asu是IBM官方提供的一个命令行工具,全称IBM Advanced Settings Utility,可以对IMM进行操作. (2)安装 从官网上下载asu对应的RPM安装包 ...
- iOS开发-获取设备型号信息
开发中有的时候查看设计统计数据,或者通过日志查看错误信息,这个时候我们就需要获取获取设备信息,看下关于设备有几种方法: 1 2 3 4 5 NSLog(@"%@",[[UIDevi ...
最新文章
- 防止代码变质的思考与方法
- 无刷新提交表单(非Ajax实现)
- 软件商店下载java_Sun升级Java应用商店
- WPF中读取txt文件并让其在RichTextBox中显示
- k8s:组件网络通讯方式
- 指令篇: 查看系统版本信息___uname
- JSP页面的继承(extends)
- IROS 2017上,这些厂商将会给我们展示什么样的黑科技?
- 网页动态加载图片 通过JS和jquery实现。
- 虚拟机如何设置ftp服务器,虚拟机设置ftp服务器配置
- c语言求20项FBNC,大学C语言 结业作业 暗影行者
- TF2.0-tf.keras.layers.Concatenate
- WinHTTP Web Proxy Auto-Discovery Service
- python求解LeetCode习题Fraction to Recurring Decimal
- 有幸为鲍勃大叔的封山之作《匠艺整洁之道》写了推荐序,顺手赠书!
- 后端开发面试自我介绍_Java后端面试总结
- 计算机注册表管理,注册表命令,教您电脑怎么打开注册表编辑器
- Photoshop照片模糊变清晰大全
- Python自动化测试中的参数化使用
- iOS之Swift实现二维码扫描