FoafMobile

From FOAF

Jump to: navigation, search

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