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