{baud, NMEA} setting functions for venus GPS chip it is just a copy&paste stuff of these code written by shimniok. http://mbed.org/users/shimniok/code/AVC_2012/docs/tip/GPS_8cpp_source.html https://www.sparkfun.com/datasheets/GPS/Modules/AN0003_v1.4.14_FlashOnly.pdf
Dependents: GPS_setting_Venus_Helloworld gps-fix
Diff: gps_stg_venus.cpp
- Revision:
- 0:d80196ed93bc
diff -r 000000000000 -r d80196ed93bc gps_stg_venus.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gps_stg_venus.cpp Sat Nov 09 12:07:43 2013 +0000 @@ -0,0 +1,64 @@ +#include "gps_stg_venus.h" +GPSVenus::GPSVenus(Serial & GPSPort_) :GPSPort(GPSPort_){ + GPSPort_.baud(9600); +} + +void GPSVenus::setBaud_115200() + { + // VENUS Binary MsgID=0x05 + + char msg[11] = { 0xA0, 0xA1, 0x00, 0x04, + 0x05, 0x00, 0x05, 0, + 0, 0x0D, 0x0A }; + for (int i=4; i < 8; i++) { + msg[8] ^= msg[i]; + } + for (int i=0; i < 11; i++) + GPSPort.putc(msg[i]); + } + +void GPSVenus::setNmeaMessages(bool gga, bool gsa, bool gsv, bool gll, bool rmc, bool vtg) + { + // VENUS Binary MsgID=0x08 + // GGA interval + // GSA interval + // GSV interval + // GLL interval + // RMC interval + // VTG interval + // ZDA interval -- hardcode off + char msg[16] = { 0xA0, 0xA1, 0x00, 0x09, + 0x08, gga, gsa, gsv, gll, rmc, vtg, 0, 0, + 0, 0x0D, 0x0A }; + for (int i=4; i < 13; i++) { + msg[13] ^= msg[i]; + } + for (int i=0; i < 16; i++) + GPSPort.putc(msg[i]); +} + + +void GPSVenus::setUpdateRate(int rate) + { + char msg[10] = { 0xA0, 0xA1, 0x00, 0x03, + 0x0E, rate&0xFF, 01, + 0, 0x0D, 0x0A }; + for (int i=4; i < 7; i++) { + msg[7] ^= msg[i]; + } + switch (rate) { + case 1 : + case 2 : + case 4 : + case 5 : + case 8 : + case 10 : + case 20 : + for (int i=0; i < 10; i++) + GPSPort.putc(msg[i]); + break; + default : + break; + } +} +