CSR8670项目实战:BlueDongle 蓝牙音频测试dongle
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板【思度科技CSR开发板】。
技术交流QQ群号:743434463
开发板会员QQ群号:725398389(凭订单号入群,赠PPT、项目源码、视频教程)
——————————正文分割线———————————–
1. 引言
蓝牙音频产品的出厂测试是产品出货前的一项重要测试内容,需要专门的测试仪器对产品的基本功能进行测试,以满足产线的整体效率。一般生产型的企业不愿意在测试领域投入资源进行研发,其更加愿意从测试仪器公司采购或租赁测试设备,快速组建产线形成生产能力。
测试仪器厂家根据其自身研发能力分为两种类型。一种是提供通用测试解决方案,可以为客户提供通用的、基础的、稳定可靠的测试服务,但方案难以根据客户的需求定制,整体部署成本也较高。另一种是根据客户需求定制测试解决方案,优点是方案可以实现较好的性价比,缺点是需要为每个客户单独开发,维护成本较高。
本项目中给出一种基于CSR8670方案的蓝牙音频测试dongle,能够在满足通用测试需求的基础上,为客户定制测试功能。
2. 主要功能
- 支持USB音源、模拟接口音源
- 支持USB HID控制接口(或串口)
- 支持音乐播放和语音通话
- 支持的控制命令列表
序号 | 名称 | 简述 |
---|---|---|
1 | 设备复位 | 设备复位到初始状态 |
2 | 断开连接 | 与被测设备断开连接,清除配对信息 |
3 | 音量+ | 增大被测设备当前音量 |
4 | 音量- | 减小被测设备当前音量 |
5 | 自动搜索 | 自动搜索附近可配对设备,列出设备信息 |
6 | 自动配对 | 自动搜索附近可配对设备,与信号最强的设备配对 |
7 | HFP模式 | 被测设备进入HFP模式,可以进行免提通话测试 |
8 | A2DP模式 | 被测设备后进入A2DP模式,可以进行音乐播放测试 |
9 | 模拟来电铃声 | 模拟向被测设备呼叫 |
10 | 模拟接听 | HFP主机接听 |
11 | 模拟挂断 | HFP主机挂断 |
12 | MAC地址配对 | 与特定MAC地址的设备配对 |
13 | 读取设备名称 | 读取已配对设备的名称 |
14 | 读取设备地址 | 读取已配对设备的MAC地址 |
15 | 读取设备音量 | 读取已配对设备的当前音量 |
16 | 读取RSSI值 | 读取已配对设备的当前RSSI值 |
17 | 读取蓝牙状态 | 读取蓝牙连接状态 |
18 | 显示按键 | 显示被测设备按下的按键信息 |
19 | 切换音源 | 在设备的USB和AUX音源之间切换 |
20 | SPP测试 | 与被测设备建立SPP连接,发送定制指令 |
系统框图如下:
3. 项目难点
项目难点主要集中在打通PC端的User GUI到CSR8670 USB HID的控制链路。由于User GUI与平台之间的通信是串口协议,不能直接调用USB HID协议与CSR8670通信,需要在两者之间进行协议转换,可以用C调用windows的API即可。
需要注意的是CSR8670原生例程的USB HID描述符不能满足传输自定义USB HID数据块的需求,推荐修改如下:
/* HID Report Descriptor - HID Control Device */
static const uint8 report_descriptor_hid_control[] =
{ 0x06, 0xa0, 0xff, /* USAGE_PAGE (Vendor-defined 0xFFA0) */0x09, 0x01, /* USAGE (Vendor-defined 0x0001) */0xa1, 0x01, /* COLLECTION (Application) */ 0x85, 0x01, /* REPORT_ID (1) */ 0x09, 0x01, /* USAGE (Vendor-defined 0x0001) */0x15, 0x00, /* LOGICAL_MINIMUM (0) */0x26, 0xff, 0x00, /* LOGICAL_MAXIMUM (255) */0x75, 0x08, /* REPORT_SIZE (8) */0x95, (REPORT_REQ_SIZE&0xff), /* REPORT_COUNT */0x91, 0x02, /* OUTPUT (Data,Var,Abs) */0x85, 0x02, /* REPORT_ID (2) */ 0x09, 0x02, /* USAGE (Vendor-defined 0x0002) */0x75, 0x08, /* REPORT_SIZE (8) */0x95, (REPORT_RSP_SIZE&0xff), /* REPORT_COUNT */0x81, 0x02, /* INPUT (Data,Var,Abs) */0xc0 /* END_COLLECTION */
};
其中report id 1和report id 2分别对应PC->CSR8670和CSR8670->PC这两条链路。
开发过程中客户提出需要dongle能够通过SPP协议发送特定命令给被测设备,使其进入特殊的工作模式,此时就需要dongle能够与被测设备建立SPP连接,有关SPP server和client可参考我的另一篇博文CSR867x学习笔记:SPP Server and Client。
4. 总结
蓝牙音频测试dongle的整体方案并不复杂,难点在于解决测试过程中遇到的平台兼容性问题,毕竟生产型的企业接到的订单可能涉及到各种蓝牙方案,这就需要蓝牙测试仪的开发厂商能够解决适配问题,长期积累下来的经验是这类公司的核心资产。并且此产品的需求是持续增长并有更新换代的需求,从中长期看是一个可以在细分市场持续盈利的产品。
开发此产品过程中,深刻体会到打磨产品非一日之功,同时接触到一些中国制造企业经营者的浮躁、短视,以及对研发投入的吝啬、对知识产权的不尊重。期望政府和行业能够不断规范和完善整个市场的运作,让有德的企业持续高速发展,造福整个行业。
另外也要反思一下,合作不是称兄道弟,也不应打感情牌,服务内容和验收标准,白纸黑字写在合同上,避免产生责权不清和事后扯皮。
CSR8670项目实战:BlueDongle 蓝牙音频测试dongle相关推荐
- CSR8670项目实战:BluePager蓝牙寻呼机
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...
- CSR8670项目实战:BlueCar蓝牙音频网关
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...
- CSR8670项目实战:4人组网蓝牙对讲耳机
为了方便大家学习,现与我爱蓝牙网联合推出[QCC300x/CSR867x/QCC30xx/QCC51xx开发板]. 博主联系方式:Call-15715161220,QQ-705829339 技术交流Q ...
- CSR8670项目实战:BlueHeartSound电子心音计
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...
- CSR8670项目实战:BlueHeartSound2电子心音计
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入群,赠PP ...
- CSR8670项目实战:BlueHeart心率监测耳机
为了让CSR867x的开发更容易,现与思度科技联合推出CSR867x学习板[淘宝链接:思度科技CSR开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单号入 ...
- 电商项目实战之web网站测试--非业务
Web实战测试 一:网络基础知识:http 3,,Web浏览器发送请求头信息一(1) 1,建立TCP连接 -----(https://www.cnblogs.com/EricaMIN1987_IT/p ...
- CSR8670项目实战:BlueAgBatC蓝牙发射器BLE遥控器
为了方便大家学习,现与我爱蓝牙网联合推出[QCC300x/CSR867x/QCC30xx/QCC51xx开发板]. ⭐⭐⭐⭐⭐[本项目为客户项目,欢迎商务合作]⭐⭐⭐⭐⭐ 技术交流QQ群号:10330 ...
- cmw500自动化测试软件,CMW500:蓝牙模块射频与音频测试的多标准解决方案-测试测量-与非网...
如今,蓝牙模块应用于手机,汽车,智能家居以及其它物联网应用.相应的,制造商和集成专家有了更高的测试要求.罗德与施瓦茨帮助他们优化测试性能,最小化测试时间进而节省下可观的成本.R&S CMW50 ...
最新文章
- 21个UI设计必会的设计技巧
- hdu 2448 Mining Station on the Sea(最短路+费用流)
- 如何:在Maven项目(JUnit,Mockito,Hamcrest,AssertJ)中测试依赖项
- c++隐式类型转换存在的陷阱
- python定义三维数组不指定长度_插值/调整三维数组大小
- Qt工作笔记-使用SQL中的LIMIT进行数据分页
- C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
- 推荐一篇我高中同班同学的文章[转载]
- 使用angrutils生成控制流图出错的解决过程
- jeDate 日期控件
- lg g3 android 5.0,LG G3 4.4和5.0系统root教程
- Filenet:主打底层技术创新,检索分发挖矿开创全民挖矿时代!
- matlab_多目标遗传算法
- 世界500强和中国500强的视觉设计手册,设计圈都传遍了
- H5网页微信授权登录
- linux shell fflush,強制shell腳本fflush
- matlab中单刀双掷开关,proteus 怎样找单刀双掷开关
- 税务系统计算机设备管理制度,区国税局计算机设备管理办法_规章制度
- 寻迹小车逻辑电路模块
- [Java高级](二)泛型