#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <curses.h>
#include <ncinput.h>
#include "mfjterm.h"
#include "misc.h"
void set_bps(void)
{
static int speeds[] = {
B50,50, B75,75, B110,110, B134,134, B150,150, B200,200,
B300,300, B600,600, B1200,1200, B1800,1800, B2400,2400,
B4800,4800, B9600,9600, B19200,19200, B38400,38400
};
char bps_s[11], tmp[80];
int bbps = 0, i, valid_bps;
for (i = 0; i != 30; i+=2) {
if (bps == speeds[i]) {
bbps = speeds[i+1];
break;
}
}
attrset(A_REVERSE);
valid_bps = 0;
do {
move(19, 1);
sprintf(bps_s, "%d", bbps);
addstr("Enter new baudrate: ");
edgets(stdscr, bps_s, 10, FALSE);
move(19, 0);
addstr(" ");
if (! strlen(bps_s))
goto bps_abort;
bbps = atoi(bps_s);
for (i = 0; i != 30; i+=2) {
if (bbps == speeds[i + 1]) {
bps = speeds[i];
break;
}
}
if (i == 30) {
curs_set(0);
move(19, 1);
sprintf(tmp, "\"%d\" is not a valid baudrate", bbps);
addstr(tmp);
refresh();
sleep(1);
move(19, 1);
addstr(" ");
refresh();
curs_set(1);
} else
valid_bps++;
} while (! valid_bps);
tcgetattr(tnc, &tnc_settings);
cfsetispeed(&tnc_settings, bps);
cfsetospeed(&tnc_settings, bps);
tcsetattr(tnc, TCSAFLUSH, &tnc_settings);
bps_abort:
move(tnc_y, tnc_x);
refresh();
}