| /* | 
 |  * Copyright 2021 The Android Open Source Project | 
 |  * | 
 |  * 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. | 
 |  */ | 
 |  | 
 | #include <cstdint> | 
 |  | 
 | #include "btif/include/stack_manager.h" | 
 | #include "device/include/interop.h" | 
 | #include "hardware/bluetooth.h" | 
 | #include "stack/include/bt_octets.h" | 
 | #include "types/raw_address.h" | 
 |  | 
 | void set_hal_cbacks(bt_callbacks_t* callbacks) {} | 
 |  | 
 | static int init(bt_callbacks_t* callbacks, bool start_restricted, | 
 |                 bool is_common_criteria_mode, int config_compare_result, | 
 |                 const char** init_flags, bool is_atv) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int enable() { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static int disable(void) { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static void cleanup(void) {} | 
 |  | 
 | bool is_restricted_mode() { return false; } | 
 | bool is_common_criteria_mode() { return false; } | 
 |  | 
 | int get_common_criteria_config_compare_result() { return BT_STATUS_SUCCESS; } | 
 |  | 
 | bool is_atv_device() { return false; } | 
 |  | 
 | static int get_adapter_properties(void) { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static int get_adapter_property(bt_property_type_t type) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int set_adapter_property(const bt_property_t* property) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | int get_remote_device_properties(RawAddress* remote_addr) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | int get_remote_device_property(RawAddress* remote_addr, | 
 |                                bt_property_type_t type) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | int set_remote_device_property(RawAddress* remote_addr, | 
 |                                const bt_property_t* property) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | int get_remote_services(RawAddress* remote_addr, int transport) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int start_discovery(void) { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static int cancel_discovery(void) { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static int create_bond(const RawAddress* bd_addr, int transport) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int create_bond_out_of_band(const RawAddress* bd_addr, int transport, | 
 |                                    const bt_oob_data_t* p192_data, | 
 |                                    const bt_oob_data_t* p256_data) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int generate_local_oob_data(tBT_TRANSPORT transport) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int cancel_bond(const RawAddress* bd_addr) { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static int remove_bond(const RawAddress* bd_addr) { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static int get_connection_state(const RawAddress* bd_addr) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int pin_reply(const RawAddress* bd_addr, uint8_t accept, uint8_t pin_len, | 
 |                      bt_pin_code_t* pin_code) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int ssp_reply(const RawAddress* bd_addr, bt_ssp_variant_t variant, | 
 |                      uint8_t accept, uint32_t passkey) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int read_energy_info() { return BT_STATUS_SUCCESS; } | 
 |  | 
 | static void dump(int fd, const char** arguments) {} | 
 |  | 
 | static void dumpMetrics(std::string* output) {} | 
 |  | 
 | static const void* get_profile_interface(const char* profile_id) { | 
 |   return nullptr; | 
 | } | 
 |  | 
 | int dut_mode_configure(uint8_t enable) { return BT_STATUS_SUCCESS; } | 
 |  | 
 | int dut_mode_send(uint16_t opcode, uint8_t* buf, uint8_t len) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | int le_test_mode(uint16_t opcode, uint8_t* buf, uint8_t len) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int set_os_callouts(bt_os_callouts_t* callouts) { | 
 |   return BT_STATUS_SUCCESS; | 
 | } | 
 |  | 
 | static int config_clear(void) { return 0; } | 
 |  | 
 | static bluetooth::avrcp::ServiceInterface* get_avrcp_service(void) { | 
 |   return nullptr; | 
 | } | 
 |  | 
 | static std::string obfuscate_address(const RawAddress& address) { | 
 |   return std::string("Test"); | 
 | } | 
 |  | 
 | static int get_metric_id(const RawAddress& address) { return 0; } | 
 |  | 
 | static int set_dynamic_audio_buffer_size(int codec, int size) { return 0; } | 
 |  | 
 | EXPORT_SYMBOL bt_interface_t bluetoothInterface = { | 
 |     sizeof(bluetoothInterface), | 
 |     init, | 
 |     enable, | 
 |     disable, | 
 |     cleanup, | 
 |     get_adapter_properties, | 
 |     get_adapter_property, | 
 |     set_adapter_property, | 
 |     get_remote_device_properties, | 
 |     get_remote_device_property, | 
 |     set_remote_device_property, | 
 |     nullptr, | 
 |     get_remote_services, | 
 |     start_discovery, | 
 |     cancel_discovery, | 
 |     create_bond, | 
 |     create_bond_out_of_band, | 
 |     remove_bond, | 
 |     cancel_bond, | 
 |     get_connection_state, | 
 |     pin_reply, | 
 |     ssp_reply, | 
 |     get_profile_interface, | 
 |     dut_mode_configure, | 
 |     dut_mode_send, | 
 |     le_test_mode, | 
 |     set_os_callouts, | 
 |     read_energy_info, | 
 |     dump, | 
 |     dumpMetrics, | 
 |     config_clear, | 
 |     interop_database_clear, | 
 |     interop_database_add, | 
 |     get_avrcp_service, | 
 |     obfuscate_address, | 
 |     get_metric_id, | 
 |     set_dynamic_audio_buffer_size, | 
 |     generate_local_oob_data}; | 
 |  | 
 | // callback reporting helpers | 
 |  | 
 | bt_property_t* property_deep_copy_array(int num_properties, | 
 |                                         bt_property_t* properties) { | 
 |   return nullptr; | 
 | } | 
 |  | 
 | void invoke_adapter_state_changed_cb(bt_state_t state) {} | 
 |  | 
 | void invoke_adapter_properties_cb(bt_status_t status, int num_properties, | 
 |                                   bt_property_t* properties) {} | 
 |  | 
 | void invoke_remote_device_properties_cb(bt_status_t status, RawAddress bd_addr, | 
 |                                         int num_properties, | 
 |                                         bt_property_t* properties) {} | 
 |  | 
 | void invoke_device_found_cb(int num_properties, bt_property_t* properties) {} | 
 |  | 
 | void invoke_discovery_state_changed_cb(bt_discovery_state_t state) {} | 
 |  | 
 | void invoke_pin_request_cb(RawAddress bd_addr, bt_bdname_t bd_name, | 
 |                            uint32_t cod, bool min_16_digit) {} | 
 |  | 
 | void invoke_ssp_request_cb(RawAddress bd_addr, bt_bdname_t bd_name, | 
 |                            uint32_t cod, bt_ssp_variant_t pairing_variant, | 
 |                            uint32_t pass_key) {} | 
 |  | 
 | void invoke_oob_data_request_cb(tBT_TRANSPORT t, bool valid, Octet16 c, | 
 |                                 Octet16 r, RawAddress raw_address, | 
 |                                 uint8_t address_type) {} | 
 |  | 
 | void invoke_bond_state_changed_cb(bt_status_t status, RawAddress bd_addr, | 
 |                                   bt_bond_state_t state, int fail_reason) {} | 
 |  | 
 | void invoke_acl_state_changed_cb(bt_status_t status, RawAddress bd_addr, | 
 |                                  bt_acl_state_t state, int transport_link_type, | 
 |                                  bt_hci_error_code_t hci_reason) {} | 
 |  | 
 | void invoke_thread_evt_cb(bt_cb_thread_evt event) {} | 
 |  | 
 | void invoke_le_test_mode_cb(bt_status_t status, uint16_t count) {} | 
 |  | 
 | // takes ownership of |uid_data| | 
 | void invoke_energy_info_cb(bt_activity_energy_info energy_info, | 
 |                            bt_uid_traffic_t* uid_data) {} | 
 |  | 
 | void invoke_link_quality_report_cb(uint64_t timestamp, int report_id, int rssi, | 
 |                                    int snr, int retransmission_count, | 
 |                                    int packets_not_receive_count, | 
 |                                    int negative_acknowledgement_count) {} |