Github Repository has been released
We've now published the github code repository for this project. The master branch is at:
So far, today, we've uploaded the vehicle code (in vehicle/OVMS.X - a PIC MP Lab X project), hardware module wiring schematics (in vehicle/Car Module), and common artwork for the Apps (in apps/artwork).
There was a last-minute change in protocol from UDP/IP to TCP/IP (due to restrictions we found that some cellphone carriers source NAT GPRS traffic, and that was causing problems with the source port of the UDP/IP connection changing unless we issued keepalive packets every 20 seconds - which would eat into cellular data plans). The SIM900 modem we use supports TCP/IP as well as UDP/IP, and switching to TCP/IP will allow us to maintain a permanent connection to the server and then bi-directionally communicate over that. This is something like the approach Apple does with their APNS (Apple Push Notification System) - the car maintains a connection back to the server, then either the car or the server can send messages over that established connection. These TCP/IP connections, while still source NATted, don't suffer from the same keepalive issue as UDP/IP and can be maintained for hours/days at a time (with very little network traffic). This change has set us back, but we are confident that the new approach will yield better results in the long term.
The framework for the in-vehicle firmware is working well. SMS works, and status can be reported to the server over TCP/IP now. The main areas of the vehicle firmware we want to work on are:
1. Encryption (RC4+Base64) for network protocol
2. Interrupt-driven CAN bus
3. Extension to the event model to allow waiting for modem responses without requiring a new state to be created
4. Pending status updates (if the network is down, queue the status update for when the network comes back)
5. Better alerting (via network status updates or SMS)
With the switch to TCP/IP, we are now handling the necessary changes to the server code. Once that is done, we'll publish the server code as well as APIs for car-server and server-app, so that the Apps can be worked on.
Several people have already let me know that they want to help out with development, and that is most appreciated. I really hope we can build a community around this. The steps to help out are (a) create a free github account (if you don't have one already), (b) pull the code, (c) github 'watch' the project, (d) fork the project if you want to work on a branch, or let me know your github username if you want to be a collaborator and need write access to the master repository, or just send me patches/fixes/extensions for merging into mainline. It would also be helpful if you could PM me your TMC forum username and eMail address so we can keep in touch.
A final note: the hardware is coming ;-) We've in final sample stage at the moment, and the factory should start production of the first batch of hardware modules real soon. We're just working through the logistics of how you can actually purchase it and get it shipped safely.