You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
156 lines
4.9 KiB
156 lines
4.9 KiB
/****************************************************************************** |
|
* |
|
* Copyright (C) 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 |
|
|
|
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
|
|
|