summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-11-30 16:03:45 -0800
committerKeith Packard <keithp@keithp.com>2012-11-30 16:03:45 -0800
commit7db14905af5cbbfa47d1a2026cce6aea9e5aae7a (patch)
treebd23a90444eec2fb71ba6b8200b17fdbdbc2e664 /src
parent0b65402361f36a0c722977bcb63edb26fda0db28 (diff)
altos: Add support for 115200 baud serial rates
Necessary for flashing skytraq chips Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r--src/cc1111/ao_serial.c10
-rw-r--r--src/stm/ao_serial_stm.c5
-rw-r--r--src/test/ao_gps_test.c8
-rw-r--r--src/test/ao_gps_test_skytraq.c10
4 files changed, 28 insertions, 5 deletions
diff --git a/src/cc1111/ao_serial.c b/src/cc1111/ao_serial.c
index 2a93bf52..8913a9b0 100644
--- a/src/cc1111/ao_serial.c
+++ b/src/cc1111/ao_serial.c
@@ -34,8 +34,14 @@ const __code struct ao_serial_speed ao_serial_speeds[] = {
/* .baud = */ 59,
/* .gcr = */ (11 << UxGCR_BAUD_E_SHIFT) | UxGCR_ORDER_LSB
},
+ /* [AO_SERIAL_SPEED_115200] = */ {
+ /* .baud = */ 59,
+ /* .gcr = */ (12 << UxGCR_BAUD_E_SHIFT) | UxGCR_ORDER_LSB
+ },
};
+#define AO_SERIAL_SPEED_MAX AO_SERIAL_SPEED_115200
+
#if HAS_SERIAL_0
volatile __xdata struct ao_fifo ao_serial0_rx_fifo;
@@ -116,7 +122,7 @@ void
ao_serial0_set_speed(uint8_t speed)
{
ao_serial0_drain();
- if (speed > AO_SERIAL_SPEED_57600)
+ if (speed > AO_SERIAL_SPEED_MAX)
return;
U0UCR |= UxUCR_FLUSH;
U0BAUD = ao_serial_speeds[speed].baud;
@@ -204,7 +210,7 @@ void
ao_serial1_set_speed(uint8_t speed)
{
ao_serial1_drain();
- if (speed > AO_SERIAL_SPEED_57600)
+ if (speed > AO_SERIAL_SPEED_MAX)
return;
U1UCR |= UxUCR_FLUSH;
U1BAUD = ao_serial_speeds[speed].baud;
diff --git a/src/stm/ao_serial_stm.c b/src/stm/ao_serial_stm.c
index 94138edc..ce33f97e 100644
--- a/src/stm/ao_serial_stm.c
+++ b/src/stm/ao_serial_stm.c
@@ -123,12 +123,15 @@ static const struct {
[AO_SERIAL_SPEED_57600] = {
AO_PCLK1 / 57600
},
+ [AO_SERIAL_SPEED_115200] = {
+ AO_PCLK1 / 115200
+ },
};
void
ao_usart_set_speed(struct ao_stm_usart *usart, uint8_t speed)
{
- if (speed > AO_SERIAL_SPEED_57600)
+ if (speed > AO_SERIAL_SPEED_115200)
return;
usart->reg->brr = ao_usart_speeds[speed].brr;
}
diff --git a/src/test/ao_gps_test.c b/src/test/ao_gps_test.c
index d75a12ec..3844a326 100644
--- a/src/test/ao_gps_test.c
+++ b/src/test/ao_gps_test.c
@@ -88,6 +88,7 @@ ao_mutex_put(uint8_t *mutex)
static int
ao_gps_fd;
+#if 0
static void
ao_dbg_char(char c)
{
@@ -103,6 +104,7 @@ ao_dbg_char(char c)
}
write(1, line, strlen(line));
}
+#endif
#define QUEUE_LEN 4096
@@ -391,6 +393,7 @@ ao_serial1_putchar(char c)
#define AO_SERIAL_SPEED_4800 0
#define AO_SERIAL_SPEED_57600 1
+#define AO_SERIAL_SPEED_115200 2
static void
ao_serial1_set_speed(uint8_t speed)
@@ -407,6 +410,9 @@ ao_serial1_set_speed(uint8_t speed)
case AO_SERIAL_SPEED_57600:
cfsetspeed(&termios, B57600);
break;
+ case AO_SERIAL_SPEED_115200:
+ cfsetspeed(&termios, B115200);
+ break;
}
tcsetattr(fd, TCSAFLUSH, &termios);
tcflush(fd, TCIFLUSH);
@@ -420,7 +426,6 @@ ao_serial1_set_speed(uint8_t speed)
void
ao_dump_state(void *wchan)
{
- double lat, lon;
int i;
if (wchan == &ao_gps_data)
ao_gps_print(&ao_gps_data);
@@ -510,4 +515,5 @@ main (int argc, char **argv)
}
ao_gps_setup();
ao_gps();
+ return 0;
}
diff --git a/src/test/ao_gps_test_skytraq.c b/src/test/ao_gps_test_skytraq.c
index 846daa94..81008b39 100644
--- a/src/test/ao_gps_test_skytraq.c
+++ b/src/test/ao_gps_test_skytraq.c
@@ -397,6 +397,7 @@ ao_serial1_putchar(char c)
#define AO_SERIAL_SPEED_4800 0
#define AO_SERIAL_SPEED_9600 1
#define AO_SERIAL_SPEED_57600 2
+#define AO_SERIAL_SPEED_115200 3
static void
ao_serial1_set_speed(uint8_t speed)
@@ -411,11 +412,14 @@ ao_serial1_set_speed(uint8_t speed)
cfsetspeed(&termios, B4800);
break;
case AO_SERIAL_SPEED_9600:
- cfsetspeed(&termios, B38400);
+ cfsetspeed(&termios, B9600);
break;
case AO_SERIAL_SPEED_57600:
cfsetspeed(&termios, B57600);
break;
+ case AO_SERIAL_SPEED_115200:
+ cfsetspeed(&termios, B115200);
+ break;
}
tcsetattr(fd, TCSAFLUSH, &termios);
tcflush(fd, TCIFLUSH);
@@ -423,6 +427,10 @@ ao_serial1_set_speed(uint8_t speed)
#define ao_time() 0
+uint8_t ao_task_minimize_latency;
+
+#define ao_usb_getchar() 0
+
#include "ao_gps_print.c"
#include "ao_gps_skytraq.c"