Browse Source

Change API for getch to make it the caller's responsibility to poll for

input, allowing it to do other stuff if it wants to.
master
Gavan Fantom 13 years ago
parent
commit
fa84a1b8bb
  1. 3
      main.c
  2. 15
      uart.c
  3. 4
      uart.h

3
main.c

@ -172,7 +172,8 @@ int main(void) {
while (1) {
char c;
putstr("prompt> ");
c = getch();
while (!getch(&c))
FP0XVAL ^= 0x04000000;
if (c == 0x0a)
continue;
putch(c);

15
uart.c

@ -4,8 +4,6 @@
#define UARTBASE 0xE000C000
#define FP0XVAL (*((volatile unsigned int *) 0x3FFFC014))
#define RBR 0x00
#define THR 0x00
#define DLL 0x00
@ -172,14 +170,11 @@ void puthex(unsigned int n) {
putstr(s+i);
}
char getch(void) {
char c;
while (uart_rxread == uart_rxwrite) {
FP0XVAL ^= 0x04000000;
}
bool getch(char *c) {
if (uart_rxread == uart_rxwrite)
return FALSE;
c = uart_rxbuf[uart_rxread];
*c = uart_rxbuf[uart_rxread];
uart_rxread = (uart_rxread + 1) % UART_RXBUFSIZE;
return c;
return TRUE;
}

4
uart.h

@ -1,11 +1,13 @@
#ifndef __UART_H
#define __UART_H
#include "types.h"
void init_uart(void);
void putch(char c);
void putstr(char *s);
void putint(unsigned int n);
void puthex(unsigned int n);
char getch(void);
bool getch(char *c);
#endif /* __UART_H */

Loading…
Cancel
Save