diff rvinterf/tmsh/l1resp.c @ 132:5380872923a6

fc-tmsh: beginning of l1tm response handling
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 19 Feb 2017 20:53:41 +0000
parents
children 4aa1c18c7a2f
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rvinterf/tmsh/l1resp.c	Sun Feb 19 20:53:41 2017 +0000
@@ -0,0 +1,82 @@
+/*
+ * Handling of TM3 responses from L1TM
+ */
+
+#include <sys/types.h>
+#include <stdio.h>
+
+extern u_char rvi_msg[];
+extern int rvi_msg_len;
+
+void
+l1tm_response_nodata(op)
+	char *op;
+{
+	char buf[80];
+
+	if (rvi_msg_len > 5) {
+		sprintf(buf, "%s response wrong length", op);
+		print_etm_pkt_raw(buf);
+		return;
+	}
+	if (rvi_msg[3])
+		sprintf(buf, "%s error %u (0x%x)", op, rvi_msg[3], rvi_msg[3]);
+	else
+		sprintf(buf, "%s OK", op);
+	async_msg_output(buf);
+}
+
+void
+l1tm_response_index(op)
+	char *op;
+{
+	char buf[80];
+
+	if (rvi_msg[3]) {
+		if (rvi_msg_len == 5) {
+			sprintf(buf, "%s error %u (0x%02X)", op,
+				rvi_msg[3], rvi_msg[3]);
+			async_msg_output(buf);
+		} else {
+			sprintf(buf, "%s long error response", op);
+			print_etm_pkt_raw(buf);
+		}
+		return;
+	}
+	if (rvi_msg_len != 6) {
+		sprintf(buf, "%s response wrong length", op);
+		print_etm_pkt_raw(buf);
+		return;
+	}
+	sprintf(buf, "%s index %u (0x%02X) OK", op, rvi_msg[4], rvi_msg[4]);
+	async_msg_output(buf);
+}
+
+void
+l1tm_response_index_val(op)
+	char *op;
+{
+	char buf[80];
+	unsigned val;
+
+	if (rvi_msg[3]) {
+		if (rvi_msg_len == 5) {
+			sprintf(buf, "%s error %u (0x%02X)", op,
+				rvi_msg[3], rvi_msg[3]);
+			async_msg_output(buf);
+		} else {
+			sprintf(buf, "%s long error response", op);
+			print_etm_pkt_raw(buf);
+		}
+		return;
+	}
+	if (rvi_msg_len != 8) {
+		sprintf(buf, "%s response wrong length", op);
+		print_etm_pkt_raw(buf);
+		return;
+	}
+	val = rvi_msg[5] | (rvi_msg[6] << 8);
+	sprintf(buf, "%s index %u (0x%02X): %u (0x%04X)", op,
+		rvi_msg[4], rvi_msg[4], val, val);
+	async_msg_output(buf);
+}