CourseLogV2 CourseLogV2

An application to see where you are and where you have been.

This is CourseLogV2, an EWE application that runs under Windows Mobile 2005, WM 6 using your GPS receiver to tell you where you are, how long and how far you go and where you have been. This version 2 provides a great improvement : it displays your position on a map. You can insert as many maps as your device can handle, provided each one is small enough to be handled in memory. The software uses a concept of calibrated "tiled maps", only a set of tiles is in memory at a time and switching between tiles is automatic. 

 The software also displays your track on the map and you can set waypoints to check your direction, distance, time to arrival. You can also re-use your track as waypoints and even reverse it so that you can find your way back ;-))

Note : if, by chance, you have been using the version 1 of this software (without map), please switch to V2. I will no longer support version 1 because of too many bugs. Version 2 has all features of version 1.

Releases history



Just a modification of the maps display : Now they appear sorted so that those which fit best with current scale appear on top.
In previous version, they where sorted so that minimum scale was on top. Not always readable if you are looking back.
Anyway, when clicking minimum or maximum scale you can go to the maximum or minimum precision for the place at the center of the map.


First release for general use. Hopefully it is usable without to many problems.

What do I need to make it work?

First CourseLog is a freeware, open source (see CPL down) programmed in java on a specific virtual machine name "ewe". The virtual machine is freeware too so there is no licence fee required to use CourseLog. You need a GPS receiver connected to your Windows Mobile device. This is usually done using a serial port (COM6: on my QTEK 9100), possibly mapping a Bluetooth connection to a serial port using Windows pocket Bluetooth . If you have a device with a builtin GPS receiver, it should also be mapped to a serial port so that you can access it. CourseLogV2 reads in NMEA sentences to determine your position.

Second, you need a map to display your position on. I personally use several sources such as (french maps)
(if you know about other sources, send me links)

These web sites provides only pictures coded as bitmaps without any associated geographic information. If you want to use that picture to locate yourself, you need to give the software some points to use as references. This is done by providing a small text file with longitude and latitude values, associated to (x,y) positions on the picture. You need only 2 points per picture.

Please refer to section How to generate a calibrated map? to see how this is done in practice.

Note that the software provides several tools to ease calibration.

How do you install it?

You need to agree the license and disclaimer agreement (end of this page). This does not mean you have to sign something but installing the software implies you accept this license.

This application is fully based on the EWE virtual machine (free java for many mobile systems). Look at the web site.

Note : A new version of the virtual machine has been issued (called EVE) Please click to the link Go here to access the old Ewe Virtual Machine  because this is the machine you need to run CourseLogV2.

How to install it on your WM device?

You must install the ewe runtime on your device before running CourseLog.

For that, the easier way is to unzip the file Download/ on your PC, upload the cab file on your device and run it.

Because the ewe virtual machine needs to register its dll (ewe.dll) you have to run ewe on your device once.

For CourseLogV2 application, you have to download the CourseLogV2.exe file in a CourseLogV2 directory you can create on your device and then just click on the exe file. If you previously ran the ewe.exe file after the installation of the cab file, it should run. Otherwise it tells you “did not find ewe.dll”.

It will start with default values and display the "options" panel to let you select your serial port, maps directory, track file name, accuracy and units..

That’s all!

How to install it on your PC?

This is easier, just download the static linked version of CourseLogV2 (Download/x86-Win32-StaticLinked/CourseLogV2.exe)

But don't forget to place the ewe dll in the directory (Download/ewex_registry.dll)

Then start the exe file and it should work. By the way, I never tried to use a GPS connected to a PC. Tell me if it works!

 You want to update or modify it ?

The source, class files and (easier) ewe file are also provided. in the download section.

You can generate a target using the JEWEL tool for your own target. See the EWESOFT web site to get the tools and use them.


How to generate calibrated maps?

This will probably be the first thing you'll need to do to use CourseLogV2. Generating the text file by hand is not an option unless you like tedious tasks!
Nevertheless, you have to understand the general use of the software to do your first calibration.

