There is possible to set your CC254X be scanable when it is in connection. But, based on my test,the connecting would be sluggish if you modify the code as below steps:



  0. Check your BLE stack being 1.3.2 , if that is not, I apologize. if it is,  Backup the file :  TiBLEStackInstallationFolder\BLE-CC254x-1.3.2\Projects\ble\Profiles\Roles\peripheralBroadcaster.c.



 1. Substitute the file peripheral.c as  peripheralBroadcaster.c in your IAR project. That is, enable PLUS_BROADCASTER macro in preprocessor define, exclude peripheral.c, and include peripheralBroadcaster.c in your project.





Open the peripheralBroadcaster.c, it should be modified.



2. for line 45 : add the line :



    #include "hci_tl.h"

:
#include "hci.h"
#include "hci_tl.h"
#include "l2cap.h"
 

it is for passing compilation.



3. For line 641, change the line :

// Initialize the Profile Advertising and Connection Parameters
gapRole_profileRole = GAP_PROFILE_PERIPHERAL;

As :

#if(1)  //GAIGER
gapRole_profileRole = GAP_PROFILE_PERIPHERAL;
#else
gapRole_profileRole = (GAP_PROFILE_PERIPHERAL | GAP_PROFILE_BROADCASTER);
#endif

The peripheral could advertise now.





3. At the line 927 :

// Since gapRole_AdvertOffTime is set to 0, the device should not
// automatically become discoverable again after a period of time.
// Set enabler to FALSE; device will become discoverable again when
// this value gets set to TRUE
gapRole_AdvEnabled = FALSE;

Modify it as :

              // Since gapRole_AdvertOffTime is set to 0, the device should not
// automatically become discoverable again after a period of time.
// Set enabler to FALSE; device will become discoverable again when
// this value gets set to TRUE
#if(0) //GAIGER
gapRole_AdvEnabled = FALSE;
#else
osal_start_timerEx( gapRole_TaskID, START_ADVERTISING_EVT, 1000);
#endif

The device would keep advertising which it is connected.



4. For the line 937 :

  // Check whether update parameter request is enabled, and check the connection parameters
if ( ( gapRole_ParamUpdateEnable == TRUE ) &&
( (pPkt->connInterval < gapRole_MinConnInterval) ||
(pPkt->connInterval > gapRole_MaxConnInterval) ||
(pPkt->connLatency != gapRole_SlaveLatency) ||
(pPkt->connTimeout != gapRole_TimeoutMultiplier) ))
{
gapRole_SendUpdateParam( pPkt->connInterval, pPkt->connLatency );
} // Notify the Bond Manager to the connection
VOID GAPBondMgr_LinkEst( pPkt->devAddrType, pPkt->devAddr, pPkt->connectionHandle, GAP_PROFILE_PERIPHERAL );

There should be insert a line for resuming advertise after disconnection event occuring:

  // Check whether update parameter request is enabled, and check the connection parameters
if ( ( gapRole_ParamUpdateEnable == TRUE ) &&
( (pPkt->connInterval < gapRole_MinConnInterval) ||
(pPkt->connInterval > gapRole_MaxConnInterval) ||
(pPkt->connLatency != gapRole_SlaveLatency) ||
(pPkt->connTimeout != gapRole_TimeoutMultiplier) ))
{
gapRole_SendUpdateParam( pPkt->connInterval, pPkt->connLatency );
} #if(1) //GAIGER
VOID osal_set_event( gapRole_TaskID, START_ADVERTISING_EVT );
#endif
// Notify the Bond Manager to the connection
VOID GAPBondMgr_LinkEst( pPkt->devAddrType, pPkt->devAddr, pPkt->connectionHandle, GAP_PROFILE_PERIPHERAL );

It is all, now the goal has been reached. Your cc 254x could keep advertising while it is on connection.



  I noet agagin, that would lead your peripheral be slow on connecting: it costs 5~8 seconds to discover services by using BLE scaner on my Sony Xperia Z3 compact, but for pure peripheral, it costs 1 second only at worst case.



  This method is refered from Texas  forum threads:



 https://e2e.ti.com/support/wireless_connectivity/f/538/t/197769



keyMatch=gaiger&tisearch=Search-CN-Everything">http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/88540.aspx?

keyMatch=gaiger&tisearch=Search-CN-Everything

