]> git.webhop.me Git - lcd4linux.git/commitdiff
[lcd4linux @ 2004-01-20 15:32:48 by reinelt]
authorreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Tue, 20 Jan 2004 15:32:49 +0000 (15:32 +0000)
committerreinelt <reinelt@3ae390bd-cb1e-0410-b409-cd5a39f66f1f>
Tue, 20 Jan 2004 15:32:49 +0000 (15:32 +0000)
first version of Next Generation HD44780 (untested! but it compiles...)
some cleanup in the other drivers

git-svn-id: https://ssl.bulix.org/svn/lcd4linux/trunk@327 3ae390bd-cb1e-0410-b409-cd5a39f66f1f

config.h.in
configure
configure.in
drv.c
drv.h
drv_HD44780.c [new file with mode: 0644]
drv_MatrixOrbital.c
drv_generic_parport.c
drv_generic_parport.h
lcd4linux.conf.sample

index 82471051becea5894b5dcef21735b541494635cf..33c0a5d344846f5db8377aff0c32295e78d8ab65 100644 (file)
 /* config.h.in.  Generated from configure.in by autoheader.  */
 
-/* 
-   Found some version of curses that we're going
-   to use */
+/* Found some version of curses that we're going to use */
 #undef HAS_CURSES
 
-/* 
-   Define to 1 if you have the <asm/io.h>
-   header file. */
+/* Define to 1 if you have the <asm/io.h> header file. */
 #undef HAVE_ASM_IO_H
 
-/* 
-   Define to 1 if you have the <asm/msr.h>
-   header file. */
+/* Define to 1 if you have the <asm/msr.h> header file. */
 #undef HAVE_ASM_MSR_H
 
-/* 
-   Define to 1 if you have the `atexit'
-   function. */
+/* Define to 1 if you have the `atexit' function. */
 #undef HAVE_ATEXIT
 
-/* 
-   Define to 1 if you have the <dlfcn.h>
-   header file. */
+/* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
-/* 
-   Define to 1 if you have the `dup2'
-   function. */
+/* Define to 1 if you have the `dup2' function. */
 #undef HAVE_DUP2
 
-/* 
-   Define to 1 if you have the <fcntl.h>
-   header file. */
+/* Define to 1 if you have the <fcntl.h> header file. */
 #undef HAVE_FCNTL_H
 
-/* 
-   Define to 1 if you have the `fork'
-   function. */
+/* Define to 1 if you have the `fork' function. */
 #undef HAVE_FORK
 
-/* 
-   Define to 1 if you have the <gd/gd.h>
-   header file. */
+/* Define to 1 if you have the <gd/gd.h> header file. */
 #undef HAVE_GD_GD_H
 
-/* 
-   Define to 1 if you have the <gd.h>
-   header file. */
+/* Define to 1 if you have the <gd.h> header file. */
 #undef HAVE_GD_H
 
-/* 
-   Define to 1 if you have the `gethostbyname'
-   function. */
+/* Define to 1 if you have the `gethostbyname' function. */
 #undef HAVE_GETHOSTBYNAME
 
-/* 
-   Define to 1 if you have the `gettimeofday'
-   function. */
+/* Define to 1 if you have the `gettimeofday' function. */
 #undef HAVE_GETTIMEOFDAY
 
-/* 
-   Define to 1 if you have the <inttypes.h>
-   header file. */
+/* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
-/* 
-   Define to 1 if you have the `m'
-   library (-lm). */
+/* Define to 1 if you have the `m' library (-lm). */
 #undef HAVE_LIBM
 
-/* 
-   Define to 1 if you have the <linux/dvb/frontend.h>
-   header file. */
+/* Define to 1 if you have the <linux/dvb/frontend.h> header file. */
 #undef HAVE_LINUX_DVB_FRONTEND_H
 
-/* 
-   Define to 1 if you have the <linux/parport.h>
-   header file. */
+/* Define to 1 if you have the <linux/parport.h> header file. */
 #undef HAVE_LINUX_PARPORT_H
 
-/* 
-   Define to 1 if you have the <linux/ppdev.h>
-   header file. */
+/* Define to 1 if you have the <linux/ppdev.h> header file. */
 #undef HAVE_LINUX_PPDEV_H
 
-/* 
-   Define to 1 if you have the <malloc.h>
-   header file. */
+/* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H
 
-/* 
-   Define to 1 if you have the `memmove'
-   function. */
+/* Define to 1 if you have the `memmove' function. */
 #undef HAVE_MEMMOVE
 
-/* 
-   Define to 1 if you have the <memory.h>
-   header file. */
+/* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
-/* 
-   Define to 1 if you have the `memset'
-   function. */
+/* Define to 1 if you have the `memset' function. */
 #undef HAVE_MEMSET
 
-/* 
-   Define to 1 if you have the <netdb.h>
-   header file. */
+/* Define to 1 if you have the <netdb.h> header file. */
 #undef HAVE_NETDB_H
 
-/* 
-   Define to 1 if you have the <netinet/in.h>
-   header file. */
+/* Define to 1 if you have the <netinet/in.h> header file. */
 #undef HAVE_NETINET_IN_H
 
-/* 
-   Define to 1 if you have the <net/if_ppp.h>
-   header file. */
+/* Define to 1 if you have the <net/if_ppp.h> header file. */
 #undef HAVE_NET_IF_PPP_H
 
-/* 
-   Define to 1 if you have the `pow'
-   function. */
+/* Define to 1 if you have the `pow' function. */
 #undef HAVE_POW
 
-/* 
-   Define to 1 if you have the `putenv'
-   function. */
+/* Define to 1 if you have the `putenv' function. */
 #undef HAVE_PUTENV
 
-/* 
-   Define to 1 if you have the `select'
-   function. */
+/* Define to 1 if you have the `select' function. */
 #undef HAVE_SELECT
 
-/* 
-   Define to 1 if you have the `socket'
-   function. */
+/* Define to 1 if you have the `socket' function. */
 #undef HAVE_SOCKET
 
-/* 
-   Define to 1 if you have the `sqrt'
-   function. */
+/* Define to 1 if you have the `sqrt' function. */
 #undef HAVE_SQRT
 
-/* 
-   Define to 1 if `stat' has the bug
-   that it succeeds when given the zero-length file name
-   argument. */
+/* Define to 1 if `stat' has the bug that it succeeds when given the
+   zero-length file name argument. */
 #undef HAVE_STAT_EMPTY_STRING_BUG
 
-/* 
-   Define to 1 if you have the <stdint.h>
-   header file. */
+/* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
-/* 
-   Define to 1 if you have the <stdlib.h>
-   header file. */
+/* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
-/* 
-   Define to 1 if you have the `strcasecmp'
-   function. */
+/* Define to 1 if you have the `strcasecmp' function. */
 #undef HAVE_STRCASECMP
 
-/* 
-   Define to 1 if you have the `strchr'
-   function. */
+/* Define to 1 if you have the `strchr' function. */
 #undef HAVE_STRCHR
 
