I need an online GPS platform developed. This is a very simplified platform in opposed to the ones out there. What I need is a platform that would be able to use my own mapping data in this manner:-
1. There must be some sort of way to upload my mapping data, even if it is simply FTP
2. We have GPS Tracking devices that interact with the platform, they are connected to the platform through a port, IMEI etc, and use GPRS. How it works now is that a SMS message is sent the the SIM card in the GPS Tracking device, the device understands that the command sent means "I need to connect, or use my connection to the server (GPS platform) and (I'm guessing) send my Lat and Long to the server". The server now receives this information, does a reverse geocode using my map and sends back the street names etc as some sort of message so it can be used as a SMS from the GPS Tracking device. The GPS tracker now receives the data from the platform and sends the location (street name, landmarks etc) back the requesting mobile phone that sent the command in the first place. The GPS device does what it supposed to do, we just need the platform done.
I have the protocol for the GPS device itself.
The code must be open source, clean, efficient etc.
The mapping data is in Mapinfo, but I guess can be changed.
Here is a bit of the protocol:
Do NOT input ‘<’ and ‘>’ when writing a command.
All multi-byte data complies with the following sequence: High byte prior to low byte.
The size of a GPRS packet (including data) is about 100 bytes
@@ 2 bytes. It means the header of packet from server to tracker. It is in ASCII code (Hex code: 0x40)
$$ 2 bytes. It is the header of packet from tracker to server, It is in ASCII code (Hex code: 0x24)
L 2 bytes. It means the length of the whole packet including the header and ending character and it is in hex code
ID 7 bytes, ID must be digit and not over 14 digits, the unused byte will be stuffed by ‘f’ or ‘0xff’. It is in the format of hex code.
For example, if ID is 13612345678, then it will be shown as follows: 0x13, 0x61, 0x23, 0x45, 0x67, 0x8f, 0xff.
If all 7 bytes are 0xff, it is a broadcasting command. ID is in hex code
checksum 2 bytes. It indicates CRC-CCITT (default is 0xffff) checksum of all data (not including CRC itself and the ending character). It is in hex code.
24 24 00 11 13 61 23 45 67 8f ff 50 00 05 d8 0d 0a
0x05d8 = CRC-CCITT (24 24 00 11 13 61 23 45 67 8f ff 50 00)
2 bytes. It is the ending character and in hex code (0x0d,0x0a in hex code)
The GPS tracking device receives xxxxxxxx sms command from a mobile phone, then sends the following information by GPRS to the online platform:
$$<L (2 bytes)><ID (7 bytes)><0x41 0x11><phone number | Latitude,Longitude><checksum (2 bytes)>
40 40 00 33 12 34 FF FF FF FF FF 41 11 2B 38 36 31 33 34 32 31 38 33 31 33 32 7C 32 33 2E 34 35 36 32 31 33 2C 31 31 34 2E 33 35 34 31 35 36 D7 5C 0D 0A
'|'(0x7C) is the separation character
The Online GPS Platform will send the following content to the GPS tracking device by GPRS
@@<L (2 bytes)><ID (7 bytes)><0x41 0x11><phone number | Position name><checksum (2 bytes)>
NOTE: Latitude & Longitude is in degree. For example: +22.154856,-114.257896
The GPS Tracking device will then forward “Position name” to users mobile phone by SMS via text format.