static void source_p(int argc, const char **argv) { if (argc < 2) { haltest_error("No file specified"); return; } process_file(argv[1]); } /* Commands available without interface */ static struct method commands[] = { STD_METHODCH(help, "[<interface>]"), STD_METHOD(quit), METHOD("exit", quit_p, NULL, NULL), STD_METHODH(source, "<file>"), END_METHOD }; /* Gets comman by name */ struct method *get_command(const char *name) { return get_method(commands, name); } /* Function to enumerate interface names */ const char *interface_name(void *v, int i) { return interfaces[i] ? interfaces[i]->name : NULL; }
haltest_error("No command specified\n"); return; } command = atoi(argv[2]); VERIFY_ADDR_ARG(3, &bd_addr); VERIFY_UUID(4, &uuid); for (i = 5; i < argc; i++) VERIFY_TEST_ARG(i, *u++); EXEC(if_gatt->client->test_command, command, ¶ms); } static struct method client_methods[] = { STD_METHODH(register_client, "[<uuid>]"), STD_METHODCH(unregister_client, "<client_if>"), STD_METHODCH(scan, "<client_if> [1|0]"), STD_METHODCH(connect, "<client_if> <addr> [<is_direct>]"), STD_METHODCH(disconnect, "<client_if> <addr> <conn_id>"), STD_METHODCH(refresh, "<client_if> <addr>"), STD_METHODCH(search_service, "<conn_id> [<uuid>]"), STD_METHODCH(get_included_service, "<conn_id> <srvc_id>"), STD_METHODCH(get_characteristic, "<conn_id> <srvc_id>"), STD_METHODCH(get_descriptor, "<conn_id> <srvc_id> <char_id>"), STD_METHODCH(read_characteristic, "<conn_id> <srvc_id> <char_id> [<auth_req>]"), STD_METHODCH(write_characteristic, "<conn_id> <srvc_id> <char_id> <write_type> <hex_value> [<auth_req>]"), STD_METHODCH(read_descriptor, "<conn_id> <srvc_id> <char_id> <descr_id> [<auth_req>]"),
/* cleanup */ static void cleanup_p(int argc, const char **argv) { RETURN_IF_NULL(if_hl); EXECV(if_hl->cleanup); if_hl = NULL; } static struct method methods[] = { STD_METHOD(init), STD_METHODH(register_application, "<app_name> <provider_name> <srv_name> <srv_descr>\n" "<num_of_mdeps>\n" "[[<mdep_role>] [<data_type>] [<channel_type>] [<mdep_descr>]]" "..."), STD_METHODH(unregister_application, "<app_id>"), STD_METHODH(connect_channel, "<app_id> <bd_addr> <mdep_cfg_index>"), STD_METHODH(destroy_channel, "<channel_id>"), STD_METHODH(close_channel, "<app_id> <mdep_cfg_index> <channel_id>"), STD_METHOD(cleanup), END_METHOD }; const struct interface hl_if = { .name = "hl", .methods = methods };
STD_METHOD(enable), STD_METHOD(disable), STD_METHOD(get_adapter_properties), STD_METHODCH(get_adapter_property, "<prop_type>"), STD_METHODCH(set_adapter_property, "<prop_type> <prop_value>"), STD_METHODCH(get_remote_device_properties, "<addr>"), STD_METHODCH(get_remote_device_property, "<addr> <property_type>"), STD_METHODCH(set_remote_device_property, "<addr> <property_type> <value>"), STD_METHODCH(get_remote_service_record, "<addr> <uuid>"), STD_METHODCH(get_remote_services, "<addr>"), STD_METHOD(start_discovery), STD_METHOD(cancel_discovery), STD_METHODCH(create_bond, "<addr>"), STD_METHODCH(remove_bond, "<addr>"), STD_METHODCH(cancel_bond, "<addr>"), STD_METHODCH(pin_reply, "<address> [<pin>]"), STD_METHODCH(ssp_reply, "<address> <ssp_veriant> 1|0 [<passkey>]"), STD_METHODCH(get_profile_interface, "<profile id>"), STD_METHODH(dut_mode_configure, "<dut mode>"), STD_METHOD(dut_mode_send), STD_METHOD(le_test_mode), STD_METHODH(config_hci_snoop_log, "<mode>"), END_METHOD }; const struct interface bluetooth_if = { .name = "bluetooth", .methods = methods };
stream_out->common.set_sample_rate(&stream_out->common, atoi(argv[2])); } static void init_check_p(int argc, const char **argv) { RETURN_IF_NULL(if_audio); haltest_info("Init check result: %d\n", if_audio->init_check(if_audio)); } static struct method methods[] = { STD_METHOD(init), STD_METHOD(cleanup), STD_METHOD(open_output_stream), STD_METHOD(close_output_stream), STD_METHODH(play, "<path to pcm file>"), STD_METHOD(stop), STD_METHOD(suspend), STD_METHOD(resume), STD_METHOD(get_latency), STD_METHOD(get_buffer_size), STD_METHOD(get_channels), STD_METHOD(get_format), STD_METHOD(get_sample_rate), STD_METHODH(get_parameters, "<A2dpSuspended;closing>"), STD_METHODH(set_parameters, "<A2dpSuspended=value;closing=value>"), STD_METHODH(set_sample_rate, "<sample rate>"), STD_METHOD(init_check), END_METHOD };
RETURN_IF_NULL(if_hf_client); EXECV(if_hf_client->cleanup); if_hf_client = NULL; } static struct method methods[] = { STD_METHOD(init), STD_METHODCH(connect, "<addr>"), STD_METHODCH(disconnect, "<addr>"), STD_METHODCH(connect_audio, "<addr>"), STD_METHODCH(disconnect_audio, "<addr>"), STD_METHOD(start_voice_recognition), STD_METHOD(stop_voice_recognition), STD_METHODCH(volume_control, "<volume_type> <value>"), STD_METHODH(dial, "<destination_number>"), STD_METHODH(dial_memory, "<memory_location>"), STD_METHODCH(handle_call_action, "<call_action> <call_index>"), STD_METHOD(query_current_calls), STD_METHOD(query_current_operator_name), STD_METHOD(retrieve_subscriber_info), STD_METHODH(send_dtmf, "<code>"), STD_METHOD(request_last_voice_tag_number), STD_METHOD(cleanup), END_METHOD }; const struct interface hf_client_if = { .name = "handsfree_client", .methods = methods };
EXECV(if_hf->cleanup); if_hf = NULL; } static struct method methods[] = { STD_METHOD(init), STD_METHODCH(connect, "<addr>"), STD_METHODCH(disconnect, "<addr>"), STD_METHODCH(connect_audio, "<addr>"), STD_METHODCH(disconnect_audio, "<addr>"), STD_METHOD(start_voice_recognition), STD_METHOD(stop_voice_recognition), STD_METHODCH(volume_control, "<vol_type> <volume>"), STD_METHODCH(device_status_notification, "<ntk_state> <svt_type> <signal> <batt_chg>"), STD_METHODH(cops_response, "<cops string>"), STD_METHODCH(cind_response, "<svc> <num_active> <num_held> <setup_state> <signal> <roam> <batt_chg>"), STD_METHODH(formatted_at_response, "<at_response>"), STD_METHODCH(at_response, "<response_code> [<error_code>]"), STD_METHODCH(clcc_response, "<index> <direction> <state> <mode> <mpty> <number> <type>"), STD_METHODCH(phone_state_change, "<num_active> <num_held> <setup_state> <number> <type>"), STD_METHOD(cleanup), END_METHOD }; const struct interface hf_if = { .name = "handsfree", .methods = methods