diff rvinterf/etm/etmbasic.c @ 183:85222710dc92

rvinterf/etm: implemented everything except the packet sending command
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 24 Nov 2013 08:03:27 +0000
parents
children 4714fdfca39c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rvinterf/etm/etmbasic.c	Sun Nov 24 08:03:27 2013 +0000
@@ -0,0 +1,35 @@
+/*
+ * Basic ETM interaction
+ */
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <stdlib.h>
+#include "../limits.h"
+
+extern u_char rvi_msg[];
+extern int rvi_msg_len;
+
+void
+etm_packet_rx()
+{
+	char buf[MAX_PKT_FROM_TARGET*3+80], *dp;
+	int i, c;
+
+	if (rvi_msg_len < 4) {
+		async_msg_output("!!! Short ETM Rx packet !!!");
+		return;
+	}
+	strcpy(buf, "Pkt from ETM:");
+	dp = index(buf, '\0');
+	c = 0;
+	for (i = 2; i < rvi_msg_len; i++) {
+		sprintf(dp, " %02X", rvi_msg[i]);
+		dp += 3;
+		c ^= rvi_msg[i];
+	}
+	sprintf(dp, " chksum %s", c ? "BAD" : "OK");
+	async_msg_output(buf);
+}