ZBOSS_Sniffer用开源方案实现CC2530的抓包

本文介绍了如何使用ZBOSS_Sniffer结合Wireshark实现CC2530的802.15.4抓包功能,包括下载安装步骤、配置串口、对比Wireshark与packet sniffer,并揭示Wireshark与CC2530的串口交互协议。
摘要由CSDN通过智能技术生成

接触zigbee一年多,一直以来都在寻找开源协议栈。在做CC2530的抓包功能时,偶然看到了这个。ZBOSSzigbee open source stackhttp://zboss.dsr-wireless.com/projects/zboss/

这是一个经过联盟认证的协议栈,比大家相对熟悉的FreakZ要好一点。从某个前辈那得知了几年前的一些历史故事,这个跟台湾UBEC颇具渊源的协议栈,是第一个通过联盟认证。一方面他有基于CC2530的工程,方便大家下手;另一方面,它的代码应该是比FreakZ还要好,至少从FreakZrelease note就能知道其动态内存方式还有问题。

如果有朋友对ZBOSS感兴趣,欢迎与我交流。

最近利用ZBOSS_Sniffer

以下是基于 ZigBee 协议栈的程序示例: ```c #include <stdio.h> #include <stdlib.h> #include "zboss_api.h" #include "zb_mem_config_med.h" #include "zb_error_handler.h" #define THRESHOLD 10 // 总数阈值为 10 #define ENDPOINT 10 // 设备的端点号 #define BUTTONS_ENDPOINT 11 // 按键的端点号 #define RED_LED_ENDPOINT 12 // 红灯的端点号 // 定义一个变量用于保存按键的次数 static uint8_t button_count = 0; // 定义一个回调函数用于处理按键事件 static void button_handler(zb_uint8_t param) { button_count++; } // 定义一个回调函数用于处理协调器的命令 static void command_handler(zb_uint8_t param) { zb_buf_t *buf = ZB_BUF_FROM_REF(param); zb_uint8_t *data = zb_buf_begin(buf); zb_uint8_t len = zb_buf_len(buf); if (len == sizeof(zb_uint8_t)) { zb_uint8_t threshold = data[0]; if (button_count >= threshold) { // 如果按键次数超过阈值,控制红灯亮起 zb_af_set_endpoint_status(ENDPOINT, RED_LED_ENDPOINT, ZB_ZCL_CLUSTER_ID_ON_OFF, ZB_ZCL_CLUSTER_SERVER_ROLE, ZB_DEVICE_INTERNAL_STATUS_ON); } } zb_buf_free(buf); } void zb_app_init() { // 注册按键事件 zb_af_set_data_indication(ENDPOINT, BUTTONS_ENDPOINT, button_handler); // 注册协调器命令处理器 zb_af_set_data_indication(ENDPOINT, RED_LED_ENDPOINT, command_handler); } void zb_app_start() { // 启动设备 zb_af_start(); } int main() { // 初始化 ZigBee 协议栈 ZB_INIT("button-counter"); // 设置设备的网络参数 zb_set_network_router_mode(); zb_set_channel(0x0FFF); zb_set_pan_id(0x1AAA); zb_set_extended_pan_id(0x1122334455667788); // 初始化设备 zb_app_init(); // 启动设备 zb_app_start(); // 循环处理事件 while (1) { zb_sched_loop_iteration(); } // 不会执行到这里 return 0; } ``` 以上代码中,我们定义了一个变量 `button_count` 用于保存按键的次数,当按键事件发生时,会自动调用 `button_handler` 回调函数,该函数会将 `button_count` 加 1。 当协调器收到命令时,会自动调用 `command_handler` 回调函数,该函数会解析命令中的阈值参数,如果 `button_count` 大于等于阈值,就会控制红灯亮起。 在实际应用中,你需要根据硬件平台和开发环境的不同,进行相应的修改和调试。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值