utils/lcd4linux: * Update to lcd4linux trunk revision 847 * Add an simple init script...
authorOliver Ertl <oliver@ertl-net.net>
Sun, 2 Dec 2007 21:24:04 +0000 (21:24 +0000)
committerOliver Ertl <oliver@ertl-net.net>
Sun, 2 Dec 2007 21:24:04 +0000 (21:24 +0000)
SVN-Revision: 9646

utils/lcd4linux/Makefile
utils/lcd4linux/files/lcd4linux.conf [new file with mode: 0644]
utils/lcd4linux/files/lcd4linux.init [new file with mode: 0644]
utils/lcd4linux/patches/100-drv_RouterBoard.patch
utils/lcd4linux/patches/110-udelay.patch [deleted file]
utils/lcd4linux/patches/120-remove_parport_outb.patch
utils/lcd4linux/patches/130-linux_2.6.19_wireless_h.patch [deleted file]
utils/lcd4linux/patches/140-no_repnop_T6963.patch

index f87df429602978bffd72b1872db6ada5cd88e405..c24ce85616e893e2ae7f2273b02e4784a74e7b6f 100644 (file)
@@ -1,5 +1,5 @@
 # 
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2007 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,15 +9,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lcd4linux
-PKG_VERSION:=0.10.0+cvs20051015
-PKG_RELEASE:=2
+PKG_REV:=847
+PKG_VERSION:=r$(PKG_REV)
+PKG_RELEASE:=3
 
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
-PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/l/lcd4linux/ \
-       http://ftp.de.debian.org/debian/pool/main/l/lcd4linux/
-PKG_MD5SUM:=5b5ac629be4bb5c29104fb8f6b7fa444
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).orig
+PKG_SOURCE:=$(PKG_NAME)-r$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=https://ssl.bulix.org/svn/lcd4linux/trunk/
+PKG_SOURCE_SUBDIR:=lcd4linux-$(PKG_VERSION)
+PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_SOURCE_PROTO:=svn
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -34,29 +34,36 @@ define Package/lcd4linux/description
        some subsystems and displays it on an external liquid crystal display.
 endef
 
+define Package/lcd4linux/conffiles
+/etc/lcd4linux.conf
+endef
+
 # commas are interpreted by the $(call ...) macro, so define an intermediate variable holding our drivers spec
 PKG_CONFIGURE_DRIVERS:=all,!PNG,!RouterBoard,!X11
 
 CONFIGURE_ARGS += \
        --without-x \
        --with-drivers="$(PKG_CONFIGURE_DRIVERS)" \
-       --with-plugins=wireless
+       --with-plugins=wireless \
 
 define Build/Configure
-       (cd $(PKG_BUILD_DIR); touch \
-               configure.in \
-               aclocal.m4 \
-               Makefile.in \
-               configure \
-               stamp-h.in \
-               config.h.in \
-       );
-       $(call Build/Configure/Default)
+       $(call Build/Configure/Default,)
+       $(call libtool_disable_rpath)
+endef
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR) all
+       $(call libtool_fixup_libdir,$(PKG_INSTALL_DIR))
+       $(MAKE) -C $(PKG_BUILD_DIR) DESTDIR="$(PKG_INSTALL_DIR)"
 endef
 
 define Package/lcd4linux/install
        $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/lcd4linux $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_CONF) ./files/$(PKG_NAME).conf $(1)/etc/$(PKG_NAME).conf
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
 endef
 
 $(eval $(call BuildPackage,lcd4linux))
