Footstep
Edit
Introduction
Footstep is an application that runs on Windows Mobile platform, it multiplex data from a GPS device and mimic as a Bluetooth GPS device. The GPS data could come from built-in GPS chips, or from another Bluetooth GPS device (requires devices with Bluetooth 2.0, or supports multipoint connection).
While footstep multiplex data, it can also logs GPS data to file, or thru custom DLLs.
Edit
Initiative
We got a
Bluetooth GPS device
and we run navigation software on our beloved
HP iPAQ 4150
. They worked together for merely more than a year, very robust and worked impressively well. We also own a
HTC StrTrk
, and got an unlimited data plan too.
We want to run
Live Search for Windows Mobile
and
Google Map Mobile
and use theirs GPS positioning feature while we are using our iPAQ 4150 by sharing the Bluetooth GPS device. Furthermore, we also want to blog where we are on the Earth.
Twitter
perhaps?
So, we spawned this project!
Edit
Planned Features
Multiplex GPS data and emulate as a Bluetooth GPS device
Log GPS data to file
It could be extensible to support custom provider
Custom provider may not send data to the Internet immediately, instead, they may log it to file and send it once Internet connectivity is detected
Scheduling of data transfer will be controlled by custom provider
On-demand start
It will only start talking to GPS when another device connect to the Bluetooth COM port
We want to keep
Footstep
in startup list and start it automatically when the device boot
Set system clock based on GPS time, a handy feature
Semi auto-configure Bluetooth and GPS Intermediate Driver
Supports
GPS Intermediate Driver
on Windows Mobile Standard (SmartPhone) platform
Vibrate when cannot connect to GPS device while emulating or logging
Supports Windows Mobile Standard (SmartPhone)
Display an overlook of trail
Demonstrate capability of custom DLL, or as a built-in feature
Marquee status bar messages for showing multiple messages with only two lines of text
Edit
Planned Plug-ins Workflow
When a GPS signal is received (every 1-2 seconds), will send a copy of the signal to plug-ins
Send heartbeats to plug-ins every 60 seconds, nomatter whether connected to GPS or not
Plug-ins developer are recommended to create worker threads on their own for long jobs
Plug-ins can host a new Form for options and features
Plug-ins will have one menu item show up on right softkey, the menu item can be a submenu
Plug-ins can show one two-line message in the main screen
Plug-ins can be disabled
Unload event will be sent when plug-in is disabled or Footstep is closing
Edit
Progress
We started the project on 2008 June 19, and here is the progress (in reverse chronological order):
2008 June 29 - "Path Tracer" real world testing
Filters to show only selected segment of GPS data, or current segment
Path are color-coded by the velocity you are going
2008 June 28 - "Path Tracer" (custom plug-ins)
Writing Path Tracer custom plug-ins to try out APIs provided by Footstep
Log GPS data to XML file
Draw GPS path to screen, with auto refresh
Purges old GPS data, will stores up to 5 segments of GPS data (segment is an one hour GPS data, or a GPS power cycle)
Fixed issues on June 22-25
2008 June 25 - More real world testing
The issue mentioned in June 22 is reproducible under following steps:
Turn everything on, make sure they can talk to each other
Turn off Bluetooth navigation device
Move SmartPhone out of range of Bluetooth GPS
Turn off Bluetooth GPS while SmartPhone is still out of range
Turn on Bluetooth navigation device and Bluetooth GPS
Navigation device can talk to SmartPhone, but SmartPhone cannot talk to Bluetooth GPS
2008 June 22 - Optimizing and real world testing
Optimized to use as little CPU as possible when in background mode
Real world testing: fire-and-forget (left in pant pockets)
Reboot SmartPhone once because Bluetooth was jammed (cannot connect to Bluetooth GPS device, but able to receive incoming Bluetooth requests)
2008 June 21 - Multiplexing GPS signal
On-demand multiplex GPS signal to connected Bluetooth device
Users can manually click "Locate Me" to get one single update from GPS (for testing GPS connectivity)
Vibrate worked on Windows Mobile Standard (SmartPhone)
When a Bluetooth device is connected (2 shorts)
When a Bluetooth device is disconnected (1 long)
When failed to connect to GPS (3 longs every 30 seconds)
Set system time based on GPS time
2008 June 20 - Working with GPS Intermediate Driver API
Work with GPS Intermediate Driver
Show lat/long, heading and speed on main screen
2008 June 19 - Initial project, targeting for Windows Mobile Standard platform with .NET Compact Framework 3.5
Wizard to configure Bluetooth and GPS Intermediate Driver
Setup GPS Intermediate Driver for paired and configured Bluetooth GPS devices
Setup multiplexor port (GPDx:) for GPS Intermediate Driver
Select different GPS Intermediate Driver