1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "sysdeps.h"
2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "adb.h"
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "adb_client.h"
4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdio.h>
5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectstatic int  connect_to_console(void)
7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    int  fd, port;
9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    port = adb_get_emulator_console_port();
11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if (port < 0) {
12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        if (port == -2)
13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            fprintf(stderr, "error: more than one emulator detected. use -s option\n");
14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        else
15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            fprintf(stderr, "error: no emulator detected\n");
16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        return -1;
17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    fd = socket_loopback_client( port, SOCK_STREAM );
19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if (fd < 0) {
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        fprintf(stderr, "error: could not connect to TCP port %d\n", port);
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        return -1;
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return  fd;
24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectint  adb_send_emulator_command(int  argc, char**  argv)
28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    int   fd, nn;
30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    fd = connect_to_console();
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if (fd < 0)
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        return 1;
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define  QUIT  "quit\n"
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    for (nn = 1; nn < argc; nn++) {
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        adb_write( fd, argv[nn], strlen(argv[nn]) );
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        adb_write( fd, (nn == argc-1) ? "\n" : " ", 1 );
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    adb_write( fd, QUIT, sizeof(QUIT)-1 );
42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    adb_close(fd);
43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return 0;
45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
46