hiddefs.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. /******************************************************************************
  2. *
  3. * Copyright (C) 2002-2012 Broadcom Corporation
  4. *
  5. * Licensed under the Apache License, Version 2.0 (the "License");
  6. * you may not use this file except in compliance with the License.
  7. * You may obtain a copy of the License at:
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. *
  17. ******************************************************************************/
  18. /******************************************************************************
  19. *
  20. * This file contains HID protocol definitions
  21. *
  22. ******************************************************************************/
  23. #ifndef HIDDEFS_H
  24. #define HIDDEFS_H
  25. #include "sdp_api.h"
  26. /*
  27. ** tHID_STATUS: HID result codes, returned by HID and device and host functions.
  28. */
  29. enum {
  30. HID_SUCCESS,
  31. HID_ERR_NOT_REGISTERED,
  32. HID_ERR_ALREADY_REGISTERED,
  33. HID_ERR_NO_RESOURCES,
  34. HID_ERR_NO_CONNECTION,
  35. HID_ERR_INVALID_PARAM,
  36. HID_ERR_UNSUPPORTED,
  37. HID_ERR_UNKNOWN_COMMAND,
  38. HID_ERR_CONGESTED,
  39. HID_ERR_CONN_IN_PROCESS,
  40. HID_ERR_ALREADY_CONN,
  41. HID_ERR_DISCONNECTING,
  42. HID_ERR_SET_CONNABLE_FAIL,
  43. /* Device specific error codes */
  44. HID_ERR_HOST_UNKNOWN,
  45. HID_ERR_L2CAP_FAILED,
  46. HID_ERR_AUTH_FAILED,
  47. HID_ERR_SDP_BUSY,
  48. HID_ERR_GATT,
  49. HID_ERR_INVALID = 0xFF
  50. };
  51. typedef UINT8 tHID_STATUS;
  52. #define HID_L2CAP_CONN_FAIL (0x0100) /* Connection Attempt was made but failed */
  53. #define HID_L2CAP_REQ_FAIL (0x0200) /* L2CAP_ConnectReq API failed */
  54. #define HID_L2CAP_CFG_FAIL (0x0400) /* L2CAP Configuration was rejected by peer */
  55. /* Define the HID transaction types
  56. */
  57. #define HID_TRANS_HANDSHAKE (0)
  58. #define HID_TRANS_CONTROL (1)
  59. #define HID_TRANS_GET_REPORT (4)
  60. #define HID_TRANS_SET_REPORT (5)
  61. #define HID_TRANS_GET_PROTOCOL (6)
  62. #define HID_TRANS_SET_PROTOCOL (7)
  63. #define HID_TRANS_GET_IDLE (8)
  64. #define HID_TRANS_SET_IDLE (9)
  65. #define HID_TRANS_DATA (10)
  66. #define HID_TRANS_DATAC (11)
  67. #define HID_GET_TRANS_FROM_HDR(x) ((x >> 4) & 0x0f)
  68. #define HID_GET_PARAM_FROM_HDR(x) (x & 0x0f)
  69. #define HID_BUILD_HDR(t,p) (UINT8)((t << 4) | (p & 0x0f))
  70. /* Parameters for Handshake
  71. */
  72. #define HID_PAR_HANDSHAKE_RSP_SUCCESS (0)
  73. #define HID_PAR_HANDSHAKE_RSP_NOT_READY (1)
  74. #define HID_PAR_HANDSHAKE_RSP_ERR_INVALID_REP_ID (2)
  75. #define HID_PAR_HANDSHAKE_RSP_ERR_UNSUPPORTED_REQ (3)
  76. #define HID_PAR_HANDSHAKE_RSP_ERR_INVALID_PARAM (4)
  77. #define HID_PAR_HANDSHAKE_RSP_ERR_UNKNOWN (14)
  78. #define HID_PAR_HANDSHAKE_RSP_ERR_FATAL (15)
  79. /* Parameters for Control
  80. */
  81. #define HID_PAR_CONTROL_NOP (0)
  82. #define HID_PAR_CONTROL_HARD_RESET (1)
  83. #define HID_PAR_CONTROL_SOFT_RESET (2)
  84. #define HID_PAR_CONTROL_SUSPEND (3)
  85. #define HID_PAR_CONTROL_EXIT_SUSPEND (4)
  86. #define HID_PAR_CONTROL_VIRTUAL_CABLE_UNPLUG (5)
  87. /* Different report types in get, set, data
  88. */
  89. #define HID_PAR_REP_TYPE_MASK (0x03)
  90. #define HID_PAR_REP_TYPE_OTHER (0x00)
  91. #define HID_PAR_REP_TYPE_INPUT (0x01)
  92. #define HID_PAR_REP_TYPE_OUTPUT (0x02)
  93. #define HID_PAR_REP_TYPE_FEATURE (0x03)
  94. /* Parameters for Get Report
  95. */
  96. /* Buffer size in two bytes after Report ID */
  97. #define HID_PAR_GET_REP_BUFSIZE_FOLLOWS (0x08)
  98. /* Parameters for Protocol Type
  99. */
  100. #define HID_PAR_PROTOCOL_MASK (0x01)
  101. #define HID_PAR_PROTOCOL_REPORT (0x01)
  102. #define HID_PAR_PROTOCOL_BOOT_MODE (0x00)
  103. #define HID_PAR_REP_TYPE_MASK (0x03)
  104. /* Descriptor types in the SDP record
  105. */
  106. #define HID_SDP_DESCRIPTOR_REPORT (0x22)
  107. #define HID_SDP_DESCRIPTOR_PHYSICAL (0x23)
  108. typedef struct desc_info {
  109. UINT16 dl_len;
  110. UINT8 *dsc_list;
  111. } tHID_DEV_DSCP_INFO;
  112. #define HID_SSR_PARAM_INVALID 0xffff
  113. typedef struct sdp_info {
  114. char svc_name[HID_MAX_SVC_NAME_LEN]; /*Service Name */
  115. char svc_descr[HID_MAX_SVC_DESCR_LEN]; /*Service Description*/
  116. char prov_name[HID_MAX_PROV_NAME_LEN]; /*Provider Name.*/
  117. UINT16 rel_num; /*Release Number */
  118. UINT16 hpars_ver; /*HID Parser Version.*/
  119. UINT16 ssr_max_latency; /* HIDSSRHostMaxLatency value, if HID_SSR_PARAM_INVALID not used*/
  120. UINT16 ssr_min_tout; /* HIDSSRHostMinTimeout value, if HID_SSR_PARAM_INVALID not used* */
  121. UINT8 sub_class; /*Device Subclass.*/
  122. UINT8 ctry_code; /*Country Code.*/
  123. UINT16 sup_timeout;/* Supervisory Timeout */
  124. tHID_DEV_DSCP_INFO dscp_info; /* Descriptor list and Report list to be set in the SDP record.
  125. This parameter is used if HID_DEV_USE_GLB_SDP_REC is set to FALSE.*/
  126. tSDP_DISC_REC *p_sdp_layer_rec;
  127. } tHID_DEV_SDP_INFO;
  128. #endif