rtcm3

package
v0.34.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 3, 2026 License: Apache-2.0, Apache-2.0 Imports: 19 Imported by: 0

README

RTCM3 Package

A comprehensive Go implementation of the RTCM 3.x standard for GNSS data transmission. This package provides encoding, decoding, and manipulation of RTCM3 messages with support for multiple GNSS systems including GPS, GLONASS, Galileo, BeiDou, QZSS, and SBAS.

Features

  • Complete RTCM3 Message Support: All standard RTCM3 message types (1001-1230)
  • Multi-GNSS System Support: GPS, GLONASS, Galileo, BeiDou, QZSS, SBAS
  • Generic MSM Implementation: Efficient handling of Multiple Signal Messages (MSM1-MSM7)
  • Legacy Encoder/Decoder: Support for traditional RTCM3 messages (1004, 1012)
  • Modern Architecture: Registry pattern with Go generics for extensibility
  • Comprehensive Testing: Full test coverage with real-world data samples
  • Type Safety: Strong typing with compile-time validation

Quick Start

Basic Usage
package main

import (
    "fmt"
    "gitlab.com/earthscope/gnsstools/pkg/encoding/rtcm/rtcm3"
)

func main() {
    // Read RTCM3 data from a file or network stream
    data := []byte{/* RTCM3 binary data */}
    
    // Deserialize the message
    msg, err := rtcm3.DeserializeMessage(data)
    if err != nil {
        panic(err)
    }
    
    // Check message type
    switch msg.Number() {
    case 1004:
        // GPS L1&L2 observations
        fmt.Printf("GPS observations: %+v\n", msg)
    case 1012:
        // GLONASS L1&L2 observations  
        fmt.Printf("GLONASS observations: %+v\n", msg)
    case 1077:
        // GPS MSM7 message
        fmt.Printf("GPS MSM7: %+v\n", msg)
    }
    
    // Serialize back to binary
    serialized := msg.Serialize()
    fmt.Printf("Serialized %d bytes\n", len(serialized))
}
Working with Epochs
import (
    "gitlab.com/earthscope/gnsstools/pkg/encoding/rtcm/rtcm3"
    "gitlab.com/earthscope/gnsstools/pkg/common/gnss/observation"
)

// Create a new epoch with observations
epoch := observation.NewEpoch()

// Add GPS observations
epoch.AddObservation(observation.Observation{
    System: gnss.GPS,
    SatelliteID: 5,
    Code: gnss.L1C,
    Range: 21392193.658,
    Phase: 112416779.880,
    SNR: 49.8,
})

// Encode to RTCM3
encoder := rtcm3.NewLegacyEncoder(time.Second)
rtcmData, err := encoder.Encode(epoch)
if err != nil {
    panic(err)
}

Architecture

Message Types

The package supports all RTCM3 message categories:

  • Antenna Information: 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1013
  • Station Coordinates: 1005, 1006
  • GPS Observations: 1001, 1002, 1003, 1004
  • GLONASS Observations: 1009, 1010, 1011, 1012
  • Galileo Observations: 1042, 1044, 1045, 1046
  • BeiDou Observations: 1047, 1048, 1049, 1050
  • QZSS Observations: 1041, 1043
  • SBAS Observations: 1033
  • Multiple Signal Messages (MSM): 1071-1127
  • State Space Representation (SSR): 1057-1068
  • Network RTK: 1230
Generic MSM Implementation

The package uses Go generics to efficiently handle MSM messages:

// Generic MSM structure
type MessageMsm[S, D any] struct {
    MsmHeader
    SatelliteData S
    SignalData    D
}

// MSM1 example
type MessageMsm1 struct {
    MessageMsm[SatelliteDataMsm1, SignalDataMsm1]
}
Registry Pattern

Messages are registered using a flexible registry pattern:

// Each message type registers itself
func init() {
    RegisterMessage(1004, func(payload []byte) (Message, error) {
        return DeserializeMessage1004(payload), nil
    })
}

API Reference

Core Interfaces
// Message interface for all RTCM3 messages
type Message interface {
    Serialize() []byte
    Number() int
}

// Observation interface for messages with epoch data
type Observation interface {
    Message
    Time() time.Time
    SatelliteCount() int
}
Key Functions
// Deserialize any RTCM3 message
func DeserializeMessage(data []byte) (Message, error)

// Deserialize RTCM3 frame
func DeserializeFrame(reader io.Reader) (Frame, error)

// Create legacy encoder for traditional messages
func NewLegacyEncoder(interval time.Duration) LegacyEncoder

// Create MSM7 encoder for modern messages  
func NewMsm7Encoder(interval time.Duration) Msm7Encoder
MSM Message Types
Message System Type Description
1071-1077 GPS MSM1-MSM7 GPS Multiple Signal Messages
1081-1087 GLONASS MSM1-MSM7 GLONASS Multiple Signal Messages
1091-1097 Galileo MSM1-MSM7 Galileo Multiple Signal Messages
1101-1107 SBAS MSM1-MSM7 SBAS Multiple Signal Messages
1111-1117 QZSS MSM1-MSM7 QZSS Multiple Signal Messages
1121-1127 BeiDou MSM1-MSM7 BeiDou Multiple Signal Messages

Testing

The package includes comprehensive tests with real-world data:

# Run all tests
go test ./pkg/encoding/rtcm/rtcm3/...

# Run specific test categories
go test -run TestSerializeDeserialize  # Serialization roundtrips
go test -run TestLegacyEncoder         # Legacy encoder tests
go test -run TestMSM7Encoder          # MSM7 encoder tests
Test Data

The package includes test data samples in the data/ directory:

  • Individual message frames (1001_frame.bin, 1004_frame.bin, etc.)
  • Complete RTCM3 streams (alic/ directory)
  • BINEX format samples (P041.binex)

Performance

  • Deserialization: ~1-5μs per message
  • Serialization: ~2-8μs per message
  • Memory Usage: Minimal allocations with efficient bit manipulation
  • Concurrency: Thread-safe message processing

Dependencies

  • github.com/bamiaux/iobit: Efficient bit-level I/O operations
  • gitlab.com/earthscope/gnsstools/pkg/common/gnss: GNSS system definitions
  • gitlab.com/earthscope/gnsstools/pkg/common/gnss/observation: Observation data structures

Examples

Reading RTCM3 Stream
file, err := os.Open("data.rtcm3")
if err != nil {
    panic(err)
}
defer file.Close()

scanner := rtcm3.NewScanner(file)
for scanner.Scan() {
    frame := scanner.Frame()
    msg, err := rtcm3.DeserializeMessage(frame.Payload)
    if err != nil {
        continue
    }
    
    fmt.Printf("Message %d: %d bytes\n", msg.Number(), len(frame.Payload))
}
Creating MSM7 Messages
// Create MSM7 encoder
encoder := rtcm3.NewMsm7Encoder(time.Second)

// Add observations to epoch
epoch := observation.NewEpoch()
// ... add observations ...

// Generate MSM7 messages
messages, err := encoder.FromEpoch(epoch)
if err != nil {
    panic(err)
}

for _, msg := range messages {
    data := msg.Serialize()
    fmt.Printf("Generated MSM7: %d bytes\n", len(data))
}
Working with Different GNSS Systems
// GPS observations
gpsEpoch := observation.NewEpoch()
// Add GPS observations...

// GLONASS observations  
glonassEpoch := observation.NewEpoch()
// Add GLONASS observations...

// Multi-system epoch
multiEpoch := observation.NewEpoch()
// Add observations from multiple systems...

Contributing

When adding new message types:

  1. Create the message structure
  2. Implement deserialization function
  3. Register in init() function
  4. Add comprehensive tests
  5. Update documentation

License

This package is part of the EarthScope GNSS Tools project. See the main project license for details.

References

Documentation

Index

Constants

This section is empty.

Variables

View Source
var FramePreamble byte = 0xD3

Functions

func CalculateDF408

func CalculateDF408(snr float64) uint16

calculateDF408 encodes the SNR in dB-Hz to the DF408 format using uint10.

func ComputeCNR added in v0.16.3

func ComputeCNR(o observation.Observation) (uint8, error)

ComputeCNR computes the DF015 or DF020 (GPS L1/L2 Carrier-to-Noise Density Ratio)

0-63.75 dB-Hz, 0.25 dB-Hz resolution, 8-bit unsigned integer

func ComputeDF011 added in v0.16.0

func ComputeDF011(o observation.Observation) (uint32, error)

ComputeDF011 computes the DF011 (GPS L1 Pseudorange)

0-299729.46 meters, 0.02 meters resolution, 24-bit unsigned integer

func ComputeDF012 added in v0.16.0

func ComputeDF012(o observation.Observation, fcn int) (int32, error)

ComputeDF012 computes the DF012 (GPS L1 Phase Range - L1 Pseudorange)

±262.1435 meters, 0.0005 meters resolution, 20-bit signed integer

TODO: Certain ionospheric conditions might cause the GPS L1 Phaserange – L1 Pseudorange to diverge over time across the range limits defined. Under these circumstances the computed value needs to be adjusted (rolled over) by the equivalent of 1500 cycles in order to bring the value back within the range. fcn is the Frequency Channel Number, required for GLONASS (range -7 to +6), and should be 0 for GPS and other systems.

func ComputeDF013 added in v0.16.0

func ComputeDF013(o observation.Observation) uint8

ComputeDF013 computes the DF013 (GPS L1 Lock Time Indicator) field value from the lock time in seconds.

7-bit unsigned integer

func ComputeDF014 added in v0.16.0

func ComputeDF014(o observation.Observation) (uint8, error)

ComputeDF014 computes the DF014 (GPS L1 Pseudorange Modulus Ambiguity)

0-76447076.79 meters, 299792.458 meters resolution, 8-bit unsigned integer

func ComputeDF016 added in v0.16.0

func ComputeDF016(o observation.Observation) (uint8, error)

ComputeDF016 computes the DF016 (GPS L2 Code Indicator) field value from the L2 code type. 0: C/A or L2C code, 1: P(Y) code, 2: P(Y) cross-correlation code, 3: Correlated P(Y) code

func ComputeDF017 added in v0.16.0

func ComputeDF017(L1, L2 float64) int16

ComputeDF017 computes the DF017 (GPS L2-L1 Pseudorange Difference).

Range: ±163.82 meters Resolution: 0.02 meters Encoded as a 14-bit signed integer: range [-8191, 8191] If the difference exceeds this range, return the 'invalid' code.

Formula: encoded_value = round((L2 - L1) / resolution)

func ComputeDF018 added in v0.16.0

func ComputeDF018(l1Obs, l2Obs observation.Observation, fcn int) (int32, error)

ComputeDF018 computes the DF018 (GPS L2 Phase Range - L1 Pseudorange)

±262.1435 meters, 0.0005 meters resolution, 20-bit signed integer fcn is the Frequency Channel Number, required for GLONASS (range -7 to +6), and should be 0 for GPS and other systems.

func ComputeGLONASSL1Ambiguity added in v0.24.0

func ComputeGLONASSL1Ambiguity(o observation.Observation) (uint8, error)

ComputeGLONASSL1Ambiguity computes the GLONASS L1 pseudorange ambiguity (7-bit)

func ComputeGLONASSL1Range added in v0.24.0

func ComputeGLONASSL1Range(o observation.Observation) (uint32, error)

ComputeGLONASSL1Range computes the GLONASS L1 pseudorange (25-bit)

func ComputeGLONASSL2Range added in v0.24.0

func ComputeGLONASSL2Range(l1Obs, l2Obs observation.Observation) (uint16, error)

ComputeGLONASSL2Range computes the GLONASS L2 pseudorange (14-bit) Note: In RTCM 1012, DF020 is the L2-L1 difference, not an absolute value

func Crc24q

func Crc24q(data []byte) uint32

func DF004

func DF004(e uint32) time.Time

GPS Epoch Time (TOW)

func DF004Time

func DF004Time(e uint32, start time.Time) time.Time

func DF034

func DF034(e uint32, now time.Time) time.Time

GLONASS Epoch Time (tk)

func DF385

func DF385(e uint32) time.Time

GPS Epoch Time 1s

func DF386

func DF386(e uint32, now time.Time) time.Time

GLONASS Epoch Time 1s

func DF427

func DF427(e uint32, start time.Time) time.Time

BeiDou Epoch Time (TOW)

func FineDoppler

func FineDoppler(roughDoppler, dopplerHz, frequencyMHz float64) float64

FineDoppler calculates the fine Doppler in 0.0001 m/s

func FineRangeMSM7

func FineRangeMSM7(numberOfMillis, roughRange, rangeMeters float64) float64

calculateFineRangeMSM7 calculates the fine range in 2^-29 meters calculated for each signal

func FromDF077 added in v0.9.0

func FromDF077(df077 uint8) float64

FromDF077 returns the accuracy in meters for a given DF077 value

