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