#include <string.h>
+#include "bta/include/bta_hh_api.h"
#include "bta_hh_co.h"
#include "bta_hh_int.h"
#include "bta_sys.h"
uint16_t event = p_cb->vp ? BTA_HH_VC_UNPLUG_EVT : BTA_HH_CLOSE_EVT;
disc_dat.handle = p_cb->hid_handle;
- disc_dat.status = p_data->hid_cback.data;
+ disc_dat.status = to_bta_hh_status(p_data->hid_cback.data);
/* Check reason for closing */
if ((reason & (HID_L2CAP_CONN_FAIL |
#define BTA_HH_SSR_MIN_TOUT_DEF 2
#endif
+#ifndef CASE_RETURN_TEXT
+#define CASE_RETURN_TEXT(code) \
+ case code: \
+ return #code
+#endif
+
/* BTA HID Host callback events */
#define BTA_HH_ENABLE_EVT 0 /* HH enabled */
#define BTA_HH_DISABLE_EVT 1 /* HH disabled */
#define BTA_HH_DEVT_OTHER 0x80
typedef uint8_t tBTA_HH_DEVT;
-enum {
- BTA_HH_OK,
+typedef enum : uint8_t {
+ BTA_HH_OK = 0,
BTA_HH_HS_HID_NOT_READY, /* handshake error : device not ready */
BTA_HH_HS_INVALID_RPT_ID, /* handshake error : invalid report ID */
BTA_HH_HS_TRANS_NOT_SPT, /* handshake error : transaction not spt */
BTA_HH_ERR_AUTH_FAILED, /* authentication fail */
BTA_HH_ERR_HDL,
BTA_HH_ERR_SEC
-};
-typedef uint8_t tBTA_HH_STATUS;
+} tBTA_HH_STATUS;
+
+inline tBTA_HH_STATUS to_bta_hh_status(uint32_t status) {
+ return static_cast<tBTA_HH_STATUS>(status);
+}
+
+inline std::string bta_hh_status_text(const tBTA_HH_STATUS& status) {
+ switch (status) {
+ CASE_RETURN_TEXT(BTA_HH_OK);
+ CASE_RETURN_TEXT(BTA_HH_HS_HID_NOT_READY);
+ CASE_RETURN_TEXT(BTA_HH_HS_INVALID_RPT_ID);
+ CASE_RETURN_TEXT(BTA_HH_HS_TRANS_NOT_SPT);
+ CASE_RETURN_TEXT(BTA_HH_HS_INVALID_PARAM);
+ CASE_RETURN_TEXT(BTA_HH_HS_ERROR);
+ CASE_RETURN_TEXT(BTA_HH_ERR);
+ CASE_RETURN_TEXT(BTA_HH_ERR_SDP);
+ CASE_RETURN_TEXT(BTA_HH_ERR_PROTO);
+ CASE_RETURN_TEXT(BTA_HH_ERR_DB_FULL);
+ CASE_RETURN_TEXT(BTA_HH_ERR_TOD_UNSPT);
+ CASE_RETURN_TEXT(BTA_HH_ERR_NO_RES);
+ CASE_RETURN_TEXT(BTA_HH_ERR_AUTH_FAILED);
+ CASE_RETURN_TEXT(BTA_HH_ERR_HDL);
+ CASE_RETURN_TEXT(BTA_HH_ERR_SEC);
+ default:
+ return std::string("UNKNOWN[%hhu]", status);
+ }
+}
typedef uint16_t tBTA_HH_ATTR_MASK;
if (p_dev->dev_status != BTHH_CONN_STATE_CONNECTED) return;
memset(&p_data, 0, sizeof(tBTA_HH));
- p_data.dev_status.status = BTHH_ERR;
+ p_data.dev_status.status = BTA_HH_ERR; // tBTA_HH_STATUS
p_data.dev_status.handle = p_dev->dev_handle;
/* switch context to btif task context */