Lines Matching refs:client

96     struct ControlClientRec_*  next;       /* next client in list           */
122 /* UI client currently attached to the core. */
125 /* User events service client. */
128 /* UI control service client (UI -> Core). */
134 /* UI control service client (Core-> UI). */
195 * the client, or redirecting the socket to another service.
200 control_client_detach( ControlClient client )
204 if (client->sock < 0)
207 qemu_set_fd_handler( client->sock, NULL, NULL, NULL );
208 result = client->sock;
209 client->sock = -1;
216 /* Reattach a control client to a given socket.
217 * Return the old socket descriptor for the client.
220 control_client_reattach( ControlClient client, int fd )
222 int result = control_client_detach(client);
223 client->sock = fd;
224 qemu_set_fd_handler( fd, control_client_read, NULL, client );
229 control_client_destroy( ControlClient client )
231 ControlGlobal global = client->global;
235 D(( "destroying control client %p\n", client ));
238 if (client == attached_ui_client) {
243 if (client == user_events_client) {
248 if (client == ui_core_ctl_client) {
253 if (client == core_ui_ctl_client) {
259 sock = control_client_detach( client );
267 if ( node == client ) {
275 free( client );
280 static void control_control_write( ControlClient client, const char* buff, int len )
288 ret = socket_send( client->sock, buff, len);
299 static int control_vwrite( ControlClient client, const char* format, va_list args )
304 control_control_write( client, temp, -1 );
309 static int control_write( ControlClient client, const char* format, ... )
314 ret = control_vwrite(client, format, args);
325 ControlClient client = calloc( sizeof(*client), 1 );
327 if (client) {
330 client->finished = 0;
331 client->global = global;
332 client->sock = socket;
333 client->next = global->clients;
334 global->clients = client;
336 qemu_set_fd_handler( socket, control_client_read, NULL, client );
338 return client;
347 void (*descriptor)( ControlClient client );
348 int (*handler)( ControlClient client, char* args );
400 dump_help( ControlClient client,
405 control_write( client, "%s", cmd->description );
407 cmd->descriptor( client );
409 control_write( client, "%s\r\n", cmd->abstract );
413 control_write( client, "\r\navailable sub-commands:\r\n" );
415 control_write( client, " %s %-15s %s\r\n", prefix, cmd->names, cmd->abstract );
417 control_write( client, "\r\n" );
422 control_client_do_command( ControlClient client )
424 char* line = client->buff;
427 char* cmdend = client->buff;
431 control_write( client, "KO: unknown command, try 'help'\r\n" );
439 if ( !cmd->handler( client, args ) ) {
440 control_write( client, "OK\r\n" );
447 control_write( client, "KO: internal error: buggy command table for '%.*s'\r\n",
448 cmdend - client->buff, client->buff );
454 dump_help( client, cmd, "" );
455 control_write( client, "KO: missing sub-command\r\n" );
463 dump_help( client, cmd, "" );
464 control_write( client, "KO: bad sub-command\r\n" );
473 do_help( ControlClient client, char* args )
482 control_write( client, "Android console command help:\r\n\r\n" );
484 control_write( client, " %-15s %s\r\n", cmd->names, cmd->abstract );
486 control_write( client, "\r\ntry 'help <command>' for command-specific help\r\n" );
497 control_write( client, "try one of these instead:\r\n\r\n" );
499 control_write( client, " %.*s %s\r\n",
502 control_write( client, "\r\nKO: unknown command\r\n" );
507 dump_help( client, subcmd, start );
516 control_client_read_byte( ControlClient client, unsigned char ch )
524 client->buff[ client->buff_len ] = 0;
525 control_client_do_command( client );
526 if (client->finished)
529 client->buff_len = 0;
533 if (client->buff_len >= sizeof(client->buff)-1)
534 client->buff_len = 0;
536 client->buff[ client->buff_len++ ] = ch;
543 ControlClient client = _client;
548 size = socket_recv( client->sock, buf, sizeof(buf) );
552 control_client_destroy( client );
559 control_client_destroy( client );
583 control_client_read_byte( client, buf[nn] );
584 if (client->finished) {
585 control_client_destroy(client);
593 /* this function is called on each new client connection */
598 ControlClient client;
617 D(( "control_global_accept: creating new client\n" ));
618 client = control_client_create( fd, global );
619 if (client) {
620 D(( "control_global_accept: new client %p\n", client ));
621 control_write( client, "Android Console: type 'help' for a list of commands\r\n" );
622 control_write( client, "OK\r\n" );
672 do_quit( ControlClient client, char* args )
674 client->finished = 1;
687 do_network_status( ControlClient client, char* args )
689 control_write( client, "Current network status:\r\n" );
691 control_write( client, " download speed: %8d bits/s (%.1f KB/s)\r\n",
694 control_write( client, " upload speed: %8d bits/s (%.1f KB/s)\r\n",
697 control_write( client, " minimum latency: %ld ms\r\n", qemu_net_min_latency );
698 control_write( client, " maximum latency: %ld ms\r\n", qemu_net_max_latency );
703 dump_network_speeds( ControlClient client )
708 control_write( client, format, speed->name, speed->display );
710 control_write( client, format, "<num>", "selects both upload and download speed" );
711 control_write( client, format, "<up>:<down>", "select individual upload/download speeds" );
716 do_network_speed( ControlClient client, char* args )
719 control_write( client, "KO: missing <speed> argument, see 'help network speed'\r\n" );
723 control_write( client, "KO: invalid <speed> argument, see 'help network speed' for valid values\r\n" );
738 describe_network_speed( ControlClient client )
740 control_write( client,
743 dump_network_speeds( client );
747 do_network_delay( ControlClient client, char* args )
750 control_write( client, "KO: missing <delay> argument, see 'help network delay'\r\n" );
754 control_write( client, "KO: invalid <delay> argument, see 'help network delay' for valid values\r\n" );
762 describe_network_delay( ControlClient client )
764 control_write( client,
771 do_network_capture_start( ControlClient client, char* args )
774 control_write( client, "KO: missing <file> argument, see 'help network capture start'\r\n" );
778 control_write( client, "KO: could not start capture: %s", strerror(errno) );
785 do_network_capture_stop( ControlClient client, char* args )
837 do_redir_list( ControlClient client, char* args )
839 ControlGlobal global = client->global;
842 control_write( client, "no active redirections\r\n" );
847 control_write( client, "%s:%-5d => %-5d\r\n",
913 do_redir_add( ControlClient client, char* args )
923 control_write( client, "KO: network emulation disabled\r\n");
936 redir = redir_find( client->global, host_port, host_proto );
938 control_write( client, "KO: host port already active, use 'redir del' to remove first\r\n" );
943 control_write( client, "KO: unexpected internal failure when resolving 10.0.2.15\r\n" );
948 if ( control_global_add_redir( client->global, host_port, host_proto,
951 control_write( client, "KO: not enough memory to allocate redirection\r\n" );
956 control_write( client, "KO: can't setup redirection, port probably used by another program on host\r\n" );
957 control_global_del_redir( client->global, host_port, host_proto );
964 control_write( client, "KO: bad redirection format, try (tcp|udp):hostport:guestport\r\n", -1 );
970 do_redir_del( ControlClient client, char* args )
981 redir = redir_find( client->global, port, proto );
983 control_write( client, "KO: can't remove unknown redirection (%s:%d)\r\n",
989 control_global_del_redir( client->global, port, proto );\
994 control_write( client, "KO: bad redirection format, try (tcp|udp):hostport\r\n" );
1043 dump_subscription_sources( ControlClient client )
1049 control_write( client, " %s: %s\r\n",
1056 describe_subscription_source( ControlClient client )
1058 control_write( client,
1060 dump_subscription_sources( client );
1064 do_cdma_ssource( ControlClient client, char* args )
1068 control_write( client, "KO: missing argument, try 'cdma ssource <source>'\r\n" );
1084 control_write( client, "KO: Don't know source %s\r\n", args );
1089 do_cdma_prl_version( ControlClient client, char * args )
1095 control_write( client, "KO: missing argument, try 'cdma prl_version <version>'\r\n");
1140 do_gsm_status( ControlClient client, char* args )
1143 control_write( client, "KO: no argument required\r\n" );
1147 control_write( client, "KO: modem emulation not running\r\n" );
1150 control_write( client, "gsm voice state: %s\r\n",
1153 control_write( client, "gsm data state: %s\r\n",
1161 help_gsm_data( ControlClient client )
1164 control_write( client,
1174 control_write( client, " %-15s %s\r\n", name, display );
1176 control_write( client, "\r\n" );
1181 do_gsm_data( ControlClient client, char* args )
1186 control_write( client, "KO: missing argument, try 'gsm data <state>'\r\n" );
1199 control_write( client, "KO: modem emulation not running\r\n" );
1208 control_write( client, "KO: bad GSM data state name, try 'help gsm data' for list of valid values\r\n" );
1213 help_gsm_voice( ControlClient client )
1216 control_write( client,
1226 control_write( client, " %-15s %s\r\n", name, display );
1228 control_write( client, "\r\n" );
1233 do_gsm_voice( ControlClient client, char* args )
1238 control_write( client, "KO: missing argument, try 'gsm voice <state>'\r\n" );
1251 control_write( client, "KO: modem emulation not running\r\n" );
1258 control_write( client, "KO: bad GSM data state name, try 'help gsm voice' for list of valid values\r\n" );
1281 do_gsm_call( ControlClient client, char* args )
1285 control_write( client, "KO: missing argument, try 'gsm call <phonenumber>'\r\n" );
1290 control_write( client, "KO: bad phone number format, use digits, # and + only\r\n" );
1295 control_write( client, "KO: modem emulation not running\r\n" );
1303 do_gsm_cancel( ControlClient client, char* args )
1306 control_write( client, "KO: missing argument, try 'gsm call <phonenumber>'\r\n" );
1310 control_write( client, "KO: bad phone number format, use digits, # and + only\r\n" );
1314 control_write( client, "KO: modem emulation not running\r\n" );
1318 control_write( client, "KO: could not cancel this number\r\n" );
1339 do_gsm_list( ControlClient client, char* args )
1356 control_write( client, "%s %-10s : %s\r\n", dir,
1363 do_gsm_busy( ControlClient client, char* args )
1368 control_write( client, "KO: missing argument, try 'gsm busy <phonenumber>'\r\n" );
1373 control_write( client, "KO: no current outbound call to number '%s' (call %p)\r\n", args, call );
1377 control_write( client, "KO: could not cancel this number\r\n" );
1384 do_gsm_hold( ControlClient client, char* args )
1389 control_write( client, "KO: missing argument, try 'gsm out hold <phonenumber>'\r\n" );
1394 control_write( client, "KO: no current call to/from number '%s'\r\n", args );
1398 control_write( client, "KO: could put this call on hold\r\n" );
1406 do_gsm_accept( ControlClient client, char* args )
1411 control_write( client, "KO: missing argument, try 'gsm accept <phonenumber>'\r\n" );
1416 control_write( client, "KO: no current call to/from number '%s'\r\n", args );
1420 control_write( client, "KO: could not activate this call\r\n" );
1427 do_gsm_signal( ControlClient client, char* args )
1445 control_write( client, "KO: argument '%s' is not a number\n", p );
1460 control_write( client, "KO: not enough arguments: see 'help gsm signal' for details\r\n" );
1466 control_write( client, "KO: invalid RSSI - must be 0..31 or 99\r\n");
1474 control_write( client, "KO: invalid BER - must be 0..7 or 99\r\n");
1576 do_sms_send( ControlClient client, char* args )
1587 control_write( client, "KO: missing argument, try 'sms send <phonenumber> <text message>'\r\n" );
1596 control_write( client, "KO: bad phone number format, must be [+](0-9)*\r\n" );
1606 control_write( client, "message must be utf8 and can use the following escapes:\r\n"
1617 control_write( client, "KO: modem emulation not running\r\n" );
1624 control_write( client, "KO: internal error when creating SMS-DELIVER PDUs\n" );
1636 do_sms_sendpdu( ControlClient client, char* args )
1642 control_write( client, "KO: missing argument, try 'sms sendpdu <hexstring>'\r\n" );
1647 control_write( client, "KO: modem emulation not running\r\n" );
1653 control_write( client, "KO: badly formatted <hexstring>\r\n" );
1684 do_power_display( ControlClient client, char* args )
1686 goldfish_battery_display(do_control_write, client);
1691 do_ac_state( ControlClient client, char* args )
1704 control_write( client, "KO: Usage: \"ac on\" or \"ac off\"\n" );
1709 do_battery_status( ControlClient client, char* args )
1734 control_write( client, "KO: Usage: \"status unknown|charging|discharging|not-charging|full\"\n" );
1739 do_battery_present( ControlClient client, char* args )
1752 control_write( client, "KO: Usage: \"present true\" or \"present false\"\n" );
1757 do_battery_health( ControlClient client, char* args )
1786 control_write( client, "KO: Usage: \"health unknown|good|overheat|dead|overvoltage|failure\"\n" );
1791 do_battery_capacity( ControlClient client, char* args )
1802 control_write( client, "KO: Usage: \"capacity <percentage>\"\n" );
1846 do_event_send( ControlClient client, char* args )
1851 control_write( client, "KO: Usage: event send <type>:<code>:<value> ...\r\n" );
1874 control_write( client,
1878 control_write( client,
1882 control_write( client,
1896 do_event_types( ControlClient client, char* args )
1901 control_write( client, "event <type> can be an integer or one of the following aliases\r\n" );
1910 control_write( client, " %-8s", tmp );
1912 control_write( client, " (%d code aliases)", count2 );
1914 control_write( client, "\r\n" );
1920 do_event_codes( ControlClient client, char* args )
1926 control_write( client, "KO: argument missing, try 'event codes <type>'\r\n" );
1931 control_write( client, "KO: bad argument, see 'event types' for valid values\r\n" );
1937 control_write( client, "no code aliases defined for this type\r\n" );
1939 control_write( client, "type '%s' accepts the following <code> aliases:\r\n",
1944 control_write( client, " %-12s\r\n", temp );
1978 do_event_text( ControlClient client, char* args )
1987 control_write( client, "KO: argument missing, try 'event text <message>'\r\n" );
1994 control_write( client, "KO: no character map active in current device layout/config\r\n" );
2004 control_write( client, "message must be utf8 and can use the following escapes:\r\n"
2064 ControlClient client = opaque;
2065 control_control_write(client, str, strsize);
2073 ControlClient client = opaque;
2074 ret += control_write(client, "KO: ");
2075 control_control_write(client, str, strsize);
2080 do_snapshot_list( ControlClient client, char* args )
2083 Monitor *out = monitor_fake_new(client, control_write_out_cb);
2084 Monitor *err = monitor_fake_new(client, control_write_err_cb);
2094 do_snapshot_save( ControlClient client, char* args )
2099 control_write(client, "KO: argument missing, try 'avd snapshot save <name>'\r\n");
2103 Monitor *err = monitor_fake_new(client, control_write_err_cb);
2112 do_snapshot_load( ControlClient client, char* args )
2117 control_write(client, "KO: argument missing, try 'avd snapshot load <name>'\r\n");
2121 Monitor *err = monitor_fake_new(client, control_write_err_cb);
2130 do_snapshot_del( ControlClient client, char* args )
2135 control_write(client, "KO: argument missing, try 'avd snapshot del <name>'\r\n");
2139 Monitor *err = monitor_fake_new(client, control_write_err_cb);
2179 do_avd_stop( ControlClient client, char* args )
2182 control_write( client, "KO: virtual device already stopped\r\n" );
2190 do_avd_start( ControlClient client, char* args )
2193 control_write( client, "KO: virtual device already running\r\n" );
2201 do_avd_status( ControlClient client, char* args )
2203 control_write( client, "virtual device is %s\r\n", vm_running ? "running" : "stopped" );
2208 do_avd_name( ControlClient client, char* args )
2210 control_write( client, "%s\r\n", android_hw->avd_name);
2248 do_geo_nmea( ControlClient client, char* args )
2251 control_write( client, "KO: NMEA sentence missing, try 'help geo nmea'\r\n" );
2255 control_write( client, "KO: no GPS emulation in this virtual device\r\n" );
2263 do_geo_fix( ControlClient client, char* args )
2284 control_write( client, "KO: argument '%s' is not a number\n", p );
2299 control_write( client, "KO: not enough arguments: see 'help geo fix' for details\r\n" );
2309 control_write( client, "KO: invalid number of satellites. Must be an integer between 1 and 12\r\n");
2424 do_sensors_get( ControlClient client, char* args )
2427 control_write( client, "KO: Usage: \"get <sensorname>\"\n" );
2449 do_control_write( client, buffer );
2468 do_control_write( client, buffer );
2474 do_sensors_set( ControlClient client, char* args )
2477 control_write( client, "KO: Usage: \"set <sensorname> <value-a>[:<value-b>[:<value-c>]]\"\n" );
2486 control_write( client, "KO: Memory allocation failed.\n" );
2560 do_control_write( client, buffer );
2565 control_write( client, "KO: Usage: \"set <sensorname> <value-a>[:<value-b>[:<value-c>]]\"\n" );
2572 do_sensors_status( ControlClient client, char* args )
2581 control_write( client, buffer );
2614 do_window_scale( ControlClient client, char* args )
2621 control_write( client, "KO: argument missing, try 'window scale <scale>'\r\n" );
2632 control_write( client, "KO: argument <scale> must be a real number, or an integer followed by 'dpi'\r\n" );
2661 do_qemu_monitor( ControlClient client, char* args )
2668 control_write( client, "KO: no argument for 'qemu monitor'\r\n" );
2671 /* Detach the client socket, and re-attach it to a monitor */
2672 fd = control_client_detach(client);
2676 control_client_reattach(client, fd);
2677 control_write( client, "KO: internal error: could not detach from console !\r\n" );
2681 control_client_destroy(client);
2690 do_attach_ui( ControlClient client, char* args )
2694 control_write( client, "KO: Another UI is attached to this core!\r\n" );
2695 control_client_destroy(client);
2699 if (!attachUiProxy_create(client->sock)) {
2701 attached_ui_client = client;
2704 control_write( client, reply_buf);
2706 control_write( client, "KO\r\n" );
2707 control_client_destroy(client);
2723 do_create_framebuffer_service( ControlClient client, char* args )
2744 control_write( client, "KO: Invalid parameter\r\n" );
2745 control_client_destroy(client);
2750 core_fb = proxyFb_create(client->sock, protocol);
2752 control_write( client, "KO\r\n" );
2753 control_client_destroy(client);
2760 control_write( client, reply_buf);
2765 do_create_user_events_service( ControlClient client, char* args )
2767 // Make sure that there are no user events client already existing.
2769 control_write( client, "KO: Another user events service is already existing!\r\n" );
2770 control_client_destroy(client);
2774 if (!userEventsImpl_create(client->sock)) {
2776 user_events_client = client;
2778 control_write( client, reply_buf);
2780 control_write( client, "KO\r\n" );
2781 control_client_destroy(client);
2797 do_create_ui_core_ctl_service( ControlClient client, char* args )
2799 // Make sure that there are no ui control client already existing.
2801 control_write( client, "KO: Another UI control service is already existing!\r\n" );
2802 control_client_destroy(client);
2806 if (!coreCmdImpl_create(client->sock)) {
2808 ui_core_ctl_client = client;
2810 control_write( client, reply_buf);
2812 control_write( client, "KO\r\n" );
2813 control_client_destroy(client);
2837 do_create_core_ui_ctl_service( ControlClient client, char* args )
2839 // Make sure that there are no ui control client already existing.
2841 control_write( client, "KO: Another UI control service is already existing!\r\n" );
2842 control_client_destroy(client);
2846 if (!uiCmdProxy_create(client->sock)) {
2848 core_ui_ctl_client = client;
2850 control_write( client, reply_buf);
2852 control_write( client, "KO\r\n" );
2853 control_client_destroy(client);
2919 do_kill( ControlClient client, char* args )
2921 control_write( client, "OK: killing emulator, bye bye\r\n" );