support for contrast & brightness: now get_*() only, but prepare for set_*()

This commit is contained in:
marschap
2007-10-21 19:39:24 +00:00
parent 75dbe30705
commit fe5f26e91d
3 changed files with 321 additions and 139 deletions
+63 -41
View File
@@ -47,6 +47,11 @@
#define IF_TYPE_USB 3
#define IF_TYPE_I2C 4
// symbolic default values
#define DEFAULT_CONTRAST 800
#define DEFAULT_BRIGHTNESS 800
#define DEFAULT_OFFBRIGHTNESS 300
// Maximum sizes of the keypad
// DO NOT CHANGE THESE 2 VALUES, unless you change the functions too
@@ -56,6 +61,7 @@
/* Constants for userdefchar_mode */
#define NUM_CCs 8 /* number of custom characters */
typedef enum {
standard, /* only char 0 is used for heartbeat */
vbar, /* vertical bars */
@@ -64,11 +70,13 @@ typedef enum {
bigchar /* big characters */
} CGmode;
typedef struct cgram_cache {
unsigned char cache[LCD_DEFAULT_CELLHEIGHT];
int clean;
} CGram;
typedef struct ConnectionMapping {
char *name;
int connectiontype;
@@ -76,8 +84,8 @@ typedef struct ConnectionMapping {
int (*init_fn)(Driver *drvthis);
} ConnectionMapping;
typedef struct driver_private_data {
typedef struct driver_private_data {
unsigned int port;
/* for serial connection type */
@@ -151,8 +159,13 @@ typedef struct driver_private_data {
int keepalivedisplay; // When >0 refresh upper left char every <keepalivedisplay> seconds to keep display alive
int output_state; // what was most recently output to the output port
int contrast; // Contrast setting (range 0 - 1000)
int brightness; // Brightness when backlight is "on" (range 0 - 1000)
int offbrightness; // Brightness when backlight is "off" (range 0 - 1000)
} PrivateData;
// Structures holding pointers to HD44780 specific functions
typedef struct hwDependentFns {
// microsec pauses
@@ -168,6 +181,15 @@ typedef struct hwDependentFns {
// state - to be or not to be on
void (*backlight)(PrivateData *p, unsigned char state);
// Set the contrast
// value - new value to be set
void (*set_contrast)(PrivateData *p, unsigned char value);
// Switch the backlight on or off
// state - backlight state to set the new value for
// value - new value to be set
void (*set_brightness)(PrivateData *p, int backlight, unsigned char value);
// Read the keypad
// Ydata - the up to 11 bits that should be put on the Y side of the matrix
// return - the up to 5 bits that are read out on the X side of the matrix
@@ -193,57 +215,57 @@ void common_init(PrivateData *p, unsigned char if_bit);
// commands for senddata
#define RS_DATA 0x00
#define RS_INSTR 0x01
#define RS_DATA 0x00
#define RS_INSTR 0x01
#define CLEAR 0x01
#define CLEAR 0x01
#define HOMECURSOR 0x02
#define HOMECURSOR 0x02
#define ENTRYMODE 0x04
#define E_MOVERIGHT 0x02
#define E_MOVELEFT 0x00
#define EDGESCROLL 0x01
#define NOSCROLL 0x00
#define ENTRYMODE 0x04
#define E_MOVERIGHT 0x02
#define E_MOVELEFT 0x00
#define EDGESCROLL 0x01
#define NOSCROLL 0x00
#define ONOFFCTRL 0x08 /* Only reachable with EXTREG clear */
#define DISPON 0x04
#define DISPOFF 0x00
#define CURSORON 0x02
#define CURSOROFF 0x00
#define CURSORBLINK 0x01
#define CURSORNOBLINK 0x00
#define ONOFFCTRL 0x08 /* Only reachable with EXTREG clear */
#define DISPON 0x04
#define DISPOFF 0x00
#define CURSORON 0x02
#define CURSOROFF 0x00
#define CURSORBLINK 0x01
#define CURSORNOBLINK 0x00
#define EXTMODESET 0x08 /* Only reachable with EXTREG set */
#define FONT6WIDE 0x04
#define INVCURSOR 0x02
#define FOURLINE 0x01
#define EXTMODESET 0x08 /* Only reachable with EXTREG set */
#define FONT6WIDE 0x04
#define INVCURSOR 0x02
#define FOURLINE 0x01
#define CURSORSHIFT 0x10 /* Only reachable with EXTREG clear */
#define SCROLLDISP 0x08
#define MOVECURSOR 0x00
#define MOVERIGHT 0x04
#define MOVELEFT 0x00
#define CURSORSHIFT 0x10 /* Only reachable with EXTREG clear */
#define SCROLLDISP 0x08
#define MOVECURSOR 0x00
#define MOVERIGHT 0x04
#define MOVELEFT 0x00
#define HSCROLLEN 0x10 /* Only reachable with EXTREG set */
#define HSCROLLEN 0x10 /* Only reachable with EXTREG set */
#define FUNCSET 0x20
#define IF_8BIT 0x10
#define IF_4BIT 0x00
#define TWOLINE 0x08
#define ONELINE 0x00
#define LARGECHAR 0x04 /* 5x11 characters */
#define SMALLCHAR 0x00 /* 5x8 characters */
#define EXTREG 0x04 /* Select ext. registers (Yes, the same bits)*/
#define SEGBLINK 0x02 /* Only reachable with EXTREG set */
#define POWERDOWN 0x01 /* Only reachable with EXTREG set */
#define FUNCSET 0x20
#define IF_8BIT 0x10
#define IF_4BIT 0x00
#define TWOLINE 0x08
#define ONELINE 0x00
#define LARGECHAR 0x04 /* 5x11 characters */
#define SMALLCHAR 0x00 /* 5x8 characters */
#define EXTREG 0x04 /* Select ext. registers (Yes, the same bits)*/
#define SEGBLINK 0x02 /* Only reachable with EXTREG set */
#define POWERDOWN 0x01 /* Only reachable with EXTREG set */
#define SETCHAR 0x40 /* Only reachable with EXTREG clear */
#define SETCHAR 0x40 /* Only reachable with EXTREG clear */
#define SETSEG 0x40 /* Only reachable with EXTREG set */
#define SETSEG 0x40 /* Only reachable with EXTREG set */
#define POSITION 0x80 /* Only reachable with EXTREG clear */
#define POSITION 0x80 /* Only reachable with EXTREG clear */
#define HSCROLLAMOUNT 0x80 /* Only reachable with EXTREG set */
#define HSCROLLAMOUNT 0x80 /* Only reachable with EXTREG set */
#endif
+254 -98
View File
@@ -108,22 +108,29 @@ static char *defaultKeyMapMatrix[KEYPAD_MAXY][KEYPAD_MAXX] = {
{ NULL, NULL, NULL, NULL, NULL },
{ NULL, NULL, NULL, NULL, NULL }};
// function declarations
void HD44780_position(Driver *drvthis, int x, int y);
static void uPause(PrivateData *p, int usecs);
unsigned char HD44780_scankeypad(PrivateData *p);
static int parse_span_list(int *spanListArray[], int *spLsize, int *dispOffsets[], int *dOffsize, int *dispSizeArray[], const char *spanlist);
// Vars for the server core
/* Vars for the server core */
MODULE_EXPORT char * api_version = API_VERSION;
MODULE_EXPORT int stay_in_foreground = 0;
MODULE_EXPORT int supports_multiple = 1; // yes, we have no global variables (except for constants)
MODULE_EXPORT char *symbol_prefix = "HD44780_";
/////////////////////////////////////////////////////////////////
// Opens com port and sets baud correctly...
//
/* Internal functions */
void HD44780_position(Driver *drvthis, int x, int y);
static void uPause(PrivateData *p, int usecs);
unsigned char HD44780_scankeypad(PrivateData *p);
static int parse_span_list(int *spanListArray[], int *spLsize, int *dispOffsets[], int *dOffsize, int *dispSizeArray[], const char *spanlist);
/**
* Initialize the driver.
* Initialize common part of drive & call sub-initialization
* routine depending on connection type.
* \param drvthis Pointer to driver structure.
* \retval 0 Success.
* \retval <0 Error.
*/
MODULE_EXPORT int
HD44780_init(Driver *drvthis)
{
@@ -134,6 +141,7 @@ HD44780_init(Driver *drvthis)
int i = 0;
int (*init_fn)(Driver *drvthis) = NULL;
int if_type = IF_TYPE_UNKNOWN;
int tmp;
PrivateData *p;
// Alocate and store private data
@@ -199,6 +207,33 @@ HD44780_init(Driver *drvthis)
report(RPT_ERR, "%s: cannot read Size %s", drvthis->name, s);
}
/* set contrast */
tmp = drvthis->config_get_int(drvthis->name, "Contrast", 0, DEFAULT_CONTRAST);
if ((tmp < 0) || (tmp > 1000)) {
report(RPT_WARNING, "%s: Contrast must be between 0 and 1000; using default %d",
drvthis->name, DEFAULT_CONTRAST);
tmp = DEFAULT_CONTRAST;
}
p->contrast = tmp;
/* set brightness */
tmp = drvthis->config_get_int(drvthis->name, "Brightness", 0, DEFAULT_BRIGHTNESS);
if ((tmp < 0) || (tmp > 1000)) {
report(RPT_WARNING, "%s: Brightness must be between 0 and 1000; using default %d",
drvthis->name, DEFAULT_BRIGHTNESS);
tmp = DEFAULT_BRIGHTNESS;
}
p->brightness = tmp;
/* set backlight-off "brightness" */
tmp = drvthis->config_get_int(drvthis->name, "OffBrightness", 0, DEFAULT_OFFBRIGHTNESS);
if ((tmp < 0) || (tmp > 1000)) {
report(RPT_WARNING, "%s: OffBrightness must be between 0 and 1000; using default %d",
drvthis->name, DEFAULT_OFFBRIGHTNESS);
tmp = DEFAULT_OFFBRIGHTNESS;
}
p->offbrightness = tmp;
// default case for when spans aren't indicated
if (p->numLines == 0) {
if ((p->spanList = (int *) calloc(sizeof(int), p->height)) != NULL) {
@@ -215,6 +250,7 @@ HD44780_init(Driver *drvthis)
if (p->numLines != p->height)
report(RPT_ERR, "%s: height in Size does not match vSpan", drvthis->name);
}
if (p->numDisplays == 0) {
if (((p->dispVOffset = (int *) calloc(1, sizeof(int))) != NULL) &&
((p->dispSizes = (int *) calloc(1, sizeof(int))) != NULL)) {
@@ -282,7 +318,7 @@ HD44780_init(Driver *drvthis)
}
for (x = 0; x < KEYPAD_MAXX; x++) {
for (y = 0; y<KEYPAD_MAXY; y++) {
for (y = 0; y < KEYPAD_MAXY; y++) {
char buf[40];
// First fill with default value
@@ -326,11 +362,18 @@ HD44780_init(Driver *drvthis)
// Output latch state - init to a non-valid value
p->output_state = 999999;
// allocate local function pointers
if ((p->hd44780_functions = (HD44780_functions *) calloc(1, sizeof(HD44780_functions))) == NULL) {
report(RPT_ERR, "%s: error mallocing", drvthis->name);
return -1;
}
// pre-set local function pointers (may be overridden by local init function)
p->hd44780_functions->uPause = uPause;
p->hd44780_functions->senddata = NULL;
p->hd44780_functions->backlight = NULL;
p->hd44780_functions->set_contrast = NULL;
p->hd44780_functions->set_brightness = NULL;
p->hd44780_functions->readkeypad = NULL;
p->hd44780_functions->scankeypad = HD44780_scankeypad;
p->hd44780_functions->output = NULL;
p->hd44780_functions->close = NULL;
@@ -339,6 +382,13 @@ HD44780_init(Driver *drvthis)
if (init_fn(drvthis) != 0)
return -1;
// fail if local senddata function was not defined
if (p->hd44780_functions->senddata == NULL) {
report(RPT_ERR, "%s: incomplete functions for connection type");
return -1;
}
// Display startup parameters on the LCD
HD44780_clear(drvthis);
sprintf(buf, "HD44780 %dx%d", p->width, p->height);
@@ -380,12 +430,13 @@ HD44780_init(Driver *drvthis)
return 1;
}
/////////////////////////////////////////////////////////////////
// Common initialisation sequence - sets cursor off and not blinking,
// clear display and homecursor
// Does not set twoline mode nor small characters (5x8). The init function of
// the connectiontype should do this.
//
/**
* Common initialisation sequence - sets cursor off and not blinking,
* clear display and homecursor
* Does not set twoline mode nor small characters (5x8). The init function of
* the connectiontype should do this.
*/
void
common_init(PrivateData *p, unsigned char if_bit)
{
@@ -406,25 +457,28 @@ common_init(PrivateData *p, unsigned char if_bit)
p->hd44780_functions->uPause(p, 1600);
}
/////////////////////////////////////////////////////////////////
// Delay a number of microseconds
//
/**
* Delay a number of microseconds
*/
void
uPause(PrivateData *p, int usecs)
{
timing_uPause(usecs * p->delayMult);
}
/////////////////////////////////////////////////////////////////
// Clean-up
//
/**
* Close the driver (do necessary clean-up).
* \param drvthis Pointer to driver structure.
*/
MODULE_EXPORT void
HD44780_close(Driver *drvthis)
{
PrivateData *p = (PrivateData *) drvthis->private_data;
if (p != NULL) {
if (p->hd44780_functions->close)
if (p->hd44780_functions->close != NULL)
p->hd44780_functions->close(p);
if (p->framebuf)
@@ -438,9 +492,12 @@ HD44780_close(Driver *drvthis)
drvthis->store_private_ptr(drvthis, NULL);
}
/////////////////////////////////////////////////////////////////
// Returns the display width
//
/**
* Return the display width in characters.
* \param drvthis Pointer to driver structure.
* \return Number of characters the display is wide.
*/
MODULE_EXPORT int
HD44780_width(Driver *drvthis)
{
@@ -449,9 +506,12 @@ HD44780_width(Driver *drvthis)
return p->width;
}
/////////////////////////////////////////////////////////////////
// Returns the display height
//
/**
* Return the display height in characters.
* \param drvthis Pointer to driver structure.
* \return Number of characters the display is high.
*/
MODULE_EXPORT int
HD44780_height(Driver *drvthis)
{
@@ -460,9 +520,12 @@ HD44780_height(Driver *drvthis)
return p->height;
}
/////////////////////////////////////////////////////////////////
// Returns the display's character cell width
//
/**
* Return the width of a character in pixels.
* \param drvthis Pointer to driver structure.
* \return Number of pixel columns a character cell is wide.
*/
MODULE_EXPORT int
HD44780_cellwidth(Driver *drvthis)
{
@@ -471,9 +534,12 @@ HD44780_cellwidth(Driver *drvthis)
return p->cellwidth;
}
/////////////////////////////////////////////////////////////////
// Returns the display's character cell height
//
/**
* Return the height of a character in pixels.
* \param drvthis Pointer to driver structure.
* \return Number of pixel lines a character cell is high.
*/
MODULE_EXPORT int
HD44780_cellheight(Driver *drvthis)
{
@@ -482,10 +548,13 @@ HD44780_cellheight(Driver *drvthis)
return p->cellheight;
}
/////////////////////////////////////////////////////////////////
// Set position (not part of API)
//
// x and y here are for the virtual p->height x p->width display
/**
* Set position (not part of API).
* \param drvthis Pointer to driver structure.
* \param x X-coordinate to go to.
* \param y Y-coordinate to go to.
*/
void
HD44780_position(Driver *drvthis, int x, int y)
{
@@ -514,9 +583,11 @@ HD44780_position(Driver *drvthis, int x, int y)
p->hd44780_functions->uPause(p, 40); // Minimum exec time for all commands
}
/////////////////////////////////////////////////////////////////
// Flush the framebuffer to the display
//
/**
* Flush data on screen to the LCD.
* \param drvthis Pointer to driver structure.
*/
MODULE_EXPORT void
HD44780_flush(Driver *drvthis)
{
@@ -589,9 +660,11 @@ HD44780_flush(Driver *drvthis)
debug(RPT_DEBUG, "%s: flushed %d custom chars", drvthis->name, count);
}
/////////////////////////////////////////////////////////////////
// Clear the framebuffer
//
/**
* Clear the screen.
* \param drvthis Pointer to driver structure.
*/
MODULE_EXPORT void
HD44780_clear(Driver *drvthis)
{
@@ -601,9 +674,15 @@ HD44780_clear(Driver *drvthis)
p->ccmode = standard;
}
/////////////////////////////////////////////////////////////////
// Place a character in the framebuffer
//
/**
* Print a character on the screen at position (x,y).
* The upper-left corner is (1,1), the lower-right corner is (p->width, p->height).
* \param drvthis Pointer to driver structure.
* \param x Horizontal character position (column).
* \param y Vertical character position (row).
* \param c Character that gets written.
*/
MODULE_EXPORT void
HD44780_chr(Driver *drvthis, int x, int y, char ch)
{
@@ -616,9 +695,15 @@ HD44780_chr(Driver *drvthis, int x, int y, char ch)
p->framebuf[(y * p->width) + x] = ch;
}
/////////////////////////////////////////////////////////////////
// Place a string in the framebuffer
//
/**
* Print a string on the screen at position (x,y).
* The upper-left corner is (1,1), the lower-right corner is (p->width, p->height).
* \param drvthis Pointer to driver structure.
* \param x Horizontal character position (column).
* \param y Vertical character position (row).
* \param string String that gets written.
*/
MODULE_EXPORT void
HD44780_string(Driver *drvthis, int x, int y, const char string[])
{
@@ -637,20 +722,62 @@ HD44780_string(Driver *drvthis, int x, int y, const char string[])
}
}
/////////////////////////////////////////////////////////////////
// Sets the backlight on or off
//
/**
* Get current LCD contrast.
* This is only the locally stored contrast, the contrast value
* cannot be retrieved from the LCD.
* \param drvthis Pointer to driver structure.
* \return Stored contrast in promille.
*/
MODULE_EXPORT int
HD44780_get_contrast(Driver *drvthis)
{
PrivateData *p = drvthis->private_data;
return p->contrast;
}
/**
* Retrieve brightness.
* \param drvthis Pointer to driver structure.
* \param state Brightness state (on/off) for which we want the value.
* \return Stored brightness in promille.
*/
MODULE_EXPORT int
HD44780_get_brightness(Driver *drvthis, int state)
{
PrivateData *p = drvthis->private_data;
return (state == BACKLIGHT_ON) ? p->brightness : p->offbrightness;
}
/**
* Turn the LCD backlight on or off.
* \param drvthis Pointer to driver structure.
* \param on New backlight status.
*/
MODULE_EXPORT void
HD44780_backlight(Driver *drvthis, int on)
{
PrivateData *p = (PrivateData *) drvthis->private_data;
p->hd44780_functions->backlight (p, on);
if (p->hd44780_functions->backlight != NULL)
p->hd44780_functions->backlight(p, on);
}
/////////////////////////////////////////////////////////////////
// Draws a vertical bar...
//
/**
* Draw a vertical bar bottom-up.
* \param drvthis Pointer to driver structure.
* \param x Horizontal character position (column) of the starting point.
* \param y Vertical character position (row) of the starting point.
* \param len Number of characters that the bar is high at 100%
* \param promille Current height level of the bar in promille.
* \param options Options (currently unused).
*/
MODULE_EXPORT void
HD44780_vbar(Driver *drvthis, int x, int y, int len, int promille, int options)
{
@@ -687,9 +814,16 @@ HD44780_vbar(Driver *drvthis, int x, int y, int len, int promille, int options)
lib_vbar_static(drvthis, x, y, len, promille, options, p->cellheight, 0);
}
/////////////////////////////////////////////////////////////////
// Draws a horizontal bar to the right.
//
/**
* Draw a horizontal bar to the right.
* \param drvthis Pointer to driver structure.
* \param x Horizontal character position (column) of the starting point.
* \param y Vertical character position (row) of the starting point.
* \param len Number of characters that the bar is long at 100%
* \param promille Current length level of the bar in promille.
* \param options Options (currently unused).
*/
MODULE_EXPORT void
HD44780_hbar(Driver *drvthis, int x, int y, int len, int promille, int options)
{
@@ -726,9 +860,12 @@ HD44780_hbar(Driver *drvthis, int x, int y, int len, int promille, int options)
}
/////////////////////////////////////////////////////////////////
// Writes a big number.
//
/**
* Write a big number to the screen.
* \param drvthis Pointer to driver structure.
* \param x Horizontal character position (column).
* \param num Character to write (0 - 10 with 10 representing ':')
*/
MODULE_EXPORT void
HD44780_num(Driver *drvthis, int x, int num)
{
@@ -770,13 +907,15 @@ HD44780_get_free_chars(Driver *drvthis)
}
/////////////////////////////////////////////////////////////////
// Sets a custom character from 0-7...
//
// For input, values > 0 mean "on" and values <= 0 are "off".
//
// The input is just an array of characters...
//
/**
* Define a custom character and write it to the LCD.
* \param drvthis Pointer to driver structure.
* \param n Custom character to define [0 - (NUM_CCs-1)].
* \param dat Array of 8(=cellheight) bytes, each representing a pixel row
* starting from the top to bottom.
* The bits in each byte represent the pixels where the LSB
* (least significant bit) is the rightmost pixel in each pixel row.
*/
MODULE_EXPORT void
HD44780_set_char(Driver *drvthis, int n, unsigned char *dat)
{
@@ -801,9 +940,15 @@ HD44780_set_char(Driver *drvthis, int n, unsigned char *dat)
}
}
/////////////////////////////////////////////////////////////
// Set default icon into a userdef char
//
/**
* Place an icon on the screen.
* \param drvthis Pointer to driver structure.
* \param x Horizontal character position (column).
* \param y Vertical character position (row).
* \param icon synbolic value representing the icon.
* \return Information whether the icon is handled here or needs to be handled by the server core.
*/
MODULE_EXPORT int
HD44780_icon(Driver *drvthis, int x, int y, int icon)
{
@@ -975,9 +1120,12 @@ HD44780_icon(Driver *drvthis, int x, int y, int icon)
return 0;
}
/////////////////////////////////////////////////////////////
// Get a key from the keypad (if there is one)
//
/**
* Get next key from the key panel connected to the display.
* \param drvthis Pointer to driver structure.
* \return String representation of the key.
*/
MODULE_EXPORT const char *
HD44780_get_key(Driver *drvthis)
{
@@ -1026,9 +1174,10 @@ HD44780_get_key(Driver *drvthis)
return keystr;
}
/////////////////////////////////////////////////////////////
// Scan the keypad
//
/**
* Scan the keypad (not part of the API).
*/
unsigned char HD44780_scankeypad(PrivateData *p)
{
unsigned int keybits;
@@ -1094,38 +1243,44 @@ unsigned char HD44780_scankeypad(PrivateData *p)
}
/////////////////////////////////////////////////////////////
// Output to the optional output latch(es)
//
/**
* Output to the optional output latch(es).
* \param drvthis Pointer to driver structure.
* \param state Integer with bits representing LED states.
*/
MODULE_EXPORT void
HD44780_output(Driver *drvthis, int on)
{
PrivateData *p = drvthis->private_data;
if (!p->have_output) return; /* output disabled */
if (!p->hd44780_functions->output) return; /* unsupported for selected connectiontype */
// return immediately if output is disabled
if (!p->have_output)
return;
// perhaps it is better just to do this every time in case of a glitch
// but leaving this in does make sure that any latch-enable line glitches
// are more easily seen
if (p->output_state == on) return;
if (p->output_state == on)
return;
p->output_state = on;
p->hd44780_functions->output(p, on);
// call output function only if it is defined for the commenction type
if (p->hd44780_functions->output != NULL)
p->hd44780_functions->output(p, on);
}
/////////////////////////////////////////////////////////////
// Parse the span list
// spanListArray - array to store vertical spans
// spLsize - size of spanListArray
// dispOffsets - array to store display offsets
// dOffsize - size of dispOffsets
// dispSizeArray - array of display vertical sizes (= spanlist)
// spanlist - null terminated input span list in comma delimited
// format. All span elements [1-9] e.g. "1,4,2"
// returns number of span elements, -1 on parse error
/**
* Parse a span list, a comma separated list of numbers (e.g. "1,4,2").
* \param spanListArray Array to store vertical spans.
* \param spLsize Size of spanListArray.
* \param dispOffsets Array to store display offsets.
* \param dOffsize Size of dispOffsets.
* \param dispSizeArray Array of display vertical sizes (= spanlist).
* \param spanlist '\0'-terminated input span list in comma delimited format.
* \return Number of span elements, -1 on parse error.
*/
int
parse_span_list(int *spanListArray[], int *spLsize, int *dispOffsets[], int *dOffsize, int *dispSizeArray[], const char *spanlist)
{
@@ -1165,3 +1320,4 @@ parse_span_list(int *spanListArray[], int *spLsize, int *dispOffsets[], int *dOf
return retVal;
}
/* EOF */
+4
View File
@@ -38,6 +38,10 @@ MODULE_EXPORT int HD44780_icon(Driver *drvthis, int x, int y, int icon);
MODULE_EXPORT void HD44780_set_char(Driver *drvthis, int n, unsigned char *dat);
MODULE_EXPORT int HD44780_get_free_chars(Driver *drvthis);
MODULE_EXPORT int HD44780_get_contrast(Driver *drvthis);
//MODULE_EXPORT void HD44780_set_contrast(Driver *drvthis, int promille);
MODULE_EXPORT int HD44780_get_brightness(Driver *drvthis, int state);
//MODULE_EXPORT void HD44780_set_brightness(Driver *drvthis, int state, int promille);
MODULE_EXPORT void HD44780_backlight(Driver *drvthis, int on);
MODULE_EXPORT void HD44780_output(Driver *drvthis, int state);