view cmu200/dispatch.c @ 22:e8bcead3aa9b

autocal: started linking fc-rfcal-vcxo
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 22 May 2017 21:01:29 +0000
parents c873a36a16e6
children 2fb9768fc1e2
line wrap: on
line source

/*
 * This module contains the code that dispatches client commands.
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>

extern char *client_cmd_fields[];
extern int client_cmd_nfields;

extern int cmd_freq_meas();
extern int cmd_signal_gen_off();
extern int cmd_signal_gen_sine();
extern int cmd_signal_gen_setup();
extern int cmd_vcxo_cal_setup();

cmd_ping()
{
	send_socket_response("+Pong\n");
	return(0);
}

static struct cmdtab {
	char	*cmd_kw;
	int	(*handler)();
} cmdtab[] = {
	{"freq-meas", cmd_freq_meas},
	{"ping", cmd_ping},
	{"signal-gen-off", cmd_signal_gen_off},
	{"signal-gen-sine", cmd_signal_gen_sine},
	{"signal-gen-setup", cmd_signal_gen_setup},
	{"vcxo-cal-setup", cmd_vcxo_cal_setup},
	{0, 0}
};

dispatch_client_command()
{
	struct cmdtab *tp;

	for (tp = cmdtab; tp->cmd_kw; tp++)
		if (!strcmp(client_cmd_fields[0], tp->cmd_kw))
			break;
	if (tp->handler)
		return tp->handler();
	send_socket_response("-Unknown or unimplemented command\n");
	return(0);
}