RoadMap Platform Specifics
January 2009
Platform Specific Information
The generic instructions and information given elsewhere are appropriate
for most "standard" linux desktop machines, but some handheld and "special"
devices have slightly specific requirements. These are described here.
Windows CE Support
- Dependencies and Limitations
The initial port to Windows was implemented by Ehud Shabtai.
RoadMap is currently only available for Windows CE (PocketPC, Windows
Mobile). There is no support for desktop Windows (XP, Vista, ..) -- the
WIN32 API is not the same on all Windows platforms.
RoadMap uses the WIN32 API exclusively, no specific graphic library
is required.
There is UNIX Makefile support for building the WinCE version of
RoadMap using the arm-mingw32ce cross-compiler toolchain,
available from http://cegcc.sourceforge.net .
Maps cannot be built under Windows (buildmap and buildus have not been
ported yet). Maps built under Linux can be used on PocketPC systems.
The flite software is available under Windows: a PocketPC 2002 (ARM)
binary is available on the RoadMap project's SourceForge web site. The
flite.exe binary must be installed in the same folder as the roadmap.exe
binary.
The gpsd software is not available on Windows. Note that network access
to a remote gpsd is possible (the remote computer must run UNIX).
Instead of a local gpsd, RoadMap can uses a Windows serial port and the
GPS source should then be specified as "COM1:", "COM2":, etc...
Bluetooth devices are also known to work (over a virtual serial port).
Only NMEA-capable GPS devices are supported, unless a remote gpsd is
used.
Features not available on Windows :
- Downloading maps on the fly
- The screenshots feature
- The full-screen mode of RoadMap
- The ~ and & shortcuts used when specifying pathnames.
- Configuration Files
Windows CE based computers are usually of the PDA type, so we make it
possible to install all RoadMap files in a memory card.
The configuration directories on Windows CE are:
- \Program Files\roadmap
- \Storage Card\roadmap (preferred path)
As Windows CE does not really have the concept of a user directory,
RoadMap will automatically add to the list the directory holding the
RoadMap executable.
The default name of a memory card on your Windows CE device is extracted and
automatically supported by RoadMap. In that case, replace \storage card\..
in the example above by e.g. \SD Card\.. .
- Installing maps
On Windows CE the default map search path is:
- \Program Files\roadmap\maps
- \Storage Card\roadmap\maps (preferred path)
OLPC XO Laptop Support
The XO laptop, created by the One Laptop per Child project, has a
large high resolution (900x1200) sunlight-readable screen, making
it attractive for use with RoadMap.
If the XO is running a "standard" linux distribution (Debian, Ubuntu,
and Fedora are all available) then RoadMap installs just as it does
on any other linux. But if the laptop is running the OLPC "Sugar"
system, then RoadMap must be packaged as a Sugar "activity", which
adds some extra requirements to its environment.
A pre-built copy of RoadMap.xo is available at the OLPC Activities
page:
http://wiki.laptop.org/go/RoadMap
If that copy is inappropriate or unavailable, you can build your own.
- Building the RoadMap.xo activity
Start with a relatively clean copy of the RoadMap source tree from CVS
(not the tarball), and change directory to "sugar", at the top-level of
the tree. From there, simply run the script "mk_activity" -- this will
build an appropriately-configured copy of RoadMap, and adds the system
and user config to the the .zip-formatted archive that OLPC calls a
".xo" bundle. Just a few maps may be added to that bundle if you have
your maps installed in /usr/local/share/roadmap/maps -- otherwise no
maps will be provided.
- Installing maps
RoadMap will look for maps in a directory called
"RoadMap.maps" on any external media (SD or USB) that's
mounted in the standard /media/NAME location on the XO.
The default Map.Path on the XO is:
- SUGAR_BUNDLE_PATH/maps (i.e. below the installation directory)
- SUGAR_BUNDLE_PATH/maps/??
- /media/*/RoadMap.maps
- /media/*/RoadMap.maps/??
iPhone/iPod Support
The iPhone/iPod touch support is preliminary as of yet, but it is usable in
the current state. Initial iPhone support (as well as this README) was
provided by Morten Bek.
- Official vs. unofficial SDK:
The official iPhone sdk is not used for the iPhone port. Since a
GPS was added to the iPhone 3G, Apple has added a clause to the
license agreement that prohibits developers from making car
navigation applications using the official SDK.
Other than this clause, one must sign an NDA when downloading the
SDK, so effectively GPL'ed software can't be built using the SDK
since publishing the source is a violation the NDA.
Many people were hoping that once the iPhone 2.0 firmware was
released, the NDA would be lifted and the port could be modified to
work with the official SDK, but I guess that this new clause
effectively ends that hope... Oh well, long live the unofficial SDK
and jailbroken iPhones... :-)
- Compiling
The iPhone binaries should be compiled using the unofficial iPhone
toolchain (http://code.google.com/p/iphone-dev/wiki/Building).
It should be possible to get the toolchain up and running on both
OSX, Linux and MS Windows. In config.mk set the DESKTOP to iphone
and optionally use some of the example options for setting CROSS,
CFLAGS, etc. If you use the example options your binaries will be
placed in
/tmp/Applications/RoadMap.app
The binaries will have references to
/Application/RoadMap.app/resources
so be sure to install in that location - or change your settings
accordingly.
The program compiles nicely with expat. Just download the latest
version of expat and do a ./configure using the paths to your
toolchain binaries. I haven't got dynamic linking to work, so
instead I copy expat/.libs/expat.a to the roadmap/src directory -
run the toolchain version of ranlib on the binary and then link with
that library statically.
- Installation
If you use the example options, simply use:
scp -r /tmp/Applications/RoadMap.app root@your.iphone.ip:/Applications
Notice that roadmap installs many additional binaries in
RoadMap.app/bin. These are not needed for RoadMap to operate, but
you may play around with them on the phone or delete them before
copying the folder to the phone.
Maps need to be placed in
/Applications/RoadMap.app/resources/maps
Maps are in a binary format and sometimes need to be converted to or
built on the device on which they will be used. However, maps built
on i386 linux are compatible with the iPhone.
- Known Issues
- No menu support
- Only preliminary toolbar support
- No keyboard shortcuts (hard without a keyboard! :-)
- No advanced dialog support (although messageboxes do work)
- Returning to the dashboard quits the application. It could be
useful to have it continuing to operate in the background,
displaying a status icon in the iPhone status bar.
- Then What Actually Works?!?
- Map drawing (with minor flaws), zooming (no iPhone-style pinching
yet), panning.
- GPS connection to gpsd
- roadmap.screenobjects can be edited to show various buttons with
various actions.
- Trip logging
- Drivers
- Speech synthesis using flite -- requires flite from Saurik:
http://www.telesphoreo.org/browser/trunk/data/flite
- Future Enhancements
To fix all known issues, naturally :-)
Familiar Support
This section describes the installation of RoadMap on an
ARM-powered PDA running Familiar Linux and the GPE graphic
environment. The full README should be used as well, of course.
Some of the instructions below are dated. Proceed with caution.
- BEFORE THE INSTALL
- INSTALLING ROADMAP
There are three steps: first install the RoadMap package, then install
some maps and last setup your preferences if you installed RoadMap in
a custom way.