v0.5 kick-off

This commit is contained in:
robijn
2001-12-30 00:15:25 +00:00
parent c28d25b795
commit 71056ec551
88 changed files with 6638 additions and 5469 deletions
+92 -8
View File
@@ -6,40 +6,124 @@
enum ifWidth { IF_4bit, IF_8bit };
//void common_init (enum ifWidth ifwidth);
void common_init ();
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
# if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
# endif
//struct hwDependentFns;
// Maximum sizes of the keypad
// DO NOT CHANGE THESE 2 VALUES, unless you change the functions too
#define KEYPAD_MAXX 5
#define KEYPAD_MAXY 11
typedef struct ConnectionMapping {
char *name;
int (*init_fn) (Driver *drvthis);
const char *helpMsg;
} ConnectionMapping;
typedef struct driver_private_data {
unsigned int port;
int width, height;
int cellwidth, cellheight;
// The framebuffer
char *framebuf;
// For incremental updates store last lcd contents
char *lcd_contents;
// Connection type data
int connectiontype_index;
struct hwDependentFns *hd44780_functions;
// spanList[line number] = display line number is in
int *spanList;
int numLines;
// dispVOffset is a cumulative sized array of line numbers for each display.
// use this to determine the vertical positioning on a given display
int *dispVOffset;
int numDisplays;
// dispSizes is the vertical size of each display. This is the same as the
// input span list but is kept to save some cpu cycles.
int *dispSizes;
// Keypad, backlight extended interface and delay options
char have_keypad; // off by default
char have_backlight; // off by default
char extIF; // off by default
int delayMult; // Delay multiplier for slow displays
char delayBus; // Delay if the computer can send data too fast over
// its bus to LPT port
// keyMapDirect contains an array of the ascii-codes that should be generated
// when a directly connected key is pressed (not in matrix).
char *keyMapDirect[KEYPAD_MAXX];
// keyMapMatrix contrains an array with arrays of the ascii-codes that should be generated
// when a key in the matrix is pressed.
char *keyMapMatrix[KEYPAD_MAXY][KEYPAD_MAXX];
char pressed_key;
int pressed_key_repetitions;
struct timeval pressed_key_time;
int stuckinputs;
int backlight_bit;
} PrivateData;
// Structures holding pointers to HD44780 specific functions
typedef struct hwDependentFns {
// microsec pauses
void (*uPause) (int microSecondsTenths);
void (*uPause) (PrivateData *p, int usecs);
// Senddata to the LCD
// dispID - display to send data to (0 = all displays)
// flags - data or instruction command (RS_DATA | RS_INSTR)
// ch - character to display or instruction value
void (*senddata) (unsigned char dispID, unsigned char flags, unsigned char ch);
void (*senddata) (PrivateData *p, unsigned char dispID, unsigned char flags, unsigned char ch);
// Switch the backlight on or off
// state - to be or not to be on
void (*backlight) (unsigned char state);
void (*backlight) (PrivateData *p, unsigned char state);
// 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
unsigned char (*readkeypad) (unsigned int Ydata);
unsigned char (*readkeypad) (PrivateData *p, unsigned int Ydata);
// Scan the keypad and return a scancode.
// The code is the Yvalue in the high nibble and the Xvalue in the low nibble.
// A subdriver should do only one of two things:
// - set readkeypad; or
// - override scankeypad.
unsigned char (*scankeypad) ();
unsigned char (*scankeypad) (PrivateData *p);
} HD44780_functions; /* for want of a better name :-) */
extern HD44780_functions *hd44780_functions;
void common_init (PrivateData *p);
// commands for senddata
#define RS_DATA 0x00