2 possibilities are proposed.
Specify known reference points on the calibrated map.
Match points with a .kml file generated from google earth.
You can  do those calibrations on your pocket device but it is generally more convinient to use a PC connected to the web because most of the pictures and data are available from the web. For that purpose, you can use the Windows version of CourseLogV2 which behaves almost exactly the same as the WM version.

But first you need to understand the calibration concept.

Calibration concept

As explained above, a calibrated map is a pair of files :

A picture file paris.png


A text file paris.mpr (Map Points of Reference)


The relationship between the 2 files is that :

  1. they are placed into the same directory

  2. one has extension ".mpr" and it contains the name of the picture file, which is recommended to be the same with the proper extension. (Please note that the program only handles png and jpg picture files).

The file with extension ".mpr" provides the position of points (called "reference points") on the picture.

Note : For those who want details, here follows a detailed description. For the others, you can skip this and go to the 2 proposed ways of calibrating.

As can be seen in the example above, the picture is a google map capture of Paris downtown.
Picture format can be jpg or png but it seems that jpg are often lighter.

The "
Map Points of Reference" file provides :

  1. the picture file name (supposed to be in the same directory)

  2. the picture size in pixels (width, heigth)

  3. the number of reference points and the used reference points (number, first reference, second reference)

  4. A list of reference points (latitude, longitude, altitude, X in picture, Y in picture)

Calibrating with known reference points

