forked from Imagelibrary/rtems
arm/gba/console: Fix warnings and clean up
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user