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 #ifndef HIDH_API_H 19 #define HIDH_API_H 20 21 #include <cstdint> 22 23 #include "stack/include/bt_hdr.h" 24 #include "stack/include/hiddefs.h" 25 #include "stack/include/sdp_api.h" 26 #include "types/raw_address.h" 27 28 /***************************************************************************** 29 * Constants 30 ****************************************************************************/ 31 32 /* Attributes mask values to be used in HID_HostAddDev API */ 33 #define HID_VIRTUAL_CABLE 0x0001 34 #define HID_NORMALLY_CONNECTABLE 0x0002 35 #define HID_RECONN_INIT 0x0004 36 #define HID_SDP_DISABLE 0x0008 37 #define HID_BATTERY_POWER 0x0010 38 #define HID_REMOTE_WAKE 0x0020 39 #define HID_SUP_TOUT_AVLBL 0x0040 40 #define HID_SSR_MAX_LATENCY 0x0080 41 #define HID_SSR_MIN_TOUT 0x0100 42 43 #define HID_SEC_REQUIRED 0x8000 44 #define HID_ATTR_MASK_IGNORE 0 45 46 /***************************************************************************** 47 * Type Definitions 48 ****************************************************************************/ 49 50 typedef void(tHID_HOST_SDP_CALLBACK)(uint16_t result, uint16_t attr_mask, 51 tHID_DEV_SDP_INFO* sdp_rec); 52 53 /* HID-HOST returns the events in the following table to the application via 54 * tHID_HOST_DEV_CALLBACK 55 * HID_HDEV_EVT_OPEN Connected to device with Interrupt and Control Channels 56 * in OPEN state. 57 * Data = NA 58 * HID_HDEV_EVT_CLOSE Connection with device is closed. Data = reason code. 59 * HID_HDEV_EVT_RETRYING Lost connection is being re-connected. 60 * Data = Retrial number 61 * HID_HDEV_EVT_IN_REPORT Device sent an input report Data = Report Type 62 * pdata = pointer to 63 * BT_HDR 64 * (GKI buffer with report 65 * data.) 66 * HID_HDEV_EVT_HANDSHAKE Device sent SET_REPORT Data = Result-code 67 * pdata = NA. 68 * HID_HDEV_EVT_VC_UNPLUG Device sent Virtual Unplug Data = NA. pdata = NA. 69 */ 70 71 enum { 72 HID_HDEV_EVT_OPEN, 73 HID_HDEV_EVT_CLOSE, 74 HID_HDEV_EVT_RETRYING, 75 HID_HDEV_EVT_INTR_DATA, 76 HID_HDEV_EVT_INTR_DATC, 77 HID_HDEV_EVT_CTRL_DATA, 78 HID_HDEV_EVT_CTRL_DATC, 79 HID_HDEV_EVT_HANDSHAKE, 80 HID_HDEV_EVT_VC_UNPLUG 81 }; 82 typedef void(tHID_HOST_DEV_CALLBACK)( 83 uint8_t dev_handle, const RawAddress& addr, 84 uint8_t event, /* Event from HID-DEVICE. */ 85 uint32_t data, /* Integer data corresponding to the event.*/ 86 BT_HDR* p_buf); /* Pointer data corresponding to the event. */ 87 88 /***************************************************************************** 89 * External Function Declarations 90 ****************************************************************************/ 91 92 /******************************************************************************* 93 * 94 * Function HID_HostGetSDPRecord 95 * 96 * Description This function reads the device SDP record. 97 * 98 * Returns tHID_STATUS 99 * 100 ******************************************************************************/ 101 tHID_STATUS HID_HostGetSDPRecord(const RawAddress& addr, 102 tSDP_DISCOVERY_DB* p_db, uint32_t db_len, 103 tHID_HOST_SDP_CALLBACK* sdp_cback); 104 105 /******************************************************************************* 106 * 107 * Function HID_HostRegister 108 * 109 * Description This function registers HID-Host with lower layers. 110 * 111 * Returns tHID_STATUS 112 * 113 ******************************************************************************/ 114 tHID_STATUS HID_HostRegister(tHID_HOST_DEV_CALLBACK* dev_cback); 115 116 /******************************************************************************* 117 * 118 * Function HID_HostDeregister 119 * 120 * Description This function is called when the host is about power down. 121 * 122 * Returns tHID_STATUS 123 * 124 ******************************************************************************/ 125 tHID_STATUS HID_HostDeregister(void); 126 127 /******************************************************************************* 128 * 129 * Function HID_HostSDPDisable 130 * 131 * Description This is called to check if the device has the HIDSDPDisable 132 * attribute. 133 * 134 * Returns bool 135 * 136 ******************************************************************************/ 137 bool HID_HostSDPDisable(const RawAddress& addr); 138 139 /******************************************************************************* 140 * 141 * Function HID_HostAddDev 142 * 143 * Description This is called so HID-host may manage this device. 144 * 145 * Returns tHID_STATUS 146 * 147 ******************************************************************************/ 148 tHID_STATUS HID_HostAddDev(const RawAddress& addr, uint16_t attr_mask, 149 uint8_t* handle); 150 151 /******************************************************************************* 152 * 153 * Function HID_HostRemoveDev 154 * 155 * Description Removes the device from the list of devices that the host 156 * has to manage. 157 * 158 * Returns tHID_STATUS 159 * 160 ******************************************************************************/ 161 tHID_STATUS HID_HostRemoveDev(uint8_t dev_handle); 162 163 /******************************************************************************* 164 * 165 * Function HID_HostOpenDev 166 * 167 * Description This function is called when the user wants to initiate a 168 * connection attempt to a device. 169 * 170 * Returns void 171 * 172 ******************************************************************************/ 173 tHID_STATUS HID_HostOpenDev(uint8_t dev_handle); 174 175 /******************************************************************************* 176 * 177 * Function HID_HostWriteDev 178 * 179 * Description This function is called when the host has a report to send. 180 * 181 * Returns void 182 * 183 ******************************************************************************/ 184 tHID_STATUS HID_HostWriteDev(uint8_t dev_handle, uint8_t t_type, uint8_t param, 185 uint16_t data, uint8_t report_id, BT_HDR* pbuf); 186 187 /******************************************************************************* 188 * 189 * Function HID_HostCloseDev 190 * 191 * Description This function disconnects the device. 192 * 193 * Returns void 194 * 195 ******************************************************************************/ 196 tHID_STATUS HID_HostCloseDev(uint8_t dev_handle); 197 198 /******************************************************************************* 199 * Function HID_HostInit 200 * 201 * Description Initialize the control block and trace variable 202 * 203 * Returns void 204 ******************************************************************************/ 205 void HID_HostInit(void); 206 207 #endif /* HIDH_API_H */ 208