This is the case where you know the latitudes and longitudes of  2 points on the map.
You have to click the location on the map and you get a dialog asking you to enter the latitude and longitude.
As a minimum you need to define 2 reference points on the image. You can define more but the software will select the 2 points that generate the smaller distance to the definition of the others.
Here is a sequence showing calibration of the Paris corner which has been selected, assuming you know that 'Place de la Concorde" has coordinates (48° 51' 12" N, 2° 21' 15"E) and that the "île de la cité" northern bridge has coordinates (48°  51' 54"N,  2° 19' 21"E).
First  you have to click on the "Place de la Concorde", you get the following window :
Type in the coordinates

and click OK.
You get a light blue cross at the clicked place. The reference point is recorded.
Then you click the second place and enter the second set of coordinates :
Now your map has 2 reference points. It is calibrated.

What you have to do is to save it by selecting Actions/Save Image
This will create the ".mpr" file and your map is calibrated.
You may also have the map and try to calibrate it  by noting your position. In such case, you have to go to one place, start the calibration and select "current GPS position" after clicking on the map on where you think you are.
After that you have to save the calibrated map. Even if only one reference point is identified, the map should be saved. It is not usable with a single point but it needs to saved before you go to another location and create a second reference point.
You have to save again the map and it will be calibrated.

Calibrating using a kml file

This is (in my opinion) the easiest way to calibrate a map which has been captured and does not display accurate longitudes and latitudes.
The principle is to select locations on the map that you are able to retrieve on Google earth. This means that you do it on you PC because you have a fully functional GoogleEarth and also CourseLog windows executable version running on it.

The sequence is the following :

  1. You have to define points on the map in a given order. 

  2. Then you have to define a path in Google Earth, the path consisting in the same points in the same order

  3. You generate a ".kml" file by saving your path with that format.

  4. Back to courselog, you select the action Actions>Import KML path . Courselog asks for a confirmation because this will erase the coordinates that were entered at step 1.

  5. The coordinates are replaced and you can check if they are valid by selecting Actions>Find Ref. The red crosses should be close to the blue ones if you entered the points correctly

Here below is a description on how-to use a kml file and you can also take a look at the video which shows the full demonstration.

Reusing the previous example map, here is an illustration :

  1. Select points on the map in the calibration panel.
    Proceed like the case where you know the reference points but you are not supposed to enter any consistent data in the location coordinates dialog. Enter 0 and 0 as latitude and longitude.
    The 2 points are again Place de la Concorde and the bridge to ile Saint Louis.

  2. Define the path between the points in GoogleEarth
    You can see on figure below that there is an orange path named "paris" between Place de la Concorde and Ile Saint Louis.

  3. Save your path in a kml file
    Do a right-click on the path and select "Save As". Take care to save the path in kml format and not kmz which is a zipped version.

  4. Import kml in CourseLog
    Select the action in the menu Action>Import KML file

  5. Check calibration
    The calibration process consists in selecting 2 reference points among those which are specified by the user and the criteria is to take the 2 which minimise the distance between the computed positions and the known positions.
    The action "Find Ref." displays the entered points in blue and the computed ones in red.
    Here are the example results :


General use of CourseLogV2

Panels organisation

CourseLogV2 is organised into panels with 2 bottom buttons which can be accessed with the left and right soft keys

The left key is equivalent to a click on the GOTO button, the right on the RESET button.
When clicking the GOTO button, you can switch to the other panels. The right button is dedicated to local actions.
Almost all actions can be taken using keys but this is sometimes tricky.
Attention : If the application is closed, its state (current panel, options settings, log state, track points and waypoints) are saved in the "courselog.ini" file.
If there is any error when application launches, remove "
courselog.ini" file in the directory where CourseLogV2.exe is placed and launch it again. It will start with its default status.

Options panel

The options which can be specified are :

This dialog allows you to select the GPS port, the baud rate and all options. Click on the Update Ports button to let the application scan which ports are available.

When clicking on RESET, all values are reset to default values. Otherwise those selected values are saved in the courselog.ini file in the same directory than the executable file.
The file is generated automatically when leaving the application.

Note : It is advisable to leave and re-enter the application when options are modified so that they are saved.

Calibrate panel

The Calibrate panel appears empty unless you have already opened a picture.
First thing to do is click the
Actions button and select Open image to open a picture file to calibrate.
If you open the file paris.png, then the panel will appear as on the right.

On a picture, you can do several actions :


Drag on the screen and the picture will move. When you release the pen, the edges of the pictures are updated. Arrows also move the picture. You can not pan when an edge of the picture is at the edge of the screen.


press <Enter> to zoom in, long press or double press on <Enter> to zoom out. Select Actions/Rescale 1 to come back to a scale of 1.


If you click on a point on the screen (without dragging), you can specify a reference point at the place you clicked. If you double press <Enter> or quickly press <Enter> then <Down>, this corresponds to clicking in the middle of the screen.

Actions/Find Ref.

This action allows you to test your calibration quality. See How to generate calibrated maps?
This action displays the reference points defined on the picture in blue and the computed positions in red. They should be close to each other otherwise calibration quality is poor.


Divides the current picture into tiles. This can be done only after calibration. Sub-pictures are produced with names derived from the original image and indexes (row,column) appended. Those tiles are lighter to handle by the device. This is also useful when doing calibration on a PC and using the maps on a mobile device.

Actions/Import KML path

Complete calibration by using kml content to specify the location of reference points. See How to generate calibrated maps?
The reference points positions already registered are lost.

Actions/Open image

Opens a picture file and the associated ".mpr" file if any. The reference points are displayed on the map is the mpr file is found.

Actions/Save image

Saves the ".mpr" file with the reference points values. The image file is not touched, only the "Maps Points of Reference" file is changed with the registered values.

Distance panel

The distance panel allows you to start and stop logging your position. It also gives your coordinates (Lat:, Lon :), the GPS time (UTC) and the status of the GPS receiver.

  1. If the color of the satellite is dark red, there is no GPS connection. You may have to test your settings in the options panel.

  2. If the color is orange, the GPS receiver provides correct output but the position is not yet acquired.

  3. If the color is green, your position isthe one obtained from the GPS receiver.

When pressing the "Record" button, you can change the status of the logging process. If you record, the time, distance, upwards and downwards values are reset and the log starts. The log elements are placed (appended) in the log file specified in the options panel.
Pause is selected, the log is suspended and time and distance are no longer incremented.
Hold is selected, the log is suspended too but it will restart from the place and time it was suspend. It just decreases the number of points in the log.

The details of the records in the log file are listed in the log file section.
The details of the displayed values are in section What does the distance panel display.

Convert panel

Log files are csv formatted. This is very simple but not very robust so most applications use xml files. With this panel, you can convert to GPX or KML formats.
Just click the
Convert button to get your xml file. Of course, it works faster on the PC version.
See details in the conversion section.

Navigation panel

The navigation panel is the panel which displays your current position on the maps.

This panel uses a simple concept which I named "tiled map". The total map is made of a set of maps and only visible maps are displayed. The background image is built by drawing the images in the maps directory (see Options panel) which are used like tiles. Because they are calibrated, they should join automatically to provide a continuous background. The maps are displayed in an order according to their scale. The maps having the larger scale (larger number of meters per pixel) are in the background and the more detailed maps appear on the foreground. If the underlying map is too small or too big, it is not displayed. Only maps having a scale which is less than 20 times larger and more than 20 times smaller than the current zoom level are displayed.

Using this management of maps, the navigation requires less memory than if you use a single image. When you navigate on maps and they are no longer displayed, they are flushed from memory so you should be able to navigate without getting out of memory space. so you can put as many calibrated map as you wan in the maps directory. Maps with a smaller scale will only be used when you are in the area, so you can adapt the scale to the level of details you need.

Your position is displayed with the red symbol that also shows your average direction. This direction is the average heading on the distance panel.

When touching the screen at any location, you will enter a waypoint unless they are locked. Please refer to the How to use waypoints section for details on waypoints.

The actions on the navigate panel are :

Rescale 1

Rescale the map to 1. The reference scale is the one at the center of the map. It corresponds to scale one for the calibrated map which is under your current position.


Reload the calibrated maps directory. This allows to re-discover the map files in the directory if you inserted some or if your calibrated new ones.

Rescale Max

Set the scale at the maximum scale of calibrated maps under the center of the image. A zoom out which anyway leaves you at the scale 1 of the larger scaled image.

Rescale Min

Set the scale at the minimum scale of calibrated maps under the center of the image. A zoom in which anyway leaves you at the scale 1 of the most detailed image.

Follow position

Also settable by pressing <Enter><Down>. When this option is set, the map is moved to track your position. A circle is displayed around the center of the map. The color of the circle depends on the state of  the GPS receiver (see distance panel). When your position leaves the circle, the map is re-centered at your position.

Unlock waypoints

Set this option to avoid insterting or moving waypoints by pressing on the screen. It this option is no set, "Lock waypoints" is displayed and pressing on the screen generates new waypoints. When waypoints are locked, the top line shows the distance, tile, heading to the next waypoint and the total distance and time until the end of the planned track.


Allows to show/ hide waypoints display on the map and also track on the map. If you are recording your position, your track is displayed on the map (cyan). The waypoints are displayed in blue.

Open waypoints

Opens a file dialog to open a waypoints file. The state is set to locked waypoints after loading a file.

Save waypoints

Save currently set waypoints in a waypoints file. This is  a text file with the position of the points. The format is the same as the log file but most values are dummies.

New waypoints

Erase current waypoints and start defining new ones. The state is set to unlocked waypoints.

You can also use the touchscreen or keys shortcuts to do actions :

drag on screen

Moves the map on the screen, by the same displacement. If you are in "follow position" mode and if your drag moves the current position out of the circle, the center is replaced at your position. If your position is not know (red or orange circle), then movements are free. If you move the map to a center outside the calibrated maps boundaries, the movement stops at the boundary.

long press on the screen (out of a waypoint)

Shows a contextual menu  which allows you to center the map at a position, rescale to 1, show or hide track and waypoints.

long press on the screen (on a waypoint)

Shows a contextual menu which allows to:

  • Select current waypoint as next waypoint for orientation/ distance/ time calculation

  • Delete current waypoint

  • Invert current track of waypoints to go in reverse direction

Note : if waypoints are locked, delete and invert are not activated.

How to use waypoints

General overview

You can use waypoints on the Navigate panel. The waypoints are locations where you want to go and you can plan a track by entering several waypoints. You can also save and retrieve the waypoints on a file. The format of the file is the same as a log file. Actually, you can even use a log file as a waypoint track.
When waypoints are placed, the top panel on the screen displays the total length of the path you have defined. After that, you can lock the waypoints so that you do not displace them by touching the screen. On the top display, you see the distance to next waypoint, the time needed to reach it, the total distance to the end of the track and the total time.
As you can see, waypoints are quite useful when you have to plan your trip,e.g. not only find where you are. So here are a few "how to" which you may find useful for different case of use.

How to set, remove, move, retrieve and manipulate waypoints?

First check that you are on the navigate panel and that waypoints are unlocked.
When waypoints are locked, the Action menu proposes to unlock them ( ), otherwise, it proposes to lock them when they are unlocked ().
The simpler is to erase any existing waypoints by selecting Actions/New Waypoints. It also unlocks the waypoints so that you can enter new ones.

To set a waypoint, just click on the screen at the location you want.

To move a waypoint, click it and drag it. You will see a handle indicating the new position.

Next click away from an existing waypoint will define next waypoint. Only last waypoint on the track can be added.
The total distanceof the track and the position of selected waypoint is displayed on top.

When you switch waypoints status to
locked the system displays the distance to next waypoint, the relative direction considering you are heading the top of the screen.
It also displays the duration at current average speed, the total distance to the end of the track and the duration until end of track or until selected waypoint if any..

As you pass waypoints, next waypoint becomes next one on the track. The distance and directions are updated.
The criteria to "pass" a waypoint is to go as close as 2 pixels from the waypoint. Indeed, it depends on the scale you use. If your scale is too large, all waypoints are close and considered as "passed". You will have to long-click the first one and select "set next".

When your waypoints are defined, you have to save them using Actions>Save waypoints. The format is the same as a log file, without any relevant time and speed information :

 48.580967,-002.555887, 00000.0, 30U, 532755.12, 5380970.75, 050508, 213420.000,-001.0,-001.0, 000.0, 000.0, 00000000.0, 00000.0, 00000.0, 00000
 48.585440,-002.557450, 00000.0, 30U, 532636.94, 5381467.26, 050508, 213424.000,-001.0,-001.0, 000.0, 000.0, 00000510.1, 00000.0, 00000.0, 00000
 48.586876,-002.555265, 00000.0, 30U, 532797.18, 5381627.86, 050508, 213430.000,-001.0,-001.0, 000.0, 000.0, 00000736.6, 00000.0, 00000.0, 00000

If you want to retrieve them, you use Actions>Load waypoints.
Note that you reload waypoints when restarting the application and also that you come back in the same lock mode.

If you want to leave the navigation panel without saving waypoints, you are asked a confirmation.

How to use a track as waypoints ?

When you move, it defines a track that you record using the record command in the Distance panel. If you want to come back using the same way, just define another file as log file and open you previous track as a waypoints track.
Then you must first Actions/Unlock waypoints to allow modifications and click Invert on the track to change the way.
Eventually, you save that track to a new waypoints file and you can set the next waypoint to find you way back.
Do not forget to lock the waypoints again to avoid any unwanted modification of your path.

How to retrieve waypoints?

When leaving the application, the waypoints file name is remembered if they have been saved. When coming back, the are reloaded and the "next" waypoint is set again. Because sometimes (too often) CourseLog locks on the GPS connection, it is useful to leave and re-open the application without losing your settings.
It is also a way to save your battery : you log your position, distance to next waypoint, then you can leave CourseLog, switch off your device. You will retrieve everything when re-starting.

What does the distance panel display ?





Latitude (Deg, min, seconds N/S)

Directly available when GPS is connected.


Longitude (Deg, min, seconds E/W)

Directly available when GPS is connected.


Universal Coordinated Time

Directly available from GPS reception. Obtained from satellites or from the receiver when it does not receive the satellites.


File name of the file where to log position points

Fill it using the file button on the right. Stored in the configuration file. Be careful, log file is never overwritten, always appended.


Current altitude above mean sea level in meters.

GPS fix (GGA sentences).


Total of upwards displacement in meters.

Sum of traced altitudes positive differences obtained by comparing altitudes between consecutive points. Only available when recording is active. Not very reliable because GPS altitude is not quite accurate.


Total of downwards displacement in meters.

See above.

Spd, Inst

Instantaneous speed in km/h

GPS fix (RMC sentences). GPS receivers estimate your speed as well as your position.

Hdg, Inst

Instantaneous heading in °

GPS fix (RMC sentences). GPS receivers estimate your heading  as well as your position (in fact your instantaneous speed vector).

Spd, Avg

Average speed in km/h

Calculated between consecutive points. Ratio between distance and time differences. Only available when recording is active.

Hdg, Avg

Average heading in °

Calculated between consecutive points. Uses the direction vector between the 2 last points. Only available when recording is active.


Total recording time in HH:MM:SS.

Only available when recording. Computed between the time when recording started and the last recorded point.


Total integrated distance (km).

Only available when recording. Sum of distance between recorded points. Sensitive to the minimum distance option (see below).


Minimum distance, a sensitive option

As GPS position is not accurate below 100m (worst case), consecutive points are taken into account provided that there is a minimum distance between them. You can specify it using the options button. Under 20m of minimum distance, errors will induce artificial displacements as you are not moving. You can try it, specify a low minimum distance and let the GPS at the same place for 5 minutes, you will see that the distance increases as you don’t move. Therefore, you must specify a distance which is big enough so that summed moves are actual moves and that the error margin is not so big.

Figure here shows that, when going strait on the distance you move corresponds to the distance between “sampled” points as, when you turn, you shorten the distance.


To summarise (for average latitude regions where accuracy is good):

If you are a walker, use 20m or 50m minimum distance so that your moves will not be too much under-sampled and accuracy will not induce a significant error (which accuracy do you actually need?). Especially if you are not going strait on because then your moves are shortened. Switch to pause mode when you stop so that you will not add too many erroneous moves to your actual ones.


If you are running or riding, you go quite strait so you can use 20 m because you move more regularly and you will know your actual distance. Anyway, use the pause mode when you stop.


If you are in a car, the distance can be bigger without significant error (you go far). Use the 100 m or 50 m to have a correct accuracy and no moves when you are stopped.


If you are in a boat, you go strait for long distances and for a long time. Use the large size (500 m). You will have a short enough log and good accuracy.


Detailed usage of the distance panel

When the GPS is operational, define a log file (if you want one) and start recording pressing the  Record button.

If you stop for a while, press the Pause button so that your moves are not added and not logged.

When in pause mode, speed and heading are displayed as well as the time provided by the GPS receiver.

If you want to stop the application or the GPS receiver, you can press the Hold button. Stopping the application during a recording is equivalent to switch to hold mode.

Note that, when the application is restarted in that case, it goes directly to record mode.

If your trip is finished, press the Stop button. Logging is stopped and next recording will reset all values to 0.


What does the log file content?

Log file is intended to be read as a csv file. It contains almost everything you see on the display at a time.

Fields are : 




UTM zone

UTM Easting

UTM Northing



Inst. Speed

Inst. Heading

Avg. Speed

Avg. Heading





UTM conversion is useful because many maps use that projection. I extracted the formulas from a very good web site : Thanks to the author.


Convert to other formats

If you want to use those logs with other applications, you can use the converter form of the CourseLog application :

This brings the following form :

The text area at the top provides some help. 

If you choose the GPX format

The format tries to comply with the specification available here :GPX format. It contains almost all information which are in the log so that you have no color data to select. Converting a log into GPX and you will be able to plot it on many projections using GPS Visualizer online.

You can also do the conversion offline using GPS Babel.


If you choose the KML format

I implemented a simplified (and empirical) version of kml to be used with Google Earth. This consists in generating the points into a serie of track points, each segment having a color corresponding to one of the logged GPS data (altitude, time, speed).

Here is a kind of plot which is generated : 

Download section

Before downloading, make sure you have read and accepted the license and disclaimer agreement here below.

ARM exe file : To run on a PocketPC2003 and higher with ARM processor (tested on QTEK 9100)

To install on you pocket-pc device, use

Windows exe file : To run on a Windows system (Tested on Win XP). This can be used if you have a GPS connected to your PC or also to convert files faster.

To run on your PC, you need to run with the following dll in the directory of your exe file : ewex_registry.dll

EWE file : use this to convert to another platform using EWE application builder.

JNF file : Also useful to determine which files are used to generate the EWE file.

Classes files for use with Jewel : Compressed version of the whole CourseLog Netbeans project directory.

Source zip file : Zipped java sources.

Javadoc zip file : Zipped javadoc HTML. You can browse the CourseLog javadoc online here.


Thanks to who ?

First many thanks to Michael L. BRERETON for making the EWE machine available and freeware.

I did not turn this application into an auto-installer because I did not want to dig into the auto-installer facility he provides but also because you should visit to see what great job he achieved.


Thanks also to J. STOTT for very good utilities on projections (


Thanks to the GPX tools providers (see GPX conversion section).

Know problems :

Many problems probably. The major one is that, when the GPS gets disconnected, it is difficult to reconnect without restarting the application. Maybe I did not use properly the serial port connections. Anyway, I tried to lake it as robust as possible. Now, you can switch off your application and/ or your GPS device and restart the GPS, then the application, and you will get a continued log.


If you have problems, hints, proposals, anything, let me know at this address



Some Italian fellow already did something quite nice : MyGPS. You can compare, of course I use mine!

Maybe a version using my native language (French).

There is a new VM (EVE) which could help making CourseLogV2 more stable and also available on other platforms (symbian?).

 Your proposals are welcomed.

Everything understood ? Have a good trip!

License and disclaimer agreement




"Contribution" means:

a) in the case of the initial Contributor, the initial code and
documentation distributed under this Agreement, and

b) in the case of each subsequent Contributor:

