【BLE-CC2640】CC2640之广播MAC
来源:互联网 发布:中国近10年gdp数据 编辑:程序博客网 时间:2024/05/29 06:37
本篇博文最后修改时间:2017年02月16日,15:30。
一、简介
本文以SimpleBLEPeripheral工程为例,介绍如何将mac放在扫描应答数据中广播出去。
二、实验平台
协议栈版本:ble_cc26xx_2_01_00_44423
编译软件:IAR Embedded Workbench for ARM Version 7.40
硬件平台:CC26xxDK开发板(阿莫)
仿真器:XDS100V3(阿莫)
手机平台:小米4S
APP:BLE读写器
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.NET/feilusia
联系方式:897503845@qq.com
香瓜BLE之CC2541群:127442605
香瓜BLE之CC2640群:557278427
香瓜BLE之Android群:541462902
香瓜单片机之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
四、实验前提
1、在进行本文步骤前,请先阅读以下博文:
1)《CC2541之广播MAC》:http://blog.csdn.net/feilusia/article/details/48176695
2、在进行本文步骤前,请先实现以下博文:
五、实验步骤
1、修改扫描应答缓冲区(替换SimpleBLEPeripheral.c中的scanRspData数组)
// GAP - SCAN RSP data (max size = 31 bytes)static uint8_t scanRspData[] ={ // complete name //0x14, // length of this data 0x11, GAP_ADTYPE_LOCAL_NAME_COMPLETE, 0x47, //G 0x55, //U 0x41, //A 0x23, //# 0x20, //给MAC地址预留位置 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, /* 0x53, // 'S' 0x69, // 'i' 0x6d, // 'm' 0x70, // 'p' 0x6c, // 'l' 0x65, // 'e' 0x42, // 'B' 0x4c, // 'L' 0x45, // 'E' 0x50, // 'P' 0x65, // 'e' 0x72, // 'r' 0x69, // 'i' 0x70, // 'p' 0x68, // 'h' 0x65, // 'e' 0x72, // 'r' 0x61, // 'a' 0x6c, // 'l' */ // connection interval range 0x05, // length of this data GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE, LO_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), // 100ms HI_UINT16(DEFAULT_DESIRED_MIN_CONN_INTERVAL), LO_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), // 1s HI_UINT16(DEFAULT_DESIRED_MAX_CONN_INTERVAL), // Tx power level 0x02, // length of this data GAP_ADTYPE_POWER_LEVEL, 0 // 0dBm};
2、添加读取mac的相关函数
1)添加读取mac的相关函数(SimpleBLEPeripheral.c中)
//****************************************************************************** //name: GUA_Read_Mac //introduce: 香瓜的读mac函数 //parameter: pGUA_Address:6个字节的mac地址缓冲区 //return: none //author: 甜甜的大香瓜 //email: 897503845@qq.com //QQ group 香瓜BLE之CC2640(557278427) //changetime: 2016.09.12 //****************************************************************************** static void GUA_Read_Mac(uint8 *pGUA_Address) { uint32_t nGUA_Mac0 = HWREG(FCFG1_BASE + FCFG1_O_MAC_BLE_0); uint32_t nGUA_Mac1 = HWREG(FCFG1_BASE + FCFG1_O_MAC_BLE_1); pGUA_Address[5] = nGUA_Mac0; pGUA_Address[4] = nGUA_Mac0 >> 8; pGUA_Address[3] = nGUA_Mac0 >> 16; pGUA_Address[2] = nGUA_Mac0 >> 24; pGUA_Address[1] = nGUA_Mac1; pGUA_Address[0] = nGUA_Mac1 >> 8;} //****************************************************************************** //name: GUA_Addr2Str //introduce: 16进制地址转字符串 //parameter: pGUA_Addr:6个字节的十六进制mac地址 //return: 12字节的字符串mac地址 //author: 甜甜的大香瓜 //email: 897503845@qq.com //QQ group 香瓜BLE之CC2640(557278427) //changetime: 2016.09.12 //****************************************************************************** char *GUA_Addr2Str(uint8 *pGUA_Addr) { uint8 i; char bGUA_Hex[] = "0123456789ABCDEF"; static char bGUA_Str[B_ADDR_LEN*2]; char *pGUA_Str = bGUA_Str; for(i = B_ADDR_LEN; i > 0; i--) { *pGUA_Str++ = bGUA_Hex[*pGUA_Addr >> 4]; *pGUA_Str++ = bGUA_Hex[*pGUA_Addr++ & 0x0F]; } return bGUA_Str; }
2)声明读取mac的相关函数(SimpleBLEPeripheral.c中)
//GUAstatic void GUA_Read_Mac(uint8 *pGUA_Address);char *GUA_Addr2Str(uint8 *pGUA_Addr);//GUA
3、初始化扫描应答数据(SimpleBLEPeripheral.c的SimpleBLEPeripheral_Init中)
将
GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData), scanRspData);替换为
//广播mac { uint8 nGUA_Address[B_ADDR_LEN]; //将mac从flash中读出,并放入scanRspData缓冲区中 GUA_Read_Mac(nGUA_Address); memcpy(scanRspData+6, GUA_Addr2Str(nGUA_Address), 12); //将scanRspData设置为扫描应答缓冲区 GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof(scanRspData), scanRspData); }
五、实验结果
仿真并全速运行,用app可看到设备名称已经带上了mac。
因此,实验成功。
0 0
- 【BLE-CC2640】CC2640之广播MAC
- 【BLE-CC2640】CC2640之连接时广播
- 【BLE-CC2640】CC2640之主机端获取广播包数据
- CC2640之广播MAC地址
- CC2640之广播MAC地址
- 【BLE-CC2640】CC2640之LED
- 【BLE-CC2640】CC2640之按键
- 【BLE-CC2640】CC2640之串口
- 【BLE-CC2640】CC2640之RTC
- 【BLE-CC2640】CC2640之OLED
- 【BLE-CC2640】CC2640之bootloader
- 【BLE-CC2640】CC2640之SNV
- [BLE]CC2640之ANCS
- 【BLE-CC2640】CC2640之快速入门
- 【BLE-CC2640】CC2640之自定义按键
- 【BLE-CC2640】CC2640之添加自定义服务
- 【BLE-CC2640】CC2640之自定义周期事件
- 【BLE-CC2640】CC2640之配对与绑定
- 安卓spinner
- angualrjs 学习笔记初篇
- Android PHP服务网络交互POST
- [leetcode]397. Integer Replacement
- Android文件三种上传方式总结
- 【BLE-CC2640】CC2640之广播MAC
- Quartz 2D 涂鸦
- 猫猫学IOS(三十四)UI之Quartz2D画画板的实现
- swift代码之路(三)AF网络请求
- iOS Quartz2D简介
- ubuntu 开发工具的安装 Ubuntu Make
- 【Leetcode】Integer Break
- 杂谈
- DOS常用命令篇