当前位置: 首页 > news >正文

CH585_蓝牙HID添加数据双向透传功能

一、打开Hid_keyboard例程

二、找到Profile文件夹,Hid报表有关配置写在hidkbdservice.c中

三、源工程只含有一个标准键盘描述符,其未描述上传的ID号,BLE-HID中默认为ID = 0;

而在hidReportMap中加入透传描述符后,此描述表会转变为复合报表,因此Keyboard需指定一个非0的ID号,此工程修改为ID = 1;

#define HID_RPT_ID_Trans_IN  (0x10)
#define HID_RPT_ID_Trans_OUT (0x12)0x06, 0x00, 0xFF,  // Usage Page (Vendor Defined 0xFF00)0x09, 0xFF,        // Usage (0xFF)0xA1, 0xFF,        // Collection (Vendor Defined 0xFF)0x85, HID_RPT_ID_Trans_IN,        //   Report ID (0x10)0x09, 0xFF,        //   Usage (0xFF)0x15, 0x00,        //   Logical Minimum (0)0x26, 0x00, 0x01,  //   Logical Maximum (256)0x75, 0x08,        //   Report Size (8)0x95, 0x40,        //   Report Count (64)/*config.g MTU need > 0x40*/0x81, 0x02,        //   Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position)0x85, HID_RPT_ID_Trans_OUT,        //   Report ID (0x12)0x09, 0xFF,        //   Usage (0xFF)0x15, 0x00,        //   Logical Minimum (0)0x26, 0x00, 0x01,  //   Logical Maximum (256)0x75, 0x08,        //   Report Size (8)0x95, 0x40,        //   Report Count (64),/*config.g MTU need > 0x40*/0x91, 0x02,        //   Output (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position,Non-volatile)0xC0,              // End Collection1. 基本结构
用途页(Usage Page) : 0xFF00(供应商自定义用途页,非标准HID设备)。
用途(Usage) : 0xFF(供应商自定义功能)。
集合(Collection) : 开启一个供应商定义的集合(0xA1, 0xFF)。
2. 输入报告(Input Report)
报告ID : 0x10(自定义标识符,用于区分不同报告)。
数据格式 :
逻辑范围: 0~2560x00, 0x01)。
字段大小: 每字段8位(1字节)。
字段数量: 64个字段(共64字节数据)。
属性: 输入数据(0x81, 0x02),表示可变、绝对值、无空值。
3. 输出报告(Output Report)
报告ID : 0x12(与输入报告区分)。
数据格式 :
逻辑范围、字段大小和数量与输入报告相同。
属性: 输出数据(0x91, 0x02),用于主机向设备发送指令。
HID REPORT TABLE

image

image

 四、修改属性表

①添加属性定义:

// HID Report characteristic, Trans input
static uint8_t       hidReportTransInProps = GATT_PROP_READ | GATT_PROP_NOTIFY;
static uint8_t       hidReportTransIn;
static gattCharCfg_t hidReportTransInClientCharCfg[GATT_MAX_NUM_CONN];// HID Report Reference characteristic descriptor, Consumer input
static uint8_t hidReportRefTransIn[HID_REPORT_REF_LEN] ={HID_RPT_ID_Trans_IN, HID_REPORT_TYPE_INPUT};// HID Report characteristic, Trans output
static uint8_t hidReportTransOUTProps = GATT_PROP_READ | GATT_PROP_WRITE | GATT_PROP_WRITE_NO_RSP;
static uint8_t hidReportTransOUT;static uint8_t hidReportRefTransOUT[HID_REPORT_REF_LEN] ={HID_RPT_ID_Trans_OUT, HID_REPORT_TYPE_OUTPUT};

 

 ②添加属性表定义,加在Feature功能描述下方:

    /*ADD TRANS TABLE*/// HID Report characteristic, Trans input declaration
    {{ATT_BT_UUID_SIZE, characterUUID},GATT_PERMIT_READ,0,&hidReportTransInProps},// HID Report characteristic, Trans input
    {{ATT_BT_UUID_SIZE, hidReportUUID},GATT_PERMIT_ENCRYPT_READ,0,&hidReportTransIn},// HID Report characteristic client characteristic configuration
    {{ATT_BT_UUID_SIZE, clientCharCfgUUID},GATT_PERMIT_READ | GATT_PERMIT_ENCRYPT_WRITE,0,(uint8_t *)&hidReportTransInClientCharCfg},// HID Report Reference characteristic descriptor, Trans input
    {{ATT_BT_UUID_SIZE, reportRefUUID},GATT_PERMIT_READ,0,hidReportRefTransIn},// HID Report characteristic, Trans output declaration
    {{ ATT_BT_UUID_SIZE, characterUUID },GATT_PERMIT_READ,0,&hidReportTransOUTProps},// HID Report characteristic, Trans output
    {{ ATT_BT_UUID_SIZE, hidReportUUID },GATT_PERMIT_ENCRYPT_READ | GATT_PERMIT_ENCRYPT_WRITE,0,&hidReportTransOUT},// HID Report Reference characteristic descriptor, Trans output
    {{ ATT_BT_UUID_SIZE, reportRefUUID },GATT_PERMIT_READ,0,hidReportRefTransOUT},

 

