X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=audiod_command.c;h=6bf5ac8600812ef6642c12ee2f5e0e1273ab3e84;hp=312cfee1027f21f48291d520c7ee746e7671292d;hb=b43af255d4514b68c98b23fb220306cf5ba1df60;hpb=b71d1e5ef301b21c2bb33c1a205c971b0a51b769 diff --git a/audiod_command.c b/audiod_command.c index 312cfee1..6bf5ac86 100644 --- a/audiod_command.c +++ b/audiod_command.c @@ -34,150 +34,7 @@ #include "daemon.h" #include "string.h" #include "fd.h" - -/** defines one command of para_audiod */ -struct audiod_command { - /** the name of the command */ - const char *name; - /** pointer to the function that handles the command */ - int (*handler)(int, int, char**); - /** - * if the command prefers to handle the full line (rather than the usual - * argv[] array), it stores a pointer to the corresponding line handling - * function here. In this case, the above \a handler pointer must be NULL. - */ - int (*line_handler)(int, char*); - /** one-line description of the command */ - const char *description; - /** summary of the command line options */ - const char *synopsis; - /** the long help text */ - const char *help; -}; -static int com_grab(int, char *); -static int com_cycle(int, int, char **); -static int com_help(int, int, char **); -static int com_kill(int, int, char **); -static int com_off(int, int, char **); -static int com_on(int, int, char **); -static int com_sb(int, int, char **); -static int com_stat(int, int, char **); -static int com_tasks(int, int, char **); -static int com_term(int, int, char **); -static struct audiod_command cmds[] = { -{ -.name = "cycle", -.handler = com_cycle, -.description = "switch to next mode", -.synopsis = "cycle", -.help = - -"on -> standby -> off -> on\n" - -}, -{ -.name = "grab", -.line_handler = com_grab, -.description = "grab the audio stream", -.synopsis = "-- grab [grab_options]", -.help = - -"grab ('splice') the audio stream at any position in the filter \n" -"chain and send that data back to the client. Try\n" -"\t para_audioc -- grab -h\n" -"for the list of available options.\n" -}, - -{ -.name = "help", -.handler = com_help, -.description = "display command list or help for given command", -.synopsis = "help [command]", -.help = - -"When I was younger, so much younger than today, I never needed\n" -"anybody's help in any way. But now these days are gone, I'm not so\n" -"self assured. Now I find I've changed my mind and opened up the doors.\n" -"\n" -" -- Beatles: Help\n" - -}, -{ -.name = "kill", -.handler = com_kill, -.description = "kill an active audiod task", -.synopsis = "kill task_id [task_id ...]", -.help = - -"call sched_unregister() and the event_handler of the given task(s)\n" - -}, -{ -.name = "off", -.handler = com_off, -.description = "deactivate para_audiod", -.synopsis = "off", -.help = - -"Close connection to para_server and stop all decoders.\n" - -}, -{ -.name = "on", -.handler = com_on, -.description = "activate para_audiod", -.synopsis = "on", -.help = - -"Establish connection to para_server, retrieve para_server's current\n" -"status. If playing, start corresponding decoder. Otherwise stop\n" -"all decoders.\n" - -}, -{ -.name = "sb", -.handler = com_sb, -.description = "enter standby mode", -.synopsis = "sb", -.help = - -"Stop all decoders but leave connection to para_server open.\n" - -}, -{ -.name = "stat", -.handler = com_stat, -.description = "print status information", -.synopsis = "stat [item1 ...]", -.help = - -"Dump given status items (all if none given) to stdout.\n" - -}, -{ -.name = "tasks", -.handler = com_tasks, -.description = "list current tasks", -.synopsis = "tasks", -.help = - -"print the list of task ids together with the status of each task\n" - -}, -{ -.name = "term", -.handler = com_term, -.description = "terminate audiod", -.synopsis = "term", -.help = - -"Stop all decoders, shut down connection to para_server and exit.\n" - -}, -{ -.name = NULL, -} -}; +#include "audiod_command_list.h" /** iterate over the array of all audiod commands */ #define FOR_EACH_COMMAND(c) for (c = 0; cmds[c].name; c++) @@ -300,7 +157,7 @@ static int dump_commands(int fd) * to each individual command to close the fd if necessary. */ -static int com_help(int fd, int argc, char **argv) +int com_help(int fd, int argc, char **argv) { int i, ret; char *buf; @@ -335,7 +192,7 @@ out: return ret; } -static int com_tasks(int fd, __a_unused int argc, __a_unused char **argv) +int com_tasks(int fd, __a_unused int argc, __a_unused char **argv) { char *tl = get_task_list(); int ret = 1; @@ -347,7 +204,7 @@ static int com_tasks(int fd, __a_unused int argc, __a_unused char **argv) return ret; } -static int com_kill(int fd, int argc, char **argv) +int com_kill(int fd, int argc, char **argv) { int i, ret = 1; if (argc < 2) @@ -362,7 +219,7 @@ static int com_kill(int fd, int argc, char **argv) return ret; } -static int com_stat(int fd, __a_unused int argc, __a_unused char **argv) +int com_stat(int fd, __a_unused int argc, __a_unused char **argv) { int i, ret; char *buf = NULL; @@ -456,7 +313,7 @@ static struct filter_node *find_filter_node(int slot_num, int format, int filter return NULL; } -static int com_grab(int fd, char *cmdline) +int com_grab(int fd, char *cmdline) { struct grab_client *gc; struct filter_node *fn; @@ -493,34 +350,34 @@ err_out: return 1; } -static int __noreturn com_term(int fd, __a_unused int argc, __a_unused char **argv) +int __noreturn com_term(int fd, __a_unused int argc, __a_unused char **argv) { close(fd); clean_exit(EXIT_SUCCESS, "terminating on user request"); } -static int com_on(int fd, __a_unused int argc, __a_unused char **argv) +int com_on(int fd, __a_unused int argc, __a_unused char **argv) { audiod_status = AUDIOD_ON; close(fd); return 1; } -static int com_off(int fd, __a_unused int argc, __a_unused char **argv) +int com_off(int fd, __a_unused int argc, __a_unused char **argv) { audiod_status = AUDIOD_OFF; close(fd); return 1; } -static int com_sb(int fd, __a_unused int argc, __a_unused char **argv) +int com_sb(int fd, __a_unused int argc, __a_unused char **argv) { audiod_status = AUDIOD_STANDBY; close(fd); return 1; } -static int com_cycle(int fd, int argc, char **argv) +int com_cycle(int fd, int argc, char **argv) { switch (audiod_status) { case AUDIOD_ON: