Slightly modified version of the SerialGPS library (https://os.mbed.com/teams/components/code/SerialGPS/) to support the BufferedSerial class
Revision 5:cc8f9d7f9bdb, committed 2021-04-23
- Comitter:
- runesla
- Date:
- Fri Apr 23 09:38:08 2021 +0200
- Parent:
- 4:2c76f1ec13a9
- Commit message:
- small fixes
Changed in this revision
SerialGPS.cpp | Show annotated file Show diff for this revision Revisions of this file |
SerialGPS.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/SerialGPS.cpp Thu Apr 01 21:18:48 2021 +0200 +++ b/SerialGPS.cpp Fri Apr 23 09:38:08 2021 +0200 @@ -134,27 +134,17 @@ void SerialGPS::getline() { char ch; - int idx = -1; + uint8_t idx = 0; - if(!this->_gps_p->readable()) { return; } + //MBED_ASSERT(this->_gps->readable()); // Wait for start of sentence while(read_char() != '$'); - // Read from serial one char at a time until max length or read terminal - while(idx++ <= MAX_LINELENGTH) + // Read character until EOL + while((ch = read_char()) != '\r') { - ch = read_char(); - - if(ch == '\r') { break; } - this->_nmea[idx] = ch; + idx++; } -} - -char SerialGPS::read_char() -{ - char ch; - _gps_p->read(&ch, 1); - return ch; } \ No newline at end of file
--- a/SerialGPS.h Thu Apr 01 21:18:48 2021 +0200 +++ b/SerialGPS.h Fri Apr 23 09:38:08 2021 +0200 @@ -57,6 +57,18 @@ bool fix(); /** + * Read one character from the UART interface + * + * @return ch the character extracted from the UART interface + */ + inline char read_char() + { + char ch; + this->_gps_p->read(&ch, 1); + return ch; + } + + /** * Helper function for converting from Decimal Minutes Seconds (DMS) to Decimal Degrees (DD) * * @param dms float containing the DMS value @@ -70,7 +82,7 @@ float deg = (int) degmin / 100; float min = (int) degmin % 100; - float dd = deg + (min / 60.0) + (sec / 60); + float dd = deg + (min / 60.0) + (sec / 3600); return dd; };