static void show_usage(void){ bd_addr_t iut_address; gap_local_bd_addr(iut_address); printf("\n--- Bluetooth AVRCP Test Console %s ---\n", bd_addr_to_str(iut_address)); printf("c - create connection to addr %s\n", bd_addr_to_str(device_addr)); printf("D - disconnect\n"); printf("\n--- Bluetooth AVRCP Commands ---\n"); printf("i - get play status\n"); printf("j - get now playing info\n"); printf("k - play\n"); printf("K - stop\n"); printf("L - pause\n"); printf("m - start fast forward\n"); printf("M - stop fast forward\n"); printf("n - start rewind\n"); printf("N - stop rewind\n"); printf("o - forward\n"); printf("O - backward\n"); printf("p - volume up\n"); printf("P - volume down\n"); printf("r - absolute volume of 50 percent\n"); printf("s - mute\n"); printf("t - skip\n"); printf("u - query repeat and shuffle mode\n"); printf("v - repeat single track\n"); printf("x - repeat all tracks\n"); printf("X - disable repeat mode\n"); printf("z - shuffle all tracks\n"); printf("Z - disable shuffle mode\n"); printf("Ctrl-c - exit\n"); printf("---\n"); }
// Testig User Interface static void show_usage(void){ bd_addr_t iut_address; gap_local_bd_addr(iut_address); printf("\n--- Bluetooth HSP Headset Test Console %s ---\n", bd_addr_to_str(iut_address)); printf("---\n"); printf("p - establish audio connection to PTS module\n"); printf("e - establish audio connection to local mac\n"); printf("d - release audio connection from Bluetooth Speaker\n"); printf("b - press user button\n"); printf("z - set microphone gain 0\n"); printf("m - set microphone gain 8\n"); printf("M - set microphone gain 15\n"); printf("o - set speaker gain 0\n"); printf("s - set speaker gain 8\n"); printf("S - set speaker gain 15\n"); printf("---\n"); printf("Ctrl-c - exit\n"); printf("---\n"); }
static void show_usage(void){ bd_addr_t iut_address; gap_local_bd_addr(iut_address); printf("\n--- Bluetooth AVDTP SINK Test Console %s ---\n", bd_addr_to_str(iut_address)); printf("c - create connection to addr %s\n", device_addr_string); printf("d - discover stream endpoints\n"); printf("g - get capabilities\n"); printf("a - get all capabilities\n"); printf("s - set configuration\n"); printf("f - get configuration\n"); printf("R - reconfigure stream with %d\n", remote_seid); printf("o - establish stream with seid %d\n", remote_seid); printf("m - start stream with %d\n", remote_seid); printf("A - abort stream with %d\n", remote_seid); printf("P - suspend (pause) stream with %d\n", remote_seid); printf("S - stop (release) stream with %d\n", remote_seid); printf("C - disconnect\n"); printf("Ctrl-c - exit\n"); printf("---\n"); }
static void show_usage(void){ bd_addr_t iut_address; gap_local_bd_addr(iut_address); printf("\n--- Bluetooth AVDTP SOURCE Test Console %s ---\n", bd_addr_to_str(iut_address)); printf("c - create connection to addr %s\n", device_addr_string); printf("C - disconnect\n"); printf("d - discover stream endpoints\n"); printf("g - get capabilities\n"); printf("a - get all capabilities\n"); printf("s - set configuration\n"); printf("f - get configuration\n"); printf("R - reconfigure stream with %d\n", media_tracker.remote_seid); printf("o - open stream with seid %d\n", media_tracker.remote_seid); printf("m - start stream with %d\n", media_tracker.remote_seid); printf("A - abort stream with %d\n", media_tracker.remote_seid); printf("S - stop stream with %d\n", media_tracker.remote_seid); printf("P - suspend stream with %d\n", media_tracker.remote_seid); printf("X - stop streaming sine\n"); printf("Ctrl-c - exit\n"); printf("---\n"); }
static void packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){ bd_addr_t addr; if (packet_type != HCI_EVENT_PACKET) return; switch (hci_event_packet_get_type(packet)){ case BTSTACK_EVENT_STATE: if (btstack_event_state_get_state(packet) != HCI_STATE_WORKING) break; gap_local_bd_addr(addr); printf("BTstack up and running at %s\n", bd_addr_to_str(addr)); break; case HCI_EVENT_COMMAND_COMPLETE: if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_local_name)){ if (hci_event_command_complete_get_return_parameters(packet)[0]) break; // terminate, name 248 chars packet[6+248] = 0; printf("Local name: %s\n", &packet[6]); } if (HCI_EVENT_IS_COMMAND_COMPLETE(packet, hci_read_local_version_information)){ local_version_information_handler(packet); } break; default: break; } }
static void app_packet_handler (uint8_t packet_type, uint16_t channel, uint8_t *packet, uint16_t size){ UNUSED(channel); UNUSED(size); bd_addr_t local_addr; switch (packet_type) { case HCI_EVENT_PACKET: switch (packet[0]) { case BTSTACK_EVENT_STATE: // bt stack activated, get started if (btstack_event_state_get_state(packet) == HCI_STATE_WORKING){ gap_local_bd_addr(local_addr); printf("BD_ADDR: %s\n", bd_addr_to_str(local_addr)); // generate OOB data sm_generate_sc_oob_data(sc_local_oob_generated_callback); } break; case HCI_EVENT_LE_META: switch (hci_event_le_meta_get_subevent_code(packet)) { case HCI_SUBEVENT_LE_CONNECTION_COMPLETE: connection_handle = little_endian_read_16(packet, 4); printf("CONNECTED: Connection handle 0x%04x\n", connection_handle); break; default: break; } break; case HCI_EVENT_DISCONNECTION_COMPLETE: break; case SM_EVENT_JUST_WORKS_REQUEST: printf("JUST_WORKS_REQUEST\n"); break; case SM_EVENT_NUMERIC_COMPARISON_REQUEST: printf("NUMERIC_COMPARISON_REQUEST\n"); break; case SM_EVENT_PASSKEY_INPUT_NUMBER: // display number printf("PASSKEY_INPUT_NUMBER\n"); ui_passkey = 0; ui_digits_for_passkey = 6; sm_keypress_notification(connection_handle, SM_KEYPRESS_PASSKEY_ENTRY_STARTED); break; case SM_EVENT_PASSKEY_DISPLAY_NUMBER: // display number printf("PASSKEY_DISPLAY_NUMBER: %06u\n", little_endian_read_32(packet, 11)); break; case SM_EVENT_PASSKEY_DISPLAY_CANCEL: break; case SM_EVENT_AUTHORIZATION_REQUEST: break; case SM_EVENT_PAIRING_COMPLETE: printf("\nPAIRING_COMPLETE: %u,%u\n", sm_event_pairing_complete_get_status(packet), sm_event_pairing_complete_get_reason(packet)); if (sm_event_pairing_complete_get_status(packet)) break; if (we_are_central){ printf("Search for LE Counter service.\n"); state = TC_W4_SERVICE_RESULT; gatt_client_discover_primary_services_by_uuid128(handle_gatt_client_event, connection_handle, le_counter_service_uuid); } break; case ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE: break; case ATT_EVENT_CAN_SEND_NOW: att_server_notify(connection_handle, ATT_CHARACTERISTIC_0000FF11_0000_1000_8000_00805F9B34FB_01_VALUE_HANDLE, (uint8_t *) "Pairing Success!", 16); break; default: break; } } fflush(stdout); }
// Testig User Interface static void show_usage(void){ bd_addr_t iut_address; gap_local_bd_addr(iut_address); printf("\n--- Bluetooth HFP Hands-Free (HF) unit Test Console %s ---\n", bd_addr_to_str(iut_address)); printf("---\n"); printf("z - use iPhone as Audiogateway\n"); printf("a - establish SLC connection to device\n"); printf("A - release SLC connection to device\n"); printf("b - establish Audio connection\n"); printf("B - release Audio connection\n"); printf("c - disable registration status update for all AG indicators\n"); printf("C - enable registration status update for all AG indicators\n"); printf("d - query network operator.\n"); printf("D - set HFP AG registration status update for individual indicators (IIA)\n"); printf("e - disable reporting of the extended AG error result code\n"); printf("E - enable reporting of the extended AG error result code\n"); printf("f - answer incoming call\n"); printf("F - Hangup call\n"); printf("g - query network operator name\n"); printf("G - reject incoming call\n"); printf("i - dial 1234567\n"); printf("I - dial 7654321\n"); printf("j - dial #1\n"); printf("J - dial #99\n"); printf("k - deactivate call waiting notification\n"); printf("K - activate call waiting notification\n"); printf("l - deactivate calling line notification\n"); printf("L - activate calling line notification\n"); printf("m - deactivate echo canceling and noise reduction\n"); printf("M - activate echo canceling and noise reduction\n"); printf("n - deactivate voice recognition\n"); printf("N - activate voice recognition\n"); printf("o - Set speaker volume to 0 (minimum)\n"); printf("O - Set speaker volume to 9 (default)\n"); printf("p - Set speaker volume to 12 (higher)\n"); printf("P - Set speaker volume to 15 (maximum)\n"); printf("q - Set microphone gain to 0 (minimum)\n"); printf("Q - Set microphone gain to 9 (default)\n"); printf("s - Set microphone gain to 12 (higher)\n"); printf("S - Set microphone gain to 15 (maximum)\n"); printf("t - terminate connection\n"); printf("u - send 'user busy' (TWC 0)\n"); printf("U - end active call and accept other call' (TWC 1)\n"); printf("v - Swap active call and hold/waiting call (TWC 2)\n"); printf("V - Join held call (TWC 3)\n"); printf("w - Connect calls (TWC 4)\n"); printf("W - redial\n"); printf("0123456789#*-+ - send DTMF dial tones\n"); printf("x - request phone number for voice tag\n"); printf("X - current call status (ECS)\n"); printf("y - release call with index 2 (ECC)\n"); printf("Y - private consulation with call 2(ECC)\n"); printf("[ - Query Response and Hold status (RHH ?)\n"); printf("] - Place call in a response and held state(RHH 0)\n"); printf("{ - Accept held call(RHH 1)\n"); printf("} - Reject held call(RHH 2)\n"); printf("? - Query Subscriber Number (NUM)\n"); printf("! - Update HF indicator with assigned number 1 (HFI)\n"); printf("---\n"); printf("Ctrl-c - exit\n"); printf("---\n"); }