FoafMobile
From FOAF
Research notes for work on FOAF stuff w/ mobile phones.
See also Jim Ley's FOAF/Bluetooth writeup and screenshot, (also Richard Herring's tale of woe that foafmobile could perhaps have solved...). Nearby(ish), video recording on the p800 (incl. 'send by ...' facility).
A purpose of FOAF is to engineer more coincidences in the world. FOAF was designed as technology to encourage coincidence. You're walking past a pub... you go to a conference... you're standing at the barracades... or sitting in an interview... and the last thing you'd expect... a friend of a friend. Everything's connected. Who'd have thought it?
So several of us have (in #foaf and #mobitopia IRC at irc.freenode.net) been throwing around ideas for FOAF/mobile apps, and exploring development kits for opensource development on mobile devices.
This page started as danbri's notes, it can mutate into a more general research notepad...
Most info here focusses on Symbian or MIDP Java profile(s) and with a bias towards Unix-based dev tools (Linux, MacOS X etc). For development on handhelds (PDAs) rather than phones as such, the handhelds.org site is invaluable. The emphasis there seems to be on linux for small devices rather than Java/MIDP, and certain things (eg. bluetooth, scripting) seem much easier than on most current phones.
Mobile Java development: MIDP and related SDKs
* Introduction to Wireless Programming with the MID Profile * MIDP Setup Explained * J2ME Wireless Toolkit 2.0 from Sun (incl. Linux) (what's new) * MIDP development for MacOS X * SonyEricsson and P800 specifics * SonyEricsson version of MIDP SDK (Aug 2003; windows installer based on 1.04_01 from Sun), a customized version of Sun Microsystems' Java 2 Micro Edition Wireless toolkit (J2ME Wireless Toolkit) which includes a device customization for the Sony Ericsson mobile phones P800/P802 and T610. * Sony Ericsson Java developer's guidelines (for P800 and other phones, covering both PersonalJava and J2ME CLDC/MIDP characterics) * J2ME 1.04_01 Linux version (useful for the bits that are .exe in the SonyEricsson version?) * How do I install my MIDlet onto the UIQ based Sony Ericsson P800 using the JAD file? * Installing Symbian Development Kit for UIQ 7.0 (Sony Ericsson P800), Personal Java Only Mini-HOWTO by Kajetan * Symbian's aiftool documentation ("Aiftool creates an application information file, with the extension aif, using information contained in a resource file and a Symbian OS multi-bitmap icon file."). * UIQ an Interview with Johan Sandberg
P800 and Linux
* P800 and Linux page and mailing list * Symbian IS 7 UIQ SDK for Sony Ericsson P800 (needs patching for non-Windows development) * Gnupoc tools, sourceforge forum, howto. This explains how to use wine, some Perl scripts and patches to run the Windows-based SDK on a unix box. Different versions for each phone, hence fragile; the P800 stuff seemed out out sync w/ the available SDK from SonyEricsson when DanBri tried it.
XML and RDF parsing on J2ME, Symbian etc
* JSR 172 J2METM Web Services Specification, "The purpose of this specification is to define an optional package that provides standard access from J2ME to web services" (includes SAX2 facilities, apparently) * Survey article on midp and xml parsing (Mar 2002) * the Sesame RDF toolkit has a parser, Rio, which is pretty lightweight. Needs a SAX2 parser. See sourceforge for download. * the Jena/ARP parser might work too, but is fairly large due to comprehensive I18N support (Unicode tables) * A presentation by Murata Makoto presenting how it's possible not only to parse but also to validate a XML document against a RELAX NG schema.
Developer guidelines, and interesting applications (with source) to learn from
* Big designs for small devices, "Four J2ME design patterns simplify interactive content development" * The strange pleasures of J2ME, Simon St. Laurent (Aug 2002) * The Mobile Information Device Profile and MIDlets, Part 1, except from ORA's J2ME in a Nutshell by Kim Topley * midlet.org, various useful or otherwise educational apps, some with src. * P800GPS on symbianos's CVS server. Looks like an interesting app (GPL'd); CVS server includes .pkg files. See also homepage in cvs.
Handy sites'
* mobitopia (see also #mobitopia IRC channel, irc.freenode.net.
Wishlist ideas...'
* FoafFinger-like system over bluetooth * better image cataloguing for P800 * beam/receive foaf a la vcard?
'Hello world...'
OK I got a combination of the SonyEricsson SDK and the Linux SDK (for bin/* tools) working. --DanBri
http://rdfweb.org/images/foaf/foafmobile-vapourware.png
Things we might want to learn more about...
* what to transfer to phone * how to package/build SymIRC * how this relates to makesis tools * how sandboxed Java is, whether to revisit the C tools....
DanBri's Gnupoc log (see Gnupoc HOWTO for full details): See also Dumbill's writeup for a more helpful explanation of all this, and his new patch which you won't have much fun without.
* goal: make P800 SDK work on Linux via Wine and patches * grabbed UIQ 7 .zips from SonyEricsson to my Linux box: you want the Symbian IS 7 UIQ SDK for Sony Ericsson P800 (this needs patching for non-Windows development, detailed here...) * wine /home/danbri/.wine/fake_windows/Program\ Files/WinZip8.1/WINZIP32.EXE uiq_sdk_r2.zip * use Windows WinZip utility (which you may need to install) under Wine to unpack the SDK. Do this into a directory you remember the location of! (linux filespace rather than inside fake_windows, in my case...) * for n in `find . -iname "*.sdkpkg"`; do unzip -n $n -d out ; done * in out/ clean out stuff we don't need: rm -rf \[meta\]/ \[tools-classes\]/ * fixsrc.pl it... * note that we have EPOC32, EPoc32 and epoc32, which all can be merged into one filetree * export EPOCROOT=/epoc/p800cpp * fixsrc.pl originals/UIQExamples uiqexamples * fixsrc.pl originals/EPOC32 epoc32 * fixsrc.pl originals/Epoc32 epoc32 * fixsrc.pl originals/epoc32 epoc32 * do the docs and examples per howto * apply edd's patch in $EPOCROOT/epoc32 * cp $EPOCROOT/epoc32/tools/uidcrc.exe ~/.wine/fake_windows/Windows/ # so Wine can find it(!) * final testing and tweaks * chmod a+x $EPOCROOT/tools/* * put that dir in yr path * in stationary/helloworld/ or uiqexamples/shapes or whatever you're trying to build... * bldmake -v bldfiles * abld makefile armi * abld target armi urel * now make a .pkg file citing your .app and .rsg file(s), use makesis (linux version) and you should get a .sis
Testing with the shapes example... (Assumes UIQExamples from SDK has been fixsrc.pl'd...)
cd $EPOCROOT/uiqexamples/shapes/
bldmake -v bldfiles
abld makefile armi
abld target armi urel
cd $EPOCROOT/epoc32/release/armi/urel
cp $EPOCROOT/epoc32/data/z/system/apps/shapes/shapes.rsc .
cat shapes.pkg
#{"Shapes"},(0x101F616A),7,0,0,TYPE=SA
(0x101F617B), 2, 0, 0, {"UIQ20ProductID"}
IF CPUABI=2 ; Thumb
"shapes.app"-"!:\system\apps\shapes\shapes.app"
"shapes.rsc"-"!:\system\apps\shapes\shapes.rsc"
ELSE
;"nosupport.txt"-"", FILETEXT, TEXTCONTINUE
ENDIF
makesis shapes.pkg
Processing shapes.pkg...
Created shapes.sis
And trying that again with the basic helloworld demo:
cd $EPOCROOT/epoc32/stationery/hello_world/ bldmake bldfiles; abld makefile armi; abld target armi urel cd $EPOCROOT/epoc32/release/armi/urel ls *hello* helloworld.exe helloworld.exe.map
OK why did we get a .exe not a .app? cat $EPOCROOT/uiqexamples/shapes/shapes.mmp cat $EPOCROOT/epoc32/stationery/hello_world/helloworld.mmp Differences seem to be: TARGET, TARGETTYPE, UID at least.
danbri@fireball:/epoc/p800cpp/epoc32/stationery/hello_world$ cat $EPOCROOT/uiqexamples/shapes/shapes.mmp // shapes.mmp // // Copyright (c) 2000 Symbian Ltd. All rights reserved. // // using relative paths for sourcepath and user includes TARGET shapes.app TARGETTYPE app UID 0x100039ce 0x101f616a TARGETPATH /system/apps/shapes SOURCEPATH . SOURCE shapes_main.cpp SOURCE shapes_application.cpp SOURCE shapes_document.cpp SOURCE shapes_appui.cpp SOURCE shapes_appviewcircle.cpp SOURCE shapes_appviewsquare.cpp SOURCE shapes_dialog.cpp SOURCE shapes_bigdot.cpp USERINCLUDE . SYSTEMINCLUDE /epoc32/include RESOURCE shapes.rss LIBRARY euser.lib apparc.lib cone.lib ws32.lib eikcore.lib eikcoctl.lib eikdlg.lib LIBRARY qikctl.lib qikutils.lib
Here's a (slightly tweaked but still broken) .mmp for helloworld, not clear how to make it target .app instead. --DanBri
danbri@fireball:/epoc/p800cpp/epoc32/stationery/hello_world$ cat /epoc/p800cpp/epoc32/stationery/hello_world/helloworld.mmp // helloworld.mmp // // Copyright (c) 2000 Symbian Ltd. All rights reserved. // using relative paths for sourcepath and user includes //danbri edit: prev was exe //TARGET helloworld.exe //TARGETTYPE exe TARGET helloworld.app TARGETTYPE app // prev was: UID 0 UID 0x100039ce 0x101f616a SOURCEPATH . SOURCE helloworld.cpp USERINCLUDE . USERINCLUDE ../commonframework SYSTEMINCLUDE /epoc32/include LIBRARY euser.lib
Random funny: http://asdfg.mine.nu/~rehabdoll/pics/bluetooth.jpg
>Discussion :
Is there a FoafNautMobile available(or any browser that can allow mobile users to retrieve .rdf foaf profile ? (I have a SonyEricsson P900) Thanks ---OlivierSeres
