GPIO 'C' Demonstration Software
Contents
-
GPIO 'C' Demonstration Software
- GNU Autotools configuration files etc.
-
Self-generated, brief Program Help
- demo.c
- dual_lcd_i2c4-8bit_demo.c
- glcd_spi8b_demo.c
- glcd_spi8bA_demo.c
- lcd_demo.c
- lcd_fi2c_demo.c
- lcd_gpio4b_demo.c
- lcd_hi2c_demo.c
- lcd_mi2c_demo.c
- lcd_ibo_i2c_demo.c
- lcd_spi4b_demo.c
- lcd_spi4bV2_demo.c
- lcd_spi8b_demo.c
- spi_glcd_cacc_demo.c
- spi_glcd_demo.c
- spi_ledx_demo.c
- spi_glcdV2_demo.c
- oled_i2c_demo.c
- glcd_font_tool.c
- spi_led_4dq_demo
- spi_led_4drrg_demo
- i2c_rgb_led_demo.c
- i2c_ledx_demo.c
- i2c_mxledx_demo.c
- i2c_clkled_demo.c
- spi_glcdHP3_demo.c
- spi_glcdV2N_demo.c
- spi_led_2x4d_demo.c
- spi_glcdV2A_demo.c
- spi_glcdG_demo.c
- Snippits from some of the "Convenience Library" Header Files
- Dump of the initial state of some 'C' structures
- Download a "Snapshot" tarball
GNU Autotools configuration files etc.
pi@raspiP3BStretch16Gb:~/i2c_spi_chips-0.0 $ cat ./configure.ac
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([i2c_spi_chips], [0.0], [trevor.gowen@blueyonder.co.uk])
AC_CONFIG_SRCDIR([common/rcs_scm.h])
# Platform & System ...
AC_CANONICAL_BUILD
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([-Wall foreign])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
AC_PROG_RANLIB
AC_CHECK_LIB([wiringPi], [wiringPiI2CSetup])
# Checks for header files.
AC_CHECK_HEADERS([stdlib.h string.h strings.h unistd.h])
# Check for wiringPi.h ...
have_wiringpi_h=no
AC_CHECK_HEADERS([wiringPi.h], [have_wiringpi_h=yes])
if test "x${have_wiringpi_h}" = xno; then
AC_MSG_WARN([
**************************************
Unable to find wiringPi header ...
Some program features may be disabled!
**************************************])
fi
if test "x${have_wiringpi_h}" = xyes; then
AC_MSG_NOTICE([
************************************
wiringPi header available ...
(HAVE_WIRINGPI_H defined in config.h)
Full functionality available!
************************************])
fi
# Check for wiringPiI2C.h ...
have_wiringpii2c_h=no
AC_CHECK_HEADERS([wiringPiI2C.h], [have_wiringpii2c_h=yes])
if test "x${have_wiringpii2c_h}" = xno; then
AC_MSG_WARN([
**************************************
Unable to find wiringPiI2C header ...
Some program features may be disabled!
**************************************])
fi
if test "x${have_wiringpii2c_h}" = xyes; then
AC_MSG_NOTICE([
************************************
wiringPiI2C header available ...
(HAVE_WIRINGPII2C_H defined in config.h)
Full functionality available!
************************************])
fi
# Check for wiringPiSPI.h ...
have_wiringpispi_h=no
AC_CHECK_HEADERS([wiringPiSPI.h], [have_wiringpispi_h=yes])
if test "x${have_wiringpispi_h}" = xno; then
AC_MSG_WARN([
**************************************
Unable to find wiringPiSPI header ...
Some program features may be disabled!
**************************************])
fi
if test "x${have_wiringpispi_h}" = xyes; then
AC_MSG_NOTICE([
************************************
wiringPiSPI header available ...
(HAVE_WIRINGPISPI_H defined in config.h)
Full functionality available!
************************************])
fi
# Check for pigpio.h ...
have_pigpio_h=no
AC_CHECK_HEADERS([pigpio.h], [have_pigpio_h=yes])
if test "x${have_pigpio_h}" = xno; then
AC_MSG_WARN([
**************************************
Unable to find pigpio header ...
Some program features may be disabled!
**************************************])
fi
if test "x${have_pigpio_h}" = xyes; then
AC_SEARCH_LIBS([gpioInitialise], [pigpio], , , [-lpthread -lrt])
# Libraries needed to use pigpio etc. ...
AC_SEARCH_LIBS([pthread_create], [pthread])
AC_SEARCH_LIBS([clock_gettime], [rt])
AC_MSG_NOTICE([
************************************
pigpio header available ...
(HAVE_PIGPIO_H defined in config.h)
Full functionality available!
************************************])
fi
# Check for pigpiod_if2.h ...
have_pigpiod_if2_h=no
AC_CHECK_HEADERS([pigpiod_if2.h], [have_pigpiod_if2_h=yes])
if test "x${have_pigpiod_if2_h}" = xno; then
AC_MSG_WARN([
**************************************
Unable to find pigpiod_if2 header ...
Some program features may be disabled!
**************************************])
fi
if test "x${have_pigpiod_if2_h}" = xyes; then
AC_SEARCH_LIBS([pigpio_start], [pigpiod_if2], , , [-lpthread -lrt])
# Libraries needed to use pigpiod_if2 etc. ...
AC_SEARCH_LIBS([pthread_create], [pthread])
AC_SEARCH_LIBS([clock_gettime], [rt])
AC_MSG_NOTICE([
************************************
pigpiod_if2 header available ...
(HAVE_PIGPIOD_IF2_H defined in config.h)
Full functionality available!
************************************])
fi
## Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_SSIZE_T
# Checks for library functions.
AC_CHECK_FUNCS([gethostname strcasecmp strtoul])
AC_CONFIG_FILES([Makefile
common/Makefile
src/Makefile])
AC_OUTPUTpi@raspiP3BStretch16Gb:~/i2c_spi_chips-0.0 $ cat ./Makefile.am ## Process this file with automake to produce Makefile.in SUBDIRS = common src EXTRA_DIST = README PCD8544_RPi_BBSPI xbm_data
pi@raspiP3BStretch16Gb:~/i2c_spi_chips-0.0/common $ cat ./Makefile.am ## Process this file with automake to produce Makefile.in noinst_LIBRARIES = libparsel.a libi2c_chips.a libi2c_wraps.a libled_disptools.a \ liblcd_disptools.a libspi_chips.a libspi_wraps.a libspi_PCD8544.a libglcd_xbmtools.a \ libpigpio_wraps.a libpigpiod_wraps.a libglcd_fonttools.a libparsel_a_SOURCES = parsel.h parsel.c libi2c_chips_a_SOURCES = i2c_chips.h i2c_chips.c libi2c_wraps_a_SOURCES = i2c_wraps.h i2c_wraps.c libled_disptools_a_SOURCES = led_disptools.h led_disptools.c liblcd_disptools_a_SOURCES = i2c_chips.h i2c_chips.c spi_chips.h spi_chips.c \ lcd_disptools.h lcd_disptools.c libspi_chips_a_SOURCES = spi_chips.h spi_chips.c libspi_wraps_a_SOURCES = spi_wraps.h spi_wraps.c libspi_PCD8544_a_SOURCES = i2c_wraps.h i2c_wraps.c spi_chips.h spi_chips.c \ spi_wraps.h spi_wraps.c PCD8544_font.h spi_PCD8544.h spi_PCD8544.c glcd_xbmtools.h libglcd_xbmtools_a_SOURCES = parsel.h parsel.c glcd_xbmtools.h glcd_xbmtools.c libpigpio_wraps_a_SOURCES = pigpio_wraps.h pigpio_wraps.c libpigpiod_wraps_a_SOURCES = pigpiod_wraps.h pigpiod_wraps.c libglcd_fonttools_a_SOURCES = parsel.h parsel.c glcd_fonttools.h glcd_fonttools.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0/src $ cat Makefile.am ## Process this file with automake to produce Makefile.in bin_PROGRAMS = demo dual_lcd_i2c4-8bit_demo lcd_demo lcd_fi2c_demo lcd_hi2c_demo \ lcd_mi2c_demo lcd_ibo_i2c_demo lcd_gpio4b_demo lcd_spi4b_demo lcd_spi4bV2_demo \ lcd_spi8b_demo lcd_structures_list glcd_spi8b_demo spi_ledx_demo spi_glcd_demo \ spi_glcdV2_demo spi_glcd_cacc_demo oled_i2c_demo glcd_font_tool spi_led_4dq_demo \ spi_led_4drrg_demo i2c_rgb_led_demo glcd_serial_demo oled_spi_demo i2c_ledx_demo \ i2c_mxledx_demo i2c_clkled_demo lcd_gpio4bV2_demo spi_glcdHP3_demo spi_glcdV2N_demo \ glcd_spi8bA_demo spi_led_2x4d_demo oled_spiV2_demo spi_glcdV2A_demo spi_glcdG_demo #bbx_spi_glcd_demo demo_SOURCES = ../common/rcs_scm.h demo.c demo_CPPFLAGS = -I$(top_srcdir)/common demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/libled_disptools.a ../common/liblcd_disptools.a dual_lcd_i2c4_8bit_demo_SOURCES = ../common/rcs_scm.h dual_lcd_i2c4-8bit_demo.c dual_lcd_i2c4_8bit_demo_CPPFLAGS = -I$(top_srcdir)/common dual_lcd_i2c4_8bit_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/liblcd_disptools.a lcd_demo_SOURCES = ../common/rcs_scm.h lcd_demo.c lcd_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/liblcd_disptools.a lcd_fi2c_demo_SOURCES = ../common/rcs_scm.h lcd_fi2c_demo.c lcd_fi2c_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_fi2c_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/liblcd_disptools.a lcd_hi2c_demo_SOURCES = ../common/rcs_scm.h lcd_hi2c_demo.c lcd_hi2c_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_hi2c_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/liblcd_disptools.a ../common/libpigpio_wraps.a lcd_mi2c_demo_SOURCES = ../common/rcs_scm.h lcd_mi2c_demo.c lcd_mi2c_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_mi2c_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/liblcd_disptools.a lcd_ibo_i2c_demo_SOURCES = ../common/rcs_scm.h lcd_ibo_i2c_demo.c lcd_ibo_i2c_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_ibo_i2c_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/liblcd_disptools.a lcd_gpio4b_demo_SOURCES = ../common/rcs_scm.h lcd_gpio4b_demo.c lcd_gpio4b_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_gpio4b_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libi2c_wraps.a lcd_spi4b_demo_SOURCES = ../common/rcs_scm.h lcd_spi4b_demo.c lcd_spi4b_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_spi4b_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libi2c_wraps.a ../common/libspi_wraps.a lcd_spi4bV2_demo_SOURCES = ../common/rcs_scm.h lcd_spi4bV2_demo.c lcd_spi4bV2_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_spi4bV2_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libi2c_wraps.a ../common/libspi_wraps.a lcd_spi8b_demo_SOURCES = ../common/rcs_scm.h lcd_spi8b_demo.c lcd_spi8b_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_spi8b_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libi2c_wraps.a ../common/libspi_wraps.a lcd_structures_list_SOURCES = ../common/rcs_scm.h lcd_structures_list.c lcd_structures_list_CPPFLAGS = -I$(top_srcdir)/common lcd_structures_list_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libi2c_wraps.a ../common/libspi_wraps.a glcd_spi8b_demo_SOURCES = ../common/rcs_scm.h glcd_spi8b_demo.c glcd_spi8b_demo_CPPFLAGS = -I$(top_srcdir)/common glcd_spi8b_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libglcd_xbmtools.a ../common/libi2c_wraps.a ../common/libspi_wraps.a spi_ledx_demo_SOURCES = ../common/rcs_scm.h ../common/font.h \ ../common/PCD8544_font.h spi_ledx_demo.c spi_ledx_demo_CPPFLAGS = -I$(top_srcdir)/common spi_ledx_demo_LDADD = ../common/libparsel.a ../common/libspi_chips.a \ ../common/libspi_wraps.a spi_glcd_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h spi_glcd_demo.c spi_glcd_demo_CPPFLAGS = -I$(top_srcdir)/common spi_glcd_demo_LDADD = ../common/libparsel.a ../common/libglcd_xbmtools.a \ ../common/libspi_chips.a ../common/libspi_wraps.a ../common/libi2c_wraps.a \ ../common/libspi_PCD8544.a spi_glcdV2_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h spi_glcdV2_demo.c spi_glcdV2_demo_CPPFLAGS = -I$(top_srcdir)/common spi_glcdV2_demo_LDADD = ../common/libparsel.a ../common/libglcd_xbmtools.a \ ../common/libspi_chips.a ../common/libspi_wraps.a ../common/libi2c_wraps.a \ ../common/libspi_PCD8544.a spi_glcd_cacc_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h \ spi_glcd_cacc_demo.c spi_glcd_cacc_demo_CPPFLAGS = -I$(top_srcdir)/common spi_glcd_cacc_demo_LDADD = ../common/libparsel.a ../common/libglcd_xbmtools.a \ ../common/libspi_chips.a ../common/libspi_wraps.a ../common/libi2c_wraps.a \ ../common/libspi_PCD8544.a oled_i2c_demo_SOURCES = ../common/rcs_scm.h ../common/oled128.h ../common/oled256.h \ ../common/jace128.h oled_i2c_demo.c oled_i2c_demo_CPPFLAGS = -I$(top_srcdir)/common oled_i2c_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/libpigpio_wraps.a glcd_font_tool_SOURCES = ../common/rcs_scm.h ../common/font.h glcd_font_tool.c glcd_font_tool_CPPFLAGS = -I$(top_srcdir)/common glcd_font_tool_LDADD = ../common/libparsel.a ../common/libglcd_fonttools.a spi_led_4dq_demo_SOURCES = ../common/rcs_scm.h spi_led_4dq_demo.c spi_led_4dq_demo_CPPFLAGS = -I$(top_srcdir)/common spi_led_4dq_demo_LDADD = ../common/libparsel.a ../common/libspi_chips.a \ ../common/libspi_wraps.a ../common/libled_disptools.a spi_led_4drrg_demo_SOURCES = ../common/rcs_scm.h spi_led_4drrg_demo.c spi_led_4drrg_demo_CPPFLAGS = -I$(top_srcdir)/common spi_led_4drrg_demo_LDADD = ../common/libparsel.a ../common/libspi_chips.a \ ../common/libspi_wraps.a ../common/libled_disptools.a i2c_rgb_led_demo_SOURCES = ../common/rcs_scm.h i2c_rgb_led_demo.c i2c_rgb_led_demo_CPPFLAGS = -I$(top_srcdir)/common i2c_rgb_led_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a glcd_serial_demo_SOURCES = ../common/rcs_scm.h glcd_serial_demo.c glcd_serial_demo_CPPFLAGS = -I$(top_srcdir)/common glcd_serial_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libglcd_xbmtools.a ../common/libi2c_wraps.a ../common/libspi_wraps.a oled_spi_demo_SOURCES = ../common/rcs_scm.h ../common/oled128.h ../common/oled256.h \ ../common/jace128.h oled_spi_demo.c oled_spi_demo_CPPFLAGS = -I$(top_srcdir)/common oled_spi_demo_LDADD = ../common/libparsel.a ../common/libspi_chips.a \ ../common/libspi_wraps.a ../common/libi2c_wraps.a i2c_ledx_demo_SOURCES = ../common/rcs_scm.h ../common/font.h \ ../common/jace128.h ../common/PCD8544_font.h i2c_ledx_demo.c i2c_ledx_demo_CPPFLAGS = -I$(top_srcdir)/common i2c_ledx_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/libpigpiod_wraps.a i2c_mxledx_demo_SOURCES = ../common/rcs_scm.h i2c_mxledx_demo.c i2c_mxledx_demo_CPPFLAGS = -I$(top_srcdir)/common i2c_mxledx_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/libled_disptools.a i2c_clkled_demo_SOURCES = ../common/rcs_scm.h i2c_clkled_demo.c i2c_clkled_demo_CPPFLAGS = -I$(top_srcdir)/common i2c_clkled_demo_LDADD = ../common/libparsel.a ../common/libi2c_chips.a \ ../common/libi2c_wraps.a ../common/libled_disptools.a ../common/libpigpio_wraps.a \ ../common/libpigpiod_wraps.a lcd_gpio4bV2_demo_SOURCES = ../common/rcs_scm.h lcd_gpio4bV2_demo.c lcd_gpio4bV2_demo_CPPFLAGS = -I$(top_srcdir)/common lcd_gpio4bV2_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libi2c_wraps.a spi_glcdHP3_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h spi_glcdHP3_demo.c spi_glcdHP3_demo_CPPFLAGS = -I$(top_srcdir)/common spi_glcdHP3_demo_LDADD = ../common/libparsel.a ../common/libglcd_xbmtools.a \ ../common/libspi_chips.a ../common/libspi_wraps.a ../common/libi2c_wraps.a \ ../common/libspi_PCD8544.a spi_glcdV2N_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h spi_glcdV2N_demo.c spi_glcdV2N_demo_CPPFLAGS = -I$(top_srcdir)/common spi_glcdV2N_demo_LDADD = ../common/libparsel.a ../common/libglcd_xbmtools.a \ ../common/libspi_chips.a ../common/libspi_wraps.a ../common/libi2c_wraps.a \ ../common/libspi_PCD8544.a glcd_spi8bA_demo_SOURCES = ../common/rcs_scm.h glcd_spi8bA_demo.c glcd_spi8bA_demo_CPPFLAGS = -I$(top_srcdir)/common glcd_spi8bA_demo_LDADD = ../common/libparsel.a ../common/liblcd_disptools.a \ ../common/libglcd_xbmtools.a ../common/libi2c_wraps.a ../common/libspi_wraps.a spi_led_2x4d_demo_SOURCES = ../common/rcs_scm.h spi_led_2x4d_demo.c spi_led_2x4d_demo_CPPFLAGS = -I$(top_srcdir)/common spi_led_2x4d_demo_LDADD = ../common/libparsel.a ../common/libspi_chips.a \ ../common/libspi_wraps.a ../common/libled_disptools.a oled_spiV2_demo_SOURCES = ../common/rcs_scm.h ../common/oled128.h ../common/oled256.h \ ../common/jace128.h oled_spiV2_demo.c oled_spiV2_demo_CPPFLAGS = -I$(top_srcdir)/common oled_spiV2_demo_LDADD = ../common/libparsel.a ../common/libspi_chips.a \ ../common/libspi_wraps.a ../common/libi2c_wraps.a spi_glcdV2A_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h spi_glcdV2A_demo.c spi_glcdV2A_demo_CPPFLAGS = -I$(top_srcdir)/common spi_glcdV2A_demo_LDADD = ../common/libparsel.a ../common/libglcd_xbmtools.a \ ../common/libspi_chips.a ../common/libspi_wraps.a ../common/libi2c_wraps.a \ ../common/libspi_PCD8544.a spi_glcdG_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h spi_glcdG_demo.c spi_glcdG_demo_CPPFLAGS = -I$(top_srcdir)/common spi_glcdG_demo_LDADD = ../common/libparsel.a ../common/libglcd_xbmtools.a \ ../common/libspi_chips.a ../common/libspi_wraps.a ../common/libi2c_wraps.a \ ../common/libspi_PCD8544.a #bbx_spi_glcd_demo_SOURCES = ../common/rcs_scm.h ../common/PCD8544_font.h bbx_spi_glcd_demo.c #bbx_spi_glcd_demo_CPPFLAGS = -I$(top_srcdir)/common #bbx_spi_glcd_demo_LDADD = ../common/libparsel.a ../common/libspi_chips.a \ #../common/libspi_wraps.a ../common/libi2c_wraps.a ../common/libspi_PCD8544.a \ #/usr/local/lib/libpigpio.a
Self-generated, brief Program Help
demo.c
pi@raspibplus16Gb ~/i2c_spi_chips-0.0 $ ./src/demo
demo.c Version 0.05 {Exp}, [18/07/2014], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage demo [Options]
Options: -a arg_filename[.arg],
-AP1 {Adafruit Permaproto full demo #1},
-AP2 {Adafruit Permaproto full demo #2},
-E {Echo command-line arguments},
-HP1 {Humble Pi demo #1},
-HP2 {Humble Pi demo #2},
-HP3 {Humble Pi demo #3},
-I {Inquire about i2c devices},
-Q {Quiet - default},
-SE1 {Sil Edge mount lcd demo #1},
-SE2 {Sil Edge mount lcd demo #2},
-SE3 {Sil Edge mount lcd demo #3},
-SE4 {Sil Edge mount lcd demo #4},
-SP1 {Slice of Pi/o demo #1},
-SP2 {Slice of Pi/o demo #2},
-S {use System call methods - default},
-V {Verbose},
-APQ {Adafruit Permaproto full device Query (implies -W)},
-HPQ {Humble Pi device Query (implies -W)},
-SPQ {Slice of Pi/o device Query (implies -W)},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
dual_lcd_i2c4-8bit_demo.c
pi@raspiP3B16Gb:~/i2c_spi_chips-0.0 $ ./src/dual_lcd_i2c4-8bit_demo
dual_lcd_i2c4-8bit_demo.c Version 0.02 {Exp}, [26/06/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage dual_lcd_i2c4-8bit_demo [Options]
Options: -a arg_filename[.arg],
-A8 {use 8-bit interface via gpio A - default},
-B4 {use 4-bit interface via gpio B},
-BLn {force BackLights off (n=0) or on (n=1)},
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-IG {Inquire about i2c devices & Gpio readall},
-P {Preload lcd iface's},
-ST {Strobe Test*},
-F8T {Func set init 8-bit Test* - implies -A8},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-CH {Clear display & return Home - implies -W},
-F4T {Func set init 4-bit Test - implies -B4 & -W},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-W80T {Write 80 characters Test - implies -W},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
glcd_spi8b_demo.c
pi@raspiP3B16Gb:~/i2c_spi_chips-0.0 $ ./src/glcd_spi8b_demo
glcd_spi8b_demo.c Version 0.01 {Exp}, [14/08/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage glcd_spi8b_demo [Options]
Options: -a arg_filename[.arg],
-xbm xbm_filename[.xbm] (for 128x64 graphic),
-xpm xpm_filename[.xpm] (for 16x16 CGRAM char.),
+XBM {XBM dump of pixel store},
+XPM {XPM dump of pixel store},
-E {Echo command-line arguments},
-F0816 {use half-character, 8x16 Font (default)},
-F1616 {use 16x16 Font#},
-FG1616 {use user-defined Graphic 16x16 Font#},
-FI1616 {use chinese Icon 16x16 Font#},
{# for -WDT option only},
+UCGn {Use CGram address 000n (n=0,2,4 or 6) ...},
{... for xpm file data},
-backlight on|off,
-BLT {simple Back Light Test},
-F8BT {Func set init 8-bit, Basic instruction set Test*},
-IG {Initialise used gpio's & Gpio readall},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-CH {Clear display & return Home - implies -W},
-F8XT {Func set init 8-bit, eXtended instr. set Test - implies -W},
-GDST {Graphics Display Switch Test - implies -W},
-Rn {Reverse line n (n=1|2) - implies -W},
-WLT {Write Line info. Test - implies -W & -F0816},
-WMT {Write Message Test - implies -W & -F0816},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
glcd_spi8bA_demo.c
pi@raspiP3BStretch16Gb:~/i2c_spi_chips-0.0 $ ./src/glcd_spi8bA_demo
glcd_spi8bA_demo.c Version 0.00 {Exp}, [11/09/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage glcd_spi8bA_demo [Options]
Options: -a arg_filename[.arg],
-xbm xbm_filename[.xbm] (for 128x64 graphic),
-xpm xpm_filename[.xpm] (for 16x16 CGRAM char.),
+XBM {XBM dump of pixel store},
+XPM {XPM dump of pixel store},
-E {Echo command-line arguments},
-F0816 {use half-character, 8x16 Font (default)},
-F1616 {use 16x16 Font#},
-FG1616 {use user-defined Graphic 16x16 Font#},
-FI1616 {use chinese Icon 16x16 Font#},
{# for -WDT option only},
-glcd# n {Use GLCD model name #n (0 < n < 4)},
+UCGn {Use CGram address 000n (n=0,2,4 or 6) ...},
{... for xpm file data},
-F8BT {Func set init 8-bit, Basic instruction set Test*},
-IG {Initialise used gpio's & Gpio readall},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-CH {Clear display & return Home - implies -W},
-F8XT {Func set init 8-bit, eXtended instr. set Test - implies -W},
-GDST {Graphics Display Switch Test - implies -W},
-Rn {Reverse line n (n=1|2) - implies -W},
-WLT {Write Line info. Test - implies -W & -F0816},
-WMT {Write Message Test - implies -W & -F0816},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
lcd_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/lcd_demo
lcd_demo.c Version 0.05 {Exp}, [04/04/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_demo [Options]
Options: -a arg_filename[.arg],
-dmsg 's' {Display a MeSsaGe 'like_this_one'... - implies -W},
+S {... and Scroll right},
-i2c 0x?? {set I2C device address (>0x00)},
{defaults: PCF8574P=0x26, PCF8574AP=0x3e},
-AP {use PCF8574AP default},
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-CH {Clear display & return Home - implies -W},
-F8T {Func set init 8-bit Test*},
-IG {Inquire about i2c devices & Gpio readall},
-P {Preload lcd iface},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
Check1: Fri Apr 13 18:52:47 2018
Check2: 18:52:49
lcd_fi2c_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/lcd_fi2c_demo
lcd_fi2c_demo.c Version 0.08 {Exp}, [13/04/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_fi2c_demo [Options]
Options: -a arg_filename[.arg],
-dmsg 's' {Display a MeSsaGe 'like_this_one'... - implies -W},
+S {... and Scroll right},
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-HVI2C {High Voltage I2C (5V - default) },
-LVI2C {Low Voltage I2C (4.4V)},
-Bn {Backlight mode (n=0->Off, n=1->On - default)},
-CH {Clear display & return Home - implies -W},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-W80T {Write 80 characters Test - implies -W},
-F4T {Func set init 4-bit Test*},
-P {Preload lcd fi2c},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
Check1: Fri Apr 13 18:54:04 2018
Check2: 18:54:06
lcd_gpio4b_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/lcd_gpio4b_demo
lcd_gpio4b_demo.c Version 0.03 {Exp}, [18/05/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_gpio4b_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-BLn {BackLight mode n: n=0,1,2 or 3, default 2},
-BLT {BackLight Test - implies -W},
-CH {Clear display & return Home - implies -W},
-F4T {Func set init 4-bit Test - implies -W},
-IG {Initialise used gpio's & Gpio readall},
-P {Preload lcd iface},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-WRT {Write Register Test*},
-W80T {Write 80 characters Test - implies -W},
{*NB: LED Test board req'd with -S},
-Q {Quiet - default},
-S {use System call method - default},
-T {using LED Test board},
-V3 {using 3.3V LCD},
-V5 {using 5.0V LCD - default},
-V {Verbose},
-W {use Wiring pi "byte write" method},
-X {eXecute demonstration}.
Check1: Fri May 18 14:01:26 2018
Check2: 14:01:28
lcd_hi2c_demo.c
pi@raspibplus16Gb ~/i2c_spi_chips-0.0 $ ./src/lcd_hi2c_demo
lcd_hi2c_demo.c Version 0.01 {Exp}, [27/04/2015], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_hi2c_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-2004 {LCD display type 2004},
-BLT {BackLight Test},
-WDT {Write Data Test},
-WLT {Write Line info. Test},
-Q {Quiet - default},
-S {use System call methods - default},
-V {Verbose},
-W {use Wiring pi i2c methods},
-PG {use PiGpio i2c methods**},
{**NB: requires sudo "prefix"! },
-X {eXecute demonstration}.
lcd_mi2c_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/lcd_mi2c_demo
lcd_mi2c_demo.c Version 0.03 {Exp}, [13/04/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_mi2c_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-HVI2C {High Voltage I2C (5V - default) },
-LVI2C {Low Voltage I2C (4.4V)},
-Bn {Backlight mode (n=0->Off, n=1->On - default)},
-CH {Clear display & return Home - implies -W},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-WTT {Write Timing data Test - implies -W},
-F4T {Func set init 4-bit Test*},
-P {Preload lcd mi2c},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
Check1: Fri Apr 13 18:56:50 2018
Check2: 18:56:52
lcd_ibo_i2c_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/lcd_ibo_i2c_demo
lcd_ibo_i2c_demo.c Version 0.03 {Exp}, [31/03/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_ibo_i2c_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-CH {Clear display & return Home - implies -W},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-WTT {Write Timing data Test - implies -W},
-F4T {Func set init 4-bit Test*},
-P {Preload lcd ibo_i2c},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
Check1: Fri Apr 13 18:58:18 2018
Check2: 18:58:20
lcd_spi4b_demo.c
pi@raspiP3B16Gb:~/i2c_spi_chips-0.0 $ ./src/lcd_spi4b_demo
lcd_spi4b_demo.c Version 0.02 {Exp}, [14/08/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_spi4b_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-BLn {BackLight mode n: n=0,1,2 or 3, default 2},
-IG {Initialise used gpio's & Gpio readall},
-P {Preload lcd iface},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-CH {Clear display & return Home - implies -W},
-F4T {Func set init 4-bit Test - implies -W},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-W80T {Write 80 characters Test - implies -W},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
Check1: Mon Aug 14 20:08:53 2017
Check2: 20:08:55
lcd_spi4bV2_demo.c
pi@raspiP3B16Gb:~/i2c_spi_chips-0.0 $ ./src/lcd_spi4bV2_demo
lcd_spi4bV2_demo.c Version 0.02 {Exp}, [14/08/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_spi4bV2_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-1604 {LCD display type 1604},
-2004 {LCD display type 2004},
-BLn {BackLight mode n: n=0,1,2 or 3, default 2},
-IG {Initialise used gpio's & Gpio readall},
-P {Preload lcd iface},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-CH {Clear display & return Home - implies -W},
-F4T {Func set init 4-bit Test - implies -W},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-W80T {Write 80 characters Test - implies -W},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
Check1: Mon Aug 14 20:09:56 2017
Check2: 20:09:58
lcd_spi8b_demo.c
pi@raspiP3B16Gb:~/i2c_spi_chips-0.0 $ ./src/lcd_spi8b_demo
lcd_spi8b_demo.c Version 0.03 {Exp}, [14/08/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage lcd_spi8b_demo [Options]
Options: -a arg_filename[.arg],
-dmsg 's' {Display a MeSsaGe 'like_this_one'... - implies -W},
+S {... and Scroll right},
-E {Echo command-line arguments},
-0802 {LCD display type 0802},
-1602 {LCD display type 1602 - default},
-2004 {LCD display type 2004},
-IG {Initialise used gpio's & Gpio readall},
-CH {Clear display & return Home - implies -W},
-F8T {Func set init 8-bit Test*},
-ST {Strobe Test*},
-WDT {Write Data Test*},
-WRT {Write Register Test*},
{*NB: LED Test board req'd with -S},
-WLT {Write Line info. Test - implies -W},
-WMT {Write Message Test - implies -W},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
spi_glcd_cacc_demo.c
pi@raspibplus16Gb ~/i2c_spi_chips-0.0 $ ./src/spi_glcd_cacc_demo
spi_glcd_cacc_demo.c Version 0.02 {Exp}, [24/02/2015], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_glcd_cacc_demo [Options]
Options: -a arg_filename[.arg],
-CEn {use CEn (/dev/spidev0.n) - n=0|1},
-E {Echo command-line arguments},
-IG {Initialise gpio's & Gpio readall},
-CH {Clear Home},
-ID {Initialise Display},
-inverse {INVERSE display},
-normal {NORMAL display},
-SBn {Set Bias system n, 0<=n<=7 (default 4)},
-SCn {Set Contrast level n, 0<=n<=8 (default 3)},
-WFT {Write direct Font data Test},
-WGT {Write Graphics image data Test},
-WMT {Write Message Test},
-Q {Quiet - default},
-V {Verbose},
-X {eXecute demonstration}
spi_glcd_demo.c
pi@raspibplus16Gb ~/i2c_spi_chips-0.0 $ ./src/spi_glcd_demo
spi_glcd_demo.c Version 0.05 {Exp}, [25/01/2015], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_glcd_demo [Options]
Options: -a arg_filename[.arg],
-xpm xpm_filename[.xpm] (for 48x84 rotated graphic),
-BB {use Bit-Banged** spi interface},
{**NB: Prefix with sudo - root privileges reqired!},
-FS {use Full Spi interface - default},
-E {Echo command-line arguments},
-IG {Initialise used gpio's & Gpio readall},
-RI {Reset & Initialise display - implies -W},
-RT {Reset pulse Test^^},
-CH {Clear Home - implies -W},
-inverse {INVERSE display - implies -W},
-normal {NORMAL display - default, implies -W},
-SCn {Set Contrast level n, 0<=n<=8 - implies -W},
-SOT {Shift Out Test^^ - implies -BB},
-WCT {Write Command Test - implies -W},
-WDT {Write Data Test - implies -W},
-WFT {Write direct Font data Test - implies -W},
-WGT {Write Graphics image data Test - implies -W},
-WMT {Write Message Test - implies -W},
{^^ NB: LED Test board req'd with -S},
-Q {Quiet - default},
-S {use System call methods - default},
-T {using LED Test board},
-V {Verbose},
-W {use Wiring pi methods},
-X {eXecute demonstration}
spi_ledx_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/spi_ledx_demo
spi_ledx_demo.c Version 0.03 {Exp}, [31/03/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_ledx_demo [Options]
Options: -a arg_filename[.arg],
-cascade d
{CASCADE of d matrices (1 < d <= 128)},
-8DGT {8-DiGiT led display},
-MTX {8x8 led MaTriX display - default},
-MTX2 {16x8 dual led MaTriX display#},
-MTX4 {32x8 quad led MaTriX display},
{#on spidev0.0, others on spidev0.1},
-E {Echo command-line arguments},
-Q {Quiet - default},
-BT {Brightness Test},
-CBT {Cascade Brightness Test},
-CST {Cascade Self Test},
-CFT1 {Cascade Font Test #1},
-CFT2 {Cascade Font Test #2},
-CFT3 {Cascade Font Test #3},
-DPT {Decimal Point Test},
-DT1 {Digit Test #1},
-DT2 {Digit Test #2},
-DT3 {Digit Test #3},
-FT1 {Font Test #1},
-FT2 {Font Test #2},
-FT3 {Font Test #3},
-F8x8 {use 8x8 Font - default},
-F8x5R {use Rotated 8x5 Font (PCD8544 font)},
-ST {Self Test the LED matrix},
-S {use System call methods - default},
-V {Verbose},
-WCFFT {Wiring pi Cascaded Full Font Test},
-WFFT {Wiring pi Full Font Test},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
Testing Kernel Bug Fix (wiringPi workaround) for -S methods...
spi_glcdV2_demo.c
pi@raspibplus16Gb ~/i2c_spi_chips-0.0 $ ./src/spi_glcdV2_demo
spi_glcdV2_demo.c Version 0.02 {Exp}, [10/02/2015], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_glcdV2_demo [Options]
Options: -a arg_filename[.arg],
-xpm xpm_filename[.xpm] (for 48x84 rotated graphic),
-E {Echo command-line arguments},
-backlight on|off,
-IG {Initialise gpio's, check backlight & Gpio readall},
-CH {Clear and return Home},
-inverse {INVERSE display},
-normal {NORMAL display - default},
-RI {Reset & Initialise display},
-SCn {Set Contrast level n, 0<=n<=8},
-WFT {Write direct Font data Test},
-WGT {Write Graphics image data Test},
-WMT {Write Message Test},
-Q {Quiet - default},
-V {Verbose},
-X {eXecute demonstration}
oled_i2c_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/oled_i2c_demo
oled_i2c_demo.c Version 0.02 {Exp}, [31/03/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage oled_i2c_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-CH {Clear display & return Home^^},
-ID {Initialise Display},
-inverse {INVERSE display},
-normal {NORMAL display - default},
-oled128 {use oled128 font - default},
-oled256 {use oled256 font},
-jace128 {use jace128 font},
-Q {Quiet - default},
-RC {Reset Contrast},
-SCn {Set Contrast level n, 0<=n<=8},
-S {use System call methods - default},
-TD {Test Display},
-V {Verbose},
-WFT {Write Font bytes Test^^},
-WMT {Write Message Test^^},
{^^ use with -S or -PG methods only},
-W {use Wiring pi i2c methods},
-PG {use PiGpio i2c methods**},
{**NB: requires sudo "prefix"! },
-X {eXecute demonstration}.
glcd_font_tool.c
pi@raspibplus16Gb ~/i2c_spi_chips-0.0 $ ./src/glcd_font_tool
glcd_font_tool.c Version 0.00 {Exp}, [19/05/2015], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage glcd_font_tool [path/]fontInfile_name[.h] [options]
Options: -o fontOut_filename_prefix,
-a arg_filename[.arg],
-conv d {CONVert upto d font chars. (1 < d <= 256},
-C {Clean|Clone font file - default},
-E {Echo command-line arguments},
-O {auto-generate fontOutfile_name},
-OCR {Output a Column/Row font},
-ORC {Output a Row/Column font},
-Q {Quiet - default},
-V {Verbose},
spi_led_4dq_demo
pi@raspiP3B16Gb:~/i2c_spi_chips-0.0 $ ./src/spi_led_4dq_demo
spi_led_4dq_demo.c Version 0.00 {Exp}, [14/08/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_led_4dq_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-CMXT {Cascaded MultipleXed digits Test},
-DON {Display fully ON},
-DOFF {Display fully OFF},
-MXDI d {MultipleXed Display of Integer d},
-MXT {MultipleXed digits Test},
-Q {Quiet - default},
-SQT {Sequential Digit Test},
-S {use System call methods - default},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
spi_led_4drrg_demo
pi@raspiP3B16Gb:~/i2c_spi_chips-0.0 $ ./src/spi_led_4drrg_demo
spi_led_4drrg_demo.c Version 0.00 {Exp}, [14/08/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_led_4drrg_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
+CLKI {CLocK Indicators enabled},
-DON {Display fully ON},
-DOFF {Display fully OFF},
+GXL {Green eXternal led on},
-LnT {cLock indicator n Test, n=1,2 or 3},
-MXCLKT {MultipleXed CLocK display Test (implies -W)},
-MXDI d {MultipleXed Display of Integer d},
-MXT {MultipleXed digits Test},
-Q {Quiet - default},
+RXL {Red eXternal led on},
-SQT {Sequential Digit Test},
+YXL {"Yellow" eXternal led on (when Multi-pleXed)},
-S {use System call methods - default},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
Check1: Mon Aug 14 20:13:57 2017
Check2: 20:13:59
i2c_rgb_led_demo.c
pi@raspibplus16Gb ~/i2c_spi_chips-0.0 $ ./src/i2c_rgb_led_demo
i2c_rgb_led_demo.c Version 0.00 {Exp}, [04/07/2015], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage i2c_rgb_led_demo [Options]
Options: -a arg_filename[.arg],
-C3T {3_Clr rgb diode Test},
-DNT {Dn rgb diodes Test},
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-S {use System call methods - default},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
i2c_ledx_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/i2c_ledx_demo
i2c_ledx_demo.c Version 0.02 {Exp}, [31/03/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage i2c_ledx_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-MX08 {using 0.8in led MatriX module (default)},
-MX12 {using 1.2in led MatriX module},
-MXKY {using KeYestudio 1.2in led MatriX module},
-BIT {Blink Initialisation Test},
-DIT {Dimming Initialisation Test},
-FIT {Full Initialisation Test},
-F8x8 {use 8x8 Font - default},
-F8x5R {use Rotated 8x5 Font (PCD8544 font)},
-F8x8JR {use Rotated 8x8 Font (Jupiter ACE font)},
-FT1 {Font Test #1},
-FT2 {Font Test #2},
-FT3 {Font Test #3},
-QIT {Quick Initialisation Test},
-QCT {Quick font Conversion Test},
-S {use System call methods - default},
-W {use Wiring pi i2c methods},
-PGD {use PiGpioD i2c methods^^},
{^^NB: requires a running pigpio daemon!},
-X {eXecute demonstration}.
i2c_mxledx_demo.c
pi@raspiP3BStretch16Gb:~/i2c_spi_chips-0.0 $ ./src/i2c_mxledx_demo
i2c_mxledx_demo.c Version 0.01 {Exp}, [27/07/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage i2c_mxledx_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-HP1 {Simple,'Humble Pi' demo (un-multiplexed)},
-I {Inquire about i2c devices},
-S {use System call methods - default},
-SMX {Slow MultipleX test- implies -S},
-WMX1 {medium MultipleX test - implies -W},
-WMX2 {rapid MultipleX test - implies -W},
-W {use Wiring pi i2c methods},
-X {eXecute demonstration}.
i2c_clkled_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/i2c_clkled_demo
i2c_clkled_demo.c Version 0.02 {Exp}, [31/03/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage i2c_clkled_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-I {Inquire about i2c devices},
-BIT {Blink Initialisation Test},
-CLKT {CLocK display Test},
-CCLK {Constant CLocK display},
-DIT {Dimming Initialisation Test},
-di n {Display Integer n},
-FIT {Full Initialisation Test},
-QIT {Quick Initialisation Test},
-SDT {Simple Digit Test},
+R {activate Red rgb led},
+G {activate Green rgb led},
+B {activate Blue rgb led},
-S {use System call methods - default},
-V {Verbose},
-W {use Wiring pi i2c methods},
-PG {use PiGpio i2c methods**},
{**NB: requires sudo "prefix"!},
-PGD {use PiGpioD i2c methods^^},
{^^NB: requires a running pigpio daemon!},
-X {eXecute demonstration}.
Check1: Fri Apr 13 19:10:01 2018
Check2: 19:10:03
spi_glcdHP3_demo.c
pi@raspiP3BStretch16Gb:~/i2c_spi_chips-0.0 $ ./src/spi_glcdHP3_demo
spi_glcdHP3_demo.c Version 0.01 {Exp}, [21/08/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_glcdHP3_demo [Options]
Options: -a arg_filename[.arg],
-xpm xpm_filename[.xpm] (for 48x84 rotated graphic),
-E {Echo command-line arguments},
-IG {Initialise gpio's & Gpio readall},
-CH {Clear and return Home},
-inverse {INVERSE display},
-normal {NORMAL display - default},
-RI {Reset & Initialise display},
-SCn {Set Contrast level n, 0<=n<=8},
-WFT {Write direct Font data Test},
-WGT {Write Graphics image data Test},
-WMT {Write Message Test},
-Q {Quiet - default},
-V {Verbose},
-X {eXecute demonstration}
spi_glcdV2N_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/spi_glcdV2N_demo
spi_glcdV2N_demo.c Version 0.01 {Exp}, [31/03/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_glcdV2N_demo [Options]
Options: -a arg_filename[.arg],
-xpm xpm_filename[.xpm] (for 48x84 rotated graphic),
-E {Echo command-line arguments},
-IG {Initialise gpio's & Gpio readall},
-CH {Clear and return Home},
-inverse {INVERSE display},
-normal {NORMAL display - default},
-RI {Reset & Initialise display},
-SCn {Set Contrast level n, 0<=n<=8},
-WFT {Write direct Font data Test},
-WGT {Write Graphics image data Test},
-WMT {Write Message Test},
-Q {Quiet - default},
-V {Verbose},
-X {eXecute demonstration}
spi_led_2x4d_demo.c
pi@raspiP3BStretch16Gb:~/i2c_spi_chips-0.0 $ ./src/spi_led_2x4d_demo
spi_led_2x4d_demo.c Version 0.01 {Exp}, [30/09/2017], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_led_2x4d_demo [Options]
Options: -a arg_filename[.arg],
-E {Echo command-line arguments},
-DON {Display fully ON},
-DOFF {Display fully OFF},
-MXUDI d {MultipleXed Upper Display of 4-digit Integer d},
-MXLDI d {MultipleXed Lower Display of 4-digit Integer d},
-MX8DI d {MultipleXed Display of 8-digit Integer d},
-MXT {MultipleXed digits Test},
-Q {Quiet - default},
-SQT {SeQuential digit block Test},
-S {use System call methods - default},
-V {Verbose},
-W {use Wiring pi spi methods},
-X {eXecute demonstration}.
spi_glcdV2A_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/spi_glcdV2A_demo
spi_glcdV2A_demo.c Version 0.03 {Exp}, [11/06/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_glcdV2A_demo [Options]
Options: -a arg_filename[.arg],
-xpm xpm_filename[.xpm] (for 48x84 rotated graphic),
-CEn {use CEn (/dev/spidev0.n) - n=0|1, default CE0},
-E {Echo command-line arguments},
-backlight on|off,
-IG {Initialise gpio's & Gpio readall},
-CH {Clear and return Home},
-inverse {INVERSE display},
-normal {NORMAL display - default},
-RI {Reset & Initialise display},
-SCn {Set Contrast level n, 0<=n<=8},
-WFT {Write direct Font data Test},
-WGT {Write Graphics image data Test},
-WMT {Write Message Test},
-Q {Quiet - default},
-V {Verbose},
-X {eXecute demonstration}
spi_glcdG_demo.c
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0 $ ./src/spi_glcdG_demo
spi_glcdG_demo.c Version 0.01 {Exp}, [16/06/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Usage spi_glcdG_demo [Options]
Options: -a arg_filename[.arg],
-xpm xpm_filename[.xpm] (for 48x84 rotated graphic),
-rst# d {RST gpio BCM# is d (1 < d < 28)},
-dc# d {DC gpio BCM# is d (1 < d < 28)},
-bl# d {BL gpio BCM# is d (1 < d < 28)},
-CEn {use CEn (/dev/spidev0.n) - n=0|1, default CE0},
-E {Echo command-line arguments},
-backlight on|off,
-IG {Initialise gpio's & Gpio readall},
-CH {Clear and return Home},
-inverse {INVERSE display},
-normal {NORMAL display - default},
-RI {Reset & Initialise display},
-SCn {Set Contrast level n, 0<=n<=8},
-WFT {Write direct Font data Test},
-WGT {Write Graphics image data Test},
-WMT {Write Message Test},
-Q {Quiet - default},
-V {Verbose},
-X {eXecute demonstration}pi@raspiP3Bplus18:~/i2c_spi_chips-0.0/src $ cat spi_glcdG_demo.arg * Default Argument file for spi_glcdG_demo with spi_glcdV2A_demo's parameters: -rst# 27 -dc# 17 -bl# 22
pi@raspiP3Bplus18:~/i2c_spi_chips-0.0/src $ ./spi_glcdG_demo -E
spi_glcdG_demo.c Version 0.01 {Exp}, [16/06/2018], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
Loading spi_glcdG_demo.arg ...
* Default Argument file for spi_glcdG_demo with spi_glcdV2A_demo's parameters:
... done.
-E
pcd8544 chip status:
SPI_DEV /dev/spidev0.0
RST GPIO 27
DC GPIO 17
BL GPIO 22
DCVAL 0x00
NAME Nokia5110G
pcd8544 colpix store status:
First column bytes ...
0x00 0xff 0x00 0xff 0x00 0xff
Last column bytes ...
0xff 0x00 0xff 0x00 0xff 0x00
Using 'C' system calls to 'gpio' and wiringPi methods: ...
gpio -g mode 27 out
gpio export 17 out
gpio -g mode 22 out
gpio -g write 27 1
digitalWrite(#17, 0)
gpio -g write 22 1
gpio exports
ls -laF /sys/class/gpio/
Using wiringPiSPI methods: ...
wP_SPIfd[0] = 3
wP_SPIfd[1] = 4
*nokia5110g.spifd = 3
digitalWrite(#17, 0)
ls -laF /sys/class/gpio/
gpio unexportall
ls -laF /sys/class/gpio/
gpio readall
Snippits from some of the "Convenience Library" Header Files
i2c_chips.h
#define ALL_GPIO_BITS_OUT 0x00
#define ALL_GPIO_BITS_IN 0xff
#define ALL_GPIO_BITS_LOW 0x00
#define ALL_GPIO_BITS_HIGH 0xff
#define ALL_GPIO_BITS_NORMAL 0x00
#define ALL_GPIO_BITS_INVERTED 0xff
#define HIGH_GPIO_NIBBLE_INVERTED 0xf0
#define LOW_GPIO_NIBBLE_INVERTED 0x0f
#define CHIP_NAME_LEN 32
/* MCP23017 */
typedef struct
{
unsigned int addr;
unsigned int iocon;
unsigned int iodira;
unsigned int iodirb;
unsigned int ipola;
unsigned int ipolb;
unsigned int gpioa;
unsigned int gpiob;
/* Registers not yet in use >>> */
/*
* unsigned int gpintena;
* unsigned int defvala;
* unsigned int intcona;
* unsigned int gppua;
* unsigned int intfa;
* unsigned int intcapa;
* unsigned int olata;
* unsigned int gpintenb;
* unsigned int defvalb;
* unsigned int intconb;
* unsigned int gppub;
* unsigned int intfb;
* unsigned int intcapb;
* unsigned int olatb;
*/
/* <<< */
char name[CHIP_NAME_LEN];
} mcp23017;
#define MCP23017_I2C_DRT 284 /* micro-seconds (100kHz bus clock, 28 clocks + tpv) */
unsigned int init_mcp23017(mcp23017 *chip,
unsigned int addr,
char *chip_name);
void echo_mcp23017_status(mcp23017 chip);
/* MCP23008 */
typedef struct
{
unsigned int addr;
unsigned int iocon;
unsigned int iodir;
unsigned int iopol;
unsigned int gpio;
/* Registers not yet in use >>> */
/*
* unsigned int gpinten;
* unsigned int defval;
* unsigned int intcon;
* unsigned int gppu;
* unsigned int intf;
* unsigned int intcap;
* unsigned int olat;
*/
/* <<< */
char name[CHIP_NAME_LEN];
} mcp23008;
#define MCP23008_I2C_DRT 284 /* micro-seconds (100kHz bus clock, 28 clocks + tpv) */
unsigned int init_mcp23008(mcp23008 *chip,
unsigned int addr,
char *chip_name);
void echo_mcp23008_status(mcp23008 chip);
/* PCF8574 */
typedef struct
{
unsigned int addr;
unsigned int qiop;
char name[CHIP_NAME_LEN];
} pcf8574;
/* #define PCF8574_I2C_DRT 184 /* micro-seconds (100kHz bus clock, 18 clocks + tpv) */
#define PCF8574_I2C_DRT 204 /* micro-seconds (100kHz bus clock, 20 clocks + tpv) */
unsigned int init_pcf8574(pcf8574 *chip,
unsigned int addr,
char *chip_name);
void echo_pcf8574_status(pcf8574 chip);
/* LCD Backpack V2 */
typedef struct
{
unsigned int addr;
unsigned int printstr;
unsigned int cursorposn;
unsigned int clearline;
unsigned int cleardisp;
unsigned int lcdtype;
unsigned int hd44780;
unsigned int backlight;
unsigned int writechar;
unsigned int createchar;
unsigned int setbaudrate;
/* Not in use by I2C */
/*
* unsigned int changei2caddr;
*/
char name[CHIP_NAME_LEN];
} lcdbpv2;
unsigned int init_lcdbpv2(lcdbpv2 *chip,
unsigned int addr,
char *chip_name);
void echo_lcdbpv2_status(lcdbpv2 chip);
/* I2C version of SSD1306 OLED */
typedef struct
{
unsigned int addr; /* 0x3c or 0x3d */
unsigned int c0dc;
unsigned int cmds; /* Single-byte CoMmand store */
unsigned int cmdd[2]; /* Double-byte CoMmand store */
unsigned int cmdt[3]; /* Triple-byte CoMmand store */
unsigned int cmdm[7]; /* Multi-byte CoMmand store, m (6|7) in cmdm[0] */
unsigned int cfont[8]; /* Column-based FONT store */
/* Page (column bytes) | Frame Buffer store */
unsigned int page[8][128];
char name[CHIP_NAME_LEN];
} i2c_ssd1306_oled;
#define OLED_COMMAND 0x00
#define OLED_DATA 0x40
#define OLED_CONTRAST_RESET 0x7f
#define OLED_HORIZONTAL_ADDR_MODE 0x00
#define OLED_VERTICAL_ADDR_MODE 0x01
#define OLED_PAGE_ADDR_MODE 0x02
#define OLED_COLUMN_START_RESET 0
#define OLED_COLUMN_END_RESET 127
#define OLED_PAGE_START_RESET 0
#define OLED_PAGE_END_RESET 7
#define OLED_CHAR_WIDTH 128 /* 8x8 font */
/* Single-byte Commands ... */
#define OLED_DISPLAY_ON_WITH_RAM 0xa4
#define OLED_DISPLAY_ON_NO_RAM 0xa5
#define OLED_DISPLAY_NORMAL 0xa6
#define OLED_DISPLAY_INVERSE 0xa7
#define OLED_DISPLAY_OFF 0xae
#define OLED_DISPLAY_ON 0xaf
#define OLED_SET_SEG0_0 0xa0
#define OLED_SET_SEG0_127 0xa1 /* Re-map */
#define OLED_SET_COMO_NORMAL 0xC0
#define OLED_SET_COMO_REMAP 0xC8
/* Double-byte Command prefixes ... */
#define OLED_SET_CONTRAST 0x81
#define OLED_SET_MEM_ADDR_MODE 0x20
/* Triple-byte Command prefixes ... */
#define OLED_SET_COLUMN_ADDR 0x21
#define OLED_SET_PAGE_ADDR 0x22
/* Multi-byte Command prefixes ... */
/* Contrast ... */
#define OLED_C0 0x0f
#define OLED_C1 0x1f
#define OLED_C2 0x3f
#define OLED_C3 0x5f
#define OLED_C4 OLED_CONTRAST_RESET
#define OLED_C5 0x9f
#define OLED_C6 0xbf
#define OLED_C7 0xdf
#define OLED_C8 0xef
unsigned init_i2c_ssd1306_oled(i2c_ssd1306_oled *chip,
unsigned int addr,
char *chip_name);
void echo_i2c_ssd1306_oled_status(i2c_ssd1306_oled chip);
/* HT16K33 */
#define DDAP_ADDR 0x00
#define SSR_STANDBY 0x20 /* STANDBY mode (System Oscillator Off) */
#define SSR_NORMAL 0x21 /* NORMAL mode (System Oscillator On) */
#define RISR_ADDR 0xa0
#define RISR_ROWD 0xa0 /* ROW Driver output mode */
#define RISR_INTL 0xa1 /* ROW INTerrupt active low */
#define RISR_INTH 0xa3 /* ROW INTerrupt active high */
#define DSPR_ADDR 0x80
#define DMSR_ADDR 0xef
#define DISPOFFMSK 0x80 /* & */
#define DISPONMSK 0x01 /* | */
#define DSPRBLNKMSK 0x05
#define BLINKOFF 0x89 /* & */
#define BLINK20HZ 0x8b /* | */
#define BLINK10HZ 0x8c /* | */
#define BLINK05HZ 0x8e /* | */
#define DIMSETMASK 0xe0
#define DIM01_16 0x00 /* | */
#define DIM02_16 0x01 /* | */
#define DIM03_16 0x02 /* | */
#define DIM04_16 0x03 /* | */
#define DIM05_16 0x04 /* | */
#define DIM06_16 0x05 /* | */
#define DIM07_16 0x06 /* | */
#define DIM08_16 0x07 /* | */
#define DIM09_16 0x08 /* | */
#define DIM10_16 0x09 /* | */
#define DIM11_16 0x0a /* | */
#define DIM12_16 0x0b /* | */
#define DIM13_16 0x0c /* | */
#define DIM14_16 0x0d /* | */
#define DIM15_16 0x0e /* | */
#define DIM16_16 0x0f /* | */
/* Adafruit 8x8 LED Matrix layout ... */
/* ROW0 at "top", below I2C connector ... */
#define ROW0ADDR 0x00
#define ROW1ADDR 0x02
#define ROW2ADDR 0x04
#define ROW3ADDR 0x06
#define ROW4ADDR 0x08
#define ROW5ADDR 0x0a
#define ROW6ADDR 0x0c
#define ROW7ADDR 0x0e
/* COL0 at left edge ... */
#define COL0MASK 0x80 /* | */
#define COL1MASK 0x01 /* | */
#define COL2MASK 0x02 /* | */
#define COL3MASK 0x04 /* | */
#define COL4MASK 0x08 /* | */
#define COL5MASK 0x10 /* | */
#define COL6MASK 0x20 /* | */
#define COL7MASK 0x40 /* | */
#define ALLCOLON 0xff
#define ALLCOLOFF 0x00
/* Green "Clock Style" 4-Digit LED Display + RGB LED */
/* NB: Using HT16K33 notation cf. a matrix layout */
/* Digit & RGB Columns */
/* (Digits use Rows 0-7) */
#define DGT1ADDR 0x00
#define DGT2ADDR 0x02
#define DGT3ADDR 0x04
#define DGT4ADDR 0x06
/* (RGB uses Rows 8-10, order BGR!) */
#define RGBADDR 0x09
/* Segment Masks */
#define SEGAMASK 0x01 /* | */
#define SEGBMASK 0x02 /* | */
#define SEGCMASK 0x04 /* | */
#define SEGDMASK 0x08 /* | */
#define SEGEMASK 0x10 /* | */
#define SEGFMASK 0x20 /* | */
#define SEGGMASK 0x40 /* | */
#define SEGDPMASK 0x80 /* | */
/* DP only available for digits 2 & 3 */
#define ALLSEGON 0xff
#define ALLSEGOFF 0x00
#define ALLRGBON 0x07
#define ALLRGBOFF 0x00
/* RGB Masks (order BGR!) */
#define BLUEON 0x04 /* | */
#define GREENON 0x02 /* | */
#define REDON 0x01 /* | */
typedef struct
{
unsigned int addr;
unsigned int conf;
unsigned int ddap; /* Display Data Address Pointer */
unsigned int ddcb; /* Display Data Column Byte */
unsigned int ssr; /* System Setup Register */
unsigned int risr; /* Row/Int Set Register */
unsigned int dspr; /* Display SetuP Register */
unsigned int dmsr; /* DiMming Set Register */
/* Registers not in use... */
/*
* unsigned int kdap; Key Data Address Pointer
* unsigned int ifap; Int Flag Address Pointer
*/
/* 8x8 LED Matrix data etc. */
unsigned int crfont[8]; /* Column-based Raw FONT store */
unsigned int ccfont[8]; /* Column-based Converted FONT store */
/* Clock LED Display & RGB LED data etc. */
unsigned int digits[4]; /* NB: 7-seg CC encoded digits */
unsigned int rgb;
char name[CHIP_NAME_LEN];
} ht16k33;
unsigned init_ht16k33(ht16k33 *chip,
unsigned int addr,
unsigned int conf,
char *chip_name);
void echo_ht16k33_status(ht16k33 chip);
void convert_ht16k33_font(ht16k33 *chip);
void load_ht16k33_crfont(ht16k33 *chip,
char *thisfont,
unsigned int fidx,
int nrow);
void load_ht16k33_digits(ht16k33 *chip,
unsigned int digits[4]);
void load_ht16k33_rgb(ht16k33 *chip,
unsigned int rgb);
i2c_wraps.h
void C2S_i2cdetect(int chan,
char qx);
void C2S_i2cset(int chan,
unsigned int addr,
unsigned int regr,
unsigned int data,
char qx);
void C2S_i2cseti(int chan,
unsigned int addr,
unsigned int regr,
unsigned int data[16],
unsigned int nval,
char qx);
void C2S_i2cout(int chan,
unsigned int addr,
unsigned int data,
char qx);
#ifdef HAVE_WIRINGPI_H
void C2S_gpio(char *options,
char qx);
#define GPIO_XIN 0
#define GPIO_XOUT 1
void C2S_gpio_export(int gpio_pin,
int gpio_mode,
char qx);
void C2S_gpio_unexport(int gpio_pin,
char qx);
void C2S_gpio_unexportall(char qx);
#define GPIO_MODE_IN -1
#define GPIO_MODE_OUT 1
void C2S_gpio_g_mode(int gpio_gpin,
int gpio_mode,
char qx);
void C2S_gpio_g_write(int gpio_gpin,
int gpio_level,
char qx);
void C2S_gpio_mode(int gpio_wpin,
int gpio_mode,
char qx);
void C2S_gpio_write(int gpio_wpin,
int gpio_level,
char qx);
void C2S_gpio_wb(unsigned int gpio_byte,
char qx);
#define GPIO_HIGH HIGH
#define GPIO_LOW LOW
void WP_pinMode(int wpin,
int mode,
char qx);
void WP_digitalWrite(int gpio_pin,
int value,
char qx);
void WP_digitalWriteByte(int value,
char qx);
#endif /* HAVE_WIRINGPI_H */
#ifdef HAVE_WIRINGPII2C_H
#define WP_MAX_IBYTES 128
typedef struct
{
int did;
int fd;
int reg;
int data;
char ibytes[WP_MAX_IBYTES];
} wpi2cvb; /* WiringPiI2C Variables Block */
void WP_i2cset(wpi2cvb wpi2c,
char qx);
void WP_i2cset2(wpi2cvb wpi2c,
char qx);
void WP_i2cseti(wpi2cvb wpi2c,
int nbytes,
char qx);
void WP_i2cout(wpi2cvb wpi2c,
char qx);
int WP_i2cget(wpi2cvb wpi2c,
char qx);
#endif /* HAVE_WIRINGPII2C_H */
#endif /* !I2C_WRAP_H */
pigpio_wraps.h
#define PG_BLOCK_SIZE 32
#define PG_UNDEF_HANDLE 999
typedef struct
{
unsigned int i2cBus;
unsigned int i2cAddr;
unsigned int i2cFlags; /* Currently always set to zero - see pigpio.h */
unsigned int handle;
unsigned int i2cReg;
unsigned int bVal;
unsigned int wVal;
char block_buf[PG_BLOCK_SIZE];
} pgi2cvb; /* PiGpio I2C Variables Block */
void PG_i2cset(pgi2cvb pgi2c,
char qx);
void PG_i2cset2(pgi2cvb pgi2c,
char qx);
void PG_i2cseti(pgi2cvb pgi2c,
unsigned int count,
char qx);
void PG_i2cout(pgi2cvb pgi2c,
char qx);
pigpiod_wraps.h
/*
#define PG_BLOCK_SIZE 32
*/
#define PGD_UNDEF_HANDLE 999
typedef struct
{
int thispi;
unsigned int i2cbus;
unsigned int i2caddr;
unsigned int i2cflags; /* Currently always set to zero - see pigpiod_if2.h */
unsigned int handle;
unsigned int i2cReg;
unsigned int bVal;
unsigned int wVal;
/* char block_buf[PG_BLOCK_SIZE]; */
} pgdi2cvb; /* PiGpioD I2C Variables Block */
void PGD_i2cset(pgdi2cvb pgdi2c,
char qx);
void PGD_i2cset2(pgdi2cvb pgdi2c,
char qx);
/*
void PGD_i2cseti(pgdi2cvb pgdi2c,
unsigned int count,
char qx);
*/
void PGD_i2cout(pgdi2cvb pgdi2c,
char qx);
spi_chips.h
#ifndef CHIP_NAME_LEN
#define CHIP_NAME_LEN 32
#endif /* !CHIP_NAME_LEN */
#define SPI_DEV00 0
#define SPI_DEV01 1
static char SPIdev0[] = "/dev/spidev0.0";
static char SPIdev1[] = "/dev/spidev0.1";
static char SPIdevNul[] = "SPI /dev undefined";
/* MCP23S08 */
typedef struct
{
char *spidev;
int *spifd;
unsigned int waddr; /* Write ADDRess */
unsigned int iocon;
unsigned int iodir;
unsigned int iopol;
unsigned int gpio;
/* Registers not yet in use >>> */
/*
* unsigned int gpinten;
* unsigned int defval;
* unsigned int intcon;
* unsigned int gppu;
* unsigned int intf;
* unsigned int intcap;
* unsigned int olat;
*/
/* <<< */
char name[CHIP_NAME_LEN];
} mcp23S08;
#define MCP23S08_SPI_DRT 48 /* micro-seconds (500kHz bus clock, 24 clocks/3 bytes) */
unsigned int init_mcp23S08(mcp23S08 *chip,
unsigned int waddr,
char spidev,
char *chip_name);
void echo_mcp23S08_status(mcp23S08 chip);
/* MAX7219 */
typedef struct
{
char *spidev;
int *spifd;
unsigned int NoOp;
unsigned int Digit0;
unsigned int Digit1;
unsigned int Digit2;
unsigned int Digit3;
unsigned int Digit4;
unsigned int Digit5;
unsigned int Digit6;
unsigned int Digit7;
unsigned int DecodeMode;
unsigned int Intensity;
unsigned int ScanLimit;
unsigned int Shutdown;
unsigned int DisplayTest;
char name[CHIP_NAME_LEN];
} max7219;
void init_max7219(max7219 *chip,
char spidev,
char *chip_name);
void echo_max7219_status(max7219 chip);
/* MAX7221 */
typedef struct
{
char *spidev;
int *spifd;
unsigned int NoOp;
unsigned int Digit0;
unsigned int Digit1;
unsigned int Digit2;
unsigned int Digit3;
unsigned int Digit4;
unsigned int Digit5;
unsigned int Digit6;
unsigned int Digit7;
unsigned int DecodeMode;
unsigned int Intensity;
unsigned int ScanLimit;
unsigned int Shutdown;
unsigned int DisplayTest;
char name[CHIP_NAME_LEN];
} max7221;
void init_max7221(max7221 *chip,
char spidev,
char *chip_name);
void echo_max7221_status(max7221 chip);
/* Useful MAX7219/7221 commands ... */
/* NB: All "Don't care" bits = 0 */
#define NOOP_DATA 0x00
#define SHUTDOWN_MODE 0x00
#define NORMAL_OPERATION 0x01
#define NO_DECODE_ALL_DIGITS 0x00
#define CODE_B_DECODE_ALL_DIGITS 0xff
#define MIN_INTENSITY 0x00
#define MED_INTENSITY 0x07
#define MAX_INTENSITY 0x0f
#define SCAN_ALL_DIGITS 0x07
#define DISPLAY_NORMAL_MODE 0x00
#define DISPLAY_TEST_MODE 0x01
#define ALL_DOTS_ON 0xff /* NO_DECODE_ALL_DIGITS active! */
#define ALL_DOTS_OFF 0x00 /* NO_DECODE_ALL_DIGITS active! */
#define ALL_SEG_DP_OFF 0x0f /* CODE_B_DECODE_ALL_DIGITS active! */
#define ALL_SEG_DP_ON 0x88 /* CODE_B_DECODE_ALL_DIGITS active! */
#define ALL_SEG_ON_DP_OFF 0x08 /* CODE_B_DECODE_ALL_DIGITS active! */
#define ALL_SEG_OFF_DP_ON 0x8f /* CODE_B_DECODE_ALL_DIGITS active! */
#define CODE_B_HYPHEN 0x0a /* CODE_B_DECODE_ALL_DIGITS active! */
#define CODE_B_E 0x0b /* CODE_B_DECODE_ALL_DIGITS active! */
#define CODE_B_H 0x0c /* CODE_B_DECODE_ALL_DIGITS active! */
#define CODE_B_L 0x0d /* CODE_B_DECODE_ALL_DIGITS active! */
#define CODE_B_P 0x0e /* CODE_B_DECODE_ALL_DIGITS active! */
#define DP_OFFSET 0x80
/* PCD8544/Nokia5110 */
typedef struct
{
char *spidev;
int *spifd;
int rst_gpio;
int dc_gpio;
int bl_gpio; /* Reserved for future use */
unsigned int dcval; /* Data or Command VALue */
char name[CHIP_NAME_LEN];
} pcd8544;
#define GPIO_UNASSIGNED -1
void init_pcd8544(pcd8544 *chip,
int rst_gpio,
int dc_gpio,
int bl_gpio,
char spidev,
char *chip_name);
void echo_pcd8544_status(pcd8544 chip);
/* Bit-Banged PCD8544/Nokia5110 */
/* NB: Uses wiringPi pin numbers */
/* and requires sudo (root) priviliges! */
typedef struct
{
int rst_wpin;
int ce_wpin;
int dc_wpin;
int din_wpin;
int clk_wpin;
int bl_wpin; /* Reserved for future use */
unsigned char dcval; /* Data or Command VALue */
unsigned int speed;
char name[CHIP_NAME_LEN];
} bbpcd8544;
#define WPIN_UNASSIGNED -1
#define PCD8544_SLOW_CLOCK 500 /* uS == 1kHz */
#define PCD8544_MEDIUM_CLOCK 50 /* uS == 10kHz */
#define PCD8544_FAST_CLOCK 5 /* uS == 100kHz */
#define PCD8544_VFAST_CLOCK 2 /* uS == 250kHz */
/* Contrast ... */
#define PCD8544_C0 0x2f
#define PCD8544_C1 0x33
#define PCD8544_C2 0x37
#define PCD8544_C3 0x3b
#define PCD8544_C4 0x3d
#define PCD8544_C5 0x3f
#define PCD8544_C6 0x43
#define PCD8544_C7 0x47
#define PCD8544_C8 0x4b
/* Bias (BS0 - BS2) */
#define PCD8544_B0 0x00
#define PCD8544_B1 0x01
#define PCD8544_B2 0x02
#define PCD8544_B3 0x03
#define PCD8544_B4 0x04
#define PCD8544_B5 0x05
#define PCD8544_B6 0x06
#define PCD8544_B7 0x07
void init_bbpcd8544(bbpcd8544 *chip,
int rst_wpin,
int ce_wpin,
int dc_wpin,
int din_wpin,
int clk_wpin,
int bl_wpin,
unsigned int speed,
char *chip_name);
void echo_bbpcd8544_status(bbpcd8544 chip);
/* GPIO controlled 74HC595 */
/* CE0 or CE1 --> RCK (12) */
/* MOSI --> SER (14) */
/* SCLK --> SCK (11) */
/* goe_gpio --> G (13) [Gate or ¬Output Enable] */
/* scl_gpio --> SCL (10) [¬Shift reg.CLear or ¬reset */
typedef struct
{
char *spidev;
int *spifd;
int goe_gpio;
int scl_gpio;
char name[CHIP_NAME_LEN];
} gc74hc595;
#define GC74HC595_SPI_DRT 16 /* micro-seconds (500kHz bus clock, 8 clocks/1 byte) */
void init_gc74hc595(gc74hc595 *chip,
int goe_gpio,
int scl_gpio,
char spidev,
char *chip_name);
void echo_gc74hc595_status(gc74hc595 chip);
/* Hard-Wired 74HC595 */
/* CE0 or CE1 --> RCK (12) */
/* MOSI --> SER (14) */
/* SCLK --> SCK (11) */
/* Vss <-- G (13) [Gate or ¬Output Enable] */
/* Vdd <-- SCL (10) [¬Shift reg.CLear or ¬reset */
typedef struct
{
char *spidev;
int *spifd;
char name[CHIP_NAME_LEN];
} hw74hc595;
#define HW74HC595_SPI_DRT GC74HC595_SPI_DRT
void init_hw74hc595(hw74hc595 *chip,
char spidev,
char *chip_name);
void echo_hw74hc595_status(hw74hc595 chip);
/* Hard-Wired 74HC164 */
/* Vcc --> A1 (1) or A2 (2) */
/* MOSI --> A2 (2) or A1 (1) */
/* ie. CE0/CE1 NOT IN USE! */
/* SCLK --> CLOCK (8) */
/* Vcc --> /RESET (9) */
typedef struct
{
char *spidev;
int *spifd;
int chainlen; /* #chips in the chain */
char name[CHIP_NAME_LEN];
} hw74hc164;
#define HW74HC164X1_SPI_DRT GC74HC595_SPI_DRT
void init_hw74hc164(hw74hc164 *chip,
int chainlen,
char spidev,
char *chip_name);
void echo_hw74hc164_status(hw74hc164 chip);
/* ST7920 GLCD in Serial Mode */
/* ¬CE0 or ¬CE1 --> inverter --> RS */
/* MOSI --> R/¬W */
/* SCLK --> E */
/* Vss (Hard-wired) --> PSB(P/¬S) */
typedef struct
{
char *spidev;
int *spifd;
char name[CHIP_NAME_LEN];
} st7920sm;
void init_st7920sm(st7920sm *chip,
char spidev,
char *chip_name);
void echo_st7920sm_status(st7920sm chip);
/* SPI version of SSD1306 OLED */
typedef struct
{
char *spidev;
int *spifd;
int rst_gpio;
int dc_gpio;
unsigned int cmds; /* Single-byte CoMmand store */
unsigned int cmdd[2]; /* Double-byte CoMmand store */
unsigned int cmdt[3]; /* Triple-byte CoMmand store */
unsigned int cmdm[7]; /* Multi-byte CoMmand store, m (6|7) in cmdm[0] */
unsigned int cfont[8]; /* Column-based FONT store */
/* Page (column bytes) | Frame Buffer store */
unsigned int page[8][128];
char name[CHIP_NAME_LEN];
} spi_ssd1306_oled;
void init_spi_ssd1306_oled(spi_ssd1306_oled *chip,
char spidev,
int rst_gpio,
int dc_gpio,
char *chip_name);
void echo_spi_ssd1306_oled_status(spi_ssd1306_oled chip);
#define OLED_CONTRAST_RESET 0x7f
#define OLED_HORIZONTAL_ADDR_MODE 0x00
#define OLED_VERTICAL_ADDR_MODE 0x01
#define OLED_PAGE_ADDR_MODE 0x02
#define OLED_COLUMN_START_RESET 0
#define OLED_COLUMN_END_RESET 127
#define OLED_PAGE_START_RESET 0
#define OLED_PAGE_END_RESET 7
#define OLED_CHAR_WIDTH 128 /* 8x8 font */
/* Single-byte Commands ... */
#define OLED_DISPLAY_ON_WITH_RAM 0xa4
#define OLED_DISPLAY_ON_NO_RAM 0xa5
#define OLED_DISPLAY_NORMAL 0xa6
#define OLED_DISPLAY_INVERSE 0xa7
#define OLED_DISPLAY_OFF 0xae
#define OLED_DISPLAY_ON 0xaf
#define OLED_SET_SEG0_0 0xa0
#define OLED_SET_SEG0_127 0xa1 /* Re-map */
#define OLED_SET_COMO_NORMAL 0xC0
#define OLED_SET_COMO_REMAP 0xC8
/* Double-byte Command prefixes ... */
#define OLED_SET_CONTRAST 0x81
#define OLED_SET_MEM_ADDR_MODE 0x20
/* Triple-byte Command prefixes ... */
#define OLED_SET_COLUMN_ADDR 0x21
#define OLED_SET_PAGE_ADDR 0x22
/* Multi-byte Command prefixes ... */
/* Contrast ... */
#define OLED_C0 0x0f
#define OLED_C1 0x1f
#define OLED_C2 0x3f
#define OLED_C3 0x5f
#define OLED_C4 OLED_CONTRAST_RESET
#define OLED_C5 0x9f
#define OLED_C6 0xbf
#define OLED_C7 0xdf
#define OLED_C8 0xef
spi_wraps.h
typedef struct
{
int next; /* NEXT index */
unsigned int regr;
unsigned int data;
} cascade;
#define EMPTY_CASCADE -1
#define MAX_CASCADE_LEN 128
#define CASCADE_BUF_LEN 256 /* 2 x MAX_CASCADE_LEN */
#define CASCADE_CMD_LEN 512 /* 4 x MAX_CASCADE_LEN */
/* Ensure globals only declared once ... */
/* Relies on NO_MAIN being defined in libraries */
#ifndef NO_MAIN
cascade led_matrix[MAX_CASCADE_LEN];
char cascade_buffer[CASCADE_BUF_LEN];
#else /* !NO_MAIN */
extern cascade led8x8[MAX_CASCADE_LEN];
extern char cascade_buffer[CASCADE_BUF_LEN];
#endif /* !NO_MAIN */
void reset_cascade(cascade thiscascade[]);
void dump_cascade(cascade thiscascade[],
int caslen);
int add_to_cascade(cascade thiscascade[],
unsigned int regr,
unsigned int data,
int caslen);
int fill_cascade(cascade thiscascade[],
unsigned int regr,
unsigned int data,
int caslen);
int insert_into_cascade(cascade thiscascade[],
unsigned int regr,
unsigned int data,
int casposn,
int caslen);
int load_cascade_buffer(cascade thiscascade[]);
void dump_cascade_buffer(int nbytes);
void C2S_cascade2spidev(char *spidev,
cascade thiscascade[],
char qx);
#ifdef HAVE_WIRINGPISPI_H
void WP_write_cascade(int spifd,
cascade thiscascade[],
char qx);
#endif /* HAVE_WIRINGPISPI_H */
void C2S_sechob2spidev(char *spidev,
unsigned int sbyte,
char qx);
void C2S_secho2spidev(char *spidev,
unsigned int regr,
unsigned int data,
char qx);
void C2S_secho3b2spidev(char *spidev,
unsigned int waddr,
unsigned int regr,
unsigned int data,
char qx);
#ifdef HAVE_WIRINGPI_H
void C2S_echob2spidev(char *spidev,
unsigned int sbyte,
char qx);
void C2S_echo2spidev(char *spidev,
unsigned int regr,
unsigned int data,
char qx);
void C2S_echo3b2spidev(char *spidev,
unsigned int waddr,
unsigned int regr,
unsigned int data,
char qx);
#endif /* HAVE_WIRINGPI_H */
#ifdef HAVE_WIRINGPISPI_H
void WP_write_byte(int spifd,
unsigned int sbyte,
char qx);
void WP_write2bytes(int spifd,
unsigned int regr,
unsigned int data,
char qx);
void WP_write3bytes(int spifd,
unsigned int waddr,
unsigned int regr,
unsigned int data,
char qx);
#endif /* HAVE_WIRINGPISPI_H */
lcd_disptools.h
#define LCD_DDRAM_SIZE 80
typedef enum
{
LCM0801,
LCM0802,
LCM1602,
LCM2004,
LAST_LCM,
LCMTYPES
} lcmclass;
typedef struct
{
int pixel_row0;
int pixel_row1;
int pixel_row2;
int pixel_row3;
int pixel_row4;
int pixel_row5;
int pixel_row6;
int pixel_row7;
} lcd_5x8_pixel;
#define MAX_LCD_NL 4
typedef struct
{
lcmclass lcd_type;
int lcd_nc;
int lcd_nl;
int lcd_ddram_idx[MAX_LCD_NL];
int lcd_rs_gpio;
int lcd_e_gpio;
pcf8574 lcd_data;
int lcd_ehmin; /* Enable High MINimum time, uS */
int lcd_elmin; /* Enable Low MINimum time^^, uS */
int lcd_elmax; /* Enable Low MAXimum time^^, uS */
int lcd_wait; /* WAIT time, uS */
int lcd_nfb;
int lcd_bsize;
char lcd_buffer[LCD_DDRAM_SIZE+1];
} lcd_iface_8bit;
/* ^^IE. internal delay before next operation, typically ~41uS|1600uS */
typedef struct
{
lcmclass lcd_type;
int lcd_nc;
int lcd_nl;
int lcd_ddram_idx[MAX_LCD_NL];
pcf8574 lcd_data;
int lcd_ehmin; /* Enable High MINimum time, uS */
int lcd_elmin; /* Enable Low MINimum time^^, uS */
int lcd_elmax; /* Enable Low MAXimum time^^, uS */
int lcd_wait; /* WAIT time, uS */
int lcd_nfb;
int lcd_bsize;
char lcd_buffer[LCD_DDRAM_SIZE+1];
} lcd_fi2c_4bit;
/* ^^IE. internal delay before next operation, typically ~41uS|1600uS */
typedef struct
{
lcmclass lcd_type;
int lcd_nc;
int lcd_nl;
int lcd_ddram_idx[MAX_LCD_NL];
int lcd_ehmin; /* Enable High MINimum time, uS */
int lcd_elmin; /* Enable Low MINimum time^^, uS */
int lcd_elmax; /* Enable Low MAXimum time^^, uS */
int lcd_wait; /* WAIT time, uS */
int lcd_nfb;
int lcd_bsize;
char lcd_buffer[LCD_DDRAM_SIZE+1];
} lcd_core;
typedef struct
{
pcf8574 lcd_data;
lcd_core M4bit;
unsigned int lcd_M4data;
} lcd_mi2c_4bit;
typedef struct
{
pcf8574 lcd_data;
lcd_core IBO4bit;
unsigned int lcd_IBO4data;
} lcd_ibo_i2c_4bit;
#ifndef GPIO_IFACE_NAME_LEN
#define GPIO_IFACE_NAME_LEN 32
#endif /* !GPIO_IFACE_NAME_LEN */
typedef struct
{
int rs_gpio;
int e_gpio;
int bl0_gpio;
int bl1_gpio;
int d4_gpio;
int d5_gpio;
int d6_gpio;
int d7_gpio;
char name[GPIO_IFACE_NAME_LEN];
} gpio_4bit4;
typedef struct
{
gpio_4bit4 lcd_condat;
lcd_core G4bit;
unsigned int lcd_G4data;
} lcd_gpio_4bit;
typedef struct
{
mcp23017 lcd_data;
int lcd_rs_gpioA;
int lcd_e_gpioA;
int lcd_rs_gpioB;
int lcd_e_gpioB;
lcd_core A8bit;
lcd_core B4bit;
unsigned int lcd_B4data;
} dual_lcd;
typedef struct
{
mcp23S08 lcd_data;
int lcd_e_gpio;
lcd_core S4bit;
unsigned int lcd_S4data;
} lcd_spi_4bit;
typedef struct
{
hw74hc595 lcd_data;
int lcd_e_gpio;
lcd_core S4bit;
unsigned int lcd_S4data;
} lcd_spi_4bitV2;
typedef struct
{
lcmclass lcd_type;
int lcd_nc;
int lcd_nl;
int lcd_ddram_idx[MAX_LCD_NL];
int lcd_ctrl;
int lcd_rs_gpio;
int lcd_e_gpio;
gc74hc595 lcd_data;
int lcd_ehmin; /* Enable High MINimum time, uS */
int lcd_elmin; /* Enable Low MINimum time^^, uS */
int lcd_elmax; /* Enable Low MAXimum time^^, uS */
int lcd_wait; /* WAIT time, uS */
int lcd_nfb;
int lcd_bsize;
char lcd_buffer[LCD_DDRAM_SIZE+1];
} lcd_spi_8bit;
/* ^^IE. internal delay before next operation, typically ~41uS|1600uS */
typedef enum
{
HC8X16, /* GB Half-Character font */
C16X16, /* GB 16x16 symbol font */
G16X16, /* user-defined 16x16 Graphics */
I16X16, /* chinese 16x16 Iconic font */
GLFTYPES
} glcdfonttype;
#define GLCD_NL 4
typedef struct
{
int glcd_nc;
int glcd_nl;
int glcd_ddram_idx[GLCD_NL];
int glcd_rs_gpio;
int glcd_e_gpio;
int glcd_bl_gpio;
gc74hc595 glcd_data;
int glcd_ehmin; /* Enable High MINimum time, uS */
int glcd_elmin; /* Enable Low MINimum time^^, uS */
int glcd_elmax; /* Enable Low MAXimum time^^, uS */
int glcd_wait; /* WAIT time, uS */
} glcd_spi2p_8bit;
/* ^^IE. internal delay before next operation, typically ~72uS|1600 */
/* Ensure globals only declared once ... */
/* Relies on NO_MAIN being defined in libraries */
#ifndef NO_MAIN
lcmclass lcdmodel;
glcdfonttype glcdfont;
lcd_5x8_pixel hd44780u;
lcd_iface_8bit current_iface_8bit;
lcd_iface_8bit blue_1602;
lcd_iface_8bit blue_2004;
lcd_iface_8bit yellow_1602;
lcd_fi2c_4bit current_fi2c_4bit;
lcd_fi2c_4bit fun_yellow_1602;
lcd_mi2c_4bit current_mi2c_4bit;
lcd_ibo_i2c_4bit current_ibo_i2c_4bit;
dual_lcd current_dual_lcd;
lcd_gpio_4bit current_gpio_4bit;
lcd_spi_4bit current_spi_4bit;
lcd_spi_4bitV2 current_spi_4bitV2;
lcd_spi_8bit current_spi_8bit;
glcd_spi2p_8bit current_spi2p_8bit;
#else /* !NO_MAIN */
extern lcmclass lcdmodel;
extern glcdfonttype glcdfont;
extern lcd_5x8_pixel hd44780u;
extern lcd_iface_8bit current_iface_8bit;
extern lcd_iface_8bit blue_1602;
extern lcd_iface_8bit blue_2004;
extern lcd_iface_8bit yellow_1602;
extern lcd_fi2c_4bit current_fi2c_4bit;
extern lcd_fi2c_4bit fun_yellow_1602;
extern lcd_mi2c_4bit current_mi2c_4bit;
extern lcd_ibo_i2c_4bit current_ibo_i2c_4bit;
extern dual_lcd current_dual_lcd;
extern lcd_gpio_4bit current_gpio_4bit;
extern lcd_spi_4bit current_spi_4bit;
extern lcd_spi_4bitV2 current_spi_4bitV2;
extern lcd_spi_8bit current_spi_8bit;
extern glcd_spi2p_8bit current_spi2p_8bit;
#endif /* !NO_MAIN */
/* Prototypes */
void init_hd44780u(void);
/* Chessboard 5x8 pixel block */
int get_lcd_nc(lcmclass lcdtype);
int get_lcd_nl(lcmclass lcdtype);
void get_lcd_ddram_idx(lcmclass lcdtype,
int lcd_nl,
int lcd_ddram_idx[MAX_LCD_NL]);
void lcd_set_createchar_data(int id,
int *pixdata);
int init_any_iface_8bit(lcd_iface_8bit *any_iface_8bit,
lcmclass lcdtype,
int rs_gpio,
int e_gpio,
unsigned int addr,
char name[]);
int init_blue_1602(lcmclass lcdtype,
int rs_gpio,
int e_gpio,
unsigned int addr);
int init_blue_2004(lcmclass lcdtype,
int rs_gpio,
int e_gpio,
unsigned int addr);
int init_yellow_1602(lcmclass lcdtype,
int rs_gpio,
int e_gpio,
unsigned int addr);
int init_any_fi2c_4bit(lcd_fi2c_4bit *any_fi2c_4bit,
lcmclass lcdtype,
unsigned int addr,
char name[]);
int init_fun_yellow_1602(lcmclass lcdtype,
unsigned int addr);
unsigned int init_any_mi2c_4bit(lcd_mi2c_4bit *any_mi2c_4bit,
lcmclass lcdtype,
char name[]);
unsigned int init_any_ibo_i2c_4bit(lcd_ibo_i2c_4bit *any_ibo_i2c_4bit,
lcmclass lcdtype,
unsigned int addr,
char name[]);
unsigned int init_any_dual_lcd(dual_lcd *any_dual_lcd,
unsigned int addr,
lcmclass lcdtypeA,
int rs_gpioA,
int e_gpioA,
lcmclass lcdtypeB,
int rs_gpioB,
int e_gpioB,
char name[]);
void init_current_gpio_4bit(lcd_gpio_4bit *any_gpio_4bit,
lcmclass lcdtype,
int rs_gpio,
int e_gpio,
int bl0_gpio,
int bl1_gpio,
int d4_gpio,
int d5_gpio,
int d6_gpio,
int d7_gpio,
char name[]);
unsigned int init_current_spi_4bit(lcd_spi_4bit *any_spi_4bit,
lcmclass lcdtype,
int e_gpio,
unsigned int waddr,
char spidev,
char name[]);
void init_current_spi_4bitV2(lcd_spi_4bitV2 *any_spi_4bitV2,
lcmclass lcdtype,
int e_gpio,
char spidev,
char name[]);
void init_current_spi_8bit(lcd_spi_8bit *any_spi_8bit,
lcmclass lcdtype,
int rs_gpio,
int e_gpio,
int goe_gpio,
int scl_gpio,
char spidev,
char name[]);
void init_current_spi2p_8bit(glcd_spi2p_8bit *any_spi2p_8bit,
int rs_gpio,
int e_gpio,
int bl_gpio,
int goe_gpio,
int scl_gpio,
char spidev,
char name[]);
void echo_any_iface_8bit_status(lcd_iface_8bit *any_iface_8bit);
void echo_lcd_iface_8bit_status(lcd_iface_8bit iface);
void echo_any_fi2c_4bit_status(lcd_fi2c_4bit *fi2c);
void echo_any_mi2c_4bit_status(lcd_mi2c_4bit *mi2c);
void echo_any_ibo_i2c_4bit_status(lcd_ibo_i2c_4bit *ibo_i2c);
void echo_lcd_fi2c_4bit_status(lcd_fi2c_4bit fi2c);
void echo_any_dual_lcd_status(dual_lcd *any_dual_lcd);
void echo_any_gpio_4bit_status(lcd_gpio_4bit *any_gpio_4bit);
void echo_any_spi_4bit_status(lcd_spi_4bit *any_spi_4bit);
void echo_any_spi_4bitV2_status(lcd_spi_4bitV2 *any_spi_4bitV2);
void echo_any_spi_8bit_status(lcd_spi_8bit *any_spi_8bit);
void echo_any_spi2p_8bit_status(glcd_spi2p_8bit *any_spi2p_8bit);
led_disptools.h
/* Humble Pi LED matrix #defines etc. ... */
/* Based on 2 x MCP23008 I.C.'s */
#define ALL_ROW_CATHODES_ON 0x00
#define ALL_ROW_CATHODES_OFF 0xff
#define ALL_COLUMN_ANODES_ON 0xff
#define ALL_COLUMN_ANODES_OFF 0x00
#define RC1_ON 0x7f
#define RC2_ON 0xbf
#define RC3_ON 0xdf
#define RC4_ON 0xef
#define RC5_ON 0xf7
#define RC6_ON 0xfb
#define RC7_ON 0xfd
#define RC8_ON 0xfe
#define CA1_ON 0x10
#define CA2_ON 0x20
#define CA3_ON 0x40
#define CA4_ON 0x80
#define CA5_ON 0x01
#define CA6_ON 0x02
#define CA7_ON 0x04
#define CA8_ON 0x08
/* LC Technology 2x4-Digit 74HC164 driven Display #defines etc. */
/* Chip#1 --> Segment + DP Cathodes */
/* Chip#2 --> Digit (Common) Anodes */
#define ALL_CSEGSDP_ON 0x00
#define ALL_CSEGSDP_OFF 0xff
#define CSEGA_OFF 0x01
#define CSEGB_OFF 0x02
#define CSEGC_OFF 0x04
#define CSEGD_OFF 0x08
#define CSEGE_OFF 0x10
#define CSEGF_OFF 0x20
#define CSEGG_OFF 0x40
#define CSEGDP_OFF 0x80
#define CSEGDP_ON 0x3f
#define ALL_ADIGITS_ON 0xff
#define ALL_ADIGITS_OFF 0x00
#define ADIGIT_U1_ON 0x01
#define ADIGIT_U2_ON 0x02
#define ADIGIT_U3_ON 0x04
#define ADIGIT_U4_ON 0x08
#define ADIGIT_L1_ON 0x10
#define ADIGIT_L2_ON 0x20
#define ADIGIT_L3_ON 0x40
#define ADIGIT_L4_ON 0x80
typedef struct
{
int poll;
int data;
int dcode;
} mxdigit; /* Multi-pleXed DIGIT */
typedef struct
{
unsigned int poll;
int data;
unsigned int dcode;
} mxudigit; /* Multi-pleXed Unsigned DIGIT */
typedef struct
{
unsigned int *poll;
int *data;
unsigned int *dcode;
int ncascade;
} cmxudigit; /* Cascaded Multi-pleXed Unsigned DIGIT */
typedef struct
{
unsigned int poll;
int data;
unsigned int dcode;
unsigned int lgrmask;
} mxudigitlgr; /* Multi-pleXed Unsigned DIGIT + Ln/Red/Green mask */
/* Ensure globals only declared once ... */
/* Relies on NO_MAIN being defined in libraries */
#ifndef NO_MAIN
int codes7seg0[19]; /* 16 (hex) digits + All on/off + d.p. */
int codes7seg7[19]; /* 16 (hex) digits + All on/off + d.p. */
unsigned int codes7seg0a[19]; /* 16 (hex) digits + All on/off + d.p. */
unsigned int codes7seg7a[22]; /* 16 (hex) digits + All on/off + d.p. + L1-3 */
unsigned int lgrmask;
int cathode[10];
int cath4x7[6];
unsigned int anode4d[6];
unsigned int anode4dlgr[10];
unsigned int rowcath[10],colanode[10]; /* 8x8 LED matrix */
mxdigit sevenseg[8];
mxdigit four7seg[4];
mxudigit four7seg0a[4],ulfour7seg0a[8];
mxudigitlgr four7seglgra[8];
#else /* !NO_MAIN */
extern int codes7seg0[19]; /* 16 (hex) digits + All on/off + d.p. */
extern int codes7seg7[19]; /* 16 (hex) digits + All on/off + d.p. */
extern unsigned int codes7seg0a[19]; /* 16 (hex) digits + All on/off + d.p. */
extern unsigned int codes7seg7a[22]; /* 16 (hex) digits + All on/off + d.p. + L1-3 */
extern unsigned int lgrmask;
extern int cathode[10];
extern int cath4x7[6];
extern unsigned int anode4d[6];
extern unsigned int anode4dlgr[10];
extern unsigned int rowcath[10],colanode[10]; /* 8x8 LED matrix */
extern mxdigit sevenseg[8];
extern mxdigit four7seg[4];
extern mxudigit four7seg0a[4],ulfour7seg0a[8];
extern mxudigitlgr four7seglgra[8];
#endif /* !NO_MAIN */
void init_codes7seg0(void);
/* Common cathode LED display - Anode (high-level) hex codes */
/* Bit 0 1 2 3 4 5 6 7 */
/* Seg a b c d e f g DP */
void init_codes7seg0a(void);
/* Common anode LED display - Cathode (low-level) hex codes */
/* Bit 0 1 2 3 4 5 6 7 */
/* Seg a b c d e f g DP */
void init_codes7seg7(void);
/* Common cathode LED display - Anode (high-level) hex codes */
/* Bit 7 6 5 4 3 2 1 0 */
/* Seg a b c d e f g DP */
void init_codes7seg7a(void);
/* Common anode LED display - Cathode (low-level) hex codes */
/* Bit 7 6 5 4 3 2 1 0 */
/* Seg a b c d e f g DP */
void init_cathodes(void);
/* 8 digits from left to right */
/* Bit 0 1 2 3 4 5 6 7 */
/* Dgt 8 7 6 5 4 3 2 1 */
void init_cath4x7(void);
/* 4 digits from left to right */
/* Bit 4 5 6 7 */
/* Dgt 4 3 2 1 */
void init_anode4d(void);
/* 4 digits from left to right */
/* Bit 0 1 2 3 */
/* Dgt 4 3 2 1 */
void init_anode4dul(void);
/* 2 rows of 4 digits from left to right */
void init_anode4dlgr(void);
/* 4 digits from left to right + cLock indicators & Red|Green eXternal led */
/* Bit 7 6 5 4 3 - 2 1 */
/* Dgt 4 3 2 1 L - G R */
void init_8x8ledx(void);
/* multiplexed 8 X 8 LED matriX */
void init_sevenseg(void);
void init_four7seg(void);
void init_four7seg0a(void);
void init_ulfour7seg0a(void);
void init_four7seglgra(void);
int load_sevenseg_digit(int index,
int dpflag,
int value);
/* LOAD index'th SEGment DIGIT */
/* dpflag = 1 (TRUE) assigns Decimal Point */
int load_four7seg_digit(int index,
int dpflag,
int value);
/* LOAD index'th 4 x 7-SEGment DIGIT */
/* dpflag = 1 (TRUE) assigns Decimal Point */
int load_four7seg0a_digit(int index,
int dpflag,
int value);
/* LOAD index'th 4 x 7-SEGment (common Anode) DIGIT */
/* dpflag = 1 (TRUE) assigns Decimal Point */
int load_ulfour7seg0a_digit(int index,
int dpflag,
int value);
/* LOAD index'th 2 x 4 x 7-SEGment (common Anode) DIGIT */
/* Upper row indeces 0 - 3 */
/* Lower row indeces 4 - 7 */
/* dpflag = 1 (TRUE) assigns Decimal Point */
int load_four7seglgra_digit(int index,
int dpflag,
int value,
unsigned int lgrmask);
/* LOAD index'th 4 x 7-SEGment (common Anode) DIGIT|Ln|GRY */
/* dpflag = 1 (TRUE) assigns Decimal Point */
/* indexed poll value combined with lgrmask to control external G|R(|Y) led */
glcd_xbmtools.h
/* *.xbm (xpm) file parser ... */
#define XBM_FN_LEN (FN_LEN + 7) /* extra 7 chars. of "height" */
#define XPM_FN_LEN (FN_LEN + 3) /* +3 for "*[]" */
typedef enum
{
CCOMMENT, /* /* */
HASHDEFKEY, /* #define */
STATICKEY, /* static */
UNSIGNEDKEY, /* unsigned */
CHARKEY, /* char */
KEYDATA,
/* Extra XPM keys ... */
XPMKEY, /* XPM */
CLRKEY, /* c */
/* XPM file "support codes" ... */
XPMPIXEL8, /* Pixel8 */
XPMUDGC, /* UDGC */
XPMNIU, /* NotInUse */
LAST_XBMKEY,
XBMKEYTYPES
} xbmkeynames;
typedef struct
{
int width;
int height;
char wname[XBM_FN_LEN];
char hname[XBM_FN_LEN];
char bname[XBM_FN_LEN];
} xbm_header;
typedef struct
{
int width;
int height;
int colours;
int charperpixel;
char back;
char fore;
char cname[XPM_FN_LEN];
} xpm_header;
/* QC12864B GLCD using the ST7920 controller ... */
#define QC12864B_width 128
#define QC12864B_height 64
#define QC12864B_nblocks 4
/* Each block is 128 x 16 pixels, stored end-to-end but ... */
/* displayed top-to-bottom ie. (in character mode) line 1 ... */
/* wraps around into line 3 (and 2 to 4 likewise) */
#define QC12864B_nbytes ((QC12864B_width / 8) * (QC12864B_height / QC12864B_nblocks))
/* 8-pixel values stored per byte */
#define QC12864B_xbmbytes (QC12864B_nbytes * QC12864B_nblocks)
typedef struct
{
unsigned char block11[QC12864B_nbytes];
unsigned char block22[QC12864B_nbytes];
unsigned char block13[QC12864B_nbytes];
unsigned char block24[QC12864B_nbytes];
} qc12864b_pixel8;
#define QC12864B_udgcbits 16
#define QC12864B_udgcpixc (QC12864B_udgcbits * QC12864B_udgcbits)
typedef struct
{
unsigned char cgram_addr;
unsigned char hbyte_rows[QC12864B_udgcbits];
unsigned char lbyte_rows[QC12864B_udgcbits];
} qc12864b_udgc;
/* Nokia 5110 84x48 GLCD using the PCD8544 controller ... */
/* NB: XPM images are rotated +90deg since the GLCD is column-based. */
#define PCD8544_column_width 48
#define PCD8544_row_height 84
#define PCD8544_nblocks 6
#define PCD8544_xpmpixc (PCD8544_column_width * PCD8544_row_height)
/* Each column block is 8 x 84 pixels, in 8-bit rows stored */
/* bottom-to-top then left-to-right (from the rotated image) */
typedef struct
{
unsigned char rowblock0[PCD8544_row_height]; /* Bottom row ... */
unsigned char rowblock1[PCD8544_row_height];
unsigned char rowblock2[PCD8544_row_height];
unsigned char rowblock3[PCD8544_row_height];
unsigned char rowblock4[PCD8544_row_height];
unsigned char rowblock5[PCD8544_row_height]; /* ... Top row */
} pcd8544_colpix8;
/* Ensure globals only declared once ... */
/* Relies on NO_MAIN being defined in libraries */
#ifndef NO_MAIN
/* Useful strings ... */
char xbmblank[] = " ";
char xbmerror[] = "***ERROR*** ";
char xbmwarng[] = "**WARNING** ";
xbmkeynames xbmwhat,xbmwhich,xpmtype;
char *xbmkeylist[XBMKEYTYPES];
char xbmfile[FN_LEN],xpmfile[FN_LEN];
char xbmfopen,xpmfopen;
char xbmfread,xpmfread;
char XbmError,XpmError;
FILE *xbmfn,*xpmfn;
xbm_header this_xbm_header;
xpm_header this_xpm_header;
qc12864b_pixel8 current_qc12864b_buffer;
qc12864b_udgc cgram0000,cgram0002,cgram0004,cgram0006;
pcd8544_colpix8 bbnokia5110_buffer,fsnokia5110_buffer,nokia5110v2_buffer,nokia5110HP3_buffer;
#else /* !NO_MAIN */
extern char xbmblank[];
extern char xbmerror[];
extern char xbmwarng[];
extern xbmkeynames xbmwhat,xbmwhich,xpmtype;
extern char *xbmkeylist[XBMKEYTYPES];
extern char xbmfile[],xpmfile[FN_LEN];
extern char xbmfopen,xpmfopen;
extern char xbmfread,xpmfread;
extern char XbmError,XpmError;
extern FILE *xbmfn,*xpmfn;
extern xbm_header this_xbm_header;
extern xpm_header this_xpm_header;
extern qc12864b_pixel8 current_qc12864b_buffer;
extern qc12864b_udgc cgram0000,cgram0002,cgram0004,cgram0006;
extern pcd8544_colpix8 bbnokia5110_buffer,fsnokia5110_buffer,nokia5110v2_buffer,nokia5110HP3_buffer;
#endif /* !NO_MAIN */
/* XBM data is "byte-bit-reversed ... */
/* "Nibble Bit Reversal Look-Up Tables" ... */
static unsigned char right_nbrlut[] = {
0x00, /* 0x00 */
0x80, /* 0x01 */
0x40, /* 0x02 */
0xc0, /* 0x03 */
0x20, /* 0x04 */
0xa0, /* 0x05 */
0x60, /* 0x06 */
0xe0, /* 0x07 */
0x10, /* 0x08 */
0x90, /* 0x09 */
0x50, /* 0x0a */
0xd0, /* 0x0b */
0x30, /* 0x0c */
0xb0, /* 0x0d */
0x70, /* 0x0e */
0xf0, /* 0x0f */ };
static unsigned char left_nbrlut[] = {
0x00, /* 0x00 */
0x08, /* 0x10 */
0x04, /* 0x20 */
0x0c, /* 0x30 */
0x02, /* 0x40 */
0x0a, /* 0x50 */
0x06, /* 0x60 */
0x0e, /* 0x70 */
0x01, /* 0x80 */
0x09, /* 0x90 */
0x05, /* 0xa0 */
0x0d, /* 0xb0 */
0x03, /* 0xc0 */
0x0b, /* 0xd0 */
0x07, /* 0xe0 */
0x0f, /* 0xf0 */ };
/* Primitives */
void setupxbmkeys(void);
xbmkeynames whichxbmkey(char *xbmkeystr);
void listxbmkeys(void);
void Open_Xbm_File(void);
void Open_Xpm_File(char *mode);
void Close_Xbm_File(void);
void Close_Xpm_File(void);
void Xbm_Error(xbmkeynames error_key);
void Xpm_Error(xbmkeynames error_key);
void Read_Xbm_Header(char qv);
/* qv == Query Verbose flag */
void Read_Xpm_Header(char qv);
/* qv == Query Verbose flag */
void Read_Xpm_Header_Data(char qv);
/* qv == Query Verbose flag */
xbmkeynames Check_Xpm_Header(void);
unsigned char ReverseXbmByte(unsigned char xbmbyte);
int Read_Xbm_Pixel8_Data(qc12864b_pixel8 *buffer,
char qv);
/* qv == Query Verbose flag */
int Read_Xpm_Udgc_Data(qc12864b_udgc *buffer,
unsigned char cgram_addr,
char qv);
/* qv == Query Verbose flag */
int Read_Xpm_Colpix8_Data(pcd8544_colpix8 *buffer,
char qv);
/* qv == Query Verbose flag */
void clear_pixel_store(qc12864b_pixel8 *buffer);
void fill_pixel_store(qc12864b_pixel8 *buffer);
void init_pixel_store(qc12864b_pixel8 *buffer);
void echo_pixel_store_status(qc12864b_pixel8 *buffer);
void xbm_dump_pixel_store(qc12864b_pixel8 *buffer);
void xpm_dump_pixel_store(qc12864b_pixel8 *buffer);
void preset_cgram_store(qc12864b_udgc *buffer,
unsigned char cgram_addr,
unsigned char allrows_hbyte,
unsigned char allrows_lbyte);
void clear_colpix_store(pcd8544_colpix8 *buffer);
void fill_colpix_store(pcd8544_colpix8 *buffer);
void init_colpix_store(pcd8544_colpix8 *buffer);
void echo_colpix_store_status(pcd8544_colpix8 *buffer);
spi_PCD8544.h
#define PCD8544_POWERDOWN 0x04
#define PCD8544_ENTRYMODE 0x02
#define PCD8544_EXTENDEDINSTRUCTION 0x01
#define PCD8544_DISPLAYBLANK 0x00
#define PCD8544_DISPLAYNORMAL 0x04
#define PCD8544_DISPLAYALLON 0x01
#define PCD8544_DISPLAYINVERTED 0x05
/* H = 0 */
#define PCD8544_FUNCTIONSET 0x20
#define PCD8544_DISPLAYCONTROL 0x08
#define PCD8544_SETYADDR 0x40
#define PCD8544_SETXADDR 0x80
/* H = 1 */
#define PCD8544_SETTEMP 0x04
#define PCD8544_SETBIAS 0x10
#define PCD8544_SETVOP 0x80
/* keywords */
#define LSBFIRST 0
#define MSBFIRST 1
/* BackLight constants */
#define PCD8544_BL_NONE -1 /* IE. No backlight Control */
#define PCD8544_BL_CC_NPN 1 /* Common Cathode or NPN transistor drive */
#define PCD8544_BL_CC_NPN_ON 1
#define PCD8544_BL_CC_NPN_OFF 0
#define PCD8544_BL_CA_PNP 0 /* Common Anode or PNP transistor drive */
#define PCD8544_BL_CA_PNP_ON 0
#define PCD8544_BL_CA_PNP_OFF 1
/* Ensure globals only declared once ... */
/* Relies on NO_MAIN being defined in libraries */
/* NB: unsigned char is == to arduino's uint8_t */
#ifndef NO_MAIN
/* LCD port variables (from PCD8544.c) */
unsigned char cursor_x, cursor_y, textsize, textcolor;
/* The memory buffer for the LCD (adapted PCD8544.c) */
unsigned char pcd8544_buffer[LCDWIDTH * LCDHEIGHT / 8];
#else /* !NO_MAIN */
/* LCD port variables (from PCD8544.c) */
extern unsigned char cursor_x, cursor_y, textsize, textcolor;
/* The memory buffer for the LCD (adapted PCD8544.c) */
extern unsigned char pcd8544_buffer[LCDWIDTH * LCDHEIGHT / 8];
#endif /* !NO_MAIN */
/* Prototypes */
void WP_FS_WriteCommandByte(pcd8544 *this_pcd8544,
char qx);
void WP_FS_WriteDataByte(pcd8544 *this_pcd8544,
char qx);
void WP_FS_ClearHome(pcd8544 *this_pcd8544, char qx);
void WP_FS_WriteFontDataBytes(pcd8544 *this_pcd8544,
unsigned int ascii_code,
char *this8x5font,
char qx);
void WP_FS_WriteGraphicsDataBytes(pcd8544 *this_pcd8544,
pcd8544_colpix8 *this_colpix8,
char qx);
void WP_FS_WriteMessage(pcd8544 *this_pcd8544,
char *this8x5font,
char qx,
char *message);
glcd_fonttools.h
/* Header file associated with GLCD FONT header file handling TOOLS structures etc. */
/* *font.h file parser ... */
#define NOTYETFONT -1 /* order NOT YET known or defined */
#define CLONEFONT 0 /* CLONE input FONT order */
#define ROWCOLFONT 1 /* Height, Width */
#define COLROWFONT 2 /* Width, Height */
#define MAX_FONT_HEIGHT 16
#define MAX_FONT_WIDTH 16
typedef enum
{
CCOMMENT, /* /* */
STATICKEY, /* static */
CONSTKEY, /* const */
UNSIGNEDKEY, /* unsigned */
INTKEY, /* int */
CHARKEY, /* char */
CHRBRKSKEY, /* [] */
LBRACEKEY, /* { */
RBRACESCKEY, /* }; */
KEYDATA, /* ***DATA*** */
HEIGHTDKEY, /* Height */
WIDTHDKEY, /* Width */
LAST_FONTKEY,
FONTKEYTYPES
} fontkeynames;
/* Ensure globals only declared once ... */
/* Relies on NO_MAIN being defined in libraries */
#ifndef NO_MAIN
/* Useful strings ... */
char fontblank[] = " ";
char fonterror[] = "***ERROR*** ";
char fontwarng[] = "**WARNING** ";
fontkeynames fontwhat,fontwhich,qfontkey;
char *fontkeylist[FONTKEYTYPES];
char fontInfile[FN_LEN],fontOutfile[FN_LEN];
char fontInfopen,fontOutfopen;
char fontfread;
char FontInError;
int FontInHeight;
int FontInOrder;
int FontInWidth;
int FontOutOrder;
FILE *fontInfn,*fontOutfn;
#else /* !NO_MAIN */
extern char fontblank[];
extern char fonterror[];
extern char fontwarng[];
extern fontkeynames fontwhat,fontwhich,qfontkey;
extern char *fontkeylist[FONTKEYTYPES];
extern char fontInfile[FN_LEN],fontOutfile[FN_LEN];
extern char fontInfopen,fontOutfopen;
extern char fontfread;
extern char FontInError;
extern int FontInHeight;
extern int FontInOrder;
extern int FontInWidth;
extern int FontOutOrder;
extern FILE *fontInfn,*fontOutfn;
#endif /* !NO_MAIN */
/* Primitives */
void setupfontkeys(void);
fontkeynames whichfontkey(char *fontkeystr);
void listfontkeys(void);
void Open_Font_In_File(void);
void Close_Font_In_File(void);
void Font_In_Error(fontkeynames error_key);
void Open_Font_Out_File(void);
void Close_Font_Out_File(void);
void Clone_Font_Header_Comments(char qv);
/* qv == Query Verbose flag */
char *get_stem_no_path(char filename[]);
void Regen_Font_HW(char qv);
/* Regen(erate) Font H(eight) & W(idth) */
/* qv == Query Verbose flag */
void RegenFontDefnHdr(char qv);
/* Regen(erate) Font Def(initio)n H(ea)d(e)r */
/* qv == Query Verbose flag */
void RegenLBrace(void);
/* Regen(erate) L(eft) Brace */
fontkeynames QueryCloneCharBlockComment(char qv);
/* QueryClone Char(acter) Block Comment ...
* Returns fontkeyname of first non-blank line
* qv == Query Verbose flag
*/
void LoadCharBlockData(unsigned int pixbyte[],
int index,
char qv);
/* Load Char(acter) Block Data ...
* qv == Query Verbose flag
*/
unsigned int getPixBit(unsigned int pixbyte,
unsigned int mask);
void WriteCharBlockData(unsigned int pixbyte[],
int index);
void Append_Empty_Change_Log(char qv);
/* qv == Query Verbose flag */
Dump of the initial state of some 'C' structures
(Output of lcd_structures_list.c)
lcd_structures_list.c Version 0.06 {Exp}, [12/11/2016], (c) F_Trevor_Gowen
<--| Package i2c_spi_chips_0.0 |-->
lcd_iface_8bit:
lcd iface_8bit status:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
RS GPIO 27
E GPIO 22
EHMIN 204 uS
ELMIN 41 uS
ELMAX 1600 uS
WAIT 41 uS
NFB 3b
BSIZE 80
pcf8574 chip status:
ADDR 26
QIOP ff
NAME HD44780U
lcd_fi2c_4bit:
lcd fi2c_4bit status:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
EHMIN 612 uS
ELMIN 408 uS
ELMAX 1600 uS
WAIT 408 uS
NFB 28
BSIZE 80
pcf8574 chip status:
ADDR 27
QIOP ff
NAME HD44780U
lcd_mi2c_4bit:
lcd mi2c_4bit status:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
EHMIN 612 uS
ELMIN 408 uS
ELMAX 1600 uS
WAIT 408 uS
NFB 28
BSIZE 80
pcf8574 chip status:
ADDR 20
QIOP ff
NAME HD44780U
lcd_ibo_i2c_4bit:
lcd ibo_i2c_4bit status:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
EHMIN 612 uS
ELMIN 408 uS
ELMAX 1600 uS
WAIT 408 uS
NFB 28
BSIZE 80
pcf8574 chip status:
ADDR 3a
QIOP ff
NAME HD44780U
dual_lcd:
dual lcd status:
mcp23017 chip status:
ADDR 20
IOCON 0a
IODIRA 00
IODIRB 01
IPOLA 02
IPOLB 03
GPIOA 12
GPIOB 13
NAME HD44780U
lcd A8bit:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
RS GPIO 22
E GPIO 17
EHMIN 284 uS
ELMIN 41 uS
ELMAX 1600 uS
WAIT 41 uS
NFB 3b
BSIZE 80
lcd B4bit:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
RS GPIO 23
E GPIO 18
EHMIN 852 uS
ELMIN 41 uS
ELMAX 1600 uS
WAIT 41 uS
NFB 28
BSIZE 80
B4DATA 00
lcd_spi_8bit:
lcd spi_8bit status:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
RS GPIO 22
E GPIO 27
EHMIN 16 uS
ELMIN 41 uS
ELMAX 1600 uS
WAIT 41 uS
NFB 3b
BSIZE 80
gc74hc595 chip status:
SPI_DEV /dev/spidev0.0
GOE GPIO 17
SCL GPIO 18
NAME HD44780U
lcd_spi_4bit:
lcd spi_4bit status:
mcp23S08 chip status:
SPI_DEV /dev/spidev0.1
WADDR 40
IOCON 05
IODIR 00
IOPOL 01
GPIO 09
NAME HD44780U
lcd S4bit:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
E GPIO 22
EHMIN 48 uS
ELMIN 41 uS
ELMAX 1600 uS
WAIT 41 uS
NFB 28
BSIZE 80
S4DATA 00
lcd_spi_4bitV2:
lcd spi_4bitV2 status:
hw74hc595 chip status:
SPI_DEV /dev/spidev0.0
NAME HD44780U
lcd S4bit:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
E GPIO 27
EHMIN 16 uS
ELMIN 41 uS
ELMAX 1600 uS
WAIT 41 uS
NFB 28
BSIZE 80
S4DATA 00
lcd_gpio_4bit:
lcd gpio_4bit status:
RS GPIO 17
E GPIO 18
BL0 GPIO 27
BL1 GPIO 22
D4 GPIO 23
D5 GPIO 24
D6 GPIO 25
D7 GPIO 04
NAME HD44780U
lcd G4bit:
TYPE 1
NC 16
NL 2
DDRAM[] 00 28 00 00
EHMIN 1 uS
ELMIN 41 uS
ELMAX 1600 uS
WAIT 41 uS
NFB 28
BSIZE 80
G4DATA 00
glcd_spi2p_8bit:
glcd spi2p_8bit status:
NC 16
NL 4
DDRAM[] 80 90 80 90
RS GPIO 25
E GPIO 24
BL GPIO 23
EHMIN 16 uS
ELMIN 72 uS
ELMAX 1672 uS
WAIT 72 uS
gc74hc595 chip status:
SPI_DEV /dev/spidev0.1
GOE GPIO 27
SCL GPIO 22
NAME QC12864B/ST7920
i2c_ssd1306_oled:
i2c_ssd1306_oled status:
ADDR 3c
C0DC 00
CMDS af
CMDD[0] 20
CMDD[1] 00
CMDT[0] 22
CMDT[1] 00
CMDT[2] 07
CMDM[0] 00
NAME KEYES
glcd_spibl2:
glcd spibl2 status:
NC 16
NL 4
DDRAM[] 80 90 80 90
BL0 GPIO 04
BL1 GPIO 17
st7920sm chip status:
SPI_DEV /dev/spidev0.1
NAME 12864ZW/ST7920
Download a "Snapshot" tarball
NB: This may include current "work-in-progress" that is not yet documented here or in the README file!
Download i2c_spi_chips-0.0.tar.gz (2018-06-16 20:07:15, 389.3 KB)