i) changes to the Program, and

ii) additions to the Program;

where such changes and/or additions to the Program originate from and are
distributed by that particular Contributor. A Contribution 'originates' from a
Contributor if it was added to the Program by such Contributor itself or anyone
acting on such Contributor's behalf. Contributions do not include additions to
the Program which: (i) are separate modules of software distributed in
conjunction with the Program under their own license agreement, and (ii) are not
derivative works of the Program.

"Contributor" means any person or entity that distributes the Program.

"Licensed Patents " mean patent claims licensable by a Contributor which are
necessarily infringed by the use or sale of its Contribution alone or when
combined with the Program.

"Program" means the Contributions distributed in accordance with this Agreement.

"Recipient" means anyone who receives the Program under this Agreement,
including all Contributors.


a) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free copyright license to
reproduce, prepare derivative works of, publicly display, publicly perform,
distribute and sublicense the Contribution of such Contributor, if any, and such
derivative works, in source code and object code form.

b) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
Patents to make, use, sell, offer to sell, import and otherwise transfer the
Contribution of such Contributor, if any, in source code and object code form.
This patent license shall apply to the combination of the Contribution and the
Program if, at the time the Contribution is added by the Contributor, such
addition of the Contribution causes such combination to be covered by the
Licensed Patents. The patent license shall not apply to any other combinations
which include the Contribution. No hardware per se is licensed hereunder.

