diff rvinterf/lowlevel/logsent.c @ 0:e7502631a0f9

initial import from freecalypso-sw rev 1033:5ab737ac3ad7
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 11 Jun 2016 00:13:35 +0000
parents
children a1065c17429c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rvinterf/lowlevel/logsent.c	Sat Jun 11 00:13:35 2016 +0000
@@ -0,0 +1,85 @@
+/*
+ * This module implements the logging of sent packets
+ */
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include "../include/pktmux.h"
+#include "../include/limits.h"
+
+static void
+log_sent_ati(pkt, pktlen)
+	u_char *pkt;
+{
+	char buf[MAX_PKT_TO_TARGET*4+10];
+	int i, c;
+	char *dp;
+
+	strcpy(buf, "Sent to ATI: ");
+	dp = buf + 13;
+	for (i = 1; i < pktlen; i++) {
+		c = pkt[i];
+		if (c & 0x80) {
+			*dp++ = 'M';
+			*dp++ = '-';
+			c &= 0x7F;
+		}
+		if (c < 0x20) {
+			*dp++ = '^';
+			*dp++ = c + '@';
+		} else if (c == 0x7F) {
+			*dp++ = '^';
+			*dp++ = '?';
+		} else
+			*dp++ = c;
+	}
+	*dp = '\0';
+	output_line(buf);
+}
+
+static void
+log_sent_gpf(pkt, pktlen)
+	u_char *pkt;
+{
+	char buf[MAX_PKT_TO_TARGET*4+30];
+
+	strcpy(buf, "Sent ");
+	format_g23_packet(pkt, pktlen, buf + 5);
+	output_line(buf);
+}
+
+static void
+log_sent_other(pkt, pktlen)
+	u_char *pkt;
+{
+	char buf[MAX_PKT_TO_TARGET*3+5];
+	int i;
+	char *dp;
+
+	dp = buf;
+	strcpy(dp, "Sent");
+	dp += 4;
+	for (i = 0; i < pktlen; i++) {
+		sprintf(dp, " %02X", pkt[i]);
+		dp += 3;
+	}
+	*dp = '\0';
+	output_line(buf);
+}
+
+log_sent_packet(pkt, pktlen)
+	u_char *pkt;
+{
+	switch (pkt[0]) {
+	case RVT_L23_HEADER:
+		log_sent_gpf(pkt, pktlen);
+		return;
+	case RVT_AT_HEADER:
+		log_sent_ati(pkt, pktlen);
+		return;
+	default:
+		log_sent_other(pkt, pktlen);
+	}
+}