/******************************************************************************* ** ** Function BTM_EnableTestMode ** ** Description Send HCI the enable device under test command. ** ** Note: Controller can only be taken out of this mode by ** resetting the controller. ** ** Returns ** BTM_SUCCESS Command sent. ** BTM_NO_RESOURCES If out of resources to send the command. ** ** *******************************************************************************/ tBTM_STATUS BTM_EnableTestMode(void) { UINT8 cond; BTM_TRACE_EVENT ("BTM: BTM_EnableTestMode"); /* set auto accept connection as this is needed during test mode */ /* Allocate a buffer to hold HCI command */ cond = HCI_DO_AUTO_ACCEPT_CONNECT; if (!btsnd_hcic_set_event_filter(HCI_FILTER_CONNECTION_SETUP, HCI_FILTER_COND_NEW_DEVICE, &cond, sizeof(cond))) { return (BTM_NO_RESOURCES); } /* put device to connectable mode */ if (!BTM_SetConnectability(BTM_CONNECTABLE, BTM_DEFAULT_CONN_WINDOW, BTM_DEFAULT_CONN_INTERVAL) == BTM_SUCCESS) { return BTM_NO_RESOURCES; } /* put device to discoverable mode */ if (!BTM_SetDiscoverability(BTM_GENERAL_DISCOVERABLE, BTM_DEFAULT_DISC_WINDOW, BTM_DEFAULT_DISC_INTERVAL) == BTM_SUCCESS) { return BTM_NO_RESOURCES; } /* mask off all of event from controller */ hci_layer_get_interface()->transmit_command( hci_packet_factory_get_interface()->make_set_event_mask((const bt_event_mask_t *)("\x00\x00\x00\x00\x00\x00\x00\x00")), NULL, NULL, NULL); /* Send the HCI command */ if (btsnd_hcic_enable_test_mode ()) return (BTM_SUCCESS); else return (BTM_NO_RESOURCES); }
UINT8 btif_enable_test_mode(void) { UINT8 cond; BTIF_TRACE_DEBUG0 ("btif_enable_test_mode"); /* send = hci_cmd 0xc1a 1 0x3 send = hci_cmd 0xc05 3 0x2 0x0 0x2 send = hci_cmd 0x1803 0 send = hci_cmd 0xc1c 4 0x0 0x2 0x12 0x0 send = hci_cmd 0xc1e 4 0x0 0x2 0x12 0x0 */ if (!btsnd_hcic_write_scan_enable (HCI_PAGE_SCAN_ENABLED|HCI_INQUIRY_SCAN_ENABLED)) return -1; /* set auto accept connection as this is needed during test mode */ /* Allocate a buffer to hold HCI command */ cond = HCI_DO_AUTO_ACCEPT_CONNECT; if (!btsnd_hcic_set_event_filter(HCI_FILTER_CONNECTION_SETUP, HCI_FILTER_COND_NEW_DEVICE, &cond, sizeof(cond))) return -1; if (!btsnd_hcic_enable_test_mode ()) return (-1); if (!btsnd_hcic_write_pagescan_cfg (0x0200, BTM_DEFAULT_CONN_WINDOW)) return -1; if (!btsnd_hcic_write_inqscan_cfg(0x0200, BTM_DEFAULT_DISC_WINDOW)) return -1; return 0; }