Library for Skytraq Venus838 GPS

Dependents:   Venus838_Test Atlas

Venus838.cpp

Committer:
ethanharstad
Date:
2014-06-24
Revision:
0:8c7efefad15e

File content as of revision 0:8c7efefad15e:

#include "Venus838.h"

// A0 A1 PL(2b) ID Body CS 0D 0A
Venus838::Venus838(PinName tx, PinName rx) : _gps(tx, rx) {
    _gps.baud(115200);
}

void Venus838::setNmeaMessages(const bool gga, const bool gsa, const bool gsv, const bool gll, const bool rmc, const bool vtg) {
    char cmd[16] = {
        0xA0, 0xA1, 0x00, 0x09,
        0x08, gga, gsa, gsv, gll, rmc, vtg, 0x00, 0x01,
        0x00, 0x0D, 0x0A
    };
    for(int i = 4; i < 13; i++) cmd[13] ^= cmd[i];
    for(int i = 0; i < 16; i++) _gps.putc(cmd[i]);
}

void Venus838::setUpdateRate(const uint8_t rate) {
    char cmd[10] = {
        0xA0, 0xA1, 0x00, 0x03,
        0x0E, rate, 0x01,
        0x00, 0x0D, 0x0A
    };
    for(int i = 4; i < 7; i++) cmd[7] ^= cmd[i];
    for(int i = 0; i < 10; i++) _gps.putc(cmd[i]);
}

void Venus838::setNavigationMode(const int mode) {
    char cmd[] = {
        0xA0, 0xA1, 0x00, 0x04,
        0x64, 0x17, 0x04, 0x01,
        0x00, 0x0D, 0x0A
    };
    for(int i = 4; i < 8; i++) cmd[8] ^= cmd[i];
    for(int i = 0; i < 10; i++) _gps.putc(cmd[i]);
}

bool Venus838::readable() {
    return _gps.readable();
}

void Venus838::putc(char in) {
    _gps.putc(in);
}

char Venus838::getc() {
    return _gps.getc();
}