
/* hand-written for now; consider .hx autogen */

static mon_cmd_t android_redir_cmds[] = {
    {
        .name = "list",
        .args_type = "",
        .params = "",
        .help = "list current redirections",
        .mhandler.cmd = android_console_redir_list,
    },
    {
        .name = "add",
        .args_type = "arg:s",
        .params = "[tcp|udp]:hostport:guestport",
        .help = "add new redirection",
        .mhandler.cmd = android_console_redir_add,
    },
    {
        .name = "del",
        .args_type = "arg:s",
        .params = "[tcp|udp]:hostport",
        .help = "remove existing redirection",
        .mhandler.cmd = android_console_redir_del,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_power_cmds[] = {
    {
        .name = "display",
        .args_type = "",
        .params = "",
        .help = "display battery and charger state",
        .mhandler.cmd = android_console_power_display,
    },
    {
        .name = "ac",
        .args_type = "arg:s?",
        .params = "",
        .help = "set AC charging state",
        .mhandler.cmd = android_console_power_ac,
    },
    {
        .name = "status",
        .args_type = "arg:s?",
        .params = "",
        .help = "set battery status",
        .mhandler.cmd = android_console_power_status,
    },
    {
        .name = "present",
        .args_type = "arg:s?",
        .params = "",
        .help = "set battery present state",
        .mhandler.cmd = android_console_power_present,
    },
    {
        .name = "health",
        .args_type = "arg:s?",
        .params = "",
        .help = "set battery health state",
        .mhandler.cmd = android_console_power_health,
    },
    {
        .name = "capacity",
        .args_type = "arg:s?",
        .params = "",
        .help = "set battery capacity state",
        .mhandler.cmd = android_console_power_capacity,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_event_cmds[] = {
    {
        .name = "types",
        .args_type = "arg:s?",
        .params = "",
        .help = "list all <type> aliases",
        .mhandler.cmd = android_console_event_types,
    },
    {
        .name = "codes",
        .args_type = "arg:s?",
        .params = "",
        .help = "list all <code> aliases for a given <type>",
        .mhandler.cmd = android_console_event_codes,
    },
    {
        .name = "send",
        .args_type  = "arg:s?",
        .params = "",
        .help = "send a series of events to the kernel",
        .mhandler.cmd = android_console_event_send,
    },
    {
        .name = "text",
        .args_type  = "arg:S?",
        .params = "",
        .help = "simulate keystrokes from a given text",
        .mhandler.cmd = android_console_event_text,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_avd_snapshot_cmds[] = {
    {
        .name = "list",
        .args_type = "",
        .params = "",
        .help = "'avd snapshot list' will show a list of all state snapshots "
                "that can be loaded",
        .mhandler.cmd = android_console_avd_snapshot_list,
    },
    {
        .name = "save",
        .args_type = "arg:s?",
        .params = "",
        .help = "'avd snapshot save <name>' will save the current (run-time) "
                "state to a snapshot with the given name",
        .mhandler.cmd = android_console_avd_snapshot_save,
    },
    {
        .name = "load",
        .args_type = "arg:s?",
        .params = "",
        .help = "'avd snapshot load <name>' will load the state snapshot of "
                "the given name",
        .mhandler.cmd = android_console_avd_snapshot_load,
    },
    {
        .name = "del",
        .args_type = "arg:s?",
        .params = "",
        .help = "'avd snapshot del <name>' will delete the state snapshot with "
                "the given name",
        .mhandler.cmd = android_console_avd_snapshot_del,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_avd_cmds[] = {
    {
        .name = "stop",
        .args_type = "",
        .params = "",
        .help = "stop the virtual device",
        .mhandler.cmd = android_console_avd_stop,
    },
    {
        .name = "start",
        .args_type = "",
        .params = "",
        .help = "start/restart the virtual device",
        .mhandler.cmd = android_console_avd_start,
    },
    {
        .name = "status",
        .args_type = "",
        .params = "",
        .help = "query virtual device status",
        .mhandler.cmd = android_console_avd_status,
    },
    {
        .name = "name",
        .args_type = "",
        .params = "",
        .help = "query virtual device name",
        .mhandler.cmd = android_console_avd_name,
    },
    {
        .name = "snapshot",
        .args_type = "item:s",
        .params = "",
        .help = "state snapshot commands",
        .mhandler.cmd = android_console_avd_snapshot,
        .sub_cmds.static_table = android_avd_snapshot_cmds,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_finger_cmds[] = {
    {
        .name = "touch",
        .args_type = "arg:s?",
        .params = "",
        .help = "touch fingerprint sensor with <fingerid>",
        .mhandler.cmd = android_console_finger_touch,
    },
    {
        .name = "remove",
        .args_type = "",
        .params = "",
        .help = "remove finger from the fingerprint sensor",
        .mhandler.cmd = android_console_finger_remove,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_geo_cmds[] = {
    {
        .name = "nmea",
        .args_type = "arg:s?",
        .params = "",
        .help = "send a GPS NMEA sentence\n"
            "'geo nema <sentence>' sends an NMEA 0183 sentence to the emulated device, as\n"
            "if it came from an emulated GPS modem. <sentence> must begin with '$GP'. Only\n"
            "'$GPGGA' and '$GPRCM' sentences are supported at the moment.\n",
        .mhandler.cmd = android_console_geo_nmea,
    },
    {
        .name = "fix",
        .args_type = "arg:S?",
        .params = "",
        .help = "send a simple GPS fix\n"
            "'geo fix <longitude> <latitude> [<altitude> [<satellites>]]'\n"
            " allows you to send a simple GPS fix to the emulated system.\n"
            " The parameters are:\n\n"
            "  <longitude>   longitude, in decimal degrees\n"
            "  <latitude>    latitude, in decimal degrees\n"
            "  <altitude>    optional altitude in meters\n"
            "  <satellites>  number of satellites being tracked (1-12)\n"
            "\n",
        .mhandler.cmd = android_console_geo_fix,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_sms_cmds[] = {
    {
        .name = "send",
        .args_type = "arg:S?",
        .params = "",
        .help = "send inbound SMS text message\n"
            "'sms send <phonenumber> <message>' allows you to simulate a new inbound sms message\n",
        .mhandler.cmd = android_console_sms_send,
    },
    {
        .name = "pdu",
        .args_type = "arg:s?",
        .params = "",
        .help = "send inbound SMS PDU\n"
            "'sms pdu <hexstring>' allows you to simulate a new inbound sms PDU\n"
             "(used internally when one emulator sends SMS messages to another instance).\n"
             "you probably don't want to play with this at all\n"
             "\n",
        .mhandler.cmd = android_console_sms_pdu,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_cdma_cmds[] = {
    {
        .name = "ssource",
        .args_type = "arg:s?",
        .params = "",
        .help = "set the current CDMA subscription source\n"
            "'cdma ssource <ssource>' allows you to specify where to read the subscription from\n",
        .mhandler.cmd = android_console_cdma_ssource,
    },
    {
        .name = "prl_version",
        .args_type = "arg:s?",
        .params = "",
        .help = "dump the current PRL version\n"
        "'cdma prl_version <version>' allows you to dump the current PRL version\n",
        .mhandler.cmd = android_console_cdma_prl_version,
    },
    { NULL, NULL, },
};

static mon_cmd_t android_gsm_cmds[] = {
    {
        .name = "list",
        .args_type = "",
        .params = "",
        .help = "list current phone calls\n"
            "'gsm list' lists all inbound and outbound calls and their state\n",
        .mhandler.cmd = android_console_gsm_list,
    },
    {
        .name = "call",
        .args_type = "arg:s?",
        .params = "",
        .help = "create inbound phone call\n"
            "'gsm call <phonenumber>' allows you to simulate a new inbound call\n",
        .mhandler.cmd = android_console_gsm_call,
    },
    {
        .name = "busy",
        .args_type = "arg:s?",
        .params = "",
        .help = "close waiting outbound call as busy\n"
            "'gsm busy <phonenumber>' closes an outbound call, reporting\n"
    "the remote phone as busy. only possible if the call is 'waiting'.\n",
        .mhandler.cmd = android_console_gsm_busy,
    },
    {
        .name = "hold",
        .args_type = "arg:s?",
        .params = "",
        .help = "change the state of an outbound call to 'held'\n"
            "'gsm hold <remoteNumber>' change the state of a call to 'held'. this is only possible\n"
    "if the call in the 'waiting' or 'active' state\n",
        .mhandler.cmd = android_console_gsm_hold,
    },
    {
        .name = "accept",
        .args_type = "arg:s?",
        .params = "",
        .help = "change the state of an outbound call to 'active'\n"
            "'gsm accept <remoteNumber>' change the state of a call to 'active'. this is only possible\n"
    "if the call is in the 'waiting' or 'held' state\n",
        .mhandler.cmd = android_console_gsm_accept,
    },
    {
        .name = "cancel",
        .args_type = "arg:s?",
        .params = "",
        .help = "disconnect an inbound or outbound phone call\n"
            "'gsm cancel <phonenumber>' allows you to simulate the end of an inbound or outbound call\n",
        .mhandler.cmd = android_console_gsm_cancel,
    },
    {
        .name = "data",
        .args_type = "arg:s?",
        .params = "",
        .help = "modify data connection state"
            "'gsm data <state>' allows you to modify the data connection state\n",
        .mhandler.cmd = android_console_gsm_data,
    },
    {
        .name = "voice",
        .args_type = "arg:s?",
        .params = "",
        .help = "modify voice connection state"
            "'gsm voice <state>' allows you to modify the voice connection state\n",
        .mhandler.cmd = android_console_gsm_voice,
    },
    {
        .name = "status",
        .args_type = "",
        .params = "",
        .help = "display GSM status"
            "'gsm status' displays the current state of the GSM emulation\n",
        .mhandler.cmd = android_console_gsm_status,
    },
    {
        .name = "signal",
        .args_type = "arg:S?",
        .params = "",
        .help = "sets the rssi and ber"
                "signal <rssi> [<ber>]' changes the reported strength and error rate on next (15s) update.\n"
                "rssi range is 0..31 and 99 for unknown\n"
                "ber range is 0..7 percent and 99 for unknown\n",
        .mhandler.cmd = android_console_gsm_signal,
    },
    {
        .name = "signal-profile",
        .args_type = "arg:S?",
        .params = "",
        .help = "sets the signal strength profile"
            "signal-profile <strength>' changes the reported strength on next (15s) update.\n"
            "strength range is 0..4\n",
        .mhandler.cmd = android_console_gsm_signal_profile,
    },
    { NULL, NULL, },
};

#ifdef _WIN32
// NOTE: HELP_COMMAND is defined by winuser.h which conflicts with this.
#undef HELP_COMMAND
#endif

#define HELP_COMMAND                                                  \
    {                                                                 \
        .name = "help|h|?", .args_type = "helptext:S?", .params = "", \
        .help = "print a list of commands",                           \
        .mhandler.cmd = android_console_help,                         \
    }

#define QUIT_COMMAND                                                          \
    {                                                                         \
        .name = "quit|exit", .args_type = "", .params = "",                   \
        .help = "quit control session", .mhandler.cmd = android_console_quit, \
    }

#define AVD_HELP "control virtual device execution"

static mon_cmd_t android_cmds[] = {
    HELP_COMMAND,
    {
        .name = "crash",
        .args_type = "",
        .params = "",
        .help = "crash the emulator instance",
        .mhandler.cmd = android_console_crash,
    },
    {
        .name = "kill",
        .args_type = "",
        .params = "",
        .help = "kill the emulator instance",
        .mhandler.cmd = android_console_kill,
    },
    QUIT_COMMAND,
    {
        .name = "redir",
        .args_type = "item:s?",
        .params = "",
        .help = "manage port redirections",
        .mhandler.cmd = android_console_redir,
        .sub_cmds.static_table = android_redir_cmds,
    },
    {   .name = "power",
        .args_type = "item:s?",
        .params = "",
        .help = "power related commands",
        .mhandler.cmd = android_console_power,
        .sub_cmds.static_table = android_power_cmds,
    },
    {   .name = "event",
        .args_type = "item:s?",
        .params = "",
        .help = "simulate hardware events",
        .mhandler.cmd = android_console_event,
        .sub_cmds.static_table = android_event_cmds,
    },
    {   .name = "avd",
        .args_type = "item:s?",
        .params = "",
        .help = AVD_HELP,
        .mhandler.cmd = android_console_avd,
        .sub_cmds.static_table = android_avd_cmds,
    },
    {   .name = "finger",
        .args_type = "item:s?",
        .params = "",
        .help = "manage emulator fingerprint",
        .mhandler.cmd = android_console_finger,
        .sub_cmds.static_table = android_finger_cmds,
    },
    {   .name = "geo",
        .args_type = "item:s?",
        .params = "",
        .help = "Geo-location commands",
        .mhandler.cmd = android_console_geo,
        .sub_cmds.static_table = android_geo_cmds,
    },
    {   .name = "sms",
        .args_type = "item:s?",
        .params = "",
        .help = "SMS related commands",
        .mhandler.cmd = android_console_sms,
        .sub_cmds.static_table = android_sms_cmds,
    },
    {   .name = "cdma",
        .args_type = "item:s?",
        .params = "",
        .help = "CDMA related commands",
        .mhandler.cmd = android_console_cdma,
        .sub_cmds.static_table = android_cdma_cmds,
    },
        {   .name = "gsm",
        .args_type = "item:s?",
        .params = "",
        .help = "GSM related commands",
        .mhandler.cmd = android_console_gsm,
        .sub_cmds.static_table = android_gsm_cmds,
    },
    {
        .name = "rotate",
        .args_type = "",
        .params = "",
        .help = "rotate the screen by 90 degrees",
        .mhandler.cmd = android_console_rotate_screen,
    },

    { NULL, NULL, },
};

static mon_cmd_t android_preauth_avd_cmds[] = {
    {
        .name = "name",
        .args_type = "",
        .params = "",
        .help = "query virtual device name",
        .mhandler.cmd = android_console_avd_name,
    },
    {
        NULL,
        NULL,
    },
};

/* "preauth" commands are the set of commands that are legal before
* authentication.  "avd name is special cased here because it is needed by
* older versions of Android Studio */
static mon_cmd_t android_preauth_cmds[] = {
    HELP_COMMAND,
    {
        .name = "auth",
        .args_type = "arg:s?",
        .params = "",
        .help = "use 'auth <auth_token>' to get extended functionality",
        .mhandler.cmd = android_console_auth,
    },
    {
        .name = "avd",
        .args_type = "item:s?",
        .params = "",
        .help = AVD_HELP,
        .mhandler.cmd = android_console_avd_preauth,
        .sub_cmds.static_table = android_preauth_avd_cmds,
    },
    QUIT_COMMAND,
    {
        NULL,
        NULL,
    },
};
