BLE_HID类设备连接上主机后发数据返回错误码解决方法

发布时间 2023-10-13 13:31:15作者: ZDeST

继上文HID设备的使用,BLE_HID例程增加报表描述符使用

我们在BLE_HID类蓝牙设备应用中调用HidDev_Report函数发送数据,如果出现了返回以下错误码时,应该是HID数据通道未能完全成功打开,我们可以在代码中添加处理以手动辅助开启,

#define bleInvalidTaskID                INVALID_TASK  //!< Task ID isn't setup properly
#define bleEecKeyRequestRejected        0x06   //!< key missing
#define bleNotReady                     0x10   //!< Not ready to perform task
#define bleAlreadyInRequestedMode       0x11   //!< Already performing that task
#define bleIncorrectMode                0x12   //!< Not setup properly to perform that task
#define bleMemAllocError                0x13   //!< Memory allocation error occurred
#define bleNotConnected                 0x14   //!< Can't perform function when not in a connection
#define bleNoResources                  0x15   //!< There are no resource available
#define blePending                      0x16   //!< Waiting
#define bleTimeout                      0x17   //!< Timed out performing function
#define bleInvalidRange                 0x18   //!< A parameter is out of range
#define bleLinkEncrypted                0x19   //!< The link is already encrypted
#define bleProcedureComplete            0x1A   //!< The Procedure is completed
#define bleInvalidMtuSize               0x1B   //!< SDU size is larger than peer MTU.

增加代码:

extern uint16_t hidEmuConnHandle;
void OpenHotiChannel()
{
    GATTServApp_WriteCharCfg(hidEmuConnHandle,hidReportBootKeyInClientCharCfg,0x0001);
    GATTServApp_WriteCharCfg(hidEmuConnHandle,hidReportHIDxInClientCharCfg,0x0001);
    GATTServApp_WriteCharCfg(hidEmuConnHandle,hidReportkeybitInClientCharCfg,0x0001);
    GATTServApp_WriteCharCfg(hidEmuConnHandle,hidReportkeyConsumeInClientCharCfg,0x0001);
    GATTServApp_WriteCharCfg(hidEmuConnHandle,hidReportBootKeyInClientCharCfg,0x0001);
    GATTServApp_WriteCharCfg(hidEmuConnHandle,hidReportmouseInClientCharCfg,0x0001);
    GATTServApp_WriteCharCfg(hidEmuConnHandle,hidReportkeysysInClientCharCfg,0x0001);
}