③添加属性表序列号枚举:

image

 

五、Hid_AddService,服务初始化添加:

image

 

image

 

六、定义IN发送任务,修改OUT函数接收数据

① IN 任务定义:

image

 

image

 

② OUT 函数修改:

image

 

七、编译通过,开始配对测试

① IN 测试:

image

 

② OUT 测试:

image

 

http://www.jsqmd.com/news/45606/

相关文章:

  • 2025 最新推荐!板片生产线厂家排行榜:技术革新 + 权威认证,引领 PP/PE/ABS 等材质加工新标杆塑料中空格子 / EVA/PET 板片生产线公司推荐
  • 2025 最新圆钢生产厂家权威推荐榜:优质合金钢 / 碳素钢产品精选,采购必看实力品牌汇总SAE4340/34crNimo6/30crNimo8/40crNimoA 圆钢推荐
  • 蔬菜脱水机公司,蔬菜脱水机工厂,食品脱水机供应厂家,工业洗衣机品牌哪家靠谱,水洗设备销售厂家如何选,工业烘干机生产厂家排名榜
  • 2025 最新板材设备厂家权威推荐榜:协会测评认证,高性价比品牌全解析PVC 发泡板材设备/警示板板材设备/路基板板材设备/仿大理石板材设备公司推荐
  • 2025年北京模拟酒店实训机构权威推荐榜单:酒店管理VR系统/酒店实训软件/酒店教学模拟软件源头机构精选
  • spingboot自动注册到nacos
  • 小白也能看懂的RLHF:基础篇 - AI
  • 2025 最新管材设备源头厂家权威推荐榜:PE/PVC/PPR/MBBR/MPP 管材设备全品类高性能环保设备测评优选
  • windows和linux编写jni相关库,并使用动态调用来加载动态库
  • 2025年移动方舱订做厂家权威推荐榜单:集装箱房/军用方舱/宿营方舱源头厂家精选
  • 数据结构-线段树
  • 第十一章 泛型算法
  • P2511 [HAOI2008] 木棍分割
  • 国标GB28181算法算力平台EasyGBS:构建“智慧消防”可视化管理与预警新模式
  • MySQL高级运维核心技术:事务处理、安全管理与性能优化
  • 实用指南:链表-双向链表【node3】
  • Vue中,list集合中包含实体(对象)的列表,存在某个特定的值在实体类属性是否存在常见的方法:
  • 2025年复合涤纶布优质厂家权威推荐榜单:涂层涤纶布/阻燃涤纶布/防水涤纶布源头厂家精选
  • List相关知识点
  • 图文矩阵系统厂家综合测评推荐榜,抖音短视频矩阵/ai排名/短视频矩阵/ai排行榜/ai数字人矩阵/图文矩阵厂家推荐
  • ubuntu22.04 安装OpenSSH-server 支持vscode 远程
  • 2025年工业溶氧仪实力厂家权威推荐榜单:溶氧分析仪/溶解氧分析仪/在线溶解氧分析仪源头厂家精选
  • nacos单机版安装
  • linux top命令配置重置还原
  • Linux中: 通过 iostat 怎么判断硬盘是否存在I/O瓶颈
  • 2025 年便携式 VOC 气体检测仪、气体检测仪厂家十大品牌推荐:精准监测筑牢安全防线,智能传感赋能行业发展
  • RustFS vs MinIO:谁才是国产高性能对象存储之光?
  • SOLID原则在React中的应用实践
  • 绘图工具
  • 深入解析:BERT,GPT,ELMO模型对比