首先要搞清楚你的CSR8670是要传统蓝牙和BLE分别要作为那种角色,主设备还是从设备;

传统蓝牙和BLE可以同时成为主设备是但是分时通讯的;

传统蓝牙作为主设备和BLE作为从设备也可以同时工作;

但作为BLE从设备时,传统蓝牙就不能工作;这些是BT 4.0规范规定的。

先要初始化GATT,然后搜索BLE(CSR8675),再进行GATT连接,连接成功后认证,服务发现等。花了大概2,3天的时间,GATT_CONNECT_CFM status显示为成功连接。配对验证好像出现问题了BLE_SIMPLE_PAIRING_COMPLETE的状态为failure,然后就是GATT断开

操作流程:

1、  首先  调整Project Properties如下四项:

Battery Operation:        Enabled

Enable GATT:              GATT Server Enabled

Enable BLE                  BLE Enable

Execution mode            Assisted Native

2、 在上述基本工作完成后,编译ADK3.0自带的sink,F7->F5,启动后,android4.4的手机能够识别到BLE蓝牙设备,并能够通过gatt读取CSR8670调试版上的电源电压。但是,不能进行传统蓝牙的配对连接,android2.2手机也识别不到蓝牙,音频无法使用,相当于是BLE单模。

3、为解决5中的问题,我在CSR8670(做server端)开启广播start_ble_advertising()之后添加了如下标红代码,但F7->F5后,现象同上。

void server_handle_gatt_connect_cfm(GATT_CONNECT_CFM_T * cfm)