diff --git a/utils/lcd4linux/files/lcd4linux.conf b/utils/lcd4linux/files/lcd4linux.conf
new file mode 100644 (file)
index 0000000..a8a70f3
--- /dev/null
@@ -0,0 +1,1224 @@
+#  $Id: lcd4linux.conf.sample 759 2007-02-04 05:55:58Z michael $
+#  $URL: https://ssl.bulix.org/svn/lcd4linux/trunk/lcd4linux.conf.sample $
+
+
+Variables {
+   tick 500
+   tack 100
+   minute 60000
+}
+
+Display G15 {
+    Driver 'G-15'
+    Font   '6x8'
+    Contrast 10
+    Inverted 0
+    UInput '/dev/input/uinput'
+    SingleKeyPress 1
+}
+
+
+Display SerDispLib {
+    Driver 'serdisplib'
+    Port 'PAR:/dev/parports/0'
+    #Port '/dev/tts/0' 
+    Model 'OPTREX323'
+    Options ''
+}
+
+
+Display Trefon {
+    Driver 'TREFON'
+    Size '16x2'
+    Backlight 1
+    Icons 1
+}
+
+
+Display LCD-Linux {
+    Driver 'LCD-Linux'
+    Size '20x2'
+    UseBusy 0
+}
+
+Display LCD2USB {
+    Driver 'LCD2USB'
+    Size '20x2'
+    Backlight 1
+    Icons 1
+}
+
+
+Display LCD2041 {
+    Driver 'MatrixOrbital'
+    Model 'LCD2041'
+    Port '/dev/tts/0'
+    Speed 19200
+    Contrast 160
+}
+
+Display LK202 {
+    Driver 'MatrixOrbital'
+    Model 'LK202-24-USB'
+    Port '/dev/tts/USB0'
+    Speed 19200
+    Contrast 256/2
+}
+
+Display LK204 {
+    Driver 'MatrixOrbital'
+    Model 'LK204-24-USB'
+    Port '/dev/usb/tts/0'
+#   Port '/dev/tts/0'
+    Speed 19200
+    Contrast 256/2
+}
+
+
+Display MI240 {
+    Driver 'MilfordInstruments'
+    Model 'MI240'
+    Port '/dev/tts/0'
+    Speed 19200
+}
+
+
+Display CW12232 {
+    Driver 'Cwlinux'
+    Model 'CW12232'
+    Port '/dev/usb/tts/0'
+    Speed 19200
+    Brightness 2
+    Icons 1
+}
+
+
+Display CF631 {
+    Driver 'Crystalfontz'
+    Model '631'
+    Port '/dev/tts/USB0'
+    Speed 115200
+    Contrast 95
+    Backlight 50
+    Icons 1
+}
+
+Display CF632 {
+    Driver 'Crystalfontz'
+    Model '632'
+    Port '/dev/tts/0'
+    Speed 19200
+    Icons 1
+}
+
+Display CF633 {
+    Icons 1
+    Driver 'Crystalfontz'
+    Model '633'
+    Port '/dev/tts/0'
+    Speed 19200
+    Contrast 16
+    Backlight 50
+}
+
+Display CF635 {
+    Icons 1
+    Driver 'Crystalfontz'
+    Model '635'
+    Port '/dev/ttyUSB0'
+    Speed 115200
+    Contrast 100
+    Backlight 128
+}
+
+Display Curses {
+    Driver 'Curses'
+    Size '20x6'
+}
+
+# generic HD44780 display (LCD4Linux wiring)
+Display HD44780-generic {
+    Driver 'HD44780'
+    Model 'generic'
+    Port '/dev/parports/0'     
+    Size '8x2'
+    asc255bug 0
+    GPOs 8
+    Wire {
+       RW      'GND'
+       RS      'AUTOFD'
+       ENABLE  'STROBE'
+       ENABLE2 'GND'
+       GPO     'INIT'
+       POWER   'GND'
+    }
+}
+
+# generic HD44780 display (WinAmp wiring)
+Display HD44780-winamp {
+    Driver 'HD44780'
+    Model 'generic'
+    UseBusy 1
+    Port '/dev/parports/0'     
+    Size '20x4'
+    asc255bug 1
+    Wire {
+       RW      'AUTOFD'
+       RS      'INIT'
+       ENABLE  'STROBE'
+       ENABLE2 'GND'
+       GPO     'GND'
+       POWER   'GND'
+    }
+    Timing {
+       # fuzz timings by value (100 = no change)
+       fuzz 100
+       # low-level communication [ns]
+       CY 1000  # Enable cycle time
+       PW  450  # Enable pulse width
+       AS  140  # Address setup time
+       AH   20  # Address hold time
+       # HD44780 execution timings [us]
+       INIT1 4100  # first init sequence: 4.1 msec
+       INIT2  100  # second init sequence: 100 usec
+       EXEC    80  # normal execution time
+       WRCG   120  # CG RAM Write
+       CLEAR 2250  # Clear Display
+       HOME  2250  # Return Cursor Home
+       ONOFF 2250  # Display On/Off Control
+       # GPO timing [ns]
+       GPO_ST  20  # 74HCT573 set-up time
+       GPO_PW 230  # 74HCT573 enable pulse width
+       # Power supply timing [ms]
+       POWER  500  # power-on delay
+    }
+}
+
+# HD44780 display 4-Bit mode
+Display HD44780-4bit {
+    Driver 'HD44780'
+    Model 'generic'
+    Port '/dev/parports/0'     
+    Size '16x1'
+    Bits 4
+    UseBusy 0
+    asc255bug 0
+    Wire {
+        RW     'GND'
+        RS     'DB4'
+        ENABLE 'DB6'
+        GPO    'GND'
+    }
+}
+
+# Dual-HD44780 display from Pollin
+Display WDC2704M {
+    Driver 'HD44780'
+    Model 'generic'
+    Controllers 2
+    UseBusy 1
+    Port '/dev/parports/0'     
+    Size '27x4'
+    Wire {
+       RW      'AUTOFD'
+       RS      'INIT'
+       ENABLE  'STROBE'
+       ENABLE2 'SLCTIN'
+       GPO     'GND'
+       POWER   'GND'
+    }
+}
+
+# HD44780 display from www.kernelconcepts.de
+Display HD44780-kernelconcepts {
+    Driver 'HD44780'
+    Model 'HD66712'
+    UseBusy 1
+    Port '/dev/parports/0'     
+    Size '20x4'
+    Wire {
+       RW      'AUTOFD'
+       RS      'INIT'
+       ENABLE  'STROBE'
+       ENABLE2 'GND'
+       GPO     'GND'
+       POWER   'GND'
+    }
+}
+
+Display picoLCD {
+    Driver 'picoLCD'
+    Size     '20x2'
+    Contrast  0
+    Backlight 1
+    Icons     1
+}
+
+Display SC1602D {
+    Driver 'HD44780'
+    Port '/dev/parports/0'     
+    Bits '8'
+    Size '16x2'
+    asc255bug 0
+    Icons 1
+    Wire {
+       RW     'GND'
+       RS     'AUTOFD'
+       ENABLE 'STROBE'
+       GPO    'INIT'
+       POWER  'GND'
+    }
+}
+
+
+Display LCM-162 {
+    Driver 'HD44780'
+    Model 'LCM-162'
+#   Bus 'parport'
+    Port '/dev/parports/0'     
+    Size '16x2'
+    UseBusy 1
+    asc255bug 0
+    Icons 1
+}
+
+
+Display HD44780-I2C {
+    Driver 'HD44780'
+    Model 'generic'
+    Bus 'i2c'
+    Port '/dev/i2c-0'
+    Device '70'
+    Bits '4'
+    Size '20x4'
+    asc255bug 0
+    Icons 1
+    Wire {
+        RW     'DB5'
+        RS     'DB4'
+        ENABLE 'DB6'
+        GPO    'GND'
+    }
+}
+
+
+Display LCDTerm {
+    Driver 'LCDTerm
+    Port '/dev/tts/0'
+    Speed 19200
+    Size '20x4'
+    Icons 1
+}
+
+Display SimpleLCD {
+    Driver 'SimpleLCD'
+    Port '/dev/tts/0'
+    Speed 1200
+    Options 0
+    Size '20x2'
+}
+
+Display BA63 {
+    Driver   'WincorNixdorf'
+    Model    'BA63'
+    Port     '/dev/tts/0'
+#   Port     '/dev/tts/USB0'
+    Speed     9600
+    BarChar   219
+    SelfTest  0
+}
+
+Display M50530-24x8 {
+    Driver 'M50530'
+    Port '/dev/parports/0'     
+#   Port '0x378'
+    Size '24x8'
+    Font '5x7'
+    Duty 2
+    Wire.RW   'INIT'
+    Wire.EX   'STROBE'
+    Wire.IOC1 'SLCTIN'
+    Wire.IOC2 'AUTOFD'
+    Wire.GPO  'GND'
+    UseBusy    1
+    Timing.fuzz 100
+}
+
+
+Display CT20x4 {
+    Driver 'Beckmann+Egle'
+    Model 'CT20x4'
+    Port '/dev/tts/0'
+#    Size '16x2'
+#    Contrast 7
+#    Backlight 1
+    Icons 1
+}
+
+
+Display USBLCD {
+    Driver 'USBLCD'
+#   Port '/dev/lcd0'
+    Port 'libusb'
+    Size '20x4'
+    asc255bug 1
+    Icons 1
+}
+
+
+Display BWCT {
+    Driver 'BWCT'
+    Size '20x4'
+    Contrast 220
+    asc255bug 1
+    Icons 1
+}
+
+
+Display T6963-240x64 {
+    Driver 'T6963'
+    Port '/dev/parports/0'
+    Size '240x64'
+    DualScan 0
+    Cell 6
+    Wire.CE 'STROBE'
+    Wire.CD 'SLCTIN'
+    Wire.RD 'AUTOFD'
+    Wire.WR 'INIT'
+    Timing.fuzz 120
+    Font '6x8'
+}
+
+Display T6963-240x128 {
+    Driver 'T6963'
+    Port '/dev/parports/0'
+    Size '240x128'
+    DualScan 0
+    Cell 6
+    Wire.CE 'STROBE'
+    Wire.CD 'SLCTIN'
+    Wire.RD 'AUTOFD'
+    Wire.WR 'INIT'
+    Timing.fuzz 120
+    Font '6x8'
+}
+
+Display T6963-240x128D {
+    Driver 'T6963'
+    Port '/dev/parports/0'
+    Size '240x128'
+    DualScan 1
+    Cell 6
+    Wire.CE 'STROBE'
+    Wire.CD 'SLCTIN'
+    Wire.RD 'AUTOFD'
+    Wire.WR 'INIT'
+    Timing.fuzz 120
+    Font '6x8'
+}
+
+
+Display LPH7508 {
+    Driver 'LPH7508'
+    Port   '/dev/parports/0'
+    Font   '6x8'
+    Contrast 15
+    Inverted 0
+}
+
+Display LPH7508-serdisplib {
+    Driver 'serdisplib'
+    Port 'PAR:/dev/parports/0'
+    Model 'LPH7508'
+}
+
+Display ctinclud {
+   Driver  'serdisplib'
+   Port    'USB:7c0/1501'
+   Model   'CTINCLUD'
+   Options ''
+   Inverted 0
+}
+
+Display XWindow {
+    Driver 'X11'
+    Size   '120x32'
+    Font   '5x8'
+    Pixel  '4+1'
+    Gap    '-1x-1'
+    Border 20
+#   Foreground '#000000'
+#   Background '#80d000'
+#   Halfground '#70c000'
+    Foreground '000000cc'
+    Background '00000022'
+    Basecolor  '80d000'
+}
+
+Display Image {
+    Driver 'Image'
+#   Format 'PPM'
+    Format 'PNG'
+    Size   '120x32'
+    Font   '6x8'
+    Pixel  '4+1'
+    Gap    '-1x-1'
+    Border 20
+#   Foreground '#000000'
+#   Background '#80d000'
+#   Halfground '#70c000'
+    Foreground '000000cc'
+    Background '00000022'
+    Basecolor  '80d000'
+}
+
+#Plugin KVV {
+#    StationID '12_701'
+#    Refresh 30
+#    Proxy 'igate'
+#    Port 8080;
+#}
+
+Plugin Seti {
+    Directory '/root/setiathome-3.08.i686-pc-linux-gnu'
+}
+
+
+Plugin MySQL {
+    server 'gsmlandia.com'     # if none, localhost assumed
+    port 3306                  # if none, MySQL default assumed
+    user 'lcd4linux'           # if none, lcd4linux unix owner assumed
+    password 'lcd4linux'       # if none, empty password assumed
+    database 'lcd4linux'       # MUST be specified
+}
+
+Plugin Pop3 {
+   server1 'localhost'
+   port1 110
+   user1 'michael'
+   password1 'secret'
+}
+
+
+Widget OS {
+    class 'Text'
+    expression '*** '.uname('sysname').' '.uname('release').' ***'
+    width 20
+    align 'M'
+    style 'bold'
+    speed 50   
+    update tick
+}
+
+Widget CPU {
+    class  'Text'
+    expression  uname('machine')
+    prefix 'CPU '
+    width  9
+    align  'L'
+    style test::onoff(7)>0?'bold':'norm'
+    update tick
+}
+
+
+Widget CPUinfo {
+    class  'Text'
+    expression  cpuinfo('model name')
+    prefix ''
+    width  20
+    align  'M'
+    speed 100  
+    update tick
+}
+
+
+Widget RAM {
+    class  'Text'
+    expression meminfo('MemTotal')/1024
+    postfix ' MB RAM'  
+    width  11
+    precision 0
+    align  'R'
+    update tick
+}
+
+Widget Busy {
+    class 'Text'
+    expression proc_stat::cpu('busy', 500)
+    prefix 'Busy'      
+    postfix '%'        
+    width 9    
+    precision 1
+    align 'R'  
+    update tick        
+}      
+
+Widget BusyBar {
+    class 'Bar'
+    expression  proc_stat::cpu('busy',   500)
+    expression2 proc_stat::cpu('system', 500)
+    length 10  
+    direction 'E'
+    update tack
+}
+
+Widget Load {
+    class 'Text'
+    expression loadavg(1)
+    prefix 'Load'
+    postfix loadavg(1)>1.0?'!':' '
+    width 10
+    precision 1
+    align 'R'
+    update tick
+}
+
+Widget LoadBar {
+    class 'Bar'
+    expression  loadavg(1)
+    max 2.0
+    length 10  
+    direction 'E'
+    update tack
+}
+
+
+Widget Disk {
+    class 'Text'
+    # disk.[rw]blk return blocks, we assume a blocksize of 512
+    # to get the number in kB/s we would do blk*512/1024, which is blk/2 
+    # expression (proc_stat::disk('.*', 'rblk', 500)+proc_stat::disk('.*', 'wblk', 500))/2
+    # with kernel 2.6, disk_io disappeared from /proc/stat but moved to /proc/diskstat
+    # therefore you have to use another function called 'diskstats':
+    expression diskstats('hd.', 'read_sectors', 500) + diskstats('hd.', 'write_sectors', 500)
+    prefix 'disk'
+    postfix ' '
+    width 10   
+    precision 0
+    align 'R'  
+    update tick        
+}      
+
+Widget DiskBar {
+    class 'Bar'
+    #expression  proc_stat::disk('.*', 'rblk', 500)
+    #expression2 proc_stat::disk('.*', 'wblk', 500)
+    # for kernel 2.6:
+    expression  diskstats('hd.', 'read_sectors',  500)
+    expression2 diskstats('hd.', 'write_sectors', 500)
+    length 14  
+    direction 'E'
+    update tack
+}
+
+Widget Eth0 {
+    class 'Text'
+    expression (netdev('eth0', 'Rx_bytes', 500)+netdev('eth0', 'Tx_bytes', 500))/1024
+    prefix 'eth0'
+    postfix ' '
+    width 10   
+    precision 0
+    align 'R'  
+    update tick        
+}      
+
+Widget Eth0Bar {
+    class 'Bar'
+    expression  netdev('eth0', 'Rx_bytes', 500)
+    expression2 netdev('eth0', 'Tx_bytes', 500)
+    length 14  
+    direction 'E'
+    update tack
+}
+
+Widget PPP {
+    class 'Text'
+    expression (ppp('Rx:0', 500)+ppp('Tx:0', 500))
+    prefix 'PPP'
+    width 9
+    precision 0
+    align 'R'
+    update tick
+}
+
+Widget Temp {
+    class 'Text'
+    expression i2c_sensors('temp_input3')*1.0324-67
+    prefix 'Temp'
+    width 9
+    precision 1
+    align 'R'
+    update tick
+}
+
+Widget TempBar {
+    class 'Bar'
+    expression  i2c_sensors('temp_input3')*1.0324-67
+    min 40
+    max 80
+    length 10
+    direction 'E'
+    update tack
+}
+
+Widget MySQLtest1 {
+    class 'Text'
+    expression MySQL::query('SELECT id FROM table1')
+    width 20
+    align 'R'
+    prefix 'MySQL test:'
+    update minute
+}
+
+Widget MySQLtest2 {
+    class 'Text'
+    expression MySQL::status()
+    width 20
+    align 'M'
+    prefix 'Status: '
+    update minute
+}
+
+Widget Uptime {
+    class 'Text'
+    expression uptime('%d days %H:%M:%S')
+    width 20
+    align 'R'
+    prefix 'Up '
+    update 1000
+}
+
+
+# debugging widgets 
+
+Widget BarTest {
+    class 'Bar'
+    # test::bar(barno,maxval,startval,delta) - move a test value between 0 and max.
+    # delta= step to change value by each time it's read.
+    # barno - ten different test bar values can be set up, with barno=0..9
+    # if delta=0, just returns the value of bar n instead of changing it.
+    expression test::bar(0,30,25,1)
+    expression2 test::bar(1,30,0,1)
+    length 8
+    # max 50
+    direction 'E'
+    update 10
+}
+
+Widget BarTestVal {
+    class 'Text'
+    expression test::bar(0,100,50,0)
+    prefix 'Test '
+    width 9
+    update 200
+}
+
+Widget LightningTest {
+    class 'icon'
+    speed 500
+    visible test::onoff(0)
+    bitmap {
+        row1 '...***'
+        row2 '..***.'
+        row3 '.***..'
+        row4 '.****.'
+        row5 '..**..'
+        row6 '.**...'
+        row7 '**....'
+        row8 '*.....'
+    }
+}
+
+
+# Icons
+
+Widget Heartbeat {
+    class 'Icon'
+    speed 800
+    Bitmap {
+       Row1 '.....|.....'
+       Row2 '.*.*.|.*.*.'
+       Row3 '*****|*.*.*'
+       Row4 '*****|*...*'
+       Row5 '.***.|.*.*.'
+       Row6 '.***.|.*.*.'
+       Row7 '..*..|..*..'
+       Row8 '.....|.....'
+    }
+}
+
+Widget EKG {
+    class 'Icon'
+    speed 50
+    Bitmap {
+       Row1 '.....|.....|.....|.....|.....|.....|.....|.....'
+       Row2 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
+       Row3 '.....|....*|...*.|..*..|.*...|*....|.....|.....'
+       Row4 '.....|....*|...**|..**.|.**..|**...|*....|.....'
+       Row5 '.....|....*|...**|..**.|.**..|**...|*....|.....'
+       Row6 '.....|....*|...*.|..*.*|.*.*.|*.*..|.*...|*....'
+       Row7 '*****|*****|****.|***..|**..*|*..**|..***|.****'
+       Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
+    }
+}
+Widget Karo {
+    class 'Icon'
+    speed 200
+    Bitmap {
+       Row1 '.....|.....|.....|.....|..*..|.....|.....|.....'
+       Row2 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
+       Row3 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
+       Row4 '.....|..*..|.*.*.|*...*|.....|*...*|.*.*.|..*..'
+       Row5 '.....|.....|..*..|.*.*.|*...*|.*.*.|..*..|.....'
+       Row6 '.....|.....|.....|..*..|.*.*.|..*..|.....|.....'
+       Row7 '.....|.....|.....|.....|..*..|.....|.....|.....'
+       Row8 '.....|.....|.....|.....|.....|.....|.....|.....'
+    }
+}
+Widget Heart {
+    class 'Icon'
+    speed 250
+    Bitmap {
+       Row1 '.....|.....|.....|.....|.....|.....'
+       Row2 '.*.*.|.....|.*.*.|.....|.....|.....'
+       Row3 '*****|.*.*.|*****|.*.*.|.*.*.|.*.*.'
+       Row4 '*****|.***.|*****|.***.|.***.|.***.'
+       Row5 '.***.|.***.|.***.|.***.|.***.|.***.'
+       Row6 '.***.|..*..|.***.|..*..|..*..|..*..'
+       Row7 '..*..|.....|..*..|.....|.....|.....'
+       Row8 '.....|.....|.....|.....|.....|.....'
+    }
+}
+Widget Blob {
+    class 'Icon'
+    speed 250
+    Bitmap {
+       Row1 '.....|.....|.....'
+       Row2 '.....|.....|.***.'
+       Row3 '.....|.***.|*...*'
+       Row4 '..*..|.*.*.|*...*'
+       Row5 '.....|.***.|*...*'
+       Row6 '.....|.....|.***.'
+       Row7 '.....|.....|.....'
+       Row8 '.....|.....|.....'
+    }
+}
+Widget Wave {
+    class 'Icon'
+    speed 100
+    Bitmap {
+       Row1 '..**.|.**..|**...|*....|.....|.....|.....|.....|....*|...**'
+       Row2 '.*..*|*..*.|..*..|.*...|*....|.....|.....|....*|...*.|..*..'
+       Row3 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
+       Row4 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
+       Row5 '*....|....*|...*.|..*..|.*...|*....|....*|...*.|..*..|.*...'
+       Row6 '.....|.....|....*|...*.|..*..|.*..*|*..*.|..*..|.*...|*....'
+       Row7 '.....|.....|.....|....*|...**|..**.|.**..|**...|*....|.....'
+       Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....'
+    }
+}
+Widget Squirrel {
+    class 'Icon'
+    speed 100
+    Bitmap {
+       Row1 '.....|.....|.....|.....|.....|.....'
+       Row2 '.....|.....|.....|.....|.....|.....'
+       Row3 '.....|.....|.....|.....|.....|.....'
+       Row4 '**...|.**..|..**.|...**|....*|.....'
+       Row5 '*****|*****|*****|*****|*****|*****'
+       Row6 '...**|..**.|.**..|**...|*....|.....'
+       Row7 '.....|.....|.....|.....|.....|.....'
+       Row8 '.....|.....|.....|.....|.....|.....'
+    }
+}
+
+Widget Lightning {
+    class 'icon'
+    speed 100
+    visible cpu('busy', 500)-50
+    bitmap {
+        row1 '...***'
+        row2 '..***.'
+        row3 '.***..'
+        row4 '.****.'
+        row5 '..**..'
+        row6 '.**...'
+        row7 '**....'
+        row8 '*.....'
+    }
+}
+
+Widget Rain {
+    class 'icon'
+    speed 200
+    bitmap {
+       row1 '...*.|.....|.....|.*...|....*|..*..|.....|*....'
+       row2 '*....|...*.|.....|.....|.*...|....*|..*..|.....'
+       row3 '.....|*....|...*.|.....|.....|.*...|....*|..*..'
+       row4 '..*..|.....|*....|...*.|.....|.....|.*...|....*'
+       row5 '....*|..*..|.....|*....|...*.|.....|.....|.*...'
+       row6 '.*...|....*|..*..|.....|*....|...*.|.....|.....'
+       row7 '.....|.*...|....*|..*..|.....|*....|...*.|.....'
+       row8 '.....|.....|.*...|....*|..*..|.....|*....|...*.'
+    }
+}
+
+Widget Timer {
+    class 'Icon'
+    speed 50
+    Bitmap {
+       Row1 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
+       Row2 '.***.|.*+*.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.*++.|.+++.|.+*+.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|.+**.|'
+       Row3 '*****|**+**|**++*|**+++|**++.|**++.|**+++|**+++|**+++|**+++|**+++|+++++|+++++|++*++|++**+|++***|++**.|++**.|++***|++***|++***|++***|++***|*****|'
+       Row4 '*****|**+**|**+**|**+**|**+++|**+++|**+++|**+++|**+++|**+++|+++++|+++++|+++++|++*++|++*++|++*++|++***|++***|++***|++***|++***|++***|*****|*****|'
+       Row5 '*****|*****|*****|*****|*****|***++|***++|**+++|*++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++++|+++**|+++**|++***|+****|*****|*****|*****|'
+       Row6 '.***.|.***.|.***.|.***.|.***.|.***.|.**+.|.*++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.+++.|.++*.|.+**.|.***.|.***.|.***.|.***.|'
+       Row7 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
+       Row8 '.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|.....|'
+
+
+    }
+}
+
+Widget Test {
+    class 'Text'
+    expression '1234567890123456789012345678901234567890'
+    width 40
+    foreground 'ff0000ff'
+}
+
+Widget Test1 {
+    class 'Text'
+    expression 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
+    width 40
+    align 'M'
+    speed 100
+}
+
+Widget Test2 {
+    class 'Text'
+    expression '1234567890abcdefghijklmnopqrstuvwxyz'
+    width 40
+    align 'M'
+    speed 150
+}
+
+Widget GPO_Val1 {
+    class 'Text'
+    expression LCD::GPO(1)
+    prefix 'GPO#1'
+    width 10
+    precision 0
+    align 'R'
+    update tick
+}
+
+Widget GPI_Val1 {
+    class 'Text'
+    expression LCD::GPI(1)
+    prefix 'GPI#1'
+    width 10
+    precision 0
+    align 'R'
+    update tick
+}
+
+Widget GPO_Val4 {
+    class 'Text'
+    expression LCD::GPO(4)
+    prefix 'GPO#4'
+    width 10
+    precision 0
+    align 'R'
+    update tick
+}
+
+Widget GPO_Test1 {
+    class 'GPO'
+    expression 255*test::onoff(1)
+    update 300
+}
+
+Widget GPO_Test255 {
+    class 'GPO'
+    expression test::bar(0,255, 0, 1)
+    update 100
+}
+
+Widget ImageTest {
+    class 'Image'
+    file 'tux.png'
+    update 1000
+    visible 1
+    inverted 0
+}
+
+Widget KVV {
+    class 'Text'
+    expression kvv::line(0).' '.kvv::station(0)
+    width 11
+
+    align 'L'
+    update tick
+    Foreground 'ffff00'
+    style 'bold'
+}
+
+Widget KVV_TIME {
+    class 'Text'
+    expression kvv::time_str(0)
+    width 2
+
+    align 'R'
+    update tick
+    foreground kvv::time(0) < 2 ? 'FF0000' : ( kvv::time(0) < 5 ? 'FFFF00' : '00FF00' )
+    style 'bold'
+}
+
+Layout Default {
+    Row1 {
+       Col1  'OS'
+    }
+    Row2 {
+       Col1  'CPU'
+       Col10 'RAM'
+    }
+    Row3 {
+       Col1  'Busy'
+       Col10 'Rain'
+       Col11 'BusyBar'
+    }
+    Row4 {
+       Col1 'Load'
+       Col11 'LoadBar'
+    }
+    Row5 {
+       Col1  'Disk'
+       Col11 'DiskBar'
+    }
+    Row6 {
+       Col1  'Eth0'
+       Col11 'Eth0Bar'
+    }
+}
+
+Layout TestLayer {
+    Row1 {
+       Col1  'OS'
+    }
+    Row2 {
+       Col1  'CPU'
+       Col10 'RAM'
+    }
+    Row3 {
+       Col1  'Busy'
+       Col10 'Rain'
+       Col11 'BusyBar'
+    }
+    Row4 {
+       Col1 'Load'
+       Col11 'LoadBar'
+    }
+    Row5 {
+       Col1  'Disk'
+       Col11 'DiskBar'
+    }
+    Row6 {
+       Col1  'Eth0'
+       Col11 'Eth0Bar'
+    }
+    Layer 2 {
+       X1.Y1 'ImageTest'
+    }
+}
+
+Layout TestImage {
+    Layer 2 {
+       X1.Y1 'ImageTest'
+    }
+}
+
+Layout L24x8 {
+    Row1 {
+       Col1  'Load'
+       Col11 'BusyBar'
+    }
+    Row2 {
+    }
+}
+
+Layout L8x2 {
+    Row1 {
+       Col1  'Busy'
+    }
+    Row2 {
+       Col1 'BarTest'
+    }
+}
+
+Layout L16x1 {
+    Row1 {
+       Col1  'Busy'
+       Col11 'BusyBar'
+    }
+}
+
+Layout L16x2 {
+    Row1 {
+       Col1  'Busy'
+       Col11 'BusyBar'
+    }
+    Row2 {
+       Col1  'Disk'
+       #Col11 'DiskBar'
+       Col11 'BarTest'
+    }
+}
+
+Layout L20x2 {
+    Row1 {
+        Col1  'CPUinfo'
+    }
+    Row2 {
+       Col1  'Busy'
+       Col11 'BusyBar'
+    }
+}
+
+Layout L40x2 {
+    Row1 {
+       Col1  'OS'
+       Col21  'Busy'
+       Col31 'BusyBar'
+    }
+    Row2 {
+       Col1  'CPU'
+       Col10 'RAM'
+       Col21 'Load'
+       Col31 'LoadBar'
+    }
+}
+
+Layout Test {
+    Row01.Col1 'Test1'
+    Row02.Col1 'Test1'
+    Row03.Col1 'Test1'
+    Row04.Col1 'Test1'
+    Row05.Col1 'Test1'
+    Row06.Col1 'Test1'
+    Row07.Col1 'Test1'
+    Row08.Col1 'Test1'
+    Row09.Col1 'Test1'
+    Row10.Col1 'Test1'
+    Row11.Col1 'Test1'
+    Row12.Col1 'Test1'
+    Row13.Col1 'Test1'
+    Row14.Col1 'Test1'
+    Row15.Col1 'Test1'
+    Row16.Col1 'Test1'
+    Row17.Col1 'Test1'
+    Row18.Col1 'Test1'
+    Row19.Col1 'Test1'
+    Row20.Col1 'Test1'
+    Row21.Col1 'Test1'
+    Row22.Col1 'Test1'
+    Row23.Col1 'Test1'
+    Row24.Col1 'Test1'
+}
+
+Layout Test2 {
+    Row01.Col1 'Test1'
+    #Row02.Col1 'Rain'
+    Row02.Col1 'Test2'
+    Row03.Col1 'Test1'
+    Row04.Col1 'Test2'
+    Row05.Col1 'Test1'
+    Row06.Col1 'Test2'
+    Row07.Col1 'Test1'
+    Row08.Col1 'Test2'
+}
+
+Layout TestGPO {
+    Row1.Col1  'GPO_Val1'
+    Row1.Col10 'GPI_Val1'
+    Row2.Col1  'GPO_Val4'
+    GPO1       'GPO_Test255'
+    GPO4       'GPO_Test1'
+}
+
+Layout TestIcons {
+    Row1.Col1 'Timer'
+    Row1.Col2 'Rain'
+    Row1.Col3 'Squirrel'
+    Row1.Col4 'Wave'
+    Row1.Col5 'Blob'
+    Row1.Col6 'Heart'
+    Row1.Col7 'Karo'
+    Row1.Col8 'EKG'
+}
+
+Layout testMySQL {
+       Row1 {
+               Col1 'MySQLtest1'
+       }
+       Row2 {
+               Col1 'MySQLtest2'
+       }
+}
+
+Layout Debug {
+    #Row09.Col1 'Test'
+    Row09.Col1 'Heartbeat'
+}
+
+
+
+#Display 'SerDispLib'
+#Display 'LCD-Linux'
+#Display 'LCD2041'
+#Display 'LK202'
+#Display 'LK204'
+#Display 'MI240'
+#Display 'CW12232'
+#Display 'HD44780-generic'
+#Display 'HD44780-WinAmp'
+#Display 'HD44780-4bit'
+#Display 'WDC2704M'
+#Display 'SC1602D'
+#Display 'LCM-162'
+#Display 'CF631'
+#Display 'CF632'
+#Display 'CF633'
+#Display 'Curses'
+#Display 'M50530-24x8'
+#Display 'LCDTerm'
+#Display 'SimpleLCD'
+#Display 'BA63'
+#Display 'CT20x4'
+#Display 'T6963-240x64'
+#Display 'T6963-240x128'
+#Display 'T6963-240x128D'
+#Display 'XWindow'
+#Display 'USBLCD'
+#Display 'BWCT'
+#Display 'Image'
+#Display 'Trefon'
+#Display 'LCD2USB'
+#Display 'LPH7508-serdisplib'
+#Display 'LPH7508'
+#Display 'ctinclud'
+Display 'picoLCD'
+
+#Layout 'Default'
+#Layout 'TestLayer'
+#Layout 'TestImage'
+#Layout 'L8x2'
+#Layout 'L16x1'
+#Layout 'L16x2'
+Layout 'L20x2'
+#Layout 'L40x2'
+#Layout 'Test'
+#Layout 'Test2'
+#Layout 'TestGPO'
+#Layout 'Debug'
+#Layout 'TestIcons'
diff --git a/utils/lcd4linux/files/lcd4linux.init b/utils/lcd4linux/files/lcd4linux.init
new file mode 100644 (file)
index 0000000..93ad465
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2007 OpenWrt.org
+START=98
+
+NAME=lcd4linux
+BIN_F=/usr/bin/$NAME
+PID_F=/var/run/lcd4linux.pid
+SSD=start-stop-daemon
+OPTIONS="-q -p $PID_F -f /etc/lcd4linux.conf"
+
+start() {
+       $SSD -S -q -p $PID_F -b -x $BIN_F -- $OPTIONS
+}
+
+stop() {
+       $SSD -K -q -p $PID_F
+}
+
index 091c4f120f3443a79c16639243311d4922ee05e5..ff9ab2782182fead9516ce8a846794875b21c6b1 100644 (file)
@@ -1,8 +1,8 @@
-Index: lcd4linux-0.10.0+cvs20051015.orig/drv_RouterBoard.c
+Index: lcd4linux-847/drv_RouterBoard.c
 ===================================================================
