diff rvinterf/etmsync/rfcap.c @ 913:091ebd46a9cc

user-friendly set-rfcap implemented in fc-fsio
author Space Falcon <falcon@ivan.Harhan.ORG>
date Tue, 08 Sep 2015 08:55:21 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rvinterf/etmsync/rfcap.c	Tue Sep 08 08:55:21 2015 +0000
@@ -0,0 +1,51 @@
+/*
+ * 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);
+}