func GetBitUint32

func GetBitUint32(num uint32, pos uint) bool

GetBitUint32 gets a single bit in a uint32 at position `pos` (MSB is bit 0)

func GetBitUint64

func GetBitUint64(num uint64, pos uint) bool

GetBitUint64 gets a single bit in a uint64 at position `pos` (MSB is bit 0)

func GetExtendedLockTimeIndex

func GetExtendedLockTimeIndex(t uint32) uint32

GetExtendedLockTimeIndex calculates the lock time index from the lock time in milliseconds DF407 - extended phase range lock time indicator

func GetLockTimeIndex

func GetLockTimeIndex(t uint32) uint32

GetLockTimeIndicator calculates the lock time indicator from the lock time in milliseconds DF402 - phaserange lock time indicator

func GetLockTimeIndicator added in v0.16.0

func GetLockTimeIndicator(lockTimeInMillis int) uint8

GetLockTimeIndicator calculates the lock time indicator based on the lock time in milliseconds. It compresses a wide range of lock times into a smaller indicator range [0, 127] using different scaling factors.

func GlonassTimeMSM

func GlonassTimeMSM(e uint32, now time.Time) time.Time

DF416 + DF034

func GlonassTimeMSMNow

func GlonassTimeMSMNow(e uint32) time.Time

func MaskBitsOutsideRange

func MaskBitsOutsideRange(x uint64, m int, n int) uint64

MaskBitsOutsideRange masks bits outside the range [m, n] in a uint64 number.

func NumberOfMillis

func NumberOfMillis(rangeMeters float64) float64

NumberOfMillis calculates the number of milliseconds in the range calculated once per satellite

func RegisterMessage added in v0.26.0

func RegisterMessage(messageNumber uint16, deserializer Deserializer)

RegisterMessage registers a deserializer function for a given message number. This function is intended to be called from the init() function of each message's file.

func RoughDoppler

func RoughDoppler(dopplerHz float64, frequencyMHz float64) float64

RoughDoppler calculates the rough Doppler in 1 m/s

func RoughRangeMSM

func RoughRangeMSM(rangeMeters float64) float64

RoughRangeMSM calculates the rough range in 2^-10 milliseconds calculated once per satellite

func SerializeMessageMsm added in v0.26.0

func SerializeMessageMsm[S, D any](msg MessageMsm[S, D], satSerializer MSMDataSerializer, sigSerializer MSMDataSerializer) []byte

Generic MSM serialization function

func SerializeMsmHeader

func SerializeMsmHeader(w *iobit.Writer, header MsmHeader)

func SetBitUint32

func SetBitUint32(num uint32, pos uint) uint32

SetBit sets a single bit in a uint32 at position `pos` (MSB is bit 0)

func SetBitUint64

func SetBitUint64(num uint64, pos uint) uint64

SetBit sets a single bit in a uint64 at position `pos` (MSB is bit 0)

func SystemToMSM7MessageNumber

func SystemToMSM7MessageNumber(sys gnss.System) (uint16, error)

func TimeToBeidouEpoch

func TimeToBeidouEpoch(t time.Time) uint32

func TimeToGLONASSEpoch

func TimeToGLONASSEpoch(t time.Time) uint32

TimeToGLONASSEpoch converts a time to a GLONASS epoch - The GLONASS epoch is a 32-bit value with the upper 3 bits representing the day of the week (DF416) and the lower 29 bits representing the time of day in milliseconds (DF034) The GLONASS epoch is based on the GLONASS system time The GLONASS system time is 3 hours ahead of UTC The GLONASS epoch is based on the start of the week (sow) which is the last Sunday at midnight

func ToDF077 added in v0.9.0

func ToDF077(accuracy float64) uint8

ToDF077 returns the DF077 value for a given accuracy in meters

Types

type AbstractMessage

type AbstractMessage struct {
	MessageNumber uint16 `struct:"uint16:12"`
}

AbstractMessage is used to factor out the MessageNumber attribute which all Message's have

func (AbstractMessage) Number

func (msg AbstractMessage) Number() int

type AntennaReferencePoint

type AntennaReferencePoint struct {
	ReferenceStationId        uint16 `struct:"uint16:12"`
	ItrfRealizationYear       uint8  `struct:"uint8:6"`
	GpsIndicator              bool   `struct:"uint8:1,variantbool"`
	GlonassIndicator          bool   `struct:"uint8:1,variantbool"`
	GalileoIndicator          bool   `struct:"uint8:1,variantbool"`
	ReferenceStationIndicator bool   `struct:"uint8:1,variantbool"`
	ReferencePointX           int64  `struct:"int64:38"`
	SingleReceiverOscilator   bool   `struct:"uint8:1,variantbool"`
	Reserved                  bool   `struct:"uint8:1,variantbool"`
	ReferencePointY           int64  `struct:"int64:38"`
	QuarterCycleIndicator     uint8  `struct:"uint8:2"`
	ReferencePointZ           int64  `struct:"int64:38"`
}

type Deserializer added in v0.26.0

type Deserializer func([]byte) (Message, error)

Deserializer function type

type Frame

type Frame struct {
	Preamble uint8
	Reserved uint8
	Length   uint16
	Payload  []byte
	Crc      uint32
}

Frame wraps an RTCM3 message to provide a boundary for parsing binary data

func DeserializeFrame

func DeserializeFrame(reader *bufio.Reader) (frame Frame, err error)

DeserializeFrame attempts to read RTCM Frame's from a bufio.Reader and only reads first byte from reader if Preamble or CRC are incorrect TODO: Consider returning the discarded byte, or using Peek for the first byte as well

func EncapsulateByteArray

func EncapsulateByteArray(data []byte) (frame Frame)

EncapsulateByteArray lazily wraps any byte array in an RTCM3 Frame

func EncapsulateMessage

func EncapsulateMessage(msg Message) (frame Frame)

EncapsulateMessage wraps any Message in an RTCM3 Frame

func (Frame) MessageNumber

func (frame Frame) MessageNumber() uint16

func (Frame) Serialize

func (frame Frame) Serialize() []byte

type LegacyEncoder added in v0.16.0

type LegacyEncoder struct {
	Interval       time.Duration
	SystemStateMap map[gnss.System]*SystemState
}

LegacyEncoder maintains locktime for each GNSS system.

The interval is the time between each RTCM 3.1 message output. The encoder will maintain locktime for each GNSS system.

func NewLegacyEncoder added in v0.16.0

func NewLegacyEncoder(interval time.Duration) *LegacyEncoder

NewLegacyEncoder creates a new LegacyEncoder with the specified interval.

func (*LegacyEncoder) Encode added in v0.16.0

func (e *LegacyEncoder) Encode(epoch observation.Epoch) ([]byte, error)

Encode encodes an observation epoch to a RTCM 3.1 message.

Extended L1&L2 GPS RTK Observables (1004) Extended L1&L2 GLONASS RTK Observables (1012)

func (*LegacyEncoder) EpochTo1004 added in v0.16.3

func (e *LegacyEncoder) EpochTo1004(epoch observation.Epoch) (*Message1004, error)

func (*LegacyEncoder) EpochTo1012 added in v0.24.0

func (e *LegacyEncoder) EpochTo1012(epoch observation.Epoch) (*Message1012, error)

EpochTo1012 encodes an observation epoch to a RTCM 3.1 Message 1012.

Extended L1&L2 GLONASS RTK Observables (1012)

func (*LegacyEncoder) GetActiveSatellites added in v0.24.0

func (e *LegacyEncoder) GetActiveSatellites(system gnss.System) []int

GetActiveSatellites returns the list of active satellites for a given system

func (*LegacyEncoder) GetLockTime added in v0.24.0

func (e *LegacyEncoder) GetLockTime(system gnss.System, satID int, signalID int) int

GetLockTime returns the cumulative lock time for a specific satellite and signal

func (*LegacyEncoder) GetSystemState added in v0.24.0

func (e *LegacyEncoder) GetSystemState(system gnss.System) *SystemState

GetSystemState returns the current system state for a given GNSS system

func (*LegacyEncoder) Message1004ToEpoch added in v0.24.0

func (e *LegacyEncoder) Message1004ToEpoch(payload []byte) (observation.Epoch, error)

Message1004ToEpoch converts a Message 1004 (GPS) back to an observation epoch

func (*LegacyEncoder) Message1004ToEpochWithState added in v0.24.0

func (e *LegacyEncoder) Message1004ToEpochWithState(payload []byte) (observation.Epoch, error)

Message1004ToEpochWithState converts a Message 1004 (GPS) back to an observation epoch with state tracking

func (*LegacyEncoder) Message1012ToEpoch added in v0.24.0

func (e *LegacyEncoder) Message1012ToEpoch(payload []byte) (observation.Epoch, error)

Message1012ToEpoch converts a Message 1012 (GLONASS) back to an observation epoch

func (*LegacyEncoder) Message1012ToEpochWithState added in v0.24.0

func (e *LegacyEncoder) Message1012ToEpochWithState(payload []byte) (observation.Epoch, error)

Message1012ToEpochWithState converts a Message 1012 (GLONASS) back to an observation epoch with state tracking

func (*LegacyEncoder) ToEpoch added in v0.24.0

func (e *LegacyEncoder) ToEpoch(data []byte) (observation.Epoch, error)

ToEpoch converts RTCM legacy messages back to an observation epoch

type MSMDataSerializer added in v0.26.0

type MSMDataSerializer interface {
	SerializeTo(w *iobit.Writer)
	GetBitCount() int
}

MSMDataSerializer defines the interface for serializing MSM data

type Message

type Message interface {
	// Serialize the message to binary
	Serialize() []byte
	// This is the RTCM Message number
	Number() int
}

Message interface represents any RTCM3 message

func DeserializeMessage

func DeserializeMessage(payload []byte) (Message, error)

DeserializeMessage extracts Message Number from payload and deserializes to the appropriate Message type using the registry.

type Message1001

type Message1001 struct {
	AbstractMessage
	ReferenceStationID uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:30"`
	SynchronousGNSS    bool   `struct:"uint8:1,variantbool"`
	SignalsProcessed   uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SatelliteData      []struct {
		SatelliteID         uint8  `struct:"uint8:6"`
		L1CodeIndicator     bool   `struct:"uint8:1,variantbool"`
		L1Pseudorange       uint32 `struct:"uint32:24"`
		L1PhaseRange        int32  `struct:"int32:20"`
		L1LockTimeIndicator uint8  `struct:"uint8:7"`
	}
}

L1-Only GPS RTK Observables

func (Message1001) SatelliteCount

func (msg Message1001) SatelliteCount() int

func (Message1001) Serialize

func (msg Message1001) Serialize() []byte

func (Message1001) Time

func (msg Message1001) Time() time.Time

type Message1002

type Message1002 struct {
	AbstractMessage
	ReferenceStationID uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:30"`
	SynchronousGNSS    bool   `struct:"uint8:1,variantbool"`
	SignalsProcessed   uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SatelliteData      []struct {
		SatelliteID            uint8  `struct:"uint8:6"`
		L1CodeIndicator        bool   `struct:"uint8:1,variantbool"`
		L1Pseudorange          uint32 `struct:"uint32:24"`
		L1PhaseRange           int32  `struct:"int32:20"`
		L1LockTimeIndicator    uint8  `struct:"uint8:7"`
		L1PseudorangeAmbiguity uint8  `struct:"uint8"`
		L1CNR                  uint8  `struct:"uint8"`
	}
}

Extended L1-Only GPS RTK Observables

func (Message1002) SatelliteCount

func (msg Message1002) SatelliteCount() int

func (Message1002) Serialize

func (msg Message1002) Serialize() []byte

func (Message1002) Time

func (msg Message1002) Time() time.Time

type Message1003

type Message1003 struct {
	AbstractMessage
	ReferenceStationID uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:30"`
	SynchronousGNSS    bool   `struct:"uint8:1,variantbool"`
	SignalsProcessed   uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SatelliteData      []struct {
		SatelliteID             uint8  `struct:"uint8:6"`
		L1CodeIndicator         bool   `struct:"uint8:1,variantbool"`
		L1Pseudorange           uint32 `struct:"uint32:24"`
		L1PhaseRange            int32  `struct:"int32:20"`
		L1LockTimeIndicator     uint8  `struct:"uint8:7"`
		L2CodeIndicator         uint8  `struct:"uint8:2"`
		L2PseudorangeDifference int16  `struct:"int16:14"`
		L2PhaseRange            int32  `struct:"int32:20"`
		L2LockTimeIndicator     uint8  `struct:"uint8:7"`
	}
}

L1&L2 GPS RTK Observables

func (Message1003) SatelliteCount

func (msg Message1003) SatelliteCount() int

func (Message1003) Serialize

func (msg Message1003) Serialize() []byte

func (Message1003) Time

func (msg Message1003) Time() time.Time