CC2540/CC2541 : Set the Peripheral Being Advertising while It is Being Connected的更多相关文章

  1. CC254x(cc2540/cc2541)的微信AirSync调试笔记

    一.前言 本尊自诩为IOT小能手,一直没涉足蓝牙实在说不过去.刚好上个月底的时候计划做个BLE设备,这阵子利用业余时间自学了BLE协议栈,了解了GATT,磕磕绊绊完成CC254x(cc2540/cc2 ...

  2. 蓝牙4.0BLE cc2540 cc2541 ios OAD课程(空中固件升级)[原版的,多图]

           蓝牙4.0BLE cc2540 cc2541 ios OAD课程(件) 为阿莫单片机论坛  www.AmoMcu.com 原创.仅仅公布于csdn博客, 如需转载,请注明出处,谢谢!   ...

  3. 蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现

           蓝牙4.0BLE 手机控制 cc2540 CC2541 的串口透传功能已实现        尽管蓝牙4.0 BLE芯片CC2540 是单芯片(即用户能够对它进行芯片级代码编写), 是80 ...

  4. cc2540 cc2541 开发板资料更新日志

    经过多次PCB打样和全面调试.已经完毕了cc2540 cc2541的开发板的批量贴片.硬件告一段落, 接下来是全面完好软件方面的工作.眼下已经针对没有开发经验的用户编写完毕0基础基础实验代码和教程.接 ...

  5. CC2540 / CC2541 竟然支持 Bluetooth BLE 5.0?

    CC2540 / CC2541 竟然支持 Bluetooth BLE 5.0? 无意中发现 CC2541 的 BLE 协议栈更新了. BLE-STACK is Bluetooth 5.0 qualif ...

  6. cc2540 cc2541 低功耗实測和总结-与注意事项 - 低功耗小于10uA

    CC2541 CC2540 实现超低功耗是很重要的: 我们来总结一下实现方法: 1,有定时器在跑时会一直跑在  PM2  电流在  300uA左右.    没有定时器跑后会到 PM3 , 电流会少于1 ...

  7. 2、利用蓝牙定位及姿态识别实现一个智能篮球场套件(二)——CC2540/CC2541基于广播的RSSI获得

    CC2541一拖多例程中RSSI获得是通过一个事件回调函数实现的,前提是需要连接上蓝牙设备. 这个对于多点定位来说是不可行的,由于主机搜索蓝牙设备过程中也能获得当前蓝牙设备的RSSI等信息,因此可基于 ...

  8. CC254x/CC2540/CC2541库函数速查(转)

    hci.h 转自:http://blog.csdn.net/xiaoleiacmer/article/details/44036607#t1 //分配内存,应用程序不应该调用这个函数. void *H ...

  9. 6、CC2541修改按键调节广播发送功率例程为持续发送4DB的蓝牙基站

    一.目的 在 OSAL操作系统-实验31 从机广播功率修改-(20141029更新).zip 基础上进行修改,该工程是通过5向按键的上下按键来控制广播功率的加减,总共有4个档位.我们的目的是直接用最高 ...

随机推荐

  1. Cocos2d-x 2.2.3 使用NDK配置安卓编译环境问题之 Cannot find module with tag &#39;CocosDenshion/android&#39; in import path

    1.当做安卓移植的时候遇到例如以下问题: Android NDK: jni/Android.mk: Cannot find module with tag 'CocosDenshion/android ...

  2. Highcharts数据表示(2)

    Highcharts数据表示(2) 数据节点是图表中最小的元素.每一个数据节点都是一个数据单元. 它确定了图表中一个图形元素的各种信息.一个数据节点通常包含下面三类信息: 1.坐标位置信息 因为Hig ...

  3. c11---位运算相关

    // // main.c // 03-原码反码补码 #include <stdio.h> int main(int argc, const char * argv[]) { // int占 ...

  4. [POI 2007] 旅游景点

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1097 [算法] 首先,用Dijkstra算法求出2-k+1到每个点的最短路 然后,我 ...

  5. spring-boot系列:(一)整合dubbo

    spring-boot-2整合dubbo 新框架学习,必须上手干.书读百遍,其义自见. 本文主要介绍spring-boot-2整合dubbo,使用xml配置实现一个provider和consumer. ...

  6. maven、spring jdbc与mysql、mybatis

    以它们之前的一个简单用例作为实例. 一个简单的能跑起来的实例.原文网址.非常好的例子. http://www.open-open.com/lib/view/open1390534380648.html ...

  7. POJ 1471 模拟?

    题意:求最大无坏点三角形 思路: 模拟? (为什么我模拟过了...) 有人用 DP,有人用 搜索... // by SiriusRen #include <cstdio> #include ...

  8. 淘宝druid报错:javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat

    问题: 启动tomcat报错: Tomat报出一下异常:ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister m ...

  9. ubuntu16.04 安装 go

    1,下载go安装包wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz 2,解压 sudo tar -C /usr ...

  10. DB2查看表空间和增加表空间容量

    Db2 connect to xxx Db2 “LIST TABLESPACES SHOW DETAIL” Tablespace ID = 7 Name = TSASNAA Type = Databa ...