a few write optimizations

This commit is contained in:
marschap
2007-01-16 17:50:54 +00:00
parent ab4c51a1d1
commit 5c424f688e
+43 -137
View File
@@ -177,94 +177,58 @@ static int Write_LCD(int fd, char *c, int size)
/* Hardware function */
static void Enable_Backlight(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_LIGHT_ON, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_LIGHT_ON;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
}
/* Hardware function */
static void Disable_Backlight(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_LIGHT_OFF, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_LIGHT_OFF;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
}
/* Hardware function */
static void Enable_Pixel(int fd, int x, int y)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_PUT_PIXEL, 0, 0, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_PUT_PIXEL;
rc = Write_LCD(fd, &c, 1);
cmd[2] = (char) x;
cmd[3] = (char) y;
c = x;
rc = Write_LCD(fd, &c, 1);
c = y;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 5);
}
/* Hardware function */
static void Disable_Pixel(int fd, int x, int y)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_CLEAR_PIXEL, 0, 0, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_CLEAR_PIXEL;
rc = Write_LCD(fd, &c, 1);
cmd[2] = (char) x;
cmd[3] = (char) y;
c = x;
rc = Write_LCD(fd, &c, 1);
c = y;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 5);
}
/* Hardware function */
static void Backlight_Brightness(int fd, int brightness)
{
char c;
int rc;
if (brightness == 1) {
Disable_Backlight(fd);
} else if (brightness == 7) {
Enable_Backlight(fd);
} else {
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_LIGHT_BRIGHTNESS;
rc = Write_LCD(fd, &c, 1);
c = (char) brightness;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
char cmd[] = { LCD_CMD, LCD_LIGHT_BRIGHTNESS, 0, LCD_CMD_END };
cmd[2] = (char) brightness;
Write_LCD(fd, cmd, 4);
}
}
@@ -272,45 +236,27 @@ static void Backlight_Brightness(int fd, int brightness)
/* Hardware function */
static void Enable_Scroll(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_ENABLE_SCROLL, Write_LCD };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_ENABLE_SCROLL;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
}
/* Hardware function */
static void Disable_Scroll(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_DISABLE_SCROLL, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_DISABLE_SCROLL;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
}
/* Hardware function */
static void Clear_Screen(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_CLEAR, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_CLEAR;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
usleep(UPDATE_DELAY);
}
@@ -318,45 +264,27 @@ static void Clear_Screen(int fd)
/* Hardware function */
static void Enable_Wrap(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_ENABLE_WRAP, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_ENABLE_WRAP;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
}
/* Hardware function */
static void Disable_Wrap(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_DISABLE_WRAP, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_DISABLE_WRAP;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
}
/* Hardware function */
static void Disable_Cursor(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_OFF_CURSOR, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_OFF_CURSOR;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 3);
}
@@ -398,59 +326,37 @@ static void Setup_Port(int fd, speed_t speed)
/* Hardware function */
static void Set_9600(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_SET_BAUD, 0x20, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_SET_BAUD;
rc = Write_LCD(fd, &c, 1);
c = 0x20;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 4);
}
/* Hardware function */
static void Set_19200(int fd)
{
char c;
int rc;
char cmd[] = { LCD_CMD, LCD_SET_BAUD, 0x0F, LCD_CMD_END };
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
c = LCD_SET_BAUD;
rc = Write_LCD(fd, &c, 1);
c = 0xf;
rc = Write_LCD(fd, &c, 1);
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
Write_LCD(fd, cmd, 4);
}
/* Hardware function */
static void Set_Insert(int fd, int row, int col)
{
char c;
int rc;
c = LCD_CMD;
rc = Write_LCD(fd, &c, 1);
if (row == 0 && col == 0) {
c = LCD_INIT_INSERT;
rc = Write_LCD(fd, &c, 1);
char cmd[] = { LCD_CMD, LCD_INIT_INSERT, LCD_CMD_END };
Write_LCD(fd, cmd, 3);
}
else {
c = LCD_SET_INSERT;
rc = Write_LCD(fd, &c, 1);
c = col;
rc = Write_LCD(fd, &c, 1);
c = row;
rc = Write_LCD(fd, &c, 1);
char cmd[] = { LCD_CMD, LCD_SET_INSERT, 0, 0, LCD_CMD_END };
cmd[2] = (char) col;
cmd[3] = (char) row;
Write_LCD(fd, cmd, 4);
}
c = LCD_CMD_END;
rc = Write_LCD(fd, &c, 1);
}
@@ -518,7 +424,7 @@ CwLnx_init(Driver *drvthis)
PrivateData *p;
/* Alocate and store private data */
/* Allocate and store private data */
p = (PrivateData *) malloc(sizeof(PrivateData));
if (p == NULL)
return -1;