view cmu200/dispatch.c @ 129:6cccdafcd64d

fc-cmu200d RF analyzer: implement command to set template PCL
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 20 Dec 2021 02:24:55 +0000
parents fbfbd813c9b4
children
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_power_meas();
extern int cmd_rfan_setup();
extern int cmd_rfan_channel();
extern int cmd_rfan_tpcl();
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},
	{"power-meas", cmd_power_meas},
	{"rfan-setup", cmd_rfan_setup},
	{"rfan-channel", cmd_rfan_channel},
	{"rfan-tpcl", cmd_rfan_tpcl},
	{"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},
	{"txpwr-cal-channel", cmd_rfan_channel},
	{"txpwr-cal-pcl", cmd_rfan_tpcl},
	{"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);
}