diff options
| author | Keith Packard <keithp@keithp.com> | 2012-11-30 16:03:45 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2012-11-30 16:03:45 -0800 | 
| commit | 7db14905af5cbbfa47d1a2026cce6aea9e5aae7a (patch) | |
| tree | bd23a90444eec2fb71ba6b8200b17fdbdbc2e664 | |
| parent | 0b65402361f36a0c722977bcb63edb26fda0db28 (diff) | |
altos: Add support for 115200 baud serial rates
Necessary for flashing skytraq chips
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | src/cc1111/ao_serial.c | 10 | ||||
| -rw-r--r-- | src/stm/ao_serial_stm.c | 5 | ||||
| -rw-r--r-- | src/test/ao_gps_test.c | 8 | ||||
| -rw-r--r-- | src/test/ao_gps_test_skytraq.c | 10 | 
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" | 
