/*******************************************************************************
*
+ * Function is_atv_device
+ *
+ * Description Returns true if the local device is an Android TV
+ * device, false if it is not.
+ *
+ * Returns bool
+ *
+ ******************************************************************************/
+bool is_atv_device(void);
+
+/*******************************************************************************
+ *
* Function btif_get_adapter_properties
*
* Description Fetches all local adapter properties
bool niap_mode = false;
const int CONFIG_COMPARE_ALL_PASS = 0b11;
int niap_config_compare_result = CONFIG_COMPARE_ALL_PASS;
+bool is_local_device_atv = false;
/*******************************************************************************
* Externs
****************************************************************************/
static int init(bt_callbacks_t* callbacks, bool start_restricted,
- bool is_niap_mode, int config_compare_result) {
+ bool is_niap_mode, int config_compare_result, bool is_atv) {
LOG_INFO(LOG_TAG,
"%s: start restricted = %d ; niap = %d, config compare result = %d",
__func__, start_restricted, is_niap_mode, config_compare_result);
restricted_mode = start_restricted;
niap_mode = is_niap_mode;
niap_config_compare_result = config_compare_result;
+ is_local_device_atv = is_atv;
stack_manager_get_interface()->init_stack();
btif_debug_init();
return niap_mode ? niap_config_compare_result : CONFIG_COMPARE_ALL_PASS;
}
+bool is_atv_device() { return is_local_device_atv; }
+
static int get_adapter_properties(void) {
/* sanity check */
if (!interface_ready()) return BT_STATUS_NOT_READY;
* The |is_niap_mode| flag inits the adapter in NIAP mode.
* The |config_compare_result| flag show the config checksum check result if
* is in NIAP mode.
+ * The |is_atv| flag indicates whether the local device is an Android TV
*/
int (*init)(bt_callbacks_t* callbacks, bool guest_mode, bool is_niap_mode,
- int config_compare_result);
+ int config_compare_result, bool is_atv);
/** Enable Bluetooth. */
int (*enable)();
// Initialize the Bluetooth interface. Set up the adapter (Bluetooth DM) API
// callbacks.
- status = hal_iface_->init(&bt_callbacks, false, false, 0);
+ status = hal_iface_->init(&bt_callbacks, false, false, 0, false);
if (status != BT_STATUS_SUCCESS) {
LOG(ERROR) << "Failed to initialize Bluetooth stack";
return false;
#include <cutils/log.h>
#include <log/log.h>
#include <string.h>
+#include "btif_api.h"
#include "btif_common.h"
#include "btif_storage.h"
#include "device/include/interop.h"
smp_int_data.status = SMP_PAIR_AUTH_FAIL;
int_evt = SMP_AUTH_CMPL_EVT;
} else {
- if (p_cb->local_io_capability != SMP_IO_CAP_NONE &&
- p_cb->local_io_capability != SMP_IO_CAP_IN) {
+ if (!is_atv_device() &&
+ (p_cb->local_io_capability == SMP_IO_CAP_IO ||
+ p_cb->local_io_capability == SMP_IO_CAP_KBDISP)) {
/* display consent dialog if this device has a display */
SMP_TRACE_DEBUG("ENCRYPTION_ONLY showing Consent Dialog");
p_cb->cb_evt = SMP_CONSENT_REQ_EVT;
}
if (p_cb->selected_association_model == SMP_MODEL_SEC_CONN_JUSTWORKS) {
- if (p_cb->local_io_capability != SMP_IO_CAP_NONE &&
- p_cb->local_io_capability != SMP_IO_CAP_IN) {
+ if (!is_atv_device() &&
+ (p_cb->local_io_capability == SMP_IO_CAP_IO ||
+ p_cb->local_io_capability == SMP_IO_CAP_KBDISP)) {
/* display consent dialog */
SMP_TRACE_DEBUG("JUST WORKS showing Consent Dialog");
p_cb->cb_evt = SMP_CONSENT_REQ_EVT;
void HeadlessStack::SetUp() {
LOG(INFO) << __func__ << " Entry";
- int status = bluetoothInterface.init(&bt_callbacks, false, false, 0);
+ int status = bluetoothInterface.init(&bt_callbacks, false, false, 0, false);
(status == BT_STATUS_SUCCESS)
? LOG(INFO) << __func__ << " Initialized bluetooth callbacks"
: LOG(FATAL) << "Failed to initialize Bluetooth stack";
ASSERT_TRUE(bt_callbacks != nullptr);
for (int i = 0; i < kTestRepeatCount; ++i) {
- bt_interface()->init(bt_callbacks, false, false, 0);
+ bt_interface()->init(bt_callbacks, false, false, 0, false);
EXPECT_EQ(bt_interface()->enable(), BT_STATUS_SUCCESS);
semaphore_wait(adapter_state_changed_callback_sem_);
EXPECT_EQ(GetState(), BT_STATE_ON) << "Adapter did not turn on.";