| /****************************************************************************** |
| * |
| * 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 <cstdint> |
| |
| #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 |
| * |
| ******************************************************************************/ |
| 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 |
| * |
| ******************************************************************************/ |
| void BTA_HdDisable(void); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdRegisterApp |
| * |
| * Description This function is called when application should be |
| *registered |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| 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 |
| * |
| ******************************************************************************/ |
| void BTA_HdUnregisterApp(void); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdSendReport |
| * |
| * Description This function is called when report is to be sent |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| void BTA_HdSendReport(tBTA_HD_REPORT* p_report); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdVirtualCableUnplug |
| * |
| * Description This function is called when VCU shall be sent |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| void BTA_HdVirtualCableUnplug(void); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdConnect |
| * |
| * Description This function is called when connection to host shall be |
| * made |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| void BTA_HdConnect(const RawAddress& addr); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdDisconnect |
| * |
| * Description This function is called when host shall be disconnected |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| void BTA_HdDisconnect(void); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdAddDevice |
| * |
| * Description This function is called when a device is virtually cabled |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| void BTA_HdAddDevice(const RawAddress& addr); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdRemoveDevice |
| * |
| * Description This function is called when a device is virtually uncabled |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| void BTA_HdRemoveDevice(const RawAddress& addr); |
| |
| /******************************************************************************* |
| * |
| * Function BTA_HdReportError |
| * |
| * Description This function is called when reporting error for set report |
| * |
| * Returns void |
| * |
| ******************************************************************************/ |
| void BTA_HdReportError(uint8_t error); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* BTA_HD_API_H */ |