prepare PrivateData conversion
This commit is contained in:
+41
-42
@@ -54,8 +54,8 @@
|
|||||||
#include "report.h"
|
#include "report.h"
|
||||||
|
|
||||||
|
|
||||||
static unsigned int sed1520_lptport = LPTPORT;
|
static unsigned int port = LPTPORT;
|
||||||
static char *framebuf = NULL;
|
static unsigned char *framebuf = NULL;
|
||||||
static int width = LCD_DEFAULT_WIDTH;
|
static int width = LCD_DEFAULT_WIDTH;
|
||||||
static int height = LCD_DEFAULT_HEIGHT;
|
static int height = LCD_DEFAULT_HEIGHT;
|
||||||
static int cellwidth = LCD_DEFAULT_CELLWIDTH;
|
static int cellwidth = LCD_DEFAULT_CELLWIDTH;
|
||||||
@@ -72,13 +72,13 @@ MODULE_EXPORT char *symbol_prefix = "sed1520_";
|
|||||||
// writes command value to one or both sed1520 selected by chip
|
// writes command value to one or both sed1520 selected by chip
|
||||||
//
|
//
|
||||||
void
|
void
|
||||||
writecommand (int value, int chip)
|
writecommand (unsigned int port, int value, int chip)
|
||||||
{
|
{
|
||||||
port_out(sed1520_lptport,value);
|
port_out(port, value);
|
||||||
port_out(sed1520_lptport + 2,WR + CS1 - (chip & CS1) + (chip & CS2));
|
port_out(port + 2, WR + CS1 - (chip & CS1) + (chip & CS2));
|
||||||
port_out(sed1520_lptport + 2,CS1 - (chip & CS1) + (chip & CS2));
|
port_out(port + 2, CS1 - (chip & CS1) + (chip & CS2));
|
||||||
uPause(IODELAY);
|
uPause(IODELAY);
|
||||||
port_out(sed1520_lptport + 2,WR + CS1 - (chip & CS1) + (chip & CS2));
|
port_out(port + 2, WR + CS1 - (chip & CS1) + (chip & CS2));
|
||||||
uPause(IODELAY);
|
uPause(IODELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,13 +86,13 @@ writecommand (int value, int chip)
|
|||||||
// writes data value to one or both sed 1520 selected by chip
|
// writes data value to one or both sed 1520 selected by chip
|
||||||
//
|
//
|
||||||
void
|
void
|
||||||
writedata (int value, int chip)
|
writedata (unsigned int port, int value, int chip)
|
||||||
{
|
{
|
||||||
port_out(sed1520_lptport,value);
|
port_out(port, value);
|
||||||
port_out(sed1520_lptport + 2,A0 + WR + CS1 - (chip & CS1) + (chip & CS2));
|
port_out(port + 2, A0 + WR + CS1 - (chip & CS1) + (chip & CS2));
|
||||||
port_out(sed1520_lptport + 2,A0 + CS1 - (chip & CS1) + (chip & CS2));
|
port_out(port + 2, A0 + CS1 - (chip & CS1) + (chip & CS2));
|
||||||
uPause(IODELAY);
|
uPause(IODELAY);
|
||||||
port_out(sed1520_lptport + 2,A0 + WR + CS1 - (chip & CS1) + (chip & CS2));
|
port_out(port + 2, A0 + WR + CS1 - (chip & CS1) + (chip & CS2));
|
||||||
uPause(IODELAY);
|
uPause(IODELAY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,18 +100,18 @@ writedata (int value, int chip)
|
|||||||
// selects a page (=row) on both sed1520s
|
// selects a page (=row) on both sed1520s
|
||||||
//
|
//
|
||||||
void
|
void
|
||||||
selectpage (int page)
|
selectpage (unsigned int port, int page)
|
||||||
{
|
{
|
||||||
writecommand(0xB8 + (page & 3), CS1 + CS2);
|
writecommand(port, 0xB8 + (page & 0x03), CS1 + CS2);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
// selects a column on the sed1520s specified by chip
|
// selects a column on the sed1520s specified by chip
|
||||||
//
|
//
|
||||||
void
|
void
|
||||||
selectcolumn (int column, int chip)
|
selectcolumn (unsigned int port, int column, int chip)
|
||||||
{
|
{
|
||||||
writecommand((column & 0x7F), chip);
|
writecommand(port, (column & 0x7F), chip);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
@@ -121,7 +121,7 @@ selectcolumn (int column, int chip)
|
|||||||
// in columns, so we need a little conversion.
|
// in columns, so we need a little conversion.
|
||||||
//
|
//
|
||||||
void
|
void
|
||||||
drawchar2fb (int x, int y, unsigned char z)
|
drawchar2fb (unsigned char *framebuf, int x, int y, unsigned char z)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ sed1520_init (Driver *drvthis)
|
|||||||
/* Read config file */
|
/* Read config file */
|
||||||
|
|
||||||
/* What port to use */
|
/* What port to use */
|
||||||
sed1520_lptport = drvthis->config_get_int(drvthis->name, "Port", 0, LPTPORT);
|
port = drvthis->config_get_int(drvthis->name, "Port", 0, LPTPORT);
|
||||||
|
|
||||||
/* End of config file parsing */
|
/* End of config file parsing */
|
||||||
|
|
||||||
@@ -160,7 +160,7 @@ sed1520_init (Driver *drvthis)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Allocate our framebuffer
|
// Allocate our framebuffer
|
||||||
framebuf = malloc(122 * 4);
|
framebuf = (unsigned char *) calloc(122 * 4, sizeof(unsigned char));
|
||||||
if (framebuf == NULL) {
|
if (framebuf == NULL) {
|
||||||
report(RPT_ERR, "%s: unable to allocate framebuffer", drvthis->name);
|
report(RPT_ERR, "%s: unable to allocate framebuffer", drvthis->name);
|
||||||
// sed1520_close ();
|
// sed1520_close ();
|
||||||
@@ -168,20 +168,20 @@ sed1520_init (Driver *drvthis)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// clear screen
|
// clear screen
|
||||||
memset (framebuf, 0, 122 * 4);
|
memset (framebuf, '\0', 122 * 4);
|
||||||
|
|
||||||
// Initialize the Port and the sed1520s
|
// Initialize the Port and the sed1520s
|
||||||
if ((port_access(sed1520_lptport)) || (port_access(sed1520_lptport+2))) {
|
if (port_access(port) || port_access(port+2)) {
|
||||||
report(RPT_ERR, "%s: unable to access port 0x%03X", drvthis->name, sed1520_lptport);
|
report(RPT_ERR, "%s: unable to access port 0x%03X", drvthis->name, port);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
port_out(sed1520_lptport,0);
|
port_out(port,0);
|
||||||
port_out(sed1520_lptport +2,WR + CS2);
|
port_out(port +2, WR + CS2);
|
||||||
writecommand(0xE2, CS1 + CS2);
|
writecommand(port, 0xE2, CS1 + CS2);
|
||||||
writecommand(0xAF, CS1 + CS2);
|
writecommand(port, 0xAF, CS1 + CS2);
|
||||||
writecommand(0xC0, CS1 + CS2);
|
writecommand(port, 0xC0, CS1 + CS2);
|
||||||
selectpage(3);
|
selectpage(port, 3);
|
||||||
|
|
||||||
cellwidth = 6;
|
cellwidth = 6;
|
||||||
cellheight = 8;
|
cellheight = 8;
|
||||||
@@ -208,7 +208,7 @@ sed1520_close (Driver *drvthis)
|
|||||||
MODULE_EXPORT int
|
MODULE_EXPORT int
|
||||||
sed1520_width (Driver *drvthis)
|
sed1520_width (Driver *drvthis)
|
||||||
{
|
{
|
||||||
return width;
|
return width;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
@@ -217,7 +217,7 @@ sed1520_width (Driver *drvthis)
|
|||||||
MODULE_EXPORT int
|
MODULE_EXPORT int
|
||||||
sed1520_height (Driver *drvthis)
|
sed1520_height (Driver *drvthis)
|
||||||
{
|
{
|
||||||
return height;
|
return height;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
@@ -226,7 +226,7 @@ sed1520_height (Driver *drvthis)
|
|||||||
MODULE_EXPORT int
|
MODULE_EXPORT int
|
||||||
sed1520_cellwidth (Driver *drvthis)
|
sed1520_cellwidth (Driver *drvthis)
|
||||||
{
|
{
|
||||||
return cellwidth;
|
return cellwidth;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
@@ -235,7 +235,7 @@ sed1520_cellwidth (Driver *drvthis)
|
|||||||
MODULE_EXPORT int
|
MODULE_EXPORT int
|
||||||
sed1520_cellheight (Driver *drvthis)
|
sed1520_cellheight (Driver *drvthis)
|
||||||
{
|
{
|
||||||
return cellheight;
|
return cellheight;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
@@ -257,15 +257,15 @@ sed1520_flush (Driver *drvthis)
|
|||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
selectpage(i);
|
selectpage(port, i);
|
||||||
|
|
||||||
selectcolumn(0, CS2) ;
|
selectcolumn(port, 0, CS2) ;
|
||||||
for (j = 0; j < 61; j++)
|
for (j = 0; j < 61; j++)
|
||||||
writedata(framebuf[j + (i * 122)], CS2);
|
writedata(port, framebuf[j + (i * 122)], CS2);
|
||||||
|
|
||||||
selectcolumn(0, CS1) ;
|
selectcolumn(port, 0, CS1) ;
|
||||||
for (j = 61; j < 122; j++)
|
for (j = 61; j < 122; j++)
|
||||||
writedata(framebuf[j + (i * 122)], CS1);
|
writedata(port, framebuf[j + (i * 122)], CS1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,12 +278,11 @@ sed1520_string (Driver *drvthis, int x, int y, char string[])
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
x--; // Convert 1-based coords to 0-based...
|
x--; // Convert 1-based coords to 0-based
|
||||||
y--;
|
y--;
|
||||||
|
|
||||||
for (i = 0; string[i] != '\0'; i++) {
|
for (i = 0; string[i] != '\0'; i++)
|
||||||
drawchar2fb(x + i, y, string[i]);
|
drawchar2fb(framebuf, x + i, y, string[i]);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
@@ -295,7 +294,7 @@ sed1520_chr (Driver *drvthis, int x, int y, char c)
|
|||||||
{
|
{
|
||||||
y--;
|
y--;
|
||||||
x--;
|
x--;
|
||||||
drawchar2fb(x, y, c);
|
drawchar2fb(framebuf, x, y, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
Reference in New Issue
Block a user