type Message1004

type Message1004 struct {
	AbstractMessage
	ReferenceStationID uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:30"`
	SynchronousGNSS    bool   `struct:"uint8:1,variantbool"`
	SignalsProcessed   uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SatelliteData      []SatelliteData1004
}

Extended L1&L2 GPS RTK Observables

func (Message1004) SatelliteCount

func (msg Message1004) SatelliteCount() int

func (Message1004) Serialize

func (msg Message1004) Serialize() []byte

func (Message1004) Time

func (msg Message1004) Time() time.Time

type Message1005

type Message1005 struct {
	AbstractMessage
	AntennaReferencePoint
}

Stationary RTK Reference Station ARP

func (Message1005) Serialize

func (msg Message1005) Serialize() []byte

type Message1006

type Message1006 struct {
	AbstractMessage
	AntennaReferencePoint
	AntennaHeight uint16 `struct:"uint16"`
}

Stationary RTK Reference Station ARP with Antenna Height

func (Message1006) Serialize

func (msg Message1006) Serialize() []byte

type Message1007

type Message1007 struct {
	AbstractMessage
	MessageAntennaDescriptor
}

Antenna Descriptor

func (Message1007) Serialize

func (msg Message1007) Serialize() []byte

type Message1008

type Message1008 struct {
	AbstractMessage
	MessageAntennaDescriptor
	SerialNumberLength uint8  `struct:"uint8"`
	SerialNumber       string `struct:"[]byte,sizefrom=SerialNumberLength"`
}

Antenna Descriptor & Serial Number

func (Message1008) Serialize

func (msg Message1008) Serialize() []byte

type Message1009