-/* 
-   Define to 1 if you have the `strdup'
-   function. */
+/* Define to 1 if you have the `strdup' function. */
 #undef HAVE_STRDUP
 
-/* 
-   Define to 1 if you have the `strerror'
-   function. */
+/* Define to 1 if you have the `strerror' function. */
 #undef HAVE_STRERROR
 
-/* 
-   Define to 1 if you have the <strings.h>
-   header file. */
+/* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
-/* 
-   Define to 1 if you have the <string.h>
-   header file. */
+/* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
-/* 
-   Define to 1 if you have the `strncasecmp'
-   function. */
+/* Define to 1 if you have the `strncasecmp' function. */
 #undef HAVE_STRNCASECMP
 
-/* 
-   Define to 1 if you have the `strndup'
-   function. */
+/* Define to 1 if you have the `strndup' function. */
 #undef HAVE_STRNDUP
 
-/* 
-   Define to 1 if you have the `strpbrk'
-   function. */
+/* Define to 1 if you have the `strpbrk' function. */
 #undef HAVE_STRPBRK
 
-/* 
-   Define to 1 if you have the `strstr'
-   function. */
+/* Define to 1 if you have the `strstr' function. */
 #undef HAVE_STRSTR
 
-/* 
-   Define to 1 if you have the `strtol'
-   function. */
+/* Define to 1 if you have the `strtol' function. */
 #undef HAVE_STRTOL
 
-/* 
-   Define to 1 if you have the <syslog.h>
-   header file. */
+/* Define to 1 if you have the <syslog.h> header file. */
 #undef HAVE_SYSLOG_H
 
-/* 
-   Define to 1 if you have the <sys/ioctl.h>
-   header file. */
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
 #undef HAVE_SYS_IOCTL_H
 
-/* 
-   Define to 1 if you have the <sys/io.h>
-   header file. */
+/* Define to 1 if you have the <sys/io.h> header file. */
 #undef HAVE_SYS_IO_H
 
-/* 
-   Define to 1 if you have the <sys/param.h>
-   header file. */
+/* Define to 1 if you have the <sys/param.h> header file. */
 #undef HAVE_SYS_PARAM_H
 
-/* 
-   Define to 1 if you have the <sys/select.h>
-   header file. */
+/* Define to 1 if you have the <sys/select.h> header file. */
 #undef HAVE_SYS_SELECT_H
 
-/* 
-   Define to 1 if you have the <sys/socket.h>
-   header file. */
+/* Define to 1 if you have the <sys/socket.h> header file. */
 #undef HAVE_SYS_SOCKET_H
 
-/* 
-   Define to 1 if you have the <sys/stat.h>
-   header file. */
+/* Define to 1 if you have the <sys/stat.h> header file. */
 #undef HAVE_SYS_STAT_H
 
-/* 
-   Define to 1 if you have the <sys/time.h>
-   header file. */
+/* Define to 1 if you have the <sys/time.h> header file. */
 #undef HAVE_SYS_TIME_H
 
-/* 
-   Define to 1 if you have the <sys/types.h>
-   header file. */
+/* Define to 1 if you have the <sys/types.h> header file. */
 #undef HAVE_SYS_TYPES_H
 
-/* 
-   Define to 1 if you have <sys/wait.h> that
-   is POSIX.1 compatible. */
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
 #undef HAVE_SYS_WAIT_H
 
-/* 
-   Define to 1 if you have the <termios.h>
-   header file. */
+/* Define to 1 if you have the <termios.h> header file. */
 #undef HAVE_TERMIOS_H
 
-/* 
-   Define to 1 if you have the `uname'
-   function. */
+/* Define to 1 if you have the `uname' function. */
 #undef HAVE_UNAME
 
-/* 
-   Define to 1 if you have the <unistd.h>
-   header file. */
+/* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
-/* 
-   Define to 1 if you have the `vfork'
-   function. */
+/* Define to 1 if you have the `vfork' function. */
 #undef HAVE_VFORK
 
-/* 
-   Define to 1 if you have the <vfork.h>
-   header file. */
+/* Define to 1 if you have the <vfork.h> header file. */
 #undef HAVE_VFORK_H
 
-/* 
-   Define to 1 if `fork' works. */
+/* Define to 1 if `fork' works. */
 #undef HAVE_WORKING_FORK
 
-/* 
-   Define to 1 if `vfork' works. */
+/* Define to 1 if `vfork' works. */
 #undef HAVE_WORKING_VFORK
 
-/* 
-   Define to 1 if `lstat' dereferences a symlink
-   specified with a trailing slash. */
+/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
+   slash. */
 #undef LSTAT_FOLLOWS_SLASHED_SYMLINK
 
-/* 
-   Set to reflect version of ncurses */
+/* Set to reflect version of ncurses */
 #undef NCURSES_970530
 
-/* 
-   If you Curses does not have color define
-   this one */
+/* If you Curses does not have color define this one */
 #undef NO_COLOR_CURSES
 
-/* 
-   Name of package */
+/* Name of package */
 #undef PACKAGE
 
-/* 
-   Define to the address where bug reports for
-   this package should be sent. */
+/* Define to the address where bug reports for this package should be sent. */
 #undef PACKAGE_BUGREPORT
 
-/* 
-   Define to the full name of this package.
-   */
+/* Define to the full name of this package. */
 #undef PACKAGE_NAME
 
-/* 
-   Define to the full name and version of
-   this package. */
+/* Define to the full name and version of this package. */
 #undef PACKAGE_STRING
 
-/* 
-   Define to the one symbol short name of
-   this package. */
+/* Define to the one symbol short name of this package. */
 #undef PACKAGE_TARNAME
 
-/* 
-   Define to the version of this package. */
+/* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
-/* 
-   Define as the return type of signal handlers
-   (`int' or `void'). */
+/* Define as the return type of signal handlers (`int' or `void'). */
 #undef RETSIGTYPE
 
-/* 
-   Define if you want to turn on SCO-specific
-   code */
+/* Define if you want to turn on SCO-specific code */
 #undef SCO_FLAVOR
 
-/* 
-   Define to the type of arg 1 for
-   `select'. */
+/* Define to the type of arg 1 for `select'. */
 #undef SELECT_TYPE_ARG1
 
-/* 
-   Define to the type of args 2, 3
-   and 4 for `select'. */
+/* Define to the type of args 2, 3 and 4 for `select'. */
 #undef SELECT_TYPE_ARG234
 
-/* 
-   Define to the type of arg 5 for
-   `select'. */
+/* Define to the type of arg 5 for `select'. */
 #undef SELECT_TYPE_ARG5
 
-/* 
-   Define to 1 if you have the ANSI
-   C header files. */
+/* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
-/* 
-   Define to 1 if you can safely include
-   both <sys/time.h> and <time.h>. */
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
 #undef TIME_WITH_SYS_TIME
 
