arm/gba/console: Fix warnings and clean up

This commit is contained in:
Joel Sherrill
2014-10-12 15:22:27 -05:00
parent 5ad38eacae
commit ff8922cfa5
2 changed files with 140 additions and 111 deletions

View File

@@ -3,6 +3,7 @@
* *
* This file contains the GBA conio I/O package. * This file contains the GBA conio I/O package.
*/ */
/* /*
* RTEMS GBA BSP * RTEMS GBA BSP
* *
@@ -118,21 +119,39 @@ void gba_gotoxy(int _x, int _y)
* @param y screen y coordinate * @param y screen y coordinate
* @return None * @return None
*/ */
void gba_putchar(char c, int textattr, int x, int y) static void gba_putchar(char c, int textattr, int x, int y)
{ {
int f = textattr & 0x0F; int f = textattr & 0x0F;
int b = textattr >> 4; int b = textattr >> 4;
uint32_t fmask = f | f<<8 | f<<16 | f<<24; uint32_t fmask = f | f<<8 | f<<16 | f<<24;
uint32_t bmask = b | b<<8 | b<<16 | b<<24; uint32_t bmask = b | b<<8 | b<<16 | b<<24;
uint32_t *dest = (uint32_t *)&bg_bitmap4a[((y<<1) + y) << 1][x<<2]; uint32_t *dest = (uint32_t *)&bg_bitmap4a[((y<<1) + y) << 1][x<<2];
const uint32_t *src = (uint32_t *)&(font3x5[(int)c]); const uint32_t *src = (uint32_t *)&(font3x5[(int)c]);
uint32_t s; uint32_t s;
s = *src++; *dest = (fmask&s) | (bmask&~s); dest += GBA_LCD_WIDTH/sizeof(uint32_t);
s = *src++; *dest = (fmask&s) | (bmask&~s); dest += GBA_LCD_WIDTH/sizeof(uint32_t); s = *src++;
s = *src++; *dest = (fmask&s) | (bmask&~s); dest += GBA_LCD_WIDTH/sizeof(uint32_t); *dest = (fmask&s) | (bmask&~s);
s = *src++; *dest = (fmask&s) | (bmask&~s); dest += GBA_LCD_WIDTH/sizeof(uint32_t); dest += GBA_LCD_WIDTH/sizeof(uint32_t);
s = *src++; *dest = (fmask&s) | (bmask&~s); dest += GBA_LCD_WIDTH/sizeof(uint32_t);
s = *src++; *dest = (fmask&s) | (bmask&~s); dest += GBA_LCD_WIDTH/sizeof(uint32_t); s = *src++;
*dest = (fmask&s) | (bmask&~s);
dest += GBA_LCD_WIDTH/sizeof(uint32_t);
s = *src++;
*dest = (fmask&s) | (bmask&~s);
dest += GBA_LCD_WIDTH/sizeof(uint32_t);
s = *src++;
*dest = (fmask&s) | (bmask&~s);
dest += GBA_LCD_WIDTH/sizeof(uint32_t);
s = *src++;
*dest = (fmask&s) | (bmask&~s);
dest += GBA_LCD_WIDTH/sizeof(uint32_t);
s = *src++;
*dest = (fmask&s) | (bmask&~s);
dest += GBA_LCD_WIDTH/sizeof(uint32_t);
} }
@@ -144,7 +163,7 @@ void gba_putchar(char c, int textattr, int x, int y)
*/ */
void gba_textattr(int _attr) void gba_textattr(int _attr)
{ {
_textattr = _attr; _textattr = _attr;
} }
/** /**
@@ -152,11 +171,11 @@ void gba_textattr(int _attr)
* *
* @param _color backround color * @param _color backround color
* @return None * @return None
*
*/ */
void gba_textbackground(int _color) void gba_textbackground(int _color)
{ {
_textattr = (_textattr & 0x0F) | (_color << 4); _textattr = (_textattr & 0x0F) | (_color << 4);
} }
/** /**
@@ -167,25 +186,25 @@ void gba_textbackground(int _color)
*/ */
void gba_textcolor(int _color) void gba_textcolor(int _color)
{ {
_textattr = (_textattr & 0xF0) | (_color); _textattr = (_textattr & 0xF0) | (_color);
} }
/** /**
* @brief gba_clearline function clear line nro y * @brief gba_clearline function clear line number y
* *
* Line is filled with spaces * Line is filled with spaces
* *
* @param y line number * @param y line number
* @return None * @return None
*/ */
void gba_clearline(int y) static void gba_clearline(int y)
{ {
int x; int x;
for (x=0 ; x<=W ; x++) { for (x=0 ; x<=W ; x++) {
gba_putchar(0, _textattr, x, y); gba_putchar(0, _textattr, x, y);
} }
} }
/** /**
@@ -194,7 +213,7 @@ void gba_clearline(int y)
* @param None * @param None
* @return None * @return None
*/ */
void gba_nextline(void) static void gba_nextline(void)
{ {
_wherex = 0; _wherex = 0;
if (++_wherey >= H) { if (++_wherey >= H) {
@@ -226,7 +245,7 @@ void gba_clrscr(void)
* @param _c character code * @param _c character code
* @return None * @return None
*/ */
void gba_put(char _c) static void gba_put(char _c)
{ {
/* We have save some memory with reduced fonts */ /* We have save some memory with reduced fonts */
_c = _c & 0x7F; /* no extened chars */ _c = _c & 0x7F; /* no extened chars */
@@ -334,13 +353,12 @@ void gba_initconio(void)
*/ */
void gba_textmode(int _mode) void gba_textmode(int _mode)
{ {
switch (_mode) { switch (_mode) {
case CO60: case CO60: {
{ gba_initconio();
gba_initconio(); break;
break;
}
} }
}
} }
@@ -350,17 +368,19 @@ void gba_textmode(int _mode)
* @param count loop counter * @param count loop counter
* @return None * @return None
*/ */
void delay_loop(unsigned int count) static void delay_loop(unsigned int count)
{ {
int i; int i;
for (i = 0; i<count; i++) i = i;
for (i = 0; i<count; i++) i = i;
} }
static unsigned char inputch = ASCII_CR; /**< input character value */ static unsigned char inputch = ASCII_CR; /**< input character value */
/** /**
* @brief gba_getch function read char from game pad keys * @brief gba_getch function read char from game pad keys
* *
* Character input is done with GBA buttons, up-down-left-right/A/B/R/L/Select/Start * Character input is done with GBA buttons,
* up-down-left-right/A/B/R/L/Select/Start
* - Select-key accept selected character * - Select-key accept selected character
* - Start-key read CR (Enter) * - Start-key read CR (Enter)
* - A-key select 'A' character * - A-key select 'A' character
@@ -380,47 +400,47 @@ int gba_getch(void)
int keyx, key = 0; int keyx, key = 0;
while(1) { while(1) {
key = GBA_KEY(); key = GBA_KEY();
while ( (keyx=GBA_KEY())==key ); while ( (keyx=GBA_KEY())==key );
switch (key) switch (key) {
{ case GBA_KEY_SELECT:
case GBA_KEY_SELECT: gba_put(inputch);
gba_put(inputch); return inputch;
return inputch; break;
break; case GBA_KEY_START:
case GBA_KEY_START: gba_put(' ');
gba_put(' '); inputch = ASCII_CR;
inputch = ASCII_CR; return inputch;
return inputch; break;
break; case GBA_KEY_A:
case GBA_KEY_A: inputch = 'A';
inputch = 'A'; break;
break; case GBA_KEY_B:
case GBA_KEY_B: inputch = 'Z';
inputch = 'Z'; break;
break; case GBA_KEY_UP:
case GBA_KEY_UP: if ((inputch-1) >= 0x20) inputch--;
if ((inputch-1) >= 0x20) inputch--; break;
break; case GBA_KEY_DOWN:
case GBA_KEY_DOWN: if ((inputch+1) <= 0x7E) inputch++;
if ((inputch+1) <= 0x7E) inputch++; break;
break; case GBA_KEY_LEFT:
case GBA_KEY_LEFT: if ((inputch - 0x20) >= 0x20) inputch -= 0x20;
if ((inputch - 0x20) >= 0x20) inputch -= 0x20; break;
break; case GBA_KEY_RIGHT:
case GBA_KEY_RIGHT: if ((inputch + 0x20) <= 0x7E) inputch += 0x20;
if ((inputch + 0x20) <= 0x7E) inputch += 0x20; break;
break; case GBA_KEY_R:
case GBA_KEY_R: inputch = '1';
inputch = '1'; break;
break; case GBA_KEY_L:
case GBA_KEY_L: inputch = '9';
inputch = '9'; break;
break; default:
default: break;
break; }
}
gba_put(inputch); gba_put(inputch);
delay_loop(1000); delay_loop(1000);
} }
} }

View File

@@ -3,6 +3,7 @@
* *
* This file contains the GBA console I/O package. * This file contains the GBA console I/O package.
*/ */
/* /*
* RTEMS GBA BSP * RTEMS GBA BSP
* *
@@ -34,7 +35,7 @@
*/ */
static int gba_pollRead(int minor) static int gba_pollRead(int minor)
{ {
return(gba_getch()); return (gba_getch());
} }
/** /**
@@ -52,7 +53,7 @@ static ssize_t gba_write(int minor, const char *buf, size_t len)
int i; int i;
for (i=0;i<len;i++) { for (i=0;i<len;i++) {
gba_putch((unsigned short)buf[i]); gba_putch((unsigned short)buf[i]);
} }
return len; return len;
} }
@@ -85,9 +86,11 @@ BSP_polling_getchar_function_type BSP_poll_char = gba_getch;
* @return status code * @return status code
*/ */
rtems_device_driver rtems_device_driver
console_initialize(rtems_device_major_number major, console_initialize(
rtems_device_minor_number minor, rtems_device_major_number major,
void *arg) rtems_device_minor_number minor,
void *arg
)
{ {
rtems_status_code status; rtems_status_code status;
@@ -95,13 +98,13 @@ console_initialize(rtems_device_major_number major,
rtems_termios_initialize (); rtems_termios_initialize ();
/* Do device-specific initialization */ /* Do device-specific initialization */
/* Allready done in bspstart.c -> gba_textmode(CO60); */ /* Already done in bspstart.c -> gba_textmode(CO60); */
/* Register the device */ /* Register the device */
status = rtems_io_register_name ("/dev/console", major, 0); status = rtems_io_register_name ("/dev/console", major, 0);
if (status != RTEMS_SUCCESSFUL) { if (status != RTEMS_SUCCESSFUL) {
printk("Error registering console device!\n"); printk("Error registering console device!\n");
rtems_fatal_error_occurred (status); rtems_fatal_error_occurred (status);
} }
printk("Initialized GBA console\n\n"); printk("Initialized GBA console\n\n");
@@ -119,7 +122,7 @@ console_initialize(rtems_device_major_number major,
*/ */
static int console_first_open(int major, int minor, void *arg) static int console_first_open(int major, int minor, void *arg)
{ {
return 0; return 0;
} }
/** /**
@@ -132,10 +135,9 @@ static int console_first_open(int major, int minor, void *arg)
*/ */
static int console_last_close(int major, int minor, void *arg) static int console_last_close(int major, int minor, void *arg)
{ {
return 0; return 0;
} }
/** /**
* @brief Console device driver OPEN entry point * @brief Console device driver OPEN entry point
* *
@@ -145,9 +147,11 @@ static int console_last_close(int major, int minor, void *arg)
* @return status code * @return status code
*/ */
rtems_device_driver rtems_device_driver
console_open(rtems_device_major_number major, console_open(
rtems_device_minor_number minor, rtems_device_major_number major,
void *arg) rtems_device_minor_number minor,
void *arg
)
{ {
rtems_status_code status; rtems_status_code status;
static rtems_termios_callbacks cb = static rtems_termios_callbacks cb =
@@ -165,8 +169,8 @@ console_open(rtems_device_major_number major,
status = rtems_termios_open (major, minor, arg, &cb); status = rtems_termios_open (major, minor, arg, &cb);
if (status != RTEMS_SUCCESSFUL) { if (status != RTEMS_SUCCESSFUL) {
printk("Error openning console device\n"); printk("Error openning console device\n");
return status; return status;
} }
return RTEMS_SUCCESSFUL; return RTEMS_SUCCESSFUL;
@@ -181,9 +185,11 @@ console_open(rtems_device_major_number major,
* @return status code * @return status code
*/ */
rtems_device_driver rtems_device_driver
console_close(rtems_device_major_number major, console_close(
rtems_device_minor_number minor, rtems_device_major_number major,
void *arg) rtems_device_minor_number minor,
void *arg
)
{ {
rtems_device_driver res = RTEMS_SUCCESSFUL; rtems_device_driver res = RTEMS_SUCCESSFUL;
@@ -203,13 +209,13 @@ console_close(rtems_device_major_number major,
* @return status code * @return status code
*/ */
rtems_device_driver rtems_device_driver
console_read(rtems_device_major_number major, console_read(
rtems_device_minor_number minor, rtems_device_major_number major,
void *arg) rtems_device_minor_number minor,
void *arg
)
{ {
return rtems_termios_read (arg);
return rtems_termios_read (arg);
} }
/** /**
@@ -223,11 +229,13 @@ console_read(rtems_device_major_number major,
* @return status code * @return status code
*/ */
rtems_device_driver rtems_device_driver
console_write(rtems_device_major_number major, console_write(
rtems_device_minor_number minor, rtems_device_major_number major,
void *arg) rtems_device_minor_number minor,
void *arg
)
{ {
return rtems_termios_write (arg); return rtems_termios_write (arg);
} }
/** /**
@@ -239,10 +247,11 @@ console_write(rtems_device_major_number major,
* @return status code * @return status code
*/ */
rtems_device_driver rtems_device_driver
console_control(rtems_device_major_number major, console_control(
rtems_device_minor_number minor, rtems_device_major_number major,
void *arg rtems_device_minor_number minor,
void *arg
) )
{ {
return rtems_termios_ioctl (arg); return rtems_termios_ioctl (arg);
} }