View source for Aphasia Development Tutorial

From Openmoko

Jump to: navigation, search

You do not have permission to edit this page, for the following reasons:

  • The action you have requested is limited to users in the group: Administrators.
  • You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page:

Return to Aphasia Development Tutorial.

Personal tools

Installation

OpenWrt

Aphasia sits on the OpenWrt platform. It's very configurable, and light on system resources. There's a great forum at [1]

Go to OpenWrt, section Build custom image and follow the instructions. When you are at the point Configure target and packages you have to do some choises. Here is the minimum installation for Aphasia:

make menuconf

OpenWrt Kamikaze (r16871) Configuration

Target System (Samsung S3C24xx [2.6])  --->    Samsung S3C24xx [2.6]
Target Profile (Openmoko GTA-02 (minimal))  --->   Openmoko GTA-02 (minimal)

[*] Image configuration  ---> (192.168.0.202) LAN IP Address 

Xorg  --->    app  ---> <*> xauth
Xorg  ---> driver  ---> <*> xf86-input-tslib
Xorg  ---> driver  ---> <*> xf86-video-glamo
Xorg  --->   font  ---> <*> dejavu-fonts-ttf

Network  ---> <*> gpsd
Network  ---> <*> ser2net

Phone  ---> <*> freerunner-alsa-scenarios

Utilities  ---> <*> alsa-utils
Utilities  ---> <*> bash

Extra packages  --->  <*> zoneinfo-europe

Sound  --->   <*> lame
Sound  --->   <*> madplay

Languages  ---> <*> erlang

Configure gpsd and ser2net

To have Aphasia autostart ser2net and gpsd insert a line in /etc/init.d/httpd, last line in desktop section:

desktop() {
	config_foreach system_config system
	hostname="${hostname:-OpenWrt}"

	unset args
	config_load httpd
	[ "$?" != "0" ] && {
		uci_set_default httpd <<EOF
config 'httpd'
	option 'port' '80'
	option 'home' '/www'
EOF
		config_load httpd
	}
	config_foreach httpd_config httpd
	/usr/sbin/ser2net ; /usr/sbin/gpsd /dev/ttySAC1
	
}


Install the GUI package ex11

Take a look at this example of what you can do with ex11 [2] Take the file at http://projects.openmoko.org/frs/download.php/753/ex11_lib.tgz and unzip it in your source directory.

In file /root/.profile

export DISPLAY=:0

In file /etc/hosts remove . (dot) at the end of line localhost.

127.0.0.1 localhost

In file /root/.erlang

io:format("Running Erlang from root~n").
code:add_patha("/root/trunk").

I keep my erlang source in /root/trunk

Copy Xauthority from host

scp .Xauthority phone:/root

Add localhost to it with xauth

xauth
add OpenWrt/unix:0 MIT-MAGIC-COOKIE-1  cfcc5ef98f9718f90154f355c0ae9f62
exit
cp .Xauthority /

Runtime Environment

Include erlang VM in the boot process, simply add a line to /etc/init.d/x11 right after Xorg:

start() {
  export DISPLAY=":0"
  config_load x11
  Xorg $ARGS &
  erl -setcookie SFEWRG34AFDSGAFG35235 -name neo@192.168.0.202 -noshell -pa /root/trunk -s main start > debug.txt
}

Graphics

I'm using vector graphics to produce new widgets. Vector graphics is lightweight and programmable, easy to scale and rotate, and the bytesize is small. Use any vector-capable drawing application. I happen to use AutoCAD LT on Wine, but please suggest an open source alternative and I will be happy to create another small conversion program to translate the new drawing file to erlang source. If you have access to AutoCAD, take dxf2erl.erl from here

Drawing a widget in AutoCAD LT

Screencast here

Convert drawing to erlang source

Screencast here