-/* 
-   Use Ncurses? */
+/* Use Ncurses? */
 #undef USE_NCURSES
 
-/* 
-   Use SunOS SysV curses? */
+/* Use SunOS SysV curses? */
 #undef USE_SUNOS_CURSES
 
-/* 
-   Use SystemV curses? */
+/* Use SystemV curses? */
 #undef USE_SYSV_CURSES
 
-/* 
-   Version number of package */
+/* Version number of package */
 #undef VERSION
 
-/* 
-   junk */
+/* junk */
 #undef WITH_BECKMANNEGLE
 
-/* 
-   junk */
+/* junk */
 #undef WITH_CRYSTALFONTZ
 
-/* 
-   junk */
+/* junk */
 #undef WITH_CWLINUX
 
-/* 
-   junk */
+/* junk */
 #undef WITH_HD44780
 
-/* 
-   junk */
+/* junk */
 #undef WITH_M50530
 
-/* 
-   junk */
+/* junk */
 #undef WITH_MATRIXORBITAL
 
-/* 
-   junk */
+/* junk */
 #undef WITH_MILINST
 
-/* 
-   junk */
+/* junk */
 #undef WITH_PALMPILOT
 
-/* 
-   junk */
+/* junk */
 #undef WITH_PNG
 
-/* 
-   junk */
+/* junk */
 #undef WITH_PPM
 
-/* 
-   junk */
+/* junk */
 #undef WITH_SIN
 
-/* 
-   junk */
+/* junk */
 #undef WITH_SKELETON
 
-/* 
-   junk */
+/* junk */
 #undef WITH_T6963
 
-/* 
-   junk */
+/* junk */
 #undef WITH_TEXT
 
-/* 
-   junk */
+/* junk */
 #undef WITH_USBLCD
 
-/* 
-   junk */
+/* junk */
 #undef WITH_X11
 
-/* 
-   Define to 1 if the X Window System
-   is missing or not being used. */
+/* Define to 1 if the X Window System is missing or not being used. */
 #undef X_DISPLAY_MISSING
 
-/* 
-   Define to empty if `const' does not conform
-   to ANSI C. */
+/* Define to empty if `const' does not conform to ANSI C. */
 #undef const
 
-/* 
-   Define to `int' if <sys/types.h> doesn't define. */
+/* Define to `int' if <sys/types.h> doesn't define. */
 #undef gid_t
 
 /* Define to `__inline__' or `__inline' if that's what the C compiler
 #undef inline
 #endif
 
-/* 
-   Define to `int' if <sys/types.h> does not define.
-   */
+/* Define to `int' if <sys/types.h> does not define. */
 #undef pid_t
 
-/* 
-   Define to `unsigned' if <sys/types.h> does not define.
-   */
+/* Define to `unsigned' if <sys/types.h> does not define. */
 #undef size_t
 
-/* 
-   Define to `int' if <sys/types.h> doesn't define. */
+/* Define to `int' if <sys/types.h> doesn't define. */
 #undef uid_t
 
-/* 
-   Define as `fork' if `vfork' does not work.
-   */
+/* Define as `fork' if `vfork' does not work. */
 #undef vfork
index ebedfa861701ba8e9549ac524868a80ae4cb5179..d10c787a4928c20a55a436ac7e967e780d59df8f 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.58 for LCD4Linux 0.9.12.
+# Generated by GNU Autoconf 2.59 for LCD4Linux 0.9.12.
 #
 # Report bugs to <reinelt@eunet.at>.
 #
