1 /****************************************************************************** 2 * 3 * Copyright 2016 The Android Open Source Project 4 * Copyright 2002-2012 Broadcom Corporation 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at: 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 * 18 ******************************************************************************/ 19 #ifndef HIDD_API_H 20 #define HIDD_API_H 21 22 #include "hiddefs.h" 23 #include "sdp_api.h" 24 25 /***************************************************************************** 26 * Type Definitions 27 ****************************************************************************/ 28 29 enum { HID_CHANNEL_INTR, HID_CHANNEL_CTRL }; 30 31 /* 32 HID_DHOST_EVT_OPEN - connected to host device (CTRL and INTR), data = n/a 33 HID_DHOST_EVT_CLOSE - disconnected from host device, data=reason 34 HID_DHOST_EVT_GET_REPORT - got GET_REPORT from host 35 HID_DHOST_EVT_SET_REPORT - got SET_REPORT from host 36 HID_DHOST_EVT_SET_PROTOCOL - got SET_PROTOCOL from host 37 */ 38 39 enum { 40 HID_DHOST_EVT_OPEN, 41 HID_DHOST_EVT_CLOSE, 42 HID_DHOST_EVT_GET_REPORT, 43 HID_DHOST_EVT_SET_REPORT, 44 HID_DHOST_EVT_SET_PROTOCOL, 45 HID_DHOST_EVT_INTR_DATA, 46 HID_DHOST_EVT_VC_UNPLUG, 47 HID_DHOST_EVT_SUSPEND, 48 HID_DHOST_EVT_EXIT_SUSPEND, 49 }; 50 typedef void(tHID_DEV_HOST_CALLBACK)(const RawAddress& bd_addr, uint8_t event, 51 uint32_t data, BT_HDR* p_buf); 52 53 /***************************************************************************** 54 * External Function Declarations 55 ****************************************************************************/ 56 #ifdef __cplusplus 57 extern "C" { 58 #endif 59 60 /******************************************************************************* 61 * 62 * Function HID_DevInit 63 * 64 * Description Initializes control block 65 * 66 * Returns void 67 * 68 ******************************************************************************/ 69 extern void HID_DevInit(void); 70 71 /******************************************************************************* 72 * 73 * Function HID_DevRegister 74 * 75 * Description Registers HID device with lower layers 76 * 77 * Returns tHID_STATUS 78 * 79 ******************************************************************************/ 80 extern tHID_STATUS HID_DevRegister(tHID_DEV_HOST_CALLBACK* host_cback); 81 82 /******************************************************************************* 83 * 84 * Function HID_DevDeregister 85 * 86 * Description Deregisters HID device with lower layers 87 * 88 * Returns tHID_STATUS 89 * 90 ******************************************************************************/ 91 extern tHID_STATUS HID_DevDeregister(void); 92 93 /******************************************************************************* 94 * 95 * Function HID_DevSetSecurityLevel 96 * 97 * Description Sets security level for HID device connections 98 * 99 * Returns tHID_STATUS 100 * 101 ******************************************************************************/ 102 extern tHID_STATUS HID_DevSetSecurityLevel(uint8_t sec_lvl); 103 104 /******************************************************************************* 105 * 106 * Function HID_DevAddRecord 107 * 108 * Description Creates SDP record for HID device 109 * 110 * Returns tHID_STATUS 111 * 112 ******************************************************************************/ 113 extern tHID_STATUS HID_DevAddRecord(uint32_t handle, char* p_name, 114 char* p_description, char* p_provider, 115 uint16_t subclass, uint16_t desc_len, 116 uint8_t* p_desc_data); 117 118 /******************************************************************************* 119 * 120 * Function HID_DevSendReport 121 * 122 * Description Sends report 123 * 124 * Returns tHID_STATUS 125 * 126 ******************************************************************************/ 127 extern tHID_STATUS HID_DevSendReport(uint8_t channel, uint8_t type, uint8_t id, 128 uint16_t len, uint8_t* p_data); 129 130 /******************************************************************************* 131 * 132 * Function HID_DevVirtualCableUnplug 133 * 134 * Description Sends Virtual Cable Unplug 135 * 136 * Returns tHID_STATUS 137 * 138 ******************************************************************************/ 139 extern tHID_STATUS HID_DevVirtualCableUnplug(void); 140 141 /******************************************************************************* 142 * 143 * Function HID_DevPlugDevice 144 * 145 * Description Establishes virtual cable to given host 146 * 147 * Returns tHID_STATUS 148 * 149 ******************************************************************************/ 150 extern tHID_STATUS HID_DevPlugDevice(const RawAddress& addr); 151 152 /******************************************************************************* 153 * 154 * Function HID_DevUnplugDevice 155 * 156 * Description Unplugs virtual cable from given host 157 * 158 * Returns tHID_STATUS 159 * 160 ******************************************************************************/ 161 extern tHID_STATUS HID_DevUnplugDevice(const RawAddress& addr); 162 163 /******************************************************************************* 164 * 165 * Function HID_DevConnect 166 * 167 * Description Connects to device 168 * 169 * Returns tHID_STATUS 170 * 171 ******************************************************************************/ 172 extern tHID_STATUS HID_DevConnect(void); 173 174 /******************************************************************************* 175 * 176 * Function HID_DevDisconnect 177 * 178 * Description Disconnects from device 179 * 180 * Returns tHID_STATUS 181 * 182 ******************************************************************************/ 183 extern tHID_STATUS HID_DevDisconnect(void); 184 185 /******************************************************************************* 186 * 187 * Function HID_DevSetIncomingPolicy 188 * 189 * Description Sets policy for incoming connections (allowed/disallowed) 190 * 191 * Returns tHID_STATUS 192 * 193 ******************************************************************************/ 194 extern tHID_STATUS HID_DevSetIncomingPolicy(bool allow); 195 196 /******************************************************************************* 197 * 198 * Function HID_DevReportError 199 * 200 * Description Reports error for Set Report via HANDSHAKE 201 * 202 * Returns tHID_STATUS 203 * 204 ******************************************************************************/ 205 extern tHID_STATUS HID_DevReportError(uint8_t error); 206 207 /******************************************************************************* 208 * 209 * Function HID_DevGetDevice 210 * 211 * Description Returns the BD Address of virtually cabled device 212 * 213 * Returns tHID_STATUS 214 * 215 ******************************************************************************/ 216 extern tHID_STATUS HID_DevGetDevice(RawAddress* addr); 217 218 /******************************************************************************* 219 * 220 * Function HID_DevSetIncomingQos 221 * 222 * Description Sets Incoming QoS values for Interrupt L2CAP Channel 223 * 224 * Returns tHID_STATUS 225 * 226 ******************************************************************************/ 227 extern tHID_STATUS HID_DevSetIncomingQos( 228 uint8_t service_type, uint32_t token_rate, uint32_t token_bucket_size, 229 uint32_t peak_bandwidth, uint32_t latency, uint32_t delay_variation); 230 231 /******************************************************************************* 232 * 233 * Function HID_DevSetOutgoingQos 234 * 235 * Description Sets Outgoing QoS values for Interrupt L2CAP Channel 236 * 237 * Returns tHID_STATUS 238 * 239 ******************************************************************************/ 240 extern tHID_STATUS HID_DevSetOutgoingQos( 241 uint8_t service_type, uint32_t token_rate, uint32_t token_bucket_size, 242 uint32_t peak_bandwidth, uint32_t latency, uint32_t delay_variation); 243 244 /******************************************************************************* 245 * 246 * Function HID_DevSetTraceLevel 247 * 248 * Description This function sets the trace level for HID Dev. If called 249 * with a value of 0xFF, it simply reads the current trace level. 250 * 251 * Returns the new (current) trace level 252 * 253 ******************************************************************************/ 254 extern uint8_t HID_DevSetTraceLevel(uint8_t new_level); 255 256 #ifdef __cplusplus 257 } 258 #endif 259 260 #endif /* HIDD_API_H */ 261