CC2541广播MAC地址
来源:互联网 发布:房地产大数据税收分析 编辑:程序博客网 时间:2024/04/30 01:27
一、简述
在实际BLE应用开发中,需要设备广播蓝牙标签MAC,比如苹果手机获取不到设备Mac,这是需要广播设备信息中附带MAC标识,外加自定义广播数据,如果考虑到存在安全隐患,因为广播包随时都可以被抓包。BLE协议栈自带加密解密API函数,可以通过调用此函数实现。如下:
//加密函数LL_Encrypt(uint8 *key,uint8 *plaintextData,uint8 *encryptedData ); //解密函数LL_EXT_Decrypt( uint8 *key,uint8 *encryptedData,uint8 *plaintextData );
这里主要介绍如何广播MAC地址,有两种实现方式:通过直接读寄存器和调用系统API函数,本篇介绍通过直接读寄存器方式获取MAC,通过调用API函数如下:
GAPRole_GetParameter(GAPROLE_BD_ADDR, MacAddress);
但是在系统初始化的时候只能通过读寄存器的方式实现,不能调用API获取MAC,此时MAC还未填入该变量中。
二、软件环境
协议栈版本:BLE-CC254x-1.4.0
编译器:IAR 8.20.2
三、步骤
1.读寄存器值,获取芯片MAC:
根据数据手册描述,从0x780e开始读6个字节就得到MAC地址了。
2.读取芯片MAC函数如下:
/************************************************** Function name: Get_Mac description: Read the register value to get the Mac param[in]: MacAddressReturn: none **************************************************/ static void Get_Mac(uint8 *MacAddress) { MacAddress[5] = XREG(0x780E); MacAddress[4] = XREG(0x780F); MacAddress[3] = XREG(0x7810); MacAddress[2] = XREG(0x7811); MacAddress[1] = XREG(0x7812); MacAddress[0] = XREG(0x7813); }
3.修改广播数组,预留6个字节MAC位置:
// GAP - Advertisement data (max size = 31 bytes, though this is// best kept short to conserve power while advertisting)static uint8 advertData[] = { // Flags; this sets the device to use limited discoverable // mode (advertises for 30 seconds at a time) instead of general // discoverable mode (advertises indefinitely) 0x02, // length of this data GAP_ADTYPE_FLAGS, GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED, // three-byte broadcast of the data "1 2 3" 0x07, // length of this data including the data type byte GAP_ADTYPE_MANUFACTURER_SPECIFIC, // manufacturer specific advertisement data type 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,};
4.修改系统初始化函数SimpleBLEBroadcaster_Init:
uint8 MacAddress[B_ADDR_LEN];Get_Mac(MacAddress);osal_memcpy(advertData+5,MacAddress,6);GAPRole_SetParameter(GAPROLE_ADVERT_DATA,sizeof( advertData ), advertData );
5.通过SmartRF Flash Programmer查看芯片MAC地址:
6.通过SmartRF Packet Sniffer进行抓包查看广播数组中是否添加了MAC地址:
7.在手机端APP验证,确实获取到了MAC地址,验证程序可行:
本博文更新于2017-03-02 21:53。
1 0
- CC2541广播MAC地址
- 【BLE】CC2541之广播MAC
- CC2541 CC2540 之自定义MAC地址读取
- CC2541-修改蓝牙名称和mac地址
- CC2541-修改蓝牙名称和mac地址
- 广播mac地址
- 广播包里加MAC地址
- CC2640之广播MAC地址
- CC2640之广播MAC地址
- BLE协议栈之读取CC2541的MAC地址
- BLE协议栈之读取CC2541的MAC地址
- 【BLE】CC2541获取设备的MAC地址实验
- cc2541 低功耗广播
- 蓝牙4.0广播数据添加MAC地址
- 【BLE】CC2541之动态广播
- CC2541之连接时广播
- BLE CC2541修改广播时间
- MAC地址解析-广播地址、组播地址和单播地址的特征
- 17行代码 搞定词云图
- SVN 服务端、客户端安装及配置、导入导出项目
- java 蓝桥杯 九数分组
- HDU2018
- 矩阵最小路径和练习
- CC2541广播MAC地址
- Manycore Programming: CUDA 2
- win 10 安装 mysql解压版 步骤
- sticky footer 布局
- IOS
- 团体程序设计天梯赛L3-005 垃圾箱分布
- oj3099: 大家的周工资
- IO流_如何解决序列化时候的黄色警告线问题
- 多图上传以及多图排序的方法及流程详解