c) Recipient understands that although each Contributor grants the licenses
to its Contributions set forth herein, no assurances are provided by any
Contributor that the Program does not infringe the patent or other intellectual
property rights of any other entity. Each Contributor disclaims any liability to
Recipient for claims brought by any other entity based on infringement of
intellectual property rights or otherwise. As a condition to exercising the
rights and licenses granted hereunder, each Recipient hereby assumes sole
responsibility to secure any other intellectual property rights needed, if any.
For example, if a third party patent license is required to allow Recipient to
distribute the Program, it is Recipient's responsibility to acquire that license
before distributing the Program.

d) Each Contributor represents that to its knowledge it has sufficient
copyright rights in its Contribution, if any, to grant the copyright license set
forth in this Agreement.


A Contributor may choose to distribute the Program in object code form under its
own license agreement, provided that:

a) it complies with the terms and conditions of this Agreement; and

b) its license agreement:

i) effectively disclaims on behalf of all Contributors all warranties and
conditions, express and implied, including warranties or conditions of title and
non-infringement, and implied warranties or conditions of merchantability and
fitness for a particular purpose;

ii) effectively excludes on behalf of all Contributors all liability for
damages, including direct, indirect, special, incidental and consequential
damages, such as lost profits;

iii) states that any provisions which differ from this Agreement are offered
by that Contributor alone and not by any other party; and

