diff loadtools/labaud.c @ 52:b015036286f3

fc-loadtool: fast-baud communication with loadagent implemented, works!
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 23 Jun 2013 04:34:22 +0000
parents
children 604648026e9c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/loadtools/labaud.c	Sun Jun 23 04:34:22 2013 +0000
@@ -0,0 +1,47 @@
+/*
+ * This module handles the switching of serial baud rates
+ * in coordination with loadagent.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <termios.h>
+#include <unistd.h>
+#include "baudrate.h"
+
+extern int target_fd;
+extern struct baudrate *current_baud_rate;
+extern struct baudrate *find_baudrate_by_name();
+
+loadagent_switch_baud(newbr)
+	struct baudrate *newbr;
+{
+	char *argv[3];
+	static char U = 'U';
+
+	argv[0] = "baud";
+	argv[1] = newbr->name;
+	argv[2] = 0;
+	tpinterf_make_cmd(argv);
+	if (tpinterf_send_cmd() < 0)
+		return(-1);
+	switch_baud_rate(newbr);
+	usleep(150000);
+	write(target_fd, &U, 1);
+	return tpinterf_pass_output(1);
+}
+
+cmd_baud(argc, argv)
+	char **argv;
+{
+	struct baudrate *br;
+
+	if (argc < 2) {
+		printf("Current baud rate is %s\n", current_baud_rate->name);
+		return(0);
+	}
+	br = find_baudrate_by_name(argv[1]);
+	if (!br)
+		return(-1);	/* error msg already printed */
+	return loadagent_switch_baud(br);
+}