diff options
Diffstat (limited to 'oncology/dpfhack_display')
78 files changed, 67997 insertions, 0 deletions
diff --git a/oncology/dpfhack_display/Changelog b/oncology/dpfhack_display/Changelog new file mode 100644 index 00000000..77fd1929 --- /dev/null +++ b/oncology/dpfhack_display/Changelog @@ -0,0 +1,33 @@ +v0.1alpha + * Pure hack, no own firmware. + * Only provides extension of the command set to support blitting + +Mon, 11 Apr 2011 11:55:52 +0200 +v0.11alpha + * Actually starting a changelog + * This is a full firmware replacement, but we still talk about a + hack". Once we have a fully bootable replacement, we'll reset + version counting and start a new project. + LCD4linux (dpflib): + * Changed resolution query + * Support for orientation and backlight control + * Allow addressing of several frames ("Port" statement) + Firmware: + * Support for USB communication with restricted command set + (kinda compatible to 0.1alpha) + * Support for various LCD controllers/screens (Sitronix, Orisetech, + Ilitek, etc.) + * Locked flash access ('no-brick' mode for future upgrades) + * Power down mode: Full "deep sleep" with only RTC running + * Auto power down on low power + * Optional/experimental: + - Log ADC values to log sector on flash + - ADC voltage drawing over time (Menu: "Mon") + - Better Load/Exec support to download applets into the DPF via USB + * Frame specific issues: + - The default orientation of the Pearl 320x240 frame was changed such + that the USB connector is pointing down on normal display (i.e. we + show "Portrait"). Use the pearl_landscape TYPE option for + the original landscape mode. + - The display rotation on the 128x128 DPFs is freely configureable + using the Orientation option in the lcd4linux config file diff --git a/oncology/dpfhack_display/Debug/dpf.so b/oncology/dpfhack_display/Debug/dpf.so Binary files differnew file mode 100755 index 00000000..dc354c56 --- /dev/null +++ b/oncology/dpfhack_display/Debug/dpf.so diff --git a/oncology/dpfhack_display/Debug/libdpf.so b/oncology/dpfhack_display/Debug/libdpf.so Binary files differnew file mode 100755 index 00000000..dc354c56 --- /dev/null +++ b/oncology/dpfhack_display/Debug/libdpf.so diff --git a/oncology/dpfhack_display/Makefile b/oncology/dpfhack_display/Makefile new file mode 100644 index 00000000..c6c32e4f --- /dev/null +++ b/oncology/dpfhack_display/Makefile @@ -0,0 +1,72 @@ +DISTVERSION = 0.12devel + +CURDIR = $(shell pwd) + +# Make sure this path is correct. Needs to point to dpf.h and libdpf.a +DPFLIB = dpflib +PYDPF = python + +FILES = Makefile lcd4linux-svn1142-dpf.patch README Changelog + +ifndef DESTDIR +DESTDIR = /tmp +endif + +default: $(DPFLIB)/libdpf.a + -[ -e src ] && (cd src; ./buildall.sh) + $(MAKE) -C $(PYDPF) install + +all: default lcd4linux/lcd4linux + +$(DPFLIB)/libdpf.a: + $(MAKE) -C $(DPFLIB) install + +lcd4linux/lcd4linux: $(DPFLIB)/libdpf.a + ./build-dpf-lcd4linux.sh $(CURDIR) + +dist: installdist + tar cfz /tmp/dpfhack-$(DISTVERSION).tgz --numeric-owner -C $(DESTDIR) dpf + + +PYSCRIPTS += detect.py fulldump.py profiles.py hackit.py +PYSCRIPTS += chartbl.py update.py + +LIBFILES += Makefile dpflib.c fwload.c rawusb.c +LIBFILES += sglib.h dpf.h + +FILES += fw/README unixdll.mk +FILES += $(PYDPF)/Makefile $(PYDPF)/py_device.c +FILES += include/usbuser.h include/flash.h +FILES += $(LIBFILES:%=$(DPFLIB)/%) +FILES += $(wildcard src/p_*.s) $(wildcard src/jmptbl*.s) + +FILES += reverse/common.in reverse/dump.py reverse/Makefile reverse/README + +DPFINST = $(DESTDIR)/dpf + +installdist: + install -d $(DPFINST) + install -d $(DPFINST)/include + install -d $(DPFINST)/reverse + install -d $(DPFINST)/src + install -d $(DPFINST)/fw + install -d $(DPFINST)/dpflib + install -d $(DPFINST)/python + install -d $(DPFINST)/fw/hexfiles + install -m644 include/flash.h $(DPFINST)/include + cp -r fw/hexfiles $(DPFINST)/fw + install -m644 fw/font4x8.bin $(DPFINST)/fw + install -m755 $(PYSCRIPTS:%=fw/%) $(DPFINST)/fw + install -m755 build-dpf-lcd4linux.sh $(DPFINST) + for i in $(FILES); do \ + install -m644 $$i $(DPFINST)/$$i; \ + done + install -m600 dpf.conf $(DPFINST) + install -m600 dpfbig.conf $(DPFINST) + cd $(DPFINST)/fw; ln -sf ../Debug . + +clean: + rm -fr $(DPFINST) + $(MAKE) -C $(DPFLIB) clean + $(MAKE) -C $(PYDPF) clean + -[ -e lcd4linux/Makefile ] && (cd lcd4linux; make distclean) diff --git a/oncology/dpfhack_display/README b/oncology/dpfhack_display/README new file mode 100644 index 00000000..d7a57d8a --- /dev/null +++ b/oncology/dpfhack_display/README @@ -0,0 +1,63 @@ +Usage: + +* Verify that you have a decent development system (GCC, development + libraries, subversion -- if you want to build lcd4linux) installed. + You might also have to install the package "pkg-config", or else the + configure procedure will likely fail. + +* Configure lcd4linux: normally, the default settings will do. If you wish + to use other drivers or cross compile, check build-dpf-lcd4linux.sh + for configure options + +* Note: For lcd4linux, you may want to have some development libraries + installed, for example: + libgd2-noxpm-dev -- to display images + +* Build the stuff using "make all". You need an internet connection. because + lcd4linux is pulled from their server. + +* Try it: + > cd lcd4linux; lcd4linux -f ../dpf.conf -F + +NOTE: The orientation for the Pearl type display was changed (Details, see +Changelog) DO NOT INSTALL if you wish to keep your landscape orientation. +Later, we'll make this configureable, if there turns out to be a good +solution (there currently isn't). + +The source for this firmware is not yet included. Please don't ask +questions when it will be released, it will happen, once we have a fully +fool proof and working firmware including boot loader support (if you can +help there, let us know). + +Also note: NO SUPPORT! NO WARRANTY! FRIENDS DON'T MAKE FRIENDS HACK THEIR +DPF! LET ALONE NON-FRIENDS! (Bottomline: Don't ask me if I can hack your DPF). + +If you wish to hack your DPF, please check the sites listed below. + +---------------------------------------------------------------------------- +Troubleshooting + +If the lcd4linux build process fails, you may want to start over without +running the entire build procedure. +See build-dpf-lcd4linux.sh for the single steps. Right, this could also +be in a makefile to be more fool proof.. + +---------------------------------------------------------------------------- +Features + +For features of this firmware, see Changelog + +---------------------------------------------------------------------------- +Find updates and documentation here: + +http://tech.section5.ch/news/?p=68 + +or here: + +http://picframe.spritesserver.nl/wiki/index.php/DPF_with_AppoTech_AX206 + +For our german users, a very good explanation is found here: + +http://geekparadise.de/2011/04/digitaler-bilderrahmen-von-pearl-als-statusdisplay-fur-dockstar/ + +(c) 4/2011, hackfin diff --git a/oncology/dpfhack_display/build-dpf-lcd4linux.sh b/oncology/dpfhack_display/build-dpf-lcd4linux.sh new file mode 100755 index 00000000..f2b8ceb2 --- /dev/null +++ b/oncology/dpfhack_display/build-dpf-lcd4linux.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +PREREQUISITES='pkg-config aclocal automake autoconf' + +for i in $PREREQUISITES; do + if [ -z `which $i` ]; then + echo missing tool "'$i'". Please install package. + err=1 + fi +done + +if [ $err ]; then + echo "Error, cancelling" + exit +fi + +# Allow to pass on dpf distribution location, if not pwd: + +if [ -z $1 ]; then + DPFLIB_LOCATION=`pwd` +else + DPFLIB_LOCATION=$1 +fi + +if [ -e lcd4linux ]; then + echo "lcd4linux installed, not fetching" +else + # Check out source from SVN + svn co -r1142 https://ssl.bulix.org/svn/lcd4linux/trunk lcd4linux +fi + +cd lcd4linux + +# Apply patch +if [ -e drv_dpf.c ]; then + echo "Existing drv_dpf.c found, not patching" +else + patch -p1 < ../lcd4linux-svn1142-dpf.patch +fi + +export CPPFLAGS="-I$DPFLIB_LOCATION/dpflib -I$DPFLIB_LOCATION/include" +export LDFLAGS=-L$DPFLIB_LOCATION/dpflib + +if [ -e Makefile ]; then + echo "Not configuring, Makefile found" +else + ./bootstrap + # Feel free to configure this differently: + ./configure --with-drivers=DPF --with-plugins=all --prefix=/usr +fi + +make diff --git a/oncology/dpfhack_display/dpf.conf b/oncology/dpfhack_display/dpf.conf new file mode 100644 index 00000000..dc712675 --- /dev/null +++ b/oncology/dpfhack_display/dpf.conf @@ -0,0 +1,205 @@ +Display dpf { + Driver 'DPF' + Port 'usb0' + Font '6x8' + Foreground 'ffffff' + Background '000000' + Basecolor '000000' + Orientation 3 # Orientation value from 0-3 + Backlight backlight # Backlight variable control +} + +Widget OS { + class 'Text' + expression '*** '.uname('sysname').' '.uname('release').' - dpf driver by hackfin ***' + width 21 + align 'M' + speed 200 + update tick + Background '008000' + Foreground 'ffffff' +} + +Widget CPU { + class 'Text' + expression uname('machine') + prefix 'CPU ' + width 10 + align 'L' + update tick + Background 'FFFFFF00' +} + + +Widget RAM { + class 'Text' + expression meminfo('MemTotal')/1024 + postfix ' MB RAM' + width 11 + precision 0 + align 'R' + update tick + Background 'FFFFFF00' +} + +Widget Busy { + class 'Text' + expression proc_stat::cpu('busy', 500) + prefix 'Busy' + postfix '%' + width 10 + precision 1 + align 'R' + update tick + Foreground 'ffffff' + Background 'FFFFFF00' +} + +Widget BusyBar { + class 'Bar' + expression proc_stat::cpu('busy', 500) + expression2 proc_stat::cpu('system', 500) + length 21 + direction 'E' + update tack + Foreground 'ffffff' + Background '00000080' + BarColor0 '5f5fff' + BarColor1 'ff5f5f' +} + +Widget Load { + class 'Text' + expression loadavg(1) + prefix 'Load' + postfix loadavg(1)>1.0?'!':' ' + width 10 + precision 1 + align 'R' + update tick + Foreground 'ffffff' + Background 'FFFFFF00' +} + +Widget LoadBar { + class 'Bar' + expression loadavg(1) + max 2.0 + length 21 + direction 'E' + update tack + Foreground 'ffffff' + Background '00000080' + BarColor0 '5f5fff' + BarColor1 'ff5f5f' +} + + +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 + Foreground 'ffffff' + Background 'FFFFFF00' +} + +Widget DiskBar { + class 'Bar' + #expression proc_stat::disk('.*', 'rblk', 500) + #expression2 proc_stat::disk('.*', 'wblk', 500) + # for kernel 2.6: + expression diskstats('sd.', 'read_sectors', 500) + expression2 diskstats('sd.', 'write_sectors', 500) + length 21 + direction 'E' + update tack + Foreground 'ffffff' + Background '00000080' + BarColor0 '5f5fff' + BarColor1 'ff5f5f' +} + +Widget Eth0 { + class 'Text' + expression (netdev('wlan0', 'Rx_bytes', 500)+netdev('wlan0', 'Tx_bytes', 500))/1024 + prefix 'wlan0' + postfix ' ' + width 10 + precision 0 + align 'R' + update tick + Foreground 'ffffff' + Background 'FFFFFF00' +} + +Widget Eth0Bar { + class 'Bar' + expression netdev('wlan0', 'Rx_bytes', 500) + expression2 netdev('wlan0', 'Tx_bytes', 500) + length 21 + direction 'E' + update tack + Foreground 'ffffff' + Background '00000080' + BarColor0 '5f5fff' + BarColor1 'ff5f5f' +} + +Widget Uptime { + class 'Text' + expression uptime('%d days %H:%M:%S') + width 20 + align 'R' + prefix 'Up ' + update 1000 + Background 'FFFFFF00' +} + +Widget Bgnd { + class 'Image' + file 'bgnd.png' + reload 1 + update 5000 + inverted 0 + visible 1 +} + +Display 'DPF' + +Layout mylayout { + Row01.Col01 'OS' + Row02.Col02 'CPU' + Row03.Col10 'RAM' + Row05.Col01 'Busy' + Row06.Col01 'BusyBar' + Row07.Col01 'Load' + Row08.Col01 'LoadBar' + Row09.Col01 'Disk' + Row10.Col01 'DiskBar' + Row11.Col01 'Eth0' + Row12.Col01 'Eth0Bar' + Row16.Col01 'Uptime' + Layer 2 { + X1.Y1 'Bgnd' + } +} + +Layout 'mylayout' + +Variables { + backlight 2 + tick 500 + tack 200 + minute 60000 +} + diff --git a/oncology/dpfhack_display/dpfbig.conf b/oncology/dpfhack_display/dpfbig.conf new file mode 100644 index 00000000..29c03de7 --- /dev/null +++ b/oncology/dpfhack_display/dpfbig.conf @@ -0,0 +1,268 @@ +Display dpf { + Driver 'DPF' + Port 'usb0' + Font '6x8' + Foreground 'ffffff' + Background '000000' + Basecolor '000066' +} + +Widget OS { + class 'Text' + expression '*** '.uname('release').' - dpf driver by hackfin ***' + width 52 + align 'C' + speed 100 + update tick + Background '008000' + Foreground 'ffffff' +} + +Widget OS_L { + class 'Text' + expression '*** '.uname('release').' - dpf driver by hackfin ***' + width 32 + align 'C' + speed 100 + update tick + Background '008000' + Foreground 'ffffff' +} + +Widget WHO { + class 'Text' + expression exec('tail -n 1 /var/log/syslog', 1000) + width 52 + align 'L' + Background '080000' + Foreground 'ffffff' +} + +Widget TIME { + class 'Text' + expression strftime('%a, %d.%m/%Y -- %H:%M:%S', time()) + width 52 + align 'C' + update tick + Background '000000' + Foreground 'ffffff' +} + +Widget TIME_L { + class 'Text' + expression strftime('%a, %d.%m/%Y -- %H:%M:%S', time()) + width 32 + align 'C' + update tick + Background '000000' + Foreground 'ffffff' +} + +Widget WLAN { + class 'Text' + expression wifi::bitrate('wlan0') + width 52 + align 'C' + Background '000000' + Foreground 'ffffff' +} + +Widget Busy { + class 'Text' |