ZHCACY9 August   2023 CC2564C

 

  1.   1
  2.   摘要
  3.   商标
  4. 1演示概述
  5. 2运行蓝牙代码
  6. 3演示应用程序
    1. 3.1 演示应用中的设备 1(主机/HID 主机)设置
    2. 3.2 演示应用上的设备 2(客户端/HID 设备)设置
    3. 3.3 从 HID 主机发起连接
    4. 3.4 从 HID 设备发起连接
    5. 3.5 主机与设备之间的通信
  7. 4应用程序命令
  8. 5Gap 命令
    1. 5.1  帮助 (DisplayHelp)
    2. 5.2  查询
    3. 5.3  显示查询列表
    4. 5.4  配对
    5. 5.5  结束配对
    6. 5.6  PIN 码响应
    7. 5.7  通行密钥响应
    8. 5.8  用户确认响应
    9. 5.9  设置可发现性模式
    10. 5.10 设置可连接性模式
    11. 5.11 设置可配对性模式
    12. 5.12 更改简易配对参数
    13. 5.13 获取本地地址
    14. 5.14 设置本地名称
    15. 5.15 获取本地名称
    16. 5.16 设置设备类别
    17. 5.17 获取设备类别
    18. 5.18 获取远程名称
  9. 6人机接口演示配置文件
    1. 6.1 主机
      1. 6.1.1  连接远程 HID 设备
      2. 6.1.2  关闭连接
      3. 6.1.3  控制请求
      4. 6.1.4  获取报告请求
      5. 6.1.5  设置报告请求
      6. 6.1.6  获取协议请求
      7. 6.1.7  设置协议请求
      8. 6.1.8  获取空闲请求
      9. 6.1.9  设置空闲请求
      10. 6.1.10 数据写入
    2. 6.2 客户端
      1. 6.2.1 获取报告响应
      2. 6.2.2 设置报告响应
      3. 6.2.3 获取协议响应
      4. 6.2.4 设置协议响应
      5. 6.2.5 获取空闲响应
      6. 6.2.6 设置空闲响应
  10. 7参考文献
  11. 8修订历史记录