---- lcd4linux-0.10.0+cvs20051015.orig.orig/drv_RouterBoard.c   2007-07-07 14:02:56.000000000 +0200
-+++ lcd4linux-0.10.0+cvs20051015.orig/drv_RouterBoard.c        2007-07-07 14:02:56.000000000 +0200
-@@ -120,7 +120,7 @@
+--- lcd4linux-847.orig/drv_RouterBoard.c       2007-12-01 17:15:10.000000000 +0100
++++ lcd4linux-847/drv_RouterBoard.c    2007-12-01 17:15:10.000000000 +0100
+@@ -106,7 +106,7 @@
  #include <string.h>
  #include <errno.h>
  #include <unistd.h>
diff --git a/utils/lcd4linux/patches/110-udelay.patch b/utils/lcd4linux/patches/110-udelay.patch
deleted file mode 100644 (file)
index eaffdf8..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-Index: lcd4linux-0.10.0+cvs20051015.orig/udelay.c
-===================================================================
---- lcd4linux-0.10.0+cvs20051015.orig.orig/udelay.c    2007-07-07 14:02:55.000000000 +0200
-+++ lcd4linux-0.10.0+cvs20051015.orig/udelay.c 2007-07-07 14:02:56.000000000 +0200
-@@ -134,28 +134,11 @@
- #include <stdio.h>
--#ifdef USE_OLD_UDELAY
--
--#include <time.h>
--
--#else
--
--#include <math.h>
--#include <unistd.h>
--#include <fcntl.h>
--#include <errno.h>
--#include <string.h>
--#include <sys/time.h>
--
--#ifdef HAVE_ASM_MSR_H
--#include <asm/msr.h>
--#endif
--
--#endif
--
--
- #include "debug.h"
- #include "udelay.h"
-+ 
-+#include <time.h>
-+#include <errno.h>
- #ifdef USE_OLD_UDELAY
-@@ -163,16 +146,30 @@
- void ndelay(const unsigned long nsec)
- {
-+#if 0
-     unsigned long loop = (nsec * loops_per_usec + 999) / 1000;
-   __asm__(".align 16\n" "1:\tdecl %0\n" "\tjne 1b":   /* no result */
-   :"a"(loop));
-+#endif
-+  struct timespec val;
-+  struct timespec rem;
-+  int ret;
-+
-+  val.tv_sec = 0;
-+  val.tv_nsec = nsec;
-+
-+  do {
-+        ret = nanosleep(&val, &rem);
-+        val = rem;
-+  } while ((ret == -1) && (errno == EINTR));
- }
- /* adopted from /usr/src/linux/init/main.c */
- void udelay_calibrate(void)
- {
-+#if 0
-     clock_t tick;
-     unsigned long bit;
-@@ -197,12 +194,13 @@
-       if (clock() > tick)
-           loops_per_usec &= ~bit;
-     }
-+#endif
- }
- #else
- static unsigned int ticks_per_usec = 0;
--
-+#if 0
- static void getCPUinfo(int *hasTSC, double *MHz)
- {
-     int fd;
-@@ -249,10 +247,11 @@
-     }
- }
--
-+#endif
- void udelay_init(void)
- {
-+#if 0
- #ifdef HAVE_ASM_MSR_H
-     int tsc;
-@@ -274,12 +273,13 @@
-       ticks_per_usec = 0;
-       info("udelay: using gettimeofday() delay loop");
-     }
-+#endif
- }
- void ndelay(const unsigned long nsec)
- {
--
-+#if 0
- #ifdef HAVE_ASM_MSR_H
-     if (ticks_per_usec) {
-@@ -313,6 +313,20 @@
-           gettimeofday(&now, NULL);
-       } while (now.tv_sec == end.tv_sec ? now.tv_usec < end.tv_usec : now.tv_sec < end.tv_sec);
-     }
-+#endif
-+
-+  struct timespec val;
-+  struct timespec rem;
-+  int ret;
-+
-+  val.tv_sec = 0;
-+  val.tv_nsec = nsec;
-+
-+  do {
-+        ret = nanosleep(&val, &rem);
-+        val = rem;
-+  } while ((ret == -1) && (errno == EINTR));
-+
- }
- #endif
-Index: lcd4linux-0.10.0+cvs20051015.orig/udelay.h
-===================================================================
---- lcd4linux-0.10.0+cvs20051015.orig.orig/udelay.h    2007-07-07 14:02:56.000000000 +0200
-+++ lcd4linux-0.10.0+cvs20051015.orig/udelay.h 2007-07-07 14:02:56.000000000 +0200
-@@ -72,12 +72,14 @@
- #ifndef _UDELAY_H_
- #define _UDELAY_H_
-+#if 0
- /* stolen from linux/asm-i386/processor.h */
- /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
- static inline void rep_nop(void)
- {
-     __asm__ __volatile__("rep; nop");
- }
-+#endif
- #ifdef USE_OLD_UDELAY
index 210c182d5d4a969f0439ae25d8091cda9317d5a0..9ae1d0b7ecfb755c421ea0f4009554d9fdf05660 100644 (file)
@@ -1,8 +1,8 @@
-Index: lcd4linux-0.10.0+cvs20051015.orig/drv_generic_parport.c
+Index: lcd4linux-847/drv_generic_parport.c
 ===================================================================
