view loadtools/labaud.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 8c011177adb9
line wrap: on
line source

/*
 * 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';

	printf("Switching loadagent communication to %s baud\n", newbr->name);
	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);
}