FreeCalypso > hg > freecalypso-sw
view loadtools/labaud.c @ 853:ae254ffeaec3
AT command interface works!
The cause of the breakage was the same Nucleus API issue with NU_Create_Timer()
which we encountered at the very beginning of this project with Riviera timers:
the code in uartfax.c from TCS211 was passing 0 as the initial dummy value for
the timer duration, and our FreeNucleus version doesn't like it. The fix is
the same: pass 1 as the initial dummy value instead.
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Thu, 30 Apr 2015 01:46:26 +0000 |
parents | 604648026e9c |
children |
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); }