/****************************************************************************** * * Copyright 2016 The Android Open Source Project * Copyright 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. * ******************************************************************************/ #ifndef BTA_HD_API_H #define BTA_HD_API_H #include #include "bta/include/bta_api.h" #include "stack/include/hiddefs.h" #include "types/raw_address.h" /***************************************************************************** * Constants and Type Definitions ****************************************************************************/ #ifndef BTA_HD_DEBUG #define BTA_HD_DEBUG FALSE #endif /* BTA HID Device callback events */ #define BTA_HD_ENABLE_EVT 0 /* BT-HD enabled */ #define BTA_HD_DISABLE_EVT 1 /* BT-HD disabled */ #define BTA_HD_REGISTER_APP_EVT 2 /* application registered */ #define BTA_HD_UNREGISTER_APP_EVT 3 /* application unregistered */ #define BTA_HD_OPEN_EVT 4 /* connection to host opened */ #define BTA_HD_CLOSE_EVT 5 /* connection to host closed */ #define BTA_HD_GET_REPORT_EVT 6 /* GET_REPORT request from host */ #define BTA_HD_SET_REPORT_EVT 7 /* SET_REPORT request from host */ #define BTA_HD_SET_PROTOCOL_EVT 8 /* SET_PROTOCOL request from host */ #define BTA_HD_INTR_DATA_EVT 9 /* DATA received from host on intr */ #define BTA_HD_VC_UNPLUG_EVT 10 /* Virtual Cable Unplug */ #define BTA_HD_CONN_STATE_EVT 11 /* Report connection state change */ #define BTA_HD_API_ERR_EVT 99 /* BT-HD API error */ typedef uint16_t tBTA_HD_EVT; enum { BTA_HD_OK, BTA_HD_ERROR }; typedef uint8_t tBTA_HD_STATUS; typedef tHID_DEV_DSCP_INFO tBTA_HD_DEV_DESCR; typedef struct { char* p_name; char* p_description; char* p_provider; uint8_t subclass; tBTA_HD_DEV_DESCR descriptor; } tBTA_HD_APP_INFO; typedef struct { uint8_t service_type; uint32_t token_rate; uint32_t token_bucket_size; uint32_t peak_bandwidth; uint32_t access_latency; uint32_t delay_variation; } tBTA_HD_QOS_INFO; typedef struct { bool use_intr; uint8_t type; uint8_t id; uint16_t len; uint8_t* p_data; } tBTA_HD_REPORT; typedef struct { tBTA_HD_STATUS status; bool in_use; RawAddress bda; } tBTA_HD_REG_STATUS; typedef struct { RawAddress bda; tBTA_HD_STATUS status; } tBTA_HD_CONN; typedef struct { uint8_t report_type; uint8_t report_id; uint16_t buffer_size; } tBTA_HD_GET_REPORT; typedef struct { uint8_t report_type; uint8_t report_id; uint16_t len; uint8_t* p_data; } tBTA_HD_SET_REPORT; typedef uint8_t tBTA_HD_SET_PROTOCOL; typedef struct { uint8_t report_id; uint16_t len; uint8_t* p_data; } tBTA_HD_INTR_DATA; /* union of data associated with HD callback */ typedef union { tBTA_HD_STATUS status; /* BTA_HD_ENABLE_EVT BTA_HD_DISABLE_EVT BTA_HD_UNREGISTER_APP_EVT */ tBTA_HD_REG_STATUS reg_status; /* BTA_HD_REGISTER_APP_EVT */ tBTA_HD_CONN conn; /* BTA_HD_OPEN_EVT BTA_HD_CLOSE_EVT BTA_HD_VC_UNPLUG_EVT BTA_HD_OWN_VC_UNPLUG_EVT */ tBTA_HD_GET_REPORT get_report; /* BTA_HD_GET_REPORT */ tBTA_HD_SET_REPORT set_report; /* BTA_HD_SET_REPORT */ tBTA_HD_SET_PROTOCOL set_protocol; /* BTA_HD_SETPROTOCOL */ tBTA_HD_INTR_DATA intr_data; /* BTA_HD_INTR_DATA_EVT */ } tBTA_HD; /* BTA HD callback function */ typedef void(tBTA_HD_CBACK)(tBTA_HD_EVT event, tBTA_HD* p_data); /***************************************************************************** * External Function Declarations ****************************************************************************/ #ifdef __cplusplus extern "C" { #endif /******************************************************************************* * * Function BTA_HhRegister * * Description This function enable HID host and registers HID-Host with * lower layers. * * Returns void * ******************************************************************************/ extern void BTA_HdEnable(tBTA_HD_CBACK* p_cback); /******************************************************************************* * * Function BTA_HhDeregister * * Description This function is called when the host is about power down. * * Returns void * ******************************************************************************/ extern void BTA_HdDisable(void); /******************************************************************************* * * Function BTA_HdRegisterApp * * Description This function is called when application should be *registered * * Returns void * ******************************************************************************/ extern void BTA_HdRegisterApp(tBTA_HD_APP_INFO* p_app_info, tBTA_HD_QOS_INFO* p_in_qos, tBTA_HD_QOS_INFO* p_out_qos); /******************************************************************************* * * Function BTA_HdUnregisterApp * * Description This function is called when application should be *unregistered * * Returns void * ******************************************************************************/ extern void BTA_HdUnregisterApp(void); /******************************************************************************* * * Function BTA_HdSendReport * * Description This function is called when report is to be sent * * Returns void * ******************************************************************************/ extern void BTA_HdSendReport(tBTA_HD_REPORT* p_report); /******************************************************************************* * * Function BTA_HdVirtualCableUnplug * * Description This function is called when VCU shall be sent * * Returns void * ******************************************************************************/ extern void BTA_HdVirtualCableUnplug(void); /******************************************************************************* * * Function BTA_HdConnect * * Description This function is called when connection to host shall be * made * * Returns void * ******************************************************************************/ extern void BTA_HdConnect(const RawAddress& addr); /******************************************************************************* * * Function BTA_HdDisconnect * * Description This function is called when host shall be disconnected * * Returns void * ******************************************************************************/ extern void BTA_HdDisconnect(void); /******************************************************************************* * * Function BTA_HdAddDevice * * Description This function is called when a device is virtually cabled * * Returns void * ******************************************************************************/ extern void BTA_HdAddDevice(const RawAddress& addr); /******************************************************************************* * * Function BTA_HdRemoveDevice * * Description This function is called when a device is virtually uncabled * * Returns void * ******************************************************************************/ extern void BTA_HdRemoveDevice(const RawAddress& addr); /******************************************************************************* * * Function BTA_HdReportError * * Description This function is called when reporting error for set report * * Returns void * ******************************************************************************/ extern void BTA_HdReportError(uint8_t error); #ifdef __cplusplus } #endif #endif /* BTA_HD_API_H */