view cmu200/dispatch.c @ 40:2fb9768fc1e2

fc-cmu200d: VCXO calibration mode generalized into RF analyzer mode
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 27 May 2017 02:38:28 +0000
parents c873a36a16e6
children 3f4221ef916a
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_rfan_setup();
extern int cmd_signal_gen_off();
extern int cmd_signal_gen_sine();
extern int cmd_signal_gen_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},
	{"rfan-setup", cmd_rfan_setup},
	{"signal-gen-off", cmd_signal_gen_off},
	{"signal-gen-sine", cmd_signal_gen_sine},
	{"signal-gen-setup", cmd_signal_gen_setup},
	{"txpwr-cal-setup", cmd_rfan_setup},
	{"vcxo-cal-setup", cmd_rfan_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);
}