All Versions
Latest Version
Avg Release Cycle
288 days
Latest Release
1275 days ago

Changelog History

  • v1.3.0 Changes

    August 26, 2020

    ๐Ÿ†• New features

    ๐Ÿท TAG Block struct

    type TagBlock struct { Timeint64// TypeUnixTime unix timestamp (unit is likely to be s, but might be ms, YMMV), parameter: -cRelativeTime int64// TypeRelativeTime relative time, parameter: -rDestinationstring // TypeDestinationID destination identification 15 char max, parameter: -dGroupingstring // TypeGrouping sentence grouping, parameter: -gLineCountint64// TypeLineCount line count, parameter: -nSourcestring // TypeSourceID source identification 15 char max, parameter: -sTextstring // TypeTextString valid character string, parameter -t}


    Code example

    NMEA 4.10 TAG Block values can be accessed via the message's TagBlock struct:

    package mainimport ( "fmt""log""time""")func main() { sentence := "\\s:Satelite\_1,c:1553390539\*62\\!AIVDM,1,1,,A,13M@ah0025QdPDTCOl`K6`nV00Sv,0\*52"s, err := nmea.Parse(sentence) if err != nil { log.Fatal(err) } parsed := s.(nmea.VDMVDO) fmt.Printf("TAG Block timestamp: %v\n", time.Unix(parsed.TagBlock.Time, 0)) fmt.Printf("TAG Block source: %v\n", parsed.TagBlock.Source) }

    Output (locale/time zone dependent):

    $ go run main/main.go
    TAG Block timestamp: 2019-03-24 14:22:19 +1300 NZDT
    TAG Block source: Satelite_1

    Thank you!

    @klyve @simeonmiteff @icholy

  • v1.2.0 Changes

    May 11, 2020

    ๐Ÿ—„ Deprecation

    ๐Ÿ“œ Message parsing is now talker-agnostic, i.e., it is based on the sentence data type only. For a sentence like $XXYYY,220516,A,23,5133.82,W*42, where XX is the talker and YYY is the sentence data type, the parser will only account for the YYY data type, which is what defines the structure and format of the sentence.

    In your code, given a sentence like the following:

    sentence := "$GPRMC,220516,A,5133.82,N,00042.24,W,173.8,231.8,130694,004.2,W\*70"

    ๐Ÿ—„ Instead of using the old, deprecated prefixes (e.g. nmea.PrefixGPRMC) that included the talked ID and the data type:

    s, \_ := nmea.Parse(sentence)// Deprecated nmea.PrefixGPRMC, use nmea.TypeRMC insteadif s.Prefix() == nmea.PrefixGPRMC { m := s.(nmea.GPRMC) fmt.Printf("Validity: %s\n", m.Validity) ... }

    ๐Ÿ“œ Use the DataType() sentence method to determine the parsed sentence data type and then cast it to the right type:

    s, \_ := nmea.Parse(sentence)if s.DataType() == nmea.TypeRMC { m := s.(nmea.RMC) fmt.Printf("Validity: %s\n", m.Validity) ... }

    ๐Ÿ†• New features

    • ๐Ÿ“œ Ability to register custom message parsers to allow parsing of sentence types that are currently not supported by the library [link].

    ๐Ÿ†• New sentences

    • GNS - Combined GPS fix for GPS, Glonass, Galileo, and BeiDou
    • THS - Actual vessel heading in degrees True and status
    • ๐Ÿ›ฐ VDM/VDO - Encapsulated binary payload
    • WPL - Waypoint location
    • RTE - Route
    • ๐Ÿ“„ VHW - Water Speed and Heading
    • DPT - Depth of Water
    • DBS - Depth Below Surface
    • DBT - Depth below transducer

    Thank you!

    @icholy @bmurray @sthorshaug @BertoldVdb @kvartborg @krasi-georgiev @krawczyk87 @yavosh

  • v1.1.0 Changes

    June 20, 2018

    ๐Ÿ†• New Sentences

    • GPHDT - Actual vessel heading in degrees True (#34)
  • v1.0.0 Changes

    April 16, 2018

    ๐Ÿ‘Œ Supported sentences

    • GPRMC - Recommended Minimum Specific GPS/Transit data
    • GNRMC - Recommended Minimum Specific GNSS data
    • GPGGA - GPS Positioning System Fix Data
    • GNGGA - GNSS Positioning System Fix Data
    • GPGSA - GPS DOP and active satellites
    • GPGSV - GPS Satellites in view
    • GLGSV - GLONASS Satellites in view
    • GPGLL - Geographic Position, Latitude / Longitude and time
    • GPVTG - Track Made Good and Ground Speed
    • GPZDA - Date & time data
    • PGRME - Estimated Position Error (Garmin proprietary sentence)