MCPcopy Create free account
hub / github.com/facebook/time / Encode1033

Function Encode1033

rtcm/encode.go:34–117  ·  view source on GitHub ↗

Encode1033 generates a complete RTCM 1033 frame (header + payload + CRC).

(desc AntennaDescriptor)

Source from the content-addressed store, hash-verified

32
33// Encode1033 generates a complete RTCM 1033 frame (header + payload + CRC).
34func Encode1033(desc AntennaDescriptor) []byte {
35 // Build the bit-packed payload.
36 // RTCM 1033 fields:
37 // DF002: Message Number (12 bits) = 1033
38 // DF003: Reference Station ID (12 bits)
39 // DF227: Descriptor Counter N (8 bits)
40 // DF228: Antenna Descriptor (N bytes)
41 // DF229: Antenna Setup ID (8 bits)
42 // DF230: Serial Number Counter M (8 bits)
43 // DF231: Antenna Serial Number (M bytes)
44 // DF232: Receiver Type Counter I (8 bits)
45 // DF233: Receiver Type (I bytes)
46 // DF234: Firmware Counter J (8 bits)
47 // DF235: Receiver Firmware (J bytes)
48 // DF236: Serial Counter K (8 bits)
49 // DF237: Receiver Serial (K bytes)
50
51 payloadSize := 3 + // 12+12 bits = 24 bits = 3 bytes for msg number + station ID
52 1 + len(desc.AntennaType) +
53 1 + // setup ID
54 1 + len(desc.AntennaSerial) +
55 1 + len(desc.ReceiverType) +
56 1 + len(desc.ReceiverFW) +
57 1 + len(desc.ReceiverSerial)
58
59 payload := make([]byte, payloadSize)
60 offset := 0
61
62 // DF002 (12 bits) + DF003 (12 bits) = 24 bits = 3 bytes
63 // Message number 1033 = 0x409 in upper 12 bits
64 // Station ID in lower 12 bits
65 val := (uint32(1033) << 12) | uint32(desc.StationID&0x0FFF)
66 payload[0] = byte((val >> 16) & 0xFF)
67 payload[1] = byte((val >> 8) & 0xFF)
68 payload[2] = byte(val & 0xFF)
69 offset = 3
70
71 // Antenna descriptor
72 payload[offset] = byte(len(desc.AntennaType) & 0xFF)
73 offset++
74 copy(payload[offset:], desc.AntennaType)
75 offset += len(desc.AntennaType)
76
77 // Antenna setup ID
78 payload[offset] = desc.AntennaSetupID
79 offset++
80
81 // Antenna serial number
82 payload[offset] = byte(len(desc.AntennaSerial) & 0xFF)
83 offset++
84 copy(payload[offset:], desc.AntennaSerial)
85 offset += len(desc.AntennaSerial)
86
87 // Receiver type
88 payload[offset] = byte(len(desc.ReceiverType) & 0xFF)
89 offset++
90 copy(payload[offset:], desc.ReceiverType)
91 offset += len(desc.ReceiverType)

Callers 6

TestParseStreamCleanFileFunction · 0.92
streamFramesFunction · 0.92
TestEncode1033RoundTripFunction · 0.85
TestPatchStationIDFunction · 0.85

Calls 1

putCRCFunction · 0.85

Tested by 5

TestParseStreamCleanFileFunction · 0.74
TestEncode1033RoundTripFunction · 0.68
TestPatchStationIDFunction · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…