主机与设备之间的通信

  1. 建立连接后,主机与设备就可以相互通信了。
  2. 我们可以使用 ControlRequest 命令从主机或设备发送控制操作。对于主机,我们发出 Controlrequest < parameter-number > 命令。控制请求的选项包括 0= hcNop、1= hcHardReset、2= hcSoftReset、3= hcSuspend、4= hcExitSuspend、5= hcVirtualCableUnplug。当我们在主机上键入 Control Request 5 时,会收到以下消息:
    GUID-20230228-SS0I-9K7G-FTNJ-0PNJR4HM4KRS-low.png

    在设备侧,将显示 hcVirtualCableUnplug 指示。


    GUID-20230228-SS0I-0VGH-BR5D-WTTVQ9QR8RV2-low.png

    对于没有参数的 DeviceControlRequest,默认情况下会执行 hcVirtualCableUnplug。


    GUID-20230228-SS0I-0NWG-4ZL4-TB5WFBRMJ6N0-low.png

    在主机侧,将显示 hcVirtualCableUnplug 指示。


    GUID-20230228-SS0I-HGQX-ZQVV-JRHQ6V81FXWP-low.png

  3. 通过发出 GetReportRequest 命令来发出报告请求。这需要 3 个或 4 个参数。第一个是 Size,0 表示使用报告大小,1 表示使用自定义缓冲区大小。第二个是 ReportType,0 表示 rtOther,1 表示 rtInput,2 表示 rtOutput,3 表示 rtFeature。第三个是 ReportID。如果在第一个参数中使用了自定义缓冲区大小,请在此处指定大小。例如,发送具有报告大小且 rtInput 和 ReportID 为 2 的报告请求。观察报告请求成功指示。
    GUID-20230228-SS0I-FRXN-TFJF-57NV67GH6VNJ-low.png

    在设备上,观察报告指示,包括报告类型、ID、大小和缓冲区大小。


    GUID-20230228-SS0I-RGX2-HRKD-LNVH1BZ7C9VG-low.png

    设备可以使用 GetReportResponse 响应 GetReportRequest。这需要 ResultType(0 表示 rtSuccessful,1 表示 rtNotReady,2 表示 rtErrInvalidReportID,3 表示 forrtErrUnsupportedRequest,4 表示 rtErrInvalidParameter,5 表示 rtErrUnknown,6 表示 rtErrFatal,7 表示 rtData)和 ReportType(0 表示 rtOther,1 表示 rtInput,2 表示 rtOutput,3 表示 rtFeature)作为参数。例如,使用 rtData 作为 ResultType,rtInput 作为 ReportType,响应主机发出的上述 rtInput 请求。


    GUID-20230228-SS0I-TDLW-ZZS7-G3V6V5BHZTF9-low.png

    主机将收到报告确认。


    GUID-20230228-SS0I-V3SJ-CD4Z-LDTKTWT9X6N8-low.png

  4. 从主机运行 SetReportRequest。所需的唯一参数是 ReportType,0 表示 rtOther,1 表示 rtInput,2 表示 rtOutput,3 表示 rtFeature。
    GUID-20230228-SS0I-QGKT-TP7P-KGB00WJZVQT6-low.png

    设备将收到具有 ReportType 的 SetReportIndication。


    GUID-20230228-SS0I-5LT4-HNLF-KPT25WQKRLM5-low.png

    设备可通过发出 SetReportResponse 命令来响应 SetReportRequest。唯一需要的参数是 ResultType(0 表示 rtSuccessful,1 表示 rtNotReady,2 表示 forrtErrInvalidReportID,3 表示 rtErrUnsupportedRequest,4 表示 rtErrInvalidParameter,5 表示 rtErrUnknown,6 表示 rtErrFatal,7 表示 rtData)。例如,使用 rtSuccessful 响应上述 rtInputReport 请求。


    GUID-20230228-SS0I-N7MS-SWRH-FXCVBS61WJNB-low.png

    主机会收到具有 ResultType 的 SetReportConfirmation 指示。


    GUID-20230228-SS0I-MMVS-X2DR-ZJMG1GG2T8DM-low.png

  5. 使用 GetProtocolRequest 发送协议请求。这不需要任何参数。
    GUID-20230228-SS0I-JDJR-F8GS-W2DCX0PMPJCR-low.png

    设备会收到协议指示。


    GUID-20230228-SS0I-RD9R-DT9L-MPPXX93RJ4S7-low.png

    设备可通过发出 GetProtocolResponse 命令来响应协议请求。这需要两个参数:ResultType(0 表示 rtSuccessful,1 表示 rtNotReady,2 表示 forrtErrInvalidReportID,3 表示 rtErrUnsupportedRequest,4 表示 rtErrInvalidParameter,5 表示 rtErrUnknown,6 表示 rtErrFatal,7 表示 rtData)和 Protocol(0 表示 ptBoot,1 表示 forptReport)。例如,响应上一个具有 rtData 和 ptBoot 的请求。


    GUID-20230228-SS0I-Z4PJ-FHCZ-3H4NN5VMFCW5-low.png

    主机会收到具有 ResultType 和 Protocol 的协议确认。


    GUID-20230228-SS0I-2XTP-J35W-MCRB6CHL9K8N-low.png

  6. 从主机发出 SetProtocolRequest。唯一需要的参数是 Protocol(0 表示 ptBoot,1 表示 ptReport)。例如,发送一个具有 ptReport 的请求。
    GUID-20230228-SS0I-MLFK-2F3J-0DFGNJB4K9RK-low.png

    主机会收到设置协议指示和协议。这可通过发出 SetProtocolResponse 命令来响应,该命令需要 ResultType 作为参数(0 表示 forrtSuccessful,1 表示 rtNotReady,2 表示 rtErrInvalidReportID,3 表示 rtErrUnsupportedRequest,4 表示 rtErrInvalidParameter,5 表示 rtErrUnknown,6 表示 rtErrFatal,7 表示 rtData)。


    GUID-20230228-SS0I-WBWX-D4HH-VMLJWTVPRMZ6-low.png

    主机中具有 ResultType 的协议确认。

  7. 设置发出 GetIdleRequest 命令的空闲请求。这不需要任何参数。
    GUID-20230228-SS0I-J8LC-L68T-N12HKBK4NFDG-low.png

    设备会收到 GetIdleIndication。


    GUID-20230228-SS0I-W8CT-13MN-M8Q2VHCQ3MZ9-low.png

    这可通过 GetIdleResponse 来响应,需要 ResultType(0 表示 rtSuccessful,1 表示 rtNotReady,2 表示 rtErrInvalidReportID,3 表示 rtErrUnsupportedRequest,4 表示 forrtErrInvalidParameter,5 表示 rtErrUnknown,6 表示 rtErrFatal,7 表示 rtData)和 Idle Rate 作为参数。例如,响应时,ResultType 为 rtData,Idle Rate 为 50。


    GUID-20230228-SS0I-PPW1-MGB1-FLXSZ58TK3GG-low.png

    主机会收到空闲确认。


    GUID-20230228-SS0I-WKWN-W5XZ-629VL8G41VNP-low.png

  8. 使用主机发出的 SetIdleRequest 设置 Idle Rate,该请求需要将 Idle Rate 作为唯一参数。例如,我们在这里将 Idle Rate 设置为 50。
    GUID-20230228-SS0I-CXW8-K0K3-RVNC26MDLK0X-low.png

    设备会收到设置空闲指示。这可使用“设置空闲响应”来响应,需要 ResultType(0 表示 rtSuccessful,1 表示 rtNotReady,2 表示 rtErrInvalidReportID,3 表示 forrtErrUnsupportedRequest,4 表示 rtErrInvalidParameter,5 表示 rtErrUnknown,6 表示 rtErrFatal,7 表示 rtData)作为一个参数。


    GUID-20230228-SS0I-2Z0T-MM6L-GKKBSRWBKD4Q-low.png

    主机会收到具有 ResultType 的 SetIdleConfirmation。


    GUID-20230228-SS0I-SNTW-8FHH-FLGZL8R8KKPQ-low.png

  9. 使用 DataWrite 在设备之间写入数据。需要的一个参数是 ReportType(0 表示 rtOther,1 表示 rtInput,2 表示 rtOutput,3 表示 rtFeature)。在以下示例中,从设备写入数据。
    GUID-20230228-SS0I-SPLJ-HZNV-0P1TMXPVLVBB-low.png

    主机会收到数据指示。


    GUID-20230228-SS0I-QM68-KGQW-N89FP5V8BMQ8-low.png