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.soBinary files differ new 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.soBinary files differ new 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' | 