{

GATT_SERVER_DEBUG(("GATT server_handle_gatt_connect_cfm \n "));

switch(cfm->status)

{

case gatt_status_initialising:

{

GATT_SERVER_DEBUG(("GATT: Connection initialising\n"));

#if defined(BLE_ENABLED)

{

GATT_SERVER_DEBUG(("GATT:start_ble_advertising\n"));

/* Start Advertising so a remote device can find and connect */

start_ble_advertising();

MessageSend(&theSink.task , EventUsrPowerOn, 0);

stateManagerEnterConnectableState(TRUE);

MessageSendLater(&theSink.task , EventUsrEnterPairing, 0, 1000);

}

#endif

}

对应的log如下,从log上看已经enable Connectable 和Discoverable了,但为什么还是扫描不到 传统蓝牙设备呢? :

GATT:start_ble_advertising

BLE : Start AD //在此后加入

@@***stateManagerEnterConnectableState

HS: Power On

--hello--

SM : PowerOn

SM: @@***stateManagerEnterConnectableState

SM: @@***stateManagerEnterConnectableState->sinkEnableConnectable

MP Enable Connectable -i

SM: @@***stateManagerEnterConnectableState->stateManagerSetState deviceConnectable

SM:[Connectable]->[Connectable][1]

HS: EnterPair [1]

***SM :stateManagerEnterConnDiscoverableState

MP Enable Connectable -i

MP Enable Discoverable +p

MP Enable Discoverable scan:3

SM : Pair [258]

SM:[Connectable]->[ConnDisc][2]

HS : EventSysCheckAudioAmpDrive turn off amp

4、在源代码基础上(去掉3中在start_ble_advertising()之后添加的代码),在main.c的CL_DM_BLE_SET_ADVERTISING_DATA_CFM下添加如下标红代码,F7->F5,启动后,android4.4和android2.2的手机均能扫描到传统蓝牙设备,音频正常,音乐可正常播放,电话可正常接听。但BLE设备却识别不到,android4.4手机上专门用于扫描BLE设备的apk应用无法找到BLE设备(在2和3情况下可以找到BLE设备),故也只体现了传统蓝牙的单模。

case CL_DM_BLE_SET_ADVERTISING_DATA_CFM:

{

MAIN_DEBUG(("CL_DM_BLE_SET_ADVERTISING_DATA_CFM\n"));

MessageSend(task , EventUsrPowerOn, 0); //如果没有,无声音输出。

stateManagerEnterConnectableState(TRUE);

MessageSendLater(task , EventUsrEnterPairing, 0, 1000);

#ifdef GATT_SERVER_ENABLED

{

handle_set_ble_ad_data_cfm( (CL_DM_BLE_SET_ADVERTISING_DATA_CFM_T*)message );

}

#endif

}

对应log如下,在log上看,GATT:start_ble_advertising,BLE : Start AD//gatt已经发送了广播了,但为什么android4.4手机找不到BLE设备呢?

CL_DM_BLE_SET_ADVERTISING_DATA_CFM//在此处加

SM: @@***stateManagerEnterConnectableState

CL : AD Data registered

GATT_INIT_CFM [0]

GATT server_handle_gatt_init_cfm

GATT will GattConnectRequest

HS: Power On

--hello--

SM : PowerOn

SM: @@***stateManagerEnterConnectableState

SM: @@***stateManagerEnterConnectableState->sinkEnableConnectable

MP Enable Connectable -i

SM: @@***stateManagerEnterConnectableState->stateManagerSetState deviceConnectable

SM:[Connectable]->[Connectable][1]

GATT_CONNECT_CFM [13]

GATT server_handle_gatt_connect_cfm

GATT: Connection initialising

GATT:start_ble_advertising

BLE : Start AD

HS: EnterPair [1]

***SM :stateManagerEnterConnDiscoverableState

MP Enable Connectable -i

MP Enable Discoverable +p

MP Enable Discoverable scan:3

SM : Pair [258]

SM:[Connectable]->[ConnDisc][2]

CSR8675 BLE操作经验相关推荐

  1. csr8675 设置tws_tws 004如何将nodejs配置为使用端口443

    csr8675 设置tws In this episode Ivana learns how to grant Node.js network capabilities so that she can ...

  2. CSR8675模组,支持蓝牙APTX

    FSC-BT806采用最新的蓝牙5.0解决方案,具有多功能CSR8670或CSR 8675芯片组,可通过BR/EDR和蓝牙低功耗连接在音频设备之间无线传输音频数据.确保用户有更多可能集成他们的设计,主 ...

  3. CSR8675学习笔记:新建一个GATT server

    为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...

  4. 详解BLE 空中包格式—兼BLE Link layer协议解析

    BLE有几种空中包格式?常见的PDU命令有哪些?PDU和MTU的区别是什么?DLE又是什么?BLE怎么实现重传的?BLE ACK机制原理是什么?希望这篇文章能帮你回答以上问题. 虽然BLE空中包(pa ...

  5. iOS蓝牙开发---CoreBluetooth[BLE 4.0] 初级篇[内附Demo地址]

    一.蓝牙基础知识 (一)常见简称 1.MFI  make for ipad ,iphone, itouch 专们为苹果设备制作的设备,开发使用ExternalAccessory 框架(认证流程貌似挺复 ...

  6. android ble mesh,Android 蓝牙Mesh组网代码详解

    文章目录前言Mesh组网基本理解扫描设备组网meshAddress添加与重连UUID连接登录修改信息控制与接收设备数据总结 前言 上面的几篇文章都是在说Android网络编程方面的内容,我本来就有打算 ...

  7. android ble 设备扫描程序,Android应用开发Android 7.0 BLE scan 问题:程序无错但扫描不到BLE设备...

    本文将带你了解Android应用开发Android 7.0  BLE scan 问题:程序无错但扫描不到BLE设备,希望本文对大家学Android有所帮助. < 最近在做毕设,需要几周内从头学起 ...

  8. android蓝牙4.0(BLE)开发之ibeacon初步

    一个april beacon里携带的信息如下 ? 1 <code class=" hljs ">0201061AFF4C0002159069BDB88C11416BAC ...

  9. android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0

    BLE的体系结构主要由三部分组成,分别是控制器(controller),主机(Host)和应用程序(Application),如下图所示: BLE体系结构 Application layer顾名思义主 ...

最新文章

  1. Hadoop集群搭建(四:Zookeeper环境安装)
  2. java中split特殊符号
  3. Codeforces Round #503 (by SIS, Div. 1)D. the hat
  4. jquery.ajax上传个数限制,关于jquery ajax上传的坑
  5. 完全卸载mysql数据库图文教程
  6. ASP.NET Core托管运行Quartz.NET作业调度详解
  7. 10年程序员谈.Net程序员的职业规划
  8. MYSQL(3)---MySQL的基本概念介绍
  9. mysql的orm框架_Mysql-Sqlalchemy-ORM框架
  10. vue 手动挂载组件 手动销毁组件_javascript原生手动分页组件
  11. linux虚拟用户登录失败,用shell用户或虚拟用户登录pureftpd
  12. Spring框架浅谈及Spring框架学习小结
  13. 解决本地网络适配器的驱动程序可能出现问题(未连接,连接可用或连接不可用)
  14. 以前的windows安装文件可以删除吗_你知道C盘哪些文件是可以删除吗?
  15. 手机怎么压缩图片?分享一下压缩的好方法
  16. 反转!南大通报“教师性侵学生”事件,举报人因读研时未获国奖虚假举报
  17. 世界 5G 通信频段和运行模式
  18. 利用powershell安装360杀毒
  19. 干货分享:常见的测试类型有哪些?
  20. 为什么Markdown+R有较大概率成为科技写作主流? ← 阳志平的个人网站::技术

热门文章

  1. 2022 CCF中国软件大会(CCF ChinaSoft)“人工智能安全专刊”论坛成功召开
  2. php手术要休息多久,囊肿切除后需要休息多久
  3. android蓝牙开源,开源蓝牙框架 Android-BLE
  4. STM32实现8*8点阵动态显示
  5. 线性代数中的余子式、代数余子式、行列式
  6. 本周大新闻|沙特PIF再投Magic Leap,周融资超5.1亿美元
  7. a卡gpuz,MSI Afterburner显卡不显示温度,启动OverdriveNTool提示atiadlxx.dll不存在的错误
  8. 4 计算机系统的异步性,操作系统复习资料.doc
  9. 什么是银行的SWIFT代码
  10. 用外业精灵完成施工前(光缆、电缆、拆迁)相关的踏勘-点位采集