type Message1009 struct {
	AbstractMessage
	ReferenceStationId uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:27"`
	SynchronousGnss    bool   `struct:"uint8:1,variantbool"`
	SignalCount        uint8  `struct:"uint8:5,sizeof=SignalData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SignalData         []struct {
		SatelliteId         uint8  `struct:"uint8:6"`
		L1CodeIndicator     bool   `struct:"uint8:1,variantbool"`
		FrequencyChannel    uint8  `struct:"uint8:5"`
		L1Pseudorange       uint32 `struct:"uint32:25"`
		L1PhaseRange        int32  `struct:"int32:20"`
		L1LockTimeIndicator uint8  `struct:"uint8:7"`
	}
}

L1-Only GLONASS RTK Observables

func (Message1009) SatelliteCount

func (msg Message1009) SatelliteCount() int

func (Message1009) Serialize

func (msg Message1009) Serialize() []byte

func (Message1009) Time

func (msg Message1009) Time() time.Time

type Message1010

type Message1010 struct {
	AbstractMessage
	ReferenceStationId uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:27"`
	SynchronousGnss    bool   `struct:"uint8:1,variantbool"`
	SignalCount        uint8  `struct:"uint8:5,sizeof=SignalData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SignalData         []struct {
		SatelliteId            uint8  `struct:"uint8:6"`
		L1CodeIndicator        bool   `struct:"uint8:1,variantbool"`
		FrequencyChannel       uint8  `struct:"uint8:5"`
		L1Pseudorange          uint32 `struct:"uint32:25"`
		L1PhaseRange           int32  `struct:"int32:20"`
		L1LockTimeIndicator    uint8  `struct:"uint8:7"`
		L1PseudorangeAmbiguity uint8  `struct:"uint8:7"`
		L1Cnr                  uint8  `struct:"uint8"`
	}
}

Extended L1-Only GLONASS RTK Observables

func (Message1010) SatelliteCount

func (msg Message1010) SatelliteCount() int

func (Message1010) Serialize

func (msg Message1010) Serialize() []byte

func (Message1010) Time

func (msg Message1010) Time() time.Time

type Message1011

type Message1011 struct {
	AbstractMessage
	ReferenceStationId uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:27"`
	SynchronousGnss    bool   `struct:"uint8:1,variantbool"`
	SignalCount        uint8  `struct:"uint8:5,sizeof=SignalData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SignalData         []struct {
		SatelliteId         uint8  `struct:"uint8:6"`
		L1CodeIndicator     bool   `struct:"uint8:1,variantbool"`
		FrequencyChannel    uint8  `struct:"uint8:5"`
		L1Pseudorange       uint32 `struct:"uint32:25"`
		L1PhaseRange        int32  `struct:"int32:20"`
		L1LockTimeIndicator uint8  `struct:"uint8:7"`
		L2CodeIndicator     uint8  `struct:"uint8:2"`
		L2Pseudorange       uint16 `struct:"uint16:14"`
		L2PhaseRange        int32  `struct:"int32:20"`
		L2LockTimeIndicator uint8  `struct:"uint8:7"`
	}
}

L1&L2 GLONASS RTK Observables

func (Message1011) SatelliteCount

func (msg Message1011) SatelliteCount() int

func (Message1011) Serialize

func (msg Message1011) Serialize() []byte

func (Message1011) Time

func (msg Message1011) Time() time.Time

type Message1012

type Message1012 struct {
	AbstractMessage
	ReferenceStationId uint16 `struct:"uint16:12"`
	Epoch              uint32 `struct:"uint32:27"`
	SynchronousGnss    bool   `struct:"uint8:1,variantbool"`
	SignalCount        uint8  `struct:"uint8:5,sizeof=SignalData"`
	SmoothingIndicator bool   `struct:"uint8:1,variantbool"`
	SmoothingInterval  uint8  `struct:"uint8:3"`
	SignalData         []SignalData1012
}

Extended L1&L2 GLONASS RTK Observables

func (Message1012) SatelliteCount

func (msg Message1012) SatelliteCount() int

func (Message1012) Serialize

func (msg Message1012) Serialize() []byte

func (Message1012) Time

func (msg Message1012) Time() time.Time

type Message1013

type Message1013 struct {
	AbstractMessage
	ReferenceStationId uint16 `struct:"uint16:12"`
	Mjd                uint16 `struct:"uint16"`
	SecondsOfDay       uint32 `struct:"uint32:17"`
	MessageCount       uint8  `struct:"uint8:5,sizeof=Messages"`
	LeapSeconds        uint8  `struct:"uint8"`
	Messages           []struct {
		Id                   uint16 `struct:"uint16:12"`
		SyncFlag             bool   `struct:"uint8:1,variantbool"`
		TransmissionInterval uint16 `struct:"uint16"`
	}
}

System Parameters

func (Message1013) Serialize

func (msg Message1013) Serialize() []byte

type Message1014

type Message1014 struct {
	AbstractMessage
	NetworkID                    uint8  `struct:"uint8:8"`
	SubnetworkID                 uint8  `struct:"uint8:4"`
	AuxiliaryStationsTransmitted uint8  `struct:"uint8:5"`
	MasterReferenceStationID     uint16 `struct:"uint16:12"`
	AuxiliaryReferenceStationID  uint16 `struct:"uint16:12"`
	AuxMasterDeltaLatitude       int32  `struct:"int32:20"`
	AuxMasterDeltaLongitude      int32  `struct:"int32:21"`
	AuxMasterDeltaHeight         int32  `struct:"int32:23"`
}

Network Auxiliary Station Data Message

func (Message1014) Serialize

func (msg Message1014) Serialize() []byte

type Message1015

type Message1015 struct {
	AbstractMessage
	NetworkID                   uint8  `struct:"uint8"`
	SubnetworkID                uint8  `struct:"uint8:4"`
	Epoch                       uint32 `struct:"uint32:23"`
	MultipleMessageIndicator    bool   `struct:"uint8:1,variantbool"`
	MasterReferenceStationID    uint16 `struct:"uint16:12"`
	AuxiliaryReferenceStationID uint16 `struct:"uint16:12"`
	SatelliteCount              uint8  `struct:"uint8:4,sizeof=SatelliteData"`
	SatelliteData               []struct {
		SatelliteID                                 uint8 `struct:"uint8:6"`
		AmbiguityStatusFlag                         uint8 `struct:"uint8:2"`
		NonSyncCount                                uint8 `struct:"uint8:3"`
		IonosphericCarrierPhaseCorrectionDifference int32 `struct:"int32:17"`
	}
}

GPS Ionospheric Correction Differences

func (Message1015) Serialize

func (msg Message1015) Serialize() []byte

type Message1016

type Message1016 struct {
	AbstractMessage
	NetworkID                   uint8  `struct:"uint8"`
	SubnetworkID                uint8  `struct:"uint8:4"`
	Epoch                       uint32 `struct:"uint32:23"`
	MultipleMessageIndicator    bool   `struct:"uint8:1,variantbool"`
	MasterReferenceStationID    uint16 `struct:"uint16:12"`
	AuxiliaryReferenceStationID uint16 `struct:"uint16:12"`
	SatelliteCount              uint8  `struct:"uint8:4,sizeof=SatelliteData"`
	SatelliteData               []struct {
		SatelliteID                               uint8 `struct:"uint8:6"`
		AmbiguityStatusFlag                       uint8 `struct:"uint8:2"`
		NonSyncCount                              uint8 `struct:"uint8:3"`
		GeometricCarrierPhaseCorrectionDifference int32 `struct:"int32:17"`
		IODE                                      uint8 `struct:"uint8"`
	}
}

GPS Geometric Correction Differences

func (Message1016) Serialize

func (msg Message1016) Serialize() []byte

type Message1017

type Message1017 struct {
	AbstractMessage
	NetworkID                   uint8  `struct:"uint8"`
	SubnetworkID                uint8  `struct:"uint8:4"`
	Epoch                       uint32 `struct:"uint32:23"`
	MultipleMessageIndicator    bool   `struct:"uint8:1,variantbool"`
	MasterReferenceStationID    uint16 `struct:"uint16:12"`
	AuxiliaryReferenceStationID uint16 `struct:"uint16:12"`
	SatelliteCount              uint8  `struct:"uint8:4,sizeof=SatelliteData"`
	SatelliteData               []struct {
		SatelliteID                                 uint8 `struct:"uint8:6"`
		AmbiguityStatusFlag                         uint8 `struct:"uint8:2"`
		NonSyncCount                                uint8 `struct:"uint8:3"`
		GeometricCarrierPhaseCorrectionDifference   int32 `struct:"int32:17"`
		IODE                                        uint8 `struct:"uint8"`
		IonosphericCarrierPhaseCorrectionDifference int32 `struct:"uint32:17"`
	}
}

GPS Combined Geometric and Ionospheric Correction Differences

func (Message1017) Serialize

func (msg Message1017) Serialize() []byte

type Message1019

type Message1019 struct {
	AbstractMessage
	// Satellite ID DF009 (1-63)
	SatelliteID uint8 `struct:"uint8:6"`
	// Week Number DF076 (0-1023)
	WeekNumber uint16 `struct:"uint16:10"`
	// SV accuracy DF077
	SVAccuracy   uint8  `struct:"uint8:4"`
	CodeOnL2     uint8  `struct:"uint8:2"`
	IDOT         int16  `struct:"int16:14"`
	IODE         uint8  `struct:"uint8"`
	Toc          uint16 `struct:"uint16"`
	Af2          int8   `struct:"int8"`
	Af1          int16  `struct:"int16"`
	Af0          int32  `struct:"int32:22"`
	IODC         uint16 `struct:"uint16:10"`
	Crs          int16  `struct:"int16"`
	DeltaN       int16  `struct:"int16"`
	M0           int32  `struct:"int32"`
	Cuc          int16  `struct:"int16"`
	Eccentricity uint32 `struct:"uint32"`
	Cus          int16  `struct:"int16"`
	SrA          uint32 `struct:"uint32"`
	Toe          uint16 `struct:"uint16"`
	Cic          int16  `struct:"int16"`
	Omega0       int32  `struct:"int32"`
	Cis          int16  `struct:"int16"`
	I0           int32  `struct:"int32"`
	Crc          int16  `struct:"int16"`
	Perigee      int32  `struct:"int32"`
	OmegaDot     int32  `struct:"int32:24"`
	Tgd          int8   `struct:"int8"`
	SVHealth     uint8  `struct:"uint8:6"`
	L2PDataFlag  bool   `struct:"uint8:1,variantbool"`
	FitInterval  bool   `struct:"uint8:1,variantbool"`
}

GPS Ephemerides

func FromGPSLNAVMessage added in v0.9.0

func FromGPSLNAVMessage(eph ephemeris.GPSLNAVMessage) Message1019

func (Message1019) GetGPSWeek added in v0.9.0

func (msg Message1019) GetGPSWeek() int

GetGPSWeek returns the GPS week number for the ephemeris

func (Message1019) Serialize

func (msg Message1019) Serialize() []byte

func (Message1019) ToGPSLNAVMessage added in v0.9.0

func (msg Message1019) ToGPSLNAVMessage() ephemeris.GPSLNAVMessage

ToGPSLNAVMessage converts the RTCM3 Message 1019 to a ephemeris.Ephemeris struct

type Message1020

type Message1020 struct {
	AbstractMessage
	SatelliteId               uint8  `struct:"uint8:6"`
	FrequencyChannel          uint8  `struct:"uint8:5"`
	AlmanacHealth             bool   `struct:"uint8:1,variantbool"`
	AlmanacHealthAvailability bool   `struct:"uint8:1,variantbool"`
	P1                        uint8  `struct:"uint8:2"`
	Tk                        uint16 `struct:"uint16:12"`
	Msb                       bool   `struct:"uint8:1,variantbool"`
	P2                        bool   `struct:"uint8:1,variantbool"`
	Tb                        uint8  `struct:"uint8:7"`
	XnTb1                     Sint   `struct:"uint32:24"`
	XnTb                      Sint   `struct:"uint32:27"`
	XnTb2                     Sint   `struct:"uint8:5"`
	YnTb1                     Sint   `struct:"uint32:24"`
	YnTb                      Sint   `struct:"uint32:27"`
	YnTb2                     Sint   `struct:"uint8:5"`
	ZnTb1                     Sint   `struct:"uint32:24"`
	ZnTb                      Sint   `struct:"uint32:27"`
	ZnTb2                     Sint   `struct:"uint8:5"`
	P3                        bool   `struct:"uint8:1,variantbool"`
	GammaN                    Sint   `struct:"uint16:11"`
	Mp                        uint8  `struct:"uint8:2"`
	M1n3                      bool   `struct:"uint8:1,variantbool"`
	TauN                      Sint   `struct:"uint32:22"`
	MDeltaTauN                Sint   `struct:"uint8:5"`
	En                        uint8  `struct:"uint8:5"`
	MP4                       bool   `struct:"uint8:1,variantbool"`
	MFt                       uint8  `struct:"uint8:4"`
	MNt                       uint16 `struct:"uint16:11"`
	MM                        uint8  `struct:"uint8:2"`
	AdditionalData            bool   `struct:"uint8:1,variantbool"`
	Na                        uint16 `struct:"uint16:11"`
	TauC                      Sint   `struct:"uint32"`
	MN4                       uint8  `struct:"uint8:5"`
	MTauGps                   Sint   `struct:"uint32:22"`
	M1n5                      bool   `struct:"uint8:1,variantbool"`
	Reserved                  uint8  `struct:"uint8:7"`
}

GLONASS Ephemerides

func (Message1020) Serialize

func (msg Message1020) Serialize() []byte

type Message1021

type Message1021 struct {
	AbstractMessage
	SourceNameCounter                      uint8  `struct:"uint8:5"`
	SourceName                             string `struct:"[]byte,sizefrom=SourceNameCounter"`
	TargetNameCounter                      uint8  `struct:"uint8:5"`
	TargetName                             string `struct:"[]byte,sizefrom=TargetNameCounter"`
	SystemIdentificationNumber             uint8  `struct:"uint8"`
	UtilizedTransformationMessageIndicator uint16 `struct:"uint16:10"`
	PlateNumber                            uint8  `struct:"uint5"`
	ComputationIndicator                   uint8  `struct:"uint8"`
	HeightIndicator                        uint8  `struct:"uint8:2"`
	PhiV                                   int32  `struct:"int32:19"`
	LambdaV                                int32  `struct:"int32:20"`
	DeltaPhiV                              uint16 `struct:"uint16:14"`
	DeltaLambdaV                           uint16 `struct:"uint16:14"`
	DX                                     int32  `struct:"int32:23"`
	DY                                     int32  `struct:"int32:23"`
	DZ                                     int32  `struct:"int32:23"`
	R1                                     int32  `struct:"int32"`
	R2                                     int32  `struct:"int32"`
	R3                                     int32  `struct:"int32"`
	DS                                     int32  `struct:"int32:25"`
	AddAS                                  int32  `struct:"int32:24"`
	AddBS                                  int32  `struct:"int32:25"`
	AddATau                                int32  `struct:"int32:24"`
	AddBTau                                int32  `struct:"int32:25"`
	HorizontalHMQualityIndicator           uint8  `struct:"uint8:3"`
	VerticalHMQualityIndicator             uint8  `struct:"uint8:3"`
}

func (Message1021) Serialize

func (msg Message1021) Serialize() []byte

type Message1022

type Message1022 struct {
	AbstractMessage
	SourceNameCounter                      uint8  `struct:"uint8:5"`
	SourceName                             string `struct:"[]byte,sizefrom=SourceNameCounter"`
	TargetNameCounter                      uint8  `struct:"uint8:5"`
	TargetName                             string `struct:"[]byte,sizefrom=TargetNameCounter"`
	SystemIdentificationNumber             uint8  `struct:"uint8"`
	UtilizedTransformationMessageIndicator uint16 `struct:"uint16:10"`
	PlateNumber                            uint8  `struct:"uint5"`
	ComputationIndicator                   uint8  `struct:"uint8"`
	HeightIndicator                        uint8  `struct:"uint8:2"`
	PhiV                                   int32  `struct:"int32:19"`
	LambdaV                                int32  `struct:"int32:20"`
	DeltaPhiV                              uint16 `struct:"uint16:14"`
	DeltaLambdaV                           uint16 `struct:"uint16:14"`
	DX                                     int32  `struct:"int32:23"`
	DY                                     int32  `struct:"int32:23"`
	DZ                                     int32  `struct:"int32:23"`
	R1                                     int32  `struct:"int32"`
	R2                                     int32  `struct:"int32"`
	R3                                     int32  `struct:"int32"`
	DS                                     int32  `struct:"int32:25"`
	XP                                     int64  `struct:"int64:35"`
	YP                                     int64  `struct:"int64:35"`
	ZP                                     int64  `struct:"int64:35"`
	AddAS                                  int32  `struct:"int32:24"`
	AddBS                                  int32  `struct:"int32:25"`
	AddATau                                int32  `struct:"int32:24"`
	AddBTau                                int32  `struct:"int32:25"`
	HorizontalHMQualityIndicator           uint8  `struct:"uint8:3"`
	VerticalHMQualityIndicator             uint8  `struct:"uint8:3"`
}

func (Message1022) Serialize

func (msg Message1022) Serialize() []byte

type Message1023

type Message1023 struct {
	AbstractMessage
	SystemIdentificationNumber             uint8  `struct:"uint8"`
	HorizontalShiftIndicator               bool   `struct:"uint8:1,variantbool"`
	VerticalShiftIndicator                 bool   `struct:"uint8:1,variantbool"`
	Phi0                                   int32  `struct:"int32:21"`
	Lambda0                                int32  `struct:"int32:22"`
	DeltaPhi                               uint16 `struct:"uint16:12"`
	DeltaLambda                            uint16 `struct:"uint16:12"`
	MeanDeltaPhi                           int8   `struct:"int8"`
	MeanDeltaLambda                        int8   `struct:"int8"`
	MeanDeltaH                             int16  `struct:"int16:15"`
	DeltaPhiI                              int16  `struct:"int16:9"`
	DeltaLambdaI                           int16  `struct:"int16:9"`
	DeltaHI                                int16  `struct:"int16:9"`
	HorizontalInterpolationMethodIndicator uint8  `struct:"uint8:2"`
	VerticalInterpolationMethodIndicator   uint8  `struct:"uint8:2"`
	HorizontalGridQualityIndicator         uint8  `struct:"uint8:3"`
	VerticalGridQualityIndicator           uint8  `struct:"uint8:3"`
	ModifiedJulianDayNumber                uint16 `struct:"uint16"`
}

func (Message1023) Serialize

func (msg Message1023) Serialize() []byte

type Message1024

type Message1024 struct {
	AbstractMessage
	SystemIdentificationNumber             uint8  `struct:"uint8"`
	HorizontalShiftIndicator               bool   `struct:"uint8:1,variantbool"`
	VerticalShiftIndicator                 bool   `struct:"uint8:1,variantbool"`
	N0                                     int32  `struct:"int32:25"`
	E0                                     int32  `struct:"int32:26"`
	MeanDeltaN                             int16  `struct:"int16:10"`
	MeanDeltaE                             int16  `struct:"int16:10"`
	MeanDeltaH                             int16  `struct:"int16:15"`
	DeltaNI                                int16  `struct:"int16:9"`
	DeltaEI                                int16  `struct:"int16:9"`
	DeltaHI                                int16  `struct:"int16:9"`
	HorizontalInterpolationMethodIndicator uint8  `struct:"uint8:2"`
	VerticalInterpolationMethodIndicator   uint8  `struct:"uint8:2"`
	HorizontalGridQualityIndicator         uint8  `struct:"uint8:3"`
	VerticalGridQualityIndicator           uint8  `struct:"uint8:3"`
	ModifiedJulianDayNumber                uint16 `struct:"uint16"`
}

func (Message1024) Serialize

func (msg Message1024) Serialize() []byte

type Message1025

type Message1025 struct {
	AbstractMessage
	SystemIdentificationNumber uint8 `struct:"uint8"`
	LaNO                       int64 `struct:"int64:34"`
	LoNO                       int64 `struct:"int64:35"`
	AddSN0                     int32 `struct:"int32:30"`
	FE                         int64 `struct:"int64:36"`
	FN                         int64 `struct:"int64:35"`
}

func (Message1025) Serialize

func (msg Message1025) Serialize() []byte

type Message1026

type Message1026 struct {
	AbstractMessage
	SystemIdentificationNumber uint8 `struct:"uint8"`
	ProjectionType             uint8 `struct:"uint8:6"`
	LaNO                       int64 `struct:"int64:34"`
	LoNO                       int64 `struct:"int64:35"`
	LaSP1                      int64 `struct:"int64:34"`
	LaSP2                      int64 `struct:"int64:34"`
	EFO                        int64 `struct:"int64:36"`
	NFO                        int64 `struct:"int64:35"`
}

func (Message1026) Serialize

func (msg Message1026) Serialize() []byte

type Message1027

type Message1027 struct {
	AbstractMessage
	SystemIdentificationNumber uint8  `struct:"uint8"`
	ProjectionType             uint8  `struct:"uint8:6"`
	RectificationFlag          bool   `struct:"uint8:1,variantbool"`
	LaPC                       int64  `struct:"int64:34"`
	LoPC                       int64  `struct:"int64:35"`
	AzIL                       uint64 `struct:"uint64:35"`
	DiffARSG                   int32  `struct:"int32:26"`
	AddSIL                     uint32 `struct:"uint32:30"`
	EPC                        uint64 `struct:"uint64:36"`
	NPC                        int64  `struct:"int64:35"`
}

func (Message1027) Serialize

func (msg Message1027) Serialize() []byte

type Message1029

type Message1029 struct {
	AbstractMessage
	ReferenceStationId uint16 `struct:"uint16:12"`
	Mjd                uint16 `struct:"uint16"`
	SecondsOfDay       uint32 `struct:"uint32:17"`
	Characters         uint8  `struct:"uint8:7"`
	CodeUnitsLength    uint8  `struct:"uint8"`
	CodeUnits          string `struct:"[]byte,sizefrom=CodeUnitsLength"`
}

Unicode Text String

func (Message1029) Serialize

func (msg Message1029) Serialize() []byte

type Message1030

type Message1030 struct {
	AbstractMessage
	Epoch              uint32 `struct:"uint32:20"`
	ReferenceStationId uint16 `struct:"uint16:12"`
	NRefs              uint8  `struct:"uint8:7"`
	Satellites         uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SatelliteData      []struct {
		SatelliteId uint8  `struct:"uint8:6"`
		Soc         uint8  `struct:"uint8"`
		Sod         uint16 `struct:"uint16:9"`
		Soh         uint8  `struct:"uint8:6"`
		SIc         uint16 `struct:"uint16:10"`
		SId         uint16 `struct:"uint16:10"`
	}
}

GPS Network RTK Residual Message

func (Message1030) Serialize

func (msg Message1030) Serialize() []byte

type Message1031

type Message1031 struct {
	AbstractMessage
	Epoch              uint32 `struct:"uint32:17"`
	ReferenceStationId uint16 `struct:"uint16:12"`
	NRefs              uint8  `struct:"uint8:7"`
	Satellites         uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SatelliteData      []struct {
		SatelliteId uint8  `struct:"uint8:6"`
		Soc         uint8  `struct:"uint8"`
		Sod         uint16 `struct:"uint16:9"`
		Soh         uint8  `struct:"uint8:6"`
		SIc         uint16 `struct:"uint16:10"`
		SId         uint16 `struct:"uint16:10"`
	}
}

TODO: Implement a Time method for GLONASS Residuals Epoch Time - DF225 GLONASS Network RTK Residual Message

func (Message1031) Serialize

func (msg Message1031) Serialize() []byte

type Message1032

type Message1032 struct {
	AbstractMessage
	NonPhysicalReferenceStationId uint16 `struct:"uint16:12"`
	PhysicalReferenceStationId    uint16 `struct:"uint16:12"`
	EpochYear                     uint8  `struct:"uint8:6"`
	ArpEcefX                      int64  `struct:"int64:38"`
	ArpEcefY                      int64  `struct:"int64:38"`
	ArpEcefZ                      int64  `struct:"int64:38"`
}

Physical Reference Station Position Message

func (Message1032) Serialize

func (msg Message1032) Serialize() []byte

type Message1033

type Message1033 struct {
	AbstractMessage
	MessageAntennaDescriptor
	AntennaSerialNumberLength     uint8  `struct:"uint8"`
	AntennaSerialNumber           string `struct:"[]byte,sizefrom=AntennaSerialNumberLength"`
	ReceiverTypeDescriptorLength  uint8  `struct:"uint8"`
	ReceiverTypeDescriptor        string `struct:"[]byte,sizefrom=ReceiverTypeDescriptorLength"`
	ReceiverFirmwareVersionLength uint8  `struct:"uint8"`
	ReceiverFirmwareVersion       string `struct:"[]byte,sizefrom=ReceiverFirmwareVersionLength"`
	ReceiverSerialNumberLength    uint8  `struct:"uint8"`
	ReceiverSerialNumber          string `struct:"[]byte,sizefrom=ReceiverSerialNumberLength"`
}

Receiver and Antenna Descriptors

func (Message1033) Serialize

func (msg Message1033) Serialize() []byte

type Message1034

type Message1034 struct {
	AbstractMessage
	ReferenceStationID        uint16 `struct:"uint16:12"`
	FKPEpoch                  uint32 `struct:"uint32:20"`
	SatelliteSignalsProcessed uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SatelliteData             []struct {
		SatelliteID uint8 `struct:"uint8:6"`
		IODE        uint8 `struct:"uint8"`
		N0          int16 `struct:"int16:12"`
		E0          int16 `struct:"int16:12"`
		NI          int16 `struct:"int16:14"`
		EI          int16 `struct:"int16:14"`
	}
}

GPS Network FKP Gradient

func (Message1034) Serialize

func (msg Message1034) Serialize() []byte

type Message1035

type Message1035 struct {
	AbstractMessage
	ReferenceStationID        uint16 `struct:"uint16:12"`
	FKPEpoch                  uint32 `struct:"uint32:17"`
	SatelliteSignalsProcessed uint8  `struct:"uint8:5,sizeof=SatelliteData"`
	SatelliteData             []struct {
		SatelliteID uint8 `struct:"uint8:6"`
		IOD         uint8 `struct:"uint8"`
		N0          int16 `struct:"int16:12"`
		E0          int16 `struct:"int16:12"`
		NI          int16 `struct:"int16:14"`
		EI          int16 `struct:"int16:14"`
	}
}

GLONASS Network FKP Gradient

func (Message1035) Serialize

func (msg Message1035) Serialize() []byte

type Message1037

type Message1037 struct {
	AbstractMessage
	NetworkID                       uint8  `struct:"uint8"`
	SubnetworkID                    uint8  `struct:"uint8:4"`
	Epoch                           uint32 `struct:"uint32:20"`
	MultipleMessageIndicator        bool   `struct:"uint8:1,variantbool"`
	MasterReferenceStationID        uint16 `struct:"uint16:12"`
	AuxiliaryReferenceStationID     uint16 `struct:"uint16:12"`
	DataEntriesCount                uint8  `struct:"uint8:4,sizeof=IonosphericCorrectionDifference"`
	IonosphericCorrectionDifference []struct {
		SatelliteID                                 uint8 `struct:"uint8:6"`
		AmbiguityStatusFlag                         uint8 `struct:"uint8:2"`
		NonSyncCount                                uint8 `struct:"uint8:3"`
		IonosphericCarrierPhaseCorrectionDifference int32 `struct:"int32:17"`
	}
}

GLONASS Ionospheric Correction Differences

func (Message1037) Serialize

func (msg Message1037) Serialize() []byte

type Message1038

type Message1038 struct {
	AbstractMessage
	NetworkID                       uint8  `struct:"uint8"`
	SubnetworkID                    uint8  `struct:"uint8:4"`
	Epoch                           uint32 `struct:"uint32:20"`
	MultipleMessageIndicator        bool   `struct:"uint8:1,variantbool"`
	MasterReferenceStationID        uint16 `struct:"uint16:12"`
	AuxiliaryReferenceStationID     uint16 `struct:"uint16:12"`
	DataEntriesCount                uint8  `struct:"uint8:4,sizeof=IonosphericCorrectionDifference"`
	IonosphericCorrectionDifference []struct {
		SatelliteID                               uint8 `struct:"uint8:6"`
		AmbiguityStatusFlag                       uint8 `struct:"uint8:2"`
		NonSyncCount                              uint8 `struct:"uint8:3"`
		GeometricCarrierPhaseCorrectionDifference int32 `struct:"int32:17"`
		IOD                                       uint8 `struct:"uint8"`
	}
}

GLONASS Geometric Correction Differences

func (Message1038) Serialize

func (msg Message1038) Serialize() []byte

type Message1039

type Message1039 struct {
	AbstractMessage
	NetworkID                       uint8  `struct:"uint8"`
	SubnetworkID                    uint8  `struct:"uint8:4"`
	Epoch                           uint32 `struct:"uint32:20"`
	MultipleMessageIndicator        bool   `struct:"uint8:1,variantbool"`
	MasterReferenceStationID        uint16 `struct:"uint16:12"`
	AuxiliaryReferenceStationID     uint16 `struct:"uint16:12"`
	DataEntriesCount                uint8  `struct:"uint8:4,sizeof=IonosphericCorrectionDifference"`
	IonosphericCorrectionDifference []struct {
		SatelliteID                                 uint8 `struct:"uint8:6"`
		AmbiguityStatusFlag                         uint8 `struct:"uint8:2"`
		NonSyncCount                                uint8 `struct:"uint8:3"`
		GeometricCarrierPhaseCorrectionDifference   int32 `struct:"int32:17"`
		IOD                                         uint8 `struct:"uint8"`
		IonosphericCarrierPhaseCorrectionDifference int32 `struct:"int32:17"`
	}
}

GLONASS Combined Geometric and Ionospheric Correction Differences

func (Message1039) Serialize

func (msg Message1039) Serialize() []byte

type Message1042

type Message1042 struct {
	AbstractMessage
	SatelliteId uint8  `struct:"uint8:6"`
	WeekNumber  uint16 `struct:"uint16:13"`
	SVURAI      uint8  `struct:"uint8:4"`
	IDOT        int16  `struct:"int16:14"`
	AODE        uint8  `struct:"uint8:5"`
	Toc         uint32 `struct:"uint32:17"`
	A2          int16  `struct:"int16:11"`
	A1          int32  `struct:"int32:22"`
	A0          int32  `struct:"int32:24"`
	AODC        uint8  `struct:"uint8:5"`
	Crs         int32  `struct:"int32:18"`
	DeltaN      int16  `struct:"int16"`
	M0          int32  `struct:"int32"`
	Cuc         int32  `struct:"int32:18"`
	E           uint32 `struct:"uint32"`
	Cus         int32  `struct:"int32:18"`
	ASquared    uint32 `struct:"uint32"`
	Toe         uint32 `struct:"uint32:17"`
	Cic         int32  `struct:"int32:18"`
	Omega0      int32  `struct:"int32"`
	Cis         int32  `struct:"int32:18"`
	I0          int32  `struct:"int32"`
	Crc         int32  `struct:"int32:18"`
	Omega       int32  `struct:"int32"`
	OmegaDot    int32  `struct:"int32:24"`
	TGD1        int16  `struct:"int16:10"`
	TGD2        int16  `struct:"int16:10"`
	SVHealth    bool   `struct:"uint8:1,variantbool"`
}

BDS Satellite Ephemeris Data

func (Message1042) Serialize

func (msg Message1042) Serialize() []byte

type Message1044

type Message1044 struct {
	AbstractMessage
	SatelliteId uint8  `struct:"uint8:4"`
	Toc         uint16 `struct:"uint16"`
	Af2         int8   `struct:"int8"`
	Af1         int16  `struct:"int16"`
	Af0         int32  `struct:"int32:22"`
	IODE        uint8  `struct:"uint8"`
	Crs         int16  `struct:"int16"`
	DeltaN0     int16  `struct:"int16"`
	M0          int32  `struct:"int32"`
	Cuc         int16  `struct:"int16"`
	E           uint32 `struct:"uint32"`
	Cus         int16  `struct:"int16"`
	ASquared    uint32 `struct:"uint32"`
	Toe         uint16 `struct:"uint16"`
	Cic         int16  `struct:"int16"`
	Omega0      int32  `struct:"int32"`
	Cis         int16  `struct:"int16"`
	I0          int32  `struct:"int32"`
	Crc         int16  `struct:"int16"`
	OmegaN      int32  `struct:"int32"`
	OmegaDot    int32  `struct:"int32:24"`
	I0Dot       int16  `struct:"int16:14"`
	CodesL2     uint8  `struct:"uint8:2"`
	WeekNumber  uint16 `struct:"uint16:10"`
	URA         uint8  `struct:"uint8:4"`
	SVHealth    uint8  `struct:"uint8:6"`
	TGD         int8   `struct:"int8"`
	IODC        uint16 `struct:"uint16:10"`
	FitInterval bool   `struct:"uint8:1,variantbool"`
}

QZSS Ephemerides

func (Message1044) Serialize

func (msg Message1044) Serialize() []byte

type Message1045

type Message1045 struct {
	AbstractMessage
	SatelliteId uint8  `struct:"uint8:6"`
	WeekNumber  uint16 `struct:"uint16:12"`
	IODNav      uint16 `struct:"uint16:10"`
	SVSISA      uint8  `struct:"uint8"`
	IDot        int16  `struct:"int16:14"`
	Toc         uint16 `struct:"uint16:14"`
	Af2         int8   `struct:"int8:6"`
	Af1         int32  `struct:"int32:21"`
	Af0         int32  `struct:"int32:31"`
	Crs         int16  `struct:"int16"`
	DeltaN0     int16  `struct:"int16"`
	M0          int32  `struct:"int32"`
	Cuc         int16  `struct:"int16"`
	E           uint32 `struct:"uint32"`
	Cus         int16  `struct:"int16"`
	ASquared    uint32 `struct:"uint32"`
	Toe         uint16 `struct:"uint16:14"`
	Cic         int16  `struct:"int16"`
	Omega0      int32  `struct:"int32"`
	Cis         int16  `struct:"int16"`
	I0          int32  `struct:"int32"`
	Crc         int16  `struct:"int16"`
	Omega       int32  `struct:"int32"`
	OmegaDot    int32  `struct:"int32:24"`
	BGDE5aE1    int16  `struct:"int16:10"`
	OSHS        uint8  `struct:"uint8:2"`
	OSDVS       bool   `struct:"uint8:1,variantbool"`
	Reserved    uint8  `struct:"uint8:7"`
}

Galileo F/NAV Satellite Ephemeris Data

func (Message1045) Serialize

func (msg Message1045) Serialize() []byte

type Message1046

type Message1046 struct {
	AbstractMessage
	SatelliteId           uint8  `struct:"uint8:6"`
	WeekNumber            uint16 `struct:"uint16:12"`
	IODNav                uint16 `struct:"uint16:10"`
	SISAIndex             uint8  `struct:"uint8"`
	IDot                  int16  `struct:"int16:14"`
	Toc                   uint16 `struct:"uint16:14"`
	Af2                   int8   `struct:"int8:6"`
	Af1                   int32  `struct:"int32:21"`
	Af0                   int32  `struct:"int32:31"`
	Crs                   int16  `struct:"int16"`
	DeltaN0               int16  `struct:"int16"`
	M0                    int32  `struct:"int32"`
	Cuc                   int16  `struct:"int16"`
	E                     uint32 `struct:"uint32"`
	Cus                   int16  `struct:"int16"`
	ASquared              uint32 `struct:"uint32"`
	Toe                   uint16 `struct:"uint16:14"`
	Cic                   int16  `struct:"int16"`
	Omega0                int32  `struct:"int32"`
	Cis                   int16  `struct:"int16"`
	I0                    int32  `struct:"int32"`
	Crc                   int16  `struct:"int16"`
	Omega                 int32  `struct:"int32"`
	OmegaDot              int32  `struct:"int32:24"`
	BGDE5aE1              int16  `struct:"int16:10"`
	BGDE5bE1              int16  `struct:"int16:10"`
	E5bSignalHealthStatus uint8  `struct:"uint8:2"`
	E5bDataValidityStatus bool   `struct:"uint8:1,variantbool"`
	E1BSignalHealthStatus uint8  `struct:"uint8:2"`
	E2BDataValidityStatus bool   `struct:"uint8:1,variantbool"`
	Reserved              uint8  `struct:"uint8:2"`
}

Galileo I/NAV Satellite Ephemeris Data

func (Message1046) Serialize

func (msg Message1046) Serialize() []byte

type Message1057

type Message1057 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:20"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	SatelliteReferenceDatum  bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID        uint8 `struct:"uint8:6"`
		IODE               uint8 `struct:"uint8"`
		DeltaRadial        int32 `struct:"int32:22"`
		DeltaAlongTrack    int32 `struct:"int32:20"`
		DeltaCrossTrack    int32 `struct:"int32:20"`
		DotDeltaRadial     int32 `struct:"int32:21"`
		DotDeltaAlongTrack int32 `struct:"int32:19"`
		DotDeltaCrossTrack int32 `struct:"int32:19"`
	}
}

SSR GPS Orbit Correction

func (Message1057) Serialize

func (msg Message1057) Serialize() []byte

func (Message1057) Time

func (msg Message1057) Time() time.Time

type Message1058

type Message1058 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:20"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID  uint8 `struct:"uint8:6"`
		DeltaClockC0 int32 `struct:"int32:22"`
		DeltaClockC1 int32 `struct:"int32:21"`
		DeltaClockC2 int32 `struct:"int32:27"`
	}
}

SSR GPS Clock Correction

func (Message1058) Serialize

func (msg Message1058) Serialize() []byte

func (Message1058) Time

func (msg Message1058) Time() time.Time

type Message1059

type Message1059 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:20"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID         uint8 `struct:"uint8:6"`
		CodeBiasesProcessed uint8 `struct:"uint8:5,sizeof=CodeBiases"`
		CodeBiases          []struct {
			SignalTrackingModeIndicator uint8 `struct:"uint8:5"`
			CodeBias                    int16 `struct:"int16:14"`
		}
	}
}

SSR GPS Code Bias

func (Message1059) Serialize

func (msg Message1059) Serialize() []byte

func (Message1059) Time

func (msg Message1059) Time() time.Time

type Message1060

type Message1060 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:20"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	SatelliteReferenceDatum  bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID        uint8 `struct:"uint8:6"`
		IOD                uint8 `struct:"uint8"`
		DeltaRadial        int32 `struct:"int32:22"`
		DeltaAlongTrack    int32 `struct:"int32:20"`
		DeltaCrossTrack    int32 `struct:"int32:20"`
		DotDeltaRadial     int32 `struct:"int32:21"`
		DotDeltaAlongTrack int32 `struct:"int32:19"`
		DotDeltaCrossTrack int32 `struct:"int32:19"`
		DeltaClockC0       int32 `struct:"int32:22"`
		DeltaClockC1       int32 `struct:"int32:21"`
		DeltaClockC2       int32 `struct:"int32:27"`
	}
}

SSR GPS Combined Orbit and Clock Corrections

func (Message1060) Serialize

func (msg Message1060) Serialize() []byte

func (Message1060) Time

func (msg Message1060) Time() time.Time

type Message1061

type Message1061 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:20"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID uint8 `struct:"uint8:5"`
		SSRURA      uint8 `struct:"uint8:6"`
	}
}

SSR GPS URA

func (Message1061) Serialize

func (msg Message1061) Serialize() []byte

func (Message1061) Time

func (msg Message1061) Time() time.Time

type Message1062

type Message1062 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:20"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID     uint8 `struct:"uint8:5"`
		ClockCorrection int32 `struct:"uint32:22"`
	}
}

SSR GPS High Rate Clock Correction

func (Message1062) Serialize

func (msg Message1062) Serialize() []byte

func (Message1062) Time

func (msg Message1062) Time() time.Time

type Message1063

type Message1063 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:17"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	SatelliteReferenceDatum  bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID        uint8 `struct:"uint8:5"`
		IOD                uint8 `struct:"uint8"`
		DeltaRadial        int32 `struct:"int32:22"`
		DeltaAlongTrack    int32 `struct:"int32:20"`
		DeltaCrossTrack    int32 `struct:"int32:20"`
		DotDeltaRadial     int32 `struct:"int32:21"`
		DotDeltaAlongTrack int32 `struct:"int32:19"`
		DotDeltaCrossTrack int32 `struct:"int32:19"`
	}
}

SSR GLONASS Orbit Correction

func (Message1063) Serialize

func (msg Message1063) Serialize() []byte

func (Message1063) Time

func (msg Message1063) Time() time.Time

type Message1064

type Message1064 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:17"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID  uint8 `struct:"uint8:5"`
		DeltaClockC0 int32 `struct:"int32:22"`
		DeltaClockC1 int32 `struct:"int32:21"`
		DeltaClockC2 int32 `struct:"int32:27"`
	}
}

SSR GLONASS Clock Correction

func (Message1064) Serialize

func (msg Message1064) Serialize() []byte

func (Message1064) Time

func (msg Message1064) Time() time.Time

type Message1065

type Message1065 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:17"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID         uint8 `struct:"uint8:5"`
		CodeBiasesProcessed uint8 `struct:"uint8:5,sizeof=CodeBiases"`
		CodeBiases          []struct {
			SignalTrackingModeIndicator uint8 `struct:"uint8:5"`
			CodeBias                    int16 `struct:"int16:14"`
		}
	}
}

SSR GLONASS Code Bias

func (Message1065) Serialize

func (msg Message1065) Serialize() []byte

func (Message1065) Time

func (msg Message1065) Time() time.Time

type Message1066

type Message1066 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:17"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	SatelliteReferenceDatum  bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID        uint8 `struct:"uint8:5"`
		IOD                uint8 `struct:"uint8"`
		DeltaRadial        int32 `struct:"int32:22"`
		DeltaAlongTrack    int32 `struct:"int32:20"`
		DeltaCrossTrack    int32 `struct:"int32:20"`
		DotDeltaRadial     int32 `struct:"int32:21"`
		DotDeltaAlongTrack int32 `struct:"int32:19"`
		DotDeltaCrossTrack int32 `struct:"int32:19"`
		DeltaClockC0       int32 `struct:"int32:22"`
		DeltaClockC1       int32 `struct:"int32:21"`
		DeltaClockC2       int32 `struct:"int32:27"`
	}
}

SSR GLONASS Combined Orbit and Clock Corrections

func (Message1066) Serialize

func (msg Message1066) Serialize() []byte

func (Message1066) Time

func (msg Message1066) Time() time.Time

type Message1067

type Message1067 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:17"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID uint8 `struct:"uint8:5"`
		SSRURA      uint8 `struct:"uint8:6"`
	}
}

SSR GLONASS URA

func (Message1067) Serialize

func (msg Message1067) Serialize() []byte

func (Message1067) Time

func (msg Message1067) Time() time.Time

type Message1068

type Message1068 struct {
	AbstractMessage
	Epoch                    uint32 `struct:"uint32:17"`
	SSRUpdateInterval        uint8  `struct:"uint8:4"`
	MultipleMessageIndicator bool   `struct:"uint8:1,variantbool"`
	IODSSR                   uint8  `struct:"uint8:4"`
	SSRProviderID            uint16 `struct:"uint16"`
	SSRSolutionID            uint8  `struct:"uint8:4"`
	Satellites               uint8  `struct:"uint8:6,sizeof=SatelliteData"`
	SatelliteData            []struct {
		SatelliteID     uint8 `struct:"uint8:5"`
		ClockCorrection int32 `struct:"uint32:22"`
	}
}

SSR GLONASS High Rate Clock Correction

func (Message1068) Serialize

func (msg Message1068) Serialize() []byte

func (Message1068) Time

func (msg Message1068) Time() time.Time

type Message1071

type Message1071 struct {
	MessageMsm1
}

GPS MSM1

func (Message1071) Time

func (msg Message1071) Time() time.Time

type Message1072

type Message1072 struct {
	MessageMsm2
}

GPS MSM2

func (Message1072) Time

func (msg Message1072) Time() time.Time

type Message1073

type Message1073 struct {
	MessageMsm3
}

GPS MSM3

func (Message1073) Time

func (msg Message1073) Time() time.Time

type Message1074

type Message1074 struct {
	MessageMsm4
}

GPS MSM4

func (Message1074) Time

func (msg Message1074) Time() time.Time

type Message1075

type Message1075 struct {
	MessageMsm5
}

GPS MSM5

func (Message1075) Time

func (msg Message1075) Time() time.Time

type Message1076

type Message1076 struct {
	MessageMsm6
}

GPS MSM6

func (Message1076) Time

func (msg Message1076) Time() time.Time

type Message1077

type Message1077 struct {
	MessageMsm7
}

GPS MSM7

func (Message1077) MsmToEpoch

func (msg Message1077) MsmToEpoch() (observation.Epoch, error)

func (Message1077) Time

func (msg Message1077) Time() time.Time

type Message1081

type Message1081 struct {
	MessageMsm1
}

GLONASS MSM1

func (Message1081) Time

func (msg Message1081) Time() time.Time

type Message1082

type Message1082 struct {
	MessageMsm2
}

GLONASS MSM2

func (Message1082) Time

func (msg Message1082) Time() time.Time

type Message1083

type Message1083 struct {
	MessageMsm3
}

GLONASS MSM3

func (Message1083) Time

func (msg Message1083) Time() time.Time

type Message1084

type Message1084 struct {
	MessageMsm4
}

GLONASS MSM4

func (Message1084) Time

func (msg Message1084) Time() time.Time

type Message1085

type Message1085 struct {
	MessageMsm5
}

GLONASS MSM5

func (Message1085) Time

func (msg Message1085) Time() time.Time

type Message1086

type Message1086 struct {
	MessageMsm6
}

GLONASS MSM6

func (Message1086) Time

func (msg Message1086) Time() time.Time

type Message1087

type Message1087 struct {
	MessageMsm7
}

GLONASS MSM7

func (Message1087) MsmToEpoch

func (msg Message1087) MsmToEpoch() (observation.Epoch, error)

func (Message1087) Time

func (msg Message1087) Time() time.Time

type Message1091

type Message1091 struct {
	MessageMsm1
}

Galileo MSM1

func (Message1091) Time

func (msg Message1091) Time() time.Time

type Message1092

type Message1092 struct {
	MessageMsm2
}

Galileo MSM2

func (Message1092) Time

func (msg Message1092) Time() time.Time

type Message1093

type Message1093 struct {
	MessageMsm3
}

Galileo MSM3

func (Message1093) Time

func (msg Message1093) Time() time.Time

type Message1094

type Message1094 struct {
	MessageMsm4
}

Galileo MSM4

func (Message1094) Time

func (msg Message1094) Time() time.Time

type Message1095

type Message1095 struct {
	MessageMsm5
}

Galileo MSM5

func (Message1095) Time

func (msg Message1095) Time() time.Time

type Message1096

type Message1096 struct {
	MessageMsm6
}

Galileo MSM6

func (Message1096) Time

func (msg Message1096) Time() time.Time

type Message1097

type Message1097 struct {
	MessageMsm7
}

Galileo MSM7

func (Message1097) MsmToEpoch

func (msg Message1097) MsmToEpoch() (observation.Epoch, error)

func (Message1097) Time

func (msg Message1097) Time() time.Time

type Message1101

type Message1101 struct {
	MessageMsm1
}

SBAS MSM1

func (Message1101) Time

func (msg Message1101) Time() time.Time

type Message1102

type Message1102 struct {
	MessageMsm2
}

SBAS MSM2

func (Message1102) Time

func (msg Message1102) Time() time.Time

type Message1103

type Message1103 struct {
	MessageMsm3
}

SBAS MSM3

func (Message1103) Time

func (msg Message1103) Time() time.Time

type Message1104

type Message1104 struct {
	MessageMsm4
}

SBAS MSM4

func (Message1104) Time

func (msg Message1104) Time() time.Time

type Message1105

type Message1105 struct {
	MessageMsm5
}

SBAS MSM5

func (Message1105) Time

func (msg Message1105) Time() time.Time

type Message1106

type Message1106 struct {
	MessageMsm6
}

SBAS MSM6

func (Message1106) Time

func (msg Message1106) Time() time.Time

type Message1107

type Message1107 struct {
	MessageMsm7
}

SBAS MSM7

func (Message1107) MsmToEpoch

func (msg Message1107) MsmToEpoch() (observation.Epoch, error)

func (Message1107) Time

func (msg Message1107) Time() time.Time

type Message1111

type Message1111 struct {
	MessageMsm1
}

QZSS MSM1

func (Message1111) Time

func (msg Message1111) Time() time.Time

type Message1112

type Message1112 struct {
	MessageMsm2
}

QZSS MSM2

func (Message1112) Time

func (msg Message1112) Time() time.Time

type Message1113

type Message1113 struct {
	MessageMsm3
}

QZSS MSM3

func (Message1113) Time

func (msg Message1113) Time() time.Time

type Message1114

type Message1114 struct {
	MessageMsm4
}

QZSS MSM4

func (Message1114) Time

func (msg Message1114) Time() time.Time

type Message1115

type Message1115 struct {
	MessageMsm5
}

QZSS MSM5

func (Message1115) Time

func (msg Message1115) Time() time.Time

type Message1116

type Message1116 struct {
	MessageMsm6
}

QZSS MSM6

func (Message1116) Time

func (msg Message1116) Time() time.Time

type Message1117

type Message1117 struct {
	MessageMsm7
}

QZSS MSM7

func (Message1117) MsmToEpoch

func (msg Message1117) MsmToEpoch() (observation.Epoch, error)

func (Message1117) Time

func (msg Message1117) Time() time.Time

type Message1121

type Message1121 struct {
	MessageMsm1
}

BeiDou MSM1

func (Message1121) Time

func (msg Message1121) Time() time.Time

type Message1122

type Message1122 struct {
	MessageMsm2
}

BeiDou MSM2

func (Message1122) Time

func (msg Message1122) Time() time.Time

type Message1123

type Message1123 struct {
	MessageMsm3
}

BeiDou MSM3

func (Message1123) Time

func (msg Message1123) Time() time.Time

type Message1124

type Message1124 struct {
	MessageMsm4
}

BeiDou MSM4

func (Message1124) Time

func (msg Message1124) Time() time.Time

type Message1125

type Message1125 struct {
	MessageMsm5
}

BeiDou MSM5

func (Message1125) Time

func (msg Message1125) Time() time.Time

type Message1126

type Message1126 struct {
	MessageMsm6
}

BeiDou MSM6

func (Message1126) Time

func (msg Message1126) Time() time.Time

type Message1127

type Message1127 struct {
	MessageMsm7
}

BeiDou MSM7

func (Message1127) MsmToEpoch

func (msg Message1127) MsmToEpoch() (observation.Epoch, error)

func (Message1127) Time

func (msg Message1127) Time() time.Time

type Message1230

type Message1230 struct {
	AbstractMessage
	ReferenceStationId uint16
	CodePhaseBias      bool
	Reserved           uint8
	SignalsMask        uint8
	L1CACodePhaseBias  int16
	L1PCodePhaseBias   int16
	L2CACodePhaseBias  int16
	L2PCodePhaseBias   int16
}

GLONASS L1 and L2 Code-Phase Biases

func (Message1230) Serialize

func (msg Message1230) Serialize() []byte

type MessageAntennaDescriptor

type MessageAntennaDescriptor struct {
	ReferenceStationId      uint16 `struct:"uint16:12"`
	AntennaDescriptorLength uint8  `struct:"uint8"`
	AntennaDescriptor       string `struct:"[]byte,sizefrom=AntennaDescriptorLength"`
	AntennaSetupId          uint8  `struct:"uint8"`
}

type MessageMsm added in v0.26.0

type MessageMsm[S, D any] struct {
	MsmHeader
	SatelliteData S
	SignalData    D
}

MessageMsm is a generic struct for MSM messages. S is the satellite data type, and D is the signal data type.

func DeserializeMessageMsm added in v0.26.0

func DeserializeMessageMsm[S any, D any](data []byte, satDeserializer func(*iobit.Reader, int) S, sigDeserializer func(*iobit.Reader, int) D) MessageMsm[S, D]

DeserializeMessageMsm is a generic function to deserialize any MSM message.

type MessageMsm1

type MessageMsm1 struct {
	MessageMsm[SatelliteDataMsm1, SignalDataMsm1]
}

MessageMsm1 is a wrapper struct for the generic MSM message with MSM1-specific data types

func DeserializeMessageMsm1

func DeserializeMessageMsm1(data []byte) MessageMsm1

DeserializeMessageMsm1 deserializes MSM1 messages

func (MessageMsm1) Serialize

func (msg MessageMsm1) Serialize() []byte

Serialize implements the Message interface for MSM1

type MessageMsm2

type MessageMsm2 struct {
	MessageMsm[SatelliteDataMsm2, SignalDataMsm2]
}

MessageMsm2 is a wrapper struct for the generic MSM message with MSM2-specific data types

func DeserializeMessageMsm2

func DeserializeMessageMsm2(data []byte) MessageMsm2

DeserializeMessageMsm2 deserializes MSM2 messages

func (MessageMsm2) Serialize

func (msg MessageMsm2) Serialize() []byte

Serialize implements the Message interface for MSM2

type MessageMsm3

type MessageMsm3 struct {
	MessageMsm[SatelliteDataMsm3, SignalDataMsm3]
}

MessageMsm3 is a wrapper struct for the generic MSM message with MSM3-specific data types

func DeserializeMessageMsm3

func DeserializeMessageMsm3(data []byte) MessageMsm3

DeserializeMessageMsm3 deserializes MSM3 messages

func (MessageMsm3) Serialize

func (msg MessageMsm3) Serialize() []byte

Serialize implements the Message interface for MSM3

type MessageMsm4

type MessageMsm4 struct {
	MessageMsm[SatelliteDataMsm4, SignalDataMsm4]
}

MessageMsm4 is a wrapper struct for the generic MSM message with MSM4-specific data types

func DeserializeMessageMsm4

func DeserializeMessageMsm4(data []byte) MessageMsm4

DeserializeMessageMsm4 deserializes MSM4 messages

func (MessageMsm4) Serialize

func (msg MessageMsm4) Serialize() []byte

Serialize implements the Message interface for MSM4

type MessageMsm5

type MessageMsm5 struct {
	MessageMsm[SatelliteDataMsm5, SignalDataMsm5]
}

MessageMsm5 is a wrapper struct for the generic MSM message with MSM5-specific data types

func DeserializeMessageMsm5

func DeserializeMessageMsm5(data []byte) MessageMsm5

DeserializeMessageMsm5 deserializes MSM5 messages

func (MessageMsm5) Serialize

func (msg MessageMsm5) Serialize() []byte

Serialize implements the Message interface for MSM5

type MessageMsm6

type MessageMsm6 struct {
	MessageMsm[SatelliteDataMsm6, SignalDataMsm6]
}

MessageMsm6 is a wrapper struct for the generic MSM message with MSM6-specific data types

func DeserializeMessageMsm6

func DeserializeMessageMsm6(data []byte) MessageMsm6

DeserializeMessageMsm6 deserializes MSM6 messages

func (MessageMsm6) Serialize

func (msg MessageMsm6) Serialize() []byte

Serialize implements the Message interface for MSM6

type MessageMsm7

type MessageMsm7 struct {
	MessageMsm[SatelliteDataMsm7, SignalDataMsm7]
}

MessageMsm7 is a wrapper struct for the generic MSM message with MSM7-specific data types

func DeserializeMessageMsm7

func DeserializeMessageMsm7(data []byte) MessageMsm7

DeserializeMessageMsm7 deserializes MSM7 messages

func (MessageMsm7) GetSystem

func (msg MessageMsm7) GetSystem() (gnss.System, error)

GetSystem returns the GNSS system for this MSM7 message based on the message number

func (MessageMsm7) Msm7ToEpoch

func (msg MessageMsm7) Msm7ToEpoch() (observation.Epoch, error)

Msm7ToEpoch converts MSM7 message to Epoch observations.

func (MessageMsm7) Serialize

func (msg MessageMsm7) Serialize() []byte

Serialize implements the Message interface for MSM7

type MessageUnknown

type MessageUnknown struct {
	Payload []byte
}

MessageUnknown is used for valid Messages for which no type yet exists - For example, experimental or proprietary messages

func (MessageUnknown) Number

func (msg MessageUnknown) Number() (msgNumber int)

func (MessageUnknown) Serialize

func (msg MessageUnknown) Serialize() []byte

type Msm7Encoder

type Msm7Encoder struct {
	Interval       time.Duration
	SystemStateMap map[gnss.System]*SystemState
}

func NewMsm7Encoder

func NewMsm7Encoder(interval time.Duration) Msm7Encoder

func (*Msm7Encoder) AppendCNR

func (msm7 *Msm7Encoder) AppendCNR(sys gnss.System, i, j int)

AppendCNR appends the carrier-to-noise ratio to the signal data DF408 - signal strength, 0 indicates no data

func (*Msm7Encoder) AppendExtended

func (msm7 *Msm7Encoder) AppendExtended(sys gnss.System, i, j int)

AppendExtended appends the extended satellite information to the satellite data

func (*Msm7Encoder) AppendFineDoppler

func (msm7 *Msm7Encoder) AppendFineDoppler(sys gnss.System, i, j int)

AppendFineDoppler appends the fine Doppler to the signal data DF404 - fine Doppler

func (*Msm7Encoder) AppendFinePhase

func (msm7 *Msm7Encoder) AppendFinePhase(sys gnss.System, i, j, k int)

AppendFinePhase appends the fine phase to the signal data DF406 - fine phase

func (*Msm7Encoder) AppendFineRange

func (msm7 *Msm7Encoder) AppendFineRange(sys gnss.System, i, j, k int)

AppendFineRange appends the fine range to the signal data DF405 - fine range

func (*Msm7Encoder) AppendHalfCycle

func (msm7 *Msm7Encoder) AppendHalfCycle(sys gnss.System, i, j int)

AppendHalfCycle appends the half-cycle ambiguity to the signal data DF420 - half-cycle ambiguity,

func (*Msm7Encoder) AppendLockTime

func (msm7 *Msm7Encoder) AppendLockTime(sys gnss.System, i, j int)

AppendLockTime appends the lock time indicator to the signal data DF407 - lock time indicator

func (*Msm7Encoder) AppendNms

func (msm7 *Msm7Encoder) AppendNms(sys gnss.System, i, j int)

AppendNms appends the rough range as an integer number of milliseconds to the satellite data

func (*Msm7Encoder) AppendRoughDoppler

func (msm7 *Msm7Encoder) AppendRoughDoppler(sys gnss.System, i, j int)

AppendRoughDoppler appends the rough Doppler to the satellite data DF399 - Doppler 1 m/s

func (*Msm7Encoder) AppendRoughRange

func (msm7 *Msm7Encoder) AppendRoughRange(sys gnss.System, i, j int)

AppendRoughRange appends the rough range as modulo 1 millisecond to the satellite data DF398 - rough range 2^-10 ms

func (*Msm7Encoder) FinePhaseMSM7

func (msm7 *Msm7Encoder) FinePhaseMSM7(sys gnss.System, i, j, k int) (float64, bool)

FinePhaseMSM7 calculates the fine phase in 2^-31 cycles

func (*Msm7Encoder) FromEpoch

func (msm7 *Msm7Encoder) FromEpoch(epoch observation.Epoch) (messages []MessageMsm7, err error)

FromEpoch converts an epoch to an MSM7 message

- GNSS systems have different time types

- GNSS systems have different signal code mappings

func (*Msm7Encoder) IncrementLockTime

func (msm7 *Msm7Encoder) IncrementLockTime(sys gnss.System, i, j int)

IncrementLockTime increments the lock time by the interval

func (*Msm7Encoder) ReinitializeFinePhaseBias

func (msm7 *Msm7Encoder) ReinitializeFinePhaseBias(sys gnss.System, i, j int)

ReinitializeFinePhaseBias reinitializes the fine phase bias

func (*Msm7Encoder) ResetLockTime

func (msm7 *Msm7Encoder) ResetLockTime(sys gnss.System, i, j int)

ResetLockTime resets the lock time to 0 milliseconds

func (*Msm7Encoder) ResetLockTimeIndicator

func (msm7 *Msm7Encoder) ResetLockTimeIndicator(sys gnss.System, i, j int)

ResetLockTimeIndicator resets the lock time indicator (DF407) to 0

type MsmHeader

type MsmHeader struct {
	// Message Number - DF002 - uint12
	MessageNumber uint16
	// Reference Station ID - DF003 - uint12
	ReferenceStationId uint16
	// Epoch - Specific DF Number for each GNSS - unint30
	Epoch uint32
	// Multiple Message Bit - DF393 - 1 bit - indicates if more MSMs follow
	MultipleMessageBit bool
	// Issue of Data Station - DF409 - uint3
	Iods uint8
	// Reserved - DF001 - 7 bits
	Reserved uint8
	// Clock Steering Indicator - DF411 - uint2
	ClockSteeringIndicator uint8
	// External Clock Indicator - DF412 - uint2
	ExternalClockIndicator uint8
	// GNSS Divergence-free Smoothing Indicator - DF417 - 1 bit
	SmoothingIndicator bool
	// GNSS Smoothing Interval - DF418 - 3 bits
	SmoothingInterval uint8
	// GNSS Satellite Mask - DF394 - 64 bits
	SatelliteMask uint64
	// GNSS Signal Mask - DF395 - 32 bits
	SignalMask uint32
	// GNSS Cell Mask - DF396 - x bits (x<=64)
	CellMask uint64
}

func DeserializeMsmHeader

func DeserializeMsmHeader(r *iobit.Reader) (header MsmHeader)

func (MsmHeader) Number

func (header MsmHeader) Number() int

func (MsmHeader) SatelliteCount

func (header MsmHeader) SatelliteCount() int

type Observation

type Observation interface {
	Message
	// Epoch at which the data was observed
	Time() time.Time
	SatelliteCount() int
}

Obseration interface for messages with Epoch attribute

type SatelliteData1004 added in v0.16.3

type SatelliteData1004 struct {
	SatelliteID             uint8  `struct:"uint8:6"`
	L1CodeIndicator         bool   `struct:"uint8:1,variantbool"`
	L1Pseudorange           uint32 `struct:"uint32:24"`
	L1PhaseRange            int32  `struct:"int32:20"`
	L1LockTimeIndicator     uint8  `struct:"uint8:7"`
	L1PseudorangeAmbiguity  uint8  `struct:"uint8"`
	L1CNR                   uint8  `struct:"uint8"`
	L2CodeIndicator         uint8  `struct:"uint8:2"`
	L2PseudorangeDifference int16  `struct:"int16:14"`
	L2PhaseRange            int32  `struct:"int32:20"`
	L2LockTimeIndicator     uint8  `struct:"uint8:7"`
	L2CNR                   uint8  `struct:"uint8"`
}

SatelliteData1004

type SatelliteDataMsm1

type SatelliteDataMsm1 struct {
	Ranges []uint16
}

Common satellite data structures for MSM messages

func DeserializeSatelliteDataMsm1

func DeserializeSatelliteDataMsm1(r *iobit.Reader, nsat int) SatelliteDataMsm1

Generic satellite data deserializer

func (*SatelliteDataMsm1) GetBitCount added in v0.26.0

func (sat *SatelliteDataMsm1) GetBitCount() int

GetBitCount returns the number of bits for satellite data

func (*SatelliteDataMsm1) SerializeTo added in v0.26.0

func (sat *SatelliteDataMsm1) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SatelliteDataMsm1

type SatelliteDataMsm2

type SatelliteDataMsm2 struct {
	Ranges []uint16
}

func DeserializeSatelliteDataMsm2

func DeserializeSatelliteDataMsm2(r *iobit.Reader, nsat int) SatelliteDataMsm2

func (*SatelliteDataMsm2) GetBitCount added in v0.26.0

func (sat *SatelliteDataMsm2) GetBitCount() int

GetBitCount returns the number of bits for satellite data

func (*SatelliteDataMsm2) SerializeTo added in v0.26.0

func (sat *SatelliteDataMsm2) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SatelliteDataMsm2

type SatelliteDataMsm3

type SatelliteDataMsm3 struct {
	Ranges []uint16
}

func DeserializeSatelliteDataMsm3

func DeserializeSatelliteDataMsm3(r *iobit.Reader, nsat int) SatelliteDataMsm3

func (*SatelliteDataMsm3) GetBitCount added in v0.26.0

func (sat *SatelliteDataMsm3) GetBitCount() int

GetBitCount returns the number of bits for satellite data

func (*SatelliteDataMsm3) SerializeTo added in v0.26.0

func (sat *SatelliteDataMsm3) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SatelliteDataMsm3

type SatelliteDataMsm4

type SatelliteDataMsm4 struct {
	RangeMilliseconds []uint8
	Ranges            []uint16
}

func DeserializeSatelliteDataMsm4

func DeserializeSatelliteDataMsm4(r *iobit.Reader, nsat int) SatelliteDataMsm4

func (*SatelliteDataMsm4) GetBitCount added in v0.26.0

func (sat *SatelliteDataMsm4) GetBitCount() int

GetBitCount returns the number of bits for satellite data

func (*SatelliteDataMsm4) SerializeTo added in v0.26.0

func (sat *SatelliteDataMsm4) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SatelliteDataMsm4

type SatelliteDataMsm5

type SatelliteDataMsm5 struct {
	RangeMilliseconds []uint8
	Extended          []uint8
	Ranges            []uint16
	PhaseRangeRates   []int16
}

func DeserializeSatelliteDataMsm5

func DeserializeSatelliteDataMsm5(r *iobit.Reader, nsat int) SatelliteDataMsm5

func (*SatelliteDataMsm5) GetBitCount added in v0.26.0

func (sat *SatelliteDataMsm5) GetBitCount() int

GetBitCount returns the number of bits for satellite data

func (*SatelliteDataMsm5) SerializeTo added in v0.26.0

func (sat *SatelliteDataMsm5) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SatelliteDataMsm5

type SatelliteDataMsm6

type SatelliteDataMsm6 struct {
	RangeMilliseconds []uint8
	Ranges            []uint16
}

func DeserializeSatelliteDataMsm6

func DeserializeSatelliteDataMsm6(r *iobit.Reader, nsat int) SatelliteDataMsm6

func (*SatelliteDataMsm6) GetBitCount added in v0.26.0

func (sat *SatelliteDataMsm6) GetBitCount() int

GetBitCount returns the number of bits for satellite data

func (*SatelliteDataMsm6) SerializeTo added in v0.26.0

func (sat *SatelliteDataMsm6) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SatelliteDataMsm6

type SatelliteDataMsm7

type SatelliteDataMsm7 struct {
	RangeMilliseconds []uint8
	Extended          []uint8
	Ranges            []uint16
	PhaseRangeRates   []int16
}

func DeserializeSatelliteDataMsm7

func DeserializeSatelliteDataMsm7(r *iobit.Reader, nsat int) SatelliteDataMsm7

func (*SatelliteDataMsm7) GetBitCount added in v0.26.0

func (sat *SatelliteDataMsm7) GetBitCount() int

GetBitCount returns the number of bits for satellite data

func (*SatelliteDataMsm7) SerializeTo added in v0.26.0

func (sat *SatelliteDataMsm7) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SatelliteDataMsm7

type Scanner

type Scanner struct {
	Reader *bufio.Reader
}

Scanner is used for parsing RTCM3 Messages from a Reader

func NewScanner

func NewScanner(r io.Reader) Scanner

func (Scanner) NextFrame

func (scanner Scanner) NextFrame() (frame Frame, err error)

NextFrame reads from Scanner until a valid Frame is found

func (Scanner) NextMessage

func (scanner Scanner) NextMessage() (message Message, err error)

NextMessage reads from Scanner until a Message is found

type SignalData1012 added in v0.16.3

type SignalData1012 struct {
	SatelliteId            uint8  `struct:"uint8:6"`
	L1CodeIndicator        bool   `struct:"uint8:1,variantbool"`
	FrequencyChannel       uint8  `struct:"uint8:5"`
	L1Pseudorange          uint32 `struct:"uint32:25"`
	L1PhaseRange           int32  `struct:"int32:20"`
	L1LockTimeIndicator    uint8  `struct:"uint8:7"`
	L1PseudorangeAmbiguity uint8  `struct:"uint8:7"`
	L1Cnr                  uint8  `struct:"uint8"`
	L2CodeIndicator        uint8  `struct:"uint8:2"`
	L2Pseudorange          uint16 `struct:"uint16:14"`
	L2PhaseRange           int32  `struct:"int32:20"`
	L2LockTimeIndicator    uint8  `struct:"uint8:7"`
	L2Cnr                  uint8  `struct:"uint8"`
}

SignalData1012

type SignalDataMsm1

type SignalDataMsm1 struct {
	Pseudoranges []int16
}

Common signal data structures for MSM messages

func DeserializeSignalDataMsm1

func DeserializeSignalDataMsm1(r *iobit.Reader, ncell int) SignalDataMsm1

Generic signal data deserializers

func (*SignalDataMsm1) GetBitCount added in v0.26.0

func (sig *SignalDataMsm1) GetBitCount() int

GetBitCount returns the number of bits for signal data

func (*SignalDataMsm1) SerializeTo added in v0.26.0

func (sig *SignalDataMsm1) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SignalDataMsm1

type SignalDataMsm2

type SignalDataMsm2 struct {
	PhaseRanges     []int32
	PhaseRangeLocks []uint8
	HalfCycles      []bool
}

func DeserializeSignalDataMsm2

func DeserializeSignalDataMsm2(r *iobit.Reader, ncell int) SignalDataMsm2

func (*SignalDataMsm2) GetBitCount added in v0.26.0

func (sig *SignalDataMsm2) GetBitCount() int

GetBitCount returns the number of bits for signal data

func (*SignalDataMsm2) SerializeTo added in v0.26.0

func (sig *SignalDataMsm2) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SignalDataMsm2

type SignalDataMsm3

type SignalDataMsm3 struct {
	Pseudoranges    []int16
	PhaseRanges     []int32
	PhaseRangeLocks []uint8
	HalfCycles      []bool
}

func DeserializeSignalDataMsm3

func DeserializeSignalDataMsm3(r *iobit.Reader, ncell int) SignalDataMsm3

func (*SignalDataMsm3) GetBitCount added in v0.26.0

func (sig *SignalDataMsm3) GetBitCount() int

GetBitCount returns the number of bits for signal data

func (*SignalDataMsm3) SerializeTo added in v0.26.0

func (sig *SignalDataMsm3) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SignalDataMsm3

type SignalDataMsm4

type SignalDataMsm4 struct {
	Pseudoranges    []int16
	PhaseRanges     []int32
	PhaseRangeLocks []uint8
	HalfCycles      []bool
	Cnrs            []uint8
}

func DeserializeSignalDataMsm4

func DeserializeSignalDataMsm4(r *iobit.Reader, ncell int) SignalDataMsm4

func (*SignalDataMsm4) GetBitCount added in v0.26.0

func (sig *SignalDataMsm4) GetBitCount() int

GetBitCount returns the number of bits for signal data

func (*SignalDataMsm4) SerializeTo added in v0.26.0

func (sig *SignalDataMsm4) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SignalDataMsm4

type SignalDataMsm5

type SignalDataMsm5 struct {
	Pseudoranges    []int16
	PhaseRanges     []int32
	PhaseRangeLocks []uint8
	HalfCycles      []bool
	Cnrs            []uint8
	PhaseRangeRates []int16
}

func DeserializeSignalDataMsm5

func DeserializeSignalDataMsm5(r *iobit.Reader, ncell int) SignalDataMsm5

func (*SignalDataMsm5) GetBitCount added in v0.26.0

func (sig *SignalDataMsm5) GetBitCount() int

GetBitCount returns the number of bits for signal data

func (*SignalDataMsm5) SerializeTo added in v0.26.0

func (sig *SignalDataMsm5) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SignalDataMsm5

type SignalDataMsm6

type SignalDataMsm6 struct {
	Pseudoranges    []int32
	PhaseRanges     []int32
	PhaseRangeLocks []uint16
	HalfCycles      []bool
	Cnrs            []uint16
}

func DeserializeSignalDataMsm6

func DeserializeSignalDataMsm6(r *iobit.Reader, ncell int) SignalDataMsm6

func (*SignalDataMsm6) GetBitCount added in v0.26.0

func (sig *SignalDataMsm6) GetBitCount() int

GetBitCount returns the number of bits for signal data

func (*SignalDataMsm6) SerializeTo added in v0.26.0

func (sig *SignalDataMsm6) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SignalDataMsm6

type SignalDataMsm7

type SignalDataMsm7 struct {
	Pseudoranges    []int32
	PhaseRanges     []int32
	PhaseRangeLocks []uint16
	HalfCycles      []bool
	Cnrs            []uint16
	PhaseRangeRates []int16
}

func DeserializeSignalDataMsm7

func DeserializeSignalDataMsm7(r *iobit.Reader, ncell int) SignalDataMsm7

func (*SignalDataMsm7) GetBitCount added in v0.26.0

func (sig *SignalDataMsm7) GetBitCount() int

GetBitCount returns the number of bits for signal data

func (*SignalDataMsm7) SerializeTo added in v0.26.0

func (sig *SignalDataMsm7) SerializeTo(w *iobit.Writer)

SerializeTo implements MSMDataSerializer for SignalDataMsm7

type SignalState

type SignalState struct {
	// Time of the previous epoch
	Time time.Time
	// Minimum lock time in milliseconds
	LockTime int
	// Number of cycles removed from the phase to match it to the corresponding pseudorange
	Cycles float64
}

type Sint

type Sint uint

type SystemState

type SystemState struct {
	Time          time.Time
	SatelliteMask uint64
	SignalMask    uint32
	CellMask      uint64
	SatelliteData SatelliteDataMsm7
	SignalData    SignalDataMsm7
	Observations  [64][32]observation.Observation
	SignalStates  [64][32]SignalState
	Fcn           [64]int8 // Frequency Channel Number for GLONASS (0 for other systems)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL