| /****************************************************************************** | |
| * | |
| * Copyright 2002-2012 Broadcom Corporation | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at: | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| ******************************************************************************/ | |
| /****************************************************************************** | |
| * | |
| * This file contains HID protocol definitions | |
| * | |
| ******************************************************************************/ | |
| #ifndef HIDDEFS_H | |
| #define HIDDEFS_H | |
| #include "sdp_api.h" | |
| /* | |
| * tHID_STATUS: HID result codes, returned by HID and device and host functions. | |
| */ | |
| enum { | |
| HID_SUCCESS, | |
| HID_ERR_NOT_REGISTERED, | |
| HID_ERR_ALREADY_REGISTERED, | |
| HID_ERR_NO_RESOURCES, | |
| HID_ERR_NO_CONNECTION, | |
| HID_ERR_INVALID_PARAM, | |
| HID_ERR_UNSUPPORTED, | |
| HID_ERR_UNKNOWN_COMMAND, | |
| HID_ERR_CONGESTED, | |
| HID_ERR_CONN_IN_PROCESS, | |
| HID_ERR_ALREADY_CONN, | |
| HID_ERR_DISCONNECTING, | |
| HID_ERR_SET_CONNABLE_FAIL, | |
| /* Device specific error codes */ | |
| HID_ERR_HOST_UNKNOWN, | |
| HID_ERR_L2CAP_FAILED, | |
| HID_ERR_AUTH_FAILED, | |
| HID_ERR_SDP_BUSY, | |
| HID_ERR_GATT, | |
| HID_ERR_INVALID = 0xFF | |
| }; | |
| typedef uint8_t tHID_STATUS; | |
| #define HID_L2CAP_CONN_FAIL \ | |
| (0x0100) /* Connection Attempt was made but failed */ | |
| #define HID_L2CAP_REQ_FAIL (0x0200) /* L2CAP_ConnectReq API failed */ | |
| #define HID_L2CAP_CFG_FAIL \ | |
| (0x0400) /* L2CAP Configuration was rejected by peer */ | |
| /* Define the HID transaction types | |
| */ | |
| #define HID_TRANS_HANDSHAKE (0) | |
| #define HID_TRANS_CONTROL (1) | |
| #define HID_TRANS_GET_REPORT (4) | |
| #define HID_TRANS_SET_REPORT (5) | |
| #define HID_TRANS_GET_PROTOCOL (6) | |
| #define HID_TRANS_SET_PROTOCOL (7) | |
| #define HID_TRANS_GET_IDLE (8) | |
| #define HID_TRANS_SET_IDLE (9) | |
| #define HID_TRANS_DATA (10) | |
| #define HID_TRANS_DATAC (11) | |
| #define HID_GET_TRANS_FROM_HDR(x) (((x) >> 4) & 0x0f) | |
| #define HID_GET_PARAM_FROM_HDR(x) ((x)&0x0f) | |
| #define HID_BUILD_HDR(t, p) (uint8_t)(((t) << 4) | ((p)&0x0f)) | |
| /* Parameters for Handshake | |
| */ | |
| #define HID_PAR_HANDSHAKE_RSP_SUCCESS (0) | |
| #define HID_PAR_HANDSHAKE_RSP_NOT_READY (1) | |
| #define HID_PAR_HANDSHAKE_RSP_ERR_INVALID_REP_ID (2) | |
| #define HID_PAR_HANDSHAKE_RSP_ERR_UNSUPPORTED_REQ (3) | |
| #define HID_PAR_HANDSHAKE_RSP_ERR_INVALID_PARAM (4) | |
| #define HID_PAR_HANDSHAKE_RSP_ERR_UNKNOWN (14) | |
| #define HID_PAR_HANDSHAKE_RSP_ERR_FATAL (15) | |
| /* Parameters for Control | |
| */ | |
| #define HID_PAR_CONTROL_NOP (0) | |
| #define HID_PAR_CONTROL_HARD_RESET (1) | |
| #define HID_PAR_CONTROL_SOFT_RESET (2) | |
| #define HID_PAR_CONTROL_SUSPEND (3) | |
| #define HID_PAR_CONTROL_EXIT_SUSPEND (4) | |
| #define HID_PAR_CONTROL_VIRTUAL_CABLE_UNPLUG (5) | |
| /* Different report types in get, set, data | |
| */ | |
| #define HID_PAR_REP_TYPE_MASK (0x03) | |
| #define HID_PAR_REP_TYPE_OTHER (0x00) | |
| #define HID_PAR_REP_TYPE_INPUT (0x01) | |
| #define HID_PAR_REP_TYPE_OUTPUT (0x02) | |
| #define HID_PAR_REP_TYPE_FEATURE (0x03) | |
| /* Parameters for Get Report | |
| */ | |
| /* Buffer size in two bytes after Report ID */ | |
| #define HID_PAR_GET_REP_BUFSIZE_FOLLOWS (0x08) | |
| /* Parameters for Protocol Type | |
| */ | |
| #define HID_PAR_PROTOCOL_MASK (0x01) | |
| #define HID_PAR_PROTOCOL_REPORT (0x01) | |
| #define HID_PAR_PROTOCOL_BOOT_MODE (0x00) | |
| #define HID_PAR_REP_TYPE_MASK (0x03) | |
| /* Descriptor types in the SDP record | |
| */ | |
| #define HID_SDP_DESCRIPTOR_REPORT (0x22) | |
| #define HID_SDP_DESCRIPTOR_PHYSICAL (0x23) | |
| typedef struct desc_info { | |
| uint16_t dl_len; | |
| uint8_t* dsc_list; | |
| } tHID_DEV_DSCP_INFO; | |
| #define HID_SSR_PARAM_INVALID 0xffff | |
| #define HIDD_APP_DESCRIPTOR_LEN 2048 | |
| typedef struct sdp_info { | |
| char svc_name[HID_MAX_SVC_NAME_LEN]; /*Service Name */ | |
| char svc_descr[HID_MAX_SVC_DESCR_LEN]; /*Service Description*/ | |
| char prov_name[HID_MAX_PROV_NAME_LEN]; /*Provider Name.*/ | |
| uint16_t rel_num; /*Release Number */ | |
| uint16_t hpars_ver; /*HID Parser Version.*/ | |
| uint16_t ssr_max_latency; /* HIDSSRHostMaxLatency value, if | |
| HID_SSR_PARAM_INVALID not used*/ | |
| uint16_t | |
| ssr_min_tout; /* HIDSSRHostMinTimeout value, if HID_SSR_PARAM_INVALID not | |
| used* */ | |
| uint8_t sub_class; /*Device Subclass.*/ | |
| uint8_t ctry_code; /*Country Code.*/ | |
| uint16_t sup_timeout; /* Supervisory Timeout */ | |
| tHID_DEV_DSCP_INFO dscp_info; /* Descriptor list and Report list to be set in | |
| the SDP record. | |
| This parameter is used if | |
| HID_DEV_USE_GLB_SDP_REC is set to false.*/ | |
| tSDP_DISC_REC* p_sdp_layer_rec; | |
| } tHID_DEV_SDP_INFO; | |
| #endif |