蓝牙耳机BES 2300P 主从配对连接,以及主从自定义收发数据

2023-11-18

恒玄SDk预留了用户接口位于app_ibrt_customif_cmd.cpp 中
发送数据的前提是进行主从配对连接, sdk给与了两种模式,IBRT_SEARCH_UI 未定义时我们可以自己定义主从蓝牙地址,IBRT_SEARCH_UI 定义时进入serch模式通过app_start_tws_serching_direactly 这个接口进行连接,这里由于sdk此功能似乎有bug尚未能实现。

首先,自己定义主从蓝牙地址,然后烧录的时候安装你设置的地址烧入即可,如例烧录时:左耳 11 11 22 33 33 51,右耳11 11 22 33 33 50 。
SDK中自定义地址的字符串

ibrt_pairing_info_t g_ibrt_pairing_info[] =
{
    {{0x51, 0x33, 0x33, 0x22, 0x11, 0x11},{0x50, 0x33, 0x33, 0x22, 0x11, 0x11}
},

之后使用接口app_ibrt_if_enter_pairing_after_tws_connected(); (定义到某个按钮事件即可)
这里定义到了PWR 长按事件

void app_ibrt_normal_ui_handle_key(APP_KEY_STATUS *status, void *param)
{
    if (APP_KEY_CODE_GOOGLE != status->code)
    {
        switch(status->event)
        {
            case APP_KEY_EVENT_CLICK:
                TRACE(0,"first blood.");
                app_tws_if_handle_click();
                break;

            case APP_KEY_EVENT_DOUBLECLICK:
                TRACE(0,"double kill");
                app_ibrt_if_enter_freeman_pairing();
                break;

            case APP_KEY_EVENT_LONGPRESS:
				TRACE(0,"LONGPRESS kill");
                app_ibrt_if_enter_pairing_after_tws_connected();
                break;
         }
    }

日志中打印app_tws_info_t 相关信息说明主从开始分享信息了 当出现evt_type = BES_AUD_CONNECTED 标志主从之间用来传输指令的 L2cap 通道建立成功
主从连接完毕后就可以和手机配对了,但我们的目的好像不是这个…
接下来就剩主从发送数据
sdk预留了相关接口app_ibrt_customif_cmd.cpp 中

static const app_tws_cmd_instance_t g_ibrt_custom_cmd_handler_table[]=
{
    {
        APP_IBRT_CUSTOM_CMD_TEST1,                              "TWS_CMD_TEST1",//发送的 
        app_ibrt_customif_test1_cmd_send,
        app_ibrt_customif_test1_cmd_send_handler,               0,
        app_ibrt_custom_cmd_rsp_timeout_handler_null,           app_ibrt_custom_cmd_rsp_handler_null
    },
    {
        APP_IBRT_CUSTOM_CMD_TEST2,                              "TWS_CMD_TEST2",
        app_ibrt_customif_test2_cmd_send,
        app_ibrt_customif_test2_cmd_send_handler,               RSP_TIMEOUT_DEFAULT,
        app_ibrt_customif_test2_cmd_send_rsp_timeout_handler,   app_ibrt_customif_test2_cmd_send_rsp_handler
    },
};

按顺序的参数说明

    uint32_t                        cmdcode;
    const char                      *log_cmd_code_str;
    app_tws_cmd_send_handler_t      tws_cmd_send;
    app_tws_cmd_receivd_handler_t   cmdhandler;             /**< command handler function */
    uint32_t                        timeout_ms;
    app_tws_rsp_timeout_handle_t    app_tws_rsp_timeout_handle;
    app_tws_rsp_handle_t            app_tws_rsp_handle;
    app_tws_cmd_tx_done_handler_t   app_tws_cmd_tx_done_handler;

按顺序的参数说明 我们只需要关注
app_ibrt_customif_cmd_test 发送数据
app_ibrt_customif_test1_cmd_send_handler 接收数据
了解结构后使用起来就很方便了
直接app_ibrt_customif_cmd_test (str)写在按键事件中即可。或者直接用库函数tws_ctrl_send_cmd()第一个参数是需要添加的枚举值

void app_ibrt_ui_test_key_io_event(APP_KEY_STATUS *status, void *param)
{
    TRACE(3,"%s %d,%d",__func__, status->code, status->event);
	uint8_t senddata[]={"close"};
    switch(status->event)
    {
        case APP_KEY_EVENT_CLICK:
            if (status->code== APP_KEY_CODE_FN1)
            {
            TRACE(0,"FN1 onepress");
			app_ibrt_customif_cmd_test(senddata);//发送数据
			tws_ctrl_send_cmd(0x8101, (uint8_t *)senddata, sizeof(senddata));//库函数发送数据
               // app_ibrt_if_event_entry(IBRT_OPEN_BOX_EVENT);
				//app_tws_set_side(EAR_SIDE_RIGHT);//改为左声道
				//app_voice_report(APP_STATUS_INDICATION_TEST,0);
            }

发完肯定还要接收
app_ibrt_customif_test1_cmd_send_handler 完成了这项工作,p_buff就是你收到的数据,你当然也可以对它加一个if(p_buff==“xxxx”)让它关机,或做其他事情,到此整个主从通讯就完成了。
参考文章有https://blog.csdn.net/zhanghuaishu0/article/details/108684583?spm=1001.2014.3001.5501

static void app_ibrt_customif_test1_cmd_send_handler(uint16_t rsp_seq, uint8_t *p_buff, uint16_t length)//接受句柄
{
    TRACE(2,"%s %s", __func__,p_buff);
	app_shutdown();//关机
	
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝牙耳机BES 2300P 主从配对连接,以及主从自定义收发数据 的相关文章

  • 【深度学习】从LeNet-5识别手写数字入门深度学习

    活动地址 CSDN21天学习挑战赛 目录 LeNet模型 搭建环境 安装需要的包 创建工程 数据集 相关代码 可以设置GPU训练 默认CPU 通过TensorFlow下载数据集 对数据进行归一化处理 最值归一化 normalization
  • kvm创建快照与还原

    对k8s m1虚拟机创建快照 virsh snapshot create as k8s m1 20190317 查看虚拟机镜像快照的版本 virsh snapshot list k8s m1 或者 qemu img info opt kvm
  • Qt信号与槽

    信号与槽是Qt编程的基础 信号与槽在Qt中处理界面各个组件的交互操作时变得更加的直观和简单 信号 信号 Signal 就是在特定情况下被发射的事件 GUI程序设计的主要内容就是对界面上各个组件的信号进行响应 只需要知道什么情况下发射哪些信号
  • Vim配置#Vim插件安装#NERDTree配置

    一 centos系统的Vim安装 普通用户下输入命令 yum y install vim 之后输入y 即可等待安装完成 二 Vim的配置 如果你需要配置vim 只需在Home目录创建一个 vimrc文件即可以配置vim了 如需安装插件 在
  • mybatis ----数据级联查询(多对一)

    工程的目录结构 有两个表 一个文章表article 一个用户表user create table article id int 11 not null auto increment userid int 11 not null title
  • vscode连接github

    此次采用ssh方式 分为以下几步 目录 1 生成公钥 配置到github 2 在本地建立仓库 推送到本地的master分支 3 在github建立仓库 复制ssh 进行推送 一 生成公钥 本地生成公钥和私钥 将公钥配置到github中 通过
  • spark内存模型

    Spark 1 6 开始使用了统一内存管理模块 UnifiedMemoryManager 并引入了堆外内存 Off heap memory 1 6之前的内存管理就不进行介绍了 spark堆内和堆外内存模型的示意图 注意 堆外内存是依赖于wo
  • 258. Add Digits

    class Solution public int addDigits int num int nRet 0 if num lt 10 return num int nTemp 0 while num 0 nTemp nTemp num 1
  • Python Cheat Sheet -- 速查表

    这是基于Python Crash Course Second Edition的知识速查表 很全面的知识梳理脑图 后面附有下载链接 供大家学习 参考资料 https github com ehmatthes pcc 2e https ehma
  • Java基础知识超详细总结

    1 Java文件格式 Java源文件 java 保存Java源代码 Java字节码文件 class 保存对Java源代码编译之后的内容 2 Java文件运行方式 1 将源代码保存在扩展名为 java的文件中 如果源程序中定义了public类
  • 黑苹果不能使用无线网解决办法

    网上找了很多方法 都不能让我的黑苹果上网 果然还是得靠自己 抱着碰碰运气的态度 通过四叶草 安装驱动 在下图所示的已经安装的驱动中 我可以明确的告诉大家 其中一个是usb上网的驱动 也就是说 可以通过手机usb共享网络 而在这之前 我只能通
  • 从0开始写Vue项目-SpringBoot整合Mybatis-plus实现登录、注册功能

    1 从0开始写Vue项目 环境和项目搭建 慕言要努力的博客 CSDN博客 2 从0开始写Vue项目 Vue2集成Element ui和后台主体框架搭建 慕言要努力的博客 CSDN博客 3 从0开始写Vue项目 Vue页面主体布局和登录 注册
  • Element UI 之坑

    el procomfirm 事件 confirm 低版本的需要改 onConfirm
  • 【华为OD机试 2023 B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 游戏外包开发技术难点分析

    游戏开发涉及多个领域的技术 因此在开发过程中可能会遇到很多技术难点 今天和大家分享一些常见的游戏开发技术难点 希望对大家开发游戏有一定帮助 北京木奇移动技术有限公司 专业的软件外包开发公司 欢迎交流合作 1 图形渲染 游戏开发中的图形渲染技
  • vue从入门到入土--------综合案例

    目录 vue cli 组件库 axios 拦截器 proxy 跨域代理 用户列表案例 总结 vue cli 1 什么是 vue cli vue cli 俗称 vue 脚手架 是 vue 官方提供的 快速生成 vue 工程化项目的工具 vue
  • python基础六:列表

    1 序列 1 1基本概念 序列就是python中最基本的一种数据结构 用于保存一组有序的数据 所有的数据在序列当中都会有唯一的一个位置 索引 与之对应 并且序列会按照数据添加的顺序来分配索引 1 2序列的分类 可变序列 序列中的元素可以改变
  • Pycharm里如何调整代码字体大小?

    步骤一 我们在桌面上找到Pycharm 并将其打开 步骤二 打开pycharm之后 我们点击左上角的file选项 也就是文件的选项 步骤三 在文件的选项下 我们选择settings的选项 然后打开settings的窗口页面 步骤四 进入到s
  • ssh怎么访问服务器文件,ssh本地访问远程服务器文件

    ssh本地访问远程服务器文件 内容精选 换一换 Cloud Init工具安装完成后 请参考本节操作配置Cloud Init工具 已安装Cloud Init工具 已为云服务器绑定弹性公网IP 已登录云服务器 云服务器的网卡属性为DHCP方式

随机推荐

  • Linux 经典面试题

    1 下面关于pthread线程相关的 说法正确的是 a 线程是可以通过pthread create来创建 b 在线程中使用usleep 50 1000 一定是精确无误地休眠50毫秒 c 如果有个全局变量在没有加锁保护的情况下被两个线程同时访
  • JavaScript实现数据结构 -- 链表

    文章目录 链表 链表的特点 链表和数组的区别 JS模拟链表 遍历链表 插入节点 删除节点 链表应用 删除链表中的节点 leetcode 237 思路 代码 反转链表 leetcode 206 思路 代码 链表 链表和数组一样是有多个元素组成
  • UE5 利用Project Launcher快速打包

    一 打开Project Launcher 二 Add Custom Launch Profiles 三 打包设置 Project 选择当前项目或者AnyProject都行 看自己需求 Build Build Configuration根据需
  • Substance Painter - Blender - UE4/5 低模 高模 烘焙 ID 流程

    问题1 ID材质 顶点绘制 在Blender中的准备工作 1 选中需要填色的元素 反选隐藏后 进入顶点绘制模式 打开顶点选择模式 按A全选后 选好颜色 按shift K 填充颜色 2 颜色都上好后 进入材质编辑 增加输入的顶点颜色 选好顶点
  • 【计算机视觉

    文章目录 一 检测相关 11篇 1 1 Perspective aware Convolution for Monocular 3D Object Detection 1 2 SCoRD Subject Conditional Relati
  • 回溯算法题(5)组合总和II

    目录 组合总和II 描述 示例 1 示例 2 提示 方法 回溯 组合总和II 描述 给定一个候选人编号的集合 candidates 和一个目标数 target 找出 candidates 中所有可以使数字和为 target 的组合 cand
  • 杂谈随感-2:创新是革新还是革命?

    革新 通常来自于一个系统内部 来自于现有系统的既得利益者 来自于系统内深谙其道的人 来自于系统内深根细作的人 革新者的首要目标是维持现有系统的存在和现有系统大多数人的利益 其二才是革新 革新的目标也是维持现有系统长期存在和发展 一个对现有系
  • SpringBoot集成hystrix

    文章目录 hystrix有什么用 在SpringBoot项目中集成 更多配置示例 配置线程池 配置信号量 配合feignClient使用 基本配置 可视化组件 视图hystrix dashboard 汇总监控turbine 参考 hystr
  • elementUI dialog 弹窗组件的使用-title 属性的文字提示 没有设置 center 属性但是居中了

    项目场景 elementUI dialog 弹窗组件的使用 问题描述 elementUI dialog 弹窗组件使用时 title 属性的文字提示 没有设置 center 属性但是居中了 原因分析 原因是在该组件的外层使用了 text al
  • Qt一个信号关联多个槽传输数据

    测试描述 一个TCP服务 三个处理线程 tcp接收的数据传输至三个线程使用 使用信号与槽进行通讯 信号与槽连接如下 关联1 connect tcpServer SIGNAL recBytes QByteArray panorama SLOT
  • Java Beans 介绍

    Java版本 8 写JavaBeans组件 编写JavaBeans组件非常简单 您不需要特殊的工具 也不需要实现任何接口 编写bean只是遵循某些编码约定的问题 您所要做的就是使您的类看起来像一个bean 使用bean的工具将能够识别和使用
  • 淘宝问问:电商AI,重新定义购物体验

    AI大模型进展的如火如荼 怎么少得了电商平台的参与 淘宝率先打响了第一枪 每一个软件都会有自己的 Copilot 淘宝的就叫 淘宝问问 用户可以在淘宝上使用 淘宝问问 来获取商品信息 价格 评价等 当前是内测版 虽有惊喜 但终究是刚刚发布内
  • 同态加密的原理详解与go实践

    学习资料来源 知乎VenusBlockChain https zhuanlan zhihu com p 110210315 知乎刘巍然 https www zhihu com question 27645858 answer 3759850
  • 空间注意力机制_计算机视觉中attention机制的理解

    一 前言 简介 对于attention机制的理解 在看了attention is all you need这篇文章和参考网上一些文章之后 做一个简单的理解和总结 在 attention is all you need 的这篇文章中给出了在n
  • PySide6-控件教程-006-QLabel标签控件-信号

    QLabel 标签控件 本文摘录自我的开源教程 PySide6 代码式教程 QLabel CSDN 平台仅做镜像 答疑 纠错请至 GitHub 提交 issue 信号 QLabel的可用信号只有链接被悬停 链接被点击两种 具体如下 link
  • 金融安全视角农民投资理财的实证研究——以X县为例

    金融安全视角农民投资理财的实证研究 以X县为例 摘要 近年来 随着经济全球化进程的推进 国民收入逐年增加 人们的经济意识也在一定程度上提高 适当的投资和财务管理正在迅速发展 然而 大部分调查数据显示 农民面临的诸多问题还有很多其他原因 包括
  • Qt技巧:QTextEdit显示网络图片

    Qt5的QNetworkAccessManager 类可以很方便的访问网络资源 QNetworkRequest类可以用于发送网络请求 而QNetworkReply则负责接收处理网络资源 今天遇到一个问题 如何在QTextEdit上显示一张网
  • 字节跳动(今日头条),为何战斗力如此凶猛?

    本文转载自公众号 中产之路 年前 一位久未联系的朋友问京杭君 有没有研究过今日头条 还有没有上升空间 这位朋友在杭州阿里工作多年 后出来创业 有猎头联系他 今日头条要在杭州成立技术中心 招负责人 那时候 今日头条 还是这间公司最重要的产品
  • 编辑器Vim

    vi简介 vi是 Visual interface 的简称 它在Linux上的地位就仿佛Edit程序在DOS上一样 它可以执行输出 删除 查找 替换 块操作等众多文本操作 而且用户可以根据自己的需要对其进行定制 Vi不是一个排版程序 它不象
  • 蓝牙耳机BES 2300P 主从配对连接,以及主从自定义收发数据

    恒玄SDk预留了用户接口位于app ibrt customif cmd cpp 中 发送数据的前提是进行主从配对连接 sdk给与了两种模式 IBRT SEARCH UI 未定义时我们可以自己定义主从蓝牙地址 IBRT SEARCH UI 定