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 * 21 * This file contains HID protocol definitions 22 * 23 ******************************************************************************/ 24 25 #ifndef HIDDEFS_H 26 #define HIDDEFS_H 27 #include "common/bt_target.h" 28 29 #if (HID_HOST_INCLUDED == TRUE || HID_DEV_INCLUDED == TRUE) 30 31 #if (SDP_INCLUDED == TRUE) 32 #include "stack/sdp_api.h" 33 #endif ///SDP_INCLUDED == TRUE 34 /* 35 ** tHID_STATUS: HID result codes, returned by HID and device and host functions. 36 */ 37 enum { 38 HID_SUCCESS, 39 HID_ERR_NOT_REGISTERED, 40 HID_ERR_ALREADY_REGISTERED, 41 HID_ERR_NO_RESOURCES, 42 HID_ERR_NO_CONNECTION, 43 HID_ERR_INVALID_PARAM, 44 HID_ERR_UNSUPPORTED, 45 HID_ERR_UNKNOWN_COMMAND, 46 HID_ERR_CONGESTED, 47 HID_ERR_CONN_IN_PROCESS, 48 HID_ERR_ALREADY_CONN, 49 HID_ERR_DISCONNECTING, 50 HID_ERR_SET_CONNABLE_FAIL, 51 /* Device specific error codes */ 52 HID_ERR_HOST_UNKNOWN, 53 HID_ERR_L2CAP_FAILED, 54 HID_ERR_AUTH_FAILED, 55 HID_ERR_SDP_BUSY, 56 HID_ERR_GATT, 57 58 HID_ERR_INVALID = 0xFF 59 }; 60 61 typedef UINT8 tHID_STATUS; 62 63 #define HID_L2CAP_CONN_FAIL (0x0100) /* Connection Attempt was made but failed */ 64 #define HID_L2CAP_REQ_FAIL (0x0200) /* L2CAP_ConnectReq API failed */ 65 #define HID_L2CAP_CFG_FAIL (0x0400) /* L2CAP Configuration was rejected by peer */ 66 67 68 69 /* Define the HID transaction types 70 */ 71 #define HID_TRANS_HANDSHAKE (0) 72 #define HID_TRANS_CONTROL (1) 73 #define HID_TRANS_GET_REPORT (4) 74 #define HID_TRANS_SET_REPORT (5) 75 #define HID_TRANS_GET_PROTOCOL (6) 76 #define HID_TRANS_SET_PROTOCOL (7) 77 #define HID_TRANS_GET_IDLE (8) 78 #define HID_TRANS_SET_IDLE (9) 79 #define HID_TRANS_DATA (10) 80 #define HID_TRANS_DATAC (11) 81 82 #define HID_GET_TRANS_FROM_HDR(x) ((x >> 4) & 0x0f) 83 #define HID_GET_PARAM_FROM_HDR(x) (x & 0x0f) 84 #define HID_BUILD_HDR(t,p) (UINT8)((t << 4) | (p & 0x0f)) 85 86 87 /* Parameters for Handshake 88 */ 89 #define HID_PAR_HANDSHAKE_RSP_SUCCESS (0) 90 #define HID_PAR_HANDSHAKE_RSP_NOT_READY (1) 91 #define HID_PAR_HANDSHAKE_RSP_ERR_INVALID_REP_ID (2) 92 #define HID_PAR_HANDSHAKE_RSP_ERR_UNSUPPORTED_REQ (3) 93 #define HID_PAR_HANDSHAKE_RSP_ERR_INVALID_PARAM (4) 94 #define HID_PAR_HANDSHAKE_RSP_ERR_UNKNOWN (14) 95 #define HID_PAR_HANDSHAKE_RSP_ERR_FATAL (15) 96 97 98 /* Parameters for Control 99 */ 100 #define HID_PAR_CONTROL_NOP (0) 101 #define HID_PAR_CONTROL_HARD_RESET (1) 102 #define HID_PAR_CONTROL_SOFT_RESET (2) 103 #define HID_PAR_CONTROL_SUSPEND (3) 104 #define HID_PAR_CONTROL_EXIT_SUSPEND (4) 105 #define HID_PAR_CONTROL_VIRTUAL_CABLE_UNPLUG (5) 106 107 108 /* Different report types in get, set, data 109 */ 110 #define HID_PAR_REP_TYPE_MASK (0x03) 111 #define HID_PAR_REP_TYPE_OTHER (0x00) 112 #define HID_PAR_REP_TYPE_INPUT (0x01) 113 #define HID_PAR_REP_TYPE_OUTPUT (0x02) 114 #define HID_PAR_REP_TYPE_FEATURE (0x03) 115 116 /* Parameters for Get Report 117 */ 118 119 /* Buffer size in two bytes after Report ID */ 120 #define HID_PAR_GET_REP_BUFSIZE_FOLLOWS (0x08) 121 122 123 /* Parameters for Protocol Type 124 */ 125 #define HID_PAR_PROTOCOL_MASK (0x01) 126 #define HID_PAR_PROTOCOL_REPORT (0x01) 127 #define HID_PAR_PROTOCOL_BOOT_MODE (0x00) 128 129 #define HID_PAR_REP_TYPE_MASK (0x03) 130 131 /* Descriptor types in the SDP record 132 */ 133 #define HID_SDP_DESCRIPTOR_REPORT (0x22) 134 #define HID_SDP_DESCRIPTOR_PHYSICAL (0x23) 135 136 typedef struct desc_info { 137 UINT16 dl_len; 138 UINT8 *dsc_list; 139 } tHID_DEV_DSCP_INFO; 140 141 #define HID_SSR_PARAM_INVALID 0xffff 142 143 typedef struct sdp_info { 144 char svc_name[HID_MAX_SVC_NAME_LEN]; /*Service Name */ 145 char svc_descr[HID_MAX_SVC_DESCR_LEN]; /*Service Description*/ 146 char prov_name[HID_MAX_PROV_NAME_LEN]; /*Provider Name.*/ 147 UINT16 rel_num; /*Release Number */ 148 UINT16 hpars_ver; /*HID Parser Version.*/ 149 UINT16 ssr_max_latency; /* HIDSSRHostMaxLatency value, if HID_SSR_PARAM_INVALID not used*/ 150 UINT16 ssr_min_tout; /* HIDSSRHostMinTimeout value, if HID_SSR_PARAM_INVALID not used* */ 151 UINT8 sub_class; /*Device Subclass.*/ 152 UINT8 ctry_code; /*Country Code.*/ 153 UINT16 sup_timeout;/* Supervisory Timeout */ 154 155 tHID_DEV_DSCP_INFO dscp_info; /* Descriptor list and Report list to be set in the SDP record. 156 This parameter is used if HID_DEV_USE_GLB_SDP_REC is set to FALSE.*/ 157 #if(SDP_INCLUDED == TRUE) 158 tSDP_DISC_REC *p_sdp_layer_rec; 159 #endif ///SDP_INCLUDED == TRUE 160 } tHID_DEV_SDP_INFO; 161 162 #endif ///HID_HOST_INCLUDED == TRUE 163 #endif 164