- update drivers to use new API
(get rid of those pseudo options named 'Arguments' in the config file) - replace printf / printf calls by debug / report calls in some drivers - sort and extend LCDd.conf
This commit is contained in:
@@ -21,71 +21,58 @@
|
||||
# If -d is specified on the command line, the Driver= options in the
|
||||
# config file are ignored.
|
||||
#
|
||||
# The drivers can read their own options from the config file, but some of
|
||||
# them don't do this yet. They expect 'command-line'-format parameters that
|
||||
# were previously placed on the command line. These parameters can be
|
||||
# given to the driver in the following way:
|
||||
#
|
||||
# Arguments="place arguments here"
|
||||
#
|
||||
# The arguments between the quotes are passed to the driver.
|
||||
# As said before these are the same arguments that the driver would have
|
||||
# been passed under the old command line format of
|
||||
#
|
||||
# -d <driver> "<driverargs>"
|
||||
#
|
||||
# Note that the -d option still works, but not allows driverargs anymore.
|
||||
# The drivers read their own options from the respective sections.
|
||||
|
||||
|
||||
|
||||
## Server section with all kinds of settings for the LCDd server ##
|
||||
[server]
|
||||
# Server section with all kinds of settings for the LCDd server
|
||||
|
||||
# Tells the server to load the given drivers. Multiple lines can be given.
|
||||
# The name of the driver is exactly the same as the name of the driver
|
||||
# module that is to be loaded, including the case of the letters !
|
||||
# (That is: unless a file= option is given in the driver section)
|
||||
Driver=curses
|
||||
#Driver=hd44780
|
||||
#Driver=IOWarrior
|
||||
#Driver=MtxOrb
|
||||
#Driver=CFontz633
|
||||
#Driver=CwLnx
|
||||
#
|
||||
# Tells the server to load the given drivers. Multiple lines can be given.
|
||||
# The name of the driver is exactly the same as the name of the driver
|
||||
# module that is to be loaded, including the case of the letters !
|
||||
# (That is: unless a file= option is given in the driver section)
|
||||
|
||||
Bind=127.0.0.1
|
||||
# Tells the driver to bind to the given interface
|
||||
Bind=127.0.0.1
|
||||
|
||||
Port=13666
|
||||
# Listen on this specified port; defaults to 13666.
|
||||
Port=13666
|
||||
|
||||
#ReportLevel=3
|
||||
# Sets the reporting level; defaults to 2 (warnings and errors only).
|
||||
#ReportLevel=3
|
||||
|
||||
#ReportToSyslog=yes
|
||||
# Should we report to syslog instead of stderr ? Default: no
|
||||
#ReportToSyslog=yes
|
||||
|
||||
WaitTime=5
|
||||
# Sets the default time in seconds to displays a screen.
|
||||
WaitTime=5
|
||||
|
||||
User=nobody
|
||||
# User to run as. LCDd will drop its root priviledges,
|
||||
# if any, and run as this user instead.
|
||||
User=nobody
|
||||
|
||||
#ServerScreen=no
|
||||
# If yes, the the serverscreen will be rotated as a usual info screen. If no,
|
||||
# it will be a background screen, only visible when no other screens are
|
||||
# active.
|
||||
#ServerScreen=no
|
||||
|
||||
#Foreground=no
|
||||
# The server will stay in the foreground if set to true.
|
||||
#Foreground=no
|
||||
|
||||
DriverPath=server/drivers/
|
||||
# Where can we find the driver modules ?
|
||||
# IMPORTANT: Make sure to change this setting to reflect your
|
||||
# specific setup! Otherwise LCDd won't be able to find
|
||||
# the driver modules and will thus not be able to
|
||||
# function properly.
|
||||
# NOTE: Always place a slash as last character !
|
||||
DriverPath=server/drivers/
|
||||
|
||||
# The "...Key=" lines define what the server does with keypresses that
|
||||
# don't go to any client.
|
||||
@@ -107,8 +94,8 @@ NextScreenKey=Right
|
||||
|
||||
|
||||
|
||||
## The menu section. The menu is an internal LCDproc client. ##
|
||||
[menu]
|
||||
# The menu section. The menu is an internal LCDproc client.
|
||||
# You can configure what keys the menu should use. Note that only the menukey
|
||||
# will be reserved exclusively, the others in shared mode.
|
||||
|
||||
@@ -124,87 +111,83 @@ DownKey=Down
|
||||
#DownKey=Down
|
||||
|
||||
|
||||
# Driver sections are below this line, in alphabetical order
|
||||
|
||||
### Driver sections are below this line, in alphabetical order ###
|
||||
|
||||
|
||||
## EMAC BayRAD driver ##
|
||||
[bayrad]
|
||||
# EMAC BayRAD driver
|
||||
|
||||
Arguments="fill in here"
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
Device=/dev/lcd
|
||||
|
||||
# -d --device Select the output device to use [/dev/lcd]
|
||||
# -t --type Select the LCD type (size) [20x2]
|
||||
# -s --speed Set the communication speed [19200]
|
||||
# -h --help Show this help information
|
||||
# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200]
|
||||
Speed=9600
|
||||
|
||||
|
||||
|
||||
## CrystalFontz driver (for CF632 & CF634) ##
|
||||
[CFontz]
|
||||
# CrystalFontz driver
|
||||
# Use this driver for CF632 and CF634.
|
||||
|
||||
# Select the output device to use [/dev/lcd]
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
Device=/dev/ttyS0
|
||||
# Select the LCD type (size) [20x4]
|
||||
# Select the LCD size [default: 20x4]
|
||||
Size=20x4
|
||||
# Set the initial contrast [140]
|
||||
# Set the initial contrast [default: 140; legal: 0 - 1000]
|
||||
Contrast=140
|
||||
# Set the initial brightness [255]
|
||||
# Set the initial brightness [default: 255; legal: 0 - 255]
|
||||
Brightness=255
|
||||
# Set the initial off-brightness [0]
|
||||
# Set the initial off-brightness [default: 0; legal: 0 - 255]
|
||||
# This value is used when the display is normally
|
||||
# switched off in case LCDd is inactive
|
||||
OffBrightness=0
|
||||
# Set the communication speed [9600]
|
||||
# possible values: 1200, 2400, 9600
|
||||
# Set the communication speed [default: 9600; legal: 1200, 2400, 9600 or 19200]
|
||||
Speed=9600
|
||||
# Set the firmware version (New means >= 2.0) [no]
|
||||
# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no]
|
||||
NewFirmware=no
|
||||
# Reinitialize the LCD's BIOS [no]
|
||||
# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
|
||||
# normally you shouldn't need this
|
||||
Reboot=no
|
||||
|
||||
|
||||
[CFontz633]
|
||||
# CrystalFontz633 driver
|
||||
# Use this driver only for CF633.
|
||||
|
||||
# Select the output device to use [/dev/lcd]
|
||||
## CrystalFontz633 driver (for CF633 only) ##
|
||||
[CFontz633]
|
||||
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
Device=/dev/ttyS0
|
||||
# Select the LCD type (size) [20x4]
|
||||
# Select the LCD type (size) [default: 20x4]
|
||||
Size=16x2
|
||||
# Set the initial contrast [140]
|
||||
# Set the initial contrast [default: 140; legal: 0 - 1000]
|
||||
Contrast=140
|
||||
# Set the initial brightness [100]
|
||||
# Brightness hardware value is between 0 and 100.
|
||||
# Set the initial brightness [default: 100; legal: 0 - 255]
|
||||
Brightness=100
|
||||
# Set the initial off-brightness [0]
|
||||
# Set the initial off-brightness [default: 0; legal: 0 - 255]
|
||||
# This value is used when the display is normally
|
||||
# switched off in case LCDd is inactive
|
||||
OffBrightness=50
|
||||
# Set the communication speed [9600]
|
||||
# possible values: 19200
|
||||
# Set the communication speed [default: 9600; legal: 1200, 2400, 9600, 19200, 115200]
|
||||
Speed=19200
|
||||
# Set the firmware version (New means >= 2.0) [no]
|
||||
# Set the firmware version (New means >= 2.0) [default: no; legal: yes, no]
|
||||
# Currently this flag is not in use, there is no such thing as NewFirmware. ;=)
|
||||
NewFirmware=no
|
||||
# Reinitialize the LCD's BIOS [no]
|
||||
#NewFirmware=no
|
||||
# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
|
||||
# I want to reboot the LCD to make sure we start from a known state
|
||||
Reboot=yes
|
||||
|
||||
|
||||
## Curses driver ##
|
||||
[curses]
|
||||
# Curses driver
|
||||
|
||||
# color settings
|
||||
# foreground color [blue]
|
||||
# foreground color [default: blue]
|
||||
foreground=blue
|
||||
# background color [cyan]
|
||||
# background color [default: cyan]
|
||||
background=cyan
|
||||
# backlight color [red]
|
||||
# backlight color [default: red]
|
||||
backlight=red
|
||||
|
||||
# display size [20x4]
|
||||
# display size [default: 20x4]
|
||||
size=20x4
|
||||
|
||||
# What position (X,Y) to start the left top corner at...
|
||||
@@ -212,21 +195,22 @@ size=20x4
|
||||
topleftx=7
|
||||
toplefty=7
|
||||
|
||||
[CwLnx]
|
||||
# Cwlinux driver
|
||||
|
||||
# Select the output device to use [/dev/lcd]
|
||||
|
||||
## Cwlinux driver ##
|
||||
[CwLnx]
|
||||
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
#Device=/dev/ttyS0
|
||||
Device=/dev/ttyUSB0
|
||||
|
||||
# Select the LCD type (size) [20x4]
|
||||
# Select the LCD size [default: 20x4]
|
||||
Size=20x4
|
||||
|
||||
# Set the communication speed [9600]
|
||||
# possible values: 9600, 19200
|
||||
# Set the communication speed [default: 19200; legal: 9600, 19200]
|
||||
Speed=19200
|
||||
|
||||
# Reinitialize the LCD's BIOS [no]
|
||||
# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
|
||||
# normally you shouldn't need this
|
||||
Reboot=no
|
||||
|
||||
@@ -242,7 +226,6 @@ Keypad=yes
|
||||
# You can leave those unchanged if you have a standard keypad.
|
||||
# You can change it if you want to report other keystrings or have a non
|
||||
# standard keypad.
|
||||
|
||||
# KeyMap_A=Up
|
||||
# KeyMap_B=Down
|
||||
# KeyMap_C=Left
|
||||
@@ -255,64 +238,67 @@ Keypad=yes
|
||||
#keypad_test_mode=yes
|
||||
|
||||
|
||||
|
||||
## Matrix Orbital GLK driver ##
|
||||
[glk]
|
||||
# Matrix Orbital GLK driver
|
||||
|
||||
Arguments="-d /dev/ttyS0 -s 9600"
|
||||
# select the serial device to use [default: /dev/lcd]
|
||||
Device=/dev/lcd
|
||||
|
||||
# -d, --device select the serial device to use [/dev/lcd]
|
||||
# -c, --contrast set the initial contrast value [140]
|
||||
# -s, --speed set the serial port speed [19200]
|
||||
# -h, --help display this help text
|
||||
# set the initial contrast value [default: 560; legal: 0 - 1000]
|
||||
Contrast=560
|
||||
|
||||
# set the serial port speed [default: 19200; legal: 9600, 19200, 38400]
|
||||
Speed=19200
|
||||
|
||||
|
||||
|
||||
## Hitachi HD44780 driver ##
|
||||
[hd44780]
|
||||
# Hitachi HD44780 driver
|
||||
|
||||
Port=0x378
|
||||
# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC
|
||||
Port=0x378
|
||||
|
||||
ConnectionType=4bit
|
||||
# Select what type of connection. See documentation for types.
|
||||
ConnectionType=4bit
|
||||
|
||||
Keypad=no
|
||||
# If you have a keypad connected.
|
||||
# You may also need to configure the keypad layout further on in this file.
|
||||
Keypad=no
|
||||
|
||||
Backlight=no
|
||||
# If you have a switchable backlight.
|
||||
Backlight=no
|
||||
|
||||
Outputport=no
|
||||
# If you have the additional output port ("bargraph") and you want to
|
||||
# be able to control it with the lcdproc OUTPUT command
|
||||
Outputport=no
|
||||
|
||||
#Lastline=true
|
||||
# Specifies if the last line is pixel addressable or it controls an
|
||||
# underline effect. Default: true (pixel addressable)
|
||||
# underline effect. [default: true (= pixel addressable); legal: yes, no]
|
||||
#Lastline=true
|
||||
|
||||
Size=20x4
|
||||
# Specifies the size of the LCD.
|
||||
# In case of multiple combined displays, this should be the total size.
|
||||
Size=20x4
|
||||
|
||||
#vspan=2,2
|
||||
# For multiple combined displays: how many lines does each display have.
|
||||
# Vspan=2,2 means both displays have 2 lines.
|
||||
#vspan=2,2
|
||||
|
||||
#ExtendedMode=yes
|
||||
# If you have a KS0073 or an other 'almost HD44780-compatible', set this
|
||||
# flag to get into extended mode (4-line linear).
|
||||
# This flag is NOT the old obsolete Extended option.
|
||||
#ExtendedMode=yes
|
||||
|
||||
#DelayMult=2
|
||||
# If your display is slow and cannot keep up with the flow of data from
|
||||
# LCDd, garbage can appear on the LCDd. Set this delay factor to 2 or 4
|
||||
# to increase the delays. Default: 1.
|
||||
#DelayMult=2
|
||||
|
||||
DelayBus=true
|
||||
# You can reduce the inserted delays by setting this to false.
|
||||
# On fast PCs it is possible your LCD does not respond correctly.
|
||||
# Default: true.
|
||||
DelayBus=true
|
||||
|
||||
# If you have a keypad you can assign keystrings to the keys.
|
||||
# See documentation for used terms and how to wire it.
|
||||
@@ -320,7 +306,6 @@ DelayBus=true
|
||||
# KeyDirect_4=Enter
|
||||
# For matrix keys use the X and Y coordinates of the key:
|
||||
# KeyMatrix_1_3=Enter
|
||||
|
||||
KeyMatrix_4_1=Enter
|
||||
KeyMatrix_4_2=Up
|
||||
KeyMatrix_4_3=Down
|
||||
@@ -328,7 +313,13 @@ KeyMatrix_4_4=Escape
|
||||
|
||||
|
||||
|
||||
# Code Mercenaries IO-Warrior drivr
|
||||
## ICP A106 driver ##
|
||||
[icp_a106]
|
||||
Device=/dev/ttyS1
|
||||
|
||||
|
||||
|
||||
## Code Mercenaries IO-Warrior driver ##
|
||||
[IOWarrior]
|
||||
|
||||
# display dimensions
|
||||
@@ -339,61 +330,56 @@ Size=20x4
|
||||
#SerialNumber=00000674
|
||||
|
||||
# Specifies if the last line is pixel addressable or it controls an
|
||||
# underline effect. Default: true (pixel addressable)
|
||||
# underline effect. [default: true (= pixel addressable); legal: yes, no]
|
||||
#Lastline=true
|
||||
|
||||
|
||||
|
||||
## IrMan driver ##
|
||||
[IrMan]
|
||||
#IrMan driver
|
||||
#if in trouble with IrMan, try Lirc emulator for IrMan
|
||||
|
||||
Arguments="fill in here"
|
||||
# Select the input device to use
|
||||
#Device=/dev/irman
|
||||
|
||||
# -d --device Select the input device to use
|
||||
# -c --config Select the configuration file to use
|
||||
# -h --help Show this help information
|
||||
# Select the configuration file to use
|
||||
#Config=/etc/irman.cfg
|
||||
|
||||
|
||||
|
||||
## Joystick driver ##
|
||||
[joy]
|
||||
# Joystick driver
|
||||
|
||||
Arguments="-d /dev/js0"
|
||||
# Select the input device to use [default: /dev/js0]
|
||||
Device=/dev/js0
|
||||
|
||||
# -d --device Select the input device to use [/dev/js0]
|
||||
# -a --axes Modify the axis map
|
||||
# -b --buttons Modify the button map
|
||||
# -h --help Show this help information
|
||||
# Modify the axis mapa [default: EFGHIJKLMNOPQRST]
|
||||
#AxisMap=EFGHIJKLMNOPQRST
|
||||
|
||||
# Modify the button map [default: BDACEFGHIJKLMNOP]
|
||||
#ButtonMap=BDACEFGHIJKLMNOP
|
||||
|
||||
|
||||
|
||||
## LB216 driver ##
|
||||
[lb216]
|
||||
# LB216 driver
|
||||
|
||||
Arguments="-d /dev/ttyS0 -s 9600"
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
Device=/dev/lcd
|
||||
|
||||
# -d --device Select the output device to use [/dev/lcd]
|
||||
# -t --type Select the LCD type (size) [16x2]
|
||||
# -b --brightness Set the initial brightness [255]
|
||||
# -s --speed Set the communication speed [9600]
|
||||
# -r --reboot Reinitialize the LCD's BIOS
|
||||
# -h --help Show this help information;
|
||||
# Set the initial brightness [default: 255; legal: 0 - 255]
|
||||
Brightness=255
|
||||
|
||||
# Set the communication speed [default: 19200; legal: 2400, 9600]
|
||||
Speed=9600
|
||||
|
||||
|
||||
[mtc_s16209x]
|
||||
# MTC-S16209x driver
|
||||
|
||||
Arguments="-d /dev/ttyS0"
|
||||
|
||||
# -d --device Select the output device to use [/dev/lcd]
|
||||
# -h --help Show this help information;
|
||||
# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
|
||||
Reboot=no
|
||||
|
||||
|
||||
|
||||
## LCDM001 driver ##
|
||||
[lcdm001]
|
||||
# LCDM001 driver
|
||||
|
||||
Device=/dev/ttyS1
|
||||
|
||||
@@ -406,7 +392,6 @@ Device=/dev/ttyS1
|
||||
# BackKey Back(Go to previous screen) Up/Left
|
||||
# ForwardKey Forward(Go to next screen) Down/Right
|
||||
# MainMenuKey Open main menu Exit/Cancel
|
||||
|
||||
PauseKey=LeftKey
|
||||
BackKey=UpKey
|
||||
ForwardKey=DownKey
|
||||
@@ -417,56 +402,72 @@ MainMenuKey=RightKey
|
||||
|
||||
|
||||
|
||||
## HNE LCTerm driver ##
|
||||
[lcterm]
|
||||
# HNE LCTerm driver
|
||||
Device=/dev/ttyS1
|
||||
size=16x2
|
||||
|
||||
|
||||
|
||||
[icp_a106]
|
||||
# ICP A106 driver
|
||||
## LIRC input driver ##
|
||||
[lirc]
|
||||
|
||||
# Specify an alternative location of the lircrc file [default: ~/.lircrc]
|
||||
#lircrc=/etc/lircrc.lcdproc
|
||||
|
||||
# Must be the same as in your lircrc
|
||||
#prog=lcdd
|
||||
|
||||
|
||||
|
||||
## MSI MS-6931 driver for displays in 1HU servers ##
|
||||
[ms6931]
|
||||
|
||||
# device to use [default: /dev/ttyS1]
|
||||
Device=/dev/ttyS1
|
||||
|
||||
|
||||
|
||||
[lirc]
|
||||
# LIRC input driver
|
||||
|
||||
#lircrc=/etc/lircrc.lcdproc
|
||||
# Specify an alternative location of the lircrc file, which is
|
||||
# normally ~/.lircrc
|
||||
|
||||
#prog=lcdd
|
||||
# Must be the same as in your lircrc
|
||||
# display size [default: 16x2]
|
||||
#Size=16x2
|
||||
|
||||
|
||||
|
||||
## MTC-S16209x driver ##
|
||||
[mtc_s16209x]
|
||||
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
Device=/dev/lcd
|
||||
|
||||
# Set the initial brightness [default: 255; legal: 0 - 255]
|
||||
Brightness=255
|
||||
|
||||
# Reinitialize the LCD's BIOS [default: no; legal: yes, no]
|
||||
Reboot=no
|
||||
|
||||
|
||||
|
||||
## Matrix Orbital driver ##
|
||||
[MtxOrb]
|
||||
# Matrix Orbital driver
|
||||
|
||||
# Select the output device to use [/dev/lcd]
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
device=/dev/ttyS0
|
||||
|
||||
# Set the display size [20x4]
|
||||
# Set the display size [default: 20x4]
|
||||
size=20x4
|
||||
|
||||
# Switch on the backlight? [yes]
|
||||
# NOTE: The driver will ignore this if the display
|
||||
# is a vfd or vfd as they crash if the backlight
|
||||
# is turned off
|
||||
# Switch on the backlight? [default: yes]
|
||||
# NOTE: The driver will ignore this if the display is a vfd or vkd
|
||||
# as they crash if the backlight is turned off
|
||||
enablebacklight=yes
|
||||
|
||||
# Set the initial contrast [140]
|
||||
# Set the initial contrast [default: 140]
|
||||
# NOTE: The driver will ignore this if the display
|
||||
# is a vfd or vfd as they don't have this feature
|
||||
# is a vfd or vkd as they don't have this feature
|
||||
contrast=800
|
||||
|
||||
# Set the communication speed [19200]
|
||||
# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200]
|
||||
speed=19200
|
||||
|
||||
# Set the display type [lcd]
|
||||
# Possible settings: lcd, lkd, vfd, vkd
|
||||
# Set the display type [default: lcd; legal: lcd, lkd, vfd, vkd]
|
||||
type=lkd
|
||||
|
||||
# The following table translate from MtxOrb Key to Logical Key.
|
||||
@@ -484,81 +485,77 @@ EscapeKey=F
|
||||
# LCDd. LCDd will output all characters it receives.
|
||||
# Afterwards you can modify the settings above and set
|
||||
# keypad_set_mode to no again.
|
||||
|
||||
keypad_test_mode=no
|
||||
|
||||
|
||||
|
||||
## Seiko Epson 1330 driver ##
|
||||
[sed1330]
|
||||
# Seiko Epson 1330 driver
|
||||
|
||||
# Port where the LPT is. Common values are 0x278, 0x378 and 0x3BC
|
||||
Port=0x378
|
||||
# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC
|
||||
|
||||
# Type of LCD module (legal: G321D, G121C, G242C, G191D, G2446)
|
||||
# Note: G321D is the only one that is tested currently.
|
||||
Type=G321D
|
||||
#Type=G121C
|
||||
#Type=G242C
|
||||
# Type of LCD module. G321D is the only one that is tested currently.
|
||||
|
||||
|
||||
|
||||
## Seiko Epson 1520 driver ##
|
||||
[sed1520]
|
||||
# Seiko Epson 1520 driver
|
||||
|
||||
Arguments="-p 0x278"
|
||||
|
||||
# -p n --port n Select the output device to use port n
|
||||
# -h --help Show this help information
|
||||
# Port where the LPT is. Usual values are 0x278, 0x378 and 0x3BC
|
||||
Port=0x378
|
||||
|
||||
|
||||
|
||||
## stv5730 driver ##
|
||||
[stv5730]
|
||||
# stv5730 driver
|
||||
|
||||
Arguments="fill in here"
|
||||
|
||||
# -p n --port n Select the output device to use port n
|
||||
# -h --help Show this help information
|
||||
# Port the device is connectoed to [default: 0x378]
|
||||
Port=0x378
|
||||
|
||||
|
||||
|
||||
## SVGAlib driver ##
|
||||
[svgalib]
|
||||
# SVGAlib driver
|
||||
|
||||
# No options.
|
||||
# You should of course have your svgalib configured correctly.
|
||||
|
||||
|
||||
|
||||
[T6963]
|
||||
# Toshiba T6963 driver
|
||||
|
||||
#Port=0x378
|
||||
#Size=20x6
|
||||
#ECPlpt=on # use bidirectional mode or not
|
||||
|
||||
|
||||
|
||||
## Text driver ##
|
||||
[text]
|
||||
# Text driver
|
||||
|
||||
# Set the display size [20x4]
|
||||
# Set the display size [default: 20x4]
|
||||
size=20x4
|
||||
|
||||
|
||||
|
||||
## Toshiba T6963 driver ##
|
||||
[t6963]
|
||||
|
||||
# set display size [default: 20x6]
|
||||
Size=20x6
|
||||
|
||||
# port to use [default: 0x378; legal: 0x200 - 0x400]
|
||||
Port=0x378
|
||||
|
||||
# Is ECP mode on? [default: yes; legal: yes, no]
|
||||
#ECPlpt=yes
|
||||
|
||||
# Use graphic? [default: no; legal: yes, no]
|
||||
#graphic=no
|
||||
|
||||
|
||||
|
||||
## Wirz SLI LCD driver ##
|
||||
[Wirz-sli]
|
||||
# Wirz SLI LCD driver
|
||||
|
||||
Arguments="fill in here"
|
||||
# Select the output device to use [default: /dev/lcd]
|
||||
Device=/dev/lcd
|
||||
|
||||
# -d --device Select the output device to use [/dev/lcd]
|
||||
# -s --speed Set the communication speed [19200]
|
||||
# -h --help Show this help information
|
||||
# Set the communication speed [default: 19200; legal: 1200, 2400, 9600, 19200, 38400, 57600, 115200]
|
||||
Speed=19200
|
||||
|
||||
|
||||
|
||||
[ms6931]
|
||||
# MSI MS-6931 driver for displays in 1HU servers
|
||||
Device=/dev/ttyS1
|
||||
#Size=16x2
|
||||
# EOF
|
||||
|
||||
@@ -62,29 +62,12 @@ doing here.
|
||||
</warning>
|
||||
|
||||
<para>
|
||||
The drivers can read their own options from the config file, but most of
|
||||
them don't do this yet. They expect 'command-line'-format parameters that
|
||||
were previously placed on the command line. These parameters can be
|
||||
given to the driver in the following way:
|
||||
</para>
|
||||
|
||||
<example>
|
||||
<title><filename>LCDd.conf</filename>: Compatibility mode for drivers written for 0.4.1</title>
|
||||
<programlisting>
|
||||
|
||||
Arguments="place arguments here"
|
||||
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<para>
|
||||
The arguments between the quotes are passed to the driver.
|
||||
As said before these are the same arguments that would have
|
||||
been passed to the driver using the old command line format of
|
||||
The drivers read their own options from the config file.
|
||||
For this purpose they use the config sections that are named like the driver.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<command>LCDd -d driver "driverargs"</command>
|
||||
<command>LCDd -d driver</command>
|
||||
</para>
|
||||
|
||||
<note>
|
||||
|
||||
@@ -123,21 +123,21 @@ CFontz_init (Driver * drvthis, char *args)
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "Contrast" , 0 , DEFAULT_CONTRAST) && drvthis->config_get_int ( drvthis->name , "Contrast" , 0 , DEFAULT_CONTRAST) <= 1000) {
|
||||
contrast = drvthis->config_get_int ( drvthis->name , "Contrast" , 0 , DEFAULT_CONTRAST);
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz_init: Contrast must between 0 and 1000. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz_init: Contrast must be between 0 and 1000. Using default value.\n");
|
||||
}
|
||||
|
||||
/*Which backlight brightness*/
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , DEFAULT_BRIGHTNESS) && drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , DEFAULT_BRIGHTNESS) <= 255) {
|
||||
brightness = drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , DEFAULT_BRIGHTNESS);
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz_init: Brightness must between 0 and 255. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz_init: Brightness must be between 0 and 255. Using default value.\n");
|
||||
}
|
||||
|
||||
/*Which backlight-off "brightness"*/
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "OffBrightness" , 0 , DEFAULT_OFFBRIGHTNESS) && drvthis->config_get_int ( drvthis->name , "OffBrightness" , 0 , DEFAULT_OFFBRIGHTNESS) <= 255) {
|
||||
offbrightness = drvthis->config_get_int ( drvthis->name , "OffBrightness" , 0 , DEFAULT_OFFBRIGHTNESS);
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz_init: OffBrightness must between 0 and 255. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz_init: OffBrightness must be between 0 and 255. Using default value.\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -149,21 +149,21 @@ CFontz633_init (Driver * drvthis, char *args)
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "Contrast" , 0 , DEFAULT_CONTRAST) && drvthis->config_get_int ( drvthis->name , "Contrast" , 0 , DEFAULT_CONTRAST) <= 1000) {
|
||||
contrast = drvthis->config_get_int ( drvthis->name , "Contrast" , 0 , DEFAULT_CONTRAST);
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz633_init: Contrast must between 0 and 1000. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz633_init: Contrast must be between 0 and 1000. Using default value.\n");
|
||||
}
|
||||
|
||||
/* Which backlight brightness */
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , DEFAULT_BRIGHTNESS) && drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , DEFAULT_BRIGHTNESS) <= 100) {
|
||||
brightness = drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , DEFAULT_BRIGHTNESS);
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz633_init: Brightness must between 0 and 100. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz633_init: Brightness must be between 0 and 100. Using default value.\n");
|
||||
}
|
||||
|
||||
/* Which backlight-off "brightness" */
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "OffBrightness" , 0 , DEFAULT_OFFBRIGHTNESS) && drvthis->config_get_int ( drvthis->name , "OffBrightness" , 0 , DEFAULT_OFFBRIGHTNESS) <= 100) {
|
||||
offbrightness = drvthis->config_get_int ( drvthis->name , "OffBrightness" , 0 , DEFAULT_OFFBRIGHTNESS);
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz633_init: OffBrightness must between 0 and 100. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz633_init: OffBrightness must be between 0 and 100. Using default value.\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ else
|
||||
if ((0>=tmp) && (tmp<=1000)) {
|
||||
contrast = tmp;
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz633_init: Contrast must between 0 and 1000. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz633_init: Contrast must be between 0 and 1000. Using default value.\n");
|
||||
}
|
||||
|
||||
/* Which backlight brightness */
|
||||
@@ -204,7 +204,7 @@ else
|
||||
if ((0>=tmp) && (tmp<=100)) {
|
||||
brightness = tmp;
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz633_init: Brightness must between 0 and 100. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz633_init: Brightness must be between 0 and 100. Using default value.\n");
|
||||
}
|
||||
|
||||
/* Which backlight-off "brightness" */
|
||||
@@ -213,7 +213,7 @@ else
|
||||
if ((0<=tmp) && (tmp<=100)) {
|
||||
offbrightness = tmp;
|
||||
} else {
|
||||
report (RPT_WARNING, "CFontz633_init: OffBrightness must between 0 and 100. Using default value.\n");
|
||||
report (RPT_WARNING, "CFontz633_init: OffBrightness must be between 0 and 100. Using default value.\n");
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -545,7 +545,7 @@ int CwLnx_init(Driver * drvthis, char *args)
|
||||
/* Which size */
|
||||
strncpy(size, drvthis->config_get_string(drvthis->name, "Size", 0, DEFAULT_SIZE), sizeof(size));
|
||||
size[sizeof(size) - 1] = 0;
|
||||
if (sscanf(size, "%dx%d", &w, &h) != 2
|
||||
if ((sscanf(size, "%dx%d", &w, &h) != 2)
|
||||
|| (w <= 0) || (w > LCD_MAX_WIDTH)
|
||||
|| (h <= 0) || (h > LCD_MAX_HEIGHT)) {
|
||||
report(RPT_WARNING, "CwLnx: Cannot read size: %s. Using default value.\n", size);
|
||||
@@ -586,13 +586,13 @@ int CwLnx_init(Driver * drvthis, char *args)
|
||||
|
||||
|
||||
/* do we have a keypad? */
|
||||
if (drvthis->config_get_bool( drvthis->name , "Keypad" , 0 , 0)) {
|
||||
if (drvthis->config_get_bool( drvthis->name , "Keypad", 0, 0)) {
|
||||
report (RPT_INFO, "CwLnx: Config file tell us we have a keypad...\n");
|
||||
p->have_keypad = 1;
|
||||
}
|
||||
|
||||
/* keypad test mode? */
|
||||
if (drvthis->config_get_bool( drvthis->name , "keypad_test_mode" , 0 , 0)) {
|
||||
if (drvthis->config_get_bool( drvthis->name , "keypad_test_mode", 0, 0)) {
|
||||
report (RPT_INFO, "CwLnx: Config tell us to test the keypad mapping...\n");
|
||||
p->keypad_test_mode = 1;
|
||||
stay_in_foreground = 1;
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
static int iow_lcd_wcmd(usb_dev_handle *udh, unsigned char data[8])
|
||||
{
|
||||
return(usb_control_msg(udh, USB_DT_HID, USB_REQ_SET_REPORT, 0, 1,
|
||||
data, 8, iowTimeout) == 8) ? IOW_OK : IOW_ERROR;
|
||||
data, 8, iowTimeout) == 8) ? IOW_OK : IOW_ERROR;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ typedef struct lcd_logical_driver {
|
||||
|
||||
char * (*getinfo) (); // get a string of info
|
||||
|
||||
} lcd_logical_driver;
|
||||
} Driver;
|
||||
------------------------------ lcd_logical_driver ------------------------------
|
||||
|
||||
The first thing that is done is that lcd_init (lcd.c) is called. This function
|
||||
|
||||
+20
-68
@@ -41,6 +41,8 @@
|
||||
#define CCMODE_HBAR 2
|
||||
#define CCMODE_BIGNUM 3
|
||||
|
||||
#define BAYRAD_DEFAULT_DEVICE "/dev/lcd"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
////////////////////// Base "class" to derive from ///////////////////////
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
@@ -321,16 +323,10 @@ MODULE_EXPORT int
|
||||
bayrad_init(Driver *drvthis, char *args)
|
||||
{
|
||||
|
||||
char device[256];
|
||||
int speed=B9600;
|
||||
char *argv[64];
|
||||
int argc;
|
||||
int i;
|
||||
char device[256] = BAYRAD_DEFAULT_DEVICE;
|
||||
int speed = B9600;
|
||||
struct termios portset;
|
||||
int tmp;
|
||||
|
||||
//debug(RPT_DEBUG,"bayrad_init()\n");
|
||||
strcpy(device, "/dev/lcd");
|
||||
width = 20;
|
||||
height = 2;
|
||||
|
||||
@@ -348,68 +344,24 @@ bayrad_init(Driver *drvthis, char *args)
|
||||
//cellheight = 5;
|
||||
//cellwidth = 8;
|
||||
|
||||
/*-----------------------------------------------------*/
|
||||
/* Read config file */
|
||||
|
||||
//debug(RPT_DEBUG, "bayrad_init: Args(all): %s\n", args);
|
||||
/* What device should be used */
|
||||
strncpy(device, drvthis->config_get_string(drvthis->name, "Device", 0,
|
||||
BAYRAD_DEFAULT_DEVICE), sizeof(device));
|
||||
device[sizeof(device)-1] = '\0';
|
||||
|
||||
argc = get_args(argv, args, 64);
|
||||
|
||||
/*
|
||||
for(i=0; i<argc; i++)
|
||||
{
|
||||
debug(RPT_DEBUG,"Arg(%i): %s\n", i, argv[i]);
|
||||
}
|
||||
*/
|
||||
|
||||
for(i=0; i<argc; i++)
|
||||
{
|
||||
//debug(RPT_DEBUG,"Arg(%i): %s\n", i, argv[i]);
|
||||
if(0 == strcmp(argv[i], "-d") || 0 == strcmp(argv[i], "--device"))
|
||||
{
|
||||
if(i + 1 > argc) {
|
||||
report(RPT_ERR, "bayrad_init: %s requires an argument",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strcpy(device, argv[++i]);
|
||||
}
|
||||
else if(0 == strcmp(argv[i], "-s") || 0 == strcmp(argv[i], "--speed"))
|
||||
{
|
||||
if(i + 1 > argc)
|
||||
{
|
||||
report(RPT_ERR, "bayrad_init: %s requires an argument", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
tmp = atoi(argv[++i]);
|
||||
if(tmp==1200)
|
||||
speed=B1200;
|
||||
else if(tmp==2400)
|
||||
speed=B2400;
|
||||
else if(tmp==9600)
|
||||
speed=B9600;
|
||||
else if(tmp==19200)
|
||||
speed=B19200;
|
||||
else
|
||||
{
|
||||
report(RPT_ERR, "bayrad_init: %s argument must be 1200, 2400, 9600 or 19200. Using default value.",
|
||||
argv[i]);
|
||||
}
|
||||
}
|
||||
else if(0 == strcmp(argv[i], "-h") || 0 == strcmp(argv[i], "--help"))
|
||||
{
|
||||
report(RPT_ERR, "LCDproc EMAC BayRAD LCD driver\n"
|
||||
"\t-d\t--device\tSelect the output device to use [/dev/lcd]\n"
|
||||
/*"\t-t\t--type\t\tSelect the LCD type (size) [20x2]\n"*/
|
||||
"\t-s\t--speed\t\tSet the communication speed [19200]\n"
|
||||
"\t-h\t--help\t\tShow this help information\n");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
report(RPT_ERR, "bayrad_init: Invalid parameter: %s", argv[i]);
|
||||
}
|
||||
|
||||
}
|
||||
/* What speed to use */
|
||||
speed = drvthis->config_get_int(drvthis->name, "Speed", 0, 9600);
|
||||
|
||||
if (speed == 1200) speed = B1200;
|
||||
else if (speed == 2400) speed = B2400;
|
||||
else if (speed == 9600) speed = B9600;
|
||||
else if (speed == 19200) speed = B19200;
|
||||
else {
|
||||
report(RPT_WARNING, "bayrad_init: Illegal speed: %d. Must be one of 1200, 2400, 9600 or 19200. Using default.\n", speed);
|
||||
speed = B9600;
|
||||
}
|
||||
|
||||
// Set up io port correctly, and open it...
|
||||
fd = open(device, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||
|
||||
@@ -249,12 +249,12 @@ curses_drv_init (Driver *drvthis, char *args)
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "topleftx" , 0 , CONF_DEF_TOP_LEFT_X) && drvthis->config_get_int ( drvthis->name , "topleftx" , 0 , CONF_DEF_TOP_LEFT_X) <= 255) {
|
||||
screen_begx = drvthis->config_get_int ( drvthis->name , "topleftx" , 0 , CONF_DEF_TOP_LEFT_X);
|
||||
} else {
|
||||
report (RPT_WARNING, "CURSES: topleftx must between 0 and 255. Using default value %d.\n",CONF_DEF_TOP_LEFT_X);
|
||||
report (RPT_WARNING, "CURSES: topleftx must be between 0 and 255. Using default value %d.\n",CONF_DEF_TOP_LEFT_X);
|
||||
}
|
||||
if (0<=drvthis->config_get_int ( drvthis->name , "toplefty" , 0 , CONF_DEF_TOP_LEFT_Y) && drvthis->config_get_int ( drvthis->name , "toplefty" , 0 , CONF_DEF_TOP_LEFT_Y) <= 255) {
|
||||
screen_begy = drvthis->config_get_int ( drvthis->name , "toplefty" , 0 , CONF_DEF_TOP_LEFT_Y);
|
||||
} else {
|
||||
report (RPT_WARNING, "CURSES: toplefty must between 0 and 255. Using default value %d.\n",CONF_DEF_TOP_LEFT_Y);
|
||||
report (RPT_WARNING, "CURSES: toplefty must be between 0 and 255. Using default value %d.\n",CONF_DEF_TOP_LEFT_Y);
|
||||
}
|
||||
|
||||
//debug: sleep(1);
|
||||
|
||||
+63
-97
@@ -31,6 +31,12 @@
|
||||
#include "shared/str.h"
|
||||
#include "glk.h"
|
||||
#include "glkproto.h"
|
||||
#include "report.h"
|
||||
|
||||
#define GLK_DEFAULT_DEVICE "/dev/lcd"
|
||||
#define GLK_DEFAULT_SPEED 19200
|
||||
#define GLK_DEFAULT_CONTRAST 560
|
||||
|
||||
|
||||
static GLKDisplay * PortFD ;
|
||||
/* Initialize pseudo-CGRAM to empty */
|
||||
@@ -65,77 +71,39 @@ MODULE_EXPORT char *symbol_prefix = "glk_";
|
||||
MODULE_EXPORT int
|
||||
glk_init(Driver *drvthis, char *args)
|
||||
{
|
||||
char * argv[64];
|
||||
int argc;
|
||||
char * device = "/dev/lcd" ;
|
||||
speed_t speed = B19200 ;
|
||||
int i ;
|
||||
contrast = 560;
|
||||
char device[256] = GLK_DEFAULT_DEVICE;
|
||||
speed_t speed = GLK_DEFAULT_SPEED;
|
||||
int contrast = GLK_DEFAULT_CONTRAST;
|
||||
int i;
|
||||
|
||||
// printf("glk_init()\n");
|
||||
/* Read config file */
|
||||
|
||||
argc = get_args( argv, args, 64 );
|
||||
for( i = 0 ; i < argc; ++i ) {
|
||||
if( 0 == strcmp( argv[i], "-d")
|
||||
|| 0 == strcmp( argv[i], "--device" )
|
||||
) {
|
||||
if( i+1 >= argc ) {
|
||||
fprintf( stderr, "glk: %s requires an argument\n", argv[i]);
|
||||
return( -1 );
|
||||
};
|
||||
device = argv[i+1] ;
|
||||
++i ;
|
||||
} else if( 0 == strcmp( argv[i], "-c" )
|
||||
|| 0 == strcmp( argv[i], "--contrast" )
|
||||
) {
|
||||
int tmp ;
|
||||
if( i+1 >= argc ) {
|
||||
fprintf( stderr, "glk: %s requires an argument\n", argv[i]);
|
||||
return( -1 );
|
||||
};
|
||||
tmp = atoi( argv[i+1] );
|
||||
if( tmp < 0 || tmp > 255 ) {
|
||||
fprintf( stderr, "glk: %s argument must be between 0 and 255\n", argv[i]);
|
||||
} else {
|
||||
contrast = tmp ;
|
||||
};
|
||||
++i ;
|
||||
} else if( 0 == strcmp( argv[i], "-s" )
|
||||
|| 0 == strcmp( argv[i], "--speed" )
|
||||
) {
|
||||
int tmp ;
|
||||
if( i+1 >= argc ) {
|
||||
fprintf( stderr, "glk: %s requires an argument\n", argv[i]);
|
||||
return( -1 );
|
||||
};
|
||||
tmp = atoi( argv[i+1] );
|
||||
if( tmp == 9600 ) {
|
||||
speed = B9600 ;
|
||||
} else if( tmp == 19200 ) {
|
||||
speed = B19200 ;
|
||||
} else if( tmp == 38400 ) {
|
||||
speed = B38400 ;
|
||||
} else {
|
||||
fprintf( stderr, "glk: %s argument (%s) not a valid speed.\n", argv[i], argv[i+1] );
|
||||
};
|
||||
++i ;
|
||||
} else if( 0 == strcmp( argv[i], "-h" )
|
||||
|| 0 == strcmp( argv[i], "--help" )
|
||||
) {
|
||||
printf(
|
||||
"LCDproc Matrix-Orbital GLK Graphical LCD driver\n"
|
||||
"\n"
|
||||
"-d, --device select the serial device to use [/dev/lcd]\n"
|
||||
"-c, --contrast set the initial contrast value [560]\n"
|
||||
"-s, --speed set the serial port speed [19200]\n"
|
||||
"-h, --help display this help text\n"
|
||||
);
|
||||
return( -1 );
|
||||
} else {
|
||||
fprintf( stderr, "glk: Invalid parameter: %s\n", argv[i] );
|
||||
};
|
||||
};
|
||||
/* What device should be used */
|
||||
strncpy(device, drvthis->config_get_string(drvthis->name, "Device", 0,
|
||||
GLK_DEFAULT_DEVICE), sizeof(device));
|
||||
device[sizeof(device)-1] = '\0';
|
||||
|
||||
/* What speed to use */
|
||||
speed = drvthis->config_get_int(drvthis->name, "Speed", 0, 9600);
|
||||
|
||||
if (speed == 9600) speed = B9600;
|
||||
else if (speed == 19200) speed = B19200;
|
||||
else if (speed == 38400) speed = B38400;
|
||||
else {
|
||||
report(RPT_WARNING, "glk: Illegal speed: %d. Must be one of 9600, 19200 or 38400. Using default.\n", speed);
|
||||
speed = B19200;
|
||||
}
|
||||
|
||||
/* Which contrast */
|
||||
contrast = drvthis->config_get_int ( drvthis->name , "Contrast" , 0 , GLK_DEFAULT_CONTRAST);
|
||||
if ((contrast < 0) || (contrast > 1000)) {
|
||||
report (RPT_WARNING, "glk: Contrast must be between 0 and 1000. Using default value.\n");
|
||||
contrast = GLK_DEFAULT_CONTRAST;
|
||||
}
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
/* open device */
|
||||
PortFD = glkopen( device, speed );
|
||||
if( PortFD == NULL ) {
|
||||
return -1 ;
|
||||
@@ -145,7 +113,7 @@ glk_init(Driver *drvthis, char *args)
|
||||
glkputl( PortFD, GLKCommand, 0x37, EOF );
|
||||
i = glkget( PortFD );
|
||||
if( i < 0 ) {
|
||||
fprintf( stderr, "glk: GLK did not respond to READ MODULE TYPE.\n" );
|
||||
report(RPT_ERR, "glk: GLK did not respond to READ MODULE TYPE.\n" );
|
||||
return -1 ;
|
||||
} else {
|
||||
switch( i ) {
|
||||
@@ -170,7 +138,7 @@ glk_init(Driver *drvthis, char *args)
|
||||
case 0x24 : // GLK12232-25SM-Penguin
|
||||
width = 20 ; height = 4 ; gpo_count = 2 ; break ;
|
||||
default :
|
||||
fprintf( stderr, "glk: Unrecognized module type: 0x%02x\n", i );
|
||||
report(RPT_ERR, "glk: Unrecognized module type: 0x%02x\n", i );
|
||||
return( -1 );
|
||||
};
|
||||
};
|
||||
@@ -179,7 +147,7 @@ glk_init(Driver *drvthis, char *args)
|
||||
screen_contents = malloc( width * height );
|
||||
|
||||
if(framebuf == NULL || screen_contents == NULL ) {
|
||||
fprintf( stderr, "glk: Unable to allocate memory for screen buffers\n" );
|
||||
report(RPT_ERR, "glk: Unable to allocate memory for screen buffers\n" );
|
||||
glk_close(drvthis);
|
||||
return -1;
|
||||
}
|
||||
@@ -279,7 +247,7 @@ glk_flush(Driver *drvthis)
|
||||
int xs ;
|
||||
char * ps = NULL ;
|
||||
|
||||
// printf( "flush()\n" );
|
||||
debug(RPT_DEBUG, "flush()\n" );
|
||||
|
||||
p = framebuf ;
|
||||
q = screen_contents ;
|
||||
@@ -291,7 +259,7 @@ glk_flush(Driver *drvthis)
|
||||
/* Write accumulated string */
|
||||
glkputl( PortFD, GLKCommand, 0x79, xs*6+1, y*8, EOF );
|
||||
glkputa( PortFD, x - xs, ps );
|
||||
// printf( "draw_frame: Writing at (%d,%d) for %d\n", xs, y, x-xs );
|
||||
debug(RPT_DEBUG, "draw_frame: Writing at (%d,%d) for %d\n", xs, y, x-xs );
|
||||
xs = -1 ;
|
||||
} else if( *q != *p && xs < 0 ) {
|
||||
/* Start new string of changes */
|
||||
@@ -304,7 +272,7 @@ glk_flush(Driver *drvthis)
|
||||
/* Write accumulated line */
|
||||
glkputl( PortFD, GLKCommand, 0x79, xs*6+1, y*8, EOF );
|
||||
glkputa( PortFD, width - xs, ps );
|
||||
// printf( "draw_frame: Writing at (%d,%d) for %d\n", xs, y, width-xs );
|
||||
debug(RPT_DEBUG, "draw_frame: Writing at (%d,%d) for %d\n", xs, y, width-xs );
|
||||
};
|
||||
|
||||
}; /* For y */
|
||||
@@ -322,7 +290,7 @@ glk_string(Driver *drvthis, int x, int y, char string[])
|
||||
{
|
||||
char * p ;
|
||||
|
||||
// printf( "glk_string( %d, %d, \"%s\" )\n", x, y, string );
|
||||
debug(RPT_DEBUG, "glk_string( %d, %d, \"%s\" )\n", x, y, string );
|
||||
|
||||
if( x > width || y > height ) {
|
||||
return ;
|
||||
@@ -346,7 +314,7 @@ glk_chr(Driver *drvthis, int x, int y, char c)
|
||||
y -= 1;
|
||||
|
||||
if( fontselected != 2 ) {
|
||||
// puts( "Switching to font 2" );
|
||||
debug(RPT_DEBUG, "Switching to font 2" );
|
||||
/* Select font 2 */
|
||||
glkputl( PortFD, GLKCommand, 0x31, 2, EOF );
|
||||
fontselected = 2 ;
|
||||
@@ -358,15 +326,13 @@ glk_chr(Driver *drvthis, int x, int y, char c)
|
||||
|
||||
if( myc >= 0 && myc <= 15 ) {
|
||||
/* CGRAM */
|
||||
// if( myc != 0 ) {
|
||||
// printf( "CGRAM changing %d => %d\n", myc, CGRAM[myc&7] );
|
||||
// };
|
||||
debug(RPT_DEBUG, "CGRAM changing %d => %d\n", myc, CGRAM[myc&7] );
|
||||
myc = CGRAM[myc&7] ;
|
||||
} else if( myc == 255 || myc == -1 ) {
|
||||
/* Solid block */
|
||||
myc = 133 ;
|
||||
} else if( (myc > 15 && myc < 32) || myc > 143 ) {
|
||||
fprintf( stderr, "Attempt to write %d to (%d,%d)\n", myc, x, y );
|
||||
debug(RPT_DEBUG, "Attempt to write %d to (%d,%d)\n", myc, x, y );
|
||||
myc = 133 ;
|
||||
};
|
||||
|
||||
@@ -403,7 +369,7 @@ glk_set_contrast(Driver *drvthis, int promille)
|
||||
contrast = promille;
|
||||
|
||||
// Do it
|
||||
// printf("Contrast: %i\n", contrast);
|
||||
debug(RPT_DEBUG, "Contrast: %i\n", contrast);
|
||||
glkputl( PortFD, GLKCommand, 0x50, (int) ((long)promille * 255 / 1000), EOF );
|
||||
}
|
||||
|
||||
@@ -414,10 +380,10 @@ MODULE_EXPORT void
|
||||
glk_backlight(Driver *drvthis, int on)
|
||||
{
|
||||
if(on) {
|
||||
// printf("Backlight ON\n");
|
||||
debug(RPT_DEBUG, "Backlight ON\n");
|
||||
glkputl( PortFD, GLKCommand, 0x42, 0, EOF );
|
||||
} else {
|
||||
// printf("Backlight OFF\n");
|
||||
debug(RPT_DEBUG, "Backlight OFF\n");
|
||||
glkputl( PortFD, GLKCommand, 0x46, EOF );
|
||||
}
|
||||
}
|
||||
@@ -449,7 +415,7 @@ glk_output(Driver *drvthis, int on)
|
||||
MODULE_EXPORT void
|
||||
glk_init_vbar(Driver *drvthis)
|
||||
{
|
||||
// printf("Vertical bars.\n");
|
||||
debug(RPT_DEBUG, "glk_init_vbar()\n");
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@@ -458,7 +424,7 @@ glk_init_vbar(Driver *drvthis)
|
||||
MODULE_EXPORT void
|
||||
glk_init_hbar(Driver *drvthis)
|
||||
{
|
||||
// printf("Horizontal bars.\n");
|
||||
debug(RPT_DEBUG, "glk_init_hbar()\n");
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
@@ -467,7 +433,7 @@ glk_init_hbar(Driver *drvthis)
|
||||
MODULE_EXPORT void
|
||||
glk_init_num(Driver *drvthis)
|
||||
{
|
||||
// printf("Big Numbers.\n");
|
||||
debug(RPT_DEBUG, "glk_init_num()\n");
|
||||
if( fontselected != 3 ) {
|
||||
/* Select Big Numbers font */
|
||||
glkputl( PortFD, GLKCommand, 0x31, 3, EOF );
|
||||
@@ -485,7 +451,7 @@ glk_init_num(Driver *drvthis)
|
||||
MODULE_EXPORT void
|
||||
glk_num(Driver *drvthis, int x, int num)
|
||||
{
|
||||
// printf("BigNum(%i, %i)\n", x, num);
|
||||
debug(RPT_DEBUG, "glk_num(%i, %i)\n", x, num);
|
||||
framebuf[x-1] = num + '0' ;
|
||||
}
|
||||
|
||||
@@ -495,7 +461,7 @@ glk_num(Driver *drvthis, int x, int num)
|
||||
MODULE_EXPORT void
|
||||
glk_set_char(Driver *drvthis, int n, char *dat)
|
||||
{
|
||||
printf("Set Character %i\n", n);
|
||||
debug(RPT_DEBUG, "glk_set_char( %i )\n", n);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -506,7 +472,7 @@ glk_old_vbar(Driver *drvthis, int x, int len)
|
||||
{
|
||||
int y = height ;
|
||||
|
||||
// printf( "glk_vbar( %d, %d )\n", x, len );
|
||||
debug(RPT_DEBUG, "glk_old_vbar( %d, %d )\n", x, len );
|
||||
while( len > cellheight ) {
|
||||
glk_chr( drvthis, x, y, 255 );
|
||||
--y ;
|
||||
@@ -535,7 +501,7 @@ glk_old_vbar(Driver *drvthis, int x, int len)
|
||||
MODULE_EXPORT void
|
||||
glk_old_hbar(Driver *drvthis, int x, int y, int len)
|
||||
{
|
||||
// printf( "glk_hbar( %d, %d, %d )\n", x, y, len );
|
||||
debug(RPT_DEBUG, "glk_old_hbar( %d, %d, %d )\n", x, y, len );
|
||||
while( len > cellwidth ) {
|
||||
glk_chr( drvthis, x, y, 255 );
|
||||
++x ;
|
||||
@@ -571,7 +537,7 @@ glk_old_icon(Driver *drvthis, int which, int dest)
|
||||
unsigned char * q ;
|
||||
int count ;
|
||||
|
||||
// printf("Char %i set to icon %i\n", dest, which);
|
||||
debug(RPT_DEBUG, "glk_old_icon( %i, %i )\n", which, dest);
|
||||
|
||||
if( dest < 0 || dest > 7 ) {
|
||||
/* Illegal custom character */
|
||||
@@ -597,7 +563,7 @@ glk_old_icon(Driver *drvthis, int which, int dest)
|
||||
/* Replace all old icons with new icon in new frame */
|
||||
for( count = width * height ; count ; --count ) {
|
||||
if( *q == old ) {
|
||||
// printf( "icon %d to %d at %d\n", old, new, q - screen_contents );
|
||||
debug(RPT_DEBUG, "icon %d to %d at %d\n", old, new, q - screen_contents );
|
||||
*p = new ;
|
||||
};
|
||||
++q ; ++p ;
|
||||
@@ -623,7 +589,7 @@ glk_old_getkey(Driver *drvthis)
|
||||
static struct timeval lastkey ;
|
||||
struct timeval now ;
|
||||
|
||||
// puts( "glk_getkey( )" );
|
||||
debug(RPT_DEBUG, "glk_getkey()" );
|
||||
|
||||
c = glkgetc( PortFD );
|
||||
|
||||
@@ -631,10 +597,10 @@ glk_old_getkey(Driver *drvthis)
|
||||
/* Key down event */
|
||||
key = c ;
|
||||
gettimeofday( &lastkey, NULL );
|
||||
// printf( "KEY %c at %ld.%06ld\n", c, lastkey.tv_sec, lastkey.tv_usec );
|
||||
debug(RPT_DEBUG, "KEY %c at %ld.%06ld\n", c, lastkey.tv_sec, lastkey.tv_usec );
|
||||
} else if( c >= 'a' && c <= 'z' ) {
|
||||
/* Key up event */
|
||||
// printf( "KEY %c UP\n", c );
|
||||
debug(RPT_DEBUG, "KEY %c UP\n", c );
|
||||
key = -1 ;
|
||||
c = 0 ;
|
||||
} else {
|
||||
@@ -646,12 +612,12 @@ glk_old_getkey(Driver *drvthis)
|
||||
gettimeofday( &now, NULL );
|
||||
msec_diff = (now.tv_sec - lastkey.tv_sec) * 1000 ;
|
||||
msec_diff += (now.tv_usec - lastkey.tv_usec) / 1000 ;
|
||||
// printf( "KEY %c down for %d msec\n", key, msec_diff );
|
||||
debug(RPT_DEBUG, "KEY %c down for %d msec\n", key, msec_diff );
|
||||
if( msec_diff > 1000 ) {
|
||||
/* Generate repeat event */
|
||||
c = key | 0x20 ; /* Upper case to lower case */
|
||||
++lastkey.tv_sec ; /* HACK HACK. repeat at 1 sec intervals */
|
||||
// printf( "KEY %c REPEAT\n", c );
|
||||
debug(RPT_DEBUG, "KEY %c REPEAT\n", c );
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
#include "lcd.h" /* for Driver */
|
||||
|
||||
// initialise this particular driver
|
||||
int hd_init_ext8bit (Driver *driver);
|
||||
int hd_init_ext8bit (Driver *drvthis);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -124,8 +124,6 @@ HD44780_init (Driver * drvthis, char *args)
|
||||
{
|
||||
// TODO: remove the two magic numbers below
|
||||
// TODO: single point of return
|
||||
//char *argv[64];
|
||||
//int i;
|
||||
char buf[40];
|
||||
char *s;
|
||||
int i;
|
||||
@@ -209,8 +207,10 @@ HD44780_init (Driver * drvthis, char *args)
|
||||
report (RPT_ERR, "Error mallocing");
|
||||
}
|
||||
|
||||
if (timing_init() == -1)
|
||||
if (timing_init() == -1) {
|
||||
report(RPT_ERR, "timing_init: failed (%s)\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if defined DELAY_NANOSLEEP
|
||||
// Change to Round-Robin scheduling for nanosleep
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
#include "lcd.h"
|
||||
|
||||
MODULE_EXPORT int HD44780_init (struct lcd_logical_driver *driver, char *args);
|
||||
MODULE_EXPORT int HD44780_init (Driver *drvthis, char *args);
|
||||
MODULE_EXPORT void HD44780_close (Driver *drvthis);
|
||||
MODULE_EXPORT int HD44780_width (Driver *drvthis);
|
||||
MODULE_EXPORT int HD44780_height (Driver *drvthis);
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#define ICP_A106_H
|
||||
|
||||
#include "lcd.h"
|
||||
MODULE_EXPORT int icp_a106_init (struct lcd_logical_driver *driver, char *args);
|
||||
MODULE_EXPORT int icp_a106_init (Driver *drvthis, char *args);
|
||||
MODULE_EXPORT void icp_a106_close (Driver *drvthis);
|
||||
MODULE_EXPORT int icp_a106_width (Driver *drvthis);
|
||||
MODULE_EXPORT int icp_a106_height (Driver *drvthis);
|
||||
|
||||
+27
-37
@@ -24,6 +24,7 @@
|
||||
|
||||
#include "lcd.h"
|
||||
#include "irmanin.h"
|
||||
#include "report.h"
|
||||
#include "../../../libirman-0.4.1b/irman.h"
|
||||
|
||||
char *progname = "irmanin";
|
||||
@@ -76,7 +77,7 @@ lcd_logical_driver *irmanin;
|
||||
// init() should set up any device-specific stuff, and
|
||||
// point all the function pointers.
|
||||
MODULE_EXPORT int
|
||||
irmanin_init (struct lcd_logical_driver *driver, char *args)
|
||||
irmanin_init (Driver *drvthis, char *args)
|
||||
{
|
||||
char device[256];
|
||||
char *ptrdevice;
|
||||
@@ -85,72 +86,61 @@ irmanin_init (struct lcd_logical_driver *driver, char *args)
|
||||
|
||||
char *portname;
|
||||
|
||||
char *argv[64];
|
||||
int argc, i, j;
|
||||
int i;
|
||||
char *filename;
|
||||
|
||||
ptrconfig = NULL;
|
||||
ptrdevice = NULL;
|
||||
|
||||
irmanin = driver;
|
||||
irmanin = drvthis;
|
||||
|
||||
argc = get_args (argv, args, 64);
|
||||
/* Read config file */
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
//printf("Arg(%i): %s\n", i, argv[i]);
|
||||
if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) {
|
||||
if (i + 1 > argc) {
|
||||
fprintf (stderr, "irmanin_init: %s requires an argument\n", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strcpy (device, argv[++i]);
|
||||
ptrdevice = device;
|
||||
} else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--config")) {
|
||||
if (i + 1 > argc) {
|
||||
fprintf (stderr, "irmanin_init: %s requires an argument\n", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strcpy (config, argv[++i]);
|
||||
ptrconfig = config;
|
||||
} else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) {
|
||||
printf ("LCDproc IrMan input driver\n" "\t-d\t--device\tSelect the input device to use\n" "\t-d\t--config\tSelect the configuration file to use\n" "\t-h\t--help\t\tShow this help information\n");
|
||||
return -1;
|
||||
} else {
|
||||
printf ("Invalid parameter: %s\n", argv[i]);
|
||||
}
|
||||
}
|
||||
/* What device should be used */
|
||||
strncpy(device, drvthis->config_get_string(drvthis->name, "Device", 0,
|
||||
""), sizeof(device));
|
||||
device[sizeof(device)-1] = '\0';
|
||||
if (*device != '\0') ptrdevice = device;
|
||||
|
||||
/* What config file should be used */
|
||||
strncpy(config, drvthis->config_get_string(drvthis->name, "Config", 0,
|
||||
""), sizeof(config));
|
||||
config[sizeof(config)-1] = '\0';
|
||||
if (*config != '\0') ptrconfig = config;
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
if (ir_init_commands (ptrconfig, 1) < 0) {
|
||||
fprintf (stderr, "error initialising commands: %s\n", strerror (errno));
|
||||
report(RPT_ERR, "error initialising commands: %s\n", strerror (errno));
|
||||
exit (1);
|
||||
}
|
||||
|
||||
portname = ir_default_portname ();
|
||||
if (portname == NULL) {
|
||||
if (ptrdevice == NULL) {
|
||||
if (ptrdevice != NULL) {
|
||||
portname = ptrdevice;
|
||||
} else {
|
||||
fprintf (stderr, "error no device defined\n");
|
||||
report(RPT_ERR, "error no device defined\n");
|
||||
exit (1);
|
||||
}
|
||||
}
|
||||
|
||||
driver->getkey = irmanin_getkey;
|
||||
driver->close = irmanin_close;
|
||||
drvthis->getkey = irmanin_getkey;
|
||||
drvthis->close = irmanin_close;
|
||||
|
||||
for (i = 1; codes[i] != NULL; i++) {
|
||||
if (ir_register_command (codes[i], i) < 0) {
|
||||
if (errno == ENOENT) {
|
||||
fprintf (stderr, "%s: no code set for `%s'\n", progname, codes[i]);
|
||||
report(RPT_WARNING, "%s: no code set for `%s'\n", progname, codes[i]);
|
||||
} else {
|
||||
fprintf (stderr, "error registering `%s': `%s'\n", codes[i], strerror (errno));
|
||||
report(RPT_WARNING, "error registering `%s': `%s'\n", codes[i], strerror (errno));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
if (ir_init (portname) < 0) {
|
||||
fprintf (stderr, "%s: error initialising Irman: `%s'\n", strerror (errno), portname);
|
||||
report(RPT_ERR, "%s: error initialising Irman: `%s'\n", strerror (errno), portname);
|
||||
exit (1);
|
||||
}
|
||||
|
||||
@@ -184,7 +174,7 @@ irmanin_getkey ()
|
||||
key = (char) 0;
|
||||
switch (cmd = ir_poll_command ()) {
|
||||
case IR_CMD_ERROR:
|
||||
fprintf (stderr, "%s: error reading command: %s\n", progname, strerror (errno));
|
||||
report(RPT_WARNING, "%s: error reading command: %s\n", progname, strerror (errno));
|
||||
break;
|
||||
case IR_CMD_UNKNOWN:
|
||||
break;
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
extern lcd_logical_driver *joy;
|
||||
|
||||
MODULE_EXPORT int irmanin_init (struct lcd_logical_driver *driver, char *args);
|
||||
MODULE_EXPORT int irmanin_init (Driver *drvthis, char *args);
|
||||
MODULE_EXPORT void irmanin_close ();
|
||||
MODULE_EXPORT char irmanin_getkey ();
|
||||
|
||||
|
||||
+25
-38
@@ -36,8 +36,11 @@
|
||||
#include "report.h"
|
||||
#include "shared/str.h"
|
||||
|
||||
#define NAME_LENGTH 128
|
||||
#define JOY_DEFAULT_DEVICE "/dev/js0"
|
||||
#define JOY_NAMELENGTH 128
|
||||
#define JOY_DEFAULT_DEVICE "/dev/js0"
|
||||
#define JOY_MAPSIZE 16
|
||||
#define JOY_DEFAULT_AXISMAP "EFGHIJKLMNOPQRST"
|
||||
#define JOY_DEFAULT_BUTTONMAP "BDACEFGHIJKLMNOP"
|
||||
|
||||
int fd;
|
||||
|
||||
@@ -45,15 +48,15 @@ struct js_event js;
|
||||
|
||||
char axes = 2;
|
||||
char buttons = 2;
|
||||
int jsversion = 0x000800;
|
||||
char jsname[NAME_LENGTH] = "Unknown";
|
||||
int jsversion = 0x000801;
|
||||
char jsname[JOY_NAMELENGTH] = "Unknown";
|
||||
|
||||
int *axis = NULL;
|
||||
int *button = NULL;
|
||||
|
||||
// Configured for a Gravis Gamepad (2 axis, 4 button)
|
||||
char *axismap = "EFGHIJKLMNOPQRST";
|
||||
char *buttonmap = "BDACEFGHIJKLMNOP";
|
||||
char axismap[JOY_MAPSIZE+1] = JOY_DEFAULT_AXISMAP;
|
||||
char buttonmap[JOY_MAPSIZE+1] = JOY_DEFAULT_BUTTONMAP;
|
||||
|
||||
// Vars for the server core
|
||||
MODULE_EXPORT char *api_version = API_VERSION;
|
||||
@@ -69,42 +72,26 @@ MODULE_EXPORT int
|
||||
joy_init (Driver *drvthis, char *args)
|
||||
{
|
||||
char device[256];
|
||||
char *argv[64];
|
||||
int argc, i;
|
||||
|
||||
strcpy (device, JOY_DEFAULT_DEVICE);
|
||||
/* Read config file */
|
||||
|
||||
argc = get_args (argv, args, 64);
|
||||
/* What device should be used */
|
||||
strncpy(device, drvthis->config_get_string(drvthis->name, "Device", 0,
|
||||
JOY_DEFAULT_DEVICE), sizeof(device));
|
||||
device[sizeof(device)-1] = '\0';
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
//printf("Arg(%i): %s\n", i, argv[i]);
|
||||
if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) {
|
||||
if (i + 1 > argc) {
|
||||
fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strcpy (device, argv[++i]);
|
||||
} else if (0 == strcmp (argv[i], "-a") || 0 == strcmp (argv[i], "--axes")) {
|
||||
if (i + 1 > argc) {
|
||||
fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strncpy (axismap, argv[++i], 16);
|
||||
} else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--buttons")) {
|
||||
if (i + 1 > argc) {
|
||||
fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strncpy (buttonmap, argv[++i], 16);
|
||||
} else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) {
|
||||
printf ("LCDproc Joystick input driver\n" "\t-d\t--device\tSelect the input device to use [/dev/js0]\n" "\t-a\t--axes\t\tModify the axis map [%s]\n" "\t-b\t--buttons\tModify the button map [%s]\n" "\t-h\t--help\t\tShow this help information\n", axismap, buttonmap);
|
||||
return -1;
|
||||
} else {
|
||||
printf ("Invalid parameter: %s\n", argv[i]);
|
||||
}
|
||||
/* How does the axis map look like */
|
||||
strncpy(axismap, drvthis->config_get_string(drvthis->name, "AxisMap", 0,
|
||||
JOY_DEFAULT_AXISMAP), sizeof(axismap));
|
||||
axismap[sizeof(axismap)-1] = '\0';
|
||||
|
||||
}
|
||||
/* How does the button map look like */
|
||||
strncpy(buttonmap, drvthis->config_get_string(drvthis->name, "ButtonMap", 0,
|
||||
JOY_DEFAULT_BUTTONMAP), sizeof(buttonmap));
|
||||
buttonmap[sizeof(buttonmap)-1] = '\0';
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
if ((fd = open (device, O_RDONLY)) < 0)
|
||||
return -1;
|
||||
|
||||
@@ -112,7 +99,7 @@ joy_init (Driver *drvthis, char *args)
|
||||
ioctl (fd, JSIOCGVERSION, &jsversion);
|
||||
ioctl (fd, JSIOCGAXES, &axes);
|
||||
ioctl (fd, JSIOCGBUTTONS, &buttons);
|
||||
ioctl (fd, JSIOCGNAME (NAME_LENGTH), jsname);
|
||||
ioctl (fd, JSIOCGNAME (JOY_NAMELENGTH), jsname);
|
||||
|
||||
report (RPT_NOTICE, "Joystick (%s) has %d axes and %d buttons. Driver version is %d.%d.%d.\n",
|
||||
jsname, axes, buttons,
|
||||
|
||||
+45
-91
@@ -38,6 +38,10 @@
|
||||
#include "report.h"
|
||||
//#include "drv_base.h"
|
||||
|
||||
#define LB216_DEFAULT_DEVICE "/dev/lcd"
|
||||
#define LB216_DEFAULT_SPEED 9600
|
||||
#define LB216_DEFAULT_BRIGHTNESS 255
|
||||
|
||||
static int custom=0;
|
||||
typedef enum {
|
||||
hbar = 1,
|
||||
@@ -71,106 +75,53 @@ MODULE_EXPORT char *symbol_prefix = "LB216_";
|
||||
MODULE_EXPORT int
|
||||
LB216_init(Driver * drvthis, char *args)
|
||||
{
|
||||
char *argv[64];
|
||||
int argc;
|
||||
struct termios portset;
|
||||
int i;
|
||||
int tmp;
|
||||
int reboot=0;
|
||||
|
||||
char device[256] = "/dev/lcd";
|
||||
int speed=B9600;
|
||||
int backlight_brightness = 255;
|
||||
char device[256] = LB216_DEFAULT_DEVICE;
|
||||
int speed = LB216_DEFAULT_SPEED;
|
||||
int backlight_brightness = LB216_DEFAULT_BRIGHTNESS;
|
||||
|
||||
|
||||
//debug("LB216_init: Args(all): %s\n", args);
|
||||
/* Read config file */
|
||||
|
||||
argc = get_args(argv, args, 64);
|
||||
/* What device should be used */
|
||||
strncpy(device, drvthis->config_get_string(drvthis->name, "Device", 0,
|
||||
LB216_DEFAULT_DEVICE), sizeof(device));
|
||||
device[sizeof(device)-1] = '\0';
|
||||
|
||||
/*
|
||||
for(i=0; i<argc; i++)
|
||||
{
|
||||
printf("Arg(%i): %s\n", i, argv[i]);
|
||||
}
|
||||
*/
|
||||
|
||||
for(i=0; i<argc; i++)
|
||||
{
|
||||
//printf("Arg(%i): %s\n", i, argv[i]);
|
||||
if(0 == strcmp(argv[i], "-d") ||
|
||||
0 == strcmp(argv[i], "--device"))
|
||||
{
|
||||
if(i + 1 > argc) {
|
||||
fprintf(stderr, "LB216_init: %s requires an argument\n",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strcpy(device, argv[++i]);
|
||||
}
|
||||
else if(0 == strcmp(argv[i], "-b") ||
|
||||
0 == strcmp(argv[i], "--brightness"))
|
||||
{
|
||||
if(i + 1 > argc) {
|
||||
fprintf(stderr, "LB216_init: %s requires an argument\n",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
tmp = atoi(argv[++i]);
|
||||
if((tmp < 0) || (tmp > 255)){
|
||||
fprintf(stderr, "LB216_init: %s argument must between 0 and 255. Using default value.\n",
|
||||
argv[i]);
|
||||
} else backlight_brightness = tmp;
|
||||
}
|
||||
else if(0 == strcmp(argv[i], "-s") ||
|
||||
0 == strcmp(argv[i], "--speed"))
|
||||
{
|
||||
if(i + 1 > argc) {
|
||||
fprintf(stderr, "LB216_init: %s requires an argument\n",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
tmp = atoi(argv[++i]);
|
||||
if(tmp==2400) speed=B2400;
|
||||
else if(tmp==9600) speed=B9600;
|
||||
else {
|
||||
fprintf(stderr, "LB216_init: %s argument must be 2400, or 9600. Using default value.\n",
|
||||
argv[i]);
|
||||
}
|
||||
}
|
||||
else if(0 == strcmp(argv[i], "-h") ||
|
||||
0 == strcmp(argv[i], "--help"))
|
||||
{
|
||||
printf("LCDproc LB216 LCD driver\n"
|
||||
"\t-d\t--device\tSelect the output device to use [/dev/lcd]\n"
|
||||
"\t-t\t--type\t\tSelect the LCD type (size) [16x2]\n"
|
||||
"\t-b\t--brightness\tSet the initial brightness [255]\n"
|
||||
"\t-s\t--speed\t\tSet the communication speed [9600]\n"
|
||||
"\t-r\t--reboot\tReinitialize the LCD's BIOS\n"
|
||||
"\t-h\t--help\t\tShow this help information\n");
|
||||
return -1;
|
||||
}
|
||||
else if(0 == strcmp(argv[i], "-r") ||
|
||||
0 == strcmp(argv[i], "--reboot"))
|
||||
{
|
||||
printf("LCDd: rebooting LB216 LCD...\n");
|
||||
reboot=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Invalid parameter: %s\n", argv[i]);
|
||||
}
|
||||
|
||||
}
|
||||
/* What speed to use */
|
||||
speed = drvthis->config_get_int(drvthis->name, "Speed", 0, LB216_DEFAULT_SPEED);
|
||||
|
||||
if (speed == 2400) speed = B2400;
|
||||
else if (speed == 9600) speed = B9600;
|
||||
else {
|
||||
report(RPT_WARNING, "lb216_init: Illegal speed: %d. Must be 2400 or 9600. Using default.\n", speed);
|
||||
speed = B9600;
|
||||
}
|
||||
|
||||
/* Which backlight brightness */
|
||||
backlight_brightness = drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , LB216_DEFAULT_BRIGHTNESS);
|
||||
if ((backlight_brightness < 0) || (backlight_brightness > 255)) {
|
||||
report (RPT_WARNING, "lb216_init: Brightness must be between 0 and 255. Using default value.\n");
|
||||
backlight_brightness = LB216_DEFAULT_BRIGHTNESS;
|
||||
}
|
||||
|
||||
/* Reboot display? */
|
||||
reboot = drvthis->config_get_bool( drvthis->name , "Reboot", 0, 0);
|
||||
if (reboot)
|
||||
report (RPT_INFO, "LCDd: rebooting LB216 LCD...\n");
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
// Set up io port correctly, and open it...
|
||||
fd = open(device, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||
if (fd == -1)
|
||||
{
|
||||
fprintf(stderr, "LB216_init: failed (%s)\n", strerror(errno));
|
||||
report(RPT_ERR, "lb216_init: open(%s) failed (%s)\n", device, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
//else fprintf(stderr, "LB216_init: opened device %s\n", device);
|
||||
report(RPT_DEBUG, "lb216_init: opened device %s\n", device);
|
||||
|
||||
tcgetattr(fd, &portset);
|
||||
|
||||
// We use RAW mode
|
||||
@@ -195,13 +146,15 @@ LB216_init(Driver * drvthis, char *args)
|
||||
tcsetattr(fd, TCSANOW, &portset);
|
||||
|
||||
// Make sure the frame buffer is there...
|
||||
if (framebuf)
|
||||
framebuf = (unsigned char *)
|
||||
malloc (width * height);
|
||||
framebuf = (unsigned char *) malloc (width * height);
|
||||
if (framebuf == NULL) {
|
||||
report(RPT_ERR, "lb216_init: unable to create framebuffer.\n");
|
||||
return -1;
|
||||
}
|
||||
memset (framebuf, ' ', width * height);
|
||||
|
||||
// Set display-specific stuff..
|
||||
if(reboot)
|
||||
if (reboot)
|
||||
{
|
||||
LB216_reboot();
|
||||
sleep(4);
|
||||
@@ -224,7 +177,8 @@ LB216_close(Driver * drvthis)
|
||||
{
|
||||
close (fd);
|
||||
|
||||
if(framebuf) free(framebuf);
|
||||
if (framebuf)
|
||||
free(framebuf);
|
||||
framebuf = NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
ANY DRIVER SHOULD SIMPLY FREE ITS FRAMEBUFFER AT CLOSE()
|
||||
NO CHECKING FOR NULL NEEDED
|
||||
void
|
||||
free_framebuf (struct lcd_logical_driver *driver) {
|
||||
free_framebuf (Driver *driver) {
|
||||
if (!driver)
|
||||
return;
|
||||
|
||||
@@ -33,7 +33,7 @@ free_framebuf (struct lcd_logical_driver *driver) {
|
||||
/*
|
||||
NEED TO BE ADAPTED TO NEW SITUATION
|
||||
void
|
||||
clear_framebuf (struct lcd_logical_driver *driver) {
|
||||
clear_framebuf (Driver *driver) {
|
||||
int framebuf_size;
|
||||
|
||||
if (!driver)
|
||||
@@ -47,7 +47,7 @@ clear_framebuf (struct lcd_logical_driver *driver) {
|
||||
/*
|
||||
NEED TO BE ADAPTED TO NEW SITUATION
|
||||
int
|
||||
new_framebuf (struct lcd_logical_driver *driver, char *oldbuf) {
|
||||
new_framebuf (Driver *driver, char *oldbuf) {
|
||||
int i;
|
||||
|
||||
if (driver->framebuf == NULL)
|
||||
@@ -68,7 +68,7 @@ new_framebuf (struct lcd_logical_driver *driver, char *oldbuf) {
|
||||
/*
|
||||
NEED TO BE ADAPTED TO NEW SITUATION
|
||||
void
|
||||
insert_str_framebuf (struct lcd_logical_driver *driver, int x, int y, char *string) {
|
||||
insert_str_framebuf (Driver *driver, int x, int y, char *string) {
|
||||
//int i;
|
||||
char buf[64];
|
||||
char *pos;
|
||||
@@ -97,7 +97,7 @@ insert_str_framebuf (struct lcd_logical_driver *driver, int x, int y, char *stri
|
||||
/*
|
||||
NEED TO BE ADAPTED TO NEW SITUATION
|
||||
void
|
||||
insert_chr_framebuf (struct lcd_logical_driver *driver, int x, int y, char c) {
|
||||
insert_chr_framebuf (Driver *driver, int x, int y, char c) {
|
||||
if (!driver)
|
||||
return;
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "lcd.h"
|
||||
#endif
|
||||
|
||||
int new_framebuf (struct lcd_logical_driver *driver, char *oldbuf);
|
||||
int new_framebuf (Driver *driver, char *oldbuf);
|
||||
|
||||
void lib_hbar_static (Driver *drvthis, int x, int y, int len, int promille, int options, int cellwidth, int cc_offset);
|
||||
void lib_vbar_static (Driver *drvthis, int x, int y, int len, int promille, int options, int cellheight, int cc_offset);
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
/* REMOVE: I don't thing this is actualy needed. */
|
||||
/* extern lcd_logical_driver *lcdm001; */
|
||||
|
||||
MODULE_EXPORT int lcdm001_init (struct lcd_logical_driver *driver, char *args);
|
||||
MODULE_EXPORT int lcdm001_init (Driver *drvthis, char *args);
|
||||
MODULE_EXPORT void lcdm001_close (Driver *drvthis);
|
||||
MODULE_EXPORT int lcdm001_width (Driver *drvthis);
|
||||
MODULE_EXPORT int lcdm001_height (Driver *drvthis);
|
||||
|
||||
+13
-14
@@ -96,33 +96,32 @@ lcterm_init (Driver *drvthis, char *args)
|
||||
// which serial device should be used
|
||||
strncpy(device, drvthis->config_get_string ( drvthis->name , "Device" , 0 , DEFAULT_DEVICE),
|
||||
sizeof(device));
|
||||
device[sizeof(device)-1]=0;
|
||||
device[sizeof(device)-1] = '\0';
|
||||
report (RPT_INFO,"LCTERM: Using device: %s", device);
|
||||
|
||||
/* Get and parse size */
|
||||
{
|
||||
char *s;
|
||||
int w,h;
|
||||
char *s = drvthis->config_get_string( drvthis->name, "size", 0, "16x2" );
|
||||
|
||||
// Get and parse size
|
||||
s = drvthis->config_get_string( drvthis->name, "size", 0, "16x2" );
|
||||
fprintf( stderr, "lcterm_init: size: %s\n", s );
|
||||
debug(RPT_DEBUG, "lcterm_init: reading size: %s\n", s );
|
||||
|
||||
if( sscanf( s, "%dx%d", &w, &h) == 2
|
||||
&& (w > 0) && (w <= LCD_MAX_WIDTH)
|
||||
&& (h > 0) && (h <= LCD_MAX_HEIGHT))
|
||||
if((sscanf( s, "%dx%d", &w, &h) != 2)
|
||||
|| (w <= 0) || (w > LCD_MAX_WIDTH)
|
||||
|| (h <= 0) || (h > LCD_MAX_HEIGHT))
|
||||
{
|
||||
p->width = w;
|
||||
p->height = h;
|
||||
report(RPT_WARNING, "LCDTERM: Cannot read size: %s. Using default value.\n", s);
|
||||
sscanf( "16x2", "%dx%d", &w, &h);
|
||||
}
|
||||
else
|
||||
fprintf( stderr, "lcterm_init: Cannot parse size: %s\n", s );
|
||||
p->width = w;
|
||||
p->height = h;
|
||||
}
|
||||
fprintf(stderr,"size: %dx%d\n",p->width, p->height);
|
||||
report (RPT_INFO,"LCTERM: Using size: %dx%d\n",p->width, p->height);
|
||||
|
||||
p->framebuf = malloc (p->width * p->height);
|
||||
p->last_framebuf = malloc (p->width * p->height);
|
||||
if (!p->framebuf || !p->last_framebuf) {
|
||||
report(RPT_ERR, "\nError: unable to create LCTERM framebuffer.\n");
|
||||
report(RPT_ERR, "Error: unable to create LCTERM framebuffer.\n");
|
||||
return -1;
|
||||
}
|
||||
memset (p->framebuf, ' ', p->width * p->height);
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#define LCTERM_H
|
||||
|
||||
#include "lcd.h"
|
||||
MODULE_EXPORT int lcterm_init (struct lcd_logical_driver *driver, char *args);
|
||||
MODULE_EXPORT int lcterm_init (Driver *drvthis, char *args);
|
||||
MODULE_EXPORT void lcterm_close (Driver *drvthis);
|
||||
MODULE_EXPORT int lcterm_width (Driver *drvthis);
|
||||
MODULE_EXPORT int lcterm_height (Driver *drvthis);
|
||||
|
||||
+13
-13
@@ -143,7 +143,7 @@ ms6931_draw_frame (char *dat)
|
||||
// Opens com port and sets baud correctly...
|
||||
//
|
||||
MODULE_EXPORT int
|
||||
ms6931_init (struct lcd_logical_driver *drvthis, char *args)
|
||||
ms6931_init (Driver *drvthis, char *args)
|
||||
{
|
||||
struct termios portset;
|
||||
int w, h;
|
||||
@@ -228,7 +228,7 @@ ms6931_init (struct lcd_logical_driver *drvthis, char *args)
|
||||
// Clean-up
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_close (struct lcd_logical_driver *drvthis)
|
||||
ms6931_close (Driver *drvthis)
|
||||
{
|
||||
ms6931_clear(drvthis);
|
||||
ms6931_flush(drvthis);
|
||||
@@ -247,7 +247,7 @@ ms6931_close (struct lcd_logical_driver *drvthis)
|
||||
/////////////////////////////////////////////////////////////////
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_flush (struct lcd_logical_driver *drvthis)
|
||||
ms6931_flush (Driver *drvthis)
|
||||
{
|
||||
ms6931_draw_frame (framebuf);
|
||||
}
|
||||
@@ -256,13 +256,13 @@ ms6931_flush (struct lcd_logical_driver *drvthis)
|
||||
// Returns the display width/height
|
||||
//
|
||||
MODULE_EXPORT int
|
||||
ms6931_width (struct lcd_logical_driver *drvthis)
|
||||
ms6931_width (Driver *drvthis)
|
||||
{
|
||||
return width;
|
||||
}
|
||||
|
||||
MODULE_EXPORT int
|
||||
ms6931_height (struct lcd_logical_driver *drvthis)
|
||||
ms6931_height (Driver *drvthis)
|
||||
{
|
||||
return height;
|
||||
}
|
||||
@@ -272,7 +272,7 @@ ms6931_height (struct lcd_logical_driver *drvthis)
|
||||
// upper-left is (1,1), and the lower right should be (16,2).
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_chr (struct lcd_logical_driver *drvthis, int x, int y, char c)
|
||||
ms6931_chr (Driver *drvthis, int x, int y, char c)
|
||||
{
|
||||
if (x>width || y>height)
|
||||
return;
|
||||
@@ -285,7 +285,7 @@ ms6931_chr (struct lcd_logical_driver *drvthis, int x, int y, char c)
|
||||
// switches the backlight on/off
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_backlight (struct lcd_logical_driver *drvthis, int on)
|
||||
ms6931_backlight (Driver *drvthis, int on)
|
||||
{
|
||||
static int saved_state = -1;
|
||||
static char out[3] = { '~', 0x01, 0 };
|
||||
@@ -309,7 +309,7 @@ ms6931_backlight (struct lcd_logical_driver *drvthis, int on)
|
||||
// sets the cursor
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_cursor (struct lcd_logical_driver *drvthis, int x, int y, int state)
|
||||
ms6931_cursor (Driver *drvthis, int x, int y, int state)
|
||||
{
|
||||
static int saved_state = -1;
|
||||
static char out[3] = { '~', 0x23, 0 };
|
||||
@@ -339,7 +339,7 @@ ms6931_cursor (struct lcd_logical_driver *drvthis, int x, int y, int state)
|
||||
// Clears the framebuffer and the display
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_clear (struct lcd_logical_driver *drvthis)
|
||||
ms6931_clear (Driver *drvthis)
|
||||
{
|
||||
// ms6931_write("~\042", 2);
|
||||
memset (framebuf, ' ', width * height);
|
||||
@@ -350,7 +350,7 @@ ms6931_clear (struct lcd_logical_driver *drvthis)
|
||||
// upper-left is (1,1), and the lower right should be (16,2).
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_string (struct lcd_logical_driver *drvthis, int x, int y, char string[])
|
||||
ms6931_string (Driver *drvthis, int x, int y, char string[])
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -371,7 +371,7 @@ ms6931_string (struct lcd_logical_driver *drvthis, int x, int y, char string[])
|
||||
// draw a horizontal bar (vertical makes no sense on ms-6931
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_hbar (struct lcd_logical_driver *drvthis, int x, int y, int len, int promille, int pattern)
|
||||
ms6931_hbar (Driver *drvthis, int x, int y, int len, int promille, int pattern)
|
||||
{
|
||||
char bar[17];
|
||||
int max = width - x;
|
||||
@@ -399,7 +399,7 @@ report(RPT_DEBUG, "ms6931_hbar: len=%d, size=%d, promile=%d", len, size, promill
|
||||
// Does the heartbeat...
|
||||
//
|
||||
MODULE_EXPORT void
|
||||
ms6931_heartbeat (struct lcd_logical_driver *drvthis, int state)
|
||||
ms6931_heartbeat (Driver *drvthis, int state)
|
||||
{
|
||||
static int timer = 0;
|
||||
char whichChar;
|
||||
@@ -423,7 +423,7 @@ ms6931_heartbeat (struct lcd_logical_driver *drvthis, int state)
|
||||
//
|
||||
|
||||
MODULE_EXPORT char
|
||||
ms6931_get_key (struct lcd_logical_driver *drvthis)
|
||||
ms6931_get_key (Driver *drvthis)
|
||||
{
|
||||
int ret;
|
||||
char buf;
|
||||
|
||||
+14
-14
@@ -33,21 +33,21 @@
|
||||
#define MS6931_DEF_CELL_HEIGHT 8
|
||||
|
||||
|
||||
MODULE_EXPORT int ms6931_init (struct lcd_logical_driver *drvthis, char *args);
|
||||
MODULE_EXPORT void ms6931_close (struct lcd_logical_driver *drvthis);
|
||||
MODULE_EXPORT int ms6931_width (struct lcd_logical_driver *drvthis);
|
||||
MODULE_EXPORT int ms6931_height(struct lcd_logical_driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_flush (struct lcd_logical_driver *drvthis);
|
||||
MODULE_EXPORT int ms6931_init (Driver *drvthis, char *args);
|
||||
MODULE_EXPORT void ms6931_close (Driver *drvthis);
|
||||
MODULE_EXPORT int ms6931_width (Driver *drvthis);
|
||||
MODULE_EXPORT int ms6931_height(Driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_flush (Driver *drvthis);
|
||||
|
||||
MODULE_EXPORT int ms6931_get_contrast (struct lcd_logical_driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_set_contrast (struct lcd_logical_driver *drvthis, int promille);
|
||||
MODULE_EXPORT void ms6931_backlight (struct lcd_logical_driver *drvthis, int on);
|
||||
MODULE_EXPORT int ms6931_get_contrast (Driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_set_contrast (Driver *drvthis, int promille);
|
||||
MODULE_EXPORT void ms6931_backlight (Driver *drvthis, int on);
|
||||
|
||||
MODULE_EXPORT void ms6931_chr (struct lcd_logical_driver *drvthis, int x, int y, char c);
|
||||
MODULE_EXPORT void ms6931_clear (struct lcd_logical_driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_string (struct lcd_logical_driver *drvthis, int x, int y, char string[]);
|
||||
MODULE_EXPORT char ms6931_get_key (struct lcd_logical_driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_hbar (struct lcd_logical_driver *drvthis, int x, int y, int len, int promille, int pattern);
|
||||
MODULE_EXPORT void ms6931_heartbeat (struct lcd_logical_driver *drvthis, int state);
|
||||
MODULE_EXPORT void ms6931_chr (Driver *drvthis, int x, int y, char c);
|
||||
MODULE_EXPORT void ms6931_clear (Driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_string (Driver *drvthis, int x, int y, char string[]);
|
||||
MODULE_EXPORT char ms6931_get_key (Driver *drvthis);
|
||||
MODULE_EXPORT void ms6931_hbar (Driver *drvthis, int x, int y, int len, int promille, int pattern);
|
||||
MODULE_EXPORT void ms6931_heartbeat (Driver *drvthis, int state);
|
||||
|
||||
#endif /* ndef MS6931_H */
|
||||
|
||||
+38
-136
@@ -57,6 +57,9 @@
|
||||
//#include "shared/str.h"
|
||||
#include "report.h"
|
||||
|
||||
#define MTC_DEFAULT_DEVICE "/dev/lcd"
|
||||
#define MTC_DEFAULT_BRIGHTNESS 255
|
||||
|
||||
int my_error_handle;
|
||||
|
||||
char lcd_open[] = "\xFE\x28"; // From OpenCommPort()
|
||||
@@ -80,39 +83,6 @@ char lcd_showunderline[] = "\xFE\x0E"; // From Show_UnderLine()
|
||||
char lcd_hideunderline[] = "\xFE\x0B"; // From Hide_UnderLine()
|
||||
|
||||
|
||||
int
|
||||
get_args (char **argv, char *str, int max_args)
|
||||
{
|
||||
char *delimiters = " \n\0";
|
||||
char *item;
|
||||
int i = 0;
|
||||
|
||||
if (!argv)
|
||||
return -1;
|
||||
if (!str)
|
||||
return 0;
|
||||
if (max_args < 1)
|
||||
return 0;
|
||||
|
||||
//debug("get_args(%i): string=%s\n", max_args, str);
|
||||
|
||||
// Parse the command line...
|
||||
for (item = strtok (str, delimiters); item;
|
||||
item = strtok (NULL, delimiters))
|
||||
{
|
||||
//debug("get_args: item=%s\n", item);
|
||||
if (i < max_args)
|
||||
{
|
||||
argv[i] = item;
|
||||
i++;
|
||||
}
|
||||
else
|
||||
return i;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
static int custom = 0;
|
||||
|
||||
typedef enum
|
||||
@@ -147,113 +117,50 @@ MODULE_EXPORT char *symbol_prefix = "MTC_S16209X_";
|
||||
MODULE_EXPORT int
|
||||
MTC_S16209X_init (Driver * drvthis, char *args)
|
||||
{
|
||||
char *argv[64];
|
||||
int argc;
|
||||
struct termios portset;
|
||||
int i;
|
||||
char device[256] = MTC_DEFAULT_DEVICE;
|
||||
|
||||
#ifdef CAN_REBOOT_LCD
|
||||
int reboot = 0;
|
||||
#endif // CAN_REBOOT_LCD
|
||||
|
||||
char device[256] = "/dev/lcd";
|
||||
|
||||
#ifdef CAN_CONTROL_BACKLIGHT
|
||||
int tmp;
|
||||
int backlight_brightness = 255;
|
||||
#endif // CAN_CONTROL_BACKLIGHT
|
||||
|
||||
//debug("MTC_S16209X_init: Args(all): %s\n", args);
|
||||
/* Read config file */
|
||||
|
||||
argc = get_args (argv, args, 64);
|
||||
/* What device should be used */
|
||||
strncpy(device, drvthis->config_get_string(drvthis->name, "Device", 0,
|
||||
MTC_DEFAULT_DEVICE), sizeof(device));
|
||||
device[sizeof(device)-1] = '\0';
|
||||
|
||||
/*
|
||||
|
||||
for(i=0; i<argc; i++)
|
||||
{
|
||||
printf("Arg(%i): %s\n", i, argv[i]);
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
//printf("Arg(%i): %s\n", i, argv[i]);
|
||||
if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device"))
|
||||
{
|
||||
if (i + 1 > argc)
|
||||
{
|
||||
fprintf (stderr, "MTC_S16209X_init: %s requires an argument\n",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strcpy (device, argv[++i]);
|
||||
}
|
||||
|
||||
#ifdef CAN_CONTROL_BACKLIGHT
|
||||
else if (0 == strcmp (argv[i], "-b") ||
|
||||
0 == strcmp (argv[i], "--brightness"))
|
||||
{
|
||||
if (i + 1 > argc)
|
||||
{
|
||||
fprintf (stderr, "MTC_S16209X_init: %s requires an argument\n",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
tmp = atoi (argv[++i]);
|
||||
if ((tmp < 0) || (tmp > 255))
|
||||
{
|
||||
fprintf (stderr,
|
||||
"MTC_S16209X_init: %s argument must between 0 and 255. Using default value.\n",
|
||||
argv[i]);
|
||||
}
|
||||
else
|
||||
backlight_brightness = tmp;
|
||||
}
|
||||
/* Which backlight brightness */
|
||||
backlight_brightness = drvthis->config_get_int ( drvthis->name , "Brightness" , 0 , MTC_DEFAULT_BRIGHTNESS);
|
||||
if ((backlight_brightness < 0) || (backlight_brightness > 255)) {
|
||||
report (RPT_WARNING, "MTC_S16209X_init: Brightness must be between 0 and 255. Using default value.\n");
|
||||
backlight_brightness = MTC_DEFAULT_BRIGHTNESS;
|
||||
}
|
||||
#endif // CAN_CONTROL_BACKLIGHT
|
||||
|
||||
else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help"))
|
||||
{
|
||||
printf ("LCDproc MTC_S16209X LCD driver\n"
|
||||
"\t-d\t--device\tSelect the output device to use [/dev/lcd]\n"
|
||||
"\t-t\t--type\t\tSelect the LCD type (size) [16x2]\n"
|
||||
|
||||
#ifdef CAN_CONTROL_BACKLIGHT
|
||||
"\t-b\t--brightness\tSet the initial brightness [255]\n"
|
||||
#endif // CAN_CONTROL_BACKLIGHT
|
||||
|
||||
"\t-r\t--reboot\tReinitialize the LCD's BIOS\n"
|
||||
"\t-h\t--help\t\tShow this help information\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef CAN_REBOOT_LCD
|
||||
else if (0 == strcmp (argv[i], "-r") ||
|
||||
0 == strcmp (argv[i], "--reboot"))
|
||||
{
|
||||
printf ("LCDd: rebooting MTC_S16209X LCD...\n");
|
||||
reboot = 1;
|
||||
}
|
||||
/* Reboot display? */
|
||||
reboot = drvthis->config_get_bool( drvthis->name , "Reboot", 0, 0);
|
||||
if (reboot)
|
||||
report (RPT_INFO, "LCDd: rebooting MTC_S16209x LCD...\n");
|
||||
#endif // CAN_REBOOT_LCD
|
||||
|
||||
else
|
||||
{
|
||||
printf ("Invalid parameter: %s\n", argv[i]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
// Set up io port correctly, and open it...
|
||||
fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||
if (fd == -1)
|
||||
{
|
||||
fprintf (stderr, "MTC_S16209X_init: failed (%s)\n", strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
/*
|
||||
else
|
||||
fprintf (stderr, "MTC_S16209X_init: opened device %s\n", device);
|
||||
*/
|
||||
if (fd == -1) {
|
||||
report(RPT_ERR, "MTC_S16209X_init: open(%s) failed (%s)\n", device, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
report(RPT_DEBUG, "MTC_S16209X_init: opened device %s\n", device);
|
||||
|
||||
fcntl (fd, F_SETFL, 0); // Set port for reading
|
||||
tcgetattr (fd, &portset); // Get current port attributes
|
||||
@@ -277,19 +184,14 @@ MTC_S16209X_init (Driver * drvthis, char *args)
|
||||
my_error_handle = write (fd, lcd_open, sizeof (lcd_open)); // Send the init string to the LCD
|
||||
|
||||
if (my_error_handle < 0)
|
||||
{
|
||||
fprintf (stderr, "MTC_S16209X_init(): write(lcd_open) failed (%s)\n",
|
||||
strerror (errno));
|
||||
}
|
||||
report(RPT_WARNING, "MTC_S16209X_init(): write(lcd_open) failed (%s)\n",
|
||||
strerror(errno));
|
||||
|
||||
my_error_handle = write (fd, lcd_clearscreen, sizeof (lcd_clearscreen)); // Clear the LCD, unbuffered
|
||||
|
||||
if (my_error_handle < 0)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"MTC_S16209X_init(): write(lcd_clearscreen) failed (%s)\n",
|
||||
strerror (errno));
|
||||
}
|
||||
report(RPT_WARNING, "MTC_S16209X_init(): write(lcd_clearscreen) failed (%s)\n",
|
||||
strerror(errno));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -308,8 +210,8 @@ MTC_S16209X_close (Driver * drvthis)
|
||||
flock (fd, LOCK_UN);
|
||||
|
||||
if (my_error_handle < 0)
|
||||
fprintf (stderr,
|
||||
"MTC_S16209X_close(): Write() failed! (%s)\n", strerror (errno));
|
||||
report(RPT_WARNING, "MTC_S16209X_close(): Write() failed! (%s)\n",
|
||||
strerror(errno));
|
||||
|
||||
usleep (10);
|
||||
|
||||
@@ -362,8 +264,8 @@ MTC_S16209X_flush (Driver * drvthis)
|
||||
flock (fd, LOCK_UN);
|
||||
|
||||
if (my_error_handle < 0)
|
||||
fprintf (stderr, "MTC_S16209X_flush(): Couldn't write 1st line (%s)\n",
|
||||
strerror (errno));
|
||||
report(RPT_WARNING, "MTC_S16209X_flush(): Couldn't write 1st line (%s)\n",
|
||||
strerror(errno));
|
||||
|
||||
// 2nd step: flush 2nd line:
|
||||
flock (fd, LOCK_EX);
|
||||
@@ -372,8 +274,8 @@ MTC_S16209X_flush (Driver * drvthis)
|
||||
flock (fd, LOCK_UN);
|
||||
|
||||
if (my_error_handle < 0)
|
||||
fprintf (stderr, "MTC_S16209X_flush(): Couldn't write 2nd line (%s)\n",
|
||||
strerror (errno));
|
||||
report(RPT_WARNING, "MTC_S16209X_flush(): Couldn't write 2nd line (%s)\n",
|
||||
strerror(errno));
|
||||
|
||||
// Wait until serial port cache has been emptied (else clients gets
|
||||
// the message to bugger off after a while)
|
||||
@@ -422,8 +324,8 @@ MTC_S16209X_hidecursor ()
|
||||
flock (fd, LOCK_UN);
|
||||
|
||||
if (my_error_handle < 0)
|
||||
fprintf (stderr, "MTC_S16209X_hidecursor(): Write failed: %s\n",
|
||||
strerror (errno));
|
||||
report(RPT_WARNING, "MTC_S16209X_hidecursor(): Write failed: %s\n",
|
||||
strerror(errno));
|
||||
|
||||
}
|
||||
#endif // THIS_PART_SHOULD_BE_REMOVED
|
||||
|
||||
@@ -466,8 +466,10 @@ sed1330_init( Driver * drvthis, char *args )
|
||||
port_access(p->port+1);
|
||||
port_access(p->port+2);
|
||||
|
||||
if (timing_init() == -1)
|
||||
if (timing_init() == -1) {
|
||||
report(RPT_ERR, "timing_init: failed (%s)\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
// INITIALIZE THE LCD
|
||||
// End reset-state
|
||||
|
||||
+10
-59
@@ -51,6 +51,7 @@
|
||||
#include "shared/str.h"
|
||||
#include "lcd.h"
|
||||
#include "sed1520.h"
|
||||
#include "report.h"
|
||||
|
||||
|
||||
unsigned int sed1520_lptport = LPTPORT;
|
||||
@@ -148,67 +149,17 @@ drawchar2fb (int x, int y, unsigned char z)
|
||||
MODULE_EXPORT int
|
||||
sed1520_init (Driver *drvthis, char *args)
|
||||
{
|
||||
char *argv[64], *str;
|
||||
int argc, i;
|
||||
/* Read config file */
|
||||
|
||||
if (args)
|
||||
if ((str = (char *) malloc (strlen (args) + 1)))
|
||||
strcpy (str, args);
|
||||
else
|
||||
{
|
||||
fprintf (stderr, "Error mallocing\n");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
str = NULL;
|
||||
/* What port to use */
|
||||
sed1520_lptport = drvthis->config_get_int(drvthis->name, "Port", 0, LPTPORT);
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
argc = get_args (argv, args, 64);
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
if (0 == strcmp (argv[i], "-p")
|
||||
|| 0 == strcmp (argv[i], "--port\0"))
|
||||
{
|
||||
if (i + 1 >= argc)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"sed1520_init: %s requires an argument\n",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
int myport;
|
||||
if (sscanf (argv[i + 1], "%i", &myport) != 1)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"sed1520_init: Couldn't read port address -"
|
||||
" using default value 0x%x\n", sed1520_lptport);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
sed1520_lptport = myport;
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (0 == strcmp (argv[i], "-h")
|
||||
|| 0 == strcmp (argv[i], "--help"))
|
||||
{
|
||||
//int i;
|
||||
printf
|
||||
("LCDproc sed1520 driver\n\t-p n\t--port n\tSelect the output device to use port n\n");
|
||||
printf ("put the options in quotes like this: '-p 0x278'\n");
|
||||
printf ("\t-h\t--help\t\tShow this help information\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
// driver->wid = 20;
|
||||
// driver->hgt = 4;
|
||||
|
||||
if (timing_init() == -1)
|
||||
return -1;
|
||||
if (timing_init() == -1) {
|
||||
report(RPT_ERR, "timing_init: failed (%s)\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Allocate our framebuffer
|
||||
framebuf = malloc (122 * 4);
|
||||
|
||||
+20
-65
@@ -36,6 +36,7 @@
|
||||
#include "shared/str.h"
|
||||
#include "lcd.h"
|
||||
#include "stv5730.h"
|
||||
#include "report.h"
|
||||
|
||||
|
||||
#ifndef LPTPORT
|
||||
@@ -282,77 +283,32 @@ stv5730_drawchar2fb (int x, int y, unsigned char z)
|
||||
MODULE_EXPORT int
|
||||
stv5730_init (Driver *drvthis, char *args)
|
||||
{
|
||||
char *argv[64], *str;
|
||||
int argc, i;
|
||||
int i;
|
||||
|
||||
if (args)
|
||||
if ((str = (char *) malloc (strlen (args) + 1)))
|
||||
strcpy (str, args);
|
||||
else
|
||||
{
|
||||
fprintf (stderr, "Error mallocing\n");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
str = NULL;
|
||||
/* Read config file */
|
||||
|
||||
argc = get_args (argv, args, 64);
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
if (0 == strcmp (argv[i], "-p")
|
||||
|| 0 == strcmp (argv[i], "--port\0"))
|
||||
{
|
||||
if (i + 1 >= argc)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"stv5730_init: %s requires an argument\n",
|
||||
argv[i]);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
int myport;
|
||||
if (sscanf (argv[i + 1], "%i", &myport) != 1)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"stv5730_init: Couldn't read port address -"
|
||||
" using default value 0x%x\n",
|
||||
stv5730_lptport);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
stv5730_lptport = myport;
|
||||
++i;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (0 == strcmp (argv[i], "-h")
|
||||
|| 0 == strcmp (argv[i], "--help"))
|
||||
{
|
||||
//int i;
|
||||
printf
|
||||
("LCDproc stv5730 driver\n\t-p n\t--port n\tSelect the output device to use port n\n");
|
||||
printf ("put the options in quotes like this: '-p 0x278'\n");
|
||||
printf ("\t-h\t--help\t\tShow this help information\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
/* What port to use */
|
||||
stv5730_lptport = drvthis->config_get_int(drvthis->name, "Port", 0, LPTPORT);
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
if (timing_init() == -1)
|
||||
return -1;
|
||||
if (timing_init() == -1) {
|
||||
report(RPT_ERR, "timing_init: failed (%s)\n", strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Initialize the Port and the stv5730
|
||||
if (port_access (stv5730_lptport) || port_access (stv5730_lptport + 1))
|
||||
{
|
||||
printf
|
||||
("Couldn't get IO-permission for 0x%X ! Are we running as root ?\n ",
|
||||
stv5730_lptport); return -1;
|
||||
report(RPT_ERR,
|
||||
"Couldn't get IO-permission for 0x%X ! Are we running as root ?\n ",
|
||||
stv5730_lptport);
|
||||
return -1;
|
||||
};
|
||||
|
||||
if (stv5730_detect ())
|
||||
{
|
||||
printf ("No STV5730 hardware found at 0x%X !\n ", stv5730_lptport);
|
||||
report(RPT_ERR, "No STV5730 hardware found at 0x%X !\n ", stv5730_lptport);
|
||||
return -1;
|
||||
};
|
||||
|
||||
@@ -371,12 +327,12 @@ stv5730_init (Driver *drvthis, char *args)
|
||||
stv5730_write16bit (STV5730_REG_CONTROL);
|
||||
stv5730_write16bit (0x1FF4);
|
||||
|
||||
printf ("Detecting Video Signal: ");
|
||||
report(RPT_INFO, "Detecting Video Signal: ");
|
||||
usleep (50000);
|
||||
|
||||
if (stv5730_is_mute ())
|
||||
{
|
||||
printf ("No Video Signal found, using full page mode.\n");
|
||||
report(RPT_INFO, "No Video Signal found, using full page mode.\n");
|
||||
// Setup Mode + Control for full page mode
|
||||
stv5730_charattrib = STV5730_ATTRIB;
|
||||
stv5730_write16bit (STV5730_REG_MODE);
|
||||
@@ -390,11 +346,10 @@ stv5730_init (Driver *drvthis, char *args)
|
||||
stv5730_write16bit (0x1ED4);
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ("Video Signal found, using mixed mode (B&W).\n");
|
||||
report(RPT_INFO, "Video Signal found, using mixed mode (B&W).\n");
|
||||
// Setup Mode + Control for mixed mode, disable color
|
||||
stv5730_charattrib = 0;
|
||||
stv5730_write16bit (STV5730_REG_MODE);
|
||||
@@ -429,7 +384,7 @@ stv5730_init (Driver *drvthis, char *args)
|
||||
stv5730_write16bit (0x10C0);
|
||||
}
|
||||
|
||||
// Alocate our own framebuffer
|
||||
// Allocate our own framebuffer
|
||||
stv5730_framebuf = malloc (STV5730_WID * STV5730_HGT);
|
||||
if (!stv5730_framebuf)
|
||||
{
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef LCD_SVGALIB_H
|
||||
#define LCD_SVGALIB_H
|
||||
|
||||
MODULE_EXPORT int svgalib_drv_init (Driver *driver, char *args);
|
||||
MODULE_EXPORT int svgalib_drv_init (Driver *drvthis, char *args);
|
||||
MODULE_EXPORT void svgalib_drv_close (Driver *drvthis);
|
||||
MODULE_EXPORT int svgalib_drv_width (Driver *drvthis);
|
||||
MODULE_EXPORT int svgalib_drv_height (Driver *drvthis);
|
||||
|
||||
+5
-11
@@ -190,9 +190,7 @@ text_chr (Driver *drvthis, int x, int y, char c)
|
||||
MODULE_EXPORT void
|
||||
text_set_contrast (Driver *drvthis, int promille)
|
||||
{
|
||||
/*
|
||||
printf("Contrast: %d\n", promille);
|
||||
*/
|
||||
debug(RPT_DEBUG, "Contrast: %d\n", promille);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -203,15 +201,11 @@ text_backlight (Driver *drvthis, int on)
|
||||
{
|
||||
//PrivateData * p = (PrivateData*) drvthis->private_data;
|
||||
|
||||
/*
|
||||
if(on)
|
||||
{
|
||||
printf("Backlight ON\n");
|
||||
if(on) {
|
||||
debug(RPT_DEBUG, "Backlight ON\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Backlight OFF\n");
|
||||
else {
|
||||
debug(RPT_DEBUG, "Backlight OFF\n");
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@@ -125,7 +125,6 @@ static inline int timing_init() {
|
||||
struct sched_param param;
|
||||
param.sched_priority=1;
|
||||
if (( sched_setscheduler(0, SCHED_RR, ¶m)) == -1) {
|
||||
fprintf (stderr, "timing_init: failed (%s)\n", strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
+30
-57
@@ -19,10 +19,13 @@
|
||||
#include "lcd.h"
|
||||
#include "wirz-sli.h"
|
||||
//#include "drv_base.h"
|
||||
#include "report.h"
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/str.h"
|
||||
|
||||
#define SLI_DEFAULT_DEVICE "/dev/lcd"
|
||||
|
||||
static int custom = 0;
|
||||
typedef enum {
|
||||
hbar = 1,
|
||||
@@ -49,74 +52,44 @@ MODULE_EXPORT char *symbol_prefix = "sli_";
|
||||
MODULE_EXPORT int
|
||||
sli_init (Driver *drvthis, char *args)
|
||||
{
|
||||
char *argv[64];
|
||||
int argc;
|
||||
struct termios portset;
|
||||
int i;
|
||||
int tmp;
|
||||
char out[2];
|
||||
|
||||
char device[256] = "/dev/lcd";
|
||||
char device[256] = WIRZ_DEFAULT_DEVICE;
|
||||
int speed = B19200;
|
||||
|
||||
//debug("sli_init: Args(all): %s\n", args);
|
||||
/* Read config file */
|
||||
|
||||
argc = get_args (argv, args, 64);
|
||||
|
||||
/*
|
||||
for(i=0; i<argc; i++)
|
||||
{
|
||||
printf("Arg(%i): %s\n", i, argv[i]);
|
||||
}
|
||||
*/
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
//printf("Arg(%i): %s\n", i, argv[i]);
|
||||
if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) {
|
||||
if (i + 1 > argc) {
|
||||
fprintf (stderr, "sli_init: %s requires an argument\n", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
strcpy (device, argv[++i]);
|
||||
} else if (0 == strcmp (argv[i], "-s") || 0 == strcmp (argv[i], "--speed")) {
|
||||
if (i + 1 > argc) {
|
||||
fprintf (stderr, "sli_init: %s requires an argument\n", argv[i]);
|
||||
return -1;
|
||||
}
|
||||
tmp = atoi (argv[++i]);
|
||||
if (tmp == 1200)
|
||||
speed = B1200;
|
||||
else if (tmp == 2400)
|
||||
speed = B2400;
|
||||
else if (tmp == 9600)
|
||||
speed = B9600;
|
||||
else if (tmp == 19200)
|
||||
speed = B19200;
|
||||
else if (tmp == 38400)
|
||||
speed = B38400;
|
||||
else if (tmp == 57600)
|
||||
speed = B57600;
|
||||
else if (tmp == 115200)
|
||||
speed = B115200;
|
||||
else {
|
||||
fprintf (stderr, "sli_init: %s argument must be 1200, 2400, 9600, 19200, 38400, 57600, or 115200. Using default value (19200).\n", argv[i]);
|
||||
}
|
||||
} else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) {
|
||||
printf ("LCDproc Wirz SLI LCD driver\n" "\t-d\t--device\tSelect the output device to use [/dev/lcd]\n" "\t-s\t--speed\t\tSet the communication speed [19200]\n" "\t-h\t--help\t\tShow this help information\n");
|
||||
return -1;
|
||||
} else {
|
||||
printf ("Invalid parameter: %s\n", argv[i]);
|
||||
}
|
||||
/* What device should be used */
|
||||
strncpy(device, drvthis->config_get_string(drvthis->name, "Device", 0,
|
||||
SLI_DEFAULT_DEVICE), sizeof(device));
|
||||
device[sizeof(device)-1] = '\0';
|
||||
|
||||
/* What speed to use */
|
||||
speed = drvthis->config_get_int(drvthis->name, "Speed", 0, 19200);
|
||||
|
||||
if (speed == 1200) speed = B1200;
|
||||
else if (speed == 2400) speed = B2400;
|
||||
else if (speed == 9600) speed = B9600;
|
||||
else if (speed == 19200) speed = B19200;
|
||||
else if (speed == 38400) speed = B38400;
|
||||
else if (speed == 57600) speed = B57600;
|
||||
else if (speed == 115200) speed = B115200;
|
||||
else {
|
||||
report(RPT_WARNING, "sli: Illegal speed: %d. Must be one of 1200, 2400, 9600, 19200, 38400, 57600, or 115200. Using default.\n", speed);
|
||||
speed = B19200;
|
||||
}
|
||||
|
||||
/* End of config file parsing */
|
||||
|
||||
// Set up io port correctly, and open it...
|
||||
fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||
if (fd == -1) {
|
||||
fprintf (stderr, "sli_init: failed (%s)\n", strerror (errno));
|
||||
report(RPT_ERR, "sli_init: open(%s) failed (%s)\n", device, strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
//else fprintf(stderr, "sli_init: opened device %s\n", device);
|
||||
report(RPT_DEBUG, "sli_init: opened device %s\n", device);
|
||||
|
||||
tcgetattr (fd, &portset);
|
||||
|
||||
// We use RAW mode
|
||||
@@ -142,10 +115,10 @@ sli_init (Driver *drvthis, char *args)
|
||||
|
||||
/* Initialize SLI using autobaud detection, and then turn off cursor
|
||||
and clear screen */
|
||||
usleep (150000); /* 150ms delay to allow SLI to power on */
|
||||
out[0] = 13; /* CR for SLI autobaud */
|
||||
usleep (150000); /* 150ms delay to allow SLI to power on */
|
||||
out[0] = 13; /* CR for SLI autobaud */
|
||||
write (fd, out, 1);
|
||||
usleep (3000); /* 3ms delay.. wait for it to autobaud */
|
||||
usleep (3000); /* 3ms delay.. wait for it to autobaud */
|
||||
out[0] = 0x0FE;
|
||||
out[1] = 0x00C; /* No cursor */
|
||||
write (fd, out, 2);
|
||||
|
||||
Reference in New Issue
Block a user