• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_HostAddDev
130  *
131  * Description      This is called so HID-host may manage this device.
132  *
133  * Returns          tHID_STATUS
134  *
135  ******************************************************************************/
136 tHID_STATUS HID_HostAddDev(const RawAddress& addr, uint16_t attr_mask,
137                            uint8_t* handle);
138 
139 /*******************************************************************************
140  *
141  * Function         HID_HostRemoveDev
142  *
143  * Description      Removes the device from the list of devices that the host
144  *                  has to manage.
145  *
146  * Returns          tHID_STATUS
147  *
148  ******************************************************************************/
149 tHID_STATUS HID_HostRemoveDev(uint8_t dev_handle);
150 
151 /*******************************************************************************
152  *
153  * Function         HID_HostOpenDev
154  *
155  * Description      This function is called when the user wants to initiate a
156  *                  connection attempt to a device.
157  *
158  * Returns          void
159  *
160  ******************************************************************************/
161 tHID_STATUS HID_HostOpenDev(uint8_t dev_handle);
162 
163 /*******************************************************************************
164  *
165  * Function         HID_HostWriteDev
166  *
167  * Description      This function is called when the host has a report to send.
168  *
169  * Returns          void
170  *
171  ******************************************************************************/
172 tHID_STATUS HID_HostWriteDev(uint8_t dev_handle, uint8_t t_type, uint8_t param,
173                              uint16_t data, uint8_t report_id, BT_HDR* pbuf);
174 
175 /*******************************************************************************
176  *
177  * Function         HID_HostCloseDev
178  *
179  * Description      This function disconnects the device.
180  *
181  * Returns          void
182  *
183  ******************************************************************************/
184 tHID_STATUS HID_HostCloseDev(uint8_t dev_handle);
185 
186 /*******************************************************************************
187  * Function         HID_HostInit
188  *
189  * Description      Initialize the control block and trace variable
190  *
191  * Returns          void
192  ******************************************************************************/
193 void HID_HostInit(void);
194 
195 /*******************************************************************************
196  *
197  * Function         HID_HostSetTraceLevel
198  *
199  * Description      Set the trace level for HID Host. If called with the value
200  *                  0xFF, it simply reads the current trace level.
201  *
202  * Returns          the new (current) trace level
203  *
204  ******************************************************************************/
205 uint8_t HID_HostSetTraceLevel(uint8_t new_level);
206 
207 #endif /* HIDH_API_H */
208