---- lcd4linux-0.10.0+cvs20051015.orig.orig/drv_generic_parport.c       2007-07-07 14:02:55.000000000 +0200
-+++ lcd4linux-0.10.0+cvs20051015.orig/drv_generic_parport.c    2007-07-07 14:02:57.000000000 +0200
-@@ -117,16 +117,6 @@
+--- lcd4linux-847.orig/drv_generic_parport.c   2007-12-01 17:15:10.000000000 +0100
++++ lcd4linux-847/drv_generic_parport.c        2007-12-01 17:15:11.000000000 +0100
+@@ -39,16 +39,6 @@
  #include <sys/stat.h>
  #include <sys/ioctl.h>
  
@@ -19,7 +19,7 @@ Index: lcd4linux-0.10.0+cvs20051015.orig/drv_generic_parport.c
  #if defined (HAVE_LINUX_PARPORT_H) && defined (HAVE_LINUX_PPDEV_H)
  #define WITH_PPDEV
  #include <linux/parport.h>
-@@ -143,6 +133,11 @@
+@@ -65,6 +55,11 @@
  #define PARPORT_STATUS_BUSY       0x80
  #endif
  
@@ -27,7 +27,7 @@ Index: lcd4linux-0.10.0+cvs20051015.orig/drv_generic_parport.c
 +#define inb(foo) 0
 +#define outb(foo,bar) 0
 +#endif