iv) states that source code for the Program is available from such
Contributor, and informs licensees how to obtain it in a reasonable manner on or
through a medium customarily used for software exchange.

When the Program is made available in source code form:

a) it must be made available under this Agreement; and

b) a copy of this Agreement must be included with each copy of the Program.

Contributors may not remove or alter any copyright notices contained within the

Each Contributor must identify itself as the originator of its Contribution, if
any, in a manner that reasonably allows subsequent Recipients to identify the
originator of the Contribution.


Commercial distributors of software may accept certain responsibilities with
respect to end users, business partners and the like. While this license is
intended to facilitate the commercial use of the Program, the Contributor who
includes the Program in a commercial product offering should do so in a manner
which does not create potential liability for other Contributors. Therefore, if
a Contributor includes the Program in a commercial product offering, such
Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
every other Contributor ("Indemnified Contributor") against any losses, damages
and costs (collectively "Losses") arising from claims, lawsuits and other legal
actions brought by a third party against the Indemnified Contributor to the
extent caused by the acts or omissions of such Commercial Contributor in
connection with its distribution of the Program in a commercial product
offering. The obligations in this section do not apply to any claims or Losses
relating to any actual or alleged intellectual property infringement. In order
to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
Contributor in writing of such claim, and b) allow the Commercial Contributor to
control, and cooperate with the Commercial Contributor in, the defense and any
related settlement negotiations. The Indemnified Contributor may participate in
any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product
offering, Product X. That Contributor is then a Commercial Contributor. If that
Commercial Contributor then makes performance claims, or offers warranties
related to Product X, those performance claims and warranties are such
Commercial Contributor's responsibility alone. Under this section, the
Commercial Contributor would have to defend claims against the other
Contributors related to those performance claims and warranties, and if a court
requires any other Contributor to pay any damages as a result, the Commercial
Contributor must pay those damages.


