【BLE】CC2541之动态广播加密数据
本篇博文最后修改时间:2017年03月30日,16:33。
一、简介
本文以SimpleBLEPeripheral为例,每5S来动态更新广播一次16字节的加密数据,其中有效数据为1个字节的计数值。
二、实验平台
协议栈版本:BLE-CC254x-1.4.0
编译软件:IAR 8.20.2
硬件平台:Smart RF开发板(主芯片CC2541)、USB Dongle
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.NET/feilusia
联系方式:897503845@qq.com
香瓜BLE之CC2541群:127442605
香瓜BLE之CC2640群:557278427
香瓜BLE之Android群:541462902
香瓜单片机之职场交流群:450154342
//GUA //定时更新广播事件 if ( events & SBP_GUA_UPDATE_ADV_EVT ) { uint8 nGUA_Adv_Status; uint8 nbGUA_AES_Data[16] = {0}; //需要加密的数据 uint8 nbGUA_AES_EncryptedData[16] = {0}; //加密后数据存放区 uint8 nbGUA_Adv_Update[] = { //广播类型段0x02, GAP_ADTYPE_FLAGS,DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,//服务UUID段0x03, GAP_ADTYPE_16BIT_MORE, LO_UINT16( SIMPLEPROFILE_SERV_UUID ),HI_UINT16( SIMPLEPROFILE_SERV_UUID ),//GUA//加密数据段0x11, //1字节类型+16字节自定义加密数据GAP_ADTYPE_MANUFACTURER_SPECIFIC, //自定义类型0x00, //自定义数据预留0x00, //自定义数据预留 0x00, //自定义数据预留0x00, //自定义数据预留 0x00, //自定义数据预留0x00, //自定义数据预留 0x00, //自定义数据预留0x00, //自定义数据预留 0x00, //自定义数据预留0x00, //自定义数据预留 0x00, //自定义数据预留0x00, //自定义数据预留 0x00, //自定义数据预留0x00, //自定义数据预留 0x00, //自定义数据预留0x00, //自定义数据预留 //GUA }; //关广播nGUA_Adv_Status = FALSE; GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &nGUA_Adv_Status);//加密计数值nbGUA_AES_Data[0] = ++sGUA_Count;GUA_AES_Encrypted(nbGUA_AES_Data, nbGUA_AES_EncryptedData); //修改广播数据osal_memcpy(nbGUA_Adv_Update + 9, nbGUA_AES_EncryptedData, 16);//更新广播数据 GAP_UpdateAdvertisingData(simpleBLEPeripheral_TaskID, TRUE, sizeof(nbGUA_Adv_Update), nbGUA_Adv_Update); //开广播nGUA_Adv_Status = TRUE; GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &nGUA_Adv_Status);//5S启动一次更新广播的事件osal_start_timerEx(simpleBLEPeripheral_TaskID, SBP_GUA_UPDATE_ADV_EVT, 5000); return (events ^ SBP_GUA_UPDATE_ADV_EVT); }
//GUA
2)添加事件的宏定义(SimpleBLEPeripheral.h中)
#define SBP_GUA_UPDATE_ADV_EVT 0x0008
2、添加动态广播的部分代码
//GUA
static uint8 sGUA_Count = 1;
//GUA
2)初始化阶段关闭广播(修改SimpleBLEPeripheral.c中的SimpleBLEPeripheral_Init函数)
//GUAuint8 initial_advertising_enable = FALSE;//TRUE;//GUA
3)初始化结束后启动香瓜的定时更新广播事件(SimpleBLEPeripheral.c中的SimpleBLEPeripheral_ProcessEvent函数)
//GUA //立即启动一次更新广播的事件osal_start_timerEx(simpleBLEPeripheral_TaskID, SBP_GUA_UPDATE_ADV_EVT, 0);
//GUA
//关广播 //nGUA_Adv_Status = FALSE; //GAPRole_SetParameter(GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &nGUA_Adv_Status);
实测不关闭广播方式也能更新广播,并且底层的更新处理时间由5S缩短至1S。
【BLE】CC2541之动态广播加密数据相关推荐
- [Telink][TLSR8251] [泰凌微][SDK3.4] 添加广播内容 和 动态广播 厂商信息
文章目录 一. 广播类型 实现动态广播的方法是: 广播->停止广播->修改参数->重启广播 二.什么是蓝牙动态广播? 1.1 前导 1.2 接入地址 1.3 报头 1.3.1 广播报 ...
- Android 动态广播与静态广播
学而时习,稳固而之心 目前推荐使用动态广播,现在已经很就没有使用过静态广播了. 动态广播与静态广播的联系 1 动态广播的速度要快于静态广播 2 静态广播的生存期可以比动态广播的长很多 在Manifes ...
- android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0
BLE的体系结构主要由三部分组成,分别是控制器(controller),主机(Host)和应用程序(Application),如下图所示: BLE体系结构 Application layer顾名思义主 ...
- android动态静态广播,Android BroadcastReceiver实现自定义静态广播和动态广播(黏性广播)...
思维导图: 静态广播: 当广播发出去的时候 如果接收广播的应用程序已经退出,也能接收广播: 发送者代码: package com.example.g160628_android_21_sender; ...
- BroadcastReceiver之动态广播 demo+笔记
在Android中,Broadcast是一种广泛运用在应用程序之间传输信息的机制.而BroadcastReceiver是对发送出来的 Broadcast进行过滤接收并响应的一类组件(任何一个程序都能接 ...
- Android在Service中注册动态广播接收者
Android广播分为动态.静态广播. 广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册的广播 永远要快于 静态注册的广播,不管静态注册的优先级设置的多高 ...
- SparkStreaming稽查布控/动态广播变量(处理电信数据)
SparkStreaming稽查布控/动态广播变量 需求: 1. 在mysql中建表 2. 在虚拟机中使用指令:nc -lk 8888 3. 在IDEA中编写代码 数据如下 需求: 1. 在mysql ...
- Android动态广播添加权限
第一步:自己定义权限,并且使用自定义权限 <uses-permission android:name="com.cn.customview.permissions.MY_BROADCA ...
- android 发送广播 接收广播 动态广播接收
1. 静态广播 见网址: http://www.devdiv.com/forum.php?mod=viewthread&tid=48614 2.同时多个动态广播 private Broadca ...
最新文章
- IntelliJ IDEA 2019从入门到癫狂 图文教程!
- loguru log 日志的使用
- 一文读懂深度学习:这个AI核心技术被美国掌控,很危险
- python request-python-request-各方法使用及格式
- SQL Server R2 地图报表制作(四)
- 两种参数类型_深入理解Java中方法的参数传递机制
- 手机MODEM 开发(32)--VOLTE 信令
- 【东软实训】SQL函数
- BI工具选型需考虑哪些问题
- as5300g2 nas软件功能_浪潮AS5300G2 5500G2存储2U12
- UE4运行时交互工具框架
- 解决Xcode 9.x 没有代码提示
- linux下可执行文件无法执行问题定位排查
- 仿网易云手机版代码_网易uu加速器官网下载-网易uu加速器手机版下载
- 借助 Lucene.Net 构建站内搜索引擎(下)
- 第三章 分布式扩展(一)
- 仿真工具打开raw报cannot load library XXX.dll错误
- 容器启动失败 ERROR: for log Cannot start service log: OCI runtime create failed: container_linux.go:346
- 分析一种简单的提高功率因数的电路——填谷电路
- aqs clh java_Java并发编程:AQS对CLH锁的优化
热门文章
- PTA 一维数组 7-3 删除指定数据
- 计算机打开共享网络连接打印机共享打印机,网络共享打印机连接不上怎么办_电脑连不上共享打印机如何解决-win7之家...
- 快来学学爱用建站新功能【Light Press】微单页,超级实用
- 2021新网银行金融科技挑战赛 Baseline
- Leetcode-1737-满足三条件之一需改变的最少字符数
- 初学者用Eclipse和IDEA哪个好用一点?
- 51单片机 Proteus仿真 时钟 串口 发送时钟 整点报时
- Symbian程序安装不成功的解决方法
- javaWeb课程设网上报名系统
- CCF认证 201712-4 行车路线(100分)