-+ 
++
  #if !defined(WITH_OUTB) && !defined(WITH_PPDEV)
  #error neither outb() nor ppdev() possible
  #error cannot compile parallel port driver
diff --git a/utils/lcd4linux/patches/130-linux_2.6.19_wireless_h.patch b/utils/lcd4linux/patches/130-linux_2.6.19_wireless_h.patch
deleted file mode 100644 (file)
index 215c348..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: lcd4linux-0.10.0+cvs20051015.orig/plugin_wireless.c
-===================================================================
---- lcd4linux-0.10.0+cvs20051015.orig.orig/plugin_wireless.c   2007-07-07 14:02:55.000000000 +0200
-+++ lcd4linux-0.10.0+cvs20051015.orig/plugin_wireless.c        2007-07-07 14:02:57.000000000 +0200
-@@ -92,6 +92,11 @@
- #include <sys/ioctl.h>
- #include <net/if_arp.h>
-+#include <linux/version.h>
-+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19)
-+#include <linux/types.h>
-+#include <linux/if.h>
-+#endif
- #include <linux/wireless.h>
- #include <math.h>
index 79686009cfec6d3098fc21192e458c555c53ce80..9c224dfdecce356f68144cc00e76b82117bfcd67 100644 (file)
@@ -1,24 +1,24 @@
-Index: lcd4linux-0.10.0+cvs20051015.orig/drv_T6963.c
+Index: lcd4linux-847/drv_T6963.c
 ===================================================================
---- lcd4linux-0.10.0+cvs20051015.orig.orig/drv_T6963.c 2007-07-07 14:02:55.000000000 +0200
-+++ lcd4linux-0.10.0+cvs20051015.orig/drv_T6963.c      2007-07-07 14:02:57.000000000 +0200
-@@ -170,7 +170,9 @@
+--- lcd4linux-847.orig/drv_T6963.c     2007-12-01 17:15:10.000000000 +0100
++++ lcd4linux-847/drv_T6963.c  2007-12-01 17:15:11.000000000 +0100
+@@ -114,7 +114,9 @@
      /* wait for STA0=1 and STA1=1 */
      n = 0;
      do {
-+#if 0
++#if 0    
        rep_nop();
-+#endif
++#endif        
        if (++n > 1000) {
            debug("hang in status1");
            bug = 1;
-@@ -206,7 +208,9 @@
+@@ -150,7 +152,9 @@
      /* wait for STA3=1 */
      n = 0;
      do {
-+#if 0
++#if 0    
        rep_nop();
-+#endif
++#endif        
        if (++n > 1000) {
            debug("hang in status2");
            bug = 1;