@@ -1037,16 +1037,14 @@ Optional Features:
                           build static libraries [default=yes]
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
-  --disable-libtool-lock
-                          avoid locking (might break parallel builds)
+  --disable-libtool-lock  avoid locking (might break parallel builds)
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-gnu-ld
-                          assume the C compiler uses GNU ld [default=no]
-  --with-pic
-                          try to use only PIC/non-PIC objects [default=use both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
   --with-tags[=TAGS]
                           include additional configurations [automatic]
   --with-sco              Use this to turn on SCO-specific code
@@ -1066,28 +1064,18 @@ Optional Packages:
                           MilfordInstruments, PalmPilot, PNG, PPM, X11, Text
 
 Some influential environment variables:
-  CXX
-              C++ compiler command
-  CXXFLAGS
-              C++ compiler flags
-  LDFLAGS
-              linker flags, e.g. -L<lib dir> if you have
-              libraries in a nonstandard directory <lib dir>
-  CPPFLAGS
-              C/C++ preprocessor flags, e.g. -I<include dir> if you
-              have headers in a nonstandard directory <include dir>
-  CC
-              C compiler command
-  CFLAGS
-              C compiler flags
-  CPP
-              C preprocessor
-  CXXCPP
-              C++ preprocessor
-  F77
-              Fortran 77 compiler command
-  FFLAGS
-              Fortran 77 compiler flags
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  CPPFLAGS    C/C++ preprocessor flags, e.g. -I<include dir> if you have
+              headers in a nonstandard directory <include dir>
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  CPP         C preprocessor
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1189,7 +1177,7 @@ test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
 LCD4Linux configure 0.9.12
-generated by GNU Autoconf 2.58
+generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
 This configure script is free software; the Free Software Foundation
@@ -1203,7 +1191,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by LCD4Linux $as_me 0.9.12, which was
-generated by GNU Autoconf 2.58.  Invocation command line was
+generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
 
@@ -4056,7 +4044,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4059 "configure"' > conftest.$ac_ext
+  echo '#line 4047 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -4926,7 +4914,7 @@ fi
 
 
 # Provide some information about the compiler.
-echo "$as_me:4929:" \
+echo "$as_me:4917:" \
      "checking for Fortran 77 compiler version" >&5
 ac_compiler=`set X $ac_compile; echo $2`
 { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -5958,11 +5946,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:5961: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:5949: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:5965: \$? = $ac_status" >&5
+   echo "$as_me:5953: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -6191,11 +6179,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6194: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6182: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6198: \$? = $ac_status" >&5
+   echo "$as_me:6186: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -6258,11 +6246,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6261: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6249: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:6265: \$? = $ac_status" >&5
+   echo "$as_me:6253: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -8433,7 +8421,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 8436 "configure"
+#line 8424 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -8531,7 +8519,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 8534 "configure"
+#line 8522 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10708,11 +10696,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:10711: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:10699: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:10715: \$? = $ac_status" >&5
+   echo "$as_me:10703: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -10775,11 +10763,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:10778: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:10766: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:10782: \$? = $ac_status" >&5
+   echo "$as_me:10770: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -12129,7 +12117,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 12132 "configure"
+#line 12120 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12227,7 +12215,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 12230 "configure"
+#line 12218 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -13054,11 +13042,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13057: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13045: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13061: \$? = $ac_status" >&5
+   echo "$as_me:13049: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -13121,11 +13109,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13124: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13112: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13128: \$? = $ac_status" >&5
+   echo "$as_me:13116: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15153,11 +15141,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15156: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15144: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15160: \$? = $ac_status" >&5
+   echo "$as_me:15148: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -15386,11 +15374,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15389: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15377: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15393: \$? = $ac_status" >&5
+   echo "$as_me:15381: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -15453,11 +15441,11 @@ else
    -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15456: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15444: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15460: \$? = $ac_status" >&5
+   echo "$as_me:15448: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -17628,7 +17616,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 17631 "configure"
+#line 17619 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -17726,7 +17714,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 17729 "configure"
+#line 17717 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -19265,7 +19253,7 @@ echo "${ECHO_T}Please note that some screen refreshs may fail" >&6
 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6
        ncurses_version=unknown
 cat > conftest.$ac_ext <<EOF
-#line 19268 "configure"
+#line 19256 "configure"
 #include "confdefs.h"
 #ifdef RENAMED_NCURSES
 #include <curses.h>
@@ -20978,8 +20966,8 @@ fi
 
 if test "$HD44780" = "yes"; then
    PARPORT="yes"
-#  DRIVERS="$DRIVERS HD44780.lo"
-   DRIVERS="$DRIVERS HD44780.o"
+#  DRIVERS="$DRIVERS HD44780.lo drv_HD44780.lo"
+   DRIVERS="$DRIVERS HD44780.o  drv_HD44780.o"
 
 cat >>confdefs.h <<\_ACEOF
 #define WITH_HD44780 1
@@ -21021,7 +21009,7 @@ fi
 
 if test "$MATRIXORBITAL" = "yes"; then
 #  DRIVERS="$DRIVERS MatrixOrbital.lo drv_MatrixOrbital.lo"
-   DRIVERS="$DRIVERS MatrixOrbital.o drv_MatrixOrbital.o"
+   DRIVERS="$DRIVERS MatrixOrbital.o  drv_MatrixOrbital.o"
 
 cat >>confdefs.h <<\_ACEOF
 #define WITH_MATRIXORBITAL 1
@@ -24334,7 +24322,7 @@ _ASBOX
 cat >&5 <<_CSEOF
 
 This file was extended by LCD4Linux $as_me 0.9.12, which was
-generated by GNU Autoconf 2.58.  Invocation command line was
+generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -24397,7 +24385,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
 LCD4Linux config.status 0.9.12
-configured by $0, generated by GNU Autoconf 2.58,
+configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
 Copyright (C) 2003 Free Software Foundation, Inc.
index fd1271d7ddb6285fd0483e6771e35a9acb386c18..3b6ee0a093ad37b5160137066fb229f4352d41da 100644 (file)
@@ -159,8 +159,8 @@ fi
 
 if test "$HD44780" = "yes"; then
    PARPORT="yes"
-#  DRIVERS="$DRIVERS HD44780.lo"
-   DRIVERS="$DRIVERS HD44780.o"
+#  DRIVERS="$DRIVERS HD44780.lo drv_HD44780.lo"
+   DRIVERS="$DRIVERS HD44780.o  drv_HD44780.o"
    AC_DEFINE(WITH_HD44780,1,[junk])
 fi
 
@@ -186,7 +186,7 @@ fi
 
 if test "$MATRIXORBITAL" = "yes"; then
 #  DRIVERS="$DRIVERS MatrixOrbital.lo drv_MatrixOrbital.lo"
-   DRIVERS="$DRIVERS MatrixOrbital.o drv_MatrixOrbital.o"
+   DRIVERS="$DRIVERS MatrixOrbital.o  drv_MatrixOrbital.o"
    AC_DEFINE(WITH_MATRIXORBITAL,1,[junk])
 fi
 
diff --git a/drv.c b/drv.c
index 334fc046537a30cf789bfd7ab3941d0c1179df50..f091dbfdab1bf9ae763aa4a6b624d1c7c433f3c6 100644 (file)
--- a/drv.c
+++ b/drv.c
@@ -1,4 +1,4 @@
-/* $Id: drv.c,v 1.2 2004/01/10 10:20:22 reinelt Exp $
+/* $Id: drv.c,v 1.3 2004/01/20 15:32:49 reinelt Exp $
  *
  * new framework for display drivers
  *
  *
  *
  * $Log: drv.c,v $
+ * Revision 1.3  2004/01/20 15:32:49  reinelt
+ * first version of Next Generation HD44780 (untested! but it compiles...)
+ * some cleanup in the other drivers
+ *
  * Revision 1.2  2004/01/10 10:20:22  reinelt
  * new MatrixOrbital changes
  *
@@ -112,9 +116,11 @@ DRIVER *Driver[] = {
      #ifdef WITH_CWLINUX
      &Cwlinux,
      #endif
-     #ifdef WITH_HD44780
-     &HD44780,
-     #endif
+  */
+#ifdef WITH_HD44780
+  &drv_HD44780,
+#endif
+  /* Fixme
      #ifdef WITH_M50530
      &M50530,
      #endif
diff --git a/drv.h b/drv.h
index 7f5ef854096c7c5d87cc6fc52d994a3d6d15308b..1cac26c6d5a89853cfc016d6366fc521482d90b6 100644 (file)
--- a/drv.h
+++ b/drv.h
@@ -1,4 +1,4 @@
-/* $Id: drv.h,v 1.2 2004/01/10 20:22:33 reinelt Exp $
+/* $Id: drv.h,v 1.3 2004/01/20 15:32:49 reinelt Exp $
  *
  * new framework for display drivers
  *
  *
  *
  * $Log: drv.h,v $
+ * Revision 1.3  2004/01/20 15:32:49  reinelt
+ * first version of Next Generation HD44780 (untested! but it compiles...)
+ * some cleanup in the other drivers
+ *
  * Revision 1.2  2004/01/10 20:22:33  reinelt
  * added new function 'cfg_list()' (not finished yet)
  * added layout.c (will replace processor.c someday)
@@ -58,14 +62,4 @@ int drv_list  (void);
 int drv_init  (char *section, char *driver);
 int drv_quit  (void);
 
-/*
-  int drv_query (int *rows, int *cols, int *xres, int *yres, int *bars, int *icons, int *gpos);
-  int drv_clear (int full);
-  int drv_put   (int row, int col, char *text);
-  int drv_bar   (int type, int row, int col, int max, int len1, int le2);
-  int drv_icon  (int num, int seq, int row, int col);
-  int drv_gpo   (int num, int val);
-  int drv_flush (void);
-*/
-
 #endif
diff --git a/drv_HD44780.c b/drv_HD44780.c
new file mode 100644 (file)
index 0000000..d841a7b
--- /dev/null
@@ -0,0 +1,483 @@
+/* $Id: drv_HD44780.c,v 1.1 2004/01/20 15:32:49 reinelt Exp $
+ *
+ * new style driver for HD44780-based displays
+ *
+ * Copyright 1999-2004 Michael Reinelt <reinelt@eunet.at>
+ * Copyright 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
+ *
+ * Modification for 4-Bit mode
+ * Copyright 2003 Martin Hejl (martin@hejl.de)
+ *
+ * Modification for 2nd controller support
+ * Copyright 2003 Jesse Brook Kovach <jkovach@wam.umd.edu>
+ *
+ * This file is part of LCD4Linux.
+ *
+ * LCD4Linux is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * LCD4Linux is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ *
+ * $Log: drv_HD44780.c,v $
+ * Revision 1.1  2004/01/20 15:32:49  reinelt
+ * first version of Next Generation HD44780 (untested! but it compiles...)
+ * some cleanup in the other drivers
+ *
+ */
+
+/* 
+ *
+ * exported fuctions:
+ *
+ * struct DRIVER drv_HD44780
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <unistd.h>
+#include <termios.h>
+#include <fcntl.h>
+
+#include "debug.h"
+#include "cfg.h"
+#include "udelay.h"
+#include "plugin.h"
+#include "widget.h"
+#include "widget_text.h"
+#include "widget_bar.h"
+#include "drv.h"
+#include "drv_generic_text.h"
+#include "drv_generic_parport.h"
+
+static char Name[]="HD44780";
+
+
+/* low level communication timings [nanoseconds]
+ * as these values differ from spec to spec,
+ * we use the worst-case values.
+ */
+
+#define T_CYCLE 1000 // Enable cycle time
+#define T_PW     450 // Enable pulse width
+#define T_AS      60 // Address setup time
+#define T_H       40 // Data hold time
+
+
+/* HD44780 execution timings [microseconds]
+ * as these values differ from spec to spec,
+ * we use the worst-case values.
+ */
+
+#define T_INIT1 4100 // first init sequence:  4.1 msec
+#define T_INIT2  100 // second init sequence: 100 usec
+#define T_EXEC    80 // normal execution time
+#define T_WRCG   120 // CG RAM Write
+#define T_CLEAR 1640 // Clear Display
+
+
+static int Icons;
+static int Bits=0;
+static int GPO=0;
+static int Controllers = 0;
+static int Controller  = 0;
+
+static unsigned char SIGNAL_RW;
+static unsigned char SIGNAL_RS;
+static unsigned char SIGNAL_ENABLE;
+static unsigned char SIGNAL_ENABLE2;
+static unsigned char SIGNAL_GPO;
+
+// Fixme
+static int GPOS;
+
+// ****************************************
+// ***  hardware dependant functions    ***
+// ****************************************
+
+static void drv_HD_nibble(unsigned char controller, unsigned char nibble)
+{
+  unsigned char enable;
+
+  // enable signal: 'controller' is a bitmask
+  // bit 0 .. send to controller #0
+  // bit 1 .. send to controller #1
+  // so we can send a byte to both controllers at the same time!
+  enable=0;
+  if (controller&0x01) enable|=SIGNAL_ENABLE;
+  if (controller&0x02) enable|=SIGNAL_ENABLE2;
+  
+  // clear ENABLE
+  // put data on DB1..DB4
+  // nibble already contains RS bit!
+  drv_generic_parport_data(nibble);
+
+  // Address set-up time
+  ndelay(T_AS);
+  
+  // rise ENABLE
+  drv_generic_parport_data(nibble | enable);
+  
+  // Enable pulse width
+  ndelay(T_PW);
+
+  // lower ENABLE
+  drv_generic_parport_data(nibble);
+}
+
+
+static void drv_HD_byte (unsigned char controller, unsigned char data, unsigned char RS)
+{
+  // send high nibble of the data
+  drv_HD_nibble (controller, ((data>>4)&0x0f)|RS);
+
+  // Make sure we honour T_CYCLE
+  ndelay(T_CYCLE-T_AS-T_PW);
+
+  // send low nibble of the data
+  drv_HD_nibble(controller, (data&0x0f)|RS);
+}
+
+
+static void drv_HD_command (unsigned char controller, unsigned char cmd, int delay)
+{
+  unsigned char enable;
+   
+  if (Bits==8) {
+    
+    // enable signal: 'controller' is a bitmask
+    // bit 0 .. send to controller #0
+    // bit 1 .. send to controller #1
+    // so we can send a byte to both controllers at the same time!
+    enable=0;
+    if (controller&0x01) enable|=SIGNAL_ENABLE;
+    if (controller&0x02) enable|=SIGNAL_ENABLE2;
+    
+    // put data on DB1..DB8
+    drv_generic_parport_data (cmd);
+  
+    // clear RW and RS
+    drv_generic_parport_control (SIGNAL_RW | SIGNAL_RS, 0);
+    
+    // Address set-up time
+    ndelay(T_AS);
+
+    // send command
+    drv_generic_parport_toggle (enable, 1, T_PW);
+    
+  } else {
+
+    drv_HD_byte (controller, cmd, 0);
+
+  }
+  
+  // wait for command completion
+  udelay(delay);
+
+}
+
+
+static void drv_HD_data (unsigned char controller, char *string, int len, int delay)
+{
+  unsigned char enable;
+
+  // sanity check
+  if (len<=0) return;
+
+  if (Bits==8) {
+
+    // enable signal: 'controller' is a bitmask
+    // bit 0 .. send to controller #0
+    // bit 1 .. send to controller #1
+    // so we can send a byte to both controllers at the same time!
+    enable=0;
+    if (controller&0x01) enable|=SIGNAL_ENABLE;
+    if (controller&0x02) enable|=SIGNAL_ENABLE2;
+    
+    // clear RW, set RS
+    drv_generic_parport_control (SIGNAL_RW | SIGNAL_RS, SIGNAL_RS);
+
+    // Address set-up time
+    ndelay(T_AS);
+    
+    while (len--) {
+      
+      // put data on DB1..DB8
+      drv_generic_parport_data (*(string++));
+      
+      // send command
+      drv_generic_parport_toggle (enable, 1, T_PW);
+      
+      // wait for command completion
+      udelay(delay);
+    }
+    
+  } else { // 4 bit mode
+    
+    while (len--) {
+
+      // send data with RS enabled
+      drv_HD_byte (controller, *(string++), SIGNAL_RS);
+      
+      // wait for command completion
+      udelay(delay);
+    }
+  }
+}
+
+
+static void drv_HD_goto (int row, int col)
+{
+  int pos;
+
+  // handle multiple displays/controllers
+  if (Controllers>1 && row>=DROWS/2) {
+    row -= DROWS/2;
+    Controller = 2;
+  } else {
+    Controller = 1;
+  }
+   
+  // 16x1 Displays are organized as 8x2 :-(
+  if (DCOLS==16 && DROWS==1 && col>7) {
+    row++;
+    col-=8;
+  }
+  
+  // 16x4 Displays use a slightly different layout
+  if (DCOLS==16 && DROWS==4) {
+    pos=(row%2)*64+(row/2)*16+col;
+  } else {  
+    pos=(row%2)*64+(row/2)*20+col;
+  }
+  
+  drv_HD_command (Controller, (0x80|pos), T_EXEC);
+}
+
+
+static int drv_HD_start (char *section)
+{
+  int rows=-1, cols=-1, gpos=-1;
+  char *s;
+  
+  s=cfg_get(section, "Size", NULL);
+  if (s==NULL || *s=='\0') {
+    error ("%s: no '%s.Size' entry from %s", Name, section, cfg_source());
+    return -1;
+  }
+  if (sscanf(s,"%dx%d",&cols,&rows)!=2 || rows<1 || cols<1) {
+    error ("%s: bad size '%s'", Name, s);
+    return -1;
+  }
+  
+  if (cfg_number(section, "GPOs", 0, 0, 8, &gpos)<0) return -1;
+  info ("%s: controlling %d GPO's", Name, gpos);
+
+  if (cfg_number(section, "Controllers", 1, 1, 2, &Controllers)<0) return -1;
+  info ("%s: using display with %d controllers", Name, Controllers);
+  
+  // current controller
+  Controller=1;
+  
+  DROWS = rows;
+  DCOLS = cols;
+  GPOS  = gpos;
+  
+  if (cfg_number(section, "Bits", 8, 4, 8, &Bits)<0) return -1;
+  if (Bits!=4 && Bits!=8) {
+    error ("%s: bad %s.Bits '%s' from %s, should be '4' or '8'", Name, section, s, cfg_source());
+    return -1;
+  }    
+  info ("%s: using %d bit mode", Name, Bits);
+  
+  if (drv_generic_parport_open(section, Name) != 0) {
+    error ("%s: could not initialize parallel port!", Name);
+    return -1;
+  }
+
+  if (Bits==8) {
+    if ((SIGNAL_RS      = drv_generic_parport_wire_ctrl ("RS",      "AUTOFD"))==0xff) return -1;
+    if ((SIGNAL_RW      = drv_generic_parport_wire_ctrl ("RW",      "GND"   ))==0xff) return -1;
+    if ((SIGNAL_ENABLE  = drv_generic_parport_wire_ctrl ("ENABLE",  "STROBE"))==0xff) return -1;
+    if ((SIGNAL_ENABLE2 = drv_generic_parport_wire_ctrl ("ENABLE2", "GND"   ))==0xff) return -1;
+    if ((SIGNAL_GPO     = drv_generic_parport_wire_ctrl ("GPO",     "GND"   ))==0xff) return -1;
+  } else {
+    if ((SIGNAL_RS      = drv_generic_parport_wire_data ("RS",      "DB4"))==0xff) return -1;
+    if ((SIGNAL_RW      = drv_generic_parport_wire_data ("RW",      "DB5"))==0xff) return -1;
+    if ((SIGNAL_ENABLE  = drv_generic_parport_wire_data ("ENABLE",  "DB6"))==0xff) return -1;
+    if ((SIGNAL_ENABLE2 = drv_generic_parport_wire_data ("ENABLE2", "GND"))==0xff) return -1;
+    if ((SIGNAL_GPO     = drv_generic_parport_wire_data ("GPO",     "GND"))==0xff) return -1;
+  }
+  
+  // clear all signals
+  if (Bits==8) {
+    drv_generic_parport_control (SIGNAL_RS|SIGNAL_RW|SIGNAL_ENABLE|SIGNAL_ENABLE2|SIGNAL_GPO, 0);
+  } else {
+    drv_generic_parport_data (0);
+  }
+  
+  // set direction: write
+  drv_generic_parport_direction (0);
+  
+  // initialize *both* displays
+  if (Bits==8) {
+    drv_HD_command (0x03, 0x30, T_INIT1); // 8 Bit mode, wait 4.1 ms
+    drv_HD_command (0x03, 0x30, T_INIT2); // 8 Bit mode, wait 100 us
+    drv_HD_command (0x03, 0x38, T_EXEC);  // 8 Bit mode, 1/16 duty cycle, 5x8 font
+  } else {
+    drv_HD_nibble(0x03, 0x03); udelay(T_INIT1); // 4 Bit mode, wait 4.1 ms
+    drv_HD_nibble(0x03, 0x03); udelay(T_INIT2); // 4 Bit mode, wait 100 us
+    drv_HD_nibble(0x03, 0x03); udelay(T_INIT1); // 4 Bit mode, wait 4.1 ms
+    drv_HD_nibble(0x03, 0x02); udelay(T_INIT2); // 4 Bit mode, wait 100 us
+    drv_HD_command (0x03, 0x28, T_EXEC);           // 4 Bit mode, 1/16 duty cycle, 5x8 font
+  }
+  
+  drv_HD_command (0x03, 0x08, T_EXEC);  // Display off, cursor off, blink off
+  drv_HD_command (0x03, 0x0c, T_CLEAR); // Display on, cursor off, blink off, wait 1.64 ms
+  drv_HD_command (0x03, 0x06, T_EXEC);  // curser moves to right, no shift
+  
+  return 0;
+}
+
+
+static void drv_HD_write (char *string, int len)
+{
+  drv_HD_data (Controller, string, len, T_EXEC);
+}
+
+
+static void drv_HD_define_char (int ascii, char *buffer)
+{
+  // define chars on *both* controllers!
+  drv_HD_command (0x03, 0x40|8*ascii, T_EXEC);
+  drv_HD_data (0x03, buffer, 8, T_WRCG);
+}
+
+
+// Fixme
+#if 0
+static void drv_HD_setGPO (int bits)
+{
+  if (Lcd.gpos>0) {
+    
+    // put data on DB1..DB8
+    drv_generic_parport_data (bits);
+    
+    // 74HCT573 set-up time
+    ndelay(20);
+    
+    // send data
+    // 74HCT573 enable pulse width = 24ns
+    drv_generic_parport_toggle (SIGNAL_GPO, 1, 230);
+  }
+}
+#endif
+
+// ****************************************
+// ***            plugins               ***
+// ****************************************
+
+
+// ****************************************
+// ***        widget callbacks          ***
+// ****************************************
+
+
+int drv_HD_draw_text (WIDGET *W)
+{
+  return drv_generic_text_draw_text(W, 2, drv_HD_goto, drv_HD_write);
+}
+
+
+int drv_HD_draw_bar (WIDGET *W)
+{
+  return drv_generic_text_draw_bar(W, 2, drv_HD_define_char, drv_HD_goto, drv_HD_write);
+}
+
+
+// ****************************************
+// ***        exported functions        ***
+// ****************************************
+
+
+// list models
+int drv_HD_list (void)
+{
+  printf ("any");
+  return 0;
+}
+
+
+// initialize driver & display
+int drv_HD_init (char *section)
+{
+  WIDGET_CLASS wc;
+  int ret;  
+  
+  XRES=5;
+  YRES=8;
+  CHARS=8;
+  
+  // start display
+  if ((ret=drv_HD_start (section))!=0)
+    return ret;
+  
+  // initialize generic text driver
+  if ((ret=drv_generic_text_init(Name))!=0)
+    return ret;
+
+  // initialize generic bar driver
+  if ((ret=drv_generic_text_bar_init())!=0)
+    return ret;
+  
+  // add fixed chars to the bar driver
+  drv_generic_text_bar_add_segment (  0,  0,255, 32); // ASCII  32 = blank
+  drv_generic_text_bar_add_segment (255,255,255,255); // ASCII 255 = block
+  
+  // register text widget
+  wc=Widget_Text;
+  wc.draw=drv_HD_draw_text;
+  widget_register(&wc);
+  
+  // register bar widget
+  wc=Widget_Bar;
+  wc.draw=drv_HD_draw_bar;
+  widget_register(&wc);
+  
+  // register plugins
+  // Fixme: plugins for HD44780?
+  
+  return 0;
+}
+
+
+// close driver & display
+int drv_HD_quit (void) {
+
+  info("%s: shutting down.", Name);
+  drv_generic_parport_close();
+  drv_generic_text_quit();
+  
+  return (0);
+}
+
+
+DRIVER drv_HD44780 = {
+  name: Name,
+  list: drv_HD_list,
+  init: drv_HD_init,
+  quit: drv_HD_quit, 
+};
+
index 2a8be1f2c1e17c6fb51ce83e99206d39c5b2100e..5c916e1cb4679d73b96fb25aec9b9f503a912fd1 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_MatrixOrbital.c,v 1.13 2004/01/20 14:25:12 reinelt Exp $
+/* $Id: drv_MatrixOrbital.c,v 1.14 2004/01/20 15:32:49 reinelt Exp $
  *
  * new style driver for Matrix Orbital serial display modules
  *
  *
  *
  * $Log: drv_MatrixOrbital.c,v $
+ * Revision 1.14  2004/01/20 15:32:49  reinelt
+ * first version of Next Generation HD44780 (untested! but it compiles...)
+ * some cleanup in the other drivers
+ *
  * Revision 1.13  2004/01/20 14:25:12  reinelt
  * some reorganization
  * moved drv_generic to drv_generic_serial
 #include "widget_text.h"
 #include "widget_bar.h"
 #include "drv.h"
-#include "drv_generic_serial.h"
 #include "drv_generic_text.h"
+#include "drv_generic_serial.h"
 
 
 static char Name[]="MatrixOrbital";
index 416e79cb7b66ca8c9e1eb3b35dc721b12330d58f..68d537f80c652f6ad88cdb275b7cc080aa9cf0ef 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_generic_parport.c,v 1.1 2004/01/20 14:35:38 reinelt Exp $
+/* $Id: drv_generic_parport.c,v 1.2 2004/01/20 15:32:49 reinelt Exp $
  *
  * generic driver helper for serial and parport access
  *
  *
  *
  * $Log: drv_generic_parport.c,v $
+ * Revision 1.2  2004/01/20 15:32:49  reinelt
+ * first version of Next Generation HD44780 (untested! but it compiles...)
+ * some cleanup in the other drivers
+ *
  * Revision 1.1  2004/01/20 14:35:38  reinelt
  * drv_generic_parport added, code from parport.c
  *
@@ -83,6 +87,8 @@
 #include "drv_generic_parport.h"
 
 
+static char *Driver="";
+static char *Section="";
 static unsigned short Port=0;
 static char *PPdev=NULL;
 
@@ -94,19 +100,18 @@ static int PPfd=-1;
 #endif
 
 
-int drv_generic_parport_open (void)
+int drv_generic_parport_open (char *section, char *driver)
 {
   char *s, *e;
   
-#ifdef USE_OLD_UDELAY
-  if (cfg_number(NULL, "Delay", 0, 1, 1000000000, &loops_per_usec)<0) return -1;
-#else
+  Section=section;
+  Driver=driver;
+  
   udelay_init();
-#endif
   
-  s=cfg_get (NULL, "Port", NULL);
+  s=cfg_get (Section, "Port", NULL);
   if (s==NULL || *s=='\0') {
-    error ("parport: no 'Port' entry in %s", cfg_source());
+    error ("%s: no '%s.Port' entry from %s", Driver, Section, cfg_source());
     return -1;
   }
   PPdev=NULL;
@@ -115,7 +120,7 @@ int drv_generic_parport_open (void)
     Port=0;
     PPdev=s;
 #else
-    error ("parport: bad Port '%s' in %s", s, cfg_source());
+    error ("%s: bad %s.Port '%s' from %s", Driver, Section, s, cfg_source());
     return -1;
 #endif
   }
@@ -127,7 +132,7 @@ int drv_generic_parport_open (void)
     debug ("using ppdev %s", PPdev);
     PPfd=open(PPdev, O_RDWR);
     if (PPfd==-1) {
-      error ("parport: open(%s) failed: %s", PPdev, strerror(errno));
+      error ("%s: open(%s) failed: %s", Driver, PPdev, strerror(errno));
       return -1;
     }
     
@@ -141,7 +146,7 @@ int drv_generic_parport_open (void)
 #endif
     
     if (ioctl(PPfd, PPCLAIM)) {
-      error ("parport: ioctl(%s, PPCLAIM) failed: %d %s", PPdev, errno, strerror(errno));
+      error ("%s: ioctl(%s, PPCLAIM) failed: %d %s", Driver, PPdev, errno, strerror(errno));
       return -1;
     }
   } else
@@ -152,12 +157,12 @@ int drv_generic_parport_open (void)
       debug ("using raw port 0x%x", Port);
       if ((Port+3)<=0x3ff) {
        if (ioperm(Port, 3, 1)!=0) {
-         error ("parport: ioperm(0x%x) failed: %s", Port, strerror(errno));
+         error ("%s: ioperm(0x%x) failed: %s", Driver, Port, strerror(errno));
          return -1;
        }
       } else {
        if (iopl(3)!=0) {
-         error ("parport: iopl(1) failed: %s", strerror(errno));
+         error ("%s: iopl(1) failed: %s", Driver, strerror(errno));
          return -1;
        }
       }
@@ -172,10 +177,10 @@ int drv_generic_parport_close (void)
   if (PPdev) {
     debug ("closing ppdev %s", PPdev);
     if (ioctl(PPfd, PPRELEASE)) {
-      error ("parport: ioctl(%s, PPRELEASE) failed: %s", PPdev, strerror(errno));
+      error ("%s: ioctl(%s, PPRELEASE) failed: %s", Driver, PPdev, strerror(errno));
     }
     if (close(PPfd)==-1) {
-      error ("parport: close(%s) failed: %s", PPdev, strerror(errno));
+      error ("%s: close(%s) failed: %s", Driver, PPdev, strerror(errno));
       return -1;
     }
   } else 
@@ -184,12 +189,12 @@ int drv_generic_parport_close (void)
       debug ("closing raw port 0x%x", Port);
       if ((Port+3)<=0x3ff) {
        if (ioperm(Port, 3, 0)!=0) {
-         error ("parport: ioperm(0x%x) failed: %s", Port, strerror(errno));
+         error ("%s: ioperm(0x%x) failed: %s", Driver, Port, strerror(errno));
          return -1;
        } 
       } else {
        if (iopl(0)!=0) {
-         error ("parport: iopl(0) failed: %s", strerror(errno));
+         error ("%s: iopl(0) failed: %s", Driver, strerror(errno));
          return -1;
        }
       }
@@ -205,7 +210,7 @@ unsigned char drv_generic_parport_wire_ctrl (char *name, unsigned char *deflt)
   char *s;
   
   snprintf (wire, sizeof(wire), "Wire.%s", name);
-  s=cfg_get (NULL, wire, deflt);
+  s=cfg_get (Section, wire, deflt);
   if (strcasecmp(s,"STROBE")==0) {
     w=PARPORT_CONTROL_STROBE;
   } else if(strcasecmp(s,"AUTOFD")==0) {
@@ -217,25 +222,25 @@ unsigned char drv_generic_parport_wire_ctrl (char *name, unsigned char *deflt)
   } else if(strcasecmp(s,"GND")==0) {
     w=0;
   } else {
-    error ("parport: unknown signal <%s> for wire <%s>", s, name);
-    error ("         should be STROBE, AUTOFD, INIT, SELECT or GND");
+    error ("%s: unknown signal <%s> for wire <%s>", Driver, s, name);
+    error ("%s: should be STROBE, AUTOFD, INIT, SELECT or GND", Driver);
     return 0xff;
   }
 
   if (w&PARPORT_CONTROL_STROBE) {
-    info ("wiring: [DISPLAY:%s]<==>[PARPORT:STROBE]", name);
+    info ("%s: wiring: [DISPLAY:%s]<==>[PARPORT:STROBE]", Driver, name);
   }
   if (w&PARPORT_CONTROL_AUTOFD) {
-    info ("wiring: [DISPLAY:%s]<==>[PARPORT:AUTOFD]", name);
+    info ("%s: wiring: [DISPLAY:%s]<==>[PARPORT:AUTOFD]", Driver, name);
   }
   if (w&PARPORT_CONTROL_INIT) {
-    info ("wiring: [DISPLAY:%s]<==>[PARPORT:INIT]", name);
+    info ("%s: wiring: [DISPLAY:%s]<==>[PARPORT:INIT]", Driver, name);
   }
   if (w&PARPORT_CONTROL_SELECT) {
-    info ("wiring: [DISPLAY:%s]<==>[PARPORT:SELECT]", name);
+    info ("%s: wiring: [DISPLAY:%s]<==>[PARPORT:SELECT]", Driver, name);
   }
   if (w==0) {
-    info ("wiring: [DISPLAY:%s]<==>[PARPORT:GND]", name);
+    info ("%s: wiring: [DISPLAY:%s]<==>[PARPORT:GND]", Driver, name);
   }
   
   return w;
@@ -249,21 +254,21 @@ unsigned char drv_generic_parport_wire_data (char *name, unsigned char *deflt)
   char *s;
   
   snprintf (wire, sizeof(wire), "Wire.%s", name);
-  s=cfg_get (NULL, wire, deflt);
+  s=cfg_get (Section, wire, deflt);
   if(strlen(s)==3 && strncasecmp(s,"DB",2)==0 && s[2]>='0' && s[2]<='7') {
     w=s[2]-'0';
   } else if(strcasecmp(s,"GND")==0) {
     w=0;
   } else {
-    error ("parport: unknown signal <%s> for wire <%s>", s, name);
-    error ("         should be DB0..7 or GND");
+    error ("%s: unknown signal <%s> for wire <%s>", Driver, s, name);
+    error ("%s: should be DB0..7 or GND", Driver);
     return 0xff;
   }
   
   if (w==0) {
-    info ("wiring: [DISPLAY:%s]<==>[PARPORT:GND]", name);
+    info ("%s: wiring: [DISPLAY:%s]<==>[PARPORT:GND]", Driver, name);
   } else {
-    info ("wiring: [DISPLAY:%s]<==>[PARPORT:DB%d]", name, w);
+    info ("%s: wiring: [DISPLAY:%s]<==>[PARPORT:DB%d]", Driver, name, w);
   }
   
   w=1<<w;
index 6decaa75dabc7dcaedc226cd87e8e374829052ee..5e35ca69a9eaf8518ce424f146ead6037f508093 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: drv_generic_parport.h,v 1.1 2004/01/20 14:35:38 reinelt Exp $
+/* $Id: drv_generic_parport.h,v 1.2 2004/01/20 15:32:49 reinelt Exp $
  *
  * generic driver helper for parallel port displays
  *
  *
  *
  * $Log: drv_generic_parport.h,v $
+ * Revision 1.2  2004/01/20 15:32:49  reinelt
+ * first version of Next Generation HD44780 (untested! but it compiles...)
+ * some cleanup in the other drivers
+ *
  * Revision 1.1  2004/01/20 14:35:38  reinelt
  * drv_generic_parport added, code from parport.c
  *
@@ -73,7 +77,7 @@
 #ifndef _DRV_GENERIC_PARPORT_H_
 #define _DRV_GENERIC_PARPORT_H_
 
-int           drv_generic_parport_open       (void);
+int           drv_generic_parport_open       (char *section, char *driver);
 int           drv_generic_parport_close      (void);
 unsigned char drv_generic_parport_wire_ctrl  (char *name, unsigned char *deflt);
 unsigned char drv_generic_parport_wire_data  (char *name, unsigned char *deflt);
index 029e94caa5e86bbb18a05bbcfdc2b842432f227a..37beb543d7dc9edfbd29feaadcda4b8bc9704d97 100644 (file)
@@ -2,11 +2,27 @@ Display LK204 {
     Driver 'MatrixOrbital'
     Model 'LK204-24-USB'
     Port '/dev/usb/tts/0'
-#    Port '/dev/tts/0'
+#   Port '/dev/tts/0'
     Speed 19200
     Contrast 256/2
 }
 
+
+Display myHD44780 {
+    Driver 'HD44780'
+    Port '/dev/parports/0'     
+#   Port '0x378'
+    Bits '8'
+    Size '20x4'
+    Wire {
+       RW     'GND'
+       RS     'AUTOFD'
+       ENABLE 'STROBE'
+       GPO    'INIT'
+    }
+}
+
+
 Widget OS {
     class 'Text'
     expression '*** '.uname('sysname').' '.uname('release').' ***'
@@ -95,14 +111,9 @@ Layout Default {
 }
 
 
-Display 'LK204'
+Display 'myHD44780'
 Layout  'Default'
 
-#Row1 "*** %o %v ***"
-#Row2 "%p CPU  %r MB RAM"
-#Row3 "Busy %cb%% $r10cs+cb"
-#Row4 "Load%l1%L$r10l1"
-
 Variables {
    tick 500
    tack 100