Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright 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 */
     32 enum {
     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 
     56 typedef 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 
    127 typedef 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 
    134 typedef 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