/****************************************************************************** * * Copyright 2009-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. * ******************************************************************************/ /******************************************************************************* * * Filename: btif_api.h * * Description: Main API header file for all BTIF functions accessed * from main bluetooth HAL. All HAL extensions will not * require headerfiles as they would be accessed through * callout/callins. * ******************************************************************************/ #ifndef BTIF_API_H #define BTIF_API_H #include <hardware/bluetooth.h> #include "btif_common.h" #include "btif_dm.h" /******************************************************************************* * BTIF CORE API ******************************************************************************/ /******************************************************************************* * * Function btif_init_bluetooth * * Description Creates BTIF task and prepares BT scheduler for startup * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_init_bluetooth(void); /******************************************************************************* * * Function btif_enable_bluetooth * * Description Performs chip power on and kickstarts OS scheduler * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_enable_bluetooth(void); /******************************************************************************* * * Function btif_disable_bluetooth * * Description Inititates shutdown of Bluetooth system. * Any active links will be dropped and device entering * non connectable/discoverable mode * * Returns void * ******************************************************************************/ bt_status_t btif_disable_bluetooth(void); /******************************************************************************* * * Function btif_cleanup_bluetooth * * Description Cleanup BTIF state. * * * Returns void * ******************************************************************************/ bt_status_t btif_cleanup_bluetooth(void); /******************************************************************************* * * Function is_restricted_mode * * Description Checks if BT was enabled in restriced mode. In restricted * mode, bonds that are created are marked as temporary. * These bonds persist until we leave restricted mode, at * which point they will be deleted from the config. Also * while in restricted mode, the user can access devices * that are already paired before entering restricted mode, * but they cannot remove any of these devices. * * Returns bool * ******************************************************************************/ bool is_restricted_mode(void); /******************************************************************************* * * Function is_single_user_mode_ * * Description Checks if BT was enabled in single user mode. In this * mode, use of keystore for key attestation of LTK is limitee * to this mode defined by UserManager. * * Returns bool * ******************************************************************************/ bool is_single_user_mode(void); /******************************************************************************* * * Function btif_get_adapter_properties * * Description Fetches all local adapter properties * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_get_adapter_properties(void); /******************************************************************************* * * Function btif_get_adapter_property * * Description Fetches property value from local cache * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_get_adapter_property(bt_property_type_t type); /******************************************************************************* * * Function btif_set_adapter_property * * Description Updates core stack with property value and stores it in * local cache * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_set_adapter_property(const bt_property_t* property); /******************************************************************************* * * Function btif_get_remote_device_property * * Description Fetches the remote device property from the NVRAM * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_get_remote_device_property(RawAddress* remote_addr, bt_property_type_t type); /******************************************************************************* * * Function btif_get_remote_device_properties * * Description Fetches all the remote device properties from NVRAM * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_get_remote_device_properties(RawAddress* remote_addr); /******************************************************************************* * * Function btif_set_remote_device_property * * Description Writes the remote device property to NVRAM. * Currently, BT_PROPERTY_REMOTE_FRIENDLY_NAME is the only * remote device property that can be set * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_set_remote_device_property(RawAddress* remote_addr, const bt_property_t* property); /******************************************************************************* * * Function btif_get_remote_service_record * * Description Looks up the service matching uuid on the remote device * and fetches the SCN and service_name if the UUID is found * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_get_remote_service_record(const RawAddress& remote_addr, const bluetooth::Uuid& uuid); /******************************************************************************* * BTIF DM API ******************************************************************************/ /******************************************************************************* * * Function btif_dm_start_discovery * * Description Start device discovery/inquiry * * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_start_discovery(void); /******************************************************************************* * * Function btif_dm_cancel_discovery * * Description Cancels search * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_cancel_discovery(void); /******************************************************************************* * * Function btif_dm_create_bond * * Description Initiate bonding with the specified device * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_create_bond(const RawAddress* bd_addr, int transport); /******************************************************************************* * * Function btif_dm_create_bond_out_of_band * * Description Initiate bonding with the specified device using OOB data. * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_create_bond_out_of_band( const RawAddress* bd_addr, int transport, const bt_out_of_band_data_t* oob_data); /******************************************************************************* * * Function btif_dm_cancel_bond * * Description Initiate bonding with the specified device * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_cancel_bond(const RawAddress* bd_addr); /******************************************************************************* * * Function btif_dm_remove_bond * * Description Removes bonding with the specified device * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_remove_bond(const RawAddress* bd_addr); /******************************************************************************* * * Function btif_dm_get_connection_state * * Description Returns whether the remote device is currently connected * * Returns 0 if not connected * ******************************************************************************/ uint16_t btif_dm_get_connection_state(const RawAddress* bd_addr); /******************************************************************************* * * Function btif_dm_pin_reply * * Description BT legacy pairing - PIN code reply * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_pin_reply(const RawAddress* bd_addr, uint8_t accept, uint8_t pin_len, bt_pin_code_t* pin_code); /******************************************************************************* * * Function btif_dm_passkey_reply * * Description BT SSP passkey reply * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_passkey_reply(const RawAddress* bd_addr, uint8_t accept, uint32_t passkey); /******************************************************************************* * * Function btif_dm_ssp_reply * * Description BT SSP Reply - Just Works, Numeric Comparison & Passkey * Entry * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_ssp_reply(const RawAddress* bd_addr, bt_ssp_variant_t variant, uint8_t accept, uint32_t passkey); /******************************************************************************* * * Function btif_dm_get_adapter_property * * Description Queries the BTA for the adapter property * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_get_adapter_property(bt_property_t* prop); /******************************************************************************* * * Function btif_dm_get_remote_services * * Description Start SDP to get remote services * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_get_remote_service_record(const RawAddress& remote_addr, const bluetooth::Uuid& uuid); /******************************************************************************* * * Function btif_dm_get_remote_services * * Description Start SDP to get remote services * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_get_remote_services(const RawAddress& remote_addr); /******************************************************************************* * * Function btif_dm_get_remote_services_by_transport * * Description Start SDP to get remote services by transport * * Returns bt_status_t * ******************************************************************************/ bt_status_t btif_dm_get_remote_services_by_transport(RawAddress* remote_addr, int transport); /******************************************************************************* * * Function btif_dut_mode_configure * * Description Configure Test Mode - 'enable' to 1 puts the device in test * mode and 0 exits test mode * * Returns BT_STATUS_SUCCESS on success * ******************************************************************************/ bt_status_t btif_dut_mode_configure(uint8_t enable); /******************************************************************************* * * Function btif_dut_mode_send * * Description Sends a HCI Vendor specific command to the controller * * Returns BT_STATUS_SUCCESS on success * ******************************************************************************/ bt_status_t btif_dut_mode_send(uint16_t opcode, uint8_t* buf, uint8_t len); /******************************************************************************* * * Function btif_le_test_mode * * Description Sends a HCI BLE Test command to the Controller * * Returns BT_STATUS_SUCCESS on success * ******************************************************************************/ bt_status_t btif_le_test_mode(uint16_t opcode, uint8_t* buf, uint8_t len); /******************************************************************************* * * Function btif_dm_read_energy_info * * Description Reads the energy info from controller * * Returns void * ******************************************************************************/ void btif_dm_read_energy_info(); /******************************************************************************* * * Function btif_config_hci_snoop_log * * Description enable or disable HCI snoop log * * Returns BT_STATUS_SUCCESS on success * ******************************************************************************/ bt_status_t btif_config_hci_snoop_log(uint8_t enable); /******************************************************************************* * * Function btif_debug_bond_event_dump * * Description Dump bond event information * * Returns void * ******************************************************************************/ void btif_debug_bond_event_dump(int fd); #endif /* BTIF_API_H */