Recipient is solely responsible for determining the appropriateness of using and
distributing the Program and assumes all risks associated with its exercise of
rights under this Agreement, including but not limited to the risks and costs of
program errors, compliance with applicable laws, damage to or loss of data,
programs or equipment, and unavailability or interruption of operations.




If any provision of this Agreement is invalid or unenforceable under applicable
law, it shall not affect the validity or enforceability of the remainder of the
terms of this Agreement, and without further action by the parties hereto, such
provision shall be reformed to the minimum extent necessary to make such
provision valid and enforceable.

If Recipient institutes patent litigation against a Contributor with respect to
a patent applicable to software (including a cross-claim or counterclaim in a
lawsuit), then any patent licenses granted by that Contributor to such Recipient
under this Agreement shall terminate as of the date such litigation is filed. In
addition, if Recipient institutes patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
itself (excluding combinations of the Program with other software or hardware)
infringes such Recipient's patent(s), then such Recipient's rights granted under
Section 2(b) shall terminate as of the date such litigation is filed.

All Recipient's rights under this Agreement shall terminate if it fails to
comply with any of the material terms or conditions of this Agreement and does
not cure such failure in a reasonable period of time after becoming aware of
such non compliance. If all Recipient's rights under this Agreement terminate,
Recipient agrees to cease use and distribution of the Program as soon as
reasonably practicable. However, Recipient's obligations under this Agreement
and any licenses granted by Recipient relating to the Program shall continue and

Everyone is permitted to copy and distribute copies of this Agreement, but in
order to avoid inconsistency the Agreement is copyrighted and may only be
modified in the following manner. The Agreement Steward reserves the right to
publish new versions (including revisions) of this Agreement from time to time.
No one other than the Agreement Steward has the right to modify this Agreement.
IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
as the Agreement Steward to a suitable separate entity. Each new version of the
Agreement will be given a distinguishing version number. The Program (including
Contributions) may always be distributed subject to the version of the Agreement
under which it was received. In addition, after a new version of the Agreement
is published, Contributor may elect to distribute the Program (including its
Contributions) under the new version. Except as expressly stated in Sections
2(a) and 2(b) above, Recipient receives no rights or licenses to the
intellectual property of any Contributor under this Agreement, whether
expressly, by implication, estoppel or otherwise. All rights in the Program not
expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the
intellectual property laws of the United States of America. No party to this
Agreement will bring a legal action under this Agreement more than one year
after the cause of action arose. Each party waives its rights to a jury trial in
any resulting litigation.