view rvinterf/etmsync/rfcap.c @ 177:2133c475f5bd

fc-e1gen: MAX_FIELDS needed to be bumped for the optional bit0 field
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 25 Mar 2017 20:44:02 +0000
parents e7502631a0f9
children
line wrap: on
line source

/*
 * Setting of /gsm/com/rfcap
 */

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include "exitcodes.h"

static struct band_table {
	char	*keyword;
	u_char	bytes[4];
} band_table[] = {
	{"dual-eu",	{0x00, 0x0B, 0x41, 0x00}},
	{"dual-us",	{0x00, 0x14, 0x00, 0x14}},
	{"tri900",	{0x00, 0x0F, 0x41, 0x10}},
	{"tri850",	{0x00, 0x16, 0x01, 0x14}},
	{"quad",	{0x00, 0x1F, 0x41, 0x14}},
	{0,		{0x00, 0x00, 0x00, 0x00}}
};

static u_char rfcap_tail[12] = {0x00, 0x00, 0x00, 0x00,
				0x50, 0x00, 0x00, 0xA5,
				0x05, 0x00, 0xC0, 0x00};

set_rfcap(band_config_kw)
	char *band_config_kw;
{
	static char filename[] = "/gsm/com/rfcap";
	u_char bytes[16];
	struct band_table *tp;

	for (tp = band_table; tp->keyword; tp++)
		if (!strcmp(tp->keyword, band_config_kw))
			break;
	if (!tp->keyword) {
		printf("error: band configuration \"%s\" not known\n",
			band_config_kw);
		return(ERROR_USAGE);
	}
	bcopy(tp->bytes, bytes, 4);
	bcopy(rfcap_tail, bytes + 4, 12);

	printf("Writing \"%02X %02X %02X %02X %02X %02X %02X %02X  %02X %02X %02X %02X %02X %02X %02X %02X\" into %s\n",
		bytes[0], bytes[1], bytes[2], bytes[3], bytes[4], bytes[5],
		bytes[6], bytes[7], bytes[8], bytes[9], bytes[10], bytes[11],
		bytes[12], bytes[13], bytes[14], bytes[15], filename);
	return do_short_fwrite(filename, bytes, 16);
}