From 3cbf7a2e7f28c0bd2316b95cbc256d9e2622e3a9 Mon Sep 17 00:00:00 2001 From: Jason Mobarak Date: Sun, 1 May 2022 12:25:15 -0700 Subject: [PATCH 1/4] Add definition for MSG_STATUS_JOURNAL --- .../sbp/system/test_MsgStatusJournal.yaml | 66 +++++++++++++++++++ spec/yaml/swiftnav/sbp/system.yaml | 59 ++++++++++++++++- 2 files changed, 122 insertions(+), 3 deletions(-) create mode 100644 spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml diff --git a/spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml b/spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml new file mode 100644 index 0000000000..43ccf62f38 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml @@ -0,0 +1,66 @@ +description: Unit tests for swiftnav.sbp.system MsgStatusJournal +generated_on: '2022-04-28 09:56:19.891285' +package: sbp.system +tests: +- msg: + c_decoded_fields: + n_journal: 3 + fields: + reporting_system: 1 + sbp_version: 1025 + total_status_reports: 100 + sequence_descriptor: 16 + journal: + - uptime: 4242 + report: + component: 6 + generic: 1 + specific: 13 + - uptime: 5050 + report: + component: 6 + generic: 1 + specific: 14 + - uptime: 8888 + report: + component: 6 + generic: 1 + specific: 15 + module: sbp.system + name: MsgStatusJournal + msg_type: '0xFFFD' + raw_json: '{"preamble": 85, "msg_type": 65533, "sender": 35027, "length": 33, "payload": "AQABBGQAAAAQkhAAAAYAAQ26EwAABgABDrgiAAAGAAEP", "crc": 30577, "reporting_system": 1, "sbp_version": 1025, "total_status_reports": 100, "sequence_descriptor": 16, "journal": [{"uptime": 4242, "report": {"component": 6, "generic": 1, "specific": 13}}, {"uptime": 5050, "report": {"component": 6, "generic": 1, "specific": 14}}, {"uptime": 8888, "report": {"component": 6, "generic": 1, "specific": 15}}]}' + raw_packet: Vf3/04ghAQABBGQAAAAQkhAAAAYAAQ26EwAABgABDrgiAAAGAAEPcXc= + sbp: + crc: '0x7771' + length: 33 + msg_type: '0xFFFD' + payload: AQABBGQAAAAQkhAAAAYAAQ26EwAABgABDrgiAAAGAAEP + preamble: '0x55' + sender: '0x88D3' +- msg: + c_decoded_fields: + n_journal: 1 + fields: + journal: + - report: + component: 6 + generic: 1 + specific: 13 + uptime: 4242 + sequence_descriptor: 16 + total_status_reports: 100 + reporting_system: 1 + sbp_version: 1025 + module: sbp.system + name: MsgStatusJournal + msg_type: '0xFFFD' + raw_json: '{"preamble": 85, "msg_type": 65533, "sender": 35027, "length": 17, "payload": "AQABBGQAAAAQkhAAAAYAAQ0=", "crc": 31120, "reporting_system": 1, "sbp_version": 1025, "total_status_reports": 100, "sequence_descriptor": 16, "journal": [{"uptime": 4242, "report": {"component": 6, "generic": 1, "specific": 13}}]}' + raw_packet: Vf3/04gRAQABBGQAAAAQkhAAAAYAAQ2QeQ== + sbp: + crc: '0x7990' + length: 17 + msg_type: '0xFFFD' + payload: AQABBGQAAAAQkhAAAAYAAQ0= + preamble: '0x55' + sender: '0x88D3' diff --git a/spec/yaml/swiftnav/sbp/system.yaml b/spec/yaml/swiftnav/sbp/system.yaml index 92da3965c6..76ecd804b6 100644 --- a/spec/yaml/swiftnav/sbp/system.yaml +++ b/spec/yaml/swiftnav/sbp/system.yaml @@ -137,10 +137,10 @@ definitions: - 1: An error has occurred - SubSystemReport: - short_desc: Sub-system Status report + short_desc: Subsystem Status report embedded_type: true desc: > - Report the general and specific state of a sub-system. If the generic + Report the general and specific state of a subsystem. If the generic state is reported as initializing, the specific state should be ignored. fields: - component: @@ -180,7 +180,7 @@ definitions: The status report is sent periodically to inform the host or other attached devices that the system is running. It is used to monitor system malfunctions. It contains status - reports that indicate to the host the status of each sub-system and + reports that indicate to the host the status of each subsystem and whether it is operating correctly. @@ -216,6 +216,59 @@ definitions: fill: SubSystemReport desc: Reported status of individual subsystems + - StatusJournalItem: + short_desc: Subsystem Status report + embedded_type: true + desc: > + Reports the uptime and the state of a subsystem via generic and specific + status codes. If the generic state is reported as initializing, the + specific state should be ignored. + fields: + - uptime: + type: u32 + desc: Milliseconds since system startup + - report: + type: SubSystemReport + + - MSG_STATUS_JOURNAL: + id: 0xFFFD + short_desc: Status report journal + desc: > + The status journal message contains past status reports (see + MSG_STATUS_REPORT) and functions as a error/event storage for telemetry + purposes. + fields: + - reporting_system: + type: u16 + desc: Identity of reporting system + fields: + - 0-15: + desc: System + values: + - 0: Starling + - 1: Precision GNSS Module (PGM) + - sbp_version: + type: u16 + desc: SBP protocol version + fields: + - 8-15: + desc: SBP major protocol version number + - 0-7: + desc: SBP minor protocol version number + - total_status_reports: + type: u32 + desc: Total number of status reports sent since system startup + - sequence_descriptor: + type: u8 + desc: > + Index and number of messages in this sequence. First nibble is + the size of the sequence (n), second nibble is the zero-indexed + counter (ith packet of n) + - journal: + type: array + fill: StatusJournalItem + desc: Status journal + - MSG_INS_STATUS: id: 0xFF03 short_desc: Inertial Navigation System status message From bb7ca80bb204139f7af9017785cd97e7f7be5c96 Mon Sep 17 00:00:00 2001 From: Jason Mobarak Date: Sun, 1 May 2022 12:25:58 -0700 Subject: [PATCH 2/4] Add generated code fro MSG_STATUS_JOURNAL --- c/include/libsbp/cpp/message_traits.h | 35 ++ c/include/libsbp/legacy/cpp/message_traits.h | 6 + c/include/libsbp/legacy/system.h | 39 +- c/include/libsbp/sbp_msg_type.h | 1 + c/include/libsbp/system_macros.h | 76 ++++ c/include/libsbp/v4/sbp_msg.h | 11 + c/include/libsbp/v4/system.h | 2 + .../libsbp/v4/system/MSG_STATUS_JOURNAL.h | 214 +++++++++ .../libsbp/v4/system/MSG_STATUS_REPORT.h | 2 +- .../libsbp/v4/system/StatusJournalItem.h | 164 +++++++ c/include/libsbp/v4/system/SubSystemReport.h | 4 +- c/src/include/libsbp/internal/v4/system.h | 40 ++ c/src/v4/system.c | 194 ++++++++ ...o_check_sbp_acquisition_MsgAcqResultDepA.c | 24 +- ...o_check_sbp_acquisition_MsgAcqResultDepB.c | 20 +- ...o_check_sbp_acquisition_MsgAcqResultDepC.c | 20 +- ..._sbp_bootload_MsgBootloaderHandshakeResp.c | 8 +- .../auto_check_sbp_ext_events_MsgExtEvent.c | 4 +- ...uto_check_sbp_file_io_MsgFileioWriteResp.c | 4 +- c/test/auto_check_sbp_imu_MsgImuAux.c | 4 +- c/test/auto_check_sbp_imu_MsgImuRaw.c | 4 +- c/test/auto_check_sbp_logging_MsgFwd.c | 4 +- c/test/auto_check_sbp_logging_MsgLog.c | 4 +- c/test/auto_check_sbp_logging_MsgPrintDep.c | 24 +- ...o_check_sbp_navigation_MsgAgeCorrections.c | 4 +- ...uto_check_sbp_navigation_MsgBaselineECEF.c | 20 +- ...check_sbp_navigation_MsgBaselineECEFDepA.c | 44 +- ...auto_check_sbp_navigation_MsgBaselineNED.c | 20 +- ..._check_sbp_navigation_MsgBaselineNEDDepA.c | 44 +- c/test/auto_check_sbp_navigation_MsgDops.c | 4 +- .../auto_check_sbp_navigation_MsgDopsDepA.c | 36 +- c/test/auto_check_sbp_navigation_MsgGPSTime.c | 20 +- ...auto_check_sbp_navigation_MsgGPSTimeDepA.c | 44 +- ...auto_check_sbp_navigation_MsgGPSTimeGNSS.c | 20 +- c/test/auto_check_sbp_navigation_MsgPosECEF.c | 16 +- .../auto_check_sbp_navigation_MsgPosECEFCov.c | 4 +- ...o_check_sbp_navigation_MsgPosECEFCovGNSS.c | 4 +- ...auto_check_sbp_navigation_MsgPosECEFDepA.c | 44 +- ...auto_check_sbp_navigation_MsgPosECEFGNSS.c | 4 +- c/test/auto_check_sbp_navigation_MsgPosLLH.c | 20 +- .../auto_check_sbp_navigation_MsgPosLLHCov.c | 4 +- .../auto_check_sbp_navigation_MsgPosLLHDepA.c | 44 +- ...to_check_sbp_navigation_MsgPosLlhCovGnss.c | 4 +- .../auto_check_sbp_navigation_MsgPosLlhGnss.c | 4 +- ..._check_sbp_navigation_MsgProtectionLevel.c | 4 +- c/test/auto_check_sbp_navigation_MsgUTCTime.c | 4 +- ...auto_check_sbp_navigation_MsgUTCTimeGNSS.c | 4 +- c/test/auto_check_sbp_navigation_MsgVelBody.c | 4 +- c/test/auto_check_sbp_navigation_MsgVelCog.c | 12 +- c/test/auto_check_sbp_navigation_MsgVelECEF.c | 20 +- .../auto_check_sbp_navigation_MsgVelECEFCov.c | 4 +- ...auto_check_sbp_navigation_MsgVelECEFDepA.c | 44 +- ...o_check_sbp_navigation_MsgVelEcefCovGnss.c | 4 +- ...auto_check_sbp_navigation_MsgVelEcefGnss.c | 4 +- c/test/auto_check_sbp_navigation_MsgVelNED.c | 20 +- .../auto_check_sbp_navigation_MsgVelNEDCOV.c | 4 +- .../auto_check_sbp_navigation_MsgVelNEDDepA.c | 44 +- ...to_check_sbp_navigation_MsgVelNedCovGnss.c | 4 +- .../auto_check_sbp_navigation_MsgVelNedGnss.c | 4 +- ...uto_check_sbp_observation_MsgBasePosEcef.c | 4 +- ...to_check_sbp_observation_MsgEphemerisBds.c | 4 +- ...to_check_sbp_observation_MsgEphemerisGLO.c | 4 +- ...to_check_sbp_observation_MsgEphemerisGPS.c | 4 +- ...to_check_sbp_observation_MsgEphemerisGal.c | 4 +- .../auto_check_sbp_observation_MsgGloBiases.c | 4 +- c/test/auto_check_sbp_observation_MsgObs.c | 8 +- .../auto_check_sbp_observation_MsgObsDepB.c | 20 +- .../auto_check_sbp_observation_MsgObsDepC.c | 20 +- c/test/auto_check_sbp_observation_MsgOsr.c | 4 +- c/test/auto_check_sbp_observation_MsgSvAzEl.c | 4 +- ...o_check_sbp_observation_msgEphemerisDepB.c | 24 +- ...o_check_sbp_observation_msgEphemerisQzss.c | 4 +- .../auto_check_sbp_observation_msgObsDepA.c | 24 +- ...uto_check_sbp_orientation_MsgAngularRate.c | 4 +- ...uto_check_sbp_orientation_MsgOrientEuler.c | 4 +- ...auto_check_sbp_orientation_MsgOrientQuat.c | 4 +- .../auto_check_sbp_piksi_MsgDeviceMonitor.c | 20 +- c/test/auto_check_sbp_piksi_MsgIarState.c | 28 +- ...check_sbp_piksi_MsgNetworkBandwidthUsage.c | 4 +- c/test/auto_check_sbp_piksi_MsgThreadState.c | 44 +- c/test/auto_check_sbp_piksi_MsgUartState.c | 8 +- .../auto_check_sbp_piksi_MsgUartStateDepA.c | 24 +- c/test/auto_check_sbp_sbas_MsgSbasRaw.c | 4 +- ..._sbp_settings_MsgSettingsReadByIndexDone.c | 4 +- ..._sbp_settings_MsgSettingsReadByIndexResp.c | 20 +- c/test/auto_check_sbp_system_MsgDgnssStatus.c | 4 +- c/test/auto_check_sbp_system_MsgGroupMeta.c | 8 +- c/test/auto_check_sbp_system_MsgHeartbeat.c | 8 +- c/test/auto_check_sbp_system_MsgInsStatus.c | 4 +- c/test/auto_check_sbp_system_MsgInsUpdates.c | 4 +- .../auto_check_sbp_system_MsgSensorAidEvent.c | 4 +- c/test/auto_check_sbp_system_MsgStartup.c | 8 +- .../auto_check_sbp_system_MsgStatusJournal.c | 397 +++++++++++++++++ ...o_check_sbp_tracking_MsgMeasurementState.c | 4 +- ...auto_check_sbp_tracking_MsgTrackingState.c | 20 +- ...sbp_tracking_MsgTrackingStateDetailedDep.c | 20 +- ..._check_sbp_tracking_MsgtrackingStateDepA.c | 24 +- c/test/auto_check_sbp_vehicle_MsgOdometry.c | 4 +- c/test/check_main.c | 1 + c/test/check_main_legacy.c | 1 + c/test/check_suites.h | 1 + c/test/check_suites_legacy.h | 1 + .../auto_check_sbp_system_MsgStatusJournal.cc | 294 +++++++++++++ .../auto_check_sbp_system_MsgStatusJournal.c | 416 ++++++++++++++++++ .../auto_check_sbp_system_MsgStatusJournal.cc | 299 +++++++++++++ docs/sbp.pdf | Bin 462582 -> 467488 bytes .../resources/c/test/v4/sbp_c_test.c.j2 | 2 +- haskell/sbp.cabal | 4 +- haskell/src/SwiftNav/SBP/Msg.hs | 6 + haskell/src/SwiftNav/SBP/System.hs | 73 ++- .../com/swiftnav/sbp/client/MessageTable.java | 3 + .../swiftnav/sbp/system/MsgStatusJournal.java | 94 ++++ .../swiftnav/sbp/system/MsgStatusReport.java | 2 +- .../sbp/system/StatusJournalItem.java | 53 +++ ...check_sbp_system_MsgStatusJournalTest.java | 301 +++++++++++++ javascript/sbp.bundle.js | 2 +- javascript/sbp/system.js | 86 +++- jsonschema/MsgStatusJournal.json | 32 ++ jsonschema/MsgStatusReport.json | 2 +- jsonschema/StatusJournalItem.json | 26 ++ jsonschema/SubSystemReport.json | 2 +- package-lock.json | 4 +- package.json | 2 +- proto/system.proto | 33 +- python/docs/source/spelling_wordlist.txt | 2 + python/sbp/system.py | 155 ++++++- python/tests/sbp/test_table.py | 2 +- rust/sbp/src/messages/mod.rs | 22 + rust/sbp/src/messages/system.rs | 238 +++++++++- rust/sbp/src/sbp_iter_ext.rs | 2 + ...uto_check_sbp_system_msg_status_journal.rs | 204 +++++++++ rust/sbp/tests/integration/main.rs | 1 + sbpjson/elm/SbpJson.elm | 109 ++++- sbpjson/javascript/SbpJson.js | 39 +- sbpjson/typescript/SbpJson.ts | 80 +++- 135 files changed, 4541 insertions(+), 354 deletions(-) create mode 100644 c/include/libsbp/v4/system/MSG_STATUS_JOURNAL.h create mode 100644 c/include/libsbp/v4/system/StatusJournalItem.h create mode 100644 c/test/auto_check_sbp_system_MsgStatusJournal.c create mode 100644 c/test/cpp/auto_check_sbp_system_MsgStatusJournal.cc create mode 100644 c/test/legacy/auto_check_sbp_system_MsgStatusJournal.c create mode 100644 c/test/legacy/cpp/auto_check_sbp_system_MsgStatusJournal.cc create mode 100644 java/src/com/swiftnav/sbp/system/MsgStatusJournal.java create mode 100644 java/src/com/swiftnav/sbp/system/StatusJournalItem.java create mode 100644 java/test/auto_check_sbp_system_MsgStatusJournalTest.java create mode 100644 jsonschema/MsgStatusJournal.json create mode 100644 jsonschema/StatusJournalItem.json create mode 100644 rust/sbp/tests/integration/auto_check_sbp_system_msg_status_journal.rs diff --git a/c/include/libsbp/cpp/message_traits.h b/c/include/libsbp/cpp/message_traits.h index 62eea87ec3..9d61f6f7db 100644 --- a/c/include/libsbp/cpp/message_traits.h +++ b/c/include/libsbp/cpp/message_traits.h @@ -6019,6 +6019,41 @@ struct MessageTraits { } }; +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgStatusJournal; + static const sbp_msg_status_journal_t &get(const sbp_msg_t &msg) { + return msg.status_journal; + } + static sbp_msg_status_journal_t &get(sbp_msg_t &msg) { + return msg.status_journal; + } + static void to_sbp_msg(const sbp_msg_status_journal_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->status_journal = msg; + } + static sbp_msg_t to_sbp_msg(const sbp_msg_status_journal_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.status_journal = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_status_journal_t &msg, sbp_write_fn_t write) { + return sbp_msg_status_journal_send(state, sender_id, &msg, write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_status_journal_t &msg) { + return sbp_msg_status_journal_encode(buf, len, n_written, &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_status_journal_t *msg) { + return sbp_msg_status_journal_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_status_journal_t &msg) { + return sbp_msg_status_journal_encoded_len(&msg); + } +}; + template <> struct MessageTraits { static constexpr sbp_msg_type_t id = SbpMsgStatusReport; diff --git a/c/include/libsbp/legacy/cpp/message_traits.h b/c/include/libsbp/legacy/cpp/message_traits.h index 59d5d21fb6..96bc1dfbe4 100644 --- a/c/include/libsbp/legacy/cpp/message_traits.h +++ b/c/include/libsbp/legacy/cpp/message_traits.h @@ -1200,6 +1200,12 @@ struct MessageTraits { }; +template<> +struct MessageTraits { + static constexpr u16 id = 65533; +}; + + template<> struct MessageTraits { static constexpr u16 id = 65534; diff --git a/c/include/libsbp/legacy/system.h b/c/include/libsbp/legacy/system.h index a3b80da461..3c0fca5c82 100644 --- a/c/include/libsbp/legacy/system.h +++ b/c/include/libsbp/legacy/system.h @@ -73,10 +73,10 @@ typedef struct SBP_ATTR_PACKED { u32 flags; /**< Status flags */ } msg_heartbeat_t; -/** Sub-system Status report +/** Subsystem Status report * - * Report the general and specific state of a sub-system. If the generic - * state is reported as initializing, the specific state should be ignored. + * Report the general and specific state of a subsystem. If the generic state + * is reported as initializing, the specific state should be ignored. */ typedef struct SBP_ATTR_PACKED { @@ -90,7 +90,7 @@ typedef struct SBP_ATTR_PACKED { * The status report is sent periodically to inform the host or other attached * devices that the system is running. It is used to monitor system * malfunctions. It contains status reports that indicate to the host the - * status of each sub-system and whether it is operating correctly. + * status of each subsystem and whether it is operating correctly. * * Interpretation of the subsystem specific status code is product dependent, * but if the generic status code is initializing, it should be ignored. @@ -106,6 +106,37 @@ typedef struct SBP_ATTR_PACKED { subsystems */ } msg_status_report_t; +/** Subsystem Status report + * + * Reports the uptime and the state of a subsystem via generic and specific + * status codes. If the generic state is reported as initializing, the + * specific state should be ignored. + */ + +typedef struct SBP_ATTR_PACKED { + u32 uptime; /**< Milliseconds since system startup */ + sub_system_report_t report; +} status_journal_item_t; + +/** Status report journal + * + * The status journal message contains past status reports (see + * MSG_STATUS_REPORT) and functions as a error/event storage for telemetry + * purposes. + */ + +typedef struct SBP_ATTR_PACKED { + u16 reporting_system; /**< Identity of reporting system */ + u16 sbp_version; /**< SBP protocol version */ + u32 total_status_reports; /**< Total number of status reports sent since + system startup */ + u8 sequence_descriptor; /**< Index and number of messages in this + sequence. First nibble is the size of the + sequence (n), second nibble is the zero- + indexed counter (ith packet of n) */ + status_journal_item_t journal[0]; /**< Status journal */ +} msg_status_journal_t; + /** Inertial Navigation System status message * * The INS status message describes the state of the operation and diff --git a/c/include/libsbp/sbp_msg_type.h b/c/include/libsbp/sbp_msg_type.h index 2b7b63f87c..297496588a 100644 --- a/c/include/libsbp/sbp_msg_type.h +++ b/c/include/libsbp/sbp_msg_type.h @@ -221,6 +221,7 @@ typedef enum { SbpMsgSsrStecCorrection = SBP_MSG_SSR_STEC_CORRECTION, SbpMsgSsrTileDefinition = SBP_MSG_SSR_TILE_DEFINITION, SbpMsgStartup = SBP_MSG_STARTUP, + SbpMsgStatusJournal = SBP_MSG_STATUS_JOURNAL, SbpMsgStatusReport = SBP_MSG_STATUS_REPORT, SbpMsgStmFlashLockSector = SBP_MSG_STM_FLASH_LOCK_SECTOR, SbpMsgStmFlashUnlockSector = SBP_MSG_STM_FLASH_UNLOCK_SECTOR, diff --git a/c/include/libsbp/system_macros.h b/c/include/libsbp/system_macros.h index da05dc0b9d..780df5e619 100644 --- a/c/include/libsbp/system_macros.h +++ b/c/include/libsbp/system_macros.h @@ -326,6 +326,82 @@ */ #define SBP_MSG_STATUS_REPORT_ENCODED_OVERHEAD 12u +/** + * Encoded length of sbp_status_journal_item_t (V4 API) and + * status_journal_item_t (legacy API) + */ +#define SBP_STATUS_JOURNAL_ITEM_ENCODED_LEN 8u + +#define SBP_MSG_STATUS_JOURNAL 0xFFFD +#define SBP_STATUS_JOURNAL_SYSTEM_MASK (0xffffu) +#define SBP_STATUS_JOURNAL_SYSTEM_SHIFT (0u) +#define SBP_STATUS_JOURNAL_SYSTEM_GET(flags) \ + ((u16)((u16)((flags) >> SBP_STATUS_JOURNAL_SYSTEM_SHIFT) & \ + SBP_STATUS_JOURNAL_SYSTEM_MASK)) +#define SBP_STATUS_JOURNAL_SYSTEM_SET(flags, val) \ + do { \ + (flags) = (u16)((flags & (~(SBP_STATUS_JOURNAL_SYSTEM_MASK \ + << SBP_STATUS_JOURNAL_SYSTEM_SHIFT))) | \ + (((val) & (SBP_STATUS_JOURNAL_SYSTEM_MASK)) \ + << (SBP_STATUS_JOURNAL_SYSTEM_SHIFT))); \ + } while (0) + +#define SBP_STATUS_JOURNAL_SYSTEM_STARLING (0) +#define SBP_STATUS_JOURNAL_SYSTEM_PRECISION_GNSS_MODULE (1) +#define SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_MASK (0xffu) +#define SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_SHIFT (8u) +#define SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_GET(flags) \ + ((u16)((u16)((flags) >> \ + SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_SHIFT) & \ + SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_MASK)) +#define SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_SET(flags, val) \ + do { \ + (flags) = (u16)( \ + (flags & \ + (~(SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_MASK \ + << SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_SHIFT))) | \ + (((val) & (SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_MASK)) \ + << (SBP_STATUS_JOURNAL_SBP_MAJOR_PROTOCOL_VERSION_NUMBER_SHIFT))); \ + } while (0) + +#define SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_MASK (0xffu) +#define SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_SHIFT (0u) +#define SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_GET(flags) \ + ((u16)((u16)((flags) >> \ + SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_SHIFT) & \ + SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_MASK)) +#define SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_SET(flags, val) \ + do { \ + (flags) = (u16)( \ + (flags & \ + (~(SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_MASK \ + << SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_SHIFT))) | \ + (((val) & (SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_MASK)) \ + << (SBP_STATUS_JOURNAL_SBP_MINOR_PROTOCOL_VERSION_NUMBER_SHIFT))); \ + } while (0) + +/** + * The maximum number of items that can be stored in + * sbp_msg_status_journal_t::journal (V4 API) or msg_status_journal_t::journal + * (legacy API) before the maximum SBP message size is exceeded + */ +#define SBP_MSG_STATUS_JOURNAL_JOURNAL_MAX 30u + +/** + * Encoded length of sbp_msg_status_journal_t (V4 API) and + * msg_status_journal_t (legacy API) + * + * This type is not fixed size and an instance of this message may be longer + * than the value indicated by this symbol. Users of the V4 API should call + * #sbp_msg_status_journal_encoded_len to determine the actual size of an + * instance of this message. Users of the legacy API are required to track the + * encoded message length when interacting with the legacy type. + * + * See the documentation for libsbp for more details regarding the message + * structure and its variable length component(s) + */ +#define SBP_MSG_STATUS_JOURNAL_ENCODED_OVERHEAD 9u + #define SBP_MSG_INS_STATUS 0xFF03 #define SBP_INS_STATUS_INS_TYPE_MASK (0x7u) #define SBP_INS_STATUS_INS_TYPE_SHIFT (29u) diff --git a/c/include/libsbp/v4/sbp_msg.h b/c/include/libsbp/v4/sbp_msg.h index ab682df342..9959cfdc83 100644 --- a/c/include/libsbp/v4/sbp_msg.h +++ b/c/include/libsbp/v4/sbp_msg.h @@ -227,6 +227,7 @@ typedef union { sbp_msg_ssr_stec_correction_t ssr_stec_correction; sbp_msg_ssr_tile_definition_t ssr_tile_definition; sbp_msg_startup_t startup; + sbp_msg_status_journal_t status_journal; sbp_msg_status_report_t status_report; sbp_msg_stm_flash_lock_sector_t stm_flash_lock_sector; sbp_msg_stm_flash_unlock_sector_t stm_flash_unlock_sector; @@ -740,6 +741,9 @@ static inline s8 sbp_message_encode(uint8_t *buf, uint8_t len, &msg->ssr_tile_definition); case SbpMsgStartup: return sbp_msg_startup_encode(buf, len, n_written, &msg->startup); + case SbpMsgStatusJournal: + return sbp_msg_status_journal_encode(buf, len, n_written, + &msg->status_journal); case SbpMsgStatusReport: return sbp_msg_status_report_encode(buf, len, n_written, &msg->status_report); @@ -1307,6 +1311,9 @@ static inline s8 sbp_message_decode(const uint8_t *buf, uint8_t len, &msg->ssr_tile_definition); case SbpMsgStartup: return sbp_msg_startup_decode(buf, len, n_read, &msg->startup); + case SbpMsgStatusJournal: + return sbp_msg_status_journal_decode(buf, len, n_read, + &msg->status_journal); case SbpMsgStatusReport: return sbp_msg_status_report_decode(buf, len, n_read, &msg->status_report); @@ -1782,6 +1789,8 @@ static inline size_t sbp_message_encoded_len(sbp_msg_type_t msg_type, return sbp_msg_ssr_tile_definition_encoded_len(&msg->ssr_tile_definition); case SbpMsgStartup: return sbp_msg_startup_encoded_len(&msg->startup); + case SbpMsgStatusJournal: + return sbp_msg_status_journal_encoded_len(&msg->status_journal); case SbpMsgStatusReport: return sbp_msg_status_report_encoded_len(&msg->status_report); case SbpMsgStmFlashLockSector: @@ -2305,6 +2314,8 @@ static inline int sbp_message_cmp(sbp_msg_type_t msg_type, const sbp_msg_t *a, &b->ssr_tile_definition); case SbpMsgStartup: return sbp_msg_startup_cmp(&a->startup, &b->startup); + case SbpMsgStatusJournal: + return sbp_msg_status_journal_cmp(&a->status_journal, &b->status_journal); case SbpMsgStatusReport: return sbp_msg_status_report_cmp(&a->status_report, &b->status_report); case SbpMsgStmFlashLockSector: diff --git a/c/include/libsbp/v4/system.h b/c/include/libsbp/v4/system.h index 95ce17055f..58777cba97 100644 --- a/c/include/libsbp/v4/system.h +++ b/c/include/libsbp/v4/system.h @@ -28,7 +28,9 @@ #include #include #include +#include #include +#include #include #endif /* LIBSBP_V4_SYSTEM_MESSAGES_H */ diff --git a/c/include/libsbp/v4/system/MSG_STATUS_JOURNAL.h b/c/include/libsbp/v4/system/MSG_STATUS_JOURNAL.h new file mode 100644 index 0000000000..2786052eaa --- /dev/null +++ b/c/include/libsbp/v4/system/MSG_STATUS_JOURNAL.h @@ -0,0 +1,214 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/system.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_SYSTEM_MSG_STATUS_JOURNAL_H +#define LIBSBP_V4_SYSTEM_MSG_STATUS_JOURNAL_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_STATUS_JOURNAL + * + *****************************************************************************/ +/** Status report journal + * + * The status journal message contains past status reports (see + * MSG_STATUS_REPORT) and functions as a error/event storage for telemetry + * purposes. + */ +typedef struct { + /** + * Identity of reporting system + */ + u16 reporting_system; + + /** + * SBP protocol version + */ + u16 sbp_version; + + /** + * Total number of status reports sent since system startup + */ + u32 total_status_reports; + + /** + * Index and number of messages in this sequence. First nibble is the size of + * the sequence (n), second nibble is the zero-indexed counter (ith packet of + * n) + */ + u8 sequence_descriptor; + + /** + * Status journal + */ + sbp_status_journal_item_t journal[SBP_MSG_STATUS_JOURNAL_JOURNAL_MAX]; + /** + * Number of elements in journal + * + * When sending a message fill in this field with the number elements set in + * journal before calling an appropriate libsbp send function + * + * When receiving a message query this field for the number of elements in + * journal. The value of any elements beyond the index specified in this field + * is undefined + */ + u8 n_journal; +} sbp_msg_status_journal_t; + +/** + * Get encoded size of an instance of sbp_msg_status_journal_t + * + * @param msg sbp_msg_status_journal_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_status_journal_encoded_len( + const sbp_msg_status_journal_t *msg) { + return SBP_MSG_STATUS_JOURNAL_ENCODED_OVERHEAD + + (msg->n_journal * SBP_STATUS_JOURNAL_ITEM_ENCODED_LEN); +} + +/** + * Encode an instance of sbp_msg_status_journal_t to wire representation + * + * This function encodes the given instance in to the user provided buffer. The + * buffer provided to this function must be large enough to store the encoded + * message otherwise it will return SBP_ENCODE_ERROR without writing anything to + * the buffer. + * + * Specify the length of the destination buffer in the \p len parameter. If + * non-null the number of bytes written to the buffer will be returned in \p + * n_written. + * + * @param buf Destination buffer + * @param len Length of \p buf + * @param n_written If not null, on success will be set to the number of bytes + * written to \p buf + * @param msg Instance of sbp_msg_status_journal_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 +sbp_msg_status_journal_encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_status_journal_t *msg); + +/** + * Decode an instance of sbp_msg_status_journal_t from wire representation + * + * This function decodes the wire representation of a sbp_msg_status_journal_t + * message to the given instance. The caller must specify the length of the + * buffer in the \p len parameter. If non-null the number of bytes read from the + * buffer will be returned in \p n_read. + * + * @param buf Wire representation of the sbp_msg_status_journal_t instance + * @param len Length of \p buf + * @param n_read If not null, on success will be set to the number of bytes read + * from \p buf + * @param msg Destination + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_status_journal_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_msg_status_journal_t *msg); +/** + * Send an instance of sbp_msg_status_journal_t with the given write function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_status_journal_t + * + * The given message will be encoded to wire representation and passed in to the + * given write function callback. The write callback will be called several + * times for each invocation of this function. + * + * @param s SBP state + * @param sender_id SBP sender id + * @param msg Message to send + * @param write Write function + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_status_journal_send(sbp_state_t *s, u16 sender_id, + const sbp_msg_status_journal_t *msg, + sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_status_journal_t + * + * The two instances will be compared and a value returned consistent with the + * return codes of comparison functions from the C standard library + * + * 0 will be returned if \p a and \p b are considered equal + * A value less than 0 will be returned if \p a is considered to be less than \p + * b A value greater than 0 will be returned if \p b is considered to be greater + * than \p b + * + * @param a sbp_msg_status_journal_t instance + * @param b sbp_msg_status_journal_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_status_journal_cmp(const sbp_msg_status_journal_t *a, + const sbp_msg_status_journal_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_msg_status_journal_t &lhs, + const sbp_msg_status_journal_t &rhs) { + return sbp_msg_status_journal_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_msg_status_journal_t &lhs, + const sbp_msg_status_journal_t &rhs) { + return sbp_msg_status_journal_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_msg_status_journal_t &lhs, + const sbp_msg_status_journal_t &rhs) { + return sbp_msg_status_journal_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_msg_status_journal_t &lhs, + const sbp_msg_status_journal_t &rhs) { + return sbp_msg_status_journal_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_msg_status_journal_t &lhs, + const sbp_msg_status_journal_t &rhs) { + return sbp_msg_status_journal_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_msg_status_journal_t &lhs, + const sbp_msg_status_journal_t &rhs) { + return sbp_msg_status_journal_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_SYSTEM_MSG_STATUS_JOURNAL_H */ diff --git a/c/include/libsbp/v4/system/MSG_STATUS_REPORT.h b/c/include/libsbp/v4/system/MSG_STATUS_REPORT.h index 82ff625772..995cf095ac 100644 --- a/c/include/libsbp/v4/system/MSG_STATUS_REPORT.h +++ b/c/include/libsbp/v4/system/MSG_STATUS_REPORT.h @@ -44,7 +44,7 @@ extern "C" { * The status report is sent periodically to inform the host or other attached * devices that the system is running. It is used to monitor system * malfunctions. It contains status reports that indicate to the host the status - * of each sub-system and whether it is operating correctly. + * of each subsystem and whether it is operating correctly. * */ typedef struct { diff --git a/c/include/libsbp/v4/system/StatusJournalItem.h b/c/include/libsbp/v4/system/StatusJournalItem.h new file mode 100644 index 0000000000..b55550215a --- /dev/null +++ b/c/include/libsbp/v4/system/StatusJournalItem.h @@ -0,0 +1,164 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/system.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_SYSTEM_STATUSJOURNALITEM_H +#define LIBSBP_V4_SYSTEM_STATUSJOURNALITEM_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_STATUSJOURNALITEM + * + *****************************************************************************/ +/** Subsystem Status report + * + * Reports the uptime and the state of a subsystem via generic and specific + * status codes. If the generic state is reported as initializing, the specific + * state should be ignored. + */ +typedef struct { + /** + * Milliseconds since system startup + */ + u32 uptime; + + sbp_sub_system_report_t report; +} sbp_status_journal_item_t; + +/** + * Get encoded size of an instance of sbp_status_journal_item_t + * + * @param msg sbp_status_journal_item_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_status_journal_item_encoded_len( + const sbp_status_journal_item_t *msg) { + (void)msg; + return SBP_STATUS_JOURNAL_ITEM_ENCODED_LEN; +} + +/** + * Encode an instance of sbp_status_journal_item_t to wire representation + * + * This function encodes the given instance in to the user provided buffer. The + * buffer provided to this function must be large enough to store the encoded + * message otherwise it will return SBP_ENCODE_ERROR without writing anything to + * the buffer. + * + * Specify the length of the destination buffer in the \p len parameter. If + * non-null the number of bytes written to the buffer will be returned in \p + * n_written. + * + * @param buf Destination buffer + * @param len Length of \p buf + * @param n_written If not null, on success will be set to the number of bytes + * written to \p buf + * @param msg Instance of sbp_status_journal_item_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 +sbp_status_journal_item_encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_status_journal_item_t *msg); + +/** + * Decode an instance of sbp_status_journal_item_t from wire representation + * + * This function decodes the wire representation of a sbp_status_journal_item_t + * message to the given instance. The caller must specify the length of the + * buffer in the \p len parameter. If non-null the number of bytes read from the + * buffer will be returned in \p n_read. + * + * @param buf Wire representation of the sbp_status_journal_item_t instance + * @param len Length of \p buf + * @param n_read If not null, on success will be set to the number of bytes read + * from \p buf + * @param msg Destination + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_status_journal_item_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_status_journal_item_t *msg); + +/** + * Compare two instances of sbp_status_journal_item_t + * + * The two instances will be compared and a value returned consistent with the + * return codes of comparison functions from the C standard library + * + * 0 will be returned if \p a and \p b are considered equal + * A value less than 0 will be returned if \p a is considered to be less than \p + * b A value greater than 0 will be returned if \p b is considered to be greater + * than \p b + * + * @param a sbp_status_journal_item_t instance + * @param b sbp_status_journal_item_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_status_journal_item_cmp(const sbp_status_journal_item_t *a, + const sbp_status_journal_item_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_status_journal_item_t &lhs, + const sbp_status_journal_item_t &rhs) { + return sbp_status_journal_item_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_status_journal_item_t &lhs, + const sbp_status_journal_item_t &rhs) { + return sbp_status_journal_item_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_status_journal_item_t &lhs, + const sbp_status_journal_item_t &rhs) { + return sbp_status_journal_item_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_status_journal_item_t &lhs, + const sbp_status_journal_item_t &rhs) { + return sbp_status_journal_item_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_status_journal_item_t &lhs, + const sbp_status_journal_item_t &rhs) { + return sbp_status_journal_item_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_status_journal_item_t &lhs, + const sbp_status_journal_item_t &rhs) { + return sbp_status_journal_item_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_SYSTEM_STATUSJOURNALITEM_H */ diff --git a/c/include/libsbp/v4/system/SubSystemReport.h b/c/include/libsbp/v4/system/SubSystemReport.h index 25ceaf23ee..f23ef03149 100644 --- a/c/include/libsbp/v4/system/SubSystemReport.h +++ b/c/include/libsbp/v4/system/SubSystemReport.h @@ -38,9 +38,9 @@ extern "C" { * SBP_SUBSYSTEMREPORT * *****************************************************************************/ -/** Sub-system Status report +/** Subsystem Status report * - * Report the general and specific state of a sub-system. If the generic state + * Report the general and specific state of a subsystem. If the generic state * is reported as initializing, the specific state should be ignored. */ typedef struct { diff --git a/c/src/include/libsbp/internal/v4/system.h b/c/src/include/libsbp/internal/v4/system.h index 5239d195f6..7f0ee4abfc 100644 --- a/c/src/include/libsbp/internal/v4/system.h +++ b/c/src/include/libsbp/internal/v4/system.h @@ -127,6 +127,46 @@ bool sbp_msg_status_report_encode_internal(sbp_encode_ctx_t *ctx, bool sbp_msg_status_report_decode_internal(sbp_decode_ctx_t *ctx, sbp_msg_status_report_t *msg); +/** + * Internal function to encode an SBP type to a buffer + * + * @param ctx Encode context + * @param msg SBP type instance + * @return true on success, false otherwise + */ +bool sbp_status_journal_item_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_status_journal_item_t *msg); + +/** + * Internal function to decode an SBP type from a buffer + * + * @param ctx Decode context + * @param msg SBP type instance + * @return true on success, false otherwise + */ +bool sbp_status_journal_item_decode_internal(sbp_decode_ctx_t *ctx, + sbp_status_journal_item_t *msg); + +/** + * Internal function to encode an SBP type to a buffer + * + * @param ctx Encode context + * @param msg SBP type instance + * @return true on success, false otherwise + */ +bool sbp_msg_status_journal_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_status_journal_t *msg); + +/** + * Internal function to decode an SBP type from a buffer + * + * @param ctx Decode context + * @param msg SBP type instance + * @return true on success, false otherwise + */ +bool sbp_msg_status_journal_decode_internal(sbp_decode_ctx_t *ctx, + sbp_msg_status_journal_t *msg); + /** * Internal function to encode an SBP type to a buffer * diff --git a/c/src/v4/system.c b/c/src/v4/system.c index dc01480993..c007f3cd40 100644 --- a/c/src/v4/system.c +++ b/c/src/v4/system.c @@ -582,6 +582,200 @@ int sbp_msg_status_report_cmp(const sbp_msg_status_report_t *a, return ret; } +bool sbp_status_journal_item_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_status_journal_item_t *msg) { + if (!sbp_u32_encode(ctx, &msg->uptime)) { + return false; + } + if (!sbp_sub_system_report_encode_internal(ctx, &msg->report)) { + return false; + } + return true; +} + +s8 sbp_status_journal_item_encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_status_journal_item_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_status_journal_item_encode_internal(&ctx, msg)) { + return SBP_ENCODE_ERROR; + } + if (n_written != NULL) { + *n_written = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +bool sbp_status_journal_item_decode_internal(sbp_decode_ctx_t *ctx, + sbp_status_journal_item_t *msg) { + if (!sbp_u32_decode(ctx, &msg->uptime)) { + return false; + } + if (!sbp_sub_system_report_decode_internal(ctx, &msg->report)) { + return false; + } + return true; +} + +s8 sbp_status_journal_item_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_status_journal_item_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_status_journal_item_decode_internal(&ctx, msg)) { + return SBP_DECODE_ERROR; + } + if (n_read != NULL) { + *n_read = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +int sbp_status_journal_item_cmp(const sbp_status_journal_item_t *a, + const sbp_status_journal_item_t *b) { + int ret = 0; + + ret = sbp_u32_cmp(&a->uptime, &b->uptime); + if (ret != 0) { + return ret; + } + + ret = sbp_sub_system_report_cmp(&a->report, &b->report); + if (ret != 0) { + return ret; + } + return ret; +} + +bool sbp_msg_status_journal_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_status_journal_t *msg) { + if (!sbp_u16_encode(ctx, &msg->reporting_system)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->sbp_version)) { + return false; + } + if (!sbp_u32_encode(ctx, &msg->total_status_reports)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->sequence_descriptor)) { + return false; + } + for (size_t i = 0; i < msg->n_journal; i++) { + if (!sbp_status_journal_item_encode_internal(ctx, &msg->journal[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_status_journal_encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_status_journal_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_status_journal_encode_internal(&ctx, msg)) { + return SBP_ENCODE_ERROR; + } + if (n_written != NULL) { + *n_written = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +bool sbp_msg_status_journal_decode_internal(sbp_decode_ctx_t *ctx, + sbp_msg_status_journal_t *msg) { + if (!sbp_u16_decode(ctx, &msg->reporting_system)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->sbp_version)) { + return false; + } + if (!sbp_u32_decode(ctx, &msg->total_status_reports)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->sequence_descriptor)) { + return false; + } + msg->n_journal = (uint8_t)((ctx->buf_len - ctx->offset) / + SBP_STATUS_JOURNAL_ITEM_ENCODED_LEN); + for (uint8_t i = 0; i < msg->n_journal; i++) { + if (!sbp_status_journal_item_decode_internal(ctx, &msg->journal[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_status_journal_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_msg_status_journal_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_status_journal_decode_internal(&ctx, msg)) { + return SBP_DECODE_ERROR; + } + if (n_read != NULL) { + *n_read = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +s8 sbp_msg_status_journal_send(sbp_state_t *s, u16 sender_id, + const sbp_msg_status_journal_t *msg, + sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_status_journal_encode(payload, sizeof(payload), &payload_len, + msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_STATUS_JOURNAL, sender_id, payload_len, + payload, write); +} + +int sbp_msg_status_journal_cmp(const sbp_msg_status_journal_t *a, + const sbp_msg_status_journal_t *b) { + int ret = 0; + + ret = sbp_u16_cmp(&a->reporting_system, &b->reporting_system); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->sbp_version, &b->sbp_version); + if (ret != 0) { + return ret; + } + + ret = sbp_u32_cmp(&a->total_status_reports, &b->total_status_reports); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->sequence_descriptor, &b->sequence_descriptor); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_journal, &b->n_journal); + for (uint8_t i = 0; ret == 0 && i < a->n_journal; i++) { + ret = sbp_status_journal_item_cmp(&a->journal[i], &b->journal[i]); + } + if (ret != 0) { + return ret; + } + return ret; +} + bool sbp_msg_ins_status_encode_internal(sbp_encode_ctx_t *ctx, const sbp_msg_ins_status_t *msg) { if (!sbp_u32_encode(ctx, &msg->flags)) { diff --git a/c/test/auto_check_sbp_acquisition_MsgAcqResultDepA.c b/c/test/auto_check_sbp_acquisition_MsgAcqResultDepA.c index 10e67d75c8..94b3699401 100644 --- a/c/test/auto_check_sbp_acquisition_MsgAcqResultDepA.c +++ b/c/test/auto_check_sbp_acquisition_MsgAcqResultDepA.c @@ -115,7 +115,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -191,7 +193,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -268,7 +272,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -345,7 +351,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -422,7 +430,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -499,7 +509,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_acquisition_MsgAcqResultDepB.c b/c/test/auto_check_sbp_acquisition_MsgAcqResultDepB.c index 17feccbd59..8140d4cf79 100644 --- a/c/test/auto_check_sbp_acquisition_MsgAcqResultDepB.c +++ b/c/test/auto_check_sbp_acquisition_MsgAcqResultDepB.c @@ -119,7 +119,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -211,7 +213,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -303,7 +307,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -395,7 +401,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -487,7 +495,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_acquisition_MsgAcqResultDepC.c b/c/test/auto_check_sbp_acquisition_MsgAcqResultDepC.c index 600a7783a8..5fa60b89ae 100644 --- a/c/test/auto_check_sbp_acquisition_MsgAcqResultDepC.c +++ b/c/test/auto_check_sbp_acquisition_MsgAcqResultDepC.c @@ -119,7 +119,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepC) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -212,7 +214,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepC) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -305,7 +309,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepC) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -398,7 +404,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepC) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -491,7 +499,9 @@ START_TEST(test_auto_check_sbp_acquisition_MsgAcqResultDepC) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_bootload_MsgBootloaderHandshakeResp.c b/c/test/auto_check_sbp_bootload_MsgBootloaderHandshakeResp.c index 4a762eb4e6..bde446bc8b 100644 --- a/c/test/auto_check_sbp_bootload_MsgBootloaderHandshakeResp.c +++ b/c/test/auto_check_sbp_bootload_MsgBootloaderHandshakeResp.c @@ -118,7 +118,9 @@ START_TEST(test_auto_check_sbp_bootload_MsgBootloaderHandshakeResp) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -188,7 +190,9 @@ START_TEST(test_auto_check_sbp_bootload_MsgBootloaderHandshakeResp) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_ext_events_MsgExtEvent.c b/c/test/auto_check_sbp_ext_events_MsgExtEvent.c index 9e7ccdde6a..9bed133968 100644 --- a/c/test/auto_check_sbp_ext_events_MsgExtEvent.c +++ b/c/test/auto_check_sbp_ext_events_MsgExtEvent.c @@ -116,7 +116,9 @@ START_TEST(test_auto_check_sbp_ext_events_MsgExtEvent) { sbp_message_send(&sbp_state, SbpMsgExtEvent, 1781, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_file_io_MsgFileioWriteResp.c b/c/test/auto_check_sbp_file_io_MsgFileioWriteResp.c index 2454478d65..bc916bc6eb 100644 --- a/c/test/auto_check_sbp_file_io_MsgFileioWriteResp.c +++ b/c/test/auto_check_sbp_file_io_MsgFileioWriteResp.c @@ -108,7 +108,9 @@ START_TEST(test_auto_check_sbp_file_io_MsgFileioWriteResp) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_imu_MsgImuAux.c b/c/test/auto_check_sbp_imu_MsgImuAux.c index c3da5814ae..59f3a55e08 100644 --- a/c/test/auto_check_sbp_imu_MsgImuAux.c +++ b/c/test/auto_check_sbp_imu_MsgImuAux.c @@ -111,7 +111,9 @@ START_TEST(test_auto_check_sbp_imu_MsgImuAux) { sbp_message_send(&sbp_state, SbpMsgImuAux, 4660, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_imu_MsgImuRaw.c b/c/test/auto_check_sbp_imu_MsgImuRaw.c index 583075a9dc..4c67f3cb01 100644 --- a/c/test/auto_check_sbp_imu_MsgImuRaw.c +++ b/c/test/auto_check_sbp_imu_MsgImuRaw.c @@ -122,7 +122,9 @@ START_TEST(test_auto_check_sbp_imu_MsgImuRaw) { sbp_message_send(&sbp_state, SbpMsgImuRaw, 4660, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_logging_MsgFwd.c b/c/test/auto_check_sbp_logging_MsgFwd.c index 0f0564def3..f1a832eae6 100644 --- a/c/test/auto_check_sbp_logging_MsgFwd.c +++ b/c/test/auto_check_sbp_logging_MsgFwd.c @@ -144,7 +144,9 @@ START_TEST(test_auto_check_sbp_logging_MsgFwd) { sbp_message_send(&sbp_state, SbpMsgFwd, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_logging_MsgLog.c b/c/test/auto_check_sbp_logging_MsgLog.c index 45c4f23825..c900cfd8f9 100644 --- a/c/test/auto_check_sbp_logging_MsgLog.c +++ b/c/test/auto_check_sbp_logging_MsgLog.c @@ -122,7 +122,9 @@ START_TEST(test_auto_check_sbp_logging_MsgLog) { sbp_message_send(&sbp_state, SbpMsgLog, 2314, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_logging_MsgPrintDep.c b/c/test/auto_check_sbp_logging_MsgPrintDep.c index bfe4b3bc80..31368172a1 100644 --- a/c/test/auto_check_sbp_logging_MsgPrintDep.c +++ b/c/test/auto_check_sbp_logging_MsgPrintDep.c @@ -120,7 +120,9 @@ START_TEST(test_auto_check_sbp_logging_MsgPrintDep) { sbp_message_send(&sbp_state, SbpMsgPrintDep, 8738, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -187,7 +189,9 @@ START_TEST(test_auto_check_sbp_logging_MsgPrintDep) { sbp_message_send(&sbp_state, SbpMsgPrintDep, 8738, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -251,7 +255,9 @@ START_TEST(test_auto_check_sbp_logging_MsgPrintDep) { sbp_message_send(&sbp_state, SbpMsgPrintDep, 8738, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -318,7 +324,9 @@ START_TEST(test_auto_check_sbp_logging_MsgPrintDep) { sbp_message_send(&sbp_state, SbpMsgPrintDep, 8738, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -385,7 +393,9 @@ START_TEST(test_auto_check_sbp_logging_MsgPrintDep) { sbp_message_send(&sbp_state, SbpMsgPrintDep, 8738, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -449,7 +459,9 @@ START_TEST(test_auto_check_sbp_logging_MsgPrintDep) { sbp_message_send(&sbp_state, SbpMsgPrintDep, 8738, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgAgeCorrections.c b/c/test/auto_check_sbp_navigation_MsgAgeCorrections.c index 43cf02b8b2..b64c23fd23 100644 --- a/c/test/auto_check_sbp_navigation_MsgAgeCorrections.c +++ b/c/test/auto_check_sbp_navigation_MsgAgeCorrections.c @@ -110,7 +110,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgAgeCorrections) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgBaselineECEF.c b/c/test/auto_check_sbp_navigation_MsgBaselineECEF.c index cddcc5aa70..db0515228e 100644 --- a/c/test/auto_check_sbp_navigation_MsgBaselineECEF.c +++ b/c/test/auto_check_sbp_navigation_MsgBaselineECEF.c @@ -121,7 +121,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEF) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -217,7 +219,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEF) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -313,7 +317,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEF) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -409,7 +415,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEF) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -505,7 +513,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEF) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgBaselineECEFDepA.c b/c/test/auto_check_sbp_navigation_MsgBaselineECEFDepA.c index ad1b7ffd3f..ea27fb0898 100644 --- a/c/test/auto_check_sbp_navigation_MsgBaselineECEFDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgBaselineECEFDepA.c @@ -121,7 +121,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -218,7 +220,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -315,7 +319,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -412,7 +418,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -509,7 +517,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -606,7 +616,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -703,7 +715,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -800,7 +814,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -897,7 +913,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -994,7 +1012,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1091,7 +1111,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgBaselineNED.c b/c/test/auto_check_sbp_navigation_MsgBaselineNED.c index 14cc3065d4..1f7d29aa76 100644 --- a/c/test/auto_check_sbp_navigation_MsgBaselineNED.c +++ b/c/test/auto_check_sbp_navigation_MsgBaselineNED.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNED) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -226,7 +228,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNED) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -329,7 +333,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNED) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -432,7 +438,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNED) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -535,7 +543,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNED) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgBaselineNEDDepA.c b/c/test/auto_check_sbp_navigation_MsgBaselineNEDDepA.c index 27ce9f6b38..0623278f26 100644 --- a/c/test/auto_check_sbp_navigation_MsgBaselineNEDDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgBaselineNEDDepA.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -228,7 +230,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -333,7 +337,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -438,7 +444,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -543,7 +551,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -648,7 +658,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -753,7 +765,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -858,7 +872,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -963,7 +979,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1068,7 +1086,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1173,7 +1193,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgBaselineNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgDops.c b/c/test/auto_check_sbp_navigation_MsgDops.c index 2cb36903bd..e41bb58051 100644 --- a/c/test/auto_check_sbp_navigation_MsgDops.c +++ b/c/test/auto_check_sbp_navigation_MsgDops.c @@ -120,7 +120,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDops) { sbp_message_send(&sbp_state, SbpMsgDops, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgDopsDepA.c b/c/test/auto_check_sbp_navigation_MsgDopsDepA.c index 77c5303ea8..0f1ef16001 100644 --- a/c/test/auto_check_sbp_navigation_MsgDopsDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgDopsDepA.c @@ -119,7 +119,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -208,7 +210,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -297,7 +301,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -385,7 +391,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { sbp_message_send(&sbp_state, SbpMsgDopsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -473,7 +481,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { sbp_message_send(&sbp_state, SbpMsgDopsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -561,7 +571,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { sbp_message_send(&sbp_state, SbpMsgDopsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -649,7 +661,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { sbp_message_send(&sbp_state, SbpMsgDopsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -737,7 +751,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { sbp_message_send(&sbp_state, SbpMsgDopsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -825,7 +841,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgDopsDepA) { sbp_message_send(&sbp_state, SbpMsgDopsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgGPSTime.c b/c/test/auto_check_sbp_navigation_MsgGPSTime.c index 1210f86536..0e544bf728 100644 --- a/c/test/auto_check_sbp_navigation_MsgGPSTime.c +++ b/c/test/auto_check_sbp_navigation_MsgGPSTime.c @@ -114,7 +114,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTime) { sbp_message_send(&sbp_state, SbpMsgGpsTime, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -187,7 +189,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTime) { sbp_message_send(&sbp_state, SbpMsgGpsTime, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -260,7 +264,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTime) { sbp_message_send(&sbp_state, SbpMsgGpsTime, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -333,7 +339,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTime) { sbp_message_send(&sbp_state, SbpMsgGpsTime, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -406,7 +414,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTime) { sbp_message_send(&sbp_state, SbpMsgGpsTime, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgGPSTimeDepA.c b/c/test/auto_check_sbp_navigation_MsgGPSTimeDepA.c index 5abec7ec33..2432a675dc 100644 --- a/c/test/auto_check_sbp_navigation_MsgGPSTimeDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgGPSTimeDepA.c @@ -114,7 +114,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -188,7 +190,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -262,7 +266,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -336,7 +342,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -410,7 +418,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -485,7 +495,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -561,7 +573,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -637,7 +651,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -712,7 +728,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -788,7 +806,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -864,7 +884,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgGPSTimeGNSS.c b/c/test/auto_check_sbp_navigation_MsgGPSTimeGNSS.c index 9b3707b43d..8309255fb2 100644 --- a/c/test/auto_check_sbp_navigation_MsgGPSTimeGNSS.c +++ b/c/test/auto_check_sbp_navigation_MsgGPSTimeGNSS.c @@ -115,7 +115,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -190,7 +192,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -265,7 +269,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -340,7 +346,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -415,7 +423,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgGPSTimeGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosECEF.c b/c/test/auto_check_sbp_navigation_MsgPosECEF.c index 70022ce4f9..76083d3fe8 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosECEF.c +++ b/c/test/auto_check_sbp_navigation_MsgPosECEF.c @@ -121,7 +121,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEF) { sbp_message_send(&sbp_state, SbpMsgPosEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -216,7 +218,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEF) { sbp_message_send(&sbp_state, SbpMsgPosEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -311,7 +315,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEF) { sbp_message_send(&sbp_state, SbpMsgPosEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -406,7 +412,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEF) { sbp_message_send(&sbp_state, SbpMsgPosEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosECEFCov.c b/c/test/auto_check_sbp_navigation_MsgPosECEFCov.c index 3290f9f094..f11d40dd9c 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosECEFCov.c +++ b/c/test/auto_check_sbp_navigation_MsgPosECEFCov.c @@ -132,7 +132,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFCov) { sbp_message_send(&sbp_state, SbpMsgPosEcefCov, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosECEFCovGNSS.c b/c/test/auto_check_sbp_navigation_MsgPosECEFCovGNSS.c index 77d850044d..159226e857 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosECEFCovGNSS.c +++ b/c/test/auto_check_sbp_navigation_MsgPosECEFCovGNSS.c @@ -134,7 +134,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFCovGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosECEFDepA.c b/c/test/auto_check_sbp_navigation_MsgPosECEFDepA.c index bac88a0dd2..d73e79e09d 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosECEFDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgPosECEFDepA.c @@ -122,7 +122,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -222,7 +224,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -322,7 +326,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -422,7 +428,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -522,7 +530,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -622,7 +632,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -722,7 +734,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -822,7 +836,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -922,7 +938,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1022,7 +1040,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1122,7 +1142,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosECEFGNSS.c b/c/test/auto_check_sbp_navigation_MsgPosECEFGNSS.c index bfed21a0c6..b05d91ada6 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosECEFGNSS.c +++ b/c/test/auto_check_sbp_navigation_MsgPosECEFGNSS.c @@ -122,7 +122,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosECEFGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosLLH.c b/c/test/auto_check_sbp_navigation_MsgPosLLH.c index 2c259cd4c0..d4f31759d7 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosLLH.c +++ b/c/test/auto_check_sbp_navigation_MsgPosLLH.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLH) { sbp_message_send(&sbp_state, SbpMsgPosLlh, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -227,7 +229,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLH) { sbp_message_send(&sbp_state, SbpMsgPosLlh, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -331,7 +335,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLH) { sbp_message_send(&sbp_state, SbpMsgPosLlh, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -435,7 +441,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLH) { sbp_message_send(&sbp_state, SbpMsgPosLlh, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -539,7 +547,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLH) { sbp_message_send(&sbp_state, SbpMsgPosLlh, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosLLHCov.c b/c/test/auto_check_sbp_navigation_MsgPosLLHCov.c index c2d67b3ae5..ed803ff1f7 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosLLHCov.c +++ b/c/test/auto_check_sbp_navigation_MsgPosLLHCov.c @@ -132,7 +132,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHCov) { sbp_message_send(&sbp_state, SbpMsgPosLlhCov, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosLLHDepA.c b/c/test/auto_check_sbp_navigation_MsgPosLLHDepA.c index 761561bafd..a7a8c26ab0 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosLLHDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgPosLLHDepA.c @@ -124,7 +124,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -231,7 +233,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -338,7 +342,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -445,7 +451,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -552,7 +560,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -659,7 +669,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -766,7 +778,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -873,7 +887,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -980,7 +996,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1087,7 +1105,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1194,7 +1214,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLLHDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosLlhCovGnss.c b/c/test/auto_check_sbp_navigation_MsgPosLlhCovGnss.c index ed165fe9a0..b96a8e4863 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosLlhCovGnss.c +++ b/c/test/auto_check_sbp_navigation_MsgPosLlhCovGnss.c @@ -134,7 +134,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLlhCovGnss) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgPosLlhGnss.c b/c/test/auto_check_sbp_navigation_MsgPosLlhGnss.c index 4ca87a2d5d..ad3d9f11e6 100644 --- a/c/test/auto_check_sbp_navigation_MsgPosLlhGnss.c +++ b/c/test/auto_check_sbp_navigation_MsgPosLlhGnss.c @@ -124,7 +124,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgPosLlhGnss) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgProtectionLevel.c b/c/test/auto_check_sbp_navigation_MsgProtectionLevel.c index 8e49271b73..dfa5c8a458 100644 --- a/c/test/auto_check_sbp_navigation_MsgProtectionLevel.c +++ b/c/test/auto_check_sbp_navigation_MsgProtectionLevel.c @@ -122,7 +122,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgProtectionLevel) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgUTCTime.c b/c/test/auto_check_sbp_navigation_MsgUTCTime.c index a1808d95fc..db4137ed70 100644 --- a/c/test/auto_check_sbp_navigation_MsgUTCTime.c +++ b/c/test/auto_check_sbp_navigation_MsgUTCTime.c @@ -124,7 +124,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgUTCTime) { sbp_message_send(&sbp_state, SbpMsgUtcTime, 789, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgUTCTimeGNSS.c b/c/test/auto_check_sbp_navigation_MsgUTCTimeGNSS.c index 231c82e4c3..34f5970e63 100644 --- a/c/test/auto_check_sbp_navigation_MsgUTCTimeGNSS.c +++ b/c/test/auto_check_sbp_navigation_MsgUTCTimeGNSS.c @@ -125,7 +125,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgUTCTimeGNSS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelBody.c b/c/test/auto_check_sbp_navigation_MsgVelBody.c index 9f776ab9ea..66c3fa5fbc 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelBody.c +++ b/c/test/auto_check_sbp_navigation_MsgVelBody.c @@ -131,7 +131,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelBody) { sbp_message_send(&sbp_state, SbpMsgVelBody, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelCog.c b/c/test/auto_check_sbp_navigation_MsgVelCog.c index 3f3c433ba1..21bfac81c8 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelCog.c +++ b/c/test/auto_check_sbp_navigation_MsgVelCog.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelCog) { sbp_message_send(&sbp_state, SbpMsgVelCog, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -225,7 +227,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelCog) { sbp_message_send(&sbp_state, SbpMsgVelCog, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -326,7 +330,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelCog) { sbp_message_send(&sbp_state, SbpMsgVelCog, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelECEF.c b/c/test/auto_check_sbp_navigation_MsgVelECEF.c index 5952c73d36..81e98b4922 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelECEF.c +++ b/c/test/auto_check_sbp_navigation_MsgVelECEF.c @@ -120,7 +120,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEF) { sbp_message_send(&sbp_state, SbpMsgVelEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -214,7 +216,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEF) { sbp_message_send(&sbp_state, SbpMsgVelEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -308,7 +312,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEF) { sbp_message_send(&sbp_state, SbpMsgVelEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -402,7 +408,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEF) { sbp_message_send(&sbp_state, SbpMsgVelEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -496,7 +504,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEF) { sbp_message_send(&sbp_state, SbpMsgVelEcef, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelECEFCov.c b/c/test/auto_check_sbp_navigation_MsgVelECEFCov.c index 25c8dd27db..6d109bfd78 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelECEFCov.c +++ b/c/test/auto_check_sbp_navigation_MsgVelECEFCov.c @@ -131,7 +131,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFCov) { sbp_message_send(&sbp_state, SbpMsgVelEcefCov, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelECEFDepA.c b/c/test/auto_check_sbp_navigation_MsgVelECEFDepA.c index 38247bb84f..8e1fd47660 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelECEFDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgVelECEFDepA.c @@ -121,7 +121,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -217,7 +219,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -313,7 +317,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -409,7 +415,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -505,7 +513,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -601,7 +611,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -697,7 +709,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -793,7 +807,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -889,7 +905,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -985,7 +1003,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1081,7 +1101,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelECEFDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelEcefCovGnss.c b/c/test/auto_check_sbp_navigation_MsgVelEcefCovGnss.c index ae61ce4866..48427075e6 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelEcefCovGnss.c +++ b/c/test/auto_check_sbp_navigation_MsgVelEcefCovGnss.c @@ -133,7 +133,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelEcefCovGnss) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelEcefGnss.c b/c/test/auto_check_sbp_navigation_MsgVelEcefGnss.c index e281b4a582..436729d50f 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelEcefGnss.c +++ b/c/test/auto_check_sbp_navigation_MsgVelEcefGnss.c @@ -121,7 +121,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelEcefGnss) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelNED.c b/c/test/auto_check_sbp_navigation_MsgVelNED.c index 0e5e23bf0e..55bb888ce8 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelNED.c +++ b/c/test/auto_check_sbp_navigation_MsgVelNED.c @@ -122,7 +122,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNED) { sbp_message_send(&sbp_state, SbpMsgVelNed, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -224,7 +226,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNED) { sbp_message_send(&sbp_state, SbpMsgVelNed, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -325,7 +329,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNED) { sbp_message_send(&sbp_state, SbpMsgVelNed, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -426,7 +432,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNED) { sbp_message_send(&sbp_state, SbpMsgVelNed, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -527,7 +535,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNED) { sbp_message_send(&sbp_state, SbpMsgVelNed, 35027, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelNEDCOV.c b/c/test/auto_check_sbp_navigation_MsgVelNEDCOV.c index f134a062ac..91549c33c0 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelNEDCOV.c +++ b/c/test/auto_check_sbp_navigation_MsgVelNEDCOV.c @@ -131,7 +131,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDCOV) { sbp_message_send(&sbp_state, SbpMsgVelNedCov, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelNEDDepA.c b/c/test/auto_check_sbp_navigation_MsgVelNEDDepA.c index 16f5e1b153..9c83a8c164 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelNEDDepA.c +++ b/c/test/auto_check_sbp_navigation_MsgVelNEDDepA.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -226,7 +228,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -329,7 +333,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -432,7 +438,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -535,7 +543,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -638,7 +648,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -741,7 +753,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -844,7 +858,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -947,7 +963,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1050,7 +1068,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1153,7 +1173,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNEDDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelNedCovGnss.c b/c/test/auto_check_sbp_navigation_MsgVelNedCovGnss.c index 66620b048e..9676793ba4 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelNedCovGnss.c +++ b/c/test/auto_check_sbp_navigation_MsgVelNedCovGnss.c @@ -133,7 +133,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNedCovGnss) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_navigation_MsgVelNedGnss.c b/c/test/auto_check_sbp_navigation_MsgVelNedGnss.c index 6eef4a2469..eab86b57a4 100644 --- a/c/test/auto_check_sbp_navigation_MsgVelNedGnss.c +++ b/c/test/auto_check_sbp_navigation_MsgVelNedGnss.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_navigation_MsgVelNedGnss) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgBasePosEcef.c b/c/test/auto_check_sbp_observation_MsgBasePosEcef.c index 15718c446b..c68b73f8f4 100644 --- a/c/test/auto_check_sbp_observation_MsgBasePosEcef.c +++ b/c/test/auto_check_sbp_observation_MsgBasePosEcef.c @@ -113,7 +113,9 @@ START_TEST(test_auto_check_sbp_observation_MsgBasePosEcef) { sbp_message_send(&sbp_state, SbpMsgBasePosEcef, 0, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgEphemerisBds.c b/c/test/auto_check_sbp_observation_MsgEphemerisBds.c index 8553ff6df4..3ce5aa5b3f 100644 --- a/c/test/auto_check_sbp_observation_MsgEphemerisBds.c +++ b/c/test/auto_check_sbp_observation_MsgEphemerisBds.c @@ -181,7 +181,9 @@ START_TEST(test_auto_check_sbp_observation_MsgEphemerisBds) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgEphemerisGLO.c b/c/test/auto_check_sbp_observation_MsgEphemerisGLO.c index 3c369e0b85..1e3468c5df 100644 --- a/c/test/auto_check_sbp_observation_MsgEphemerisGLO.c +++ b/c/test/auto_check_sbp_observation_MsgEphemerisGLO.c @@ -157,7 +157,9 @@ START_TEST(test_auto_check_sbp_observation_MsgEphemerisGLO) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgEphemerisGPS.c b/c/test/auto_check_sbp_observation_MsgEphemerisGPS.c index 3dbe9e2644..44348dfb5d 100644 --- a/c/test/auto_check_sbp_observation_MsgEphemerisGPS.c +++ b/c/test/auto_check_sbp_observation_MsgEphemerisGPS.c @@ -178,7 +178,9 @@ START_TEST(test_auto_check_sbp_observation_MsgEphemerisGPS) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgEphemerisGal.c b/c/test/auto_check_sbp_observation_MsgEphemerisGal.c index 40cda0e266..23355a867e 100644 --- a/c/test/auto_check_sbp_observation_MsgEphemerisGal.c +++ b/c/test/auto_check_sbp_observation_MsgEphemerisGal.c @@ -183,7 +183,9 @@ START_TEST(test_auto_check_sbp_observation_MsgEphemerisGal) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgGloBiases.c b/c/test/auto_check_sbp_observation_MsgGloBiases.c index 77d5cd2586..31310e39a0 100644 --- a/c/test/auto_check_sbp_observation_MsgGloBiases.c +++ b/c/test/auto_check_sbp_observation_MsgGloBiases.c @@ -115,7 +115,9 @@ START_TEST(test_auto_check_sbp_observation_MsgGloBiases) { sbp_message_send(&sbp_state, SbpMsgGloBiases, 0, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgObs.c b/c/test/auto_check_sbp_observation_MsgObs.c index 154a7c388f..924e60d27e 100644 --- a/c/test/auto_check_sbp_observation_MsgObs.c +++ b/c/test/auto_check_sbp_observation_MsgObs.c @@ -413,7 +413,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObs) { sbp_message_send(&sbp_state, SbpMsgObs, 61569, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1191,7 +1193,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObs) { sbp_message_send(&sbp_state, SbpMsgObs, 61569, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgObsDepB.c b/c/test/auto_check_sbp_observation_MsgObsDepB.c index 4058db96da..1d674c51c5 100644 --- a/c/test/auto_check_sbp_observation_MsgObsDepB.c +++ b/c/test/auto_check_sbp_observation_MsgObsDepB.c @@ -216,7 +216,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepB) { sbp_message_send(&sbp_state, SbpMsgObsDepB, 55286, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -586,7 +588,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepB) { sbp_message_send(&sbp_state, SbpMsgObsDepB, 55286, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -884,7 +888,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepB) { sbp_message_send(&sbp_state, SbpMsgObsDepB, 55286, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1253,7 +1259,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepB) { sbp_message_send(&sbp_state, SbpMsgObsDepB, 55286, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1551,7 +1559,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepB) { sbp_message_send(&sbp_state, SbpMsgObsDepB, 55286, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgObsDepC.c b/c/test/auto_check_sbp_observation_MsgObsDepC.c index e5c05f25e9..a0a67c31b4 100644 --- a/c/test/auto_check_sbp_observation_MsgObsDepC.c +++ b/c/test/auto_check_sbp_observation_MsgObsDepC.c @@ -199,7 +199,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepC) { sbp_message_send(&sbp_state, SbpMsgObsDepC, 38982, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -527,7 +529,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepC) { sbp_message_send(&sbp_state, SbpMsgObsDepC, 38982, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -808,7 +812,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepC) { sbp_message_send(&sbp_state, SbpMsgObsDepC, 0, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1136,7 +1142,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepC) { sbp_message_send(&sbp_state, SbpMsgObsDepC, 0, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1417,7 +1425,9 @@ START_TEST(test_auto_check_sbp_observation_MsgObsDepC) { sbp_message_send(&sbp_state, SbpMsgObsDepC, 38982, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgOsr.c b/c/test/auto_check_sbp_observation_MsgOsr.c index fd378d3b43..aac5b77473 100644 --- a/c/test/auto_check_sbp_observation_MsgOsr.c +++ b/c/test/auto_check_sbp_observation_MsgOsr.c @@ -372,7 +372,9 @@ START_TEST(test_auto_check_sbp_observation_MsgOsr) { sbp_message_send(&sbp_state, SbpMsgOsr, 0, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_MsgSvAzEl.c b/c/test/auto_check_sbp_observation_MsgSvAzEl.c index 04a7edff6c..e75c72d5cb 100644 --- a/c/test/auto_check_sbp_observation_MsgSvAzEl.c +++ b/c/test/auto_check_sbp_observation_MsgSvAzEl.c @@ -379,7 +379,9 @@ START_TEST(test_auto_check_sbp_observation_MsgSvAzEl) { sbp_message_send(&sbp_state, SbpMsgSvAzEl, 31183, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_msgEphemerisDepB.c b/c/test/auto_check_sbp_observation_msgEphemerisDepB.c index 4b704866ff..b5918ff2d3 100644 --- a/c/test/auto_check_sbp_observation_msgEphemerisDepB.c +++ b/c/test/auto_check_sbp_observation_msgEphemerisDepB.c @@ -173,7 +173,9 @@ START_TEST(test_auto_check_sbp_observation_msgEphemerisDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -441,7 +443,9 @@ START_TEST(test_auto_check_sbp_observation_msgEphemerisDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -709,7 +713,9 @@ START_TEST(test_auto_check_sbp_observation_msgEphemerisDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -977,7 +983,9 @@ START_TEST(test_auto_check_sbp_observation_msgEphemerisDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1245,7 +1253,9 @@ START_TEST(test_auto_check_sbp_observation_msgEphemerisDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1513,7 +1523,9 @@ START_TEST(test_auto_check_sbp_observation_msgEphemerisDepB) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_msgEphemerisQzss.c b/c/test/auto_check_sbp_observation_msgEphemerisQzss.c index 396a74fd4a..b4ade0e513 100644 --- a/c/test/auto_check_sbp_observation_msgEphemerisQzss.c +++ b/c/test/auto_check_sbp_observation_msgEphemerisQzss.c @@ -178,7 +178,9 @@ START_TEST(test_auto_check_sbp_observation_msgEphemerisQzss) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_observation_msgObsDepA.c b/c/test/auto_check_sbp_observation_msgObsDepA.c index 5881252023..704696eb55 100644 --- a/c/test/auto_check_sbp_observation_msgObsDepA.c +++ b/c/test/auto_check_sbp_observation_msgObsDepA.c @@ -204,7 +204,9 @@ START_TEST(test_auto_check_sbp_observation_msgObsDepA) { sbp_message_send(&sbp_state, SbpMsgObsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -499,7 +501,9 @@ START_TEST(test_auto_check_sbp_observation_msgObsDepA) { sbp_message_send(&sbp_state, SbpMsgObsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -692,7 +696,9 @@ START_TEST(test_auto_check_sbp_observation_msgObsDepA) { sbp_message_send(&sbp_state, SbpMsgObsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -987,7 +993,9 @@ START_TEST(test_auto_check_sbp_observation_msgObsDepA) { sbp_message_send(&sbp_state, SbpMsgObsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1154,7 +1162,9 @@ START_TEST(test_auto_check_sbp_observation_msgObsDepA) { sbp_message_send(&sbp_state, SbpMsgObsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1441,7 +1451,9 @@ START_TEST(test_auto_check_sbp_observation_msgObsDepA) { sbp_message_send(&sbp_state, SbpMsgObsDepA, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_orientation_MsgAngularRate.c b/c/test/auto_check_sbp_orientation_MsgAngularRate.c index 33bb90110d..b2dacb0ebc 100644 --- a/c/test/auto_check_sbp_orientation_MsgAngularRate.c +++ b/c/test/auto_check_sbp_orientation_MsgAngularRate.c @@ -117,7 +117,9 @@ START_TEST(test_auto_check_sbp_orientation_MsgAngularRate) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_orientation_MsgOrientEuler.c b/c/test/auto_check_sbp_orientation_MsgOrientEuler.c index 53d8122bd5..19fb9ccc9b 100644 --- a/c/test/auto_check_sbp_orientation_MsgOrientEuler.c +++ b/c/test/auto_check_sbp_orientation_MsgOrientEuler.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_orientation_MsgOrientEuler) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_orientation_MsgOrientQuat.c b/c/test/auto_check_sbp_orientation_MsgOrientQuat.c index baa2e89af2..12aebf27ef 100644 --- a/c/test/auto_check_sbp_orientation_MsgOrientQuat.c +++ b/c/test/auto_check_sbp_orientation_MsgOrientQuat.c @@ -127,7 +127,9 @@ START_TEST(test_auto_check_sbp_orientation_MsgOrientQuat) { sbp_message_send(&sbp_state, SbpMsgOrientQuat, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_piksi_MsgDeviceMonitor.c b/c/test/auto_check_sbp_piksi_MsgDeviceMonitor.c index aac1964a08..09b8e42448 100644 --- a/c/test/auto_check_sbp_piksi_MsgDeviceMonitor.c +++ b/c/test/auto_check_sbp_piksi_MsgDeviceMonitor.c @@ -117,7 +117,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgDeviceMonitor) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -201,7 +203,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgDeviceMonitor) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -285,7 +289,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgDeviceMonitor) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -369,7 +375,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgDeviceMonitor) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -453,7 +461,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgDeviceMonitor) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_piksi_MsgIarState.c b/c/test/auto_check_sbp_piksi_MsgIarState.c index 9279fcea2a..785a9340fc 100644 --- a/c/test/auto_check_sbp_piksi_MsgIarState.c +++ b/c/test/auto_check_sbp_piksi_MsgIarState.c @@ -108,7 +108,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgIarState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -160,7 +162,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgIarState) { sbp_message_send(&sbp_state, SbpMsgIarState, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -212,7 +216,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgIarState) { sbp_message_send(&sbp_state, SbpMsgIarState, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -264,7 +270,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgIarState) { sbp_message_send(&sbp_state, SbpMsgIarState, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -316,7 +324,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgIarState) { sbp_message_send(&sbp_state, SbpMsgIarState, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -368,7 +378,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgIarState) { sbp_message_send(&sbp_state, SbpMsgIarState, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -420,7 +432,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgIarState) { sbp_message_send(&sbp_state, SbpMsgIarState, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_piksi_MsgNetworkBandwidthUsage.c b/c/test/auto_check_sbp_piksi_MsgNetworkBandwidthUsage.c index 79d12b80d0..3e2d6c5ce2 100644 --- a/c/test/auto_check_sbp_piksi_MsgNetworkBandwidthUsage.c +++ b/c/test/auto_check_sbp_piksi_MsgNetworkBandwidthUsage.c @@ -207,7 +207,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgNetworkBandwidthUsage) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_piksi_MsgThreadState.c b/c/test/auto_check_sbp_piksi_MsgThreadState.c index 8956ed1e4f..3efeb11a1d 100644 --- a/c/test/auto_check_sbp_piksi_MsgThreadState.c +++ b/c/test/auto_check_sbp_piksi_MsgThreadState.c @@ -119,7 +119,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -200,7 +202,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -281,7 +285,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -362,7 +368,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -445,7 +453,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -527,7 +537,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -608,7 +620,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -689,7 +703,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -770,7 +786,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -852,7 +870,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -936,7 +956,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgThreadState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_piksi_MsgUartState.c b/c/test/auto_check_sbp_piksi_MsgUartState.c index d46fbabe86..3eef1a0438 100644 --- a/c/test/auto_check_sbp_piksi_MsgUartState.c +++ b/c/test/auto_check_sbp_piksi_MsgUartState.c @@ -154,7 +154,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -386,7 +388,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_piksi_MsgUartStateDepA.c b/c/test/auto_check_sbp_piksi_MsgUartStateDepA.c index c00f7093d6..c73a1325d7 100644 --- a/c/test/auto_check_sbp_piksi_MsgUartStateDepA.c +++ b/c/test/auto_check_sbp_piksi_MsgUartStateDepA.c @@ -154,7 +154,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -386,7 +388,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -618,7 +622,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -850,7 +856,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1082,7 +1090,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1314,7 +1324,9 @@ START_TEST(test_auto_check_sbp_piksi_MsgUartStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_sbas_MsgSbasRaw.c b/c/test/auto_check_sbp_sbas_MsgSbasRaw.c index 614a6d2c67..8eef6cc7cc 100644 --- a/c/test/auto_check_sbp_sbas_MsgSbasRaw.c +++ b/c/test/auto_check_sbp_sbas_MsgSbasRaw.c @@ -169,7 +169,9 @@ START_TEST(test_auto_check_sbp_sbas_MsgSbasRaw) { sbp_message_send(&sbp_state, SbpMsgSbasRaw, 51228, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexDone.c b/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexDone.c index a265182d63..62d88297fa 100644 --- a/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexDone.c +++ b/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexDone.c @@ -106,7 +106,9 @@ START_TEST(test_auto_check_sbp_settings_MsgSettingsReadByIndexDone) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexResp.c b/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexResp.c index 9ad35ed0ed..c6177d09e0 100644 --- a/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexResp.c +++ b/c/test/auto_check_sbp_settings_MsgSettingsReadByIndexResp.c @@ -130,7 +130,9 @@ START_TEST(test_auto_check_sbp_settings_MsgSettingsReadByIndexResp) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -223,7 +225,9 @@ START_TEST(test_auto_check_sbp_settings_MsgSettingsReadByIndexResp) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -319,7 +323,9 @@ START_TEST(test_auto_check_sbp_settings_MsgSettingsReadByIndexResp) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -409,7 +415,9 @@ START_TEST(test_auto_check_sbp_settings_MsgSettingsReadByIndexResp) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -502,7 +510,9 @@ START_TEST(test_auto_check_sbp_settings_MsgSettingsReadByIndexResp) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgDgnssStatus.c b/c/test/auto_check_sbp_system_MsgDgnssStatus.c index e84096b6b2..e6e7e225b7 100644 --- a/c/test/auto_check_sbp_system_MsgDgnssStatus.c +++ b/c/test/auto_check_sbp_system_MsgDgnssStatus.c @@ -122,7 +122,9 @@ START_TEST(test_auto_check_sbp_system_MsgDgnssStatus) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgGroupMeta.c b/c/test/auto_check_sbp_system_MsgGroupMeta.c index c2f4f1f5f1..b4013959a5 100644 --- a/c/test/auto_check_sbp_system_MsgGroupMeta.c +++ b/c/test/auto_check_sbp_system_MsgGroupMeta.c @@ -118,7 +118,9 @@ START_TEST(test_auto_check_sbp_system_MsgGroupMeta) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -227,7 +229,9 @@ START_TEST(test_auto_check_sbp_system_MsgGroupMeta) { sbp_message_send(&sbp_state, SbpMsgGroupMeta, 789, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgHeartbeat.c b/c/test/auto_check_sbp_system_MsgHeartbeat.c index 17d64e7698..c991088c12 100644 --- a/c/test/auto_check_sbp_system_MsgHeartbeat.c +++ b/c/test/auto_check_sbp_system_MsgHeartbeat.c @@ -108,7 +108,9 @@ START_TEST(test_auto_check_sbp_system_MsgHeartbeat) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -161,7 +163,9 @@ START_TEST(test_auto_check_sbp_system_MsgHeartbeat) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgInsStatus.c b/c/test/auto_check_sbp_system_MsgInsStatus.c index 9fa559ebef..c6bbebe6fe 100644 --- a/c/test/auto_check_sbp_system_MsgInsStatus.c +++ b/c/test/auto_check_sbp_system_MsgInsStatus.c @@ -107,7 +107,9 @@ START_TEST(test_auto_check_sbp_system_MsgInsStatus) { sbp_message_send(&sbp_state, SbpMsgInsStatus, 789, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgInsUpdates.c b/c/test/auto_check_sbp_system_MsgInsUpdates.c index 1628dc0887..2a1eeb954a 100644 --- a/c/test/auto_check_sbp_system_MsgInsUpdates.c +++ b/c/test/auto_check_sbp_system_MsgInsUpdates.c @@ -120,7 +120,9 @@ START_TEST(test_auto_check_sbp_system_MsgInsUpdates) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgSensorAidEvent.c b/c/test/auto_check_sbp_system_MsgSensorAidEvent.c index e86150492f..ee269606df 100644 --- a/c/test/auto_check_sbp_system_MsgSensorAidEvent.c +++ b/c/test/auto_check_sbp_system_MsgSensorAidEvent.c @@ -123,7 +123,9 @@ START_TEST(test_auto_check_sbp_system_MsgSensorAidEvent) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgStartup.c b/c/test/auto_check_sbp_system_MsgStartup.c index 78bdc70d7e..1b777f271d 100644 --- a/c/test/auto_check_sbp_system_MsgStartup.c +++ b/c/test/auto_check_sbp_system_MsgStartup.c @@ -111,7 +111,9 @@ START_TEST(test_auto_check_sbp_system_MsgStartup) { sbp_message_send(&sbp_state, SbpMsgStartup, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -176,7 +178,9 @@ START_TEST(test_auto_check_sbp_system_MsgStartup) { sbp_message_send(&sbp_state, SbpMsgStartup, 1219, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_system_MsgStatusJournal.c b/c/test/auto_check_sbp_system_MsgStatusJournal.c new file mode 100644 index 0000000000..60dc6c6ac2 --- /dev/null +++ b/c/test/auto_check_sbp_system_MsgStatusJournal.c @@ -0,0 +1,397 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include // for debugging +#include // for malloc + +static struct { + u32 n_callbacks_logged; + u16 sender_id; + sbp_msg_type_t msg_type; + sbp_msg_t msg; + void *context; +} last_msg; + +static u32 dummy_wr = 0; +static u32 dummy_rd = 0; +static u8 dummy_buff[1024]; +static void *last_io_context; + +static void *DUMMY_MEMORY_FOR_CALLBACKS = (void *)0xdeadbeef; +static void *DUMMY_MEMORY_FOR_IO = (void *)0xdead0000; + +static void dummy_reset() { + dummy_rd = dummy_wr = 0; + memset(dummy_buff, 0, sizeof(dummy_buff)); +} + +static s32 dummy_write(u8 *buff, u32 n, void *context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(dummy_buff + dummy_wr, buff, real_n); + dummy_wr += real_n; + return (s32)real_n; +} + +static s32 dummy_read(u8 *buff, u32 n, void *context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(buff, dummy_buff + dummy_rd, real_n); + dummy_rd += real_n; + return (s32)real_n; +} + +static void logging_reset() { memset(&last_msg, 0, sizeof(last_msg)); } + +static void msg_callback(u16 sender_id, sbp_msg_type_t msg_type, + const sbp_msg_t *msg, void *context) { + last_msg.n_callbacks_logged++; + last_msg.sender_id = sender_id; + last_msg.msg_type = msg_type; + last_msg.msg = *msg; + last_msg.context = context; +} + +START_TEST(test_auto_check_sbp_system_MsgStatusJournal) { + static sbp_msg_callbacks_node_t n; + + // State of the SBP message parser. + // Must be statically allocated. + sbp_state_t sbp_state; + + // + // Run tests: + // + // Test successful parsing of a message + { + // SBP parser state must be initialized before sbp_process is called. + // We re-initialize before every test so that callbacks for the same message + // types can be + // allocated multiple times across different tests. + sbp_state_init(&sbp_state); + + sbp_state_set_io_context(&sbp_state, &DUMMY_MEMORY_FOR_IO); + + logging_reset(); + + sbp_callback_register(&sbp_state, 0xFFFD, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 253, 255, 211, 136, 33, 1, 0, 1, 4, 100, 0, 0, 0, + 16, 146, 16, 0, 0, 6, 0, 1, 13, 186, 19, 0, 0, 6, + 0, 1, 14, 184, 34, 0, 0, 6, 0, 1, 15, 113, 119, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.status_journal.journal[0].report.component = 6; + + test_msg.status_journal.journal[0].report.generic = 1; + + test_msg.status_journal.journal[0].report.specific = 13; + + test_msg.status_journal.journal[0].uptime = 4242; + + test_msg.status_journal.journal[1].report.component = 6; + + test_msg.status_journal.journal[1].report.generic = 1; + + test_msg.status_journal.journal[1].report.specific = 14; + + test_msg.status_journal.journal[1].uptime = 5050; + + test_msg.status_journal.journal[2].report.component = 6; + + test_msg.status_journal.journal[2].report.generic = 1; + + test_msg.status_journal.journal[2].report.specific = 15; + + test_msg.status_journal.journal[2].uptime = 8888; + + test_msg.status_journal.n_journal = 3; + + test_msg.status_journal.reporting_system = 1; + + test_msg.status_journal.sbp_version = 1025; + + test_msg.status_journal.sequence_descriptor = 16; + + test_msg.status_journal.total_status_reports = 100; + + sbp_message_send(&sbp_state, SbpMsgStatusJournal, 35027, &test_msg, + &dummy_write); + + ck_assert_msg(dummy_wr == sizeof(encoded_frame), + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); + ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, + "frame was not encoded properly"); + + while (dummy_rd < dummy_wr) { + ck_assert_msg(sbp_process(&sbp_state, &dummy_read) >= SBP_OK, + "sbp_process threw an error!"); + } + + ck_assert_msg(last_msg.n_callbacks_logged == 1, + "msg_callback: one callback should have been logged"); + ck_assert_msg(last_msg.sender_id == 35027, + "msg_callback: sender_id decoded incorrectly"); + + ck_assert_msg( + sbp_message_cmp(SbpMsgStatusJournal, &last_msg.msg, &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg(last_msg.msg.status_journal.journal[0].report.component == 6, + "incorrect value for " + "last_msg.msg.status_journal.journal[0].report.component, " + "expected 6, is %d", + last_msg.msg.status_journal.journal[0].report.component); + + ck_assert_msg(last_msg.msg.status_journal.journal[0].report.generic == 1, + "incorrect value for " + "last_msg.msg.status_journal.journal[0].report.generic, " + "expected 1, is %d", + last_msg.msg.status_journal.journal[0].report.generic); + + ck_assert_msg(last_msg.msg.status_journal.journal[0].report.specific == 13, + "incorrect value for " + "last_msg.msg.status_journal.journal[0].report.specific, " + "expected 13, is %d", + last_msg.msg.status_journal.journal[0].report.specific); + + ck_assert_msg( + last_msg.msg.status_journal.journal[0].uptime == 4242, + "incorrect value for last_msg.msg.status_journal.journal[0].uptime, " + "expected 4242, is %d", + last_msg.msg.status_journal.journal[0].uptime); + + ck_assert_msg(last_msg.msg.status_journal.journal[1].report.component == 6, + "incorrect value for " + "last_msg.msg.status_journal.journal[1].report.component, " + "expected 6, is %d", + last_msg.msg.status_journal.journal[1].report.component); + + ck_assert_msg(last_msg.msg.status_journal.journal[1].report.generic == 1, + "incorrect value for " + "last_msg.msg.status_journal.journal[1].report.generic, " + "expected 1, is %d", + last_msg.msg.status_journal.journal[1].report.generic); + + ck_assert_msg(last_msg.msg.status_journal.journal[1].report.specific == 14, + "incorrect value for " + "last_msg.msg.status_journal.journal[1].report.specific, " + "expected 14, is %d", + last_msg.msg.status_journal.journal[1].report.specific); + + ck_assert_msg( + last_msg.msg.status_journal.journal[1].uptime == 5050, + "incorrect value for last_msg.msg.status_journal.journal[1].uptime, " + "expected 5050, is %d", + last_msg.msg.status_journal.journal[1].uptime); + + ck_assert_msg(last_msg.msg.status_journal.journal[2].report.component == 6, + "incorrect value for " + "last_msg.msg.status_journal.journal[2].report.component, " + "expected 6, is %d", + last_msg.msg.status_journal.journal[2].report.component); + + ck_assert_msg(last_msg.msg.status_journal.journal[2].report.generic == 1, + "incorrect value for " + "last_msg.msg.status_journal.journal[2].report.generic, " + "expected 1, is %d", + last_msg.msg.status_journal.journal[2].report.generic); + + ck_assert_msg(last_msg.msg.status_journal.journal[2].report.specific == 15, + "incorrect value for " + "last_msg.msg.status_journal.journal[2].report.specific, " + "expected 15, is %d", + last_msg.msg.status_journal.journal[2].report.specific); + + ck_assert_msg( + last_msg.msg.status_journal.journal[2].uptime == 8888, + "incorrect value for last_msg.msg.status_journal.journal[2].uptime, " + "expected 8888, is %d", + last_msg.msg.status_journal.journal[2].uptime); + + ck_assert_msg(last_msg.msg.status_journal.n_journal == 3, + "incorrect value for last_msg.msg.status_journal.n_journal, " + "expected 3, is %d", + last_msg.msg.status_journal.n_journal); + + ck_assert_msg( + last_msg.msg.status_journal.reporting_system == 1, + "incorrect value for last_msg.msg.status_journal.reporting_system, " + "expected 1, is %d", + last_msg.msg.status_journal.reporting_system); + + ck_assert_msg( + last_msg.msg.status_journal.sbp_version == 1025, + "incorrect value for last_msg.msg.status_journal.sbp_version, expected " + "1025, is %d", + last_msg.msg.status_journal.sbp_version); + + ck_assert_msg( + last_msg.msg.status_journal.sequence_descriptor == 16, + "incorrect value for last_msg.msg.status_journal.sequence_descriptor, " + "expected 16, is %d", + last_msg.msg.status_journal.sequence_descriptor); + + ck_assert_msg( + last_msg.msg.status_journal.total_status_reports == 100, + "incorrect value for last_msg.msg.status_journal.total_status_reports, " + "expected 100, is %d", + last_msg.msg.status_journal.total_status_reports); + } + // Test successful parsing of a message + { + // SBP parser state must be initialized before sbp_process is called. + // We re-initialize before every test so that callbacks for the same message + // types can be + // allocated multiple times across different tests. + sbp_state_init(&sbp_state); + + sbp_state_set_io_context(&sbp_state, &DUMMY_MEMORY_FOR_IO); + + logging_reset(); + + sbp_callback_register(&sbp_state, 0xFFFD, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 253, 255, 211, 136, 17, 1, 0, 1, 4, 100, 0, 0, + 0, 16, 146, 16, 0, 0, 6, 0, 1, 13, 144, 121, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.status_journal.journal[0].report.component = 6; + + test_msg.status_journal.journal[0].report.generic = 1; + + test_msg.status_journal.journal[0].report.specific = 13; + + test_msg.status_journal.journal[0].uptime = 4242; + + test_msg.status_journal.n_journal = 1; + + test_msg.status_journal.reporting_system = 1; + + test_msg.status_journal.sbp_version = 1025; + + test_msg.status_journal.sequence_descriptor = 16; + + test_msg.status_journal.total_status_reports = 100; + + sbp_message_send(&sbp_state, SbpMsgStatusJournal, 35027, &test_msg, + &dummy_write); + + ck_assert_msg(dummy_wr == sizeof(encoded_frame), + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); + ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, + "frame was not encoded properly"); + + while (dummy_rd < dummy_wr) { + ck_assert_msg(sbp_process(&sbp_state, &dummy_read) >= SBP_OK, + "sbp_process threw an error!"); + } + + ck_assert_msg(last_msg.n_callbacks_logged == 1, + "msg_callback: one callback should have been logged"); + ck_assert_msg(last_msg.sender_id == 35027, + "msg_callback: sender_id decoded incorrectly"); + + ck_assert_msg( + sbp_message_cmp(SbpMsgStatusJournal, &last_msg.msg, &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg(last_msg.msg.status_journal.journal[0].report.component == 6, + "incorrect value for " + "last_msg.msg.status_journal.journal[0].report.component, " + "expected 6, is %d", + last_msg.msg.status_journal.journal[0].report.component); + + ck_assert_msg(last_msg.msg.status_journal.journal[0].report.generic == 1, + "incorrect value for " + "last_msg.msg.status_journal.journal[0].report.generic, " + "expected 1, is %d", + last_msg.msg.status_journal.journal[0].report.generic); + + ck_assert_msg(last_msg.msg.status_journal.journal[0].report.specific == 13, + "incorrect value for " + "last_msg.msg.status_journal.journal[0].report.specific, " + "expected 13, is %d", + last_msg.msg.status_journal.journal[0].report.specific); + + ck_assert_msg( + last_msg.msg.status_journal.journal[0].uptime == 4242, + "incorrect value for last_msg.msg.status_journal.journal[0].uptime, " + "expected 4242, is %d", + last_msg.msg.status_journal.journal[0].uptime); + + ck_assert_msg(last_msg.msg.status_journal.n_journal == 1, + "incorrect value for last_msg.msg.status_journal.n_journal, " + "expected 1, is %d", + last_msg.msg.status_journal.n_journal); + + ck_assert_msg( + last_msg.msg.status_journal.reporting_system == 1, + "incorrect value for last_msg.msg.status_journal.reporting_system, " + "expected 1, is %d", + last_msg.msg.status_journal.reporting_system); + + ck_assert_msg( + last_msg.msg.status_journal.sbp_version == 1025, + "incorrect value for last_msg.msg.status_journal.sbp_version, expected " + "1025, is %d", + last_msg.msg.status_journal.sbp_version); + + ck_assert_msg( + last_msg.msg.status_journal.sequence_descriptor == 16, + "incorrect value for last_msg.msg.status_journal.sequence_descriptor, " + "expected 16, is %d", + last_msg.msg.status_journal.sequence_descriptor); + + ck_assert_msg( + last_msg.msg.status_journal.total_status_reports == 100, + "incorrect value for last_msg.msg.status_journal.total_status_reports, " + "expected 100, is %d", + last_msg.msg.status_journal.total_status_reports); + } +} +END_TEST + +Suite *auto_check_sbp_system_MsgStatusJournal_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: auto_check_sbp_system_MsgStatusJournal"); + TCase *tc_acq = + tcase_create("Automated_Suite_auto_check_sbp_system_MsgStatusJournal"); + tcase_add_test(tc_acq, test_auto_check_sbp_system_MsgStatusJournal); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/auto_check_sbp_tracking_MsgMeasurementState.c b/c/test/auto_check_sbp_tracking_MsgMeasurementState.c index 6f0898ece1..49ad060d97 100644 --- a/c/test/auto_check_sbp_tracking_MsgMeasurementState.c +++ b/c/test/auto_check_sbp_tracking_MsgMeasurementState.c @@ -598,7 +598,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgMeasurementState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_tracking_MsgTrackingState.c b/c/test/auto_check_sbp_tracking_MsgTrackingState.c index 379176c010..8b61fc01bf 100644 --- a/c/test/auto_check_sbp_tracking_MsgTrackingState.c +++ b/c/test/auto_check_sbp_tracking_MsgTrackingState.c @@ -225,7 +225,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -738,7 +740,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1251,7 +1255,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1764,7 +1770,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -2277,7 +2285,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingState) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_tracking_MsgTrackingStateDetailedDep.c b/c/test/auto_check_sbp_tracking_MsgTrackingStateDetailedDep.c index b0507b2c68..27b83f077e 100644 --- a/c/test/auto_check_sbp_tracking_MsgTrackingStateDetailedDep.c +++ b/c/test/auto_check_sbp_tracking_MsgTrackingStateDetailedDep.c @@ -159,7 +159,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingStateDetailedDep) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -409,7 +411,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingStateDetailedDep) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -659,7 +663,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingStateDetailedDep) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -909,7 +915,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingStateDetailedDep) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1159,7 +1167,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgTrackingStateDetailedDep) { &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_tracking_MsgtrackingStateDepA.c b/c/test/auto_check_sbp_tracking_MsgtrackingStateDepA.c index c9a4c933d3..e3d8668884 100644 --- a/c/test/auto_check_sbp_tracking_MsgtrackingStateDepA.c +++ b/c/test/auto_check_sbp_tracking_MsgtrackingStateDepA.c @@ -179,7 +179,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgtrackingStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -512,7 +514,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgtrackingStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -845,7 +849,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgtrackingStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1178,7 +1184,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgtrackingStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1511,7 +1519,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgtrackingStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); @@ -1844,7 +1854,9 @@ START_TEST(test_auto_check_sbp_tracking_MsgtrackingStateDepA) { &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/auto_check_sbp_vehicle_MsgOdometry.c b/c/test/auto_check_sbp_vehicle_MsgOdometry.c index b6b677c189..311e1f1105 100644 --- a/c/test/auto_check_sbp_vehicle_MsgOdometry.c +++ b/c/test/auto_check_sbp_vehicle_MsgOdometry.c @@ -111,7 +111,9 @@ START_TEST(test_auto_check_sbp_vehicle_MsgOdometry) { sbp_message_send(&sbp_state, SbpMsgOdometry, 66, &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, " + "actual: %zu)", + sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/c/test/check_main.c b/c/test/check_main.c index f335468b54..7110851069 100644 --- a/c/test/check_main.c +++ b/c/test/check_main.c @@ -107,6 +107,7 @@ int main(void) { srunner_add_suite(sr, auto_check_sbp_system_MsgInsUpdates_suite()); srunner_add_suite(sr, auto_check_sbp_system_MsgSensorAidEvent_suite()); srunner_add_suite(sr, auto_check_sbp_system_MsgStartup_suite()); + srunner_add_suite(sr, auto_check_sbp_system_MsgStatusJournal_suite()); srunner_add_suite(sr, auto_check_sbp_tracking_MsgMeasurementState_suite()); srunner_add_suite(sr, auto_check_sbp_tracking_MsgTrackingState_suite()); srunner_add_suite( diff --git a/c/test/check_main_legacy.c b/c/test/check_main_legacy.c index c48441f8a7..c3ea95d7ae 100644 --- a/c/test/check_main_legacy.c +++ b/c/test/check_main_legacy.c @@ -139,6 +139,7 @@ int main(void) { srunner_add_suite(sr, legacy_auto_check_sbp_system_MsgInsUpdates_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_system_MsgSensorAidEvent_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_system_MsgStartup_suite()); + srunner_add_suite(sr, legacy_auto_check_sbp_system_MsgStatusJournal_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_tracking_MsgMeasurementState_suite()); srunner_add_suite(sr, diff --git a/c/test/check_suites.h b/c/test/check_suites.h index 990ed28748..23044867a1 100644 --- a/c/test/check_suites.h +++ b/c/test/check_suites.h @@ -97,6 +97,7 @@ Suite* auto_check_sbp_system_MsgInsStatus_suite(void); Suite* auto_check_sbp_system_MsgInsUpdates_suite(void); Suite* auto_check_sbp_system_MsgSensorAidEvent_suite(void); Suite* auto_check_sbp_system_MsgStartup_suite(void); +Suite* auto_check_sbp_system_MsgStatusJournal_suite(void); Suite* auto_check_sbp_tracking_MsgMeasurementState_suite(void); Suite* auto_check_sbp_tracking_MsgTrackingState_suite(void); Suite* auto_check_sbp_tracking_MsgTrackingStateDetailedDep_suite(void); diff --git a/c/test/check_suites_legacy.h b/c/test/check_suites_legacy.h index a9a05993df..2fa45ab464 100644 --- a/c/test/check_suites_legacy.h +++ b/c/test/check_suites_legacy.h @@ -97,6 +97,7 @@ Suite* legacy_auto_check_sbp_system_MsgInsStatus_suite(void); Suite* legacy_auto_check_sbp_system_MsgInsUpdates_suite(void); Suite* legacy_auto_check_sbp_system_MsgSensorAidEvent_suite(void); Suite* legacy_auto_check_sbp_system_MsgStartup_suite(void); +Suite* legacy_auto_check_sbp_system_MsgStatusJournal_suite(void); Suite* legacy_auto_check_sbp_tracking_MsgMeasurementState_suite(void); Suite* legacy_auto_check_sbp_tracking_MsgTrackingState_suite(void); Suite* legacy_auto_check_sbp_tracking_MsgTrackingStateDetailedDep_suite(void); diff --git a/c/test/cpp/auto_check_sbp_system_MsgStatusJournal.cc b/c/test/cpp/auto_check_sbp_system_MsgStatusJournal.cc new file mode 100644 index 0000000000..25e80933c6 --- /dev/null +++ b/c/test/cpp/auto_check_sbp_system_MsgStatusJournal.cc @@ -0,0 +1,294 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_system_MsgStatusJournal0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_system_MsgStatusJournal0() + : ::testing::Test(), + sbp::State(), + sbp::IReader(), + sbp::IWriter(), + sbp::MessageHandler(this), + last_msg_(), + last_msg_len_(), + last_sender_id_(), + n_callbacks_logged_(), + dummy_wr_(), + dummy_rd_(), + dummy_buff_() { + set_reader(this); + set_writer(this); + } + + s32 read(uint8_t *buf, const uint32_t n) override { + uint32_t real_n = n; + memcpy(buf, dummy_buff_ + dummy_rd_, real_n); + dummy_rd_ += real_n; + return (s32)real_n; + } + + s32 write(const uint8_t *buf, uint32_t n) override { + uint32_t real_n = n; + memcpy(dummy_buff_ + dummy_wr_, buf, real_n); + dummy_wr_ += real_n; + return (s32)real_n; + } + + protected: + void handle_sbp_msg(uint16_t sender_id, + const sbp_msg_status_journal_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_status_journal_t last_msg_; + uint8_t last_msg_len_; + uint16_t last_sender_id_; + size_t n_callbacks_logged_; + uint32_t dummy_wr_; + uint32_t dummy_rd_; + uint8_t dummy_buff_[1024]; +}; + +TEST_F(Test_auto_check_sbp_system_MsgStatusJournal0, Test) { + uint8_t encoded_frame[] = { + 85, 253, 255, 211, 136, 33, 1, 0, 1, 4, 100, 0, 0, 0, + 16, 146, 16, 0, 0, 6, 0, 1, 13, 186, 19, 0, 0, 6, + 0, 1, 14, 184, 34, 0, 0, 6, 0, 1, 15, 113, 119, + }; + + sbp_msg_status_journal_t test_msg{}; + + test_msg.journal[0].report.component = 6; + test_msg.journal[0].report.generic = 1; + test_msg.journal[0].report.specific = 13; + test_msg.journal[0].uptime = 4242; + + test_msg.journal[1].report.component = 6; + test_msg.journal[1].report.generic = 1; + test_msg.journal[1].report.specific = 14; + test_msg.journal[1].uptime = 5050; + + test_msg.journal[2].report.component = 6; + test_msg.journal[2].report.generic = 1; + test_msg.journal[2].report.specific = 15; + test_msg.journal[2].uptime = 8888; + test_msg.n_journal = 3; + test_msg.reporting_system = 1; + test_msg.sbp_version = 1025; + test_msg.sequence_descriptor = 16; + test_msg.total_status_reports = 100; + + EXPECT_EQ(send_message(35027, test_msg), SBP_OK); + + EXPECT_EQ(dummy_wr_, sizeof(encoded_frame)); + EXPECT_EQ(memcmp(dummy_buff_, encoded_frame, sizeof(encoded_frame)), 0); + + while (dummy_rd_ < dummy_wr_) { + process(); + } + + EXPECT_EQ(n_callbacks_logged_, 1); + EXPECT_EQ(last_sender_id_, 35027); + EXPECT_EQ(last_msg_, test_msg); + EXPECT_EQ(last_msg_.journal[0].report.component, 6) + << "incorrect value for last_msg_.journal[0].report.component, expected " + "6, is " + << last_msg_.journal[0].report.component; + EXPECT_EQ(last_msg_.journal[0].report.generic, 1) + << "incorrect value for last_msg_.journal[0].report.generic, expected 1, " + "is " + << last_msg_.journal[0].report.generic; + EXPECT_EQ(last_msg_.journal[0].report.specific, 13) + << "incorrect value for last_msg_.journal[0].report.specific, expected " + "13, is " + << last_msg_.journal[0].report.specific; + EXPECT_EQ(last_msg_.journal[0].uptime, 4242) + << "incorrect value for last_msg_.journal[0].uptime, expected 4242, is " + << last_msg_.journal[0].uptime; + EXPECT_EQ(last_msg_.journal[1].report.component, 6) + << "incorrect value for last_msg_.journal[1].report.component, expected " + "6, is " + << last_msg_.journal[1].report.component; + EXPECT_EQ(last_msg_.journal[1].report.generic, 1) + << "incorrect value for last_msg_.journal[1].report.generic, expected 1, " + "is " + << last_msg_.journal[1].report.generic; + EXPECT_EQ(last_msg_.journal[1].report.specific, 14) + << "incorrect value for last_msg_.journal[1].report.specific, expected " + "14, is " + << last_msg_.journal[1].report.specific; + EXPECT_EQ(last_msg_.journal[1].uptime, 5050) + << "incorrect value for last_msg_.journal[1].uptime, expected 5050, is " + << last_msg_.journal[1].uptime; + EXPECT_EQ(last_msg_.journal[2].report.component, 6) + << "incorrect value for last_msg_.journal[2].report.component, expected " + "6, is " + << last_msg_.journal[2].report.component; + EXPECT_EQ(last_msg_.journal[2].report.generic, 1) + << "incorrect value for last_msg_.journal[2].report.generic, expected 1, " + "is " + << last_msg_.journal[2].report.generic; + EXPECT_EQ(last_msg_.journal[2].report.specific, 15) + << "incorrect value for last_msg_.journal[2].report.specific, expected " + "15, is " + << last_msg_.journal[2].report.specific; + EXPECT_EQ(last_msg_.journal[2].uptime, 8888) + << "incorrect value for last_msg_.journal[2].uptime, expected 8888, is " + << last_msg_.journal[2].uptime; + EXPECT_EQ(last_msg_.n_journal, 3) + << "incorrect value for last_msg_.n_journal, expected 3, is " + << last_msg_.n_journal; + EXPECT_EQ(last_msg_.reporting_system, 1) + << "incorrect value for last_msg_.reporting_system, expected 1, is " + << last_msg_.reporting_system; + EXPECT_EQ(last_msg_.sbp_version, 1025) + << "incorrect value for last_msg_.sbp_version, expected 1025, is " + << last_msg_.sbp_version; + EXPECT_EQ(last_msg_.sequence_descriptor, 16) + << "incorrect value for last_msg_.sequence_descriptor, expected 16, is " + << last_msg_.sequence_descriptor; + EXPECT_EQ(last_msg_.total_status_reports, 100) + << "incorrect value for last_msg_.total_status_reports, expected 100, is " + << last_msg_.total_status_reports; +} +class Test_auto_check_sbp_system_MsgStatusJournal1 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_system_MsgStatusJournal1() + : ::testing::Test(), + sbp::State(), + sbp::IReader(), + sbp::IWriter(), + sbp::MessageHandler(this), + last_msg_(), + last_msg_len_(), + last_sender_id_(), + n_callbacks_logged_(), + dummy_wr_(), + dummy_rd_(), + dummy_buff_() { + set_reader(this); + set_writer(this); + } + + s32 read(uint8_t *buf, const uint32_t n) override { + uint32_t real_n = n; + memcpy(buf, dummy_buff_ + dummy_rd_, real_n); + dummy_rd_ += real_n; + return (s32)real_n; + } + + s32 write(const uint8_t *buf, uint32_t n) override { + uint32_t real_n = n; + memcpy(dummy_buff_ + dummy_wr_, buf, real_n); + dummy_wr_ += real_n; + return (s32)real_n; + } + + protected: + void handle_sbp_msg(uint16_t sender_id, + const sbp_msg_status_journal_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_status_journal_t last_msg_; + uint8_t last_msg_len_; + uint16_t last_sender_id_; + size_t n_callbacks_logged_; + uint32_t dummy_wr_; + uint32_t dummy_rd_; + uint8_t dummy_buff_[1024]; +}; + +TEST_F(Test_auto_check_sbp_system_MsgStatusJournal1, Test) { + uint8_t encoded_frame[] = { + 85, 253, 255, 211, 136, 17, 1, 0, 1, 4, 100, 0, 0, + 0, 16, 146, 16, 0, 0, 6, 0, 1, 13, 144, 121, + }; + + sbp_msg_status_journal_t test_msg{}; + + test_msg.journal[0].report.component = 6; + test_msg.journal[0].report.generic = 1; + test_msg.journal[0].report.specific = 13; + test_msg.journal[0].uptime = 4242; + test_msg.n_journal = 1; + test_msg.reporting_system = 1; + test_msg.sbp_version = 1025; + test_msg.sequence_descriptor = 16; + test_msg.total_status_reports = 100; + + EXPECT_EQ(send_message(35027, test_msg), SBP_OK); + + EXPECT_EQ(dummy_wr_, sizeof(encoded_frame)); + EXPECT_EQ(memcmp(dummy_buff_, encoded_frame, sizeof(encoded_frame)), 0); + + while (dummy_rd_ < dummy_wr_) { + process(); + } + + EXPECT_EQ(n_callbacks_logged_, 1); + EXPECT_EQ(last_sender_id_, 35027); + EXPECT_EQ(last_msg_, test_msg); + EXPECT_EQ(last_msg_.journal[0].report.component, 6) + << "incorrect value for last_msg_.journal[0].report.component, expected " + "6, is " + << last_msg_.journal[0].report.component; + EXPECT_EQ(last_msg_.journal[0].report.generic, 1) + << "incorrect value for last_msg_.journal[0].report.generic, expected 1, " + "is " + << last_msg_.journal[0].report.generic; + EXPECT_EQ(last_msg_.journal[0].report.specific, 13) + << "incorrect value for last_msg_.journal[0].report.specific, expected " + "13, is " + << last_msg_.journal[0].report.specific; + EXPECT_EQ(last_msg_.journal[0].uptime, 4242) + << "incorrect value for last_msg_.journal[0].uptime, expected 4242, is " + << last_msg_.journal[0].uptime; + EXPECT_EQ(last_msg_.n_journal, 1) + << "incorrect value for last_msg_.n_journal, expected 1, is " + << last_msg_.n_journal; + EXPECT_EQ(last_msg_.reporting_system, 1) + << "incorrect value for last_msg_.reporting_system, expected 1, is " + << last_msg_.reporting_system; + EXPECT_EQ(last_msg_.sbp_version, 1025) + << "incorrect value for last_msg_.sbp_version, expected 1025, is " + << last_msg_.sbp_version; + EXPECT_EQ(last_msg_.sequence_descriptor, 16) + << "incorrect value for last_msg_.sequence_descriptor, expected 16, is " + << last_msg_.sequence_descriptor; + EXPECT_EQ(last_msg_.total_status_reports, 100) + << "incorrect value for last_msg_.total_status_reports, expected 100, is " + << last_msg_.total_status_reports; +} diff --git a/c/test/legacy/auto_check_sbp_system_MsgStatusJournal.c b/c/test/legacy/auto_check_sbp_system_MsgStatusJournal.c new file mode 100644 index 0000000000..96c4de158e --- /dev/null +++ b/c/test/legacy/auto_check_sbp_system_MsgStatusJournal.c @@ -0,0 +1,416 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include // for debugging +#include // for malloc + +static struct { + u32 n_callbacks_logged; + u16 sender_id; + u8 len; + u8 msg[SBP_MAX_PAYLOAD_LEN]; + void* context; +} last_msg; + +static struct { + u32 n_callbacks_logged; + u16 sender_id; + u16 msg_type; + u8 msg_len; + u8 msg[SBP_MAX_PAYLOAD_LEN]; + u16 frame_len; + u8 frame[SBP_MAX_FRAME_LEN]; + void* context; +} last_frame; + +static u32 dummy_wr = 0; +static u32 dummy_rd = 0; +static u8 dummy_buff[1024]; +static void* last_io_context; + +static int DUMMY_MEMORY_FOR_CALLBACKS = 0xdeadbeef; +static int DUMMY_MEMORY_FOR_IO = 0xdead0000; + +static void dummy_reset() { + dummy_rd = dummy_wr = 0; + memset(dummy_buff, 0, sizeof(dummy_buff)); +} + +static s32 dummy_write(u8* buff, u32 n, void* context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(dummy_buff + dummy_wr, buff, real_n); + dummy_wr += real_n; + return real_n; +} + +static s32 dummy_read(u8* buff, u32 n, void* context) { + last_io_context = context; + u32 real_n = n; //(dummy_n > n) ? n : dummy_n; + memcpy(buff, dummy_buff + dummy_rd, real_n); + dummy_rd += real_n; + return real_n; +} + +static void logging_reset() { + memset(&last_msg, 0, sizeof(last_msg)); + memset(&last_frame, 0, sizeof(last_frame)); +} + +static void msg_callback(u16 sender_id, u8 len, u8 msg[], void* context) { + last_msg.n_callbacks_logged++; + last_msg.sender_id = sender_id; + last_msg.len = len; + last_msg.context = context; + memcpy(last_msg.msg, msg, len); +} + +static void frame_callback(u16 sender_id, u16 msg_type, u8 msg_len, u8 msg[], + u16 frame_len, u8 frame[], void* context) { + last_frame.n_callbacks_logged++; + last_frame.sender_id = sender_id; + last_frame.msg_type = msg_type; + last_frame.msg_len = msg_len; + memcpy(last_frame.msg, msg, msg_len); + last_frame.frame_len = frame_len; + memcpy(last_frame.frame, frame, frame_len); + last_frame.context = context; +} + +START_TEST(test_legacy_auto_check_sbp_system_MsgStatusJournal) { + static sbp_msg_callbacks_node_t n; + static sbp_msg_callbacks_node_t n2; + + // State of the SBP message parser. + // Must be statically allocated. + sbp_state_t sbp_state; + + // + // Run tests: + // + // Test successful parsing of a message + { + // SBP parser state must be initialized before sbp_process is called. + // We re-initialize before every test so that callbacks for the same message + // types can be + // allocated multiple times across different tests. + sbp_state_init(&sbp_state); + + sbp_state_set_io_context(&sbp_state, &DUMMY_MEMORY_FOR_IO); + + logging_reset(); + + sbp_payload_callback_register(&sbp_state, 0xFFFD, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 0xFFFD, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 253, 255, 211, 136, 33, 1, 0, 1, 4, 100, 0, 0, 0, + 16, 146, 16, 0, 0, 6, 0, 1, 13, 186, 19, 0, 0, 6, + 0, 1, 14, 184, 34, 0, 0, 6, 0, 1, 15, 113, 119, + }; + + dummy_reset(); + + u8 test_msg_storage[SBP_MAX_PAYLOAD_LEN]; + memset(test_msg_storage, 0, sizeof(test_msg_storage)); + u8 test_msg_len = 0; + msg_status_journal_t* test_msg = (msg_status_journal_t*)test_msg_storage; + test_msg_len = sizeof(*test_msg); + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->journal[0]); + } + test_msg->journal[0].report.component = 6; + test_msg->journal[0].report.generic = 1; + test_msg->journal[0].report.specific = 13; + test_msg->journal[0].uptime = 4242; + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->journal[0]); + } + test_msg->journal[1].report.component = 6; + test_msg->journal[1].report.generic = 1; + test_msg->journal[1].report.specific = 14; + test_msg->journal[1].uptime = 5050; + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->journal[0]); + } + test_msg->journal[2].report.component = 6; + test_msg->journal[2].report.generic = 1; + test_msg->journal[2].report.specific = 15; + test_msg->journal[2].uptime = 8888; + test_msg->reporting_system = 1; + test_msg->sbp_version = 1025; + test_msg->sequence_descriptor = 16; + test_msg->total_status_reports = 100; + sbp_payload_send(&sbp_state, 0xFFFD, 35027, test_msg_len, test_msg_storage, + &dummy_write); + + ck_assert_msg( + test_msg_len == sizeof(encoded_frame) - 8, + "Test message has not been generated correctly, or the encoded frame " + "from the spec is badly defined. Check your test spec"); + + ck_assert_msg(dummy_wr == sizeof(encoded_frame), + "not enough data was written to dummy_buff"); + ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, + "frame was not encoded properly"); + + while (dummy_rd < dummy_wr) { + ck_assert_msg(sbp_process(&sbp_state, &dummy_read) >= SBP_OK, + "sbp_process threw an error!"); + } + + ck_assert_msg(last_msg.n_callbacks_logged == 1, + "msg_callback: one callback should have been logged"); + ck_assert_msg(last_msg.sender_id == 35027, + "msg_callback: sender_id decoded incorrectly"); + ck_assert_msg(last_msg.len == sizeof(encoded_frame) - 8, + "msg_callback: len decoded incorrectly"); + ck_assert_msg( + memcmp(last_msg.msg, encoded_frame + 6, sizeof(encoded_frame) - 8) == 0, + "msg_callback: test data decoded incorrectly"); + ck_assert_msg(last_msg.context == &DUMMY_MEMORY_FOR_CALLBACKS, + "frame_callback: context pointer incorrectly passed"); + + ck_assert_msg(last_frame.n_callbacks_logged == 1, + "frame_callback: one callback should have been logged"); + ck_assert_msg(last_frame.sender_id == 35027, + "frame_callback: sender_id decoded incorrectly"); + ck_assert_msg(last_frame.msg_type == 0xFFFD, + "frame_callback: msg_type decoded incorrectly"); + ck_assert_msg(last_frame.msg_len == sizeof(encoded_frame) - 8, + "frame_callback: msg_len decoded incorrectly"); + ck_assert_msg(memcmp(last_frame.msg, encoded_frame + 6, + sizeof(encoded_frame) - 8) == 0, + "frame_callback: test data decoded incorrectly"); + ck_assert_msg(last_frame.frame_len == sizeof(encoded_frame), + "frame_callback: frame_len decoded incorrectly"); + ck_assert_msg( + memcmp(last_frame.frame, encoded_frame, sizeof(encoded_frame)) == 0, + "frame_callback: frame decoded incorrectly"); + ck_assert_msg(last_frame.context == &DUMMY_MEMORY_FOR_CALLBACKS, + "frame_callback: context pointer incorrectly passed"); + + // Cast to expected message type - the +6 byte offset is where the payload + // starts + msg_status_journal_t* check_msg = + (msg_status_journal_t*)((void*)last_msg.msg); + // Run tests against fields + ck_assert_msg(check_msg != 0, "stub to prevent warnings if msg isn't used"); + ck_assert_msg( + check_msg->journal[0].report.component == 6, + "incorrect value for journal[0].report.component, expected 6, is %d", + check_msg->journal[0].report.component); + ck_assert_msg( + check_msg->journal[0].report.generic == 1, + "incorrect value for journal[0].report.generic, expected 1, is %d", + check_msg->journal[0].report.generic); + ck_assert_msg( + check_msg->journal[0].report.specific == 13, + "incorrect value for journal[0].report.specific, expected 13, is %d", + check_msg->journal[0].report.specific); + ck_assert_msg(check_msg->journal[0].uptime == 4242, + "incorrect value for journal[0].uptime, expected 4242, is %d", + check_msg->journal[0].uptime); + ck_assert_msg( + check_msg->journal[1].report.component == 6, + "incorrect value for journal[1].report.component, expected 6, is %d", + check_msg->journal[1].report.component); + ck_assert_msg( + check_msg->journal[1].report.generic == 1, + "incorrect value for journal[1].report.generic, expected 1, is %d", + check_msg->journal[1].report.generic); + ck_assert_msg( + check_msg->journal[1].report.specific == 14, + "incorrect value for journal[1].report.specific, expected 14, is %d", + check_msg->journal[1].report.specific); + ck_assert_msg(check_msg->journal[1].uptime == 5050, + "incorrect value for journal[1].uptime, expected 5050, is %d", + check_msg->journal[1].uptime); + ck_assert_msg( + check_msg->journal[2].report.component == 6, + "incorrect value for journal[2].report.component, expected 6, is %d", + check_msg->journal[2].report.component); + ck_assert_msg( + check_msg->journal[2].report.generic == 1, + "incorrect value for journal[2].report.generic, expected 1, is %d", + check_msg->journal[2].report.generic); + ck_assert_msg( + check_msg->journal[2].report.specific == 15, + "incorrect value for journal[2].report.specific, expected 15, is %d", + check_msg->journal[2].report.specific); + ck_assert_msg(check_msg->journal[2].uptime == 8888, + "incorrect value for journal[2].uptime, expected 8888, is %d", + check_msg->journal[2].uptime); + ck_assert_msg(check_msg->reporting_system == 1, + "incorrect value for reporting_system, expected 1, is %d", + check_msg->reporting_system); + ck_assert_msg(check_msg->sbp_version == 1025, + "incorrect value for sbp_version, expected 1025, is %d", + check_msg->sbp_version); + ck_assert_msg(check_msg->sequence_descriptor == 16, + "incorrect value for sequence_descriptor, expected 16, is %d", + check_msg->sequence_descriptor); + ck_assert_msg( + check_msg->total_status_reports == 100, + "incorrect value for total_status_reports, expected 100, is %d", + check_msg->total_status_reports); + } + // Test successful parsing of a message + { + // SBP parser state must be initialized before sbp_process is called. + // We re-initialize before every test so that callbacks for the same message + // types can be + // allocated multiple times across different tests. + sbp_state_init(&sbp_state); + + sbp_state_set_io_context(&sbp_state, &DUMMY_MEMORY_FOR_IO); + + logging_reset(); + + sbp_payload_callback_register(&sbp_state, 0xFFFD, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 0xFFFD, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 253, 255, 211, 136, 17, 1, 0, 1, 4, 100, 0, 0, + 0, 16, 146, 16, 0, 0, 6, 0, 1, 13, 144, 121, + }; + + dummy_reset(); + + u8 test_msg_storage[SBP_MAX_PAYLOAD_LEN]; + memset(test_msg_storage, 0, sizeof(test_msg_storage)); + u8 test_msg_len = 0; + msg_status_journal_t* test_msg = (msg_status_journal_t*)test_msg_storage; + test_msg_len = sizeof(*test_msg); + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->journal[0]); + } + test_msg->journal[0].report.component = 6; + test_msg->journal[0].report.generic = 1; + test_msg->journal[0].report.specific = 13; + test_msg->journal[0].uptime = 4242; + test_msg->reporting_system = 1; + test_msg->sbp_version = 1025; + test_msg->sequence_descriptor = 16; + test_msg->total_status_reports = 100; + sbp_payload_send(&sbp_state, 0xFFFD, 35027, test_msg_len, test_msg_storage, + &dummy_write); + + ck_assert_msg( + test_msg_len == sizeof(encoded_frame) - 8, + "Test message has not been generated correctly, or the encoded frame " + "from the spec is badly defined. Check your test spec"); + + ck_assert_msg(dummy_wr == sizeof(encoded_frame), + "not enough data was written to dummy_buff"); + ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, + "frame was not encoded properly"); + + while (dummy_rd < dummy_wr) { + ck_assert_msg(sbp_process(&sbp_state, &dummy_read) >= SBP_OK, + "sbp_process threw an error!"); + } + + ck_assert_msg(last_msg.n_callbacks_logged == 1, + "msg_callback: one callback should have been logged"); + ck_assert_msg(last_msg.sender_id == 35027, + "msg_callback: sender_id decoded incorrectly"); + ck_assert_msg(last_msg.len == sizeof(encoded_frame) - 8, + "msg_callback: len decoded incorrectly"); + ck_assert_msg( + memcmp(last_msg.msg, encoded_frame + 6, sizeof(encoded_frame) - 8) == 0, + "msg_callback: test data decoded incorrectly"); + ck_assert_msg(last_msg.context == &DUMMY_MEMORY_FOR_CALLBACKS, + "frame_callback: context pointer incorrectly passed"); + + ck_assert_msg(last_frame.n_callbacks_logged == 1, + "frame_callback: one callback should have been logged"); + ck_assert_msg(last_frame.sender_id == 35027, + "frame_callback: sender_id decoded incorrectly"); + ck_assert_msg(last_frame.msg_type == 0xFFFD, + "frame_callback: msg_type decoded incorrectly"); + ck_assert_msg(last_frame.msg_len == sizeof(encoded_frame) - 8, + "frame_callback: msg_len decoded incorrectly"); + ck_assert_msg(memcmp(last_frame.msg, encoded_frame + 6, + sizeof(encoded_frame) - 8) == 0, + "frame_callback: test data decoded incorrectly"); + ck_assert_msg(last_frame.frame_len == sizeof(encoded_frame), + "frame_callback: frame_len decoded incorrectly"); + ck_assert_msg( + memcmp(last_frame.frame, encoded_frame, sizeof(encoded_frame)) == 0, + "frame_callback: frame decoded incorrectly"); + ck_assert_msg(last_frame.context == &DUMMY_MEMORY_FOR_CALLBACKS, + "frame_callback: context pointer incorrectly passed"); + + // Cast to expected message type - the +6 byte offset is where the payload + // starts + msg_status_journal_t* check_msg = + (msg_status_journal_t*)((void*)last_msg.msg); + // Run tests against fields + ck_assert_msg(check_msg != 0, "stub to prevent warnings if msg isn't used"); + ck_assert_msg( + check_msg->journal[0].report.component == 6, + "incorrect value for journal[0].report.component, expected 6, is %d", + check_msg->journal[0].report.component); + ck_assert_msg( + check_msg->journal[0].report.generic == 1, + "incorrect value for journal[0].report.generic, expected 1, is %d", + check_msg->journal[0].report.generic); + ck_assert_msg( + check_msg->journal[0].report.specific == 13, + "incorrect value for journal[0].report.specific, expected 13, is %d", + check_msg->journal[0].report.specific); + ck_assert_msg(check_msg->journal[0].uptime == 4242, + "incorrect value for journal[0].uptime, expected 4242, is %d", + check_msg->journal[0].uptime); + ck_assert_msg(check_msg->reporting_system == 1, + "incorrect value for reporting_system, expected 1, is %d", + check_msg->reporting_system); + ck_assert_msg(check_msg->sbp_version == 1025, + "incorrect value for sbp_version, expected 1025, is %d", + check_msg->sbp_version); + ck_assert_msg(check_msg->sequence_descriptor == 16, + "incorrect value for sequence_descriptor, expected 16, is %d", + check_msg->sequence_descriptor); + ck_assert_msg( + check_msg->total_status_reports == 100, + "incorrect value for total_status_reports, expected 100, is %d", + check_msg->total_status_reports); + } +} +END_TEST + +Suite* legacy_auto_check_sbp_system_MsgStatusJournal_suite(void) { + Suite* s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_system_MsgStatusJournal"); + TCase* tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_system_MsgStatusJournal"); + tcase_add_test(tc_acq, test_legacy_auto_check_sbp_system_MsgStatusJournal); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/cpp/auto_check_sbp_system_MsgStatusJournal.cc b/c/test/legacy/cpp/auto_check_sbp_system_MsgStatusJournal.cc new file mode 100644 index 0000000000..cd75588cd1 --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_system_MsgStatusJournal.cc @@ -0,0 +1,299 @@ +/* + * Copyright (C) 2015-2021 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ + +// This file was auto-generated from +// spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_system_MsgStatusJournal0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_system_MsgStatusJournal0() + : ::testing::Test(), + sbp::State(), + sbp::IReader(), + sbp::IWriter(), + sbp::PayloadHandler(this), + last_msg_storage_(), + last_msg_(reinterpret_cast(last_msg_storage_)), + last_msg_len_(), + last_sender_id_(), + n_callbacks_logged_(), + dummy_wr_(), + dummy_rd_(), + dummy_buff_() { + set_reader(this); + set_writer(this); + } + + s32 read(uint8_t *buf, const uint32_t n) override { + uint32_t real_n = n; + memcpy(buf, dummy_buff_ + dummy_rd_, real_n); + dummy_rd_ += real_n; + return (s32)real_n; + } + + s32 write(const uint8_t *buf, uint32_t n) override { + uint32_t real_n = n; + memcpy(dummy_buff_ + dummy_wr_, buf, real_n); + dummy_wr_ += real_n; + return (s32)real_n; + } + + protected: + void handle_sbp_msg(uint16_t sender_id, uint8_t message_length, + const msg_status_journal_t &msg) override { + memcpy(last_msg_storage_, &msg, message_length); + last_msg_len_ = message_length; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + uint8_t last_msg_storage_[SBP_MAX_PAYLOAD_LEN]; + msg_status_journal_t *last_msg_; + uint8_t last_msg_len_; + uint16_t last_sender_id_; + size_t n_callbacks_logged_; + uint32_t dummy_wr_; + uint32_t dummy_rd_; + uint8_t dummy_buff_[1024]; +}; + +TEST_F(Test_legacy_auto_check_sbp_system_MsgStatusJournal0, Test) { + uint8_t encoded_frame[] = { + 85, 253, 255, 211, 136, 33, 1, 0, 1, 4, 100, 0, 0, 0, + 16, 146, 16, 0, 0, 6, 0, 1, 13, 186, 19, 0, 0, 6, + 0, 1, 14, 184, 34, 0, 0, 6, 0, 1, 15, 113, 119, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_status_journal_t *test_msg = (msg_status_journal_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->journal[0])); + } + test_msg->journal[0].report.component = 6; + test_msg->journal[0].report.generic = 1; + test_msg->journal[0].report.specific = 13; + test_msg->journal[0].uptime = 4242; + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->journal[0])); + } + test_msg->journal[1].report.component = 6; + test_msg->journal[1].report.generic = 1; + test_msg->journal[1].report.specific = 14; + test_msg->journal[1].uptime = 5050; + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->journal[0])); + } + test_msg->journal[2].report.component = 6; + test_msg->journal[2].report.generic = 1; + test_msg->journal[2].report.specific = 15; + test_msg->journal[2].uptime = 8888; + test_msg->reporting_system = 1; + test_msg->sbp_version = 1025; + test_msg->sequence_descriptor = 16; + test_msg->total_status_reports = 100; + + EXPECT_EQ(send_message(0xFFFD, 35027, test_msg_len, test_msg_storage), + SBP_OK); + + EXPECT_EQ(dummy_wr_, sizeof(encoded_frame)); + EXPECT_EQ(memcmp(dummy_buff_, encoded_frame, sizeof(encoded_frame)), 0); + + while (dummy_rd_ < dummy_wr_) { + process(); + } + + EXPECT_EQ(n_callbacks_logged_, 1); + EXPECT_EQ(last_sender_id_, 35027); + EXPECT_EQ(last_msg_len_, test_msg_len); + EXPECT_EQ(last_msg_->journal[0].report.component, 6) + << "incorrect value for journal[0].report.component, expected 6, is " + << last_msg_->journal[0].report.component; + EXPECT_EQ(last_msg_->journal[0].report.generic, 1) + << "incorrect value for journal[0].report.generic, expected 1, is " + << last_msg_->journal[0].report.generic; + EXPECT_EQ(last_msg_->journal[0].report.specific, 13) + << "incorrect value for journal[0].report.specific, expected 13, is " + << last_msg_->journal[0].report.specific; + EXPECT_EQ(last_msg_->journal[0].uptime, 4242) + << "incorrect value for journal[0].uptime, expected 4242, is " + << last_msg_->journal[0].uptime; + EXPECT_EQ(last_msg_->journal[1].report.component, 6) + << "incorrect value for journal[1].report.component, expected 6, is " + << last_msg_->journal[1].report.component; + EXPECT_EQ(last_msg_->journal[1].report.generic, 1) + << "incorrect value for journal[1].report.generic, expected 1, is " + << last_msg_->journal[1].report.generic; + EXPECT_EQ(last_msg_->journal[1].report.specific, 14) + << "incorrect value for journal[1].report.specific, expected 14, is " + << last_msg_->journal[1].report.specific; + EXPECT_EQ(last_msg_->journal[1].uptime, 5050) + << "incorrect value for journal[1].uptime, expected 5050, is " + << last_msg_->journal[1].uptime; + EXPECT_EQ(last_msg_->journal[2].report.component, 6) + << "incorrect value for journal[2].report.component, expected 6, is " + << last_msg_->journal[2].report.component; + EXPECT_EQ(last_msg_->journal[2].report.generic, 1) + << "incorrect value for journal[2].report.generic, expected 1, is " + << last_msg_->journal[2].report.generic; + EXPECT_EQ(last_msg_->journal[2].report.specific, 15) + << "incorrect value for journal[2].report.specific, expected 15, is " + << last_msg_->journal[2].report.specific; + EXPECT_EQ(last_msg_->journal[2].uptime, 8888) + << "incorrect value for journal[2].uptime, expected 8888, is " + << last_msg_->journal[2].uptime; + EXPECT_EQ(last_msg_->reporting_system, 1) + << "incorrect value for reporting_system, expected 1, is " + << last_msg_->reporting_system; + EXPECT_EQ(last_msg_->sbp_version, 1025) + << "incorrect value for sbp_version, expected 1025, is " + << last_msg_->sbp_version; + EXPECT_EQ(last_msg_->sequence_descriptor, 16) + << "incorrect value for sequence_descriptor, expected 16, is " + << last_msg_->sequence_descriptor; + EXPECT_EQ(last_msg_->total_status_reports, 100) + << "incorrect value for total_status_reports, expected 100, is " + << last_msg_->total_status_reports; +} +class Test_legacy_auto_check_sbp_system_MsgStatusJournal1 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_system_MsgStatusJournal1() + : ::testing::Test(), + sbp::State(), + sbp::IReader(), + sbp::IWriter(), + sbp::PayloadHandler(this), + last_msg_storage_(), + last_msg_(reinterpret_cast(last_msg_storage_)), + last_msg_len_(), + last_sender_id_(), + n_callbacks_logged_(), + dummy_wr_(), + dummy_rd_(), + dummy_buff_() { + set_reader(this); + set_writer(this); + } + + s32 read(uint8_t *buf, const uint32_t n) override { + uint32_t real_n = n; + memcpy(buf, dummy_buff_ + dummy_rd_, real_n); + dummy_rd_ += real_n; + return (s32)real_n; + } + + s32 write(const uint8_t *buf, uint32_t n) override { + uint32_t real_n = n; + memcpy(dummy_buff_ + dummy_wr_, buf, real_n); + dummy_wr_ += real_n; + return (s32)real_n; + } + + protected: + void handle_sbp_msg(uint16_t sender_id, uint8_t message_length, + const msg_status_journal_t &msg) override { + memcpy(last_msg_storage_, &msg, message_length); + last_msg_len_ = message_length; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + uint8_t last_msg_storage_[SBP_MAX_PAYLOAD_LEN]; + msg_status_journal_t *last_msg_; + uint8_t last_msg_len_; + uint16_t last_sender_id_; + size_t n_callbacks_logged_; + uint32_t dummy_wr_; + uint32_t dummy_rd_; + uint8_t dummy_buff_[1024]; +}; + +TEST_F(Test_legacy_auto_check_sbp_system_MsgStatusJournal1, Test) { + uint8_t encoded_frame[] = { + 85, 253, 255, 211, 136, 17, 1, 0, 1, 4, 100, 0, 0, + 0, 16, 146, 16, 0, 0, 6, 0, 1, 13, 144, 121, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_status_journal_t *test_msg = (msg_status_journal_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + if (sizeof(test_msg->journal) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->journal[0])); + } + test_msg->journal[0].report.component = 6; + test_msg->journal[0].report.generic = 1; + test_msg->journal[0].report.specific = 13; + test_msg->journal[0].uptime = 4242; + test_msg->reporting_system = 1; + test_msg->sbp_version = 1025; + test_msg->sequence_descriptor = 16; + test_msg->total_status_reports = 100; + + EXPECT_EQ(send_message(0xFFFD, 35027, test_msg_len, test_msg_storage), + SBP_OK); + + EXPECT_EQ(dummy_wr_, sizeof(encoded_frame)); + EXPECT_EQ(memcmp(dummy_buff_, encoded_frame, sizeof(encoded_frame)), 0); + + while (dummy_rd_ < dummy_wr_) { + process(); + } + + EXPECT_EQ(n_callbacks_logged_, 1); + EXPECT_EQ(last_sender_id_, 35027); + EXPECT_EQ(last_msg_len_, test_msg_len); + EXPECT_EQ(last_msg_->journal[0].report.component, 6) + << "incorrect value for journal[0].report.component, expected 6, is " + << last_msg_->journal[0].report.component; + EXPECT_EQ(last_msg_->journal[0].report.generic, 1) + << "incorrect value for journal[0].report.generic, expected 1, is " + << last_msg_->journal[0].report.generic; + EXPECT_EQ(last_msg_->journal[0].report.specific, 13) + << "incorrect value for journal[0].report.specific, expected 13, is " + << last_msg_->journal[0].report.specific; + EXPECT_EQ(last_msg_->journal[0].uptime, 4242) + << "incorrect value for journal[0].uptime, expected 4242, is " + << last_msg_->journal[0].uptime; + EXPECT_EQ(last_msg_->reporting_system, 1) + << "incorrect value for reporting_system, expected 1, is " + << last_msg_->reporting_system; + EXPECT_EQ(last_msg_->sbp_version, 1025) + << "incorrect value for sbp_version, expected 1025, is " + << last_msg_->sbp_version; + EXPECT_EQ(last_msg_->sequence_descriptor, 16) + << "incorrect value for sequence_descriptor, expected 16, is " + << last_msg_->sequence_descriptor; + EXPECT_EQ(last_msg_->total_status_reports, 100) + << "incorrect value for total_status_reports, expected 100, is " + << last_msg_->total_status_reports; +} diff --git a/docs/sbp.pdf b/docs/sbp.pdf index 3ce1b1a911217d1e70f74e3a4757cd942c8dc54e..22a91ba7dfcd953f3a2c0526ab22f3e476c0c57d 100644 GIT binary patch delta 302029 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

=tsg_M1uz@L^#MRU{wi`-7i6M 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 Z2$+;DBxra9b|!XK4mfghF?n&g{|3dBgirtg delta 297325 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]%GVDwc-uJ#XL>l*IT8feJM*UXWiP z;Yz8uy&yP%Vqkc_%uiOH_g$ePL7_R0ls*R(2{|;xMx`L>G%QHB-AiSrvI5{#uFeS( zd|$d^OnDE-{*-iv`SJpIe(#J+DlP{2V0R~1VX=E2){dh8uW274kHbzD*B-^IlI4N0gvEU*?*+8A9hpt?Guvg7+gyBf{{7IW$t9S5j^& zv1NFqLx>TL5n!CJ(J#ba4N)^x42^Y#dj1m!c-*4bGRBeAIDG^H*L^J`6{ z`nhv9fyGog+Y|s(8tQ7sIWCojihvR)+!)*9A;|Wx6eK&;WA*X5lTZ&FmZzCl7(L-p z5p)N0lJ`TBf~gv|mC`NdZ;&vq_dSG;uWL)6I{HPorR>V`xv-fd$ng>gSR#vNCr*t4 zXe%~cxf%P;)N4y^)S_D4w!$uAmK?lji(@?&VFf-LYp?mxn*4!T&6}MesgLYb7B#!7 z;mi?murUiN?Z`YmCkz{sy|$%))6s-pP|{qcD_)rid1?S#JSQk~U)kb~Ri~3KR`hcq zkj(OCiz)!UXg0Ae+;=)7eMzDR`|xZ739cR5a28ZnsakL+ z(l!l-Y4S^R3{lM}_~mF771zz<&<&+EG^z;CR0l27qOGLw$@k`fi|GvPFNA0^d;4)C zhvsqLHCh9cvu5&5xjlgeL5Z2CH?!q@&9kpro{s_(Cn<9w(?ju$^O~YG@>b>nbB0lT zTC0{1vzmI`B-d?Is>zZ0Tav2odUBD>;_iEBRsUv%Pc+s}@^A`V@hT9+kEs~XU@7V3 zfnkoRs&;lvsPKW`1acBJ9&B&ubla2wa*ykVTPBzxj?)(30Eo2GF$2UT(_JL{{8O%T{ut-qbs(LjQ593-!p8T|t z1U;kjmiE>eBp^}v5l{mAg-(J((WFB68Ryd=v%ox3F zyShtpxKOKh0hV{jaqUn5e`zdwCK5a#YOgflPNm)u^-^j)+W;m$-EY3ezzr}4ZZXI{ zr}MpjKI0I)2M?4&S$%DcB1HMEBDp!4k4@Hl_XM-A4voJ8{;EVtzDgr>n>(my5Z^5> zfh?uCAMEXY{6>SW9L!tSPCWG zTsA@lq|lh|urf(Py(4pjO3L%gxB6z=x!gKeAcj^e)+`mQxpI5Hhiw9o)*>r^|ASfP zpM;V}8~b?1o>d7XZ0qTJBJGAysT!``WpRjtppzp2!1qcCZ-|wwZcXOzUh%IrrCea) zTS}++Zn&oon`g|Me14E{l1ZYHN8v?Lg0pX>p&Y%x2do-Hw_9uc8=s*Ff|+fiowe#^ zkt}bYC4uTkn$LSTk>me72 zQK35yIKNt!daNQ-e*f4X*Xzm{FS2t>+_7Z;bIsCAkjLL6lN$|9j-@bXi+WI2MxS;> zCf5`j%KMZ?S-YJ$!2~QFJ5S&RhM`ql!%R*P==*Xmvj*c7!08H>C(gIYlou|z=G+kB z&DKna>s^aM>v9yh&0(`0_pSk5|%-uRzo8k}|BSIHq2BtMm^a z7#WvKCMIGc{|F+%8jQ{$TgMb(PlLU99`&0KvY0|Bl1x#`KgjzkQV6hs00zG!EopBX z=&v$s9wyI2+H;7V$qFe7s15u*4vUcJknb}K@+{g1zCH-^KAOMz;^RPbl_*+*bN+4u zsIx?UE=$=>rEUeiw0o^`>&Hb?hl?1cX4g;3!hed3_$>T{iBBMV6FsWirU*6>u?}O? za8qn+iQ21frlBaS|KgbJ_vzhgP<7&doctY&RrHgw=V_ z@nILxkjY^J8XId3t~z;aCJ8ho$fnIlWM+Rk(Q#PrV9JbY7o)tjjH~!kr^i-X$PK*r zO)z#N|G$6wydp64RKYP2T7dcwfJqE(^PI*^5@gZjs&k|Rq6`$WR9oDMy&RcwZiQGV zF@kdaX8ZZ>S2*Hm!eX>UJj-$S6z`wWf1rj3_b2<#54%d7MrHF_38%dAnbdMoN=ee* zwL}dDcPQI615ByptuaEVJR^v+TvKy5c5lH@=4FmBvj{bGgg#O8769}Z-5agXZ!dHZ z*m{>&?&$;&$A=N;2Wv2>e^53Xz*Za-_an0xG4bHtZ$enfQwga~yQGRb#&AQ;K{8_O zq-x?TU2MI6aZ48YnZ=nMAaBcIIA&?2kER=6+7|<=y19;ltXuw8cM*KphLN4Fm&vPd zXMgmM_Bj{)^^sVPDo)@z*0d)07 zr3N2(PYV+J_@%&4&KIg(NAo<|s#(q%;)vbtpQ%(!Mkw@IApj}x+2=yN{Ia6@4v6PI zJ&33ME>5}>d`Z_tDR9k^(!fV^>@0O`X0n} z-ycILSAAS2-AWhYjt72a8)w>(-y0q>=7YZL5Q1Y|G1 zhfp@l#sP_=D-Z5q{WUu;ex*3z2}_{RXOs)u zNt`~ea9@Q}^4b8-B{H$U5q#?&zz^}K)c)C!bvqyd6%W`Wjg;Zzr=W_%evot(kZ8TC z{VO~7k0wg7HXLOp9-UdI5#@*7^wxD()Vh3CxSAIATi{2*9^l-)X@pST36uLSy!gHm z_ogV5pMV1S<>M8Uk(IHO@xhuYCQ@q_0A0O!&ldillG_h+KA>otSRpm9cnaxjOmm`h zoY%AIb)4GySX>buN3?t@q%3SaTS%(v+p)jgMf*?I3B57OC}C!Pp6YH}Q@~&$s*nnK zG7+}@blLXu%#27Xy0-`SXNP*WLO#n!bhhbrumE3nB86T~bexzZ$^t4H)(wqvcswaA z7&wISqd0O6x!YWoH6?{3UYJF9HQ z-+ufupe&3`sfOJ@gl4R15M*?vM(AdXIkU@6X&kU}I&KiO(WV28RK95tEP$@e)-(km zTRIZ1Sqhp}pSZ8qL_#|JuV3)5_HeVFdR2V+zcaI{DCZ~U&2ndzw0rBX6oXZLYf>|= zT1yOF(-9`P^0p6HTRnEhQu*~yJ(0|AI244(iG-*yFwpr~oIf#&Gkb(m$K zL-M^96M$iAsZ>ECn*Ih(n*7BpH=Fj$@(DKt9XJbWoGdyFOI6eDdq5-aVp?rCVu|1v zJEY?M<4{&DcN3E0By+V7R+ob`@ zk>9kc?0DtB!ABOe4oJE`$swr#=93Hp%jf493{PNti&KlVZMK{@Mx%s?h~^+-0s4bN zStRZULW*vwA>B(L<}SkB%r~kXNyToPawUT_`^l4=6o_1&ta%ti6q-({pvO2H!OJvC zZIB5Xrj={<@6^_&fc4^+2SM`(j)RJ5%#EaC=x3!y^5m*)JK&!{jUKC3S9z`awz(=4 z3WndV9-}Z<@R*YD+@3LVoSMO})pZh}Fr2b@RuGonS#8D;9u_2$ML|ULA%P+3yJC=G z`fKNhwA4{%S|7Pc7azcat8JcK7y0Zxfv7)Z=tD`jO9Ig3uOxewiYo@M2w%AK z43Ro-^(UePxqvgW^P{5jmJZP_SpVzPC}a7Xy2m)`kZ=PDhv?)R>^tLt-?KXo_i0x> z?SKA{4lk=MJD**?1P~AxrskkV>^}bd=B`rOE=U*Rq4c7#>GI9O2Pp?S+(O8!Ee0W} ztg~q=)ODF9Hwu->1xZJAChq$c_mq2Zr>7kxR8G_npu>D}(IDT=z@t4VarWZ~OfnDU z@>^T*xWmA&VwgV1dSM33z$py}Ds_O*I%}ydnPt5!!!exR@sfRdU@6cEHn(^sR!^WN z8xhuG4NR~W@?yoE7W$oJiMvF}i`dudn^nN;i4$J7_x@05koF51+pxqi&FU7#l}pZo zcUW!)(3cg{!U$X5=@;?J7Q)`mQ)9dX>tWW9F(|t-dElO1)Ru8tc@uwBy+yrrUDbJB zwU^rx(cBVoyG7l;MGeuV`rugs)%9BbXjoF8J49laLe*d)2U zIO*8NGa0WBPX(JtJ=E`W4zf6q%$w!GWA_vXG2(r+4F>Qd9sDd=6_$*Toc{AaV0(I( zy34z}IyQO2qn~XrA)N&+q>UjJpo$liRpMqjyWS&IAq#*>+2>joa9M}RToGrq&^Wt_ zD{^|qjnWdy?l$=^C>rw&+aQx37dn-Dq)v97ekIkXh^v*P$bY^T|K^DtSDkalm>?ZdMv!3FYP5g zz+Qh4y;1{PS^}4^gKt@xm7K0!j~pYw9+Qy5oZOinuRd;#dBy{Y568aoAjSY;$A$zo zi926U1tU>nV^DERyv^>9Y;ygqSUBIKy!s`;fW9v-249NvqGS$tH}03;L_|nlCM5`h z5lZ&;I2)VB_Aohoo>-0rT_Z+2W2hly=2}+r#JE#ggf5@#`J%Cwow{5BAb9 znZtn;D9LIh%zSL(p@mtfCIfk4iDU|F0NlZ#$D*YIPM zWU4^2yXiUJi(k9s5C{`;uurzhy)6ow>}i(i8D=0Jtue=|Pgjdl-XeyQqfDb?vPvcJ z`*5m8fsPfe!9f$FrI$SUE+^$2;Bcnr6OrK2%~9ULtPn6IN$lMirA)G;=Ou(9LRo=^ zmaC*lT*-zac-Z0RRrO3wfGRpfBUYK4A9R1$C+3M+_vz$t0Yk0^fs&!RAy9?xCt_;* z@mm0frnaRM?mX6&AgbI%H6SFpa5uYj%-bObBuzVwZHZ>$8^u(y?mbBq(5yJe<=n+7 zkBERRmo^V-K-)T!B%qPPs8;lj=qSM9{~6RfhlZV(p-)Z6SyB-DFV?81+oOx2S*%UE=3MMBk|8K6v-Ux?@|B{*O%N%ya;=ID-G@6w5A zqUCQ#ONThT@Flhw0)(nIK$hkOA*zdWJdXDSI-0D&67)wC%mJDBee#tTB_&r=e3Z>R*2(Oqts zN-%7J3Bh1+R}sC50=2Mx{6NoHhTca@ZB7ySKrg{n0YKhGxpp^zMfHlnnkI8@{NOiQ zG=emrKPi%4lnXHZW#^P+xhZ{oc7ntYUNRZJlwjET*GraUjmbXoI%{`EXaw9i1_AjX z%-}2$1x1&(b&)JBn}rK5T7Hi)7)XjG;5Qc*zK&`+c7)`kTA~N z4nml3(96V{3?EhjeQ;qA!vZK+?xHRz`k>r6OZc6sz`M1X3JNRB(%rZ60{$#?Eh*Z} zxtUoDP9<=PP@qrTE7PZA1_FkQT%c_xNyz#L1AzVdZ|pAI=%0%jdYI_^qr%&8-Ikk` zVOn9W=_qbIpn*ll9j^cm$8IOCcTZO%=9b`d!mFJolQ#uWXK2CdBl`qr<9EyD)jfcD z&<$?Nh$ihxGDfsY>7Pz+pxl>5Ns5DGH`ze~i%-n7V-JD1)d^;n%m$|ce;u@ny`~`G zZ?khz=SP=Ti%XiekD5vc0ZK z`mxWD0t=ZRRbEggL4-a_OC?7O;lvs>XBQUcy>3A;HnIFeOtYL?f!II7X& zYh|i}@ca|p0iRF3QDjI+s7`fYR_VUp`uxKj8W0@r+#bI(K75H~a(}Y9AR9vcl*ue| zg9MTWqD37rw|u1uBP^uaU~2Xxg7xQ3bqX_R+jF`Q(`F^Gf!E$l$F*w!bF^Dx%BXzm z%K$slfB{*>uPl2twf%!hn>$k>0b+!ITX+FzML(3MwvLfL5MNJ1gTZKo?&N@T0R?Ej zl@YbR%LB83tkB8nF=LMdCQwL?+%Pe$hh#k+2Da<^5?!W94uqT>6l-;C3Q&1PO+Iiv zNM)lqqI}O2W~x0=oxxc^k_7T_vUP`zVU33d5BVZuu2&WsAIy_nw#lnmhPspG6MBEM zrcbm<8ZEUyYX#pk7lG@y=-TJRfOo^%Di$eJIoa;3clLqDn@93XNha0!NY_URYez@B zI3ZKwEptuJ5T}F3`_ug8V`znZs{IZGf;lqFE+@6}LEvfv^(Z=EPl#2yDD6x}6&C9E zff{&%KM@5z1tOw{Qc~Igl6w>!+ad#DU2hI4G9RWS!nPz8XqX{02S$hN`2Q+^r0TL( zO3*gl5sbZ{x|?fSIwEh7Kfvz#>tV)JGA~@C$LkNH4TZlI(9o=X11zCr>~jmPpwY0X z>OdJFyeQ3x0jmX1MD}nbGG6sp&cE_wP6ePqNefdwG&KD(tw?};Ma0(e|k=~)*Lj6-ff+%PPqI0Bf- z&_vS|?Q?+=rIxg<$>zf1SXyV^O0$_1ml~8z;7v*N+F>)gJ?hrQit{DRfqD13pW`&j z9Z(rfk%q_KUQ7ef)OvBBnX2^Hjs?cf?;?uz<{u=I-3S8;fI2X|qMwt$zLO6mHC1&F zZ5GN10NVB;t9|~>L8`6}r7k=MC`to5(F*imB?3g50xd*0RuTw{vXr$2c4Cx!QkU@x z%XtF9LF~q>B_OF%xt7_bNHZOc1SJCgjppD2x+S&W2I71fcjO7M?Q;0hw>> z)H?z$Mas0qo%?mEYS(tqj2q4GX~U@x??sX zAdnCrtOpff5Ao^*#$QDg+m65w@`C~2!+5cbNn_jJf#e!ov9lzLN-!qA@P4&?$%=`0 z6(=#kNDaN*C6QH&6fO?VAOc)^>z6-hSYHsL4e-Uh#y%mA#Tg7rH}zd3ahsLFR;29I zu4Pv1jIeO*&RBq*ugcP;)du-z3sN})8jksqiwry0RzG9=v{pL4F01ljtf(&6%^);{ z(NJ`**agI}{iE5nJ=g5;R>y_0xrx=owaDrDMY+D&?boCI_24+zB{aX1R8ZZOv71t$ zQS`3VM7eYeflBcL4qD3PNHxCyygxUIrw<@8tmbyQC5HSEbMt@?%E(-f??e#+Ix+Rtt5u)o6tEP44rJD-msU4tO27NUo)|38jDyUtY6*!=IB|= zfpcLzVAd?`a8dR`gtc>%A7y(4n4I|xqUPF;+rpA5KLM%3Nm}zCFa^^IP>Lj9h45Gh zdm9h>P+h>wd{iQMc@B#WWLpw(Jtz)eIxk`pt%qx@hI7RabI#p>72qKc_(D8y;Taj! zB>D6b8pPPtnHV43{kY{Og14yc5*-=}K`*$67gKI}z zMJ#)>bHe3T++qdjAYCVgCB=}E1HY=A+Vxe^DaF9*4$LRHg8KX(n*aJai zPH4<%o)<^qzBEi6rELC4tE-A8yLNp)hmA<08?RrQIx@J8 zORvcqo}EsdT}B2E2Al2rzrK?*OZ%tD3>@EQ2o%OrZm5<+Aer(`pmwv^{%i*_G(kUH zN|H5#{SZi#{x<*PqPRG*RPC>n=6>Pd&9wlJOXdshb>2$YP4XlplxV_n>h%R!9Mp5v zS_58XJJ;IxiR3p%0XUob)}Rg30}xEY>Z!<-99;ia?KQl+kT ztP4GA)*(A(2383wZ5)73ZUR-2R*wLPzB`PGMGbM*e4|?WV;!BEYhP@W?6@=7Nr$2= z9WKBc7ZGXkrQo?*i_5xdYWQG}g>@uosQDe1m2G?(!@OXoMAyF)mJa!!^WLoa7#hkM z!U)63^o_82)ij}vwZ?%mZpbTy6J8hEH3DZetp6156~`FXIhKr39?ynemInYRrAWw3 zwjhv%!$A~2lal9+T$ULv^m7X_H0}}wprIxVa+9v0lTgyA?MV-EO@hRob6g=Et(gvs zcW<+9N!qhMlbmV=e>2ZJtDEtrmliOPly&KV2c|{WJ}I0*CQ(@BD{$FC@y`k$#na=An$HrJ#U9y zWKX91aXE|%p8{Ap=sjh?mPVv5d9w%mfvk(qXHW#n+n66)r{;U*dd$~Fn|Q3b1GoI{ zttEmpFMUfF)2#f-{HY67jPt-Ux+_7$1Tl*l3~XeSKiqXccG%JQH>m+0RrLpX`WMBE z)y0!r5$iqyezEQ{wUt<)6hisZ-@cI!`G%uHna`=VUxMQ4g`*r-7gHT%!U|LI=I+>R12j@ zD?tCib^<`@xeWHJ!~kd(>hqvWYg}aH8<)@%L@#j&Nak_F7b>B_pLq;`l$f1ya4xRy z%xPQ++)>&9JIwiF$1Y9N^Hs|+o!}f)f}mmLj1m~6eFa`i(#6m+Vb)eAEH!8-n0TWw zQA&S{u)L)pZQwZ2ASXs5o$Rj|?8v#tsbm0xZlA%UeUxGK&;3Ho)!mPEQfOHLyc4Bt zpoxBnsA+N4uNsrNpnW1I%Q|(uD0~K8vB>-MtUX~%WceU3gWecEe@LsJS$+1Ht_>4% zXC1S{L)6ACKPPBH2&x-6=2a?vMLBL5$7Q!Gj@9*x;h}^eH-Jp>f>xo15<1gj`Oqgc z!eM4X8Hp9|HvmZ}ZuNNtQ-Svzqnv-`?ut56K0I3!{8`eAY4#71C*;{N5-+F#Y(ci@ z!}J`o_bu0h8?h%S1#~%9VKQ@Z>Pbct*E|bi5kg~JOg+8zY*D}*9fOI-IgXCrd_ZF$ zy8xm=TskQJ57_$0Tr94j8ztxj#}tkXb6W@szpGu8W+U zNuVG9PEhyR`@G`9qAsfr`vmHuv3S$(UaNX zUB;ASQda+L@Q@nUL;aac6kZlAsHA)b%tOHeOV2%SGJp0>cXraK?M{h$q!|Z2>MH(f z)HU0dhtXV|Z1@J=kHCgb1>XCCaQ$x_`^U-mbF@7K1;!zg)u4p&22kWqmiet{Kzp|?9F(#ViF zLrQlBJg^+10T5D9BAm1`f$I(rNt0t15q@iM zTO1uAQI<7o!2J2+n4E+|CwXz(Iaxb4P=7eE1{4IrQ6SynCm0yw)X2drHjwJ$fvGoa zgv-4g4%0sug>l8!gAr!~u2y{I(>cr(mI)MyRzZXm?u#0&C$^e^zPehxAas@k#qnk9 z3mbsFTDpIOpnTfBd!3q^=Bi$lo32HP-oymx3>!NW6;NSpye7W-0S{G%g^(TX_M?e1 zvp@L8WczQ z(F6TKql~8g;b*0Y9SKjZ>ZW8Z&q`d~?QF9O0qaOI;nZylkn5zlqk^bHE~W)(Ycv_z zK{L55=n~|}#}nY6BQ|Pje5`I7JCbDm$8%^mSt{g2dgOsAi;j$BOL_^EWCn4b;qwBlNT)=);}J)Uic9j}Bg9`D%1sw~8q&Cok2LQ}N|X^;+$_I<3qsZ? z$ozjzcSUAJr2G|;Vub>n7_tMzl2|XZo^wkQNTElsWrvZMXXb1}%d~h@Sh%5hjw?*g zQuzKJ;WWo;9vtnPUY#6i#dW)6;s--fDqGnweSz@Z1GV}#Kl zd_@Lw<{f85ct;dig&ZSLHtlZ)Rhn^5WI+}Ob?2lIuYbzpLd<-7A=89!82@zN5gYo= zAMgsb^_jyIbDpd+TMiW5ae9lz;J{ z>1KFBovH3yU$EN`EGiWkIg}fzN6(O#&BQ(PTB%@F!3G*1kqBJ>WL z!D2@!Hrz(+j~KSj!_Qa$*L?m-weUA03zm~%=HEBC%L5Oqw`Rq2ow%EZ%bfjfgx-QD za+z&`C*L+EdIKwnaJR!Hb^Xo*xl)ao^eWCu(SF;nON(2K9^+@;fFNtU6z3WuFR`F2 zi$SP`boNio0~cVo?42obM*Budzp(r^1qYEh9P-yUrq|i3PJMf3c_c&MXrnbZ$e2U}v`}=k zUmso(%>)8~ppXM-xS$RUR^~VFGp-2WESz#?4n``L+0_9)6*@-Y^IGKWZs7+aw}X_T zts(=qcTAr*E*|PrM>^>bx@;^zDG~3LI(8AO#~J!4yR=Mlf@==j<)@GJ|C$@xq;vY8 z0nh8$1*gT8Ukq$C47X>KlRr#DI1tNzgfm7X4tb38ir5@Wr%3G{vLp%f#2VERm;BZc z_%HK{gMr0I^k|Icnm(h=T8&)?oZM7~jm(CHctPStm`fw{5j zev`f<7C)uKVe?S5^E1spHDmpdM7t_mNczU`LVv@y+4@_v@X#=6lK#uRAzFPSlCYtE z0t4~Y_Qf@0n$^rMe#CJ+RI4hmadW z+_>(~l2gtsys@B2hU2Rez4d(aT z`|6s&JTTldWhNVa*ONq}5OI~h(H#)YvODyunAOhbit5_E2vUGz{fJ6L#{c2aI z%eT~4KCL(=m5+69g27=nqj)1eqBtheFQT)H_U1sX z3PZJr?g2?wQzOKg+6%Q9OB&!{Z`2$)b?7Il3XIAxUA56fRm(2nG{pwM3R-E*0d$as z;ZuY=C**tHa`Myxbmb{5u>nW$l1=OeIl%EZV%Cjg*!JDTA{dW0rV`kq@xctS$&z)9 zWx2`^gT21`%u81)3@_t64!mPr;Tr!$OtVBZtx@c1TghOTpqGYZ0vXDgNM?|1CqxP^ z7DUu&I0aludKF45`>>mYQD!oXq3^4q#NniFBuVnIrz1H4O$C=aU~Hj8JotT-7Fc~t z7SqIGGT7tkj!<(%8${b^eC`HhhS{(ldSKIOb9HhG22C&BG>I^A z`nOP8ZXqoWXj^w;*pKgZ+%5h7@1gKp-g`Pr9b`{9ew8s<^3 z%|lAVd&Pvw2Zn>mwzB5$4e2a7NSjA+6H&dKy9i1~;_;{I-tSdi67d5&Et=#+G4W$2 z>i|ZnXo>+ShbD+zdO?QsmA> zzsx$HlZr)xtV~DKuf#gx%{=sPf)!E8X@lh-b5hs9r~+hHOT~pRT96r9knVZSh~|>t zj6u!HRDUC)5Zdyh@5>>QQ3g@5Eoy7LNJjW-OY=by(i4w!aXOS~dF@y};x_&L8(?rm zzBXz)<30N{$8U~{)4>5J%Kd1^uV4zL@@jEpYS!1#S+$MYs+QMWICk^zPLR}ZhjKF7 z=N#129h#DXm!4@3`G&R8!?AIxutV?k7jDZ z>^Fq!H2zyQHXqf8?DJq{DM0Ny2cU?@J{dtCS)AjQ$4tn|=vQT;;n7r8fZ z_15tK7IR!xBlqqN>E}jZK4TbHY64Uq#*>2$(_wDx$2{U`h}o8bcxdcg&e~n7KUPy- ziUteZ-q6_#rWM*JAJLNO6s$ko(knVi8UFqSFp(mv#=oVzH10R*%76QRxd4|!AlP$% zO-jJ(%fO^Gvo4@U8IJ?y1pVf1PW*H!r5e%0k^aSl`@Int|`j#@ONb@mtonR?YRz1fm296l|l{OAuguPQY{ z@B;6KJM88c{`I9WBdu;g{Dm&2pZjY3#>YFxtaI#p5)VQM(L!`Ia-3*gRJgZ#rP8Fu zVt>U9F<|gmWJuWhG7&>4ZENY876$-RdLl+u@YOPi-CxW?_#$%q?g0Mq*H@2rurYtj z>g{>!&LGDvJ%69L2ICEW0qPNgfe=!D7C&k)g2g9TGR%A{a6^2RRZW#gO%*S_PRkzK zpo@ve($v_FSkM5nm|oFCe=S!hh`=zR2_9`;K9gJCDfQTO(+6zSx@hGouS%85@{0WA zspi!EZ=j1ZUiANLQDA#NwkYQRD~LgUGyZ=yPD45|L+pQQ9JMvib*Q~>YL*GU`1ygs zd#@BJ9Xd1{$ZFHq()>Ybm3}JXHyj36_J;TR`i!0n-8z@%;pB#@m}LKCl_i?Kdy6xS z1hdV$mn7uY4J|iPz+Up?C0ibc-11}wt3Ip!7&rHHw?XmIWMsV*O;4$YrzS&N$KRAD zP0GJcf%|UbN5R{{>>Vb57`CYQ9M#xjo5RBq$=8C_^*zgYD(aoHKL6bB2>w|f zQ)>eS3V|{(@dg`PH)_#iUG1uy{H=W`+I0`I2yLf~EYWy?0h=CDPfesf6vrj4QC7JGc{i3?6&LEdkOokT}uC$H3`mc1~iX_M%y&gRsGoyo~#RFYIJWMe2PVHe6WUzj$ z1tQeP?NSIMZj~oQ%R(w|cHMED7}KzvySH$Q!D)@bXRWGvMvm*Txk|$P0VUyjGW2dW znHW+2Z9YHzQz`W9O)qnOzXKsj zs|^dj;@t3rkLFA)l+#C8HE^I3X=|fdOtVgI)RCdyfuoz%%j~4& z5BsKa4(dXbFjQrFZM-#5L5-6-1R)M_mGF4ZP%5kxFn>dE z(piwJ>mVg8W;eSuzf*JXl$8un-Y{IwrKoB4P+Z_iD}Gr! zFumu2hgTbf&yyMftTfu-tPU6D>OFDkn|e6l71+rO?xhYj>#?|Xdx?3rO?jidSET7b zQft$r3K?tHOl}Hnw79!lZ`pl*P(NtBEProkoj3Vvpy6u2{sT*q=rJ+7ulN6nfFk=T zI=@t0YAG^x)ssF*D&aAI?Sm;2x0_-EYz82kx#(N$dm9k44&5IWiCilQRkqE4VuEV? zalqt*4Fi9>10OPROi|s@U|r{0rrmT-3@F~}H1Ee6b_ALdGSq*Eo$t68_(Nhr9K{h- zQ2(W_){Hv^GQhz?h=~acEJpU-u~SDe;-W_~vy+EVf91$#hGViw<}dnxJiTLkW?j>T z8{4)!wr$($m>rv)OB@={k?OctjCCCyk2IS6wp0W)H@cnKR~CJjRTtXxN2y!5dA(h|4o+?9WMS z!06;8L?Gf=#fEYpwuUv9Wfx^n!MyaV4Y7x>i<(_4yLx2wa%)Z_nd$8<@jC-^=Rv8u zzT!AzzMp>h^i-vr=AxSk&kDDf8BdgcbP-ByaR)&RbFyz6UHCB#4A^_{_R9h9R48Z_ zm~k3iAOjzSf*+!ig5mA!wf2M~-9VB2m9YXDixok38d=CPz52#>fx?HoeZ$O0m1t6+ zAT_vq8VaNYs+~|P>J0PrTiX&%_5T|3l!=$0b{zQ&gcGnVj@3!%BxAO(YQ_(Ad|a*{3WyQ{XvD4)=Vu!I#2?}RDKG@)H(F&MXy3TsNe#qFO~E8_vwtIYNjJFT z%E`I|cD#DF#lb>6w7#=WXlU;CpDy>`!GZlaiK@84sH6k_z3o3};L+|b5dw>Ep6;6S zIp9N4_d#@6qsubz>lm2t?U@_bU20DD0%1_*BSUyJq2CnSb<3H@G49E{n?GB;T^(Fp zybzL(52UGW1?n>yqgs|6lLVlJzT9vy~|zS_tRAe zZ78^(5FFG;p16(W|7(^cfrjK%fMFn|M=V5t5lgFlS=vz7N;YeuOt+65Xn`Ep01s^e z_yzRAf?*TmFkGUg>~YV`AOEdNIkyI7I9RG5KV~lt_e4B2~zFR4VGC`{W_8`7fw-P0se-rxuKVET~e`@Q+RG-XoK0&`Hga-HKA_8@R5a;{wB zis5x^--|qCPro~B_9xrU%J}#fURy3PpgagA7*2x-n>0X<^q-A7`Gy={+aniLy`@~3 zgIO;q<@!1FO@th?LeEbMb~Nt<ljtu2fcqnr zmQ+~e=IwcQ&tr!YOY`u-5}w^9*E+2u2=>;to%-DAk5Vz@K;e=qp<$}gIa%;iZUe-u zir*lR&-~uV`%%5*ID0eq*Q-BxcbKTVJ~=pVf+vC?Rf3S)I_oFRydkqT$j>mii(Y*6&%CP12e&mw=6AeZzVSpHo?Tq$%FsdZ% zAet(}_Ma3}c)kDLwwsAj;V(u-sP%Cvy%JI=7kyDqW0S8D>O+Q1j&T{7eYVQAMrV^p zTypfsx#(fY>LR(P#%Z<%>VKo*n;bN6y@T+KsTRVqX8RLX>y^i)Cq2Oa$x7?}1Y&tN0tW_^AYBiNvXkhuXDkp;gn)0M~8cuYv`q8#pQz3Hg0)#v_;Bz4K>o%ywhv z_Uz$XU*W&sTclqC*JTsMM_AvoJWt6_GA-NOw<@~OS@}|vu_l)mtk6IOd5C+##OLpE z=HpAo0*b&kv3DwF$SZ>Ab);cdrOeg??mgqi8ttDnW403=D$f8Xc=!zNitK)h4!wLh zqhJw>0OY<+D@wtVj3g1E*r3qYrZNKEkWuRpO05!+z&I@yzzSx$eHNOS*Tr7rrm(5j zl2ok*+fUNRMc0+6KZ>@ntgDA|+WiSzgnjAvR=k z<}`|JZx*?MFtPlm+L&qjtNH{%ljFa;RAo1YLIej5BheqzaZwA~Ur2WEyXFUURGfWK zq9E2_ctMyroUnE>o~3-IG2~v9kzItz^s8@tC7j`k@n#{o_JTh8(j^E~AagFT+kz%T zh}+*SHb@1Lfhwhk>d$bVZ~P!msq@eN)7xx?VjC~rZRzqEC2q4s@3bu?uAj%c7sq-5 z)|AY2GY){8GtEj^Fx;IjgUcZT%sAc6H(*iYm;$V5E)XVBg`rLJ4=Yh1x$b8se)}Jr zp2=et@Z+NE#_SkB=)9X~RFLnlPf9@N4PwQ>V*}E3s6u`oJv_BA`JrU3 z#&e^4Z)xz15Tk!;t~6X;MLf_PQNpRVpM-DM3d9>s@DtH$j0U8N3D#D~`-M&W_WPY_ z$RR@m^H{xmDAe{Z2c;$s(y98DHJkJ&JzV9E5~4l3E7PW~Dm(ShX6Y?rf@&k%rJJ*P z{V72I`sDTpfu)zH)pd)H$I^>->&kbV3<|~5Cy72q(Sz&^%2~2(Lgj5rcM3AGVUzJt z7XRmnRYE+Dr+g#4A|Zu~!R3)D1H#|)jhU9XO9>kpvgmn4_nMr?URA?YCwl_FZaG$g z7rvwi?tFQt>>Ot=Z>HqCM`Ns-f{l;|*;4=`!E9b|O0&9QIxBhUpZr#{E-y%>V(f~v z_;TX-UByP^c?mZiqRGo-qzxT`=t{U={1b(QJvk4}VL!SO6&a;MB3&V#%^A1hqQ!qH zIst9uWJcvvO$!<}K%~JBaiZp6`?cwRfW_gN@h1c0T~6I7PQ^HBOS!c8%Pa2Ifn))z z5&6LRxHVC}Ac1M#*?+%h^sDb((uXRD`TuVG6LSdd<2U`Dy3bi7(*4yk71J0o&9K22 z`AAg}j>9hh9*h(?#znyZy>gp9ELH8HqV#A{ zp(2fsmWbIsG=d4g3Rx{xEDFr8oLR+2fQXQC$YQQ#g$^0G%5G6mI?lGiKk7>)*rv1@ zUqK^)zJwroN_0QTB4sVexPc$KVm1B|5VfYxr&1Py=2(1|%(o!jJD&LRo8@j*(wF*= zx|n}nkZ6yze>C%#jbG_g95{8FAgD~70q}Le@gN-GAAJP~86` z6c$M$nVbRjQkI}DMzCfhfYuucn~0)!TzC~AqD^wD_T|!~qHWc?+Hp78E2b$ho||S> zb*!n!CXbP86*9RlEID`Ka>KTIi(W`E&^5DzyqZ5JU{Gi_34{u0;{=X7C=yHc7sV~2 zI9Wskv;!2`1)4UJkrx$}p=wr}x<4a&&Opgfe2gO!a0r$ZQh*_oCW@1vpKPo&J_HJ2 zNsS7cd#bL>sSO?0#4>DD z0-jWjLdpN=5)KKHbS2f7&=|AQHy@e{8by=sd0@3!>zV7MR z-P8G!<)?0|?*Y!{zmwXplO7*G3sDCQWfRTw=YtM6J9T|;7sO=lWLk1bSFj4@{5}&q z93qDerQl-bPLQ8#XU{OBJ;M{(!Ld zbDnEBPy2y1g57kGf^>pfC#nV9Slw^ut`6><%K`8|-fkGnH5@t5dw|WJug}lnwAU9i z@Z;w9DcA2lP$hlqrZ0~N!iq>`bnKW-qq(JQ3cWQg8~ExSsrAhd57=u6npHCbU+p(D-|jy!K+Dgm>$jFE7k%C? zt#9wopJRyFB+SgAxg;yWi-2rXH>TG6Yd<+EBsn=J>igafd&XPYv(p9G1}{B|_&ln) zVZS@S|NOeL#Z{{EI-75+Vux~A#k)2jWDMa_w~CfBfuf;~L%Nr!H9?_4In?i6d6Mi^ z^YjOn|9#`K9iO~P>#0?w+ELUBZdOCcI%L9b66Upmk~558>J|y&3I?IBnA2{Y+m9So z?8VKqHTxK7QuJUl^g0Fr=v@9L>H5uWWb<^lT-;n3r&NaQQu3}xc8^dYrg~hOVSK<; zG_F&21y7Jbdk7YIIy~mYECAdG1t=jog{{)X4Z@ zo2_M4v7kUJ=Fep??L=~f9$#vH5*2n|gX|e^1xEq4g=sf~5qc|@M5opi5bR!I4j`=rS6VFpV;g;U1(5i~p7&qQ_q&@2`alp78s zY7X05!tx(E%=1LTX^W@zsm!^en5uIhksOf%{3Tjy&ra^2%M?@Xf@X8`kn+J|9L|+f zx7bX&^c`FP#?5ke7Ou##qahiqDY^jN+Z8#>Jgq>7HRr#!jGYt=QRp)a)wz*cqAm`e ztSkchdw2e>2yY^zsk(5+z-3n`*c%akItJET^e9APv>w$CDZtZ-^l(t#E1E$oPIXyC4V32|qDxlZtET9b&61E2Mdv#@w^0k)P6 z6g8MesRz^qQp6Ibrw*~#Ao?p+wY}u3*DbW(G6j(h)#(_rwaT(>pbzQwi6b2%b{_4T z$W|+*hYL{irr6lGctL?!`RqMG__!N)W9QxMrAIv+TPkyh;~l^k?k{D|Zl2TSC-$Fc zx*-w_fNPXD;c^6p4R4@J)OLH*2LsU?2lfA&e8YWUv=nRtP<{ZN(nYCKMzQ~6yeM*A zT|i(RY-`!W1&C2{+>1{+UfrSvom3-Hyvk6RQn+JS zFjw32z=*RFI4XS<02y-lJBj{)TKA;S##uhFVUaWFC*#CMw#0$}vv2TU$MbtV6xQoS zxySUf7XI8jng>9DFBsUb)|)#LXL`)~NOuP$?O>S;m^$lMOw>U*Wi_&hH!W%2%T@rw z-d=}TC1fZ#2+|;<4DbOPWp}W-TMk2i2O~`4gTlFlGx{rIhBY% zKA3$2yDq74-vEJJf$5VglBosisD?+2+J7X1>Bc}h|C+3<#`TjMH+ zhL#JqHGBi0X$t&1fpTwSdaglQ5bqhHu1=Z>yse4VuS^0dtA+o;LdM%OVtRQHw&bUmU6WOl?@5FJ<>~`xt>-cx8CXh-S?Z2RNHFp;>5TdcpT?Myan)NUqn*LqMtjMY!2%&tbi-?D-!kmt>kUCl z@kc*icq(JU)N7E87=W$F>JInk_TaGNeXONr9wJz?NYwrt35o~>gzguxA0kFy$?f$o z?^OvEB<>F^3GR<{{^57$hG_nsZ#4V=@cTtBF;j#9@098T8`h>htGmw@n;**C+R67c z$As+uVaWTK0BSIZMQ`*uV?MC|Kg;_w7I=(TeF5-9C@cRIuU+cc+}U93b>`NLN%BRl zQ$Vsm8-;j-ua#6_eA*#^TvSEQW|zNssb-B8?`R^8TWEnrsz^hLbV}}6&8}%vjgWsE zU9S}o(+a1bld!*`uR6bpcqGmF$RE!f*+aX9lqe(kFTkFpf>%VM`8N-)Nf^;GW42a4 zs}dSWHQ3%R?H+Bqql`%H6VN_q5K9{bi0mu!p*gZiuw-#GaAoKy#>qU1#q2K-2~cFH zaE5-Mx&yLAR~?MKwY`os2e1^YM<`FEr1oq;r}F%xtSbJGc8AxfhoXaQCsdylojiiw z8pk;ce&GNtdJYRj2^>iFJ=d6uo)l-6DV|Z**cfESp5rv`kxPU= z;ufx~EKpxX^k=e0f@#30ILJOKvLd=uK-u(fT z7eZlIJd8Aww-fqSwb3LPj-dQO&vS2#Dp*}(=KcZFf>nBfLdZyM!M$A^8NR#JY5jVC zP~N|G;RE1^=VJ*Q1*|m~l4r%GF3FC&lg&ebI1nwhBl^Lp)LMWbiTSD*>;i{-GIOCA znU9-dtEpIi?13n+wd~GFwfE+<=)nR2Jd=STTZ};eh=49!XM)$9L6Ay+O)3O6&rU8f zft5p@RBDh6o*E}wfQp2VI*d>nm?I;-edAh{sOQbwbeybSl7k3DNZWP*Z zV3z((KXGea7Dqwlc|cd*t2__>*7uR%x%ZF;zab>mr-5RO}7- z%?P%xYrI)J=I9X4Ucm7>l-fzhhik-6_1|L_f7$UBMkQsDCQrw@yxm9v8(tmb_(=#~n z*t1Z@G*q005}}oU>TOTILhkk59<6c4t4FV^7S%wol9n4R6-!5{_4*fuK`#Tso@3Wp z_0w~8B!-@k?Ay$AfmaHE5gny=IbAnohzkt=y9r(X+GbF3V2i+FBBEwi*Xu^nEMoe; zf3Zf%_JL%(1xiug7uJW1`3GTrvmX*FbV}>h3m!csB{$$Ij#d)L!~(YV>^*@lvCG(C zTx}4KuFh&^+2W?a)onja+}7wu7niQ~d`;mAnuE*ENHDG{Gy@N)Z0Pe7l`(B$;4~u} zZ-0*13*4_GZxV|;PrtfIoby*S<8iYC*f26n-=1H8wo+w!ud}2IG;Lu0gUzC)JYz=G z8jWCvk0y;;o2|W%p85V%djC zhG!dQ5g@bwrCA0b8y$l6g7q6Inb&|!Q<2iPt2(2u{Kg%CS|YHAw5}o3rBjGLh~F_T|8#Vvc0QZim-O>cgb%fZJXSWu4fp~J zEzR{k;a@^zQDSEe>I|bJ$(c60j`l zh;*uiWbiV%00{`N<#ZLkmn{0V@#24sc{S)c zUq!b+KA8bNnd$h&8j}n~gg5_jbIsHk?o;iPSx@cQ#k&GJve; zBhdL~Y)t^*H`Q%$dGk7@6HFTcY^`~dNxH(t@S2y-=Xd3<(B4gbj-aKL*M6Ro&u7$q zwUya2P#S04dI%es*^yIydu<++{5{qP7emzp)nix=@6&baCAW$x zv+u`FDw@3RT&Ap13kA|T<9hSPIRyt~drRZ!&DeX&y zOHVb+Kmvq!3UWyXf}Tlg(_1frq}2S*Po zA98nxTMz8I7y#z$Y+$-==r?s{B8cc9#DZPB(r;j2WC{EK_bI#tivA;dxGVgL@o7^3 zUk>-X#;xSkA}!&5MT=Scwp4LOqj3ozSsK1repC8rJk6Lxb5D1y#KUTY%|nD#8a`q@bQr2RGD(NxFPadx06O=5%UdwnJdc}D z4}l6ENQ&0}t_GhX2MufgO1+xjD;{UVO*Zi%QH|B@g{ABE28~Lp7wv12)`&b(n9csS zM>@yM3=f5nQ{?+-6l%Z8b!#zrqvhjy2@$U&uBT;C87MDUsSxK{9*CJJiHZgx3U%w( z-gv$xf4PuR+?vAq0K6ZzBQA!&Z*DSaI!HeE1x6Tm(H`QdY&9X*_rusVt0ZKyu{0a2 z$90fwy@yRZ8cXkgY`G`9k#H8A3@2x$K|YN53~1?oA4`(ZVw~vNMQ&f? zF{cH~H;AedbUszHjUnl@S=_}G`(HpI)KR!&An04AhG3Y6IXz}}mR{2vuf z)UQQn1(pJ7?T-knh2qudtX&eNOkv!)@ABV7$4dE$-GXRMgQv0bX#2p+j5+0(xps7h z{gLoxrizLEi~%px-WFZm{MCSAFww$cPzg&4GwcSk;Gq8Z|TX zx3T$8&Qs=!fD>VR;Wn-=E`r`+g#h$innY9g2e`tFeA&DG zvGa;|u!RG-Lb*>6i0Mm!8-}cbAKzI2G;frvF8Mze1Nx4_jV9xUACC{K%QboZYLl(| zV2?OVhxO&JlyiMcAk%O2Pf$ftw)pZKV6V_;5ExrZfRZJN3HlHOdBmRKIR*Tw*C(%| z{<74uSWi23NXlj2Y!Qj_Xv(Ae+pgje>mYqxpppnkGg59~EPo0yOE22q8^t#@KR4jC zpzOe%`BcBXdaY>7wzV)p;_~Ag#GnsKg8`>bJd?B9Ay{`oeh3*g z*C;!Ybfe=ClHs4n2HIY7DipK)zoPM!NYsHV_mRl(hmtqKQ;34N|NCiwIO2WbKS(fk zjs!n;D#;>Et%L<}B%ha>+24oKyp!IF9)A0jlteO}hv1abRudi6CS#h+8B;Y1Get?J zYi3sZm29xLo*Px>&Hu>*>k+$U;#LLZ3|%ODd() zE+@?BJJbgjwLt$Ys1KK+t5Jo1y&AM6jd}g3k^({oN?tUddChi#WYFfI0{Bmc-v3?L zVFEB8>{9Hudm59|A7P8 zU?5+Gepe1Ga@(a}a(B|6mrsS4Lkl}>CQY9IU7$pbQA;)1tKyGF6mi zQepQNr64?U#;To<8nl6}2uat1Op))a*W$oixBD%Jai2L4hOUyg^vy z5_QdNFw7dBiX+=?Bc6w01DAj@8$f)mv}2z^^lN*$+7ZNiJie*$n&H!J?>ns{h5#>2 zK>d6ixdE?|KzCP*g>8VppN9M|q=4V9hrPZh)o*%BEyTIpCYP_|k`OSGnIvwUhNJf2 z7zQS_XLa^7LfA9sel&k)34s_p#n8_TFjqQ?pAs|-kGX4lDZ~9Vk*_Ms?9*~<;HpWj zHGM61NK=RQi)WzMI==aNo@F0nH5I_jjFEbi_#9fm>istxM0Q6JQm4vIHM`5)j^-I^ z&g(1fK07(^$OHBmkGM3G8`jBt%VZyHG*^>6jG>KX-)OVj$4IF4W{6&VWmC{MnNsW- zK`{U~v@;lO`u2IiGt(X(H=Sn&AyU2_ccis8$EDiBpD|6 zS#s|>kGmb!l79^Urx<%t?Q}%jsb;}Ej4aA2&kvG8N`&k4cJHM%>B_5VJw0J}?a0gsi#c zE3V~wLbYLKTh|y@({6~Lna-Ec)8ZP?fdt2_dj^=v^k4wl*nSu&41$JFjSj@Z{OZy_ z7;ICXo^S_gg!UL`+kC6j~qe0EWkoyV!=) zI`nZQc-;;}At>ilYU~q2BNB*dBAkuyvo9>Wv_mGN_{;A)e!a1gE{kg`hNZqWD4f63 zRQ^+i8O)2|Bf)_2dL%}lPI%yh>IWO3!na`qH7PpXQO1MIHDs3~$HPxQ^ez9|(rvn> z6SVB9Uhha91=}uIj00i=h~#Phl4x^3{WlWgv2>7+F)Lr|O}`!k8KA-|EGCDn^r2Du z2Re5V3tb4Zftx^tbfAyoO_Cc@fBFX#=SV_o3`?h|@jFmNMdh&0qtQ)HQgYZB+%AT7 zpgw#rd~vN_8XF~2w2X;hOQbjPh=5Tlvr0OUdN7T5PL(+qMNRP(z!@BlDt#`XB7N`; z1BcU|5cS&}0aVWZISk|*$ca)yJHFb@I1%}j=5ys*vIgeR91i8~M#1ch8!GxrRSTm_ z-Lf@Kd+T}ThwrEY6mKkLuCVI48ckAm@Eg7lyaaF~P&>QbHJFc;=-R)is8&Nz?zoC)m1!QcyjXl$ve;5h?hG1ht##^a{$ z38Ks&*>pdfyol3_N4efcVP)8#qSTz`2^)t#MvilFyWREOmcqgYN(y2JlA_55N)Ff< ztJoM@nmXJH**K}u-`4YPZx4e)ELpb1_vvGGRd~(0u&R79Hx^22R>WDcTn!zb65lN~ zuzn%7%{XJOFp$CvX`t0YGgUJ$`>UT;E{!qVJ<3QI!9Di#_bf@-Y#J+1ZVtHeU65bB z*c_>w4Rvl-u7mo<+@7Z#w_$RKsR3*|uRYTiZGYhe@A z!pyX*NXEeOH7ev&RH3c!&;2vWd9C=sFOB>)nkj|%>~zqNW`?SS2hyB|Dqa3gqRYLE zcGNt6lT~UQ3($LeQcJV@eVV^DX?LYN(qSXkQl(|uv@<)twX!x2kjl(;(gF~YFC&<{ zA@p8BkVRI#>^fY*DfFSRh`_J?)<%fsHv_RKewJcL6Xxr-uI=Bld0kzKn9wt_U=A0wt7FamZA z!W{C%*;hBaC!xjB=+%tOw;hE-Ww@^D78kj)ma0VOkYog7v_hM7$^Z zu{C?GZ!p6gMuX47y(X$b7`dvqnbzl6Lm3)qZdO~hx|C)jZQ-S)y!|8`=mHaWYyVCD zH@Uup!4<`GI~=JLShmhbcMTl>0JP-6NKbEj@%{v!N=_e&S8O{3&JKXJW8t%731eXA z&fuFqv^ERpe)msf&4`do>FM99Cdg#_3Mi9R@$8XsST*4gWU||vY>If^==r-O@7A88PH)AysAA@aWB1Ipo)NK{$k&u6B%P_qiNd z$0#D#Ag+F;7jB?mI0DoP7?DA3B`qslAySH0u%Q)7yafpL)qfcf}*b9e}e1t1#&wo zQzW8d*o@NoizE6a7$ii68OQ|L9z}I|*rIYTJ6MgUfOSLn%y07-$07nRbqP&sFoRRd zx2+eR-QR5X>yUk0YN3J1rNJXn3+#)uPlqjOl$#h}6HMw2ZoD`{iqh#_*Ni0J{#0Q(T;_cG*->_DC6fb|??0_6#$ z6oSrPFbOPo5CUPCX5Ki#P_TM?hkcx3qewk{mBdlxI_3Yr)DPxLbHZyAwgiCKsjXVV2 zz4TxvJMcYyUKb*_I$yTwRtB~%-0Z{y;l;g|DkI0{AF@99P>NJIvm+qRxtCWff5nla z2%lv345gg@j|@Yv3XNyA^cg>fTo~^VKS1?$Y?fWak!Fr&=o4)u4Y`0+h_>EGrg>SC z_YKr*%wm#qhYyOLGG_^l3d+RFk+8S<11{6tQrX}{0{oY1^jG`hk*>||O2_aN&%$E< zZywwMx%_SB!R)G^BjB@&mTEN`b@voD`tZpT(9!dW^dGs56W=>E`im1;Dp!f*7h-Y5 z|4%L(=52+ec=?wfZ8WaNDNl;NeKgTHy<+Oj_K8+2N}BZ3ljt?7*7YhmVaK*kbgl82XoN*3G{ zXs~P^v-6%t0C2;&hYk4z`x!@b|0Iq5-1&u$cq0agL$qWak?x5KD59y)MaC6Xp_UXB z#BhEd7>IJ%_pu1^8&ICpC2*G^a9!f#vC9#O|E8 zip9}alytF|EqGp3enzLsrgQ}LW>7*mP+P&g>XM11)CKtd=uh2%=XPL9JDYVh)n@vS z>Z??AWt$p$lCz=dTxJ9Z@$&B$LPI<8^!ZYDW(FP!%83WS#?3p~^U^X#86)xOAI6E; zW^^T(0I(W`QH3>~dP+I71f_BWQ|m5R>RDjYr7Gs{sUBNbxs%SbevXiAG&C3?FbTfT zvS0~(EE@EFW~Np^^v@%Ib)Ue& z&7vEWs%C;FysNmiXuJbVkXlmyAb#5;N~YVjLI*I)X>>6(ak)!57s%#nABMKa80nAn zvu_to)2n7xo#t~zLO39sOrqVBr118vT{eL05@T*Qme3Fbxin7)IeTKlCqiIml(;&Z z#X<(Ur^Y83U*PuCeCsC1fk3(~X-hzo*ApQqp|UN*AyT;E-LMRnP~(^tzVfy%#W%v2 z6kEo;=W~mVdq-$>$8NW^0hRD>IOm?AeX9P#~6dPOBN77OAuq?bTU59+5gfDyto?uWW2)^A!sWxR=j$sA>yJk+0 z5C>I;jH-h8T+CFRy*ROGMs7idiE;Lw^uNb4Qru=o7f5#G`ab(0^82w8Zx-%M_Q_}J z-Lc{ekHLg+#yHFm#tx|LM@aXYvGowM2R2tkY^+9=rUJSstwX}5h^#>(=o=tm)68EU z&I??w*(;(|aOIb1&+Ok(dPp_oLBURnKj#C$2(hH!2CzsO`MXYg6yNy z44cbb`S(JJ&`XA{!T*m; z$@c$w;eM-ZaR0>C)!Y`aRH^D!izVU0j%L(A7@IiA)C(8$PV4noh~ z`^PnEU$v}%x}xLBg5YI7BZPDzQuKr2U{iT8;z4GT2!Z|r%f}-Z?{ndFpBz>b$kz$N zbkGm#sh83*ZRiBBe4sEE#4&?3UZqr(AT$7Y>EGg@b2eY=Pf_uv%irvnGqj_+6b80M zVtj@1VvD%`b446>yLkr$Ak%t7GwzE+#x(7E6P1F&xo)sxJyv_Jk_KXvL8-ur50U-( zaiO%Fcank%$08dHkMoHV2ZsezT2{PR!Bms_Gaw*pCDa7IWcUy(vO zMGF?{Mc4BO$?=~1+a7t&1$7Z&e>uvpKdP11Q;_7O!Y{|z%GGAI6;YH(xBN~5R8HnW zE6z{H;k&(YyaWQE@esBK5oLcMzJTu#Ccd@IqjAEfFgenxQXWh96u+&=G>9PlKef%W z;g{@BR%|fu3UeHW+VsUq`kH=C9s8S8!)i&}GZoH<&6roBX~XJ& z9Z%S1U}_c_YUukA7J$^kw*n~ZJws+O zKz%(m3q9^l%xR^=fhWPPspAuaa%d>hChw`I@8_ksN_ro8U2(4$sOdiTtuL25W1&wP zXkRSry+r!j83x-K47xH$!ZaRI)!cB?_ma!$O9@O4SE~MO+t~orA))ivH+^fLi0GS3gEp`l03#e(IckXRg)c85w~U1GUg<6!odNT zZu%i-^w{Ns$A!b%n z$}T{ry)EPB9M=-zsMzqvW`iv9?K^6c(q@25X zyWCw%U(q+(%9c#^pAX*B;1VxGi@U|&y`*Tba=0k*CwFv@5254MfxadB_8J}*Yn|7X z`HtD-X*T#M84cxAj{w)ysQJ$Fl|E#YklwLKO8wSK!7f((CA3lG6>EGGUCC19y))P4c|hu;fDth1flNd zqb|uowTx=jHbAk;lb46G!YED^7IX2cyypTo7k5-t7|9Y}@m+1$-{+J#2wk-BTl7NY zXGEo~;IFN;_$OSu90%arg0|2kfF{aAJn_JL1k-8e-jZ-yESt4}Ycow?pi#q;PFg?= zcRr{hIZzP;6UDeNWd$o8ZbrNvP1?`JdJH#>F{;>w4UnpQ(hlqvj#DFQa)IKU$R3OB zHOfIif;0kpZ+6DQb@{k)X4TAIsq-^+Q}(4UP!&w8WjfmQh}Sybkq#9&Dl)ZO8;V;e zqF#gLL}}-vQjh9$ZLInjjP!RSgylSz6e?*A;e!*(9P`#?GYh3w977JG*39{`%b91) zrU$|?1VmohdEpwTior-+5Ex%@RM*X3ieH@sxfZ~t?r5&$64+m^{9#%yZt?%KVcjHqSeEqixc z4n#K22IJJodj_m0H+bWf;pMp5|0nR)5>S07;j$37gAyv9kOjT1#KDmP4goQ)@k!9C zi<(6qj@;*!c1b21;rMR?4N{_%GP^%v6m_SsbCj0><@kiMxDm97D7G(?oe^3+gY{X! z5p)Nl?teSWJ#P?nkRJ)u4=Y(TegPvdrrIm#{HO@b;SgrF_nyL-ytxCqF-$ z*qWD|Qn=*MmDeW?Tq0!z4zDP#5)f=qzu1ykUTDAu5Ttq5!Nl}UNgM*&yzuR=Bbt3U z3C<{`aH7ZvV=K)2%UbFAGiA!2$7a%A%q4quz0_P+_XmxEHgOs0Y_l$4*%jYhjQ8T% z`E_?4vw^;Eudu#njEn<^=Z1l2hX)L8-$371P;CXg z>PMbwGhmt_W2nNbC>sKb2Za!eRU+HZ=x>yf)XDIE3f9g#1VV^K+GM?ucDtKHc88A@ zgtIKZ<`3Dw4b`9NK}-F|$};xip>9TCb6Q&O5Z=yL?94}MJ1yBiX_c08Hj7xNviJ;l z+;ncFiHn!=prsL_r>jYS*&kqw#;ISz2^o?aB-R}EB{P&gz0Gn7w7@s2lJw(&uERhCnpDpX zv<8Nu5lupL83s&ez0a2tOM!uqc?b45fY6k)=9>rsW9cBs;Kz#*v4S!6i!Q}G9f_K- z@InuV_M&vbxj)JMJ22zUh^*)B;_eau&VaLR-z`U6Xf%cB$5sr|yN!b;C?8;sirOG| zn>FDC!>``4tkX5a4YA<%wn}Hk6Z(MPKP22RG1UI`v<=|b{u?8<4$``hRs&4-Z%8m1 zy_Ll8bO-)GDd9KgYXvqB!xq4ZV6r~U;`u}hgch_{OcTrQmO)O_eh~e)7)-x#utV}+ zZ3|FMU%J_+b08H&#w~b8U{7<=GJE&U_lFYzln=tLl%Jc3w`26y-YaPI3}+55ObO%N z2?^j&_b4E^Iw@+iVHh3rN0|g1aWD zq;!5mD`menE`!zuAFA?{%772FfEkyhw=}YXFVj{zQ7!!hBSw!)E@AQzTdIYEk%f9! zSG}k@4Spei+%p4Y9WKyXa2E+1hA7qx3lMnfPy@Knvl6V{{mMK_Afc}cg-d9)@3Mdx z8>+nO#V-`^XJXI2J$^jgbY$r*8~DpIdQ2e>rq^a`4jf$Nc2$w>^)9Z{QpRDX6;j&< z|8aJLnlta?uE7)gS1+zbRkt7@KKb>@7E~`Fe#}1SfUSdWf736H)%&#S0=IP%`HSw0 z79BuHIekc&B%sn^6$T8QT+V^;L&CS$1#7t&+(#r?B)(izEOqn>eimM3s1G|GRFa+3iFlW?VLO z;(&ONh=u0^ANeO^-wC`-U;gR)h#i2xYXGRc@ho0+I zjVEy^Lg)r6kn!9-w}JNfea;y^$ilBAs-4tj)~Ij4LK&p1YFJ$6#uR-bpS37ifdBw| zLWi}sZAZM#M(`Q`*d1fm_RuduLI=n$5Bj{A*6KV8(S((u?y8T0Izj3ClqCQZC9yWR zEbMP7-K{}%K`e4gWmqhR4v64#`49Sbr9YNki2ul*FWyoyTId}tSaK}TZ zt@0UB>{ZO;iH8f;`=P9H4zqR1{GkEg_AjRjpA8wLwXcU0a^Dwn1)Ur)eeCF zNEOo(%xC^GVcN+TZ!>b|5&x)@)qPlZGStsDW0lZGJ|>YT5wj3vvZlq17}Ny_e+0U3 z#Xy}%GGQp@Vh%0Cn62ez`&)k{_cj7VRU3ew!KLV0>fmmXAaB<0nSfbDO?$CI0tWzH|JI8Z za|Q#Mn!9v*7=!z{M)GYUyIPozRg?=;hFr%b-CgHiCS~NK*PDkDB~n%4g*@-eTlHLEDuVlX#bOdYUS9d7OnW6BpnPGxp`Xzgp*bI zTkFQMgL}uzx2Ev$yqykiCmg7=$}wq3ZXzWTYTq$o;*b3t#uCd&2L3o>jHUu`v-^u# zGvhQBC1YIVE))uGjN*07EI0a7*m!Vg3W^lfGt57lkC0AVxj~Xb)-9|Tx{+(`YG7H4 z?8hVbPf3^b-4Bvf22Mtx>dgj6CB9>zn9Cuq!?5m07uGCOej$>{7bV$^az*4!ILkCU zluCkzjc;JurRdreAt7K?5O&5C;0G{tVAlT>41gj{8K)l|^M8Idb$gsTcO3RwR54qdLBex?}owrLTu?xcuLnhfp_uWxoFEu1o0|HhmL zfcAVu{WQlOC+XkJ9cy86sfD$j{IbZwxr_H7>@=t!t3ekxt#T&hkmchY3%ptFBYUn= zW>McXb2Z2qYOg`FTHn^`KqzzL&b_>mFy*p4HNme|JG z=WngvVWxt_`0~0raBp$)>r3|Pe~$nWa7+(l`25~fGo+yTOQLI+^&^iU|atqVodj(Ze&-M$7vboEy%ZIVit)-w_P5q=z z{=`htUCuBS=Wg1po{qBgES%{(`e7t)q+yk)ZS=4s$4hyGb2*(pD_4!nIAy?+e2?;a zDD#L`qEy((^xhs5nGJ0AAo)S!0gZ?$grj*KO*`4$l}i_vhC1@cX<3~)3-6SFFqMR~ zPSw&0iI*{cz4lTT_ix zraP;3qOCr&)%y%6cw5<2zea!?|L>X}v7#c>DGajgU-lIi7;aCv?Q*M+sul?&XTze2 zgJV>u#*b~Mzer`sT3D|qD9P>Wog2)rmR-u7oE9OPwJcNEwf`VRmrizq4o4r@ce@>o z(tK!hnp>@5J|hH5*4b*8#PaQ(tMBU)FBO0w_*tB~iL~3Fsq36HG2;Txj#hMl&k(0G z+qX75dv&|hKOV8~HlrO31OSH;1dcahcc2mvJVn#it#=rI+51>?8Bsb zaPncJ`3+i{B(-VNI-7u9Oyr^zoIgc~(=4equ%8R(+jbm{A~T*ZRir>NTJI)4)T_c< z??*6ghY`1s9~+ygB*EtXqxPkGtkB6VBJ!SII83VQ8Z4QKj}^3cQ^|HKowjcF?)ukG z2Xsg9IN6K#5y0|k4&`G^JSk$wJBD!5R914T%Rw27>x&C-tY&~E+~6h8B_sIM*QyF? z(=2$d$T+!I_COS@3r@NrV!2UMUuRhd8k*e4F>jbjHRY*nEMe<%hKgyN-|eZCEV@Hd z9L)*mv4aO+xEBEg#=8$31&>3b$gm~}VzzSx!Q+@pW&!mg(LDn&sO;aEhVjs4wDj=O z{zyKY)uoj&9gF}I1d8ey3zi`o)@X$V{WaCUN~^8aCO_s_CcVra{(>pZg2hMKc4L0e zAcHqNujB&xec1rApwM{DY<5lQe-bzqER`nEcxk}mNKCzo1<&-Yw|lVL8eG3aGGmWuF}jVvwN$_fehRI4QVl#37+55S5$}gh8nj*tEOI zW_FLLNAOkzmXvq5_qeCxSn)`U;a(I0IRK*v^FITO-4sdBmD108=$(j;xRcJq4tT)W4)s;^`gh zT|{Ki3&+eNvOiB%SY=o1O2h+)O;5iS!_IOIP7Ls*wtxE_wApKNVulMfn62!2S`g!2 z%v_^`{6kOB7}gi@U^!H|rtqi|zfkD-P4Fa0@KLn8uE^HXB`4~hVFv`~XQvXJGIsh5 ztJ+JP&3lS;jRdR~_HgqRENPCvB|u~`z)SrpfVCGYW}T^VZuT|N8JCOa_+`{L%X#>r zdxFSi=6Mb|B?RP=DPLdi}=cNsv7& zj9ZI1znwuPa|+H!jSnyTdZVu)m0MMwlVw1zX^M?*wEh@OHUtcxmE*7C{_Pxhr#x6-jKKk@y_9-uc`vYL6aTNU)uQw3Pz z$>H(seX8I=$v4}*Og0rQbGBwHbjgBJ9*DwTL7Eqlu9`c$Pmcm?UPD=oksTm{a)`=+ zV1CrcPmp&jyg&)xBj-tChCKJ4Z<{-GibQX9ygPngkz@-P7<8U0)GK(rMaTqDd~qCW z-2N_OtQ|%)KI_S6-6Ez?*-bqFuLMjkd$LBg2D{hN^=r*?JF_ZajI12UB~;0C!PO~$ zjNh&46xwO4QmP*{@EmiGMY}x1Aw2@O_A_xw(axah%JHg+#Cn;{k$gAcGS# z@s~Vjjvav2JntmMVdHLKua))bW0h1Rh-HA-@0Qj<<~XceMU@FK3JJ1poz^buVJm2# z%{)cjQZT_e&Kb*v7{BYL%PW2tuQ}k0RQ=sIda};}!hT?Dw_7||!50ho<~caXa}^dx zAMub*?>1uHK^*7}D>ln3cmwEj&TEmY)6Oz*j}JW=TV$nSK{e!)iBqEw>&f_Bgb%*& zkKZ=ziRQy)p?!-&O)`v1!Z33H8For_QdgpW7Eo(LMzF8-2Clv=hb2A8ZJD~(o)6Dy z{p*6r@?aAEwf58h{Q;+jh@XK>l29oR%(J%qr0@i4LSyyiz<;h4B?9ndOA1SyKM=B_ z&d9iqG4+QSy>r3B5_Bp}_Ewg+-h2%Fv6LNzjg>!>cm3M_g7{8oUw^+Q8EI0>(1Nli&%KmmC?@%-_ z4()BVj-3;J9q1h4RR%!Wb~ju!868mM77aVE2Yml6xIp%>(Sluk0ht_Up!YSByOFaQ zPIT!E!S?o|ZSSj-WqyrtXdSqofY41r@Kxb|keQ2CFTjH{Hz=~}oHj%W%;UzFo&KIS zi~>tI3hDag6)M>1OZ}K(;7soEY;|t|y3bjiu?r){^fH%Pd`M!S)g?T(SVi9k8rD)E zMSqy~V2#wzbvjQ23gGws29uYQF#5lR`{QLq1!iVWx%q+0r?6;)paG^R_qlzGQb_mn z$VT=85yT4jIJ>)GXeCGMP&wxH0|%YmYZ<&@YEOuaXV+(MFHd4v%q$e+)gR^XdiAa4QeL+3JJv%?i0%bA@^Age>-?d{4+RCA>M5(1 zq<;Kxtwqz@9xju%fhSGOgp*AMG~27ahA@k%E*!4*6_&k}2vFbWP?DNRq(i8_+B8W( z8=fS#-Z*lN?)Mx{q|1g8>?4duqdP#977pmbbQN{559g?X^Q zWA@bg;M49)o{u$;&a6kKDR!!AQ#S~=lU%)t&F);a>kM zmokeEy4vjP1t{HFJgvx4LSb_tuoxq&Ud1`X)r@|<6W|$58UgI~-CFNQ>w665#xa~C zNqbLK=6ZSmo7C!Zxv{duNTa&^eJlA|T+`ioMq|C?my6G8BzcUO7V+V@1FCe3vxmcO zKr<4%e!YTAU7y9!##^3&Tk;Z_H&xkK(6EDY?2r%LkVzE>EJ#?|=w zsMrM21b}aeJ(^xa46g$McPF9Od-^w>Ix9rM^D_ZsEk}+A?=Jr!7FS{ntCKCa#*ABf0D z&8>nPeA#8*Jm6m*5cBh-e4(d*iq*hH2%}h0Sm`GFTD-RVVLk4`sN4u>?iNAJO7sZOArj50Hpi35sSK}^mczq@pi}&j@p?; z74Y};*NZ_38H`n{2OphXvvbRrwYlNQLY0|;jNFM01m!(GGw^;-=9*9{|4iqyU^_*| zo5S+o-y*x{l;VES@+O+Xc41b~3M>3&+s}ntioGEZrhkx0M4`9HMdk;P@!|FGZ=R5U z^>;etj1_l7A2<1)phE=q?&r{w8Vp|QTAlnj4K zjH|^geZsg|&Ky9#&vLmNNl1W`>*3nY()#|D)h)>OLjyJa?UEuP z1Ox}n&Xm%N2l~^6{CN6&K&ev{3_zd(yUlC!;z_15b?@L{_AR^4i3e}MuqL=v5EthgqR|%Kts$e zaK{SPi{dKjp^nKC#2-49_v&n}F5NG<16tvtLxSruW;{!!W%qillYJI{y0*jspdoVW zpXhQ{tnyPB3D+pV&`yG0oS;zB0r}}0TlK9fIqbw$?>0Cpono++X_7f6B=#f@9 z=fOBY<`Z$|IaB>tS&Nr0j7fw5>HCftW_c4Sj)qz-s++YnN~ir`#z_m@1~N42)SK4h z4xQONxDm?MG`ZH}6Wc253nFads^YlJ8Y7fbeL2KK!k1(O85{qc6npWfAI&W{=H9fL z>x5@ni+Mko1NB&4Gs?aGZm7mV!HQ!|*%}Vj4l!MKs6T42t6X(IvAnwhT+JxK@e|9G zD|NdzfEi(VPmTF!OcBPYsM+7&7)%znZDrv^SP!PM%Y9bM>`q-K6sjvb?ete{DkW5T zz$%+5_)4_!K1^aC7{O-=*)grD&ehXSuoa8#@JWt%DBZIjfqy(&s_nI^n=1^It5l^# zu&i==r$9R6*MGDyu2io9M@dQnus z_2g8=`##mtF8ncA#DN5EU7>@sQv_*NRFTj~j_HKade=UBl?@0>c;+n;Ry1rgr2h0~ zv3idViNSZNuxNz8jc6LiqNtNecbm1-unlpoeUdef+^8)*$X#mzDmnt}5_)7<{?I-w z2R)4hZDWI><(wj-E%tr0s-%G-QUY=M2T&{WjL-Xj2vlfDgHaL`!#U4`-r_yW=|>6s zKABr;SuQn`T$c^_BlzzC#c-&FFi1^lrF2J_d9mO+KTL_5fldN}7*HOO#0Mm-ayV%)RFw-c zbfx&dswtV~_B^bKU;sT1K{$<8wb2FcZ+*xSx>re>{eo%KJ}}}P0+U#Vo)g5rztaRV z8s@-4b|2=)c(yMP?HdFW`hdSlUpvjMm=}&rnsvqY>ziFlmd|>@22o}G*P-1^LWzKr z$-Pa`s?hnAX6V6C!)MHQmVD5rxT|edDF5bJR)*$`4~%iH)vH7q`p$p8juBPffAPCI^RY{)<5CMn|`TjFLqBATYW`TlK(JIqIke79&G8VwS?f_Jd6FS ze=4S_mb@C!@M5 zI9zLhO8oA=2dAr{$2G-hQw$8H+F{!?Av{4#Sh(A6hTZb*k2^}~&hBA0!_`VI^Ey6V zd{c#?Ph-EVR7cG7;fsry7q}1Kh_Ze6dibda`D8+|>fj1Fb)usM6k>@dq>>2|JmHMC zao?HUMpt`{K(^LEbeByQdnB{xfI6!BgCHK@uHrcZ{#JRbrEzDi1*#z}{ZV;GXIR)! zCkQ_7$io5L?LKLG=Ed!*;SsrW|%95Ei-p0Fjb&lc>d@b2L zUjiH5#1ZdW+VMwkP_DM!g?X2Y+CTg4f(F%kI5u*~Up-#v-}^_dp~ZM`WAHL?@#UMq*@eF4gky$QNor0o}bhnoxTu_Ze|F0uF4YBO*)nbo?P(3kyj%i3F zenb2#@=LwuOP%tzcR=n2thnO${QV-I29$Qfp~7^sVPd`NzB@6eTebpwcVYaK?SIzQ&%E00A}AU#(|_jG07V+> z&OfKUKFb<6NSWf4SA_3Jk(ZIorTYe)!yYhQ$RmSq4`;;f`BEho*~?uafUh-&O9VREf9@aTw1osyy5vYy<*iT40XV%f93 zYCP+sJW0;z&o#PaEt^>@fS8l4^th~S5*NCpMt&oEu~VS<{VVXQdfJ};lJ$=iE&#}{ zV3auLV?U(W_MXe}?IPvnvUPn64tJZ~ldL^p@82k(;@%m#YwYo^7tasoc>m%2oKtM6 z-AaU4CGda%9@yn8xxgFRo?29uSX7nBxV~&`=x`8)HT^XWPQSehaC zW;x8gVxgv_s!+w8XmNMv<+97U5kcPe^D@f(m>mMSOA7cqa-PhLsJ|E0m^j^cTiOXw z34j56MTY4jue{j94Bo+=Myg3-iV;Z~5m2Cy!EQ!k|@sZ`I@sC12J6D^~8u?gI+R;Dlm%Rd~rnV_XW|3+cq8H?=Ts!Y(Mw^k~$>)cKxi z4fiB(@+W-<1HE*~Ap41KC;z);?^N)d-ywDSZ8kJPf`FuAFzv#4D#^#WD*4<{g?n@5 z47HMLh`e}Ekjt1zbT1d6yqFy8&q=-D2y5U-x#VtRg$V+l3KEd!o z(j#Slmo;X+^YSU-xhgbxXKFtuOqBu*ixz0NFPx=8M$j>N3y?-}ru**aHG41zV-jdF zeKgBrL*pjknv#bFWIC7b$mAn1y!nm!e4wyf&=14rLb9f=jw;sBmuBYSQgC_na&Xfr z^D2oy`1X1w+t#iwgqYyz5~wg|(RBi{?sN5?9cuScAoK%`EjHY6?BrVo1iBL`6zHHj z2$tgDmg%)m&d5@h$Dhk%=QEg=!#Fq8?dt)B;w;zXPKX<2`>q$>=?qaIETGu@9d zy>7D;)Z<8fjp%b{eJt15hpdm-E?it8qbMwmpvPwoYjzWobav1vep2?Qp>50M*fp@c zAzQHCD5tMd!tVL`m+p@a@7lVbC)IHAM|-dh8y+0mB~LYWUi{4=WN7&uqE)MHO3-l# z${maCD4qy`LlTL{X#~X)3%!}eSY-Ts`h`$PN|&QZ4K-I?T4D3`vnfL zm3_+^hu;>oY(feTbmAn)|5_4w0^;&=abDu#8h(6Slp;mNdvN@-cy6$BhLHlU@qus* z5#mtP2aQ0Ac)p`;_0gE=5@ZsO)8TxR8qkRDNZ+(ybM#O|ovzLc7(M64s~opcEqocj z8`~DoXrP?6%uFdbaynJLe}!EhpQ-Y_k2Leo zBN}#cyr|hIivyN@s?%5xgv?UOp=GL=g+PUpdK%3ln&*Hz&>YC-#)K_PeGpRGD$;ml z3y=KDKB>OFe2dH)U~nB6KqHwuf`5O(5gt)DD$#Qb%%<}U_5~zs>j?wi;QGZnJzl{^ zb)4`Xi#!t;S&>ssEOGC}PIvB&(bWUm&<}fgH$&_<384yGt3ci&(p&?1geVFp`aY$# z^brluTx%S*bw-G@-ig;>!cIEloQzqjiQ8QH8y`99_N8ncKua5EDe^wJO_}$~k3%>z zQ}C-M-B5{243H=W(qLJDCmSCokfkZredMZ+R)6@i3bojrhN9CCoZAVrxPqt16&fi1 zkM~TQ3|6iD%C`~2vDtsiet3sB+0t~GA|^H-tCLw9ZKjFmFm<;)&+Bs3N&-Z&Mct#u z2F8H^i`N_qK={tU49aL7=Emem%vh+0D+vZ(V_SePO6|9b-?lLACD{f*Lf^MqOMb+X zui(o&CpBVHeDjMx{FB3Ggr*WkzIL~~h9`<`+(ytWt4*Hvxd%hH%As-tRbvydT?L1k zlTn;*G0E$4B(Bi)dHo9)hI}#vzm-frRvW?kwMA-*9n`_#Iwua5wfbz4qym$-c+-XV zkE}r6fuTB@U9#xL7-@>LM0Dfd{W1FAw1K`no?k#cZNTLJ(^Ipg7@hqX zCX3W`9OfBOeXoB~#3V{4JY54Fb~W-MH9#~Sww7aStWgW(L{92M)yD&FYj$=NMEb_Z zFB_j()2N4``S-J@E)QG^S8_hSzmp-acCtrZ)$B z^Q(hN+uhx5nYy5_&Gps3zhzqQc-}IU#`LAZ*xIW5To(mptKL#kqlom8e-m8m0G`Un zwb%XOqMWz^l;&yM?ee|WDe{DlYU{>XRUIzsNzJTFp39<{dwI2vHUH9g#u*ZflUljG zH1u0-F_88-ZHUE~{7C3-%$i31cSQ!eFPAd0Oga z0F8QG6+Gv$bI*T~MWU{IeMliN0lcmniLDsLzFI|{$GrD|jQmUuoNjllzP3rkr~3tP zo_1Lfc%P-3Rs{KQXIMQ|u`XEb`>NI8N7o6FQ1U=KXq?D$?sc|qGWc4MC3r#&C?U*s zk*erNr33ubQPA9~xNs9S9To$M1 zg$lj;Ld2IpS`RIW(%7jxt`1q2(E_HI6;x+N7YNB?D8yvzILefli^@s-iqx_&^K&WE z1-0n1MzweqS^NPj{$+l?ZK;3AK3(>(jzvc+mDd#vpir8x@Oy%D`m- zV`CfiF-7!I`*0vvp*wRp`7bV zKPYWj!3R#g#qo!zl*|P=B>T`op&_bch${_dMhveOgP{ePu~(SK)}6lp?V}lmfl-0E zI8umSevYEHYJg!<@Vr1E01-Gm`?A*UNpmupvx>-MPSkPG1nThy+ho6_^T~>C7ch*W zF6e*K63O{w`6rt@*1Ru|;##OE<&C2IVDXuh(UHo5GApSC3LXvP=&q~>b35&%%r8_r zCPCi~buY{mv-8&>QOu3WyrH&mhsC@@cpM}h+PN+I;^ z4d0fo&gX~gXLpWfqwnhT*?V3x|Rp;Dqyih+Hd>ltH18Sig> zI^rQGZSiztWVj&n7y8X2p&P0>NA*iK^avHXdQx2VNw;(R#Fi(XappQsxifja&O0N! z3cB1JkV#mMwLu$u~3}-;)FcX4C;_e!Ad4OZB9Kuv}==c)-^pt63ay+A3 ze4}`3gw~&8d=tsv0S$CYslJMNip8V+t_n8DB`X3>L*a#Z)DH zYA~FNWX&s^v!3Zd(!T{Zd{H~uqqrJ8CeZPA)2c-V>8v5)JZcuOVPw~s+b%&+U+XZf z-5sm4Lv=^r)xq9ClZ-Uv3VBK2tZ(}7-7~rfbZqAxjtedGuPL}bAUFWG7{+)eS&S<% zy8sZnnk=cV%805_faJYdXPadQ@<4dXgM*h-m2ogiB~l@P2gT)ys>ZSn-ia{~K`XY0?Z7xh#Hru_ z2FI&))_2PP1N43%9v z)EN($@9Hfi=d_rL;!dfRI#+1_tTCP&hmrm{cHSCPopT<60sw0MLhlUoa!Q<0<1r*U zSmb=@ob-HZU5xqI!WrZrS*?62SC{nhO|&<&o{$i&#zhl!w z);rSO7tpO-1sqf-hWZy>S|;ndH^(rjOCy{jVqis(c;TymF5wy9SDoYKtoN-J>nxgk z9QgcvqXk3u0o%Cp80At&*%ewJn~6)L{C3A_67~1E1RqX&Dy!muD%)#HLgM1G)=p0` znP*A2Y%rl0dV^=@p;0avsbj}bjW1xFxanB7cVw|IOVzZj?l6r;fng+G1(cA@Lrgt@ zc{^%W4H#_Y$;cmL%Mh|dGQ&c2ZsjuTF2*-lzl%+6< znWAvInFT16m%e|}^f|L=HnF?)VFK@q3U!o9($`b8 zWM;bk26*Zet9j0ipHJ>hJq@ZiDKXK6u6 z8Flp1p`G#$VoqUGT{ZcbC7_A0qzR(_3{>KOJ`RAx{B3dZB#4Ei6VbDYjqVvm&n#-C zefG93#<8A0M7B)Iga)Rqd>#mKOr??22mEGm0R^*-A;>;$G~Rl|-$WNlR<>by3T)FY zc1o~|#OP&%2(|?V4p-$-SuQ+!pEC?Yx)KwGa9%AJ{_D+u~*Oh>NNhE*jIr}BCOd8kP=|@wkom+ zBc!L9;JoB`a27acSEK`kA2-8eIgaQO0F)CBCDKaq7oi#@e$Zz}1m_n6Xb!sQ2uA+& z@Es^lmS*&WW*MXk^{>HLi*RfVEvD7$Y9AF_2-d70hPdy@vAnEwW(jh-=UPa?Fsxu? zr34{0Z`8B)xUG!{ApPg&OH2f>7J>B^%Aa|yV`Z@sCFaGDXq(uF)I?i)oCbP}e_tcn5GYEFB)^xEA6 znwE0A2Z{p9#Ky|_UmgYoE_N z!ch`f{IBF>k#Gu$#fZFTs?Sh&iop+&McX-G^A3+aAp zs;(oG)F8vV)U48&ys#T?K3c4a6gXA1OhBm2hIIaTUaC-4;SyZCwiURDZX_RMH>E}W zf><7Sy@J^}0LF|96Fy*QV?*-aNaNyOy?8yUeGq1rD2s9*qI8Y5jUuj?6{D-@q!gOO zT&BvxS_5f5vl@;}If+@o;ji+B;!!2?-?a4w@mM0Ju)(jITF$ojOy5{rT5;Uub;YT8 z2~EX>5e2jA{WXg$?{eQ^(XY5BeK#DZ30Tg9DAM#0dmbgG-}pjM;RAZHRUPgO06Qp|yaC zn+u%E3GhZOpQu5WoRgHtDG&E72R*0jWz3@-Q!9H6epHjIY~Ev~IENE!)pkIF3!hZ2 z_1BI_>ivD9!4!1i+(1RcI~kj&7Ct_~4$M88i`$8YsR$gtatKOG%i8m==I;o5ud&$Y zM}?3Sl8T^&;l>zYKC-pV-=OefVX%6#bZEK6AV6u7nTF_uoNfIagPo(89o-^(rm!ZM ze2Oe94_8|2)$5scBmX;Nw=U;UmG5Pn#{Hyutv>ge0N|~|)3Yhf0iC|dU(3Bs+kRs- z>|DNfS-E8>%YP7c?-3#~t4I7Bh-kg*TA&6RO5o}CV6@^-qrP4?9s3n7NH?eJX2#%g z6repd5Bkd0;p?@AG3HBqV&~MkUelg`?Feqkcd1j~Th~Y1fS&&;uQ=)RCmZhjW&60A zg)`z3OQUC)`-)u&1j~2h6^L=wAy#*^aSiwgqua0jQ-hg}1eTmrRYm`WBLgS1ngKs- zsJ6Op-Wla{Bes(B%zD6g%evKGGJXi%3CMaL?fI}8-C5hg5wVYSF*%8f%WxWAUAnB` zd4F)5?*jOAfBaeE)2ZC1Tbe9#oc-MRoZ}OSx$HN03VU5X!9sPG!_NTrq7{-c%5)%&~Q+Phk5Te|9Z0CWjH2azt)gJfc9mTM%aTBdqQ%O@b?%J-SyYF2NZi; ztU^2oql^d%haEu8W;gib%HW;FG2n0D#Udf*PvV)%QP*CQ2{B1|IXWoc7+c|vQMnCJ zjzZXqs=(LtxA15q8p@8GU7qy$dFNd37B4`!Qv|>ja?lU1mr|%!H@OUC!zer#56+YB z??0e7#mq+n_L?I)LqcoXNa~Af0cmocv8!`|6UpSJO+@M_U%d}8EcI6ScU4x{*Uc;$ zV?@7Et6;M)R_KAw<1U*HBk*?X33(zT`ps%GREKR$VBXQ}U~5amt6Nedd!fBUi3m!g z>tJ0ItpIq39+G&2+OheLJ`?Ccc_h(Y+GEfoxn`>1i;Oc$N4MN-eZFE601?`TXj5bf zqqz5uB@;fYlok<*M|^JTkSK}8X9dU^g!T5&YB$-5GqR`zBsf#mJ`XHAqi*7YpT9cw z(W3G5O!%~ZJv7tALSR?&ZU5-EJvAZQ>=Kl2km(~mSML4iNWMq?5G$typ_ zMC0)$=vC%q*}ac9yUECp*h2~GzzDi1FR!=r*S3;Bj*Re*H&yp-+n%@Tse&XVWC(8s z{|8y=VSK@Ux|&nMa;4JPHN!2v(cq3AXU!4Yej@-jXH^#e+w`;9IC15Uz))Haq{ptQfMndii4=k0iXH2?++BT7P z`mO4ypI4*LRzse&n9h09=asJ1tPhAsC#-VflnW=ur?>&+%eI8drcT_86;aW4igMi= z0OwezGtWr-U*aA?w~P&IaNUp?i$ky?f6JtKzu8;+j0 zLsHdIf=YlCtDDDxb*_<;dv9v2Pm?pnQP9W28sji9OtKYSmZM}_QjF|0thqQDE zlt5{~#a;q^7gD-cw6c9Moy%JaTZN?fvKu9hvyIdoxDM@qIT1em5yR@uid3LWpubMx zh8o5t58uf=+1&q(s$y1lofWG@hD6?Zd=<^yeg|By{7_>&^T|N0C26T+MSDao=1XS(NqTFy_X6wS znkfT%Si;&wjj*2PLL_xkn#L5v#9o$|Y^_HJj4Zl;f%V!58-ko78`q4(7VYBT4Bc}N zHxYxSNKHO56BF`;tCpb`Vv+T%%if2u94g~t=_6H(3Qnio$-_Ue4iH-OM)p0 z9SdUTAQmJpP5aCENxs^7!nvNtz-MSs9^MFpsu5{3 zene$UmTySQGx|%%H);pe`)bLGqY$1`$pismFDhhi6DFvY*RDdRI#l}S} z&0@M-{%5u?w^8pCg52dEsmA#kYZjoxYI3xP9K4%0;Gx&B*fQYISN<`4$5 zfRbTXOvVoU(Lk|1xAr#zkir_Um}-RN0WXn;o|sSzrW3;xKB-c|OYKTwTN6^Ku{yHi z$u<0P0>_V&gn2?e@{rr4Q=|LA8(Fwdu+?8SE6jVhEaqIsmhmBbsti3jhm5o!e7`x( zG>!Z#Q{5&c$+QWiLfS)TrVfK79bp-POlugkq%#G@i{y)n3?`wM%pMxT9+g6aBb2zK zPu@YrV}x#PoMLpCC&jUMOMlB;cdNN%EOzq3))U(ft4CQvi?p?l_JOy%Vd12=8YI4q zt2k23}iSVbkI@Z9*W$8cQ!H z^W=fJ0b5~aRvhzOGTIQL65_f^%_kG{I!%r9Ji2Z>DI-z+eK!wLH@KB~s|?b?Eu)b_ za4tX0by(tzB%~&AZS2Yk&m#Xv3Uy?YjRZ(Lsp(@1QstOBN+5o5;JCBylJqeWPbDaD zRBTqu2_&I?cysnoH3$7fD2W~N|L^*+W(R@}%+C7XJC07x{}0MYti4Hg--HSR2G(!Z zcLk!DNa2KxA&+Yt!sz|kMDLb4&y=jdFQU42q0b*J_pj$tbbA~cG z9-_dihYFchQJ8Sd$Qaoh-hq9!Av!p*{DwPB^@Sya%vGJXpt@igD1uG7_LoD6-6de5 z-Zm|9mJ$AX(p@LxW&*A49h2 zPhU4k1s z-|>?MuxTmds%U(m!h|SpRh<_v$F!hMT_!6(Y?$Yj_^5Mo$(9n+rc-EtP8{sKC;Qar zOH=AbYl#(>l80v;F(wW8ZL!{U@_>4<5!KyjtaN4kLt3<^g3JH)mjVZ*4xS|8s@s*X^l9p)h3;> zC|f-8Pf8EdmRTk$)~L1t(EjUp^A|@(YVZNAg8gp+D=g6a(>8q_zP3}1Wsa-fU=4NO zZ==33Xnjj%{f1Xwtr#1JgC>}Ybi$ONX1&IyWDOL3Qd^^6=g+Ip)W7Q;mOU>CjDG)7 zeek~ICDP$b@3<}{j*V~ncd3T-1KXvZQz2kW#6y!L-Vwv-X+Ld{2Kdar`-3%co;CPe z{6h{j!QV3NCb6TsY|Mj=xCs(dqDS5jcgFVBHV+mTs--Fx=Rt;6c;T%aGHbG?c4ScA zk+61CWB^)~DpYX*z*U818i)_+pmWvv)5nR~MA4hBg!m75U+l0#tr;4Hka0_U zd9Zl6NLljt+DeBv0I&~&D$WDuW%jYz8$ObMMQYlKj?(kPc(xm`*K_MO9A)`CQ_;Q6 zTGq0CZgtGiF*E>4_y5qf&*5n*%!0hsxrYEf&_IRpB2r)90IOCR_Gi+dlVsHVw0^52 z@L(Un1KO7SweH?{@sHhaUNUd;Nf}nk)Dr%VVk1 zqT`#(Z!_cR2VV{ZM^X3uPMb~@&ng|6( z=HEBo5v%M8Kw15XJ>lxI+B_fQ>GmnlTTrY0z@3pqHxZUKf?KHMz!8m3>Ws$3wju`?e- zU;(1Y9u=>R-PPairsZyj%Si>-t3R9g>tz*z^2_eyfX$=(6+q7hAvv-54!dE^JTN8b zgaG)DfL7}08_qrCh_A-ln=Lvxs>EnmO#~vgD7DGuqSE5@B~`t&GiDvcux?v0C-kxZ zb8m-oDR7muMKt{8R}(1IQN45;iON_k9(8~txCQ{q24(=E>sQSb#;;%_wJmCsWieSW zS}7%107K>t&=G2KUI;&`L?Hi!SinI?3?JpYDvnisDi8&>lo&xi-nG?=(_%qZ=i^0o zYlP9adp6hu?|S=Gbj4eO;??@fpIIg@{Jw8T0ZTltGR!Aeh3J`Hq#2#iKL`Ivi52sw z#*xly2^GxxwIo#b0@Zb${WOfc$k-`v9)>hpg2djnGI?$QUuy;jJ zfK4nsC{7OiBkZg0%(pq&r2h2 zzSA@$mfbL3L$oUjLPNI*PISWLQVu5Dq1BnuVhz8(t>4EQbJZmvhDY&DXaDw^a+!vd zsE3p|4md98o!96S{V$9dYr6OkMvUaYFk;x`vneme84Bm7lC9y}C1K%!!}^A)akHOj zD7o=}+0`|9_?FoCrc(f?+*s)z$L9n~P`yrC?b}XTnh`%8Q|~koPyi<}9j-rW(X0p4 z%N?8q%83_>(Lhvmll=}cvMMkHPh}`QH~~aUzv7npPeEeb&hvG5vIk0gx%hlNZbsi( zrP#hXr9~pg?|f*iPL($3(@0hJTA^-fK+Tkaqm?YuLzEEFlm)PyVc<;OLkFYaGt`wy zTclNndSsLl6NP*u@vYfiHWH0b_ZvDoXL2CLwfxT4D*jt4+>BV$?Id+UPUryQCd z|0(u8BNkEAz`kivQO!ips91wI@TJjQkAZpuGgK&#I@cAn5R7~4DtnTtP+uJg8}Rx8 zmPI}H6mEbEO#s~VffieIwfc33*PT^ly|0NsjsA#8w82i6>MU{4kLNaB9FsqT@~WTQ z*WGR6H``5Mq&cLU+6WX(Wz~DzaKY^#;?rvj)P%Q9|h6nv&hWo+$m$yK%V zj>pr)sB+)Dk28i3=WcbiQx$Tf#?4(9<02{z;O1$%Yixl`HU8#4m6tEIH+f@m7K-uf zu!A&t@^$a7kOY*X@z}PkE1WZMS|x1QU2z%~#t*G~UWvkX`l{s4C~+*f169#+d~-N% zE{MY_b^&1PwOg9@cHPwdIy06foL>3(gU-AV)Y#nHuABlyM4o05H*<-iTqy%pMA{5D zh}i8EXWxYe& zR{2)U7jBl6hkK|eRU>-HD^6QwZs+Bmx!D(0+hnAaof>h-n$Cd$&SW81cEV`AI3ZRd?`+qN^|#C9gh#C9e&Z}#5jyZ@oOtE+mg zXFc2#Y}8$vLX4ZKlnBkq1tCHM4x2W>?DRr0aJ4TdRldaXx&((@o^bh~4K+gMehJ^d zA|m&E;uo-%M9zj<)Zy$T=u^99443xysC$hfUEPQ0)SKXO`f8jW|_(1c# zAhhHxiDZJB5{J75*BDy(t5|n5Myo29u^i`x|>%yLb}5^+;TV8?>$4F z&*A}$&|Wcagd-UEus`Ss2vBA-`pjV>+xOEUX{t>O zEOCvz2b~t?Q|3M7(vY{#1`z!FbFzEIh;Kgy_+qv4^IOBb zO>}veJoc80#`xSy#gUKL6dC4RTFc*EdGiKuZZk1>Ms)4oG{Tu5DcQGK|DVVoo^ ziJy_I^|v)Iy@s6G;SKBQYdl5VWBDT#hh0sSW|B+`F=xs1v7lI7i8vTed;NK1{MTnY zvU%QlhLYS9AJBz>_p>jGl+Ib+%a1e#>0;%k4+Ne!7AX}+wu zn(-O?WBLF0vD=Sb_V9mL_q|nH2%}pl-{z1l7>3vo2e3TaZ`8e!cFoZ#>b7&6_VKR0 zxTa-sLcNbB3>QL3br{746k`0`SD%|vdSK!=>GCMY#LZc28LC29ZqlU?vxX}V-4C>=0Fx?3h_KCo6gdKRc2 zyr0jVcN^#P+3Vk_@#=Iy7HAbPdOA%us1dMxdQ3K`Ey2>qj!L9vo@MIhfhf3p2i5ww5`d2mn8su3Al;8qIcu8+WVd0lD0v zfPK@prn--ZVtU@`1=Aml7-HjS+dgE0bWjOWu4&>|v#F$MJhkLf$D+h@1fn4iWYWKaRqD5zfy7@3UAYR=jENV|0G@`%+s$ou?&VsV=I1r`ua3#p zrwr0p6Sys`zkKS?&^r}=7lar*mQT9vTa^#??I82Fh$cv$1rms7BzxmkvXzWr7ln#M zX%?KU`^LG3$lCu9N-vznZNc{L&+yddqvV)T*mCkb?xwB4VJ;TojR2^M$uu=#G%)Ds zX8@2`K2tcGJO989`=V7PsB*nj-6O40SJaCzogwYw3cK1`HIHKK$5_j-F-TYUVO&^W z9ukcD=AwxRmPNMwG1OY+#B*M1J5=eIAqYB`(WigECG#z-WV)o69vojC$SIP>DRMNI z90`X*KXNsAjKZOz{t9SowbR*x$M@o7E7n@I=^vE8eQ-Z&ciU?ac$9f|>eE@g1&QZ(H|UX!$?*Y3|fsHB_7W#r+1iITA5O>^_PFq6U#jJ=HyyWXCsIu9wA zw~{S#CkD|7#e5sRH!>2}PmXj1823dbQ9n{gD7?optuh^!Z#M5ifh{VXV0!S|YugxZ z0dAeKsF*!r52JQdS}oMozYw!apSU`5NtCLdRmgHMCeL77B=t(VKbpM!n8vKM4?F`gL}9#GuBQ<1FWA&h5tfSzHJ| zd32x)97TzQ8z8L#0u#Y{Cc}Q6n&^Xd1FCDN7Q`?x?tuK!)elX2z9R;$LE0Omn@DJ* z^M*&?WfH?z-tKp0JSSHIhx7h^n5!^wp3<$4WQnzq{46vNu%t%@Z(1T<3&1A#{vjN( ziCxrB49Vws{p1@bDJ+|xY5dd}r9WBI=MmR6m2pDxg}hFM+v;TLqGq&Fr+g*N3&8kj zp5Ygq&<+dI*|kC-D)!L2X_(H(NktF_m+Bt}l_PE`R&2!%pdmBs#z2imE$$a>QX84c zlaUi@U%iEE^_}Yd(V^%GT|4ia$q)r>P*7pk+4!3B_Xf68fCUP#^%PDJkqa~DyIPx7 zjUF|K;eav5nv&;4xnoO*eHGGM0ZBJueyN@hDDXM}({r&GE*xG^noM4?eA|}a&=gbw zq!Tn~RhA^GSc@M`%Y}s%N!!<(+6LsG=NM4U8W`TIdMWG2;kO+VyYkDi{K$5}sWxKR z!U@ZYI^_E+(Ckx0*RP4L>7Q8I>~%PTQu|b^Ue=aBlHmTF(R3NuEUBWO0n#-kR%;A6 zMnHQ6sG)v`9qt4(p}fUXEMQ$wJg5QH^T2UxO0?LJ4I#D~aiLEbqrtFy5!wDZN5K>M zG2OOz@|-YX2o%t}!AxjLUom9=+ar)!vGzer0Efz<>qO-Aj)6_l^iRl1-#BG9Nj&3?+>0SWlDBJMD;VD~M}REcU>TP>*asHPu9i2`+IL>-0@pY)>tZ z-lA*$&`k~BQui+y(;ObYKJi$)cQH^^0H?Z0=jtwGY$O?-5+9gP3839E)TTCmN+5vD zx-7!D_iAbBep@qwN>3pC6f91GQjTkZ+d7wbxeOqHXNBLUUl~7^bX&??b-ax?8D=6EP$=-%^$lR9Lx|S9flp1> z4j83bf<>VG+>5hW&{S~487=lx+G^@5%!I#@=B%0w%q$QD2IheBTVO04bjIg{7Uxc` z74}N8i+)VUIih5j>h$%N1wixu612PXw%u2}+65zrP^3XfY1A9VXv+8d0);yhsQJI! zrT`cO?fcT%-3Fyi?=AjzV$i}wqCJq(+cQd`VKW(mJ6iL~oz`Fdu@NyYK*8kWotl~P zVRZ=j?rqhESddqY-@T2ymOS!U6s8P}S(=%6o|&}W^*w32+L5TF&>(4UZhMuavdI^9 zYjlOoISsp ze`5_pP22xY* zVivO)*I^@YZYxL-NM!!W+2ni=mjz#d-1P%30a$>Pmt@~e-FxS}g)Uj_4AEtFU@gDO z>|FoIY|<2&Co9bgp!P^&-!#f{cSM#c;7z;k$>YbG#VRU+z`c_fTz|(+a>KqE7$jA3(k3m_!tLFU#WV96mR3e-f;Xbe zffenhT)u#C5-+EIS6l<0)6Kqhq(pWqrY#?RQHi@!tVlWzAfZGIgDuPr^3Dii4TqYQ zoNp+drfvJVBdb$%Q`~ZE+izd-=mc`^#&U*+8NN^ylBC9qI;KY7ZMSKA^_pUjvGm=~ z>ap2vD2z^BqoL3$DZ&kkXz1Iik{I9yq%f72C0E88;w1xQ) z2#z!+$8*G8d7WAg;J1>7zmVV>7Tu~{|M>D(VjfP(l>m>jf0WfIfkJ!&iyS+O8ySz9 z7%E=qCg$?`o_u!AaljQB#(~pwA4ZO%D-6Hc3?dio z0Q^xd{L&^|1|9n3w`@>$tS1bSzwvtac6xt=(p1Ftol@$3$bYyXbI(~y>8ddacLj5T zYfXfguE!Ncfg~-l@l6%Um zM<_a|gVXS;p6Vb*F;Q&q7dfP<>P#EwAXg@uCRGGVoR|Z6^{2Vm7Ki2~38k=Xc0hRx z_HlTY8pk>{{{W+;*JZWd1rM`|hag>LvhquY$`1Akp;3?sS2K$MbMvDQ@}UDW`GRPj z$B7Xr*b_ot23Xns6tQCtThq4;&2G~#C9P>!>h`&;qb z!r$*3Q~r)?thCq;t^nA!NZW<0&4+L5BPX#g2f*GyVI+svl`J~ zPWFt>1SN^=BOi`D%sp|o^O{x!`Ro=)6&Wk8Fw-a=Bva9^Up>e7j4_9aKCyz%B1g61 zp#{jyUk!m1=(u&x3mMocz9Noy+LPlfjCOC4QFx^wFw~4)NMARlU}Zhx*NNo(Z1E zG?6eG^`0vv@k3_whUWq}Lru|8$5ZMLY?SU_pq_APPW-5@y~lj!=mjd2J@r4~A5!iJ z2tftP?W^>1*Ay2N-;1dsPm1TV25^=fv&EER1dsfdQ{xve|I(-8lKid~3!Feud*ult zi5YJPgg8zoSyyYtu#&JR$)d0~LHTXP#o~sWXK`hXkwTlm+a|=F{0x!TLeSE%;}PC- z*`f}1$|N8Y{$nu*k3tlxt`Y{~+*v>3MT3I+0PI>zAHI>Ry9w+f8ppkp z?O6|RP*Lj^CL-usZ42_i5$182r%fvU(-)OgP@X(UP0V{RBnL%&l=uUV8BR{rwk?D+L8mW@}X8jeo(1}o@tEwFxO7G8~ z@xd+(&{?EG43POF!3NK!DraLWkWl1&-3=$G=alez$uNq?fudAm+o+i=w#C?uNKD4{*E!(s=hSg_ca04oyEc8;d?nk5WIXkJdQ``=#Q$cP(-OpJuZp{{hF(q?1SL$G zGpnTI(pDMv9nMvabeJ9k5cKN&!JI9m=B^|#!s1Qa?1oQ4%!70IH9|4LV@Ibn-ym() zDw#`5E_%P>a%oKuUt>@X`$rDmWd7KeU+a(&c(=CFIj{p=!ZYNzw~AUPxf%siAv=;( zj%B5*Xgkr`stPePInPE*>WYFpyARC;l(zW+;3eVA& zouAQVf-0<+NNh(L$U{}ArF81&i1Y%|F&75J9};@&#{dG}I4|0?)8CAK(|N~-Di+rv zCPEj~P~^FyQn7s?I}EX46-`KmAsGbGIFUH8wgP?4%yA~Ye@_l|hUs)|GsUiMq=GS* z53O0LInnv?bO-7T0FwM<^5}zLMW|VZX4R7~egW+Bieaym+`evaeKgN7aY;MWt1jqO zAnc19s%lm_8fxGb6xEhr?CMG!b|_K`HJs(cz&o5NZ<9q0WgyVt;x)Z`I1Ie=6vm@K zg+ajsR1J`l%9|lj+bTG94ST-P2_l4PQeYK8R*8NBeK|(JfGGEa!MPe6?@^54_WAm7zH?Cl^BAcs*s4a>j5wVKku9n#%hWM-6{T@>ux>G zkCld}MMBuk10)@TwTKFg^3WIc>b2y??K(XIGQ&Ex6_H4kCM5d^8Ky;|m(85crzL*7d?7(}bY=pvb_q;k63`-vQ34p7z$Ym5i(57`v@Wa&)j|u!x|A5~# zU8L&Zb*+|F&jPs^Rx(TcSe~X~_7g3AJwIrk9) zK7e6k=E~C^s}l}p=b!l=epht+F!?+UV*4sozA8{YE0(%_%3UQet(3@`IesV|&Fvm`6lWr zld0My6CDBv#U}7Y%pud6{>fbiz#y^P{Z~hvO#hzCmpkHK-Mjn{GRqYbQ|c@=c^rm&I*qyHACcY`_|X<%X%HOS|l+> zi`k}CLdFsyYG!G2DxIPb)bYf$q-!uR*n8;NUmBCdQC>wi*?bGnI;|7o){Ei>O&XFJ zDc_6gwOO~^6Rjn{ksccE`^nQ)XM|EW_J%`aW$o~)9mgAwiD3dsn@2eEG&fDwYB?hs z{mvq-sFbnt{U$Ysr1Liwr4eV^0x*37E&N~*LPw4^!&`4KYoHwtH}mNW@VVQlKh`3H z?`;%Zt;O^!(|tkz5Taf@R%W0B!Bhf$ax%LrrZNw6ta=CNt#-y36LS$P>zO)cGG3(Z z>gCrDq?cWc!Vk(27Mt^-xnh`=5Os>pIhVC%&%6ePZ=HL-x$&vWakZ|d=?zhb<+RWO zngAE!ESg`k zpYN|?QT_nRD-mNq9HY!t+k0_!Q~vHSv==!j8hiE7`uwtU_oM0!FPO9Mq^Pe36rrU% z#@5z1vQV7Kk_Tapt!d?26*4Zbf(0v6$;PH2kr_<|`*-O+nmJBGybvcnJ5l)%8kSWK zxLh5OrI=)BWbv))PyT6}_avxP0ZQ10Gc> zq!oUcWo58AMv6BcNgK&O>2l#24j=*Xx<~t;*y8i>`%Nj0^rr^r)n-E5EFcl>R;1ud z|2EqSHGwVi4N zcYFtQpQQ4hVsvdul^o}!!kt$UYLsuhVhQP8R2DTjfc~9uVI!8Jkq0Jxz)xGN5!Q6P z@Q6`9)9~uLHdt%Yz1Kfl?=a9ISOXkSL1TY37Vyqf?!=8BI0~WdTa51#bB}*X#_gn$ zOYbEbuDF2n*FC@aucoe4BT>=tttt9l+G+yq??@y?M(zbnBsQ;6%t~2A=eA4ef;%Y5 zl2AnX6w|7qHJN6iR^E_IzoB9!Gv`bl#P06Bg3H;7jvi)RILny1=|Lx=@6tA3E<>5S{n#mzdkH0kp;hud2*RPCfV0o8Qp-l7$;a&VPdIUT+>#!8u z85k*>_ul~^4Td4r2Hs6ETtZc1-kw!I=vi>KjDMIw&=+nCRsxaDJLx;Dyr436th%d> zp`d;{w)4+)zEd-W%VD|AgYp!{0Kkkfj{l*LK>j)7QDA7G9NbLFMqpIwSM8usfH#e6 z$r({NAO<3z=4Lq-t6XtwMk#R-rGyY@%+zR;rDWes`g;vjOX+~@fAYTSz6DL^2 zk$~NW&>A_+zBExjcosx4o9BR`{L!YtbY{igIrkF3Kvl30*I+0eEbt}}e)L(xw zUggkMpXqG#K`)Okp%OJup?koyMl5g2usOZnOJ?W>c%6a`xx4*sI++$gZ!VdRxm39I zp-*ikf*p#Ls?n01+@rk#Ja^aPiQAe{G3EfrjvswzgAEo@AsP|xAX}Db{$g?yOU7tz zWr}4jfzQTGjMQbzJv7Qz=SnrRLz7RSvXx36kj+{u#gLo&9o=LvtCKarV0HR>XN*wL zSj-M?pP(wWR4d5X)z80GOlL}H6nIV|V7F5p&O}QG9SwtIJS&ueHdx;wXJT~<*hVD) zxL%fJGa)S%rPO>0Ks9N4gP-scaIrrT{-f9Ep{V{>Vn;w?b*P)o+#;;kVF(9Ge3O)N zw$dTSSzEzZV?ySflM?mNK$JMuq%n<(rcKWoDXrerfrlwE z(DlcjS?%aG;2}jk67oE@li5z0eSgTVZZrY9ldeGwHF`5)!Tz_o@X4zDBKD@Zxsr>0 z0lp`&B4+b6{G&opI}h4b7%m|g7fZnEV1N$JWeij8LSsc$6Hd9A4j;^Z^=!Q>@X>r- zQMC=~Wk7rocrg27IRw>Y?)4_()yJX9+&lq~`P@7{U{37qdA}rgT9kceD0S>n40EAZ zBnXU>O$zbsK)y4a!H$$Toe~sX&2J_CU4L1xC(lHZ9p^|dE7OX=MUQlZR<>w_1vZGm ze49MID+H3?xu-Zm$1dSq(Z|5QhwB6q2ytPEr~gl>1XI){X@&seuio9KjDGhf6K8I5 z`%_*UfGbM(QlKZ|7(IVq3_j_jy!SXb-w87lVW$2o(#QUfclHHXe@f3=D6Z4ebP3VE zFPSi-cdGZ#AncGs{%SdE&yx|3W1cZtL= zRxELt`0$6?3;mnEz1{oCq(j3qa$R#!Ncj)5fLMwfUttCWK##pBLed{D<8T4UYQ zgyF@BkL^+SaFrA(CxOgm+y4mi*xOl2a-4Wktr6ZJlT!?n&QR5@= z-7|`jG2n#>2t=VJHCW1q8{rW-b&8`1z;!Xz(e&QdQZiDR$y*L+l8-~`TtpXhxWs{Y z<2F500J&TztHR|ggW0cLgEA;a)0mZQgONdGf!W+S))l7bwL@5c9}5s#HN^ z2OrIq`?mdh#cvN%6ANY+KT9ume8V^OUMJLU|4w~JEo7zi8MlzR^pBP3^Hfn$lCP8H zd$E$iDa~W>3)ulKe#-|87S(fmGBT1f69mqE6)<(~_IZ&2A95xjjAICLE>kUdzoiun z_qwMNH6!pQThN<)|JuuTGWB`Sm~%2cOer`=L@SXVLhT`84^=3nG7%!C)@0iUQC0&# zbUyGofYtt$ZJGE2Ay(WFF+vXA`l2(Y2yzcp1c9A(4mtkEdCJ}6FSUIG(r>LBCzkQz zA^@M74Pk$n>Z2ZtR9LTQyI9H~KmD;Js6|oFgICXUIAOsU{$-Dt9!-m|!{p#h64FKp zjmTWOm+pbThNE4d1&XFzB?pY;xP(@B1-~6FdW;G3n2$g39AT;ODZQ#QfwN+TZmnn zyj49mfdWIK8$Pn_kgM^M;+Yi-rI=Z9V3kh32w@oj{Quhjh=)bz)K&QjDgZ-3X9UPU zhQKQ4-SxrRav($$lE6LD42`=CVE98x5I#9hHUZIm!jttkT7KUAN6-+>JvC^zyX+iE zlRRJ4kr-F(Mv58o>>i;}`&1POO4c7y9}Ph}>00*;@s4CUy!c4mL>e0D%q|P%W$rhD z4jfeaO?Nf)f^KyCW_WwQsK@WDlvO|s071<-*MPUQzaIUA?7c2WLlvw&(>9zJBb~!q zhE+2-d1pFq$Vb%93dp=Bc7xXz4HK$R#E?K!KMP5W7YPt|YizKY&kv4(dw3Xt_H0nk zMCaws3=)U9vkdv3v~Wy$q@$6a{-p4G7bX-$fm&b2~=umj*@A{SH` z-W9T;T8WC|pI%(aJ)71^z*sQGFLg5q3t@cS4$J3Y=D2Mruv5yxm$_lZ$j3bLjAzSP z&za7IQfv|d$qN-@Bi!7(_I@Snuz19^A1?;wt4*>kH977kRb96!5_i|~^Gj8cnxG&sThNySu*dthvT5`UZyN$qx^YL;?T z2sykMK1yaR``W%OOhXSwo$U9zs-PH-gp9%s#%QQXK&l=8-((&_xc^)Y-dXQ+r`YUd$!Sg9L_E#Z~0L;C`V|<9{2xPdY_&b z0j7^I2p3;PvYDf@1wQMtSxj?!^k+UZnI$EWc~b`?cJXSf|Cyle`W^_BNWKBS#)hG2 zD*?o|wDZP~$1wsT6<^T_ham%>nh#ge?S(|q+o5~*0%gO-nbex0`G@DGud*HT2KTt7 zQ~KH+Fi3l;+FS|ejznTE=FsIl_-z}2H-w_tzSQ$hp%60|Ku+QqH7=$0{j`Uowf~rgbq&(NJg-DR@r8|JQ2|0Ib&sTRi{sR z7y|S8RhJxSiB&=u{k)&3(mobgiXtGfF)4dgP$9-mLpMipa@}Yf<&@{|@=&*JK&y9{ zC3(l1Q?9X%VqVy#-Mq*-tsdLPgr|MG#n%Y2ZPDpFaLazqP2pzcLqjOq|2fHnv59>E`JvXv)x3 zG>YnlSknfcwxD}tt<_1Qsw4Ge_e=$+si}e_B$riOx1B zd`P?Q@^#a$U|vtOIC=hN_+;g2K|D;eRMgc8_Z#3B-;xpn>+6WBH-yVcR@~nab>?-8RMmIUZrCU{-Z+}4hitcWjEFkbKkGOMH+Cx`t6#@s4g_w z{4E}XEUP}>lTb281g`|q3NN56kOmZ3Fwx`&SkLKzu7RrEmoFuPMEjd<)dM!RinhB2 z@+(VLB4Yq4T7fHc{ZNwV3b$V{$5YqD$J%Sw1IvZgHZxN7+Tjl*v!ym@%)rBsc2A&}hML4hUFp-!W zEM9Q3NTKl~G2aL^jerl`;^_CV0*u+U4|8V5oH{jnT+H}Ywl7&B1$>^h)sXfV_#?vy z0Ue5{5i%hi*WBBMKm>zA4}k6mnkbg#x@VW8mbIBLi_X;IfS;)vpWN}MRa*L!R>9Ai z_xfPw;`{U`2LW)jeavnAOb_0qooZd7!DP*2Zy1!b>@LzSdt(?)axCx)$M<(aIOOyW@%0ywR)EIc=ej7(yOgH zZg=#r*w+2$-`70LkN}}X^Uy((YHkJfq(znDreXO`Z_9q+s_gYy^FNQ+^i9-!AU?|a zRr5~As`>6L)J>Q0RM{`G?c4F@9()D)k(9#%6=)*83P=Oh)PB3fkHm?$_Shg9yJfjz7f;j8RkOFs@4Pr@^NzAGYT6EpFHzL~ zn&1*})(URVHnH>J5aH2^!N%7>hKC_X9Xdne(U8p9@H2^G;N9&JL1D}FRr(;s8&2Hu zt(Dmp%o&4Ai~>Hv&>-Yz3mQo4qn76H&uJKMzZpM3j)L!%J=g74PcQx)wY#&%Omr~;4=C!zwE-n0}w1C&L={zTsT+b=GD{!c3X9_Y&G#V zRNA?IZkszfa{4<}5QGo+>($dE1h57h;L#K<@6F*`*#Iuw#Krprit<<89mP1iu`%Ah zQ%@E8v__RtrNUBW&kBX2RN{u^;V+tq*qFt|QK;DwlvCe-q0a2Pwh6ys1Hn0DxAOd? zL@`^MlkDu`8A#>dy2$Pe9KJgGMn}Bz#YaN|&7dYTzU(iXG1g!dT5r^y3C$>MDyWrW zH7J>g9Rr*R(;Xn0cXZ()Tx4Fk>~rM&6}iBmzmNV2hHmra01v6A>|EmeBg5jfP+nH>rn94LlQ(JSm35$Rc%dl5M|| z*1>D$eY{Z9HSPW|>C{&D%t>!{l-8=7)z+yUf&ql$R&I=*ie#vYTGQ38NjTF|xb+<{ zuu!Ly2(0W8ci2F$lIMdW8Fc5|Y8 zxN&Gc6hhvoM+Jm0xuh`^;^Om+paX9Y*Z{x;U(B*}-jQC}T&l!civrkg%cClGb2s`t zBlsbiaq-*op3nQZ=j0)B!do&_AiLx9mE}I8aXvkfz7uB@U17V zyaiRMv6cLD{Bwql_b|ijW(DmR;o1#4cWj!vCnJ^jrS{ksNl*aEDGdI(}aW;VIG#QsgCZvF?7xYfzStK>Y^Wj(lNQgCI5yn2( z4N)oneXf3YgLiNBG`pk`>Xs>2F0!U&ZL42Pm)_J_#8Gh&UB&$~g)L)9)v7V#Drhbw z+zZMm1i^+uy?f2;uG(TE1U9}oqBz?n%_Y*9UiW_Y1knHVb9WzKJNh-bJ3vW97{+$^ zixo0+6sFpTpuVa9Xn()uwMn1hw*=n;fi%m7Ef2BRzuXd}{u?H0Y%^!q;}}P#(YLe2 z;>z(&F0=`;PENoU7W&opy1$ypIkxu^eCOc4+;;`1=eoXW{(;?qA+OFEjao|sOri{KiT za?=yV=ps_MmD2PFz0@;RE1q#WA^{f;)mygDOA&Ipysd)MUfj9$av4)|d1Q$gHJk;p zAKTGLO!?XBoLIga7sZwjuH|JA6e`rgT)7^%KO64m=xHxa*BaQx4dAWUtpx&RlG5`$ zDFyf9fj7aIxt3X=>zKl;BrWaP&x=rUlFe8^Bo&A4VK?@6?*9>CRT4rZ9o6T^lABf+ z=Lo#QaB4<&<98_SX+EC-O?<8O%F06DcZ4(3F&y5XdpG1TOgC!KH@ss%4i-L@8Qhjs z(0euEl*q8|dMS;jSp7PRZXix2n7bmOWLw}Q)l`-k2yU=NlP^_VimXV_7#IFy1G*c07g4p!^Uqt!fNKY-<%Jj>JQy#il&c&O+DNIkv zou9%GgADRLO(1&&=g2x)`kJ{QQX_ zkN2Gtw`t^}cF`&O|8aeprsg^MI_T@xZKq26DZR|E>x~oJhpQ%f6$FWQ>6qpF?PlNH z%Yut0&TTKQ{WkKKu!}vH+XlQHw-* zqV0J{$(40M!yRixljmO|1dJ-a%*W^o9eYLm__$#L@caSZzIfL?ye~-bnBm7xPEs9l zwB8b@ft#%?w4kpH*$Bo?_{K_XVO;9hSjPij8_y88qyfG@`-1~}JT8A`quh3@KULBJ z2|ph_jP@99uw z4haz2_Z^#Pba`inSEr;r%c!-$qe;<1@;Abj*X}+CJD9sQ zUgBCMPmgG}4xLSphImc7;?dt8l}EOz;TjSHP``0! zw#yoISM?Hm>!ml38`nb_FC-N82j`zAhE}>YjW34k=@vzWyj*Zh!7P?Uds4W?AwhaI zQLKYs)sD|1LUrMwm>(-|{R0E=i;K7V20w?eqwm4d^;Eq*g|@wjF@<1llZv$|Y&&Lg zz({u~T!}3pIHdKm;Kt;FhtU@hz3-f8VTS9->Sz<-@+{^M19$EvkmFXH0jqJnQjoz26F*80~$VnbQZ(op(8x^ zs9dxd&T{ED+}$Egb*@--At+_hyL}#yaM(@h;6p4s7=#`!25i^FUVFL9=*-`j0S|%~QHsV@#idg>~0zQ`F{Ho;v6^ z@jd0mgI`z`@@VOvn>?n?pw&RYV#oIIb)O8%*A!yc_Xf+~DKS_qvE{v?Al7NZ3$ZH+ zxGTr)qUpyK&YrRP(gcm%i z!(}&28e{907Q*>s7PnBFn?0xG6id?5v4^hMF zWd!_+eQokE2U+N!e>g0SyxKYYLtS^3oc%U59v=ctnJ5^7M_^}NsSFVyR}prc!8D8f zJG5MNXhX%ri?x1&=R#Z;Vw%fCc(ddX0Hj4 zck|}#riXquWb8qN`z>kYL5WpvShKaBUJB_I>*I=P^MvqN*5fbmaJ%^y*DERl0P<+Y zLhW8+;)V_%@0zess}xxg)Lol(UHBl6!&(D(7kf+j)j1P>%sAvnSApx@mfJ`GhjwKA-0IPO+!Muze!<1V=TO?b^zWa` zgziVHdTL|*>)Bn!`H1>Pd7whn?Og$5Od|Xr*OHeyw>tjo54%I_`1z)uryDsebJY*R z?G$S|TFZebX}(hW;y;IS;6U5xYu~|W9L{#wvdB4;u$}lyuz$XIKuA)RT&_M{{LzDH!=Jh ze|1yxuP}36`CFLzZBIQ>%Bob`G<$$A3&dV?mfCm(#u@=5_jF|VgFyZ9T1U@2m*6@P z-Kt-|>@$<67giQgxPQVFD?nfsj&c^GM3qZKUV$-YEf)$hir+a@>?TktMVB&Mj@|f7 zop0{en~{8e4F?nKv0CCKmBk zK`2*;V#^atUxC}~FGn4!aE8`y4`eL~1%{h$1&J++j`#?j>lPbBo!If$d1#+^Qb`yr z2SpK~r;eom^x}9&=`K#O3`fk8;DM^!-66r!kj*e`G>E|`u=VjW#!;o8M6gCGs|+jz zV13qmhlPJS9ahJ+SIt=eKbqbtFq5`x+Kz48wr$(S#I~I)6Wg5FHYYYGwr$(VpZk5j zf3G*YH@dslI;-j+{5MpzPYo!$Go144`jw2hOP;&jZEKxvYGR=5NC7RNyEvhqW|NI6 zUT5EtoRYizdFTl8l4-ZW38c*t9|JbZInZ~)2R7}iZZ>~pAYbX7=+X3#N(i>oq4}Ro zN2?j{AQT>VRJ3a^I-*{-JVnYifJl#d(mrB%y1BOZXvb`6Px&j8Y~?z}3CU%_x+cp^ zo@O8GOJMpua*#(FOUeVH^=~o^;Aye#Us~6ehe%4KOzBn`YTjkg8wYqP0#Y}r_(W=b z?aE%DY7!A>7zaiT>FF=1fU82fM|BASyJxlBFO9?>2%bIZ2T`Djfkx(HIaO6J7j5eEYS<39R;t%B zD+6z?p~%Ha+fg9T)my9!^l8h;Ga{$AjmZDh3W5PBLK2=JZrU#sPn&QL zvj*TSGf+-PB>yCuNS_5pg+xU?(f*5-;Sk1$WX|WAnzf3IwdqLGS3nn`&|HvkcEni$ zb5EIo5pi!eW=n`7Zq`LkER%jA1z4NZrE>|>I0i1_QO!(@`O>6k7N2Gi&K~`-QNhB1 z8AhXli!*@-Z>dw7v@3yE&(y9cl;Y4YAT5An=OaeH?S?rj9Kl zCITrJjwfb=BjcWf2<#QHqq20RwhYv9I$bIg2{hY~V<-+qc14BMu|k2G1eBo^S?ACW z!(_=7;GVns0>@^kCc6Q07T$RF9=-}QC{Rn{IIGpo!HQl89EUyp>(R{-k}-J3F>$LWr(td~lIzQ2>*+ZWrqk4Tw4XTP4VTM6BlKi@^g ztxS3z9kyz6Z3WvW0)Pisq>E{>bgr3jBVBo4Z_OKrtkc2*&Axn%Td1qrqY!JKFW;71 zGkY{QlP<61du*b@DzA>O(ymU;Y%!0f*>i%+yj>DR@2t`D!~lpmj^hG{FwG@4!7!wFZI zWy}lWAz|-LY5?m6Wb08e>twbf2`?pUB7~>4gFykzN}P+rNBQEH-lXx+5@JqQ2u|1D zm^^~&X)=8bI>Iy^4jF9c!W%yOjiJ(m(>B6W4!T)NB1*4BhBxduitEaKf0hLliM%Br zA$M#q+!KZ1~-zo4PN7wHcUTxv{;P z6#be5NCFwaxpV~GJpJ7=_d6ZB%Qn6%S50rx@UoTX2T+qa*$R_o=P3|wT~ku=e@d1g z^RF7ty#e^EZED>7jc3vF!i&YrZqNgyz|gm*FJyAt4ut0fJNsuL=Pc!x7OSFk_xyEq ztaW$2pv4;s)obu<8{myN)4Fg}&T5C~80p!!Yi9NM=r3v2B zP6VkQJjn08#$Qd>w2;3EUX)UN^X3%BNh(R1G5`^Hnh$jUlKvzWf7pDJDaaM+^#gsQ&3Le z%sQ=38~7qw=O5&Iug-)>VQpO1&zN3^&XsOpNl4SMB=t-2&ADdY}!u* z1k``}6|a%V=O`@K;q*v`*cWz64=q>Tt0fU>77R2;QACXVlOEr9yA((F`t;F6849U5 zUiQPb0SL3}nZn=u>;7ci1fOUk05}KVxo403_XuZvod?$9*3W$^*{a%VBRgW$8h{@K z+E9GR1y>w~cJEy>#(Z_=Qq;_*+9}_=K-2t9N=HR;=buY>>r%-I(2GbOT0iDS*Te(} z2goBZb9!PM--XkcOSB_et{wP6u6Li0wNO5CoOKh*ULp#}oV;+ekZRe>Bf z!&IVhW|n}BnNL)5t`2)>|GL3U34qxl3%Ii!^vXd0qB@#v30b%s^g}w*+Md6LyiDsA znSUZ0rWnN;tuROirnHqyAR210o3soMl*q2N1KE6V##Oige-R zB{)?=c`_&>DuTq5{)SVQRHI9L5;F#K;jA7-ko6HfcahBz(v_l=upHG*gL z>Im#C&q-%lYE2F9KO|c(j!QR;T+nxUt<`ho!v_@gdwR7Y?9*S0?9A1cNuaYh8ymn$ z|JX5y*#_N}@;?K~(37)9m($47==o-j$i3C|+l~F{dut#q1aUFHoB-`ocb8wf+uC(Z zw+pBxV5B&3GXU>?EO7g}@V#g#Cd;s3#0Kgk|zN|eT=bj)q8C&5pn^t zcs@a8IsnTjz5L%{)#`71i$eIB()e3{L4Djm{6K(hiIz1p_G+BNaT0u)2k?@mbTQv7 z28CVBnprOs172h2eY>P|QN0@(^gA5nnwS;11?$fv`&|F>!pSw5puRCKs)PS;|MlPd z{*y#Q17-Tj$|hX>ltAs&fj|LnpcF{a9OApgn-i^u-Pfe9hMp`fp%c0CrBaG6+IqU9 zAg!cR3(ePH>$MmHHWA~=U;EA0FqRax-63lK{!tbX2oUs1=4Fg)L9 z01AVf82)snRD~UNl-YO5AAxamt}0e1m2@(OZBH_WHfWfJK5Ke25`ZUG_DfO}PsmM6KuU?eT=SNoeUbNAhzDb561S8ML+kJJXRaVQw zTAGsy7N4~xlWY2p`8wSnO{XTv#6L)7$s$-hXHu7`06=_e3?>0_E{o%j*wGy&mr!b9 zt}e&DNG$DmLX|EG?o~V8C!5pj$q=JFNf25(m2!$rIoLX#o-i|6Q{CM_mL@Qc$kCk- zkjsuqOlQHrT$jJ=*$2ZWT&ffom2iy|Xu~bz%m~RSLfcG6z$O9)t+6v~PAwO~EXi1Y zZ6Q6829T8v)A)r12aNVafdxF{Ko>AuEQ|>6<E$X zm%MX}l64g4w|ERvw3%(z){-mT{fys}ApqH*n5>+yq&K}nDA1cuvXq%8nk`*0_=Q;iJ#yVn#32*Rm!8nLi8vkF#P)05aoiC|R z3WpYMHEJk>0hqF3vQxg~oq17YnEGK5fUW;;>BJQbBlC`+3>!G}8C1u0RI057#ISC zljHxaTfj_7PDeC=F3mCLb&3C$aCv z0x{S~XqeDywvv!eGbh-c&+W4(6kGpDx5Te~7v2y34EbVWlKXMx`THDu`Ov}Ap_$}5 zZP@gN=I5?i^Jj=2(7mHAjIb@r0laTJPKEU>z*$cXwd{cG5v%lfzn_-SH=1W^VQs7L zxW*!Z`e*wEpA%)Sc+aK~(R$;5xQyP*t%I4p)rbUr{gw`9_?W+X$sEgC$+zmB%O%~h z#zjNbOhDf0&n9-o;Yag!7dtpDKwGd1EQ@s| z_E~B%V(kIxp<{2AwaUr711xxe^1qVgEeo7^aZ*I!d|;jz(s^y(8iAyJ;Fc0ziMRn$ z_=9otR>-UIPDGgTK7vB$EHw6XX5-wF11o{<>4<(OWr{Lt9pJ~M{RcAr7V zv5Wda+$VrqdSW7-2pBnEU6N@q({Y`U?DC#S)XM>}N@gIaYrz>n5Y_O;b~`O!K&TIP z_iY7p+~uX^qUF6Z4!*XHE~IQ?{H9B;p7*Rz zFe(95Z_X^rUOcn?$na1yio|~~JiOEflW634pb`7oTzq$-DTMwy%$PG`6_IOiYuTop zc93WkCs`WH7W5kDZjOf4`F{AkLmUc_Dj}LH7oIQR&!I*73!Mpi>{b-&@^<)L#=^k< zE8g&9t8UDZb+TT1{)_P-eer9-J;hz7Jre=oo}v-uL-o6~1i}nH2-SH%)G=d`J={fp z_RztAS6c4=1Q^A1P5OZKMM-1Xel+5VK7DN>42JG}^EoeTWXL~5FuU>N$C<&RZn zOrPZ}rP@Gh}}4;ohYRGU>Cve4WFGjkEiL#~fb2U5nO zR93$T;zO7BMYkXzjfs~3MqlcD#C`>c4B#Pgz|WySq&+^=DKt3l$pOSptFi+f~ots@|ujkV>?kkCXrF1gEj zu`|%>O1i&&er}V(aSzFLTZ612fmZH$^S&|#o>H^}UZX{fXxE_S4bz+6j2g(Y!UTCI zR$1aQ>y)-uu#869p-&!}f796q%7Aa@T7QA-?fbU=zk%lGyYXLOk(q@nDWQWJpdst9 z&wVeS zvk>sdLx@R5j$xoYz8@RW))3>SE|M#JC6VDC^DJtJzClA%cSSW2T#6#jxKkU_gkzHB$x=?#tz`QDlI6A{I% zF#Ok-r2IE$V`Hu?u$U2<+$upbZp#th?58kksyd>E5+HXX9CGItLPv@A;kVSIZ_pkb z>G^bduHHZA8Jml#nXA;s_wE}q=P^z$^AIt2zgnM){!e{Znch&5VKWE7_NU+f?@rsc zullp$uNzOhw_l7g??_H&Zw-~#@>;kW5Fy1i^g2zj3t0L!N;H~lKUNTyKbKza(#V-} z3y2ZX@?jFNV4DcT8e|zId@+pfyTjF<(b$nID-G3hAu{+X^KIt3ywzvT_567CPb0^& z#YK7GsqM@RVRI|M69>eAatO=aMrR&mQgBE7Mo6RT+_Ojb7!3V>tEx*Z)A=VqzwO{! z@%0d{LI*0aBL5BU-qxN0WDLI2+gH}L)au7qZOLs!g;I$X#Qt*xR?r5>Y4p6NFfdV~ zJ5!pnxaGyG;LWg>6jU^d1GeVsf2ffRt3k~J*;ysFyolyKR(9%ub#iM-x@|4R=c_l zA}|I%9Ic0bQHUWK-l((LZ)_=DsNK0I<$um`;X98&CuiokdgqTN!N^iD-3U~CX(z>>~Qz@OS{$sh3n@vTcN;w-vd#j={QW^-uc@# zS=^*92cC`zpQze$4hVKrnxGv&&{GBqb|;0+F@5i6l0y<8^A?&%-CBdHOt#ybDX+;x zHs#E%T)PG;_%21o&`gJ^?Vm{;fZ3v)h(>i^cIBA!mEKXl-Q3L)RA6f1%V&`5<rbecTYKTS|?jM%R0SYKhHeE&d?Ui`M#BfRxt>_r`VKdXjgLhp!%n-JixeA&W zf+RQ(e3F?&qKZAHkG>@ui)|i{+C32;OG3T-%6MfLcx*r3z7DVD!KAwxW0JClTe7ev z2S)fgV>e-Rj`)_>hyR^RrO5;$|71}zTrV?2lh7j<($Yxk7#X~A>aas8M_ilCWuYqszy}6GfuO8UcNpt9+A#sqkG6t zIGB~%*6YT`g?t7^sDb$DiziGIfrL3F+wHT&aEt_lFG31;)=G!?=?Bf8KBFqp3niSB z3KhJ2|LKbtcjffPWU7u|0BOQcYnH`2ekIWtuSdw;_%KID#!GGf6r_eNbh

;3@6 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 diff --git a/generator/sbpg/targets/resources/c/test/v4/sbp_c_test.c.j2 b/generator/sbpg/targets/resources/c/test/v4/sbp_c_test.c.j2 index 1ff002d4cd..7098809e06 100644 --- a/generator/sbpg/targets/resources/c/test/v4/sbp_c_test.c.j2 +++ b/generator/sbpg/targets/resources/c/test/v4/sbp_c_test.c.j2 @@ -183,7 +183,7 @@ START_TEST( test_(((s.suite_name))) ) sbp_message_send(&sbp_state, (((t.msg_type_name|convert_upper))), (((t.raw_json_obj.sender))), &test_msg, &dummy_write); ck_assert_msg(dummy_wr == sizeof(encoded_frame), - "not enough data was written to dummy_buff"); + "not enough data was written to dummy_buff (expected: %zu, actual: %zu)", sizeof(encoded_frame), dummy_wr); ck_assert_msg(memcmp(dummy_buff, encoded_frame, sizeof(encoded_frame)) == 0, "frame was not encoded properly"); diff --git a/haskell/sbp.cabal b/haskell/sbp.cabal index f26e33d4ce..fe1af5e300 100644 --- a/haskell/sbp.cabal +++ b/haskell/sbp.cabal @@ -1,5 +1,5 @@ name: sbp -version: 4.1.6 +version: 4.1.7-alpha synopsis: SwiftNav's SBP Library homepage: https://github.com/swift-nav/libsbp license: MIT @@ -8,7 +8,7 @@ maintainer: Swift Navigation copyright: Copyright (C) 2015-2021 Swift Navigation, Inc. category: Network build-type: Simple -cabal-version: 1.22 +cabal-version: >= 1.22 extra-source-files: README.md description: Haskell bindings for Swift Navigation Binary Protocol (SBP), a fast, diff --git a/haskell/src/SwiftNav/SBP/Msg.hs b/haskell/src/SwiftNav/SBP/Msg.hs index ab0a283a9f..3e3afdd619 100644 --- a/haskell/src/SwiftNav/SBP/Msg.hs +++ b/haskell/src/SwiftNav/SBP/Msg.hs @@ -225,6 +225,7 @@ data SBPMsg = | SBPMsgSsrStecCorrectionDepA MsgSsrStecCorrectionDepA Msg | SBPMsgSsrTileDefinition MsgSsrTileDefinition Msg | SBPMsgStartup MsgStartup Msg + | SBPMsgStatusJournal MsgStatusJournal Msg | SBPMsgStatusReport MsgStatusReport Msg | SBPMsgStmFlashLockSector MsgStmFlashLockSector Msg | SBPMsgStmFlashUnlockSector MsgStmFlashUnlockSector Msg @@ -442,6 +443,7 @@ instance Binary SBPMsg where | _msgSBPType == msgSsrStecCorrectionDepA = SBPMsgSsrStecCorrectionDepA (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrTileDefinition = SBPMsgSsrTileDefinition (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStartup = SBPMsgStartup (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgStatusJournal = SBPMsgStatusJournal (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStatusReport = SBPMsgStatusReport (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStmFlashLockSector = SBPMsgStmFlashLockSector (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector (decode (fromStrict (unBytes _msgSBPPayload))) m @@ -651,6 +653,7 @@ instance Binary SBPMsg where encoder (SBPMsgSsrStecCorrectionDepA _ m) = put m encoder (SBPMsgSsrTileDefinition _ m) = put m encoder (SBPMsgStartup _ m) = put m + encoder (SBPMsgStatusJournal _ m) = put m encoder (SBPMsgStatusReport _ m) = put m encoder (SBPMsgStmFlashLockSector _ m) = put m encoder (SBPMsgStmFlashUnlockSector _ m) = put m @@ -864,6 +867,7 @@ instance FromJSON SBPMsg where | msgType == msgSsrStecCorrectionDepA = SBPMsgSsrStecCorrectionDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrTileDefinition = SBPMsgSsrTileDefinition <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStartup = SBPMsgStartup <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgStatusJournal = SBPMsgStatusJournal <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStatusReport = SBPMsgStatusReport <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStmFlashLockSector = SBPMsgStmFlashLockSector <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgStmFlashUnlockSector = SBPMsgStmFlashUnlockSector <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj @@ -1078,6 +1082,7 @@ instance ToJSON SBPMsg where toJSON (SBPMsgSsrStecCorrectionDepA n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrTileDefinition n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStartup n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgStatusJournal n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStatusReport n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStmFlashLockSector n m) = toJSON n <<>> toJSON m toJSON (SBPMsgStmFlashUnlockSector n m) = toJSON n <<>> toJSON m @@ -1286,6 +1291,7 @@ instance HasMsg SBPMsg where msg f (SBPMsgSsrStecCorrectionDepA n m) = SBPMsgSsrStecCorrectionDepA n <$> f m msg f (SBPMsgSsrTileDefinition n m) = SBPMsgSsrTileDefinition n <$> f m msg f (SBPMsgStartup n m) = SBPMsgStartup n <$> f m + msg f (SBPMsgStatusJournal n m) = SBPMsgStatusJournal n <$> f m msg f (SBPMsgStatusReport n m) = SBPMsgStatusReport n <$> f m msg f (SBPMsgStmFlashLockSector n m) = SBPMsgStmFlashLockSector n <$> f m msg f (SBPMsgStmFlashUnlockSector n m) = SBPMsgStmFlashUnlockSector n <$> f m diff --git a/haskell/src/SwiftNav/SBP/System.hs b/haskell/src/SwiftNav/SBP/System.hs index bf54bb1595..d9ecf8a24e 100644 --- a/haskell/src/SwiftNav/SBP/System.hs +++ b/haskell/src/SwiftNav/SBP/System.hs @@ -138,8 +138,8 @@ $(makeLenses ''MsgHeartbeat) -- | SubSystemReport. -- --- Report the general and specific state of a sub-system. If the generic --- state is reported as initializing, the specific state should be ignored. +-- Report the general and specific state of a subsystem. If the generic state +-- is reported as initializing, the specific state should be ignored. data SubSystemReport = SubSystemReport { _subSystemReport_component :: !Word16 -- ^ Identity of reporting subsystem @@ -172,7 +172,7 @@ msgStatusReport = 0xFFFE -- The status report is sent periodically to inform the host or other attached -- devices that the system is running. It is used to monitor system -- malfunctions. It contains status reports that indicate to the host the --- status of each sub-system and whether it is operating correctly. +-- status of each subsystem and whether it is operating correctly. -- -- Interpretation of the subsystem specific status code is product dependent, -- but if the generic status code is initializing, it should be ignored. @@ -210,6 +210,73 @@ $(makeSBP 'msgStatusReport ''MsgStatusReport) $(makeJSON "_msgStatusReport_" ''MsgStatusReport) $(makeLenses ''MsgStatusReport) +-- | StatusJournalItem. +-- +-- Reports the uptime and the state of a subsystem via generic and specific +-- status codes. If the generic state is reported as initializing, the +-- specific state should be ignored. +data StatusJournalItem = StatusJournalItem + { _statusJournalItem_uptime :: !Word32 + -- ^ Milliseconds since system startup + , _statusJournalItem_report :: !SubSystemReport + } deriving ( Show, Read, Eq ) + +instance Binary StatusJournalItem where + get = do + _statusJournalItem_uptime <- getWord32le + _statusJournalItem_report <- get + pure StatusJournalItem {..} + + put StatusJournalItem {..} = do + putWord32le _statusJournalItem_uptime + put _statusJournalItem_report + +$(makeJSON "_statusJournalItem_" ''StatusJournalItem) +$(makeLenses ''StatusJournalItem) + +msgStatusJournal :: Word16 +msgStatusJournal = 0xFFFD + +-- | SBP class for message MSG_STATUS_JOURNAL (0xFFFD). +-- +-- The status journal message contains past status reports (see +-- MSG_STATUS_REPORT) and functions as a error/event storage for telemetry +-- purposes. +data MsgStatusJournal = MsgStatusJournal + { _msgStatusJournal_reporting_system :: !Word16 + -- ^ Identity of reporting system + , _msgStatusJournal_sbp_version :: !Word16 + -- ^ SBP protocol version + , _msgStatusJournal_total_status_reports :: !Word32 + -- ^ Total number of status reports sent since system startup + , _msgStatusJournal_sequence_descriptor :: !Word8 + -- ^ Index and number of messages in this sequence. First nibble is the size + -- of the sequence (n), second nibble is the zero-indexed counter (ith + -- packet of n) + , _msgStatusJournal_journal :: ![StatusJournalItem] + -- ^ Status journal + } deriving ( Show, Read, Eq ) + +instance Binary MsgStatusJournal where + get = do + _msgStatusJournal_reporting_system <- getWord16le + _msgStatusJournal_sbp_version <- getWord16le + _msgStatusJournal_total_status_reports <- getWord32le + _msgStatusJournal_sequence_descriptor <- getWord8 + _msgStatusJournal_journal <- whileM (not <$> isEmpty) get + pure MsgStatusJournal {..} + + put MsgStatusJournal {..} = do + putWord16le _msgStatusJournal_reporting_system + putWord16le _msgStatusJournal_sbp_version + putWord32le _msgStatusJournal_total_status_reports + putWord8 _msgStatusJournal_sequence_descriptor + mapM_ put _msgStatusJournal_journal + +$(makeSBP 'msgStatusJournal ''MsgStatusJournal) +$(makeJSON "_msgStatusJournal_" ''MsgStatusJournal) +$(makeLenses ''MsgStatusJournal) + msgInsStatus :: Word16 msgInsStatus = 0xFF03 diff --git a/java/src/com/swiftnav/sbp/client/MessageTable.java b/java/src/com/swiftnav/sbp/client/MessageTable.java index 039ea03f92..41bc31601d 100644 --- a/java/src/com/swiftnav/sbp/client/MessageTable.java +++ b/java/src/com/swiftnav/sbp/client/MessageTable.java @@ -204,6 +204,7 @@ import com.swiftnav.sbp.system.MsgPpsTime; import com.swiftnav.sbp.system.MsgSensorAidEvent; import com.swiftnav.sbp.system.MsgStartup; +import com.swiftnav.sbp.system.MsgStatusJournal; import com.swiftnav.sbp.system.MsgStatusReport; import com.swiftnav.sbp.tracking.MsgMeasurementState; import com.swiftnav.sbp.tracking.MsgTrackingIq; @@ -589,6 +590,8 @@ static SBPMessage dispatch(SBPMessage msg) throws SBPBinaryException { return new MsgHeartbeat(msg); case MsgStatusReport.TYPE: return new MsgStatusReport(msg); + case MsgStatusJournal.TYPE: + return new MsgStatusJournal(msg); case MsgInsStatus.TYPE: return new MsgInsStatus(msg); case MsgCsacTelemetry.TYPE: diff --git a/java/src/com/swiftnav/sbp/system/MsgStatusJournal.java b/java/src/com/swiftnav/sbp/system/MsgStatusJournal.java new file mode 100644 index 0000000000..c316d5d5b0 --- /dev/null +++ b/java/src/com/swiftnav/sbp/system/MsgStatusJournal.java @@ -0,0 +1,94 @@ +/* Copyright (C) 2015-2022 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ +package com.swiftnav.sbp.system; + +// This file was auto-generated from yaml/swiftnav/sbp/system.yaml by generate.py. +// Do not modify by hand! + + +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPStruct; +import org.json.JSONObject; + +/** + * SBP class for message MSG_STATUS_JOURNAL (0xFFFD). + * + *

You can have MSG_STATUS_JOURNAL inherent its fields directly from an inherited SBP object, or + * construct it inline using a dict of its fields. + * + *

The status journal message contains past status reports (see MSG_STATUS_REPORT) and functions + * as a error/event storage for telemetry purposes. + */ +public class MsgStatusJournal extends SBPMessage { + public static final int TYPE = 0xFFFD; + + /** Identity of reporting system */ + public int reporting_system; + + /** SBP protocol version */ + public int sbp_version; + + /** Total number of status reports sent since system startup */ + public long total_status_reports; + + /** + * Index and number of messages in this sequence. First nibble is the size of the sequence (n), + * second nibble is the zero-indexed counter (ith packet of n) + */ + public int sequence_descriptor; + + /** Status journal */ + public StatusJournalItem[] journal; + + public MsgStatusJournal(int sender) { + super(sender, TYPE); + } + + public MsgStatusJournal() { + super(TYPE); + } + + public MsgStatusJournal(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + reporting_system = parser.getU16(); + sbp_version = parser.getU16(); + total_status_reports = parser.getU32(); + sequence_descriptor = parser.getU8(); + journal = parser.getArray(StatusJournalItem.class); + } + + @Override + protected void build(Builder builder) { + builder.putU16(reporting_system); + builder.putU16(sbp_version); + builder.putU32(total_status_reports); + builder.putU8(sequence_descriptor); + builder.putArray(journal); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("reporting_system", reporting_system); + obj.put("sbp_version", sbp_version); + obj.put("total_status_reports", total_status_reports); + obj.put("sequence_descriptor", sequence_descriptor); + obj.put("journal", SBPStruct.toJSONArray(journal)); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/system/MsgStatusReport.java b/java/src/com/swiftnav/sbp/system/MsgStatusReport.java index 7c11ab88ac..50157662ef 100644 --- a/java/src/com/swiftnav/sbp/system/MsgStatusReport.java +++ b/java/src/com/swiftnav/sbp/system/MsgStatusReport.java @@ -27,7 +27,7 @@ * *

The status report is sent periodically to inform the host or other attached devices that the * system is running. It is used to monitor system malfunctions. It contains status reports that - * indicate to the host the status of each sub-system and whether it is operating correctly. + * indicate to the host the status of each subsystem and whether it is operating correctly. * *

Interpretation of the subsystem specific status code is product dependent, but if the generic * status code is initializing, it should be ignored. Refer to product documentation for details. diff --git a/java/src/com/swiftnav/sbp/system/StatusJournalItem.java b/java/src/com/swiftnav/sbp/system/StatusJournalItem.java new file mode 100644 index 0000000000..a635e3a540 --- /dev/null +++ b/java/src/com/swiftnav/sbp/system/StatusJournalItem.java @@ -0,0 +1,53 @@ +/* Copyright (C) 2015-2022 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ +package com.swiftnav.sbp.system; + +// This file was auto-generated from yaml/swiftnav/sbp/system.yaml by generate.py. +// Do not modify by hand! + + +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.SBPStruct; +import org.json.JSONObject; + +public class StatusJournalItem extends SBPStruct { + + /** Milliseconds since system startup */ + public long uptime; + + public SubSystemReport report; + + public StatusJournalItem() {} + + @Override + public StatusJournalItem parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + uptime = parser.getU32(); + report = new SubSystemReport().parse(parser); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + builder.putU32(uptime); + report.build(builder); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("uptime", uptime); + obj.put("report", report.toJSON()); + return obj; + } +} diff --git a/java/test/auto_check_sbp_system_MsgStatusJournalTest.java b/java/test/auto_check_sbp_system_MsgStatusJournalTest.java new file mode 100644 index 0000000000..2239613c10 --- /dev/null +++ b/java/test/auto_check_sbp_system_MsgStatusJournalTest.java @@ -0,0 +1,301 @@ +/* Copyright (C) 2015-2022 Swift Navigation Inc. + * Contact: https://support.swiftnav.com + * + * This source is subject to the license found in the file 'LICENSE' which must + * be be distributed together with this source. All other rights reserved. + * + * THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, + * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + */ +package com.swiftnav.sbp.test; + +// This file was auto-generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml +// by generate.py. Do not modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.system.MsgStatusJournal; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_system_MsgStatusJournalTest { + + public static boolean debug = false; + private static final double DELTA = 1e-15; + + @Test + public void test1() throws Throwable { + if (debug) System.out.format("%n%s%n", "auto_check_sbp_system_MsgStatusJournalTest.test1"); + byte[] payload = + new byte[] { + (byte) 1, (byte) 0, (byte) 1, (byte) 4, (byte) 100, (byte) 0, (byte) 0, + (byte) 0, (byte) 16, (byte) 146, (byte) 16, (byte) 0, (byte) 0, (byte) 6, + (byte) 0, (byte) 1, (byte) 13, (byte) 186, (byte) 19, (byte) 0, (byte) 0, + (byte) 6, (byte) 0, (byte) 1, (byte) 14, (byte) 184, (byte) 34, (byte) 0, + (byte) 0, (byte) 6, (byte) 0, (byte) 1, (byte) 15, + }; + SBPMessage sbp = new SBPMessage(0x88D3, 0xFFFD, payload); + MsgStatusJournal msg = new MsgStatusJournal(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.journal[0].report.component; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].report.component + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[0].report.generic; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].report.generic + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[0].report.specific; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].report.specific + "' != '" + 13 + "'", + value.equals(BigInteger.valueOf(13L))); + } else { + value = value.longValue(); + expected = 13L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[0].uptime; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].uptime + "' != '" + 4242 + "'", + value.equals(BigInteger.valueOf(4242L))); + } else { + value = value.longValue(); + expected = 4242L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[1].report.component; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[1].report.component + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[1].report.generic; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[1].report.generic + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[1].report.specific; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[1].report.specific + "' != '" + 14 + "'", + value.equals(BigInteger.valueOf(14L))); + } else { + value = value.longValue(); + expected = 14L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[1].uptime; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[1].uptime + "' != '" + 5050 + "'", + value.equals(BigInteger.valueOf(5050L))); + } else { + value = value.longValue(); + expected = 5050L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[2].report.component; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[2].report.component + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[2].report.generic; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[2].report.generic + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[2].report.specific; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[2].report.specific + "' != '" + 15 + "'", + value.equals(BigInteger.valueOf(15L))); + } else { + value = value.longValue(); + expected = 15L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[2].uptime; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[2].uptime + "' != '" + 8888 + "'", + value.equals(BigInteger.valueOf(8888L))); + } else { + value = value.longValue(); + expected = 8888L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reporting_system; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reporting_system + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.sbp_version; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.sbp_version + "' != '" + 1025 + "'", + value.equals(BigInteger.valueOf(1025L))); + } else { + value = value.longValue(); + expected = 1025L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.sequence_descriptor; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.sequence_descriptor + "' != '" + 16 + "'", + value.equals(BigInteger.valueOf(16L))); + } else { + value = value.longValue(); + expected = 16L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.total_status_reports; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.total_status_reports + "' != '" + 100 + "'", + value.equals(BigInteger.valueOf(100L))); + } else { + value = value.longValue(); + expected = 100L; + org.junit.Assert.assertEquals(value, expected); + } + } + + @Test + public void test2() throws Throwable { + if (debug) System.out.format("%n%s%n", "auto_check_sbp_system_MsgStatusJournalTest.test2"); + byte[] payload = + new byte[] { + (byte) 1, (byte) 0, (byte) 1, (byte) 4, (byte) 100, (byte) 0, (byte) 0, + (byte) 0, (byte) 16, (byte) 146, (byte) 16, (byte) 0, (byte) 0, (byte) 6, + (byte) 0, (byte) 1, (byte) 13, + }; + SBPMessage sbp = new SBPMessage(0x88D3, 0xFFFD, payload); + MsgStatusJournal msg = new MsgStatusJournal(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.journal[0].report.component; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].report.component + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[0].report.generic; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].report.generic + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[0].report.specific; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].report.specific + "' != '" + 13 + "'", + value.equals(BigInteger.valueOf(13L))); + } else { + value = value.longValue(); + expected = 13L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.journal[0].uptime; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.journal[0].uptime + "' != '" + 4242 + "'", + value.equals(BigInteger.valueOf(4242L))); + } else { + value = value.longValue(); + expected = 4242L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reporting_system; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reporting_system + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.sbp_version; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.sbp_version + "' != '" + 1025 + "'", + value.equals(BigInteger.valueOf(1025L))); + } else { + value = value.longValue(); + expected = 1025L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.sequence_descriptor; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.sequence_descriptor + "' != '" + 16 + "'", + value.equals(BigInteger.valueOf(16L))); + } else { + value = value.longValue(); + expected = 16L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.total_status_reports; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.total_status_reports + "' != '" + 100 + "'", + value.equals(BigInteger.valueOf(100L))); + } else { + value = value.longValue(); + expected = 100L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/javascript/sbp.bundle.js b/javascript/sbp.bundle.js index c66b446fac..94ad895cd5 100644 --- a/javascript/sbp.bundle.js +++ b/javascript/sbp.bundle.js @@ -12,4 +12,4 @@ var p=r(25),o=r(26),i=r(16);function s(){return a.TYPED_ARRAY_SUPPORT?2147483647 * @author Feross Aboukhadijeh * @license MIT */ -function p(e,t){if(e===t)return 0;for(var r=e.length,p=t.length,o=0,i=Math.min(r,p);o=0;l--)if(c[l]!==u[l])return!1;for(l=c.length-1;l>=0;l--)if(a=c[l],!g(e[a],t[a],r,p))return!1;return!0}(e,t,r,s))}return r?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function m(e,t,r,p){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(p=r,r=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),p=(r&&r.name?" ("+r.name+").":".")+(p?" "+p:"."),e&&!o&&_(o,r,"Missing expected exception"+p);var s="string"==typeof p,n=!e&&o&&!r;if((!e&&i.isError(o)&&s&&E(o,r)||n)&&_(o,r,"Got unwanted exception"+p),e&&o&&r&&!E(o,r)||!e&&o)throw o}u.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return f(d(e.actual),128)+" "+e.operator+" "+f(d(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||_;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var p=r.stack,o=h(t),i=p.indexOf("\n"+o);if(i>=0){var s=p.indexOf("\n",i+1);p=p.substring(s+1)}this.stack=p}}},i.inherits(u.AssertionError,Error),u.fail=_,u.ok=S,u.equal=function(e,t,r){e!=t&&_(e,t,r,"==",u.equal)},u.notEqual=function(e,t,r){e==t&&_(e,t,r,"!=",u.notEqual)},u.deepEqual=function(e,t,r){g(e,t,!1)||_(e,t,r,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,r){g(e,t,!0)||_(e,t,r,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,r){g(e,t,!1)&&_(e,t,r,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,r,p){g(t,r,!0)&&_(t,r,p,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,r){e!==t&&_(e,t,r,"===",u.strictEqual)},u.notStrictEqual=function(e,t,r){e===t&&_(e,t,r,"!==",u.notStrictEqual)},u.throws=function(e,t,r){m(!0,e,t,r)},u.doesNotThrow=function(e,t,r){m(!1,e,t,r)},u.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var r in e)s.call(e,r)&&t.push(r);return t}}).call(this,r(5))},function(e,t,r){var p;!function(r){o(Math.pow(36,5)),o(Math.pow(16,7)),o(Math.pow(10,9)),o(Math.pow(2,30)),o(36),o(16),o(10),o(2);function o(e,t){return this instanceof o?(this._low=0,this._high=0,this.remainder=null,void 0===t?s.call(this,e):"string"==typeof e?n.call(this,e,t):void i.call(this,e,t)):new o(e,t)}function i(e,t){return this._low=0|e,this._high=0|t,this}function s(e){return this._low=65535&e,this._high=e>>>16,this}function n(e,t){var r=parseInt(e,t||10);return this._low=65535&r,this._high=r>>>16,this}o.prototype.fromBits=i,o.prototype.fromNumber=s,o.prototype.fromString=n,o.prototype.toNumber=function(){return 65536*this._high+this._low},o.prototype.toString=function(e){return this.toNumber().toString(e||10)},o.prototype.add=function(e){var t=this._low+e._low,r=t>>>16;return r+=this._high+e._high,this._low=65535&t,this._high=65535&r,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,r,p=this._high,o=this._low,i=e._high,s=e._low;return t=(r=o*s)>>>16,t+=p*s,t&=65535,t+=o*i,this._low=65535&r,this._high=65535&t,this},o.prototype.div=function(e){if(0==e._low&&0==e._high)throw Error("division by zero");if(0==e._high&&1==e._low)return this.remainder=new o(0),this;if(e.gt(this))return this.remainder=this.clone(),this._low=0,this._high=0,this;if(this.eq(e))return this.remainder=new o(0),this._low=1,this._high=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._low=0,this._high=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=16?this._high|=1<>>16)&65535,this},o.prototype.equals=o.prototype.eq=function(e){return this._low==e._low&&this._high==e._high},o.prototype.greaterThan=o.prototype.gt=function(e){return this._high>e._high||!(this._highe._low},o.prototype.lessThan=o.prototype.lt=function(e){return this._highe._high)&&this._low16?(this._low=this._high>>e-16,this._high=0):16==e?(this._low=this._high,this._high=0):(this._low=this._low>>e|this._high<<16-e&65535,this._high>>=e),this},o.prototype.shiftLeft=o.prototype.shiftl=function(e,t){return e>16?(this._high=this._low<>16-e,this._low=this._low<>>32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.rotateRight=o.prototype.rotr=function(e){var t=this._high<<16|this._low;return t=t>>>e|t<<32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.clone=function(){return new o(this._low,this._high)},void 0===(p=function(){return o}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p;!function(r){var o={16:s(Math.pow(16,5)),10:s(Math.pow(10,5)),2:s(Math.pow(2,5))},i={16:s(16),10:s(10),2:s(2)};function s(e,t,r,p){return this instanceof s?(this.remainder=null,"string"==typeof e?l.call(this,e,t):void 0===t?a.call(this,e):void n.apply(this,arguments)):new s(e,t,r,p)}function n(e,t,r,p){return void 0===r?(this._a00=65535&e,this._a16=e>>>16,this._a32=65535&t,this._a48=t>>>16,this):(this._a00=0|e,this._a16=0|t,this._a32=0|r,this._a48=0|p,this)}function a(e){return this._a00=65535&e,this._a16=e>>>16,this._a32=0,this._a48=0,this}function l(e,t){t=t||10,this._a00=0,this._a16=0,this._a32=0,this._a48=0;for(var r=o[t]||new s(Math.pow(t,5)),p=0,i=e.length;p=0&&(r.div(t),p[o]=r.remainder.toNumber().toString(e),r.gt(t));o--);return p[o-1]=r.toNumber().toString(e),p.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,r=t>>>16,p=(r+=this._a16+e._a16)>>>16,o=(p+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&r,this._a32=65535&p,this._a48=65535&o,this},s.prototype.subtract=function(e){return this.add(e.clone().negate())},s.prototype.multiply=function(e){var t=this._a00,r=this._a16,p=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,c=(l+=t*s)>>>16;l&=65535,c+=(l+=r*i)>>>16;var u=(c+=t*n)>>>16;return c&=65535,u+=(c+=r*s)>>>16,c&=65535,u+=(c+=p*i)>>>16,u+=t*e._a48,u&=65535,u+=r*n,u&=65535,u+=p*s,u&=65535,u+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&c,this._a48=65535&u,this},s.prototype.div=function(e){if(0==e._a16&&0==e._a32&&0==e._a48){if(0==e._a00)throw Error("division by zero");if(1==e._a00)return this.remainder=new s(0),this}if(e.gt(this))return this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0,this;if(this.eq(e))return this.remainder=new s(0),this._a00=1,this._a16=0,this._a32=0,this._a48=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=48?this._a48|=1<=32?this._a32|=1<=16?this._a16|=1<>>16),this._a16=65535&e,e=(65535&~this._a32)+(e>>>16),this._a32=65535&e,this._a48=~this._a48+(e>>>16)&65535,this},s.prototype.equals=s.prototype.eq=function(e){return this._a48==e._a48&&this._a00==e._a00&&this._a32==e._a32&&this._a16==e._a16},s.prototype.greaterThan=s.prototype.gt=function(e){return this._a48>e._a48||!(this._a48e._a32||!(this._a32e._a16||!(this._a16e._a00))},s.prototype.lessThan=s.prototype.lt=function(e){return this._a48e._a48)&&(this._a32e._a32)&&(this._a16e._a16)&&this._a00=48?(this._a00=this._a48>>e-48,this._a16=0,this._a32=0,this._a48=0):e>=32?(e-=32,this._a00=65535&(this._a32>>e|this._a48<<16-e),this._a16=this._a48>>e&65535,this._a32=0,this._a48=0):e>=16?(e-=16,this._a00=65535&(this._a16>>e|this._a32<<16-e),this._a16=65535&(this._a32>>e|this._a48<<16-e),this._a32=this._a48>>e&65535,this._a48=0):(this._a00=65535&(this._a00>>e|this._a16<<16-e),this._a16=65535&(this._a16>>e|this._a32<<16-e),this._a32=65535&(this._a32>>e|this._a48<<16-e),this._a48=this._a48>>e&65535),this},s.prototype.shiftLeft=s.prototype.shiftl=function(e,t){return(e%=64)>=48?(this._a48=this._a00<=32?(e-=32,this._a48=this._a16<>16-e,this._a32=this._a00<=16?(e-=16,this._a48=this._a32<>16-e,this._a32=65535&(this._a16<>16-e),this._a16=this._a00<>16-e,this._a32=65535&(this._a32<>16-e),this._a16=65535&(this._a16<>16-e),this._a00=this._a00<=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r<>>32-e,i=p<>>32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.rotateRight=s.prototype.rotr=function(e){if(0==(e%=64))return this;if(e>=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r>>>e|p<<32-e,i=p>>>e|r<<32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.clone=function(){return new s(this._a00,this._a16,this._a32,this._a48)},void 0===(p=function(){return s}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=r(0).GnssSignalDep,n=(r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT",n.prototype.msg_type=47,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:i.prototype.parser}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),n.prototype.fieldSpec.push(["cp","writeFloatLE",4]),n.prototype.fieldSpec.push(["cf","writeFloatLE",4]),n.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_C",a.prototype.msg_type=31,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),a.prototype.fieldSpec.push(["cp","writeFloatLE",4]),a.prototype.fieldSpec.push(["cf","writeFloatLE",4]),a.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_B",l.prototype.msg_type=20,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["snr","writeFloatLE",4]),l.prototype.fieldSpec.push(["cp","writeFloatLE",4]),l.prototype.fieldSpec.push(["cf","writeFloatLE",4]),l.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",c.prototype.msg_type=21,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["snr","writeFloatLE",4]),c.prototype.fieldSpec.push(["cp","writeFloatLE",4]),c.prototype.fieldSpec.push(["cf","writeFloatLE",4]),c.prototype.fieldSpec.push(["prn","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="AcqSvProfile",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:i.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["job_type","writeUInt8",1]),u.prototype.fieldSpec.push(["status","writeUInt8",1]),u.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),u.prototype.fieldSpec.push(["int_time","writeUInt8",1]),u.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),u.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),u.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),u.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf","writeInt32LE",4]),u.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="AcqSvProfileDep",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:s.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["job_type","writeUInt8",1]),y.prototype.fieldSpec.push(["status","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),y.prototype.fieldSpec.push(["int_time","writeUInt8",1]),y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),y.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),y.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),y.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf","writeInt32LE",4]),y.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE",h.prototype.msg_type=46,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:u.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["acq_sv_profile","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE_DEP",f.prototype.msg_type=30,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:y.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["acq_sv_profile","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={47:n,MsgAcqResult:n,31:a,MsgAcqResultDepC:a,20:l,MsgAcqResultDepB:l,21:c,MsgAcqResultDepA:c,AcqSvProfile:u,AcqSvProfileDep:y,46:h,MsgAcqSvProfile:h,30:f,MsgAcqSvProfileDep:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",i.prototype.msg_type=179,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",s.prototype.msg_type=180,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("flags").string("version",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),s.prototype.fieldSpec.push(["version","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_JUMP_TO_APP",n.prototype.msg_type=177,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("jump"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["jump","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_REQ",a.prototype.msg_type=222,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little"),a.prototype.fieldSpec=[];var l=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_RESP",l.prototype.msg_type=221,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("dna",{length:8,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["dna","array","writeUInt8",function(){return 1},8]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",c.prototype.msg_type=176,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["handshake","array","writeUInt8",function(){return 1},null]),e.exports={179:i,MsgBootloaderHandshakeReq:i,180:s,MsgBootloaderHandshakeResp:s,177:n,MsgBootloaderJumpToApp:n,222:a,MsgNapDeviceDnaReq:a,221:l,MsgNapDeviceDnaResp:l,176:c,MsgBootloaderHandshakeDepA:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_EXT_EVENT",i.prototype.msg_type=257,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags").uint8("pin"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),i.prototype.fieldSpec.push(["pin","writeUInt8",1]),e.exports={257:i,MsgExtEvent:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_REQ",i.prototype.msg_type=168,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").uint8("chunk_size").string("filename",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),i.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),i.prototype.fieldSpec.push(["chunk_size","writeUInt8",1]),i.prototype.fieldSpec.push(["filename","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_RESP",s.prototype.msg_type=163,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),s.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_REQ",n.prototype.msg_type=169,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("dirname",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),n.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),n.prototype.fieldSpec.push(["dirname","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_RESP",a.prototype.msg_type=170,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),a.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_REMOVE",l.prototype.msg_type=172,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("filename",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["filename","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_REQ",c.prototype.msg_type=173,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),c.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),c.prototype.fieldSpec.push(["filename","string",null]),c.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_RESP",u.prototype.msg_type=171,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_REQ",y.prototype.msg_type=4097,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sequence"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_RESP",h.prototype.msg_type=4098,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("window_size").uint32("batch_size").uint32("fileio_version"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),h.prototype.fieldSpec.push(["window_size","writeUInt32LE",4]),h.prototype.fieldSpec.push(["batch_size","writeUInt32LE",4]),h.prototype.fieldSpec.push(["fileio_version","writeUInt32LE",4]),e.exports={168:i,MsgFileioReadReq:i,163:s,MsgFileioReadResp:s,169:n,MsgFileioReadDirReq:n,170:a,MsgFileioReadDirResp:a,172:l,MsgFileioRemove:l,173:c,MsgFileioWriteReq:c,171:u,MsgFileioWriteResp:u,4097:y,MsgFileioConfigReq:y,4098:h,MsgFileioConfigResp:h}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_PROGRAM",i.prototype.msg_type=230,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len").array("data",{type:"uint8",length:"addr_len"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["target","writeUInt8",1]),i.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),i.prototype.fieldSpec.push(["addr_len","writeUInt8",1]),i.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},"addr_len"]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_DONE",s.prototype.msg_type=224,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("response"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["response","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_REQ",n.prototype.msg_type=231,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["target","writeUInt8",1]),n.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),n.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_RESP",a.prototype.msg_type=225,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["target","writeUInt8",1]),a.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),a.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_ERASE",l.prototype.msg_type=226,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("target").uint32("sector_num"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["target","writeUInt8",1]),l.prototype.fieldSpec.push(["sector_num","writeUInt32LE",4]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",c.prototype.msg_type=227,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",u.prototype.msg_type=228,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_REQ",y.prototype.msg_type=232,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_RESP",h.prototype.msg_type=229,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("stm_id",{length:12,type:"uint8"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["stm_id","array","writeUInt8",function(){return 1},12]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_M25_FLASH_WRITE_STATUS",f.prototype.msg_type=243,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("status",{length:1,type:"uint8"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","array","writeUInt8",function(){return 1},1]),e.exports={230:i,MsgFlashProgram:i,224:s,MsgFlashDone:s,231:n,MsgFlashReadReq:n,225:a,MsgFlashReadResp:a,226:l,MsgFlashErase:l,227:c,MsgStmFlashLockSector:c,228:u,MsgStmFlashUnlockSector:u,232:y,MsgStmUniqueIdReq:y,229:h,MsgStmUniqueIdResp:h,243:f,MsgM25FlashWriteStatus:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_IMU_RAW",i.prototype.msg_type=2304,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("acc_x").int16("acc_y").int16("acc_z").int16("gyr_x").int16("gyr_y").int16("gyr_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["acc_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_z","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_z","writeInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_IMU_AUX",s.prototype.msg_type=2305,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("imu_type").int16("temp").uint8("imu_conf"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["imu_type","writeUInt8",1]),s.prototype.fieldSpec.push(["temp","writeInt16LE",2]),s.prototype.fieldSpec.push(["imu_conf","writeUInt8",1]),e.exports={2304:i,MsgImuRaw:i,2305:s,MsgImuAux:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_CPU_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_CPU_STATE_DEP_A",i.prototype.msg_type=32512,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").string("tname",{length:15}).string("cmdline",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["index","writeUInt8",1]),i.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),i.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),i.prototype.fieldSpec.push(["tname","string",15]),i.prototype.fieldSpec.push(["cmdline","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_MEM_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_MEM_STATE_DEP_A",s.prototype.msg_type=32513,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").string("tname",{length:15}).string("cmdline",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["index","writeUInt8",1]),s.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),s.prototype.fieldSpec.push(["pmem","writeUInt8",1]),s.prototype.fieldSpec.push(["tname","string",15]),s.prototype.fieldSpec.push(["cmdline","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SYS_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SYS_STATE_DEP_A",n.prototype.msg_type=32514,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),n.prototype.fieldSpec.push(["pmem","writeUInt8",1]),n.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),n.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",a.prototype.msg_type=32515,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("socket_count").uint16("socket_types").uint16("socket_states").string("cmdline",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["index","writeUInt8",1]),a.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_count","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),a.prototype.fieldSpec.push(["cmdline","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",l.prototype.msg_type=32516,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("recv_queued").uint16("send_queued").uint16("socket_types").uint16("socket_states").string("address_of_largest",{length:64}).string("cmdline",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["index","writeUInt8",1]),l.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),l.prototype.fieldSpec.push(["recv_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["send_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),l.prototype.fieldSpec.push(["address_of_largest","string",64]),l.prototype.fieldSpec.push(["cmdline","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",c.prototype.msg_type=32517,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("avg_queue_depth").uint32("max_queue_depth").array("socket_state_counts",{length:16,type:"uint16le"}).array("socket_type_counts",{length:16,type:"uint16le"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),c.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",u.prototype.msg_type=32518,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt8",1]),u.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),u.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),u.prototype.fieldSpec.push(["cmdline","string",null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_SUMMARY",y.prototype.msg_type=32519,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sys_fd_count").string("most_opened",{greedy:!0}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sys_fd_count","writeUInt32LE",4]),y.prototype.fieldSpec.push(["most_opened","string",null]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_CPU_STATE",h.prototype.msg_type=32520,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["index","writeUInt8",1]),h.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),h.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),h.prototype.fieldSpec.push(["time","writeUInt32LE",4]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["tname","string",15]),h.prototype.fieldSpec.push(["cmdline","string",null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_MEM_STATE",f.prototype.msg_type=32521,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["index","writeUInt8",1]),f.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),f.prototype.fieldSpec.push(["pmem","writeUInt8",1]),f.prototype.fieldSpec.push(["time","writeUInt32LE",4]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["tname","string",15]),f.prototype.fieldSpec.push(["cmdline","string",null]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SYS_STATE",d.prototype.msg_type=32522,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count").uint32("time").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),d.prototype.fieldSpec.push(["pmem","writeUInt8",1]),d.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),d.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]),d.prototype.fieldSpec.push(["time","writeUInt32LE",4]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={32512:i,MsgLinuxCpuStateDepA:i,32513:s,MsgLinuxMemStateDepA:s,32514:n,MsgLinuxSysStateDepA:n,32515:a,MsgLinuxProcessSocketCounts:a,32516:l,MsgLinuxProcessSocketQueues:l,32517:c,MsgLinuxSocketUsage:c,32518:u,MsgLinuxProcessFdCount:u,32519:y,MsgLinuxProcessFdSummary:y,32520:h,MsgLinuxCpuState:h,32521:f,MsgLinuxMemState:f,32522:d,MsgLinuxSysState:d}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LOG",i.prototype.msg_type=1025,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("level").string("text",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["level","writeUInt8",1]),i.prototype.fieldSpec.push(["text","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FWD",s.prototype.msg_type=1026,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("source").uint8("protocol").array("fwd_payload",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["protocol","writeUInt8",1]),s.prototype.fieldSpec.push(["fwd_payload","array","writeUInt8",function(){return 1},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_PRINT_DEP",n.prototype.msg_type=16,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").string("text",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["text","string",null]),e.exports={1025:i,MsgLog:i,1026:s,MsgFwd:s,16:n,MsgPrintDep:n}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_MAG_RAW",i.prototype.msg_type=2306,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("mag_x").int16("mag_y").int16("mag_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["mag_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_z","writeInt16LE",2]),e.exports={2306:i,MsgMagRaw:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME",i.prototype.msg_type=258,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME_GNSS",s.prototype.msg_type=260,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_UTC_TIME",n.prototype.msg_type=259,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt8",1]),n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["year","writeUInt16LE",2]),n.prototype.fieldSpec.push(["month","writeUInt8",1]),n.prototype.fieldSpec.push(["day","writeUInt8",1]),n.prototype.fieldSpec.push(["hours","writeUInt8",1]),n.prototype.fieldSpec.push(["minutes","writeUInt8",1]),n.prototype.fieldSpec.push(["seconds","writeUInt8",1]),n.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_UTC_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_UTC_TIME_GNSS",a.prototype.msg_type=261,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]),a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["year","writeUInt16LE",2]),a.prototype.fieldSpec.push(["month","writeUInt8",1]),a.prototype.fieldSpec.push(["day","writeUInt8",1]),a.prototype.fieldSpec.push(["hours","writeUInt8",1]),a.prototype.fieldSpec.push(["minutes","writeUInt8",1]),a.prototype.fieldSpec.push(["seconds","writeUInt8",1]),a.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_DOPS",l.prototype.msg_type=520,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF",c.prototype.msg_type=521,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),c.prototype.fieldSpec.push(["x","writeDoubleLE",8]),c.prototype.fieldSpec.push(["y","writeDoubleLE",8]),c.prototype.fieldSpec.push(["z","writeDoubleLE",8]),c.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_COV",u.prototype.msg_type=532,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),u.prototype.fieldSpec.push(["x","writeDoubleLE",8]),u.prototype.fieldSpec.push(["y","writeDoubleLE",8]),u.prototype.fieldSpec.push(["z","writeDoubleLE",8]),u.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH",y.prototype.msg_type=522,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),y.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),y.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),y.prototype.fieldSpec.push(["height","writeDoubleLE",8]),y.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),y.prototype.fieldSpec.push(["flags","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV",h.prototype.msg_type=529,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),h.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),h.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),h.prototype.fieldSpec.push(["height","writeDoubleLE",8]),h.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),h.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]);var f=function(e,t){return p.call(this,e),this.messageType="EstimatedHorizontalErrorEllipse",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="EstimatedHorizontalErrorEllipse",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").floatle("semi_major").floatle("semi_minor").floatle("orientation"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["semi_major","writeFloatLE",4]),f.prototype.fieldSpec.push(["semi_minor","writeFloatLE",4]),f.prototype.fieldSpec.push(["orientation","writeFloatLE",4]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_ACC",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_ACC",d.prototype.msg_type=536,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").doublele("orthometric_height").floatle("h_accuracy").floatle("v_accuracy").floatle("ct_accuracy").floatle("at_accuracy").nest("h_ellipse",{type:f.prototype.parser}).uint8("confidence_and_geoid").uint8("n_sats").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),d.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),d.prototype.fieldSpec.push(["height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["orthometric_height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["h_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["v_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["ct_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["at_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["h_ellipse",f.prototype.fieldSpec]),d.prototype.fieldSpec.push(["confidence_and_geoid","writeUInt8",1]),d.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF",_.prototype.msg_type=523,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),_.prototype.fieldSpec.push(["x","writeInt32LE",4]),_.prototype.fieldSpec.push(["y","writeInt32LE",4]),_.prototype.fieldSpec.push(["z","writeInt32LE",4]),_.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED",S.prototype.msg_type=524,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),S.prototype.fieldSpec.push(["n","writeInt32LE",4]),S.prototype.fieldSpec.push(["e","writeInt32LE",4]),S.prototype.fieldSpec.push(["d","writeInt32LE",4]),S.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF",g.prototype.msg_type=525,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),g.prototype.fieldSpec.push(["x","writeInt32LE",4]),g.prototype.fieldSpec.push(["y","writeInt32LE",4]),g.prototype.fieldSpec.push(["z","writeInt32LE",4]),g.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),g.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_COV",w.prototype.msg_type=533,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),w.prototype.fieldSpec.push(["x","writeInt32LE",4]),w.prototype.fieldSpec.push(["y","writeInt32LE",4]),w.prototype.fieldSpec.push(["z","writeInt32LE",4]),w.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),w.prototype.fieldSpec.push(["flags","writeUInt8",1]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED",E.prototype.msg_type=526,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),E.prototype.fieldSpec.push(["n","writeInt32LE",4]),E.prototype.fieldSpec.push(["e","writeInt32LE",4]),E.prototype.fieldSpec.push(["d","writeInt32LE",4]),E.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),E.prototype.fieldSpec.push(["flags","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_COV",m.prototype.msg_type=530,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),m.prototype.fieldSpec.push(["n","writeInt32LE",4]),m.prototype.fieldSpec.push(["e","writeInt32LE",4]),m.prototype.fieldSpec.push(["d","writeInt32LE",4]),m.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),m.prototype.fieldSpec.push(["flags","writeUInt8",1]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_GNSS",b.prototype.msg_type=553,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),b.prototype.fieldSpec.push(["x","writeDoubleLE",8]),b.prototype.fieldSpec.push(["y","writeDoubleLE",8]),b.prototype.fieldSpec.push(["z","writeDoubleLE",8]),b.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",v.prototype.msg_type=564,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["x","writeDoubleLE",8]),v.prototype.fieldSpec.push(["y","writeDoubleLE",8]),v.prototype.fieldSpec.push(["z","writeDoubleLE",8]),v.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_GNSS",L.prototype.msg_type=554,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),L.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),L.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),L.prototype.fieldSpec.push(["height","writeDoubleLE",8]),L.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["flags","writeUInt8",1]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV_GNSS",I.prototype.msg_type=561,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),I.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),I.prototype.fieldSpec.push(["height","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_GNSS",T.prototype.msg_type=557,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),T.prototype.fieldSpec.push(["x","writeInt32LE",4]),T.prototype.fieldSpec.push(["y","writeInt32LE",4]),T.prototype.fieldSpec.push(["z","writeInt32LE",4]),T.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["flags","writeUInt8",1]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_COV_GNSS",U.prototype.msg_type=565,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),U.prototype.fieldSpec.push(["x","writeInt32LE",4]),U.prototype.fieldSpec.push(["y","writeInt32LE",4]),U.prototype.fieldSpec.push(["z","writeInt32LE",4]),U.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),U.prototype.fieldSpec.push(["flags","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_GNSS",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_GNSS",M.prototype.msg_type=558,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),M.prototype.fieldSpec.push(["n","writeInt32LE",4]),M.prototype.fieldSpec.push(["e","writeInt32LE",4]),M.prototype.fieldSpec.push(["d","writeInt32LE",4]),M.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),M.prototype.fieldSpec.push(["flags","writeUInt8",1]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_COV_GNSS",D.prototype.msg_type=562,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),D.prototype.fieldSpec.push(["n","writeInt32LE",4]),D.prototype.fieldSpec.push(["e","writeInt32LE",4]),D.prototype.fieldSpec.push(["d","writeInt32LE",4]),D.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),D.prototype.fieldSpec.push(["flags","writeUInt8",1]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_VEL_BODY",O.prototype.msg_type=531,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),O.prototype.fieldSpec.push(["x","writeInt32LE",4]),O.prototype.fieldSpec.push(["y","writeInt32LE",4]),O.prototype.fieldSpec.push(["z","writeInt32LE",4]),O.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),O.prototype.fieldSpec.push(["flags","writeUInt8",1]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_COG",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_VEL_COG",G.prototype.msg_type=540,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").uint32("tow").uint32("cog").uint32("sog").int32("v_up").uint32("cog_accuracy").uint32("sog_accuracy").uint32("v_up_accuracy").uint16("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),G.prototype.fieldSpec.push(["cog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up","writeInt32LE",4]),G.prototype.fieldSpec.push(["cog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["flags","writeUInt16LE",2]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_AGE_CORRECTIONS",A.prototype.msg_type=528,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint32("tow").uint16("age"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),A.prototype.fieldSpec.push(["age","writeUInt16LE",2]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME_DEP_A",C.prototype.msg_type=256,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),C.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),C.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),C.prototype.fieldSpec.push(["flags","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_DOPS_DEP_A",R.prototype.msg_type=518,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),R.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_DEP_A",P.prototype.msg_type=512,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),P.prototype.fieldSpec.push(["x","writeDoubleLE",8]),P.prototype.fieldSpec.push(["y","writeDoubleLE",8]),P.prototype.fieldSpec.push(["z","writeDoubleLE",8]),P.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),P.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),P.prototype.fieldSpec.push(["flags","writeUInt8",1]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_DEP_A",N.prototype.msg_type=513,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),N.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),N.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),N.prototype.fieldSpec.push(["height","writeDoubleLE",8]),N.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),N.prototype.fieldSpec.push(["flags","writeUInt8",1]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF_DEP_A",j.prototype.msg_type=514,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),j.prototype.fieldSpec.push(["x","writeInt32LE",4]),j.prototype.fieldSpec.push(["y","writeInt32LE",4]),j.prototype.fieldSpec.push(["z","writeInt32LE",4]),j.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),j.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),j.prototype.fieldSpec.push(["flags","writeUInt8",1]);var x=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED_DEP_A",x.prototype.msg_type=515,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),x.prototype.fieldSpec.push(["n","writeInt32LE",4]),x.prototype.fieldSpec.push(["e","writeInt32LE",4]),x.prototype.fieldSpec.push(["d","writeInt32LE",4]),x.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),x.prototype.fieldSpec.push(["flags","writeUInt8",1]);var k=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_DEP_A",k.prototype.msg_type=516,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),k.prototype.fieldSpec.push(["x","writeInt32LE",4]),k.prototype.fieldSpec.push(["y","writeInt32LE",4]),k.prototype.fieldSpec.push(["z","writeInt32LE",4]),k.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["flags","writeUInt8",1]);var F=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_DEP_A",F.prototype.msg_type=517,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),F.prototype.fieldSpec.push(["n","writeInt32LE",4]),F.prototype.fieldSpec.push(["e","writeInt32LE",4]),F.prototype.fieldSpec.push(["d","writeInt32LE",4]),F.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),F.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),F.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),F.prototype.fieldSpec.push(["flags","writeUInt8",1]);var B=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING_DEP_A",B.prototype.msg_type=519,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),B.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),B.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),B.prototype.fieldSpec.push(["flags","writeUInt8",1]);var q=function(e,t){return p.call(this,e),this.messageType="MSG_PROTECTION_LEVEL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(p.prototype)).messageType="MSG_PROTECTION_LEVEL_DEP_A",q.prototype.msg_type=534,q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("tow").uint16("vpl").uint16("hpl").doublele("lat").doublele("lon").doublele("height").uint8("flags"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),q.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),q.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),q.prototype.fieldSpec.push(["height","writeDoubleLE",8]),q.prototype.fieldSpec.push(["flags","writeUInt8",1]);var z=function(e,t){return p.call(this,e),this.messageType="MSG_PROTECTION_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(p.prototype)).messageType="MSG_PROTECTION_LEVEL",z.prototype.msg_type=535,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("tow").int16("wn").uint16("hpl").uint16("vpl").uint16("atpl").uint16("ctpl").uint16("hvpl").uint16("vvpl").uint16("hopl").uint16("popl").uint16("ropl").doublele("lat").doublele("lon").doublele("height").int32("v_x").int32("v_y").int32("v_z").int32("roll").int32("pitch").int32("heading").uint32("flags"),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),z.prototype.fieldSpec.push(["wn","writeInt16LE",2]),z.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["atpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ctpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hopl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["popl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ropl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),z.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),z.prototype.fieldSpec.push(["height","writeDoubleLE",8]),z.prototype.fieldSpec.push(["v_x","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_y","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_z","writeInt32LE",4]),z.prototype.fieldSpec.push(["roll","writeInt32LE",4]),z.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),z.prototype.fieldSpec.push(["heading","writeInt32LE",4]),z.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),e.exports={258:i,MsgGpsTime:i,260:s,MsgGpsTimeGnss:s,259:n,MsgUtcTime:n,261:a,MsgUtcTimeGnss:a,520:l,MsgDops:l,521:c,MsgPosEcef:c,532:u,MsgPosEcefCov:u,522:y,MsgPosLlh:y,529:h,MsgPosLlhCov:h,EstimatedHorizontalErrorEllipse:f,536:d,MsgPosLlhAcc:d,523:_,MsgBaselineEcef:_,524:S,MsgBaselineNed:S,525:g,MsgVelEcef:g,533:w,MsgVelEcefCov:w,526:E,MsgVelNed:E,530:m,MsgVelNedCov:m,553:b,MsgPosEcefGnss:b,564:v,MsgPosEcefCovGnss:v,554:L,MsgPosLlhGnss:L,561:I,MsgPosLlhCovGnss:I,557:T,MsgVelEcefGnss:T,565:U,MsgVelEcefCovGnss:U,558:M,MsgVelNedGnss:M,562:D,MsgVelNedCovGnss:D,531:O,MsgVelBody:O,540:G,MsgVelCog:G,528:A,MsgAgeCorrections:A,256:C,MsgGpsTimeDepA:C,518:R,MsgDopsDepA:R,512:P,MsgPosEcefDepA:P,513:N,MsgPosLlhDepA:N,514:j,MsgBaselineEcefDepA:j,515:x,MsgBaselineNedDepA:x,516:k,MsgVelEcefDepA:k,517:F,MsgVelNedDepA:F,519:B,MsgBaselineHeadingDepA:B,534:q,MsgProtectionLevelDepA:q,535:z,MsgProtectionLevel:z}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_NDB_EVENT",s.prototype.msg_type=1024,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("recv_time").uint8("event").uint8("object_type").uint8("result").uint8("data_source").nest("object_sid",{type:i.prototype.parser}).nest("src_sid",{type:i.prototype.parser}).uint16("original_sender"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["event","writeUInt8",1]),s.prototype.fieldSpec.push(["object_type","writeUInt8",1]),s.prototype.fieldSpec.push(["result","writeUInt8",1]),s.prototype.fieldSpec.push(["data_source","writeUInt8",1]),s.prototype.fieldSpec.push(["object_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["src_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["original_sender","writeUInt16LE",2]),e.exports={1024:s,MsgNdbEvent:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase),s=r(0).GnssSignal,n=r(0).GnssSignalDep,a=r(0).GPSTime,l=r(0).GPSTimeDep,c=r(0).GPSTimeSec,u=(r(0).SvId,function(e,t){return p.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(p.prototype)).messageType="ObservationHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("t",{type:a.prototype.parser}).uint8("n_obs"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="Doppler",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").int16("i").uint8("f"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["i","writeInt16LE",2]),y.prototype.fieldSpec.push(["f","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="PackedObsContent",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).nest("D",{type:y.prototype.parser}).uint8("cn0").uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["P","writeUInt32LE",4]),h.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),h.prototype.fieldSpec.push(["D",y.prototype.fieldSpec]),h.prototype.fieldSpec.push(["cn0","writeUInt8",1]),h.prototype.fieldSpec.push(["lock","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var f=function(e,t){return p.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="PackedOsrContent",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}).uint16("iono_std").uint16("tropo_std").uint16("range_std"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["P","writeUInt32LE",4]),f.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["lock","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),f.prototype.fieldSpec.push(["iono_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["tropo_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["range_std","writeUInt16LE",2]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:h.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_LLH",_.prototype.msg_type=68,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").doublele("lat").doublele("lon").doublele("height"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),_.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),_.prototype.fieldSpec.push(["height","writeDoubleLE",8]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_ECEF",S.prototype.msg_type=72,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").doublele("x").doublele("y").doublele("z"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["x","writeDoubleLE",8]),S.prototype.fieldSpec.push(["y","writeDoubleLE",8]),S.prototype.fieldSpec.push(["z","writeDoubleLE",8]);var g=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).floatle("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),g.prototype.fieldSpec.push(["ura","writeFloatLE",4]),g.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),g.prototype.fieldSpec.push(["valid","writeUInt8",1]),g.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),w.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),w.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),w.prototype.fieldSpec.push(["valid","writeUInt8",1]),w.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var E=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepA",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toe",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),E.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),E.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),E.prototype.fieldSpec.push(["valid","writeUInt8",1]),E.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_E",m.prototype.msg_type=129,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),m.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),m.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["w","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),m.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),m.prototype.fieldSpec.push(["iode","writeUInt8",1]),m.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_F",b.prototype.msg_type=134,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),b.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),b.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),b.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["w","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),b.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS",v.prototype.msg_type=138,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeFloatLE",4]),v.prototype.fieldSpec.push(["af1","writeFloatLE",4]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_QZSS",L.prototype.msg_type=142,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),L.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),L.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["w","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af0","writeFloatLE",4]),L.prototype.fieldSpec.push(["af1","writeFloatLE",4]),L.prototype.fieldSpec.push(["af2","writeFloatLE",4]),L.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_BDS",I.prototype.msg_type=137,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd1").floatle("tgd2").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),I.prototype.fieldSpec.push(["tgd2","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),I.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),I.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["w","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af1","writeFloatLE",4]),I.prototype.fieldSpec.push(["af2","writeFloatLE",4]),I.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt8",1]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL_DEP_A",T.prototype.msg_type=149,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),T.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),T.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),T.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),T.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["w","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af2","writeFloatLE",4]),T.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL",U.prototype.msg_type=141,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc").uint8("source"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),U.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),U.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),U.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),U.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["w","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af2","writeFloatLE",4]),U.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),U.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),U.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),U.prototype.fieldSpec.push(["source","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_A",M.prototype.msg_type=130,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),M.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),M.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_A",D.prototype.msg_type=131,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),D.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),D.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),D.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_B",O.prototype.msg_type=132,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),O.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),O.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS",G.prototype.msg_type=140,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"floatle"}).array("acc",{length:3,type:"floatle"}).floatle("a_gf0").floatle("a_gf1"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),G.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["vel","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["a_gf0","writeFloatLE",4]),G.prototype.fieldSpec.push(["a_gf1","writeFloatLE",4]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_B",A.prototype.msg_type=133,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),A.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),A.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),A.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_C",C.prototype.msg_type=135,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),C.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),C.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["fcn","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_D",R.prototype.msg_type=136,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn").uint8("iod"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),R.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),R.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["fcn","writeUInt8",1]),R.prototype.fieldSpec.push(["iod","writeUInt8",1]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO",P.prototype.msg_type=139,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("gamma").floatle("tau").floatle("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"floatle"}).uint8("fcn").uint8("iod"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),P.prototype.fieldSpec.push(["gamma","writeFloatLE",4]),P.prototype.fieldSpec.push(["tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["d_tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),P.prototype.fieldSpec.push(["fcn","writeUInt8",1]),P.prototype.fieldSpec.push(["iod","writeUInt8",1]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_D",N.prototype.msg_type=128,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),N.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),N.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["w","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["valid","writeUInt8",1]),N.prototype.fieldSpec.push(["healthy","writeUInt8",1]),N.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["iode","writeUInt8",1]),N.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),N.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_A",j.prototype.msg_type=26,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),j.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),j.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["w","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["valid","writeUInt8",1]),j.prototype.fieldSpec.push(["healthy","writeUInt8",1]),j.prototype.fieldSpec.push(["prn","writeUInt8",1]);var x=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_B",x.prototype.msg_type=70,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn").uint8("iode"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),x.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),x.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["w","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["valid","writeUInt8",1]),x.prototype.fieldSpec.push(["healthy","writeUInt8",1]),x.prototype.fieldSpec.push(["prn","writeUInt8",1]),x.prototype.fieldSpec.push(["iode","writeUInt8",1]);var k=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_C",k.prototype.msg_type=71,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),k.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),k.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),k.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),k.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),k.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),k.prototype.fieldSpec.push(["w","writeDoubleLE",8]),k.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),k.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),k.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),k.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),k.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),k.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),k.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),k.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),k.prototype.fieldSpec.push(["valid","writeUInt8",1]),k.prototype.fieldSpec.push(["healthy","writeUInt8",1]),k.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),k.prototype.fieldSpec.push(["iode","writeUInt8",1]),k.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),k.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var F=function(e,t){return p.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(p.prototype)).messageType="ObservationHeaderDep",F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").nest("t",{type:l.prototype.parser}).uint8("n_obs"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["t",l.prototype.fieldSpec]),F.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var B=function(e,t){return p.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(p.prototype)).messageType="CarrierPhaseDepA",B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["i","writeInt32LE",4]),B.prototype.fieldSpec.push(["f","writeUInt8",1]);var q=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepA",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").uint8("prn"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["P","writeUInt32LE",4]),q.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),q.prototype.fieldSpec.push(["cn0","writeUInt8",1]),q.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),q.prototype.fieldSpec.push(["prn","writeUInt8",1]);var z=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepB",z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["P","writeUInt32LE",4]),z.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),z.prototype.fieldSpec.push(["cn0","writeUInt8",1]),z.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),z.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);var V=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepC",V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["P","writeUInt32LE",4]),V.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),V.prototype.fieldSpec.push(["cn0","writeUInt8",1]),V.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),V.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);var H=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_A",H.prototype.msg_type=69,H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),H.prototype.fieldSpec.push(["obs","array",q.prototype.fieldSpec,function(){return this.fields.array.length},null]);var Y=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_B",Y.prototype.msg_type=67,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:z.prototype.parser,readUntil:"eof"}),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),Y.prototype.fieldSpec.push(["obs","array",z.prototype.fieldSpec,function(){return this.fields.array.length},null]);var W=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_C",W.prototype.msg_type=73,W.prototype.constructor=W,W.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:V.prototype.parser,readUntil:"eof"}),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),W.prototype.fieldSpec.push(["obs","array",V.prototype.fieldSpec,function(){return this.fields.array.length},null]);var Q=function(e,t){return p.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(p.prototype)).messageType="MSG_IONO",Q.prototype.msg_type=144,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).doublele("a0").doublele("a1").doublele("a2").doublele("a3").doublele("b0").doublele("b1").doublele("b2").doublele("b3"),Q.prototype.fieldSpec=[],Q.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),Q.prototype.fieldSpec.push(["a0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a3","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b3","writeDoubleLE",8]);var K=function(e,t){return p.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(p.prototype)).messageType="MSG_SV_CONFIGURATION_GPS_DEP",K.prototype.msg_type=145,K.prototype.constructor=K,K.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).uint32("l2c_mask"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),K.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);var X=function(e,t){return p.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(p.prototype)).messageType="GnssCapb",X.prototype.constructor=X,X.prototype.parser=(new o).endianess("little").uint64("gps_active").uint64("gps_l2c").uint64("gps_l5").uint32("glo_active").uint32("glo_l2of").uint32("glo_l3").uint64("sbas_active").uint64("sbas_l5").uint64("bds_active").uint64("bds_d2nav").uint64("bds_b2").uint64("bds_b2a").uint32("qzss_active").uint64("gal_active").uint64("gal_e5"),X.prototype.fieldSpec=[],X.prototype.fieldSpec.push(["gps_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l2c","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["glo_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l2of","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l3","writeUInt32LE",4]),X.prototype.fieldSpec.push(["sbas_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["sbas_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_d2nav","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2a","writeUInt64LE",8]),X.prototype.fieldSpec.push(["qzss_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["gal_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gal_e5","writeUInt64LE",8]);var J=function(e,t){return p.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(p.prototype)).messageType="MSG_GNSS_CAPB",J.prototype.msg_type=150,J.prototype.constructor=J,J.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).nest("gc",{type:X.prototype.parser}),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),J.prototype.fieldSpec.push(["gc",X.prototype.fieldSpec]);var $=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_A",$.prototype.msg_type=146,$.prototype.constructor=$,$.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).uint8("prn").uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),$.prototype.fieldSpec=[],$.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),$.prototype.fieldSpec.push(["prn","writeUInt8",1]),$.prototype.fieldSpec.push(["valid","writeUInt8",1]),$.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var Z=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_B",Z.prototype.msg_type=147,Z.prototype.constructor=Z,Z.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:n.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),Z.prototype.fieldSpec=[],Z.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["valid","writeUInt8",1]),Z.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var ee=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY",ee.prototype.msg_type=148,ee.prototype.constructor=ee,ee.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:s.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),ee.prototype.fieldSpec=[],ee.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["valid","writeUInt8",1]),ee.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var te=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContent",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),te.prototype.fieldSpec=[],te.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),te.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),te.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),te.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),te.prototype.fieldSpec.push(["valid","writeUInt8",1]),te.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var re=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContentDep",re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),re.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),re.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),re.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),re.prototype.fieldSpec.push(["valid","writeUInt8",1]),re.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var pe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS_DEP",pe.prototype.msg_type=112,pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("common",{type:re.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["common",re.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var oe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS",oe.prototype.msg_type=114,oe.prototype.constructor=oe,oe.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),oe.prototype.fieldSpec=[],oe.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),oe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var ie=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO_DEP",ie.prototype.msg_type=113,ie.prototype.constructor=ie,ie.prototype.parser=(new o).endianess("little").nest("common",{type:re.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),ie.prototype.fieldSpec=[],ie.prototype.fieldSpec.push(["common",re.prototype.fieldSpec]),ie.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["i","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var se=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO",se.prototype.msg_type=115,se.prototype.constructor=se,se.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),se.prototype.fieldSpec=[],se.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),se.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["i","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),se.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),se.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var ne=function(e,t){return p.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(p.prototype)).messageType="MSG_GLO_BIASES",ne.prototype.msg_type=117,ne.prototype.constructor=ne,ne.prototype.parser=(new o).endianess("little").uint8("mask").int16("l1ca_bias").int16("l1p_bias").int16("l2ca_bias").int16("l2p_bias"),ne.prototype.fieldSpec=[],ne.prototype.fieldSpec.push(["mask","writeUInt8",1]),ne.prototype.fieldSpec.push(["l1ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l1p_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2p_bias","writeInt16LE",2]);var ae=function(e,t){return p.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(p.prototype)).messageType="SvAzEl",ae.prototype.constructor=ae,ae.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("az").int8("el"),ae.prototype.fieldSpec=[],ae.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ae.prototype.fieldSpec.push(["az","writeUInt8",1]),ae.prototype.fieldSpec.push(["el","writeInt8",1]);var le=function(e,t){return p.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(p.prototype)).messageType="MSG_SV_AZ_EL",le.prototype.msg_type=151,le.prototype.constructor=le,le.prototype.parser=(new o).endianess("little").array("azel",{type:ae.prototype.parser,readUntil:"eof"}),le.prototype.fieldSpec=[],le.prototype.fieldSpec.push(["azel","array",ae.prototype.fieldSpec,function(){return this.fields.array.length},null]);var ce=function(e,t){return p.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(ce.prototype=Object.create(p.prototype)).messageType="MSG_OSR",ce.prototype.msg_type=1600,ce.prototype.constructor=ce,ce.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),ce.prototype.fieldSpec=[],ce.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),ce.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:u,Doppler:y,PackedObsContent:h,PackedOsrContent:f,74:d,MsgObs:d,68:_,MsgBasePosLlh:_,72:S,MsgBasePosEcef:S,EphemerisCommonContent:g,EphemerisCommonContentDepB:w,EphemerisCommonContentDepA:E,129:m,MsgEphemerisGpsDepE:m,134:b,MsgEphemerisGpsDepF:b,138:v,MsgEphemerisGps:v,142:L,MsgEphemerisQzss:L,137:I,MsgEphemerisBds:I,149:T,MsgEphemerisGalDepA:T,141:U,MsgEphemerisGal:U,130:M,MsgEphemerisSbasDepA:M,131:D,MsgEphemerisGloDepA:D,132:O,MsgEphemerisSbasDepB:O,140:G,MsgEphemerisSbas:G,133:A,MsgEphemerisGloDepB:A,135:C,MsgEphemerisGloDepC:C,136:R,MsgEphemerisGloDepD:R,139:P,MsgEphemerisGlo:P,128:N,MsgEphemerisDepD:N,26:j,MsgEphemerisDepA:j,70:x,MsgEphemerisDepB:x,71:k,MsgEphemerisDepC:k,ObservationHeaderDep:F,CarrierPhaseDepA:B,PackedObsContentDepA:q,PackedObsContentDepB:z,PackedObsContentDepC:V,69:H,MsgObsDepA:H,67:Y,MsgObsDepB:Y,73:W,MsgObsDepC:W,144:Q,MsgIono:Q,145:K,MsgSvConfigurationGpsDep:K,GnssCapb:X,150:J,MsgGnssCapb:J,146:$,MsgGroupDelayDepA:$,147:Z,MsgGroupDelayDepB:Z,148:ee,MsgGroupDelay:ee,AlmanacCommonContent:te,AlmanacCommonContentDep:re,112:pe,MsgAlmanacGpsDep:pe,114:oe,MsgAlmanacGps:oe,113:ie,MsgAlmanacGloDep:ie,115:se,MsgAlmanacGlo:se,117:ne,MsgGloBiases:ne,SvAzEl:ae,151:le,MsgSvAzEl:le,1600:ce,MsgOsr:ce}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING",i.prototype.msg_type=527,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),i.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_QUAT",s.prototype.msg_type=544,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("tow").int32("w").int32("x").int32("y").int32("z").floatle("w_accuracy").floatle("x_accuracy").floatle("y_accuracy").floatle("z_accuracy").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["w","writeInt32LE",4]),s.prototype.fieldSpec.push(["x","writeInt32LE",4]),s.prototype.fieldSpec.push(["y","writeInt32LE",4]),s.prototype.fieldSpec.push(["z","writeInt32LE",4]),s.prototype.fieldSpec.push(["w_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["x_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["y_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["z_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_EULER",n.prototype.msg_type=545,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").int32("roll").int32("pitch").int32("yaw").floatle("roll_accuracy").floatle("pitch_accuracy").floatle("yaw_accuracy").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["roll","writeInt32LE",4]),n.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),n.prototype.fieldSpec.push(["yaw","writeInt32LE",4]),n.prototype.fieldSpec.push(["roll_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["pitch_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["yaw_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ANGULAR_RATE",a.prototype.msg_type=546,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeInt32LE",4]),a.prototype.fieldSpec.push(["y","writeInt32LE",4]),a.prototype.fieldSpec.push(["z","writeInt32LE",4]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={527:i,MsgBaselineHeading:i,544:s,MsgOrientQuat:s,545:n,MsgOrientEuler:n,546:a,MsgAngularRate:a}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=r(0).GPSTimeDep,l=(r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];var c=function(e,t){return p.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SET_TIME",c.prototype.msg_type=104,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little"),c.prototype.fieldSpec=[];var u=function(e,t){return p.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_RESET",u.prototype.msg_type=182,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_RESET_DEP",y.prototype.msg_type=178,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_CW_RESULTS",h.prototype.msg_type=192,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];var f=function(e,t){return p.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_CW_START",f.prototype.msg_type=193,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little"),f.prototype.fieldSpec=[];var d=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_RESET_FILTERS",d.prototype.msg_type=34,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("filter"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["filter","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_INIT_BASE_DEP",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_INIT_BASE_DEP",_.prototype.msg_type=35,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little"),_.prototype.fieldSpec=[];var S=function(e,t){return p.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_THREAD_STATE",S.prototype.msg_type=23,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").string("name",{length:20}).uint16("cpu").uint32("stack_free"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["name","string",20]),S.prototype.fieldSpec.push(["cpu","writeUInt16LE",2]),S.prototype.fieldSpec.push(["stack_free","writeUInt32LE",4]);var g=function(e,t){return p.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="UARTChannel",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").floatle("tx_throughput").floatle("rx_throughput").uint16("crc_error_count").uint16("io_error_count").uint8("tx_buffer_level").uint8("rx_buffer_level"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["rx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["crc_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["io_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["tx_buffer_level","writeUInt8",1]),g.prototype.fieldSpec.push(["rx_buffer_level","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="Period",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").int32("avg").int32("pmin").int32("pmax").int32("current"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["avg","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmin","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmax","writeInt32LE",4]),w.prototype.fieldSpec.push(["current","writeInt32LE",4]);var E=function(e,t){return p.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="Latency",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").int32("avg").int32("lmin").int32("lmax").int32("current"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["avg","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmin","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmax","writeInt32LE",4]),E.prototype.fieldSpec.push(["current","writeInt32LE",4]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE",m.prototype.msg_type=29,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}).nest("obs_period",{type:w.prototype.parser}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["obs_period",w.prototype.fieldSpec]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE_DEPA",b.prototype.msg_type=24,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_IAR_STATE",v.prototype.msg_type=25,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("num_hyps"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE",L.prototype.msg_type=43,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE_DEP",I.prototype.msg_type=27,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["mask","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_DEVICE_MONITOR",T.prototype.msg_type=181,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").int16("dev_vin").int16("cpu_vint").int16("cpu_vaux").int16("cpu_temperature").int16("fe_temperature"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["dev_vin","writeInt16LE",2]),T.prototype.fieldSpec.push(["cpu_vint","writeInt16LE",2]),T.prototype.fieldSpec.push(["cpu_vaux","writeInt16LE",2]),T.prototype.fieldSpec.push(["cpu_temperature","writeInt16LE",2]),T.prototype.fieldSpec.push(["fe_temperature","writeInt16LE",2]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_REQ",U.prototype.msg_type=184,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("sequence").string("command",{greedy:!0}),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),U.prototype.fieldSpec.push(["command","string",null]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_RESP",M.prototype.msg_type=185,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("sequence").int32("code"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),M.prototype.fieldSpec.push(["code","writeInt32LE",4]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_OUTPUT",D.prototype.msg_type=188,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("sequence").string("line",{greedy:!0}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),D.prototype.fieldSpec.push(["line","string",null]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_REQ",O.prototype.msg_type=186,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little"),O.prototype.fieldSpec=[];var G=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_RESP",G.prototype.msg_type=187,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").array("ipv4_address",{length:4,type:"uint8"}).uint8("ipv4_mask_size").array("ipv6_address",{length:16,type:"uint8"}).uint8("ipv6_mask_size").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}).uint32("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["ipv4_address","array","writeUInt8",function(){return 1},4]),G.prototype.fieldSpec.push(["ipv4_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["ipv6_address","array","writeUInt8",function(){return 1},16]),G.prototype.fieldSpec.push(["ipv6_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["interface_name","string",16]),G.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var A=function(e,t){return p.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="NetworkUsage",A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint64("duration").uint64("total_bytes").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["duration","writeUInt64LE",8]),A.prototype.fieldSpec.push(["total_bytes","writeUInt64LE",8]),A.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["interface_name","string",16]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_BANDWIDTH_USAGE",C.prototype.msg_type=189,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").array("interfaces",{type:A.prototype.parser,readUntil:"eof"}),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["interfaces","array",A.prototype.fieldSpec,function(){return this.fields.array.length},null]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_CELL_MODEM_STATUS",R.prototype.msg_type=190,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").int8("signal_strength").floatle("signal_error_rate").array("reserved",{type:"uint8",readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["signal_strength","writeInt8",1]),R.prototype.fieldSpec.push(["signal_error_rate","writeFloatLE",4]),R.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},null]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN_DEP",P.prototype.msg_type=80,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:a.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),P.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),P.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN",N.prototype.msg_type=81,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:n.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),N.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_FRONT_END_GAIN",j.prototype.msg_type=191,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").array("rf_gain",{length:8,type:"int8"}).array("if_gain",{length:8,type:"int8"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["rf_gain","array","writeInt8",function(){return 1},8]),j.prototype.fieldSpec.push(["if_gain","array","writeInt8",function(){return 1},8]),e.exports={105:l,MsgAlmanac:l,104:c,MsgSetTime:c,182:u,MsgReset:u,178:y,MsgResetDep:y,192:h,MsgCwResults:h,193:f,MsgCwStart:f,34:d,MsgResetFilters:d,35:_,MsgInitBaseDep:_,23:S,MsgThreadState:S,UARTChannel:g,Period:w,Latency:E,29:m,MsgUartState:m,24:b,MsgUartStateDepa:b,25:v,MsgIarState:v,43:L,MsgMaskSatellite:L,27:I,MsgMaskSatelliteDep:I,181:T,MsgDeviceMonitor:T,184:U,MsgCommandReq:U,185:M,MsgCommandResp:M,188:D,MsgCommandOutput:D,186:O,MsgNetworkStateReq:O,187:G,MsgNetworkStateResp:G,NetworkUsage:A,189:C,MsgNetworkBandwidthUsage:C,190:R,MsgCellModemStatus:R,80:P,MsgSpecanDep:P,81:N,MsgSpecan:N,191:j,MsgFrontEndGain:j}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_SBAS_RAW",s.prototype.msg_type=30583,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint32("tow").uint8("message_type").array("data",{length:27,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["message_type","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},27]),e.exports={30583:s,MsgSbasRaw:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_SAVE",i.prototype.msg_type=161,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE",s.prototype.msg_type=160,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["setting","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE_RESP",n.prototype.msg_type=175,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["status","writeUInt8",1]),n.prototype.fieldSpec.push(["setting","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_REQ",a.prototype.msg_type=164,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["setting","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_RESP",l.prototype.msg_type=165,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["setting","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",c.prototype.msg_type=162,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",u.prototype.msg_type=167,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]),u.prototype.fieldSpec.push(["setting","string",null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",y.prototype.msg_type=166,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER",h.prototype.msg_type=174,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["setting","string",null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER_RESP",f.prototype.msg_type=431,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","writeUInt8",1]),f.prototype.fieldSpec.push(["setting","string",null]),e.exports={161:i,MsgSettingsSave:i,160:s,MsgSettingsWrite:s,175:n,MsgSettingsWriteResp:n,164:a,MsgSettingsReadReq:a,165:l,MsgSettingsReadResp:l,162:c,MsgSettingsReadByIndexReq:c,167:u,MsgSettingsReadByIndexResp:u,166:y,MsgSettingsReadByIndexDone:y,174:h,MsgSettingsRegister:h,431:f,MsgSettingsRegisterResp:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="SolutionInputType",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="SolutionInputType",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("sensor_type").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_SOLN_META_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_SOLN_META_DEP_A",s.prototype.msg_type=65295,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("pdop").uint16("hdop").uint16("vdop").uint8("n_sats").uint16("age_corrections").uint8("alignment_status").uint32("last_used_gnss_pos_tow").uint32("last_used_gnss_vel_tow").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),s.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),s.prototype.fieldSpec.push(["alignment_status","writeUInt8",1]),s.prototype.fieldSpec.push(["last_used_gnss_pos_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["last_used_gnss_vel_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_SOLN_META",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_SOLN_META",n.prototype.msg_type=65294,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").uint16("pdop").uint16("hdop").uint16("vdop").uint16("age_corrections").uint32("age_gnss").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_gnss","writeUInt32LE",4]),n.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);var a=function(e,t){return p.call(this,e),this.messageType="GNSSInputType",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="GNSSInputType",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="IMUInputType",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="IMUInputType",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return p.call(this,e),this.messageType="OdoInputType",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="OdoInputType",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={SolutionInputType:i,65295:s,MsgSolnMetaDepA:s,65294:n,MsgSolnMeta:n,GNSSInputType:a,IMUInputType:l,OdoInputType:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec),n=r(0).SvId,a=function(e,t){return p.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="CodeBiasesContent",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("code").int16("value"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["code","writeUInt8",1]),a.prototype.fieldSpec.push(["value","writeInt16LE",2]);var l=function(e,t){return p.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="PhaseBiasesContent",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("code").uint8("integer_indicator").uint8("widelane_integer_indicator").uint8("discontinuity_counter").int32("bias"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["code","writeUInt8",1]),l.prototype.fieldSpec.push(["integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["widelane_integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["discontinuity_counter","writeUInt8",1]),l.prototype.fieldSpec.push(["bias","writeInt32LE",4]);var c=function(e,t){return p.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="STECHeader",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),c.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),c.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),c.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="GriddedCorrectionHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),u.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),u.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),u.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),u.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="STECSatElement",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).uint8("stec_quality_indicator").array("stec_coeff",{length:4,type:"int16le"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),y.prototype.fieldSpec.push(["stec_quality_indicator","writeUInt8",1]),y.prototype.fieldSpec.push(["stec_coeff","array","writeInt16LE",function(){return 2},4]);var h=function(e,t){return p.call(this,e),this.messageType="TroposphericDelayCorrectionNoStd",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="TroposphericDelayCorrectionNoStd",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),h.prototype.fieldSpec.push(["wet","writeInt8",1]);var f=function(e,t){return p.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="TroposphericDelayCorrection",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet").uint8("stddev"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),f.prototype.fieldSpec.push(["wet","writeInt8",1]),f.prototype.fieldSpec.push(["stddev","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="STECResidualNoStd",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="STECResidualNoStd",d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),d.prototype.fieldSpec.push(["residual","writeInt16LE",2]);var _=function(e,t){return p.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="STECResidual",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual").uint8("stddev"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),_.prototype.fieldSpec.push(["residual","writeInt16LE",2]),_.prototype.fieldSpec.push(["stddev","writeUInt8",1]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK",S.prototype.msg_type=1501,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint32("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),S.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),S.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),S.prototype.fieldSpec.push(["iod","writeUInt32LE",4]),S.prototype.fieldSpec.push(["radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["along","writeInt32LE",4]),S.prototype.fieldSpec.push(["cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["c0","writeInt32LE",4]),S.prototype.fieldSpec.push(["c1","writeInt32LE",4]),S.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_SSR_CODE_BIASES",g.prototype.msg_type=1505,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").array("biases",{type:a.prototype.parser,readUntil:"eof"}),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),g.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),g.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),g.prototype.fieldSpec.push(["biases","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_SSR_PHASE_BIASES",w.prototype.msg_type=1510,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("dispersive_bias").uint8("mw_consistency").uint16("yaw").int8("yaw_rate").array("biases",{type:l.prototype.parser,readUntil:"eof"}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),w.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),w.prototype.fieldSpec.push(["dispersive_bias","writeUInt8",1]),w.prototype.fieldSpec.push(["mw_consistency","writeUInt8",1]),w.prototype.fieldSpec.push(["yaw","writeUInt16LE",2]),w.prototype.fieldSpec.push(["yaw_rate","writeInt8",1]),w.prototype.fieldSpec.push(["biases","array",l.prototype.fieldSpec,function(){return this.fields.array.length},null]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION",E.prototype.msg_type=1531,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),E.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",m.prototype.msg_type=1532,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),m.prototype.fieldSpec.push(["index","writeUInt16LE",2]),m.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),m.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_SSR_TILE_DEFINITION",b.prototype.msg_type=1526,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),b.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),b.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),b.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),b.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),b.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),b.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var v=function(e,t){return p.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="SatelliteAPC",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("sat_info").uint16("svn").array("pco",{length:3,type:"int16le"}).array("pcv",{length:21,type:"int8"}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),v.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),v.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),v.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),v.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_SSR_SATELLITE_APC",L.prototype.msg_type=1540,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("apc",{type:v.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["apc","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",I.prototype.msg_type=1500,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),I.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),I.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),I.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),I.prototype.fieldSpec.push(["iod","writeUInt8",1]),I.prototype.fieldSpec.push(["radial","writeInt32LE",4]),I.prototype.fieldSpec.push(["along","writeInt32LE",4]),I.prototype.fieldSpec.push(["cross","writeInt32LE",4]),I.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),I.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),I.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),I.prototype.fieldSpec.push(["c0","writeInt32LE",4]),I.prototype.fieldSpec.push(["c1","writeInt32LE",4]),I.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var T=function(e,t){return p.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="STECHeaderDepA",T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),T.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),T.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),T.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),T.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var U=function(e,t){return p.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="GriddedCorrectionHeaderDepA",U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),U.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),U.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),U.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),U.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),U.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="GridDefinitionHeaderDepA",M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint8("region_size_inverse").uint16("area_width").uint16("lat_nw_corner_enc").uint16("lon_nw_corner_enc").uint8("num_msgs").uint8("seq_num"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),M.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),M.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),M.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),M.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),M.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",D.prototype.msg_type=1515,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("header",{type:T.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["header",T.prototype.fieldSpec]),D.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",O.prototype.msg_type=1520,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("header",{type:U.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["header",U.prototype.fieldSpec]),O.prototype.fieldSpec.push(["index","writeUInt16LE",2]),O.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),O.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",G.prototype.msg_type=1530,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("header",{type:U.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["header",U.prototype.fieldSpec]),G.prototype.fieldSpec.push(["index","writeUInt16LE",2]),G.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),G.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",A.prototype.msg_type=1525,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("header",{type:M.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["header",M.prototype.fieldSpec]),A.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]),e.exports={CodeBiasesContent:a,PhaseBiasesContent:l,STECHeader:c,GriddedCorrectionHeader:u,STECSatElement:y,TroposphericDelayCorrectionNoStd:h,TroposphericDelayCorrection:f,STECResidualNoStd:d,STECResidual:_,1501:S,MsgSsrOrbitClock:S,1505:g,MsgSsrCodeBiases:g,1510:w,MsgSsrPhaseBiases:w,1531:E,MsgSsrStecCorrection:E,1532:m,MsgSsrGriddedCorrection:m,1526:b,MsgSsrTileDefinition:b,SatelliteAPC:v,1540:L,MsgSsrSatelliteApc:L,1500:I,MsgSsrOrbitClockDepA:I,STECHeaderDepA:T,GriddedCorrectionHeaderDepA:U,GridDefinitionHeaderDepA:M,1515:D,MsgSsrStecCorrectionDepA:D,1520:O,MsgSsrGriddedCorrectionNoStdDepA:O,1530:G,MsgSsrGriddedCorrectionDepA:G,1525:A,MsgSsrGridDefinitionDepA:A}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_STARTUP",i.prototype.msg_type=65280,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("cause").uint8("startup_type").uint16("reserved"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["cause","writeUInt8",1]),i.prototype.fieldSpec.push(["startup_type","writeUInt8",1]),i.prototype.fieldSpec.push(["reserved","writeUInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_DGNSS_STATUS",s.prototype.msg_type=65282,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint16("latency").uint8("num_signals").string("source",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["latency","writeUInt16LE",2]),s.prototype.fieldSpec.push(["num_signals","writeUInt8",1]),s.prototype.fieldSpec.push(["source","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_HEARTBEAT",n.prototype.msg_type=65535,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var a=function(e,t){return p.call(this,e),this.messageType="SubSystemReport",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="SubSystemReport",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint16("component").uint8("generic").uint8("specific"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["component","writeUInt16LE",2]),a.prototype.fieldSpec.push(["generic","writeUInt8",1]),a.prototype.fieldSpec.push(["specific","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_STATUS_REPORT",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_STATUS_REPORT",l.prototype.msg_type=65534,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("sequence").uint32("uptime").array("status",{type:a.prototype.parser,readUntil:"eof"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),l.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),l.prototype.fieldSpec.push(["status","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_INS_STATUS",c.prototype.msg_type=65283,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY",u.prototype.msg_type=65284,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["id","writeUInt8",1]),u.prototype.fieldSpec.push(["telemetry","string",null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY_LABELS",y.prototype.msg_type=65285,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry_labels",{greedy:!0}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["id","writeUInt8",1]),y.prototype.fieldSpec.push(["telemetry_labels","string",null]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_INS_UPDATES",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_INS_UPDATES",h.prototype.msg_type=65286,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("tow").uint8("gnsspos").uint8("gnssvel").uint8("wheelticks").uint8("speed").uint8("nhc").uint8("zerovel"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),h.prototype.fieldSpec.push(["gnsspos","writeUInt8",1]),h.prototype.fieldSpec.push(["gnssvel","writeUInt8",1]),h.prototype.fieldSpec.push(["wheelticks","writeUInt8",1]),h.prototype.fieldSpec.push(["speed","writeUInt8",1]),h.prototype.fieldSpec.push(["nhc","writeUInt8",1]),h.prototype.fieldSpec.push(["zerovel","writeUInt8",1]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_GNSS_TIME_OFFSET",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_GNSS_TIME_OFFSET",f.prototype.msg_type=65287,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").int16("weeks").int32("milliseconds").int16("microseconds").uint8("flags"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["weeks","writeInt16LE",2]),f.prototype.fieldSpec.push(["milliseconds","writeInt32LE",4]),f.prototype.fieldSpec.push(["microseconds","writeInt16LE",2]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_PPS_TIME",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_PPS_TIME",d.prototype.msg_type=65288,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["time","writeUInt64LE",8]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_SENSOR_AID_EVENT",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_SENSOR_AID_EVENT",_.prototype.msg_type=65289,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint32("time").uint8("sensor_type").uint16("sensor_id").uint8("sensor_state").uint8("n_available_meas").uint8("n_attempted_meas").uint8("n_accepted_meas").uint32("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["time","writeUInt32LE",4]),_.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),_.prototype.fieldSpec.push(["sensor_id","writeUInt16LE",2]),_.prototype.fieldSpec.push(["sensor_state","writeUInt8",1]),_.prototype.fieldSpec.push(["n_available_meas","writeUInt8",1]),_.prototype.fieldSpec.push(["n_attempted_meas","writeUInt8",1]),_.prototype.fieldSpec.push(["n_accepted_meas","writeUInt8",1]),_.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_META",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_META",S.prototype.msg_type=65290,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("group_id").uint8("flags").uint8("n_group_msgs").array("group_msgs",{type:"uint16le",length:"n_group_msgs"}),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["group_id","writeUInt8",1]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]),S.prototype.fieldSpec.push(["n_group_msgs","writeUInt8",1]),S.prototype.fieldSpec.push(["group_msgs","array","writeUInt16LE",function(){return 2},"n_group_msgs"]),e.exports={65280:i,MsgStartup:i,65282:s,MsgDgnssStatus:s,65535:n,MsgHeartbeat:n,SubSystemReport:a,65534:l,MsgStatusReport:l,65283:c,MsgInsStatus:c,65284:u,MsgCsacTelemetry:u,65285:y,MsgCsacTelemetryLabels:y,65286:h,MsgInsUpdates:h,65287:f,MsgGnssTimeOffset:f,65288:d,MsgPpsTime:d,65289:_,MsgSensorAidEvent:_,65290:S,MsgGroupMeta:S}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase),s=r(0).GnssSignal,n=r(0).GnssSignalDep,a=r(0).GPSTime,l=r(0).GPSTimeDep,c=(r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",c.prototype.msg_type=33,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:a.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["P","writeUInt32LE",4]),c.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["cn0","writeUInt8",1]),c.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),c.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),c.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),c.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),c.prototype.fieldSpec.push(["acceleration","writeInt8",1]),c.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",u.prototype.msg_type=17,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:l.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",l.prototype.fieldSpec]),u.prototype.fieldSpec.push(["P","writeUInt32LE",4]),u.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["cn0","writeUInt8",1]),u.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),u.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),u.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),u.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),u.prototype.fieldSpec.push(["acceleration","writeInt8",1]),u.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="TrackingChannelState",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("fcn").uint8("cn0"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["fcn","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE",h.prototype.msg_type=65,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("states",{type:y.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["states","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MeasurementState",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").nest("mesid",{type:s.prototype.parser}).uint8("cn0"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["mesid",s.prototype.fieldSpec]),f.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_MEASUREMENT_STATE",d.prototype.msg_type=97,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").array("states",{type:f.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["states","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelation",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("I").int16("Q"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["I","writeInt16LE",2]),_.prototype.fieldSpec.push(["Q","writeInt16LE",2]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ",S.prototype.msg_type=45,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:_.prototype.parser}),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["channel","writeUInt8",1]),S.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["corrs","array",_.prototype.fieldSpec,function(){return this.fields.array.length},3]);var g=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelationDep",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").int32("I").int32("Q"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["I","writeInt32LE",4]),g.prototype.fieldSpec.push(["Q","writeInt32LE",4]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_B",w.prototype.msg_type=44,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["channel","writeUInt8",1]),w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_A",E.prototype.msg_type=28,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:n.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["channel","writeUInt8",1]),E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var m=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepA",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint8("state").uint8("prn").floatle("cn0"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["state","writeUInt8",1]),m.prototype.fieldSpec.push(["prn","writeUInt8",1]),m.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_A",b.prototype.msg_type=22,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").array("states",{type:m.prototype.parser,readUntil:"eof"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["states","array",m.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepB",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["state","writeUInt8",1]),v.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),v.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",L.prototype.msg_type=19,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("states",{type:v.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["states","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:c,MsgTrackingStateDetailedDepA:c,17:u,MsgTrackingStateDetailedDep:u,TrackingChannelState:y,65:h,MsgTrackingState:h,MeasurementState:f,97:d,MsgMeasurementState:d,TrackingChannelCorrelation:_,45:S,MsgTrackingIq:S,TrackingChannelCorrelationDep:g,44:w,MsgTrackingIqDepB:w,28:E,MsgTrackingIqDepA:E,TrackingChannelStateDepA:m,22:b,MsgTrackingStateDepA:b,TrackingChannelStateDepB:v,19:L,MsgTrackingStateDepB:L}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_USER_DATA",i.prototype.msg_type=2048,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").array("contents",{type:"uint8",readUntil:"eof"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]),e.exports={2048:i,MsgUserData:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_ODOMETRY",i.prototype.msg_type=2307,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").int32("velocity").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["velocity","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_WHEELTICK",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_WHEELTICK",s.prototype.msg_type=2308,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags").uint8("source").int32("ticks"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["ticks","writeInt32LE",4]),e.exports={2307:i,MsgOdometry:i,2308:s,MsgWheeltick:s}}]); \ No newline at end of file +function p(e,t){if(e===t)return 0;for(var r=e.length,p=t.length,o=0,i=Math.min(r,p);o=0;l--)if(c[l]!==u[l])return!1;for(l=c.length-1;l>=0;l--)if(a=c[l],!g(e[a],t[a],r,p))return!1;return!0}(e,t,r,s))}return r?e===t:e==t}function w(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function E(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function m(e,t,r,p){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(p=r,r=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),p=(r&&r.name?" ("+r.name+").":".")+(p?" "+p:"."),e&&!o&&_(o,r,"Missing expected exception"+p);var s="string"==typeof p,n=!e&&o&&!r;if((!e&&i.isError(o)&&s&&E(o,r)||n)&&_(o,r,"Got unwanted exception"+p),e&&o&&r&&!E(o,r)||!e&&o)throw o}u.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=function(e){return f(d(e.actual),128)+" "+e.operator+" "+f(d(e.expected),128)}(this),this.generatedMessage=!0);var t=e.stackStartFunction||_;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var r=new Error;if(r.stack){var p=r.stack,o=h(t),i=p.indexOf("\n"+o);if(i>=0){var s=p.indexOf("\n",i+1);p=p.substring(s+1)}this.stack=p}}},i.inherits(u.AssertionError,Error),u.fail=_,u.ok=S,u.equal=function(e,t,r){e!=t&&_(e,t,r,"==",u.equal)},u.notEqual=function(e,t,r){e==t&&_(e,t,r,"!=",u.notEqual)},u.deepEqual=function(e,t,r){g(e,t,!1)||_(e,t,r,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,r){g(e,t,!0)||_(e,t,r,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,r){g(e,t,!1)&&_(e,t,r,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,r,p){g(t,r,!0)&&_(t,r,p,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,r){e!==t&&_(e,t,r,"===",u.strictEqual)},u.notStrictEqual=function(e,t,r){e===t&&_(e,t,r,"!==",u.notStrictEqual)},u.throws=function(e,t,r){m(!0,e,t,r)},u.doesNotThrow=function(e,t,r){m(!1,e,t,r)},u.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var r in e)s.call(e,r)&&t.push(r);return t}}).call(this,r(5))},function(e,t,r){var p;!function(r){o(Math.pow(36,5)),o(Math.pow(16,7)),o(Math.pow(10,9)),o(Math.pow(2,30)),o(36),o(16),o(10),o(2);function o(e,t){return this instanceof o?(this._low=0,this._high=0,this.remainder=null,void 0===t?s.call(this,e):"string"==typeof e?n.call(this,e,t):void i.call(this,e,t)):new o(e,t)}function i(e,t){return this._low=0|e,this._high=0|t,this}function s(e){return this._low=65535&e,this._high=e>>>16,this}function n(e,t){var r=parseInt(e,t||10);return this._low=65535&r,this._high=r>>>16,this}o.prototype.fromBits=i,o.prototype.fromNumber=s,o.prototype.fromString=n,o.prototype.toNumber=function(){return 65536*this._high+this._low},o.prototype.toString=function(e){return this.toNumber().toString(e||10)},o.prototype.add=function(e){var t=this._low+e._low,r=t>>>16;return r+=this._high+e._high,this._low=65535&t,this._high=65535&r,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,r,p=this._high,o=this._low,i=e._high,s=e._low;return t=(r=o*s)>>>16,t+=p*s,t&=65535,t+=o*i,this._low=65535&r,this._high=65535&t,this},o.prototype.div=function(e){if(0==e._low&&0==e._high)throw Error("division by zero");if(0==e._high&&1==e._low)return this.remainder=new o(0),this;if(e.gt(this))return this.remainder=this.clone(),this._low=0,this._high=0,this;if(this.eq(e))return this.remainder=new o(0),this._low=1,this._high=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._low=0,this._high=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=16?this._high|=1<>>16)&65535,this},o.prototype.equals=o.prototype.eq=function(e){return this._low==e._low&&this._high==e._high},o.prototype.greaterThan=o.prototype.gt=function(e){return this._high>e._high||!(this._highe._low},o.prototype.lessThan=o.prototype.lt=function(e){return this._highe._high)&&this._low16?(this._low=this._high>>e-16,this._high=0):16==e?(this._low=this._high,this._high=0):(this._low=this._low>>e|this._high<<16-e&65535,this._high>>=e),this},o.prototype.shiftLeft=o.prototype.shiftl=function(e,t){return e>16?(this._high=this._low<>16-e,this._low=this._low<>>32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.rotateRight=o.prototype.rotr=function(e){var t=this._high<<16|this._low;return t=t>>>e|t<<32-e,this._low=65535&t,this._high=t>>>16,this},o.prototype.clone=function(){return new o(this._low,this._high)},void 0===(p=function(){return o}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p;!function(r){var o={16:s(Math.pow(16,5)),10:s(Math.pow(10,5)),2:s(Math.pow(2,5))},i={16:s(16),10:s(10),2:s(2)};function s(e,t,r,p){return this instanceof s?(this.remainder=null,"string"==typeof e?l.call(this,e,t):void 0===t?a.call(this,e):void n.apply(this,arguments)):new s(e,t,r,p)}function n(e,t,r,p){return void 0===r?(this._a00=65535&e,this._a16=e>>>16,this._a32=65535&t,this._a48=t>>>16,this):(this._a00=0|e,this._a16=0|t,this._a32=0|r,this._a48=0|p,this)}function a(e){return this._a00=65535&e,this._a16=e>>>16,this._a32=0,this._a48=0,this}function l(e,t){t=t||10,this._a00=0,this._a16=0,this._a32=0,this._a48=0;for(var r=o[t]||new s(Math.pow(t,5)),p=0,i=e.length;p=0&&(r.div(t),p[o]=r.remainder.toNumber().toString(e),r.gt(t));o--);return p[o-1]=r.toNumber().toString(e),p.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,r=t>>>16,p=(r+=this._a16+e._a16)>>>16,o=(p+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&r,this._a32=65535&p,this._a48=65535&o,this},s.prototype.subtract=function(e){return this.add(e.clone().negate())},s.prototype.multiply=function(e){var t=this._a00,r=this._a16,p=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,c=(l+=t*s)>>>16;l&=65535,c+=(l+=r*i)>>>16;var u=(c+=t*n)>>>16;return c&=65535,u+=(c+=r*s)>>>16,c&=65535,u+=(c+=p*i)>>>16,u+=t*e._a48,u&=65535,u+=r*n,u&=65535,u+=p*s,u&=65535,u+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&c,this._a48=65535&u,this},s.prototype.div=function(e){if(0==e._a16&&0==e._a32&&0==e._a48){if(0==e._a00)throw Error("division by zero");if(1==e._a00)return this.remainder=new s(0),this}if(e.gt(this))return this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0,this;if(this.eq(e))return this.remainder=new s(0),this._a00=1,this._a16=0,this._a32=0,this._a48=0,this;for(var t=e.clone(),r=-1;!this.lt(t);)t.shiftLeft(1,!0),r++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;r>=0;r--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),r>=48?this._a48|=1<=32?this._a32|=1<=16?this._a16|=1<>>16),this._a16=65535&e,e=(65535&~this._a32)+(e>>>16),this._a32=65535&e,this._a48=~this._a48+(e>>>16)&65535,this},s.prototype.equals=s.prototype.eq=function(e){return this._a48==e._a48&&this._a00==e._a00&&this._a32==e._a32&&this._a16==e._a16},s.prototype.greaterThan=s.prototype.gt=function(e){return this._a48>e._a48||!(this._a48e._a32||!(this._a32e._a16||!(this._a16e._a00))},s.prototype.lessThan=s.prototype.lt=function(e){return this._a48e._a48)&&(this._a32e._a32)&&(this._a16e._a16)&&this._a00=48?(this._a00=this._a48>>e-48,this._a16=0,this._a32=0,this._a48=0):e>=32?(e-=32,this._a00=65535&(this._a32>>e|this._a48<<16-e),this._a16=this._a48>>e&65535,this._a32=0,this._a48=0):e>=16?(e-=16,this._a00=65535&(this._a16>>e|this._a32<<16-e),this._a16=65535&(this._a32>>e|this._a48<<16-e),this._a32=this._a48>>e&65535,this._a48=0):(this._a00=65535&(this._a00>>e|this._a16<<16-e),this._a16=65535&(this._a16>>e|this._a32<<16-e),this._a32=65535&(this._a32>>e|this._a48<<16-e),this._a48=this._a48>>e&65535),this},s.prototype.shiftLeft=s.prototype.shiftl=function(e,t){return(e%=64)>=48?(this._a48=this._a00<=32?(e-=32,this._a48=this._a16<>16-e,this._a32=this._a00<=16?(e-=16,this._a48=this._a32<>16-e,this._a32=65535&(this._a16<>16-e),this._a16=this._a00<>16-e,this._a32=65535&(this._a32<>16-e),this._a16=65535&(this._a16<>16-e),this._a00=this._a00<=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r<>>32-e,i=p<>>32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.rotateRight=s.prototype.rotr=function(e){if(0==(e%=64))return this;if(e>=32){var t=this._a00;if(this._a00=this._a32,this._a32=t,t=this._a48,this._a48=this._a16,this._a16=t,32==e)return this;e-=32}var r=this._a48<<16|this._a32,p=this._a16<<16|this._a00,o=r>>>e|p<<32-e,i=p>>>e|r<<32-e;return this._a00=65535&i,this._a16=i>>>16,this._a32=65535&o,this._a48=o>>>16,this},s.prototype.clone=function(){return new s(this._a00,this._a16,this._a32,this._a48)},void 0===(p=function(){return s}.apply(t,[]))||(e.exports=p)}()},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=r(0).GnssSignalDep,n=(r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT",n.prototype.msg_type=47,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:i.prototype.parser}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),n.prototype.fieldSpec.push(["cp","writeFloatLE",4]),n.prototype.fieldSpec.push(["cf","writeFloatLE",4]),n.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_C",a.prototype.msg_type=31,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").floatle("cn0").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["cn0","writeFloatLE",4]),a.prototype.fieldSpec.push(["cp","writeFloatLE",4]),a.prototype.fieldSpec.push(["cf","writeFloatLE",4]),a.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_B",l.prototype.msg_type=20,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").nest("sid",{type:s.prototype.parser}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["snr","writeFloatLE",4]),l.prototype.fieldSpec.push(["cp","writeFloatLE",4]),l.prototype.fieldSpec.push(["cf","writeFloatLE",4]),l.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",c.prototype.msg_type=21,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["snr","writeFloatLE",4]),c.prototype.fieldSpec.push(["cp","writeFloatLE",4]),c.prototype.fieldSpec.push(["cf","writeFloatLE",4]),c.prototype.fieldSpec.push(["prn","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="AcqSvProfile",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:i.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["job_type","writeUInt8",1]),u.prototype.fieldSpec.push(["status","writeUInt8",1]),u.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),u.prototype.fieldSpec.push(["int_time","writeUInt8",1]),u.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),u.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),u.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),u.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),u.prototype.fieldSpec.push(["cf","writeInt32LE",4]),u.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="AcqSvProfileDep",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint8("job_type").uint8("status").uint16("cn0").uint8("int_time").nest("sid",{type:s.prototype.parser}).uint16("bin_width").uint32("timestamp").uint32("time_spent").int32("cf_min").int32("cf_max").int32("cf").uint32("cp"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["job_type","writeUInt8",1]),y.prototype.fieldSpec.push(["status","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),y.prototype.fieldSpec.push(["int_time","writeUInt8",1]),y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),y.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),y.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),y.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),y.prototype.fieldSpec.push(["cf","writeInt32LE",4]),y.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE",h.prototype.msg_type=46,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:u.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["acq_sv_profile","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_ACQ_SV_PROFILE_DEP",f.prototype.msg_type=30,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("acq_sv_profile",{type:y.prototype.parser,readUntil:"eof"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["acq_sv_profile","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={47:n,MsgAcqResult:n,31:a,MsgAcqResultDepC:a,20:l,MsgAcqResultDepB:l,21:c,MsgAcqResultDepA:c,AcqSvProfile:u,AcqSvProfileDep:y,46:h,MsgAcqSvProfile:h,30:f,MsgAcqSvProfileDep:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",i.prototype.msg_type=179,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",s.prototype.msg_type=180,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("flags").string("version",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),s.prototype.fieldSpec.push(["version","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_JUMP_TO_APP",n.prototype.msg_type=177,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("jump"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["jump","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_REQ",a.prototype.msg_type=222,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little"),a.prototype.fieldSpec=[];var l=function(e,t){return p.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_NAP_DEVICE_DNA_RESP",l.prototype.msg_type=221,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").array("dna",{length:8,type:"uint8"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["dna","array","writeUInt8",function(){return 1},8]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",c.prototype.msg_type=176,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["handshake","array","writeUInt8",function(){return 1},null]),e.exports={179:i,MsgBootloaderHandshakeReq:i,180:s,MsgBootloaderHandshakeResp:s,177:n,MsgBootloaderJumpToApp:n,222:a,MsgNapDeviceDnaReq:a,221:l,MsgNapDeviceDnaResp:l,176:c,MsgBootloaderHandshakeDepA:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_EXT_EVENT",i.prototype.msg_type=257,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags").uint8("pin"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]),i.prototype.fieldSpec.push(["pin","writeUInt8",1]),e.exports={257:i,MsgExtEvent:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_REQ",i.prototype.msg_type=168,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").uint8("chunk_size").string("filename",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),i.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),i.prototype.fieldSpec.push(["chunk_size","writeUInt8",1]),i.prototype.fieldSpec.push(["filename","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_RESP",s.prototype.msg_type=163,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),s.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_REQ",n.prototype.msg_type=169,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("dirname",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),n.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),n.prototype.fieldSpec.push(["dirname","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_READ_DIR_RESP",a.prototype.msg_type=170,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("sequence").array("contents",{type:"uint8",readUntil:"eof"}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),a.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_REMOVE",l.prototype.msg_type=172,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("filename",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["filename","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_REQ",c.prototype.msg_type=173,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),c.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),c.prototype.fieldSpec.push(["filename","string",null]),c.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_WRITE_RESP",u.prototype.msg_type=171,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_REQ",y.prototype.msg_type=4097,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sequence"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_FILEIO_CONFIG_RESP",h.prototype.msg_type=4098,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("window_size").uint32("batch_size").uint32("fileio_version"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),h.prototype.fieldSpec.push(["window_size","writeUInt32LE",4]),h.prototype.fieldSpec.push(["batch_size","writeUInt32LE",4]),h.prototype.fieldSpec.push(["fileio_version","writeUInt32LE",4]),e.exports={168:i,MsgFileioReadReq:i,163:s,MsgFileioReadResp:s,169:n,MsgFileioReadDirReq:n,170:a,MsgFileioReadDirResp:a,172:l,MsgFileioRemove:l,173:c,MsgFileioWriteReq:c,171:u,MsgFileioWriteResp:u,4097:y,MsgFileioConfigReq:y,4098:h,MsgFileioConfigResp:h}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_PROGRAM",i.prototype.msg_type=230,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len").array("data",{type:"uint8",length:"addr_len"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["target","writeUInt8",1]),i.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),i.prototype.fieldSpec.push(["addr_len","writeUInt8",1]),i.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},"addr_len"]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_DONE",s.prototype.msg_type=224,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("response"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["response","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_REQ",n.prototype.msg_type=231,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["target","writeUInt8",1]),n.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),n.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_READ_RESP",a.prototype.msg_type=225,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("target").array("addr_start",{length:3,type:"uint8"}).uint8("addr_len"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["target","writeUInt8",1]),a.prototype.fieldSpec.push(["addr_start","array","writeUInt8",function(){return 1},3]),a.prototype.fieldSpec.push(["addr_len","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_FLASH_ERASE",l.prototype.msg_type=226,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("target").uint32("sector_num"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["target","writeUInt8",1]),l.prototype.fieldSpec.push(["sector_num","writeUInt32LE",4]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",c.prototype.msg_type=227,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",u.prototype.msg_type=228,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_REQ",y.prototype.msg_type=232,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_STM_UNIQUE_ID_RESP",h.prototype.msg_type=229,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("stm_id",{length:12,type:"uint8"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["stm_id","array","writeUInt8",function(){return 1},12]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_M25_FLASH_WRITE_STATUS",f.prototype.msg_type=243,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").array("status",{length:1,type:"uint8"}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","array","writeUInt8",function(){return 1},1]),e.exports={230:i,MsgFlashProgram:i,224:s,MsgFlashDone:s,231:n,MsgFlashReadReq:n,225:a,MsgFlashReadResp:a,226:l,MsgFlashErase:l,227:c,MsgStmFlashLockSector:c,228:u,MsgStmFlashUnlockSector:u,232:y,MsgStmUniqueIdReq:y,229:h,MsgStmUniqueIdResp:h,243:f,MsgM25FlashWriteStatus:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_IMU_RAW",i.prototype.msg_type=2304,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("acc_x").int16("acc_y").int16("acc_z").int16("gyr_x").int16("gyr_y").int16("gyr_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["acc_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["acc_z","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["gyr_z","writeInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_IMU_AUX",s.prototype.msg_type=2305,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("imu_type").int16("temp").uint8("imu_conf"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["imu_type","writeUInt8",1]),s.prototype.fieldSpec.push(["temp","writeInt16LE",2]),s.prototype.fieldSpec.push(["imu_conf","writeUInt8",1]),e.exports={2304:i,MsgImuRaw:i,2305:s,MsgImuAux:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_CPU_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_CPU_STATE_DEP_A",i.prototype.msg_type=32512,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").string("tname",{length:15}).string("cmdline",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["index","writeUInt8",1]),i.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),i.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),i.prototype.fieldSpec.push(["tname","string",15]),i.prototype.fieldSpec.push(["cmdline","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_MEM_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_MEM_STATE_DEP_A",s.prototype.msg_type=32513,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").string("tname",{length:15}).string("cmdline",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["index","writeUInt8",1]),s.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),s.prototype.fieldSpec.push(["pmem","writeUInt8",1]),s.prototype.fieldSpec.push(["tname","string",15]),s.prototype.fieldSpec.push(["cmdline","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SYS_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SYS_STATE_DEP_A",n.prototype.msg_type=32514,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),n.prototype.fieldSpec.push(["pmem","writeUInt8",1]),n.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),n.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),n.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",a.prototype.msg_type=32515,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("socket_count").uint16("socket_types").uint16("socket_states").string("cmdline",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["index","writeUInt8",1]),a.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_count","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),a.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),a.prototype.fieldSpec.push(["cmdline","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",l.prototype.msg_type=32516,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("recv_queued").uint16("send_queued").uint16("socket_types").uint16("socket_states").string("address_of_largest",{length:64}).string("cmdline",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["index","writeUInt8",1]),l.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),l.prototype.fieldSpec.push(["recv_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["send_queued","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_types","writeUInt16LE",2]),l.prototype.fieldSpec.push(["socket_states","writeUInt16LE",2]),l.prototype.fieldSpec.push(["address_of_largest","string",64]),l.prototype.fieldSpec.push(["cmdline","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",c.prototype.msg_type=32517,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("avg_queue_depth").uint32("max_queue_depth").array("socket_state_counts",{length:16,type:"uint16le"}).array("socket_type_counts",{length:16,type:"uint16le"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),c.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),c.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",u.prototype.msg_type=32518,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt8",1]),u.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),u.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),u.prototype.fieldSpec.push(["cmdline","string",null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_PROCESS_FD_SUMMARY",y.prototype.msg_type=32519,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("sys_fd_count").string("most_opened",{greedy:!0}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sys_fd_count","writeUInt32LE",4]),y.prototype.fieldSpec.push(["most_opened","string",null]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_CPU_STATE",h.prototype.msg_type=32520,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pcpu").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["index","writeUInt8",1]),h.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),h.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),h.prototype.fieldSpec.push(["time","writeUInt32LE",4]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["tname","string",15]),h.prototype.fieldSpec.push(["cmdline","string",null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_MEM_STATE",f.prototype.msg_type=32521,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint8("pmem").uint32("time").uint8("flags").string("tname",{length:15}).string("cmdline",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["index","writeUInt8",1]),f.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),f.prototype.fieldSpec.push(["pmem","writeUInt8",1]),f.prototype.fieldSpec.push(["time","writeUInt32LE",4]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["tname","string",15]),f.prototype.fieldSpec.push(["cmdline","string",null]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_LINUX_SYS_STATE",d.prototype.msg_type=32522,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint16("mem_total").uint8("pcpu").uint8("pmem").uint16("procs_starting").uint16("procs_stopping").uint16("pid_count").uint32("time").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["mem_total","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pcpu","writeUInt8",1]),d.prototype.fieldSpec.push(["pmem","writeUInt8",1]),d.prototype.fieldSpec.push(["procs_starting","writeUInt16LE",2]),d.prototype.fieldSpec.push(["procs_stopping","writeUInt16LE",2]),d.prototype.fieldSpec.push(["pid_count","writeUInt16LE",2]),d.prototype.fieldSpec.push(["time","writeUInt32LE",4]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={32512:i,MsgLinuxCpuStateDepA:i,32513:s,MsgLinuxMemStateDepA:s,32514:n,MsgLinuxSysStateDepA:n,32515:a,MsgLinuxProcessSocketCounts:a,32516:l,MsgLinuxProcessSocketQueues:l,32517:c,MsgLinuxSocketUsage:c,32518:u,MsgLinuxProcessFdCount:u,32519:y,MsgLinuxProcessFdSummary:y,32520:h,MsgLinuxCpuState:h,32521:f,MsgLinuxMemState:f,32522:d,MsgLinuxSysState:d}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_LOG",i.prototype.msg_type=1025,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("level").string("text",{greedy:!0}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["level","writeUInt8",1]),i.prototype.fieldSpec.push(["text","string",null]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_FWD",s.prototype.msg_type=1026,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("source").uint8("protocol").array("fwd_payload",{type:"uint8",readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["protocol","writeUInt8",1]),s.prototype.fieldSpec.push(["fwd_payload","array","writeUInt8",function(){return 1},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_PRINT_DEP",n.prototype.msg_type=16,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").string("text",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["text","string",null]),e.exports={1025:i,MsgLog:i,1026:s,MsgFwd:s,16:n,MsgPrintDep:n}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_MAG_RAW",i.prototype.msg_type=2306,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint8("tow_f").int16("mag_x").int16("mag_y").int16("mag_z"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["tow_f","writeUInt8",1]),i.prototype.fieldSpec.push(["mag_x","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_y","writeInt16LE",2]),i.prototype.fieldSpec.push(["mag_z","writeInt16LE",2]),e.exports={2306:i,MsgMagRaw:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME",i.prototype.msg_type=258,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME_GNSS",s.prototype.msg_type=260,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_UTC_TIME",n.prototype.msg_type=259,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt8",1]),n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["year","writeUInt16LE",2]),n.prototype.fieldSpec.push(["month","writeUInt8",1]),n.prototype.fieldSpec.push(["day","writeUInt8",1]),n.prototype.fieldSpec.push(["hours","writeUInt8",1]),n.prototype.fieldSpec.push(["minutes","writeUInt8",1]),n.prototype.fieldSpec.push(["seconds","writeUInt8",1]),n.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_UTC_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_UTC_TIME_GNSS",a.prototype.msg_type=261,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags").uint32("tow").uint16("year").uint8("month").uint8("day").uint8("hours").uint8("minutes").uint8("seconds").uint32("ns"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]),a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["year","writeUInt16LE",2]),a.prototype.fieldSpec.push(["month","writeUInt8",1]),a.prototype.fieldSpec.push(["day","writeUInt8",1]),a.prototype.fieldSpec.push(["hours","writeUInt8",1]),a.prototype.fieldSpec.push(["minutes","writeUInt8",1]),a.prototype.fieldSpec.push(["seconds","writeUInt8",1]),a.prototype.fieldSpec.push(["ns","writeUInt32LE",4]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_DOPS",l.prototype.msg_type=520,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),l.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF",c.prototype.msg_type=521,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),c.prototype.fieldSpec.push(["x","writeDoubleLE",8]),c.prototype.fieldSpec.push(["y","writeDoubleLE",8]),c.prototype.fieldSpec.push(["z","writeDoubleLE",8]),c.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_COV",u.prototype.msg_type=532,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),u.prototype.fieldSpec.push(["x","writeDoubleLE",8]),u.prototype.fieldSpec.push(["y","writeDoubleLE",8]),u.prototype.fieldSpec.push(["z","writeDoubleLE",8]),u.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH",y.prototype.msg_type=522,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),y.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),y.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),y.prototype.fieldSpec.push(["height","writeDoubleLE",8]),y.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),y.prototype.fieldSpec.push(["flags","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV",h.prototype.msg_type=529,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),h.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),h.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),h.prototype.fieldSpec.push(["height","writeDoubleLE",8]),h.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),h.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),h.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]);var f=function(e,t){return p.call(this,e),this.messageType="EstimatedHorizontalErrorEllipse",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="EstimatedHorizontalErrorEllipse",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").floatle("semi_major").floatle("semi_minor").floatle("orientation"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["semi_major","writeFloatLE",4]),f.prototype.fieldSpec.push(["semi_minor","writeFloatLE",4]),f.prototype.fieldSpec.push(["orientation","writeFloatLE",4]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_ACC",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_ACC",d.prototype.msg_type=536,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").doublele("orthometric_height").floatle("h_accuracy").floatle("v_accuracy").floatle("ct_accuracy").floatle("at_accuracy").nest("h_ellipse",{type:f.prototype.parser}).uint8("confidence_and_geoid").uint8("n_sats").uint8("flags"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),d.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),d.prototype.fieldSpec.push(["height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["orthometric_height","writeDoubleLE",8]),d.prototype.fieldSpec.push(["h_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["v_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["ct_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["at_accuracy","writeFloatLE",4]),d.prototype.fieldSpec.push(["h_ellipse",f.prototype.fieldSpec]),d.prototype.fieldSpec.push(["confidence_and_geoid","writeUInt8",1]),d.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),d.prototype.fieldSpec.push(["flags","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF",_.prototype.msg_type=523,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),_.prototype.fieldSpec.push(["x","writeInt32LE",4]),_.prototype.fieldSpec.push(["y","writeInt32LE",4]),_.prototype.fieldSpec.push(["z","writeInt32LE",4]),_.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),_.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED",S.prototype.msg_type=524,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),S.prototype.fieldSpec.push(["n","writeInt32LE",4]),S.prototype.fieldSpec.push(["e","writeInt32LE",4]),S.prototype.fieldSpec.push(["d","writeInt32LE",4]),S.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),S.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF",g.prototype.msg_type=525,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),g.prototype.fieldSpec.push(["x","writeInt32LE",4]),g.prototype.fieldSpec.push(["y","writeInt32LE",4]),g.prototype.fieldSpec.push(["z","writeInt32LE",4]),g.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),g.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_COV",w.prototype.msg_type=533,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),w.prototype.fieldSpec.push(["x","writeInt32LE",4]),w.prototype.fieldSpec.push(["y","writeInt32LE",4]),w.prototype.fieldSpec.push(["z","writeInt32LE",4]),w.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),w.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),w.prototype.fieldSpec.push(["flags","writeUInt8",1]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED",E.prototype.msg_type=526,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),E.prototype.fieldSpec.push(["n","writeInt32LE",4]),E.prototype.fieldSpec.push(["e","writeInt32LE",4]),E.prototype.fieldSpec.push(["d","writeInt32LE",4]),E.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),E.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),E.prototype.fieldSpec.push(["flags","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_COV",m.prototype.msg_type=530,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),m.prototype.fieldSpec.push(["n","writeInt32LE",4]),m.prototype.fieldSpec.push(["e","writeInt32LE",4]),m.prototype.fieldSpec.push(["d","writeInt32LE",4]),m.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),m.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),m.prototype.fieldSpec.push(["flags","writeUInt8",1]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_GNSS",b.prototype.msg_type=553,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),b.prototype.fieldSpec.push(["x","writeDoubleLE",8]),b.prototype.fieldSpec.push(["y","writeDoubleLE",8]),b.prototype.fieldSpec.push(["z","writeDoubleLE",8]),b.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",v.prototype.msg_type=564,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["x","writeDoubleLE",8]),v.prototype.fieldSpec.push(["y","writeDoubleLE",8]),v.prototype.fieldSpec.push(["z","writeDoubleLE",8]),v.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),v.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_GNSS",L.prototype.msg_type=554,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),L.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),L.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),L.prototype.fieldSpec.push(["height","writeDoubleLE",8]),L.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["flags","writeUInt8",1]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV_GNSS",I.prototype.msg_type=561,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),I.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),I.prototype.fieldSpec.push(["height","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_GNSS",T.prototype.msg_type=557,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),T.prototype.fieldSpec.push(["x","writeInt32LE",4]),T.prototype.fieldSpec.push(["y","writeInt32LE",4]),T.prototype.fieldSpec.push(["z","writeInt32LE",4]),T.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),T.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),T.prototype.fieldSpec.push(["flags","writeUInt8",1]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_COV_GNSS",U.prototype.msg_type=565,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),U.prototype.fieldSpec.push(["x","writeInt32LE",4]),U.prototype.fieldSpec.push(["y","writeInt32LE",4]),U.prototype.fieldSpec.push(["z","writeInt32LE",4]),U.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),U.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),U.prototype.fieldSpec.push(["flags","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_GNSS",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_GNSS",M.prototype.msg_type=558,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),M.prototype.fieldSpec.push(["n","writeInt32LE",4]),M.prototype.fieldSpec.push(["e","writeInt32LE",4]),M.prototype.fieldSpec.push(["d","writeInt32LE",4]),M.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),M.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),M.prototype.fieldSpec.push(["flags","writeUInt8",1]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_COV_GNSS",D.prototype.msg_type=562,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").floatle("cov_n_n").floatle("cov_n_e").floatle("cov_n_d").floatle("cov_e_e").floatle("cov_e_d").floatle("cov_d_d").uint8("n_sats").uint8("flags"),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),D.prototype.fieldSpec.push(["n","writeInt32LE",4]),D.prototype.fieldSpec.push(["e","writeInt32LE",4]),D.prototype.fieldSpec.push(["d","writeInt32LE",4]),D.prototype.fieldSpec.push(["cov_n_n","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),D.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),D.prototype.fieldSpec.push(["flags","writeUInt8",1]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_VEL_BODY",O.prototype.msg_type=531,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").floatle("cov_x_x").floatle("cov_x_y").floatle("cov_x_z").floatle("cov_y_y").floatle("cov_y_z").floatle("cov_z_z").uint8("n_sats").uint8("flags"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),O.prototype.fieldSpec.push(["x","writeInt32LE",4]),O.prototype.fieldSpec.push(["y","writeInt32LE",4]),O.prototype.fieldSpec.push(["z","writeInt32LE",4]),O.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),O.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),O.prototype.fieldSpec.push(["flags","writeUInt8",1]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_COG",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_VEL_COG",G.prototype.msg_type=540,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").uint32("tow").uint32("cog").uint32("sog").int32("v_up").uint32("cog_accuracy").uint32("sog_accuracy").uint32("v_up_accuracy").uint16("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),G.prototype.fieldSpec.push(["cog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up","writeInt32LE",4]),G.prototype.fieldSpec.push(["cog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["sog_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["v_up_accuracy","writeUInt32LE",4]),G.prototype.fieldSpec.push(["flags","writeUInt16LE",2]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_AGE_CORRECTIONS",A.prototype.msg_type=528,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint32("tow").uint16("age"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),A.prototype.fieldSpec.push(["age","writeUInt16LE",2]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_GPS_TIME_DEP_A",C.prototype.msg_type=256,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").uint16("wn").uint32("tow").int32("ns_residual").uint8("flags"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["wn","writeUInt16LE",2]),C.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),C.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),C.prototype.fieldSpec.push(["flags","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_DOPS_DEP_A",R.prototype.msg_type=518,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").uint32("tow").uint16("gdop").uint16("pdop").uint16("tdop").uint16("hdop").uint16("vdop"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),R.prototype.fieldSpec.push(["gdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["tdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),R.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_DEP_A",P.prototype.msg_type=512,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").uint8("n_sats").uint8("flags"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),P.prototype.fieldSpec.push(["x","writeDoubleLE",8]),P.prototype.fieldSpec.push(["y","writeDoubleLE",8]),P.prototype.fieldSpec.push(["z","writeDoubleLE",8]),P.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),P.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),P.prototype.fieldSpec.push(["flags","writeUInt8",1]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_DEP_A",N.prototype.msg_type=513,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint32("tow").doublele("lat").doublele("lon").doublele("height").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),N.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),N.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),N.prototype.fieldSpec.push(["height","writeDoubleLE",8]),N.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),N.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),N.prototype.fieldSpec.push(["flags","writeUInt8",1]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_ECEF_DEP_A",j.prototype.msg_type=514,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),j.prototype.fieldSpec.push(["x","writeInt32LE",4]),j.prototype.fieldSpec.push(["y","writeInt32LE",4]),j.prototype.fieldSpec.push(["z","writeInt32LE",4]),j.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),j.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),j.prototype.fieldSpec.push(["flags","writeUInt8",1]);var x=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_NED_DEP_A",x.prototype.msg_type=515,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),x.prototype.fieldSpec.push(["n","writeInt32LE",4]),x.prototype.fieldSpec.push(["e","writeInt32LE",4]),x.prototype.fieldSpec.push(["d","writeInt32LE",4]),x.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),x.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),x.prototype.fieldSpec.push(["flags","writeUInt8",1]);var k=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(p.prototype)).messageType="MSG_VEL_ECEF_DEP_A",k.prototype.msg_type=516,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint16("accuracy").uint8("n_sats").uint8("flags"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),k.prototype.fieldSpec.push(["x","writeInt32LE",4]),k.prototype.fieldSpec.push(["y","writeInt32LE",4]),k.prototype.fieldSpec.push(["z","writeInt32LE",4]),k.prototype.fieldSpec.push(["accuracy","writeUInt16LE",2]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["flags","writeUInt8",1]);var F=function(e,t){return p.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(p.prototype)).messageType="MSG_VEL_NED_DEP_A",F.prototype.msg_type=517,F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").uint32("tow").int32("n").int32("e").int32("d").uint16("h_accuracy").uint16("v_accuracy").uint8("n_sats").uint8("flags"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),F.prototype.fieldSpec.push(["n","writeInt32LE",4]),F.prototype.fieldSpec.push(["e","writeInt32LE",4]),F.prototype.fieldSpec.push(["d","writeInt32LE",4]),F.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),F.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),F.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),F.prototype.fieldSpec.push(["flags","writeUInt8",1]);var B=function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING_DEP_A",B.prototype.msg_type=519,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),B.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),B.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),B.prototype.fieldSpec.push(["flags","writeUInt8",1]);var q=function(e,t){return p.call(this,e),this.messageType="MSG_PROTECTION_LEVEL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(p.prototype)).messageType="MSG_PROTECTION_LEVEL_DEP_A",q.prototype.msg_type=534,q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("tow").uint16("vpl").uint16("hpl").doublele("lat").doublele("lon").doublele("height").uint8("flags"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),q.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),q.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),q.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),q.prototype.fieldSpec.push(["height","writeDoubleLE",8]),q.prototype.fieldSpec.push(["flags","writeUInt8",1]);var z=function(e,t){return p.call(this,e),this.messageType="MSG_PROTECTION_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(p.prototype)).messageType="MSG_PROTECTION_LEVEL",z.prototype.msg_type=535,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("tow").int16("wn").uint16("hpl").uint16("vpl").uint16("atpl").uint16("ctpl").uint16("hvpl").uint16("vvpl").uint16("hopl").uint16("popl").uint16("ropl").doublele("lat").doublele("lon").doublele("height").int32("v_x").int32("v_y").int32("v_z").int32("roll").int32("pitch").int32("heading").uint32("flags"),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),z.prototype.fieldSpec.push(["wn","writeInt16LE",2]),z.prototype.fieldSpec.push(["hpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["atpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ctpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["vvpl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["hopl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["popl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["ropl","writeUInt16LE",2]),z.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),z.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),z.prototype.fieldSpec.push(["height","writeDoubleLE",8]),z.prototype.fieldSpec.push(["v_x","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_y","writeInt32LE",4]),z.prototype.fieldSpec.push(["v_z","writeInt32LE",4]),z.prototype.fieldSpec.push(["roll","writeInt32LE",4]),z.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),z.prototype.fieldSpec.push(["heading","writeInt32LE",4]),z.prototype.fieldSpec.push(["flags","writeUInt32LE",4]),e.exports={258:i,MsgGpsTime:i,260:s,MsgGpsTimeGnss:s,259:n,MsgUtcTime:n,261:a,MsgUtcTimeGnss:a,520:l,MsgDops:l,521:c,MsgPosEcef:c,532:u,MsgPosEcefCov:u,522:y,MsgPosLlh:y,529:h,MsgPosLlhCov:h,EstimatedHorizontalErrorEllipse:f,536:d,MsgPosLlhAcc:d,523:_,MsgBaselineEcef:_,524:S,MsgBaselineNed:S,525:g,MsgVelEcef:g,533:w,MsgVelEcefCov:w,526:E,MsgVelNed:E,530:m,MsgVelNedCov:m,553:b,MsgPosEcefGnss:b,564:v,MsgPosEcefCovGnss:v,554:L,MsgPosLlhGnss:L,561:I,MsgPosLlhCovGnss:I,557:T,MsgVelEcefGnss:T,565:U,MsgVelEcefCovGnss:U,558:M,MsgVelNedGnss:M,562:D,MsgVelNedCovGnss:D,531:O,MsgVelBody:O,540:G,MsgVelCog:G,528:A,MsgAgeCorrections:A,256:C,MsgGpsTimeDepA:C,518:R,MsgDopsDepA:R,512:P,MsgPosEcefDepA:P,513:N,MsgPosLlhDepA:N,514:j,MsgBaselineEcefDepA:j,515:x,MsgBaselineNedDepA:x,516:k,MsgVelEcefDepA:k,517:F,MsgVelNedDepA:F,519:B,MsgBaselineHeadingDepA:B,534:q,MsgProtectionLevelDepA:q,535:z,MsgProtectionLevel:z}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_NDB_EVENT",s.prototype.msg_type=1024,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("recv_time").uint8("event").uint8("object_type").uint8("result").uint8("data_source").nest("object_sid",{type:i.prototype.parser}).nest("src_sid",{type:i.prototype.parser}).uint16("original_sender"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["event","writeUInt8",1]),s.prototype.fieldSpec.push(["object_type","writeUInt8",1]),s.prototype.fieldSpec.push(["result","writeUInt8",1]),s.prototype.fieldSpec.push(["data_source","writeUInt8",1]),s.prototype.fieldSpec.push(["object_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["src_sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["original_sender","writeUInt16LE",2]),e.exports={1024:s,MsgNdbEvent:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase),s=r(0).GnssSignal,n=r(0).GnssSignalDep,a=r(0).GPSTime,l=r(0).GPSTimeDep,c=r(0).GPSTimeSec,u=(r(0).SvId,function(e,t){return p.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(p.prototype)).messageType="ObservationHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("t",{type:a.prototype.parser}).uint8("n_obs"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="Doppler",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").int16("i").uint8("f"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["i","writeInt16LE",2]),y.prototype.fieldSpec.push(["f","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="PackedObsContent",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).nest("D",{type:y.prototype.parser}).uint8("cn0").uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["P","writeUInt32LE",4]),h.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),h.prototype.fieldSpec.push(["D",y.prototype.fieldSpec]),h.prototype.fieldSpec.push(["cn0","writeUInt8",1]),h.prototype.fieldSpec.push(["lock","writeUInt8",1]),h.prototype.fieldSpec.push(["flags","writeUInt8",1]),h.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var f=function(e,t){return p.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="PackedOsrContent",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("lock").uint8("flags").nest("sid",{type:s.prototype.parser}).uint16("iono_std").uint16("tropo_std").uint16("range_std"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["P","writeUInt32LE",4]),f.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),f.prototype.fieldSpec.push(["lock","writeUInt8",1]),f.prototype.fieldSpec.push(["flags","writeUInt8",1]),f.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),f.prototype.fieldSpec.push(["iono_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["tropo_std","writeUInt16LE",2]),f.prototype.fieldSpec.push(["range_std","writeUInt16LE",2]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:h.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_LLH",_.prototype.msg_type=68,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").doublele("lat").doublele("lon").doublele("height"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),_.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),_.prototype.fieldSpec.push(["height","writeDoubleLE",8]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_BASE_POS_ECEF",S.prototype.msg_type=72,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").doublele("x").doublele("y").doublele("z"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["x","writeDoubleLE",8]),S.prototype.fieldSpec.push(["y","writeDoubleLE",8]),S.prototype.fieldSpec.push(["z","writeDoubleLE",8]);var g=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).floatle("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),g.prototype.fieldSpec.push(["ura","writeFloatLE",4]),g.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),g.prototype.fieldSpec.push(["valid","writeUInt8",1]),g.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["toe",c.prototype.fieldSpec]),w.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),w.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),w.prototype.fieldSpec.push(["valid","writeUInt8",1]),w.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var E=function(e,t){return p.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="EphemerisCommonContentDepA",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toe",{type:l.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["toe",l.prototype.fieldSpec]),E.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),E.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),E.prototype.fieldSpec.push(["valid","writeUInt8",1]),E.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_E",m.prototype.msg_type=129,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:l.prototype.parser}).uint8("iode").uint16("iodc"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),m.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),m.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),m.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["w","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),m.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),m.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),m.prototype.fieldSpec.push(["toc",l.prototype.fieldSpec]),m.prototype.fieldSpec.push(["iode","writeUInt8",1]),m.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS_DEP_F",b.prototype.msg_type=134,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),b.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),b.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),b.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),b.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["w","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),b.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),b.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),b.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS",v.prototype.msg_type=138,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeFloatLE",4]),v.prototype.fieldSpec.push(["af1","writeFloatLE",4]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_QZSS",L.prototype.msg_type=142,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),L.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),L.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),L.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),L.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["w","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),L.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),L.prototype.fieldSpec.push(["af0","writeFloatLE",4]),L.prototype.fieldSpec.push(["af1","writeFloatLE",4]),L.prototype.fieldSpec.push(["af2","writeFloatLE",4]),L.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_BDS",I.prototype.msg_type=137,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd1").floatle("tgd2").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),I.prototype.fieldSpec.push(["tgd2","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),I.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),I.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),I.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["w","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),I.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),I.prototype.fieldSpec.push(["af1","writeFloatLE",4]),I.prototype.fieldSpec.push(["af2","writeFloatLE",4]),I.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt8",1]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL_DEP_A",T.prototype.msg_type=149,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),T.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),T.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),T.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),T.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),T.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["w","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),T.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),T.prototype.fieldSpec.push(["af2","writeFloatLE",4]),T.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GAL",U.prototype.msg_type=141,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("bgd_e1e5a").floatle("bgd_e1e5b").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint16("iode").uint16("iodc").uint8("source"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),U.prototype.fieldSpec.push(["bgd_e1e5a","writeFloatLE",4]),U.prototype.fieldSpec.push(["bgd_e1e5b","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),U.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),U.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),U.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["w","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),U.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),U.prototype.fieldSpec.push(["af2","writeFloatLE",4]),U.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),U.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),U.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),U.prototype.fieldSpec.push(["source","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_A",M.prototype.msg_type=130,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),M.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),M.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),M.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_A",D.prototype.msg_type=131,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("common",{type:E.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["common",E.prototype.fieldSpec]),D.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),D.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),D.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),D.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS_DEP_B",O.prototype.msg_type=132,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).doublele("a_gf0").doublele("a_gf1"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),O.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),O.prototype.fieldSpec.push(["a_gf0","writeDoubleLE",8]),O.prototype.fieldSpec.push(["a_gf1","writeDoubleLE",8]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_SBAS",G.prototype.msg_type=140,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"floatle"}).array("acc",{length:3,type:"floatle"}).floatle("a_gf0").floatle("a_gf1"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),G.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),G.prototype.fieldSpec.push(["vel","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),G.prototype.fieldSpec.push(["a_gf0","writeFloatLE",4]),G.prototype.fieldSpec.push(["a_gf1","writeFloatLE",4]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_B",A.prototype.msg_type=133,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),A.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),A.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),A.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),A.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_C",C.prototype.msg_type=135,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),C.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),C.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),C.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),C.prototype.fieldSpec.push(["fcn","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO_DEP_D",R.prototype.msg_type=136,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("common",{type:w.prototype.parser}).doublele("gamma").doublele("tau").doublele("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"doublele"}).uint8("fcn").uint8("iod"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["common",w.prototype.fieldSpec]),R.prototype.fieldSpec.push(["gamma","writeDoubleLE",8]),R.prototype.fieldSpec.push(["tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["d_tau","writeDoubleLE",8]),R.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["acc","array","writeDoubleLE",function(){return 8},3]),R.prototype.fieldSpec.push(["fcn","writeUInt8",1]),R.prototype.fieldSpec.push(["iod","writeUInt8",1]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GLO",P.prototype.msg_type=139,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("gamma").floatle("tau").floatle("d_tau").array("pos",{length:3,type:"doublele"}).array("vel",{length:3,type:"doublele"}).array("acc",{length:3,type:"floatle"}).uint8("fcn").uint8("iod"),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),P.prototype.fieldSpec.push(["gamma","writeFloatLE",4]),P.prototype.fieldSpec.push(["tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["d_tau","writeFloatLE",4]),P.prototype.fieldSpec.push(["pos","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["vel","array","writeDoubleLE",function(){return 8},3]),P.prototype.fieldSpec.push(["acc","array","writeFloatLE",function(){return 4},3]),P.prototype.fieldSpec.push(["fcn","writeUInt8",1]),P.prototype.fieldSpec.push(["iod","writeUInt8",1]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_D",N.prototype.msg_type=128,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),N.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),N.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),N.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["w","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),N.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),N.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),N.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),N.prototype.fieldSpec.push(["valid","writeUInt8",1]),N.prototype.fieldSpec.push(["healthy","writeUInt8",1]),N.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["iode","writeUInt8",1]),N.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),N.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_A",j.prototype.msg_type=26,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn"),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),j.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),j.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),j.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["w","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),j.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),j.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),j.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),j.prototype.fieldSpec.push(["valid","writeUInt8",1]),j.prototype.fieldSpec.push(["healthy","writeUInt8",1]),j.prototype.fieldSpec.push(["prn","writeUInt8",1]);var x=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_B",x.prototype.msg_type=70,x.prototype.constructor=x,x.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").uint8("prn").uint8("iode"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),x.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),x.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),x.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["w","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),x.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),x.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),x.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),x.prototype.fieldSpec.push(["valid","writeUInt8",1]),x.prototype.fieldSpec.push(["healthy","writeUInt8",1]),x.prototype.fieldSpec.push(["prn","writeUInt8",1]),x.prototype.fieldSpec.push(["iode","writeUInt8",1]);var k=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_DEP_C",k.prototype.msg_type=71,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").doublele("tgd").doublele("c_rs").doublele("c_rc").doublele("c_uc").doublele("c_us").doublele("c_ic").doublele("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").doublele("af0").doublele("af1").doublele("af2").doublele("toe_tow").uint16("toe_wn").doublele("toc_tow").uint16("toc_wn").uint8("valid").uint8("healthy").nest("sid",{type:n.prototype.parser}).uint8("iode").uint16("iodc").uint32("reserved"),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["tgd","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_rs","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_rc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_uc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_us","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_ic","writeDoubleLE",8]),k.prototype.fieldSpec.push(["c_is","writeDoubleLE",8]),k.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),k.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),k.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),k.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),k.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),k.prototype.fieldSpec.push(["w","writeDoubleLE",8]),k.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),k.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),k.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),k.prototype.fieldSpec.push(["af1","writeDoubleLE",8]),k.prototype.fieldSpec.push(["af2","writeDoubleLE",8]),k.prototype.fieldSpec.push(["toe_tow","writeDoubleLE",8]),k.prototype.fieldSpec.push(["toe_wn","writeUInt16LE",2]),k.prototype.fieldSpec.push(["toc_tow","writeDoubleLE",8]),k.prototype.fieldSpec.push(["toc_wn","writeUInt16LE",2]),k.prototype.fieldSpec.push(["valid","writeUInt8",1]),k.prototype.fieldSpec.push(["healthy","writeUInt8",1]),k.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),k.prototype.fieldSpec.push(["iode","writeUInt8",1]),k.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]),k.prototype.fieldSpec.push(["reserved","writeUInt32LE",4]);var F=function(e,t){return p.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(p.prototype)).messageType="ObservationHeaderDep",F.prototype.constructor=F,F.prototype.parser=(new o).endianess("little").nest("t",{type:l.prototype.parser}).uint8("n_obs"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["t",l.prototype.fieldSpec]),F.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var B=function(e,t){return p.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(p.prototype)).messageType="CarrierPhaseDepA",B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["i","writeInt32LE",4]),B.prototype.fieldSpec.push(["f","writeUInt8",1]);var q=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepA",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").uint8("prn"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["P","writeUInt32LE",4]),q.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),q.prototype.fieldSpec.push(["cn0","writeUInt8",1]),q.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),q.prototype.fieldSpec.push(["prn","writeUInt8",1]);var z=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepB",z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:B.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["P","writeUInt32LE",4]),z.prototype.fieldSpec.push(["L",B.prototype.fieldSpec]),z.prototype.fieldSpec.push(["cn0","writeUInt8",1]),z.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),z.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);var V=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepC",V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["P","writeUInt32LE",4]),V.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),V.prototype.fieldSpec.push(["cn0","writeUInt8",1]),V.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),V.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);var H=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_A",H.prototype.msg_type=69,H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),H.prototype.fieldSpec.push(["obs","array",q.prototype.fieldSpec,function(){return this.fields.array.length},null]);var Y=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_B",Y.prototype.msg_type=67,Y.prototype.constructor=Y,Y.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:z.prototype.parser,readUntil:"eof"}),Y.prototype.fieldSpec=[],Y.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),Y.prototype.fieldSpec.push(["obs","array",z.prototype.fieldSpec,function(){return this.fields.array.length},null]);var W=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_C",W.prototype.msg_type=73,W.prototype.constructor=W,W.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:V.prototype.parser,readUntil:"eof"}),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),W.prototype.fieldSpec.push(["obs","array",V.prototype.fieldSpec,function(){return this.fields.array.length},null]);var Q=function(e,t){return p.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(p.prototype)).messageType="MSG_IONO",Q.prototype.msg_type=144,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).doublele("a0").doublele("a1").doublele("a2").doublele("a3").doublele("b0").doublele("b1").doublele("b2").doublele("b3"),Q.prototype.fieldSpec=[],Q.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),Q.prototype.fieldSpec.push(["a0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["a3","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b0","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b1","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b2","writeDoubleLE",8]),Q.prototype.fieldSpec.push(["b3","writeDoubleLE",8]);var K=function(e,t){return p.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(p.prototype)).messageType="MSG_SV_CONFIGURATION_GPS_DEP",K.prototype.msg_type=145,K.prototype.constructor=K,K.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).uint32("l2c_mask"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),K.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);var X=function(e,t){return p.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(p.prototype)).messageType="GnssCapb",X.prototype.constructor=X,X.prototype.parser=(new o).endianess("little").uint64("gps_active").uint64("gps_l2c").uint64("gps_l5").uint32("glo_active").uint32("glo_l2of").uint32("glo_l3").uint64("sbas_active").uint64("sbas_l5").uint64("bds_active").uint64("bds_d2nav").uint64("bds_b2").uint64("bds_b2a").uint32("qzss_active").uint64("gal_active").uint64("gal_e5"),X.prototype.fieldSpec=[],X.prototype.fieldSpec.push(["gps_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l2c","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gps_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["glo_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l2of","writeUInt32LE",4]),X.prototype.fieldSpec.push(["glo_l3","writeUInt32LE",4]),X.prototype.fieldSpec.push(["sbas_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["sbas_l5","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_d2nav","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2","writeUInt64LE",8]),X.prototype.fieldSpec.push(["bds_b2a","writeUInt64LE",8]),X.prototype.fieldSpec.push(["qzss_active","writeUInt32LE",4]),X.prototype.fieldSpec.push(["gal_active","writeUInt64LE",8]),X.prototype.fieldSpec.push(["gal_e5","writeUInt64LE",8]);var J=function(e,t){return p.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(p.prototype)).messageType="MSG_GNSS_CAPB",J.prototype.msg_type=150,J.prototype.constructor=J,J.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:c.prototype.parser}).nest("gc",{type:X.prototype.parser}),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_nmct",c.prototype.fieldSpec]),J.prototype.fieldSpec.push(["gc",X.prototype.fieldSpec]);var $=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_A",$.prototype.msg_type=146,$.prototype.constructor=$,$.prototype.parser=(new o).endianess("little").nest("t_op",{type:l.prototype.parser}).uint8("prn").uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),$.prototype.fieldSpec=[],$.prototype.fieldSpec.push(["t_op",l.prototype.fieldSpec]),$.prototype.fieldSpec.push(["prn","writeUInt8",1]),$.prototype.fieldSpec.push(["valid","writeUInt8",1]),$.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),$.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var Z=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY_DEP_B",Z.prototype.msg_type=147,Z.prototype.constructor=Z,Z.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:n.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),Z.prototype.fieldSpec=[],Z.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),Z.prototype.fieldSpec.push(["valid","writeUInt8",1]),Z.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),Z.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var ee=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_DELAY",ee.prototype.msg_type=148,ee.prototype.constructor=ee,ee.prototype.parser=(new o).endianess("little").nest("t_op",{type:c.prototype.parser}).nest("sid",{type:s.prototype.parser}).uint8("valid").int16("tgd").int16("isc_l1ca").int16("isc_l2c"),ee.prototype.fieldSpec=[],ee.prototype.fieldSpec.push(["t_op",c.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ee.prototype.fieldSpec.push(["valid","writeUInt8",1]),ee.prototype.fieldSpec.push(["tgd","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l1ca","writeInt16LE",2]),ee.prototype.fieldSpec.push(["isc_l2c","writeInt16LE",2]);var te=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContent",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),te.prototype.fieldSpec=[],te.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),te.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),te.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),te.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),te.prototype.fieldSpec.push(["valid","writeUInt8",1]),te.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var re=function(e,t){return p.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(p.prototype)).messageType="AlmanacCommonContentDep",re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toa",{type:c.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),re.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),re.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),re.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),re.prototype.fieldSpec.push(["valid","writeUInt8",1]),re.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var pe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS_DEP",pe.prototype.msg_type=112,pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("common",{type:re.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["common",re.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var oe=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GPS",oe.prototype.msg_type=114,oe.prototype.constructor=oe,oe.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),oe.prototype.fieldSpec=[],oe.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),oe.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["w","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),oe.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var ie=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO_DEP",ie.prototype.msg_type=113,ie.prototype.constructor=ie,ie.prototype.parser=(new o).endianess("little").nest("common",{type:re.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),ie.prototype.fieldSpec=[],ie.prototype.fieldSpec.push(["common",re.prototype.fieldSpec]),ie.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["i","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),ie.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var se=function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC_GLO",se.prototype.msg_type=115,se.prototype.constructor=se,se.prototype.parser=(new o).endianess("little").nest("common",{type:te.prototype.parser}).doublele("lambda_na").doublele("t_lambda_na").doublele("i").doublele("t").doublele("t_dot").doublele("epsilon").doublele("omega"),se.prototype.fieldSpec=[],se.prototype.fieldSpec.push(["common",te.prototype.fieldSpec]),se.prototype.fieldSpec.push(["lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_lambda_na","writeDoubleLE",8]),se.prototype.fieldSpec.push(["i","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t","writeDoubleLE",8]),se.prototype.fieldSpec.push(["t_dot","writeDoubleLE",8]),se.prototype.fieldSpec.push(["epsilon","writeDoubleLE",8]),se.prototype.fieldSpec.push(["omega","writeDoubleLE",8]);var ne=function(e,t){return p.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(p.prototype)).messageType="MSG_GLO_BIASES",ne.prototype.msg_type=117,ne.prototype.constructor=ne,ne.prototype.parser=(new o).endianess("little").uint8("mask").int16("l1ca_bias").int16("l1p_bias").int16("l2ca_bias").int16("l2p_bias"),ne.prototype.fieldSpec=[],ne.prototype.fieldSpec.push(["mask","writeUInt8",1]),ne.prototype.fieldSpec.push(["l1ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l1p_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2ca_bias","writeInt16LE",2]),ne.prototype.fieldSpec.push(["l2p_bias","writeInt16LE",2]);var ae=function(e,t){return p.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(p.prototype)).messageType="SvAzEl",ae.prototype.constructor=ae,ae.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("az").int8("el"),ae.prototype.fieldSpec=[],ae.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),ae.prototype.fieldSpec.push(["az","writeUInt8",1]),ae.prototype.fieldSpec.push(["el","writeInt8",1]);var le=function(e,t){return p.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(p.prototype)).messageType="MSG_SV_AZ_EL",le.prototype.msg_type=151,le.prototype.constructor=le,le.prototype.parser=(new o).endianess("little").array("azel",{type:ae.prototype.parser,readUntil:"eof"}),le.prototype.fieldSpec=[],le.prototype.fieldSpec.push(["azel","array",ae.prototype.fieldSpec,function(){return this.fields.array.length},null]);var ce=function(e,t){return p.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(ce.prototype=Object.create(p.prototype)).messageType="MSG_OSR",ce.prototype.msg_type=1600,ce.prototype.constructor=ce,ce.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),ce.prototype.fieldSpec=[],ce.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),ce.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:u,Doppler:y,PackedObsContent:h,PackedOsrContent:f,74:d,MsgObs:d,68:_,MsgBasePosLlh:_,72:S,MsgBasePosEcef:S,EphemerisCommonContent:g,EphemerisCommonContentDepB:w,EphemerisCommonContentDepA:E,129:m,MsgEphemerisGpsDepE:m,134:b,MsgEphemerisGpsDepF:b,138:v,MsgEphemerisGps:v,142:L,MsgEphemerisQzss:L,137:I,MsgEphemerisBds:I,149:T,MsgEphemerisGalDepA:T,141:U,MsgEphemerisGal:U,130:M,MsgEphemerisSbasDepA:M,131:D,MsgEphemerisGloDepA:D,132:O,MsgEphemerisSbasDepB:O,140:G,MsgEphemerisSbas:G,133:A,MsgEphemerisGloDepB:A,135:C,MsgEphemerisGloDepC:C,136:R,MsgEphemerisGloDepD:R,139:P,MsgEphemerisGlo:P,128:N,MsgEphemerisDepD:N,26:j,MsgEphemerisDepA:j,70:x,MsgEphemerisDepB:x,71:k,MsgEphemerisDepC:k,ObservationHeaderDep:F,CarrierPhaseDepA:B,PackedObsContentDepA:q,PackedObsContentDepB:z,PackedObsContentDepC:V,69:H,MsgObsDepA:H,67:Y,MsgObsDepB:Y,73:W,MsgObsDepC:W,144:Q,MsgIono:Q,145:K,MsgSvConfigurationGpsDep:K,GnssCapb:X,150:J,MsgGnssCapb:J,146:$,MsgGroupDelayDepA:$,147:Z,MsgGroupDelayDepB:Z,148:ee,MsgGroupDelay:ee,AlmanacCommonContent:te,AlmanacCommonContentDep:re,112:pe,MsgAlmanacGpsDep:pe,114:oe,MsgAlmanacGps:oe,113:ie,MsgAlmanacGloDep:ie,115:se,MsgAlmanacGlo:se,117:ne,MsgGloBiases:ne,SvAzEl:ae,151:le,MsgSvAzEl:le,1600:ce,MsgOsr:ce}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_BASELINE_HEADING",i.prototype.msg_type=527,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").uint32("heading").uint8("n_sats").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["heading","writeUInt32LE",4]),i.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_QUAT",s.prototype.msg_type=544,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint32("tow").int32("w").int32("x").int32("y").int32("z").floatle("w_accuracy").floatle("x_accuracy").floatle("y_accuracy").floatle("z_accuracy").uint8("flags"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["w","writeInt32LE",4]),s.prototype.fieldSpec.push(["x","writeInt32LE",4]),s.prototype.fieldSpec.push(["y","writeInt32LE",4]),s.prototype.fieldSpec.push(["z","writeInt32LE",4]),s.prototype.fieldSpec.push(["w_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["x_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["y_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["z_accuracy","writeFloatLE",4]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_ORIENT_EULER",n.prototype.msg_type=545,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").int32("roll").int32("pitch").int32("yaw").floatle("roll_accuracy").floatle("pitch_accuracy").floatle("yaw_accuracy").uint8("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["roll","writeInt32LE",4]),n.prototype.fieldSpec.push(["pitch","writeInt32LE",4]),n.prototype.fieldSpec.push(["yaw","writeInt32LE",4]),n.prototype.fieldSpec.push(["roll_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["pitch_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["yaw_accuracy","writeFloatLE",4]),n.prototype.fieldSpec.push(["flags","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_ANGULAR_RATE",a.prototype.msg_type=546,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").int32("x").int32("y").int32("z").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["x","writeInt32LE",4]),a.prototype.fieldSpec.push(["y","writeInt32LE",4]),a.prototype.fieldSpec.push(["z","writeInt32LE",4]),a.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={527:i,MsgBaselineHeading:i,544:s,MsgOrientQuat:s,545:n,MsgOrientEuler:n,546:a,MsgAngularRate:a}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=r(0).GnssSignalDep,n=r(0).GPSTime,a=r(0).GPSTimeDep,l=(r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(p.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];var c=function(e,t){return p.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SET_TIME",c.prototype.msg_type=104,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little"),c.prototype.fieldSpec=[];var u=function(e,t){return p.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_RESET",u.prototype.msg_type=182,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_RESET_DEP",y.prototype.msg_type=178,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_CW_RESULTS",h.prototype.msg_type=192,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little"),h.prototype.fieldSpec=[];var f=function(e,t){return p.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_CW_START",f.prototype.msg_type=193,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little"),f.prototype.fieldSpec=[];var d=function(e,t){return p.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_RESET_FILTERS",d.prototype.msg_type=34,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint8("filter"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["filter","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_INIT_BASE_DEP",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_INIT_BASE_DEP",_.prototype.msg_type=35,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little"),_.prototype.fieldSpec=[];var S=function(e,t){return p.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_THREAD_STATE",S.prototype.msg_type=23,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").string("name",{length:20}).uint16("cpu").uint32("stack_free"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["name","string",20]),S.prototype.fieldSpec.push(["cpu","writeUInt16LE",2]),S.prototype.fieldSpec.push(["stack_free","writeUInt32LE",4]);var g=function(e,t){return p.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="UARTChannel",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").floatle("tx_throughput").floatle("rx_throughput").uint16("crc_error_count").uint16("io_error_count").uint8("tx_buffer_level").uint8("rx_buffer_level"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["tx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["rx_throughput","writeFloatLE",4]),g.prototype.fieldSpec.push(["crc_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["io_error_count","writeUInt16LE",2]),g.prototype.fieldSpec.push(["tx_buffer_level","writeUInt8",1]),g.prototype.fieldSpec.push(["rx_buffer_level","writeUInt8",1]);var w=function(e,t){return p.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="Period",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").int32("avg").int32("pmin").int32("pmax").int32("current"),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["avg","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmin","writeInt32LE",4]),w.prototype.fieldSpec.push(["pmax","writeInt32LE",4]),w.prototype.fieldSpec.push(["current","writeInt32LE",4]);var E=function(e,t){return p.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="Latency",E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").int32("avg").int32("lmin").int32("lmax").int32("current"),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["avg","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmin","writeInt32LE",4]),E.prototype.fieldSpec.push(["lmax","writeInt32LE",4]),E.prototype.fieldSpec.push(["current","writeInt32LE",4]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE",m.prototype.msg_type=29,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}).nest("obs_period",{type:w.prototype.parser}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),m.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]),m.prototype.fieldSpec.push(["obs_period",w.prototype.fieldSpec]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_UART_STATE_DEPA",b.prototype.msg_type=24,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("uart_a",{type:g.prototype.parser}).nest("uart_b",{type:g.prototype.parser}).nest("uart_ftdi",{type:g.prototype.parser}).nest("latency",{type:E.prototype.parser}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["uart_a",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_b",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["uart_ftdi",g.prototype.fieldSpec]),b.prototype.fieldSpec.push(["latency",E.prototype.fieldSpec]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_IAR_STATE",v.prototype.msg_type=25,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint32("num_hyps"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE",L.prototype.msg_type=43,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE_DEP",I.prototype.msg_type=27,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["mask","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_DEVICE_MONITOR",T.prototype.msg_type=181,T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").int16("dev_vin").int16("cpu_vint").int16("cpu_vaux").int16("cpu_temperature").int16("fe_temperature"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["dev_vin","writeInt16LE",2]),T.prototype.fieldSpec.push(["cpu_vint","writeInt16LE",2]),T.prototype.fieldSpec.push(["cpu_vaux","writeInt16LE",2]),T.prototype.fieldSpec.push(["cpu_temperature","writeInt16LE",2]),T.prototype.fieldSpec.push(["fe_temperature","writeInt16LE",2]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_REQ",U.prototype.msg_type=184,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint32("sequence").string("command",{greedy:!0}),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),U.prototype.fieldSpec.push(["command","string",null]);var M=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_RESP",M.prototype.msg_type=185,M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint32("sequence").int32("code"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),M.prototype.fieldSpec.push(["code","writeInt32LE",4]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_COMMAND_OUTPUT",D.prototype.msg_type=188,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").uint32("sequence").string("line",{greedy:!0}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),D.prototype.fieldSpec.push(["line","string",null]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_REQ",O.prototype.msg_type=186,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little"),O.prototype.fieldSpec=[];var G=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_STATE_RESP",G.prototype.msg_type=187,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").array("ipv4_address",{length:4,type:"uint8"}).uint8("ipv4_mask_size").array("ipv6_address",{length:16,type:"uint8"}).uint8("ipv6_mask_size").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}).uint32("flags"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["ipv4_address","array","writeUInt8",function(){return 1},4]),G.prototype.fieldSpec.push(["ipv4_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["ipv6_address","array","writeUInt8",function(){return 1},16]),G.prototype.fieldSpec.push(["ipv6_mask_size","writeUInt8",1]),G.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),G.prototype.fieldSpec.push(["interface_name","string",16]),G.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var A=function(e,t){return p.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="NetworkUsage",A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").uint64("duration").uint64("total_bytes").uint32("rx_bytes").uint32("tx_bytes").string("interface_name",{length:16}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["duration","writeUInt64LE",8]),A.prototype.fieldSpec.push(["total_bytes","writeUInt64LE",8]),A.prototype.fieldSpec.push(["rx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["tx_bytes","writeUInt32LE",4]),A.prototype.fieldSpec.push(["interface_name","string",16]);var C=function(e,t){return p.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="MSG_NETWORK_BANDWIDTH_USAGE",C.prototype.msg_type=189,C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").array("interfaces",{type:A.prototype.parser,readUntil:"eof"}),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["interfaces","array",A.prototype.fieldSpec,function(){return this.fields.array.length},null]);var R=function(e,t){return p.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="MSG_CELL_MODEM_STATUS",R.prototype.msg_type=190,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").int8("signal_strength").floatle("signal_error_rate").array("reserved",{type:"uint8",readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["signal_strength","writeInt8",1]),R.prototype.fieldSpec.push(["signal_error_rate","writeFloatLE",4]),R.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},null]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN_DEP",P.prototype.msg_type=80,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:a.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),P.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),P.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),P.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var N=function(e,t){return p.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="MSG_SPECAN",N.prototype.msg_type=81,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint16("channel_tag").nest("t",{type:n.prototype.parser}).floatle("freq_ref").floatle("freq_step").floatle("amplitude_ref").floatle("amplitude_unit").array("amplitude_value",{type:"uint8",readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["channel_tag","writeUInt16LE",2]),N.prototype.fieldSpec.push(["t",n.prototype.fieldSpec]),N.prototype.fieldSpec.push(["freq_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["freq_step","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_ref","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_unit","writeFloatLE",4]),N.prototype.fieldSpec.push(["amplitude_value","array","writeUInt8",function(){return 1},null]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_FRONT_END_GAIN",j.prototype.msg_type=191,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").array("rf_gain",{length:8,type:"int8"}).array("if_gain",{length:8,type:"int8"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["rf_gain","array","writeInt8",function(){return 1},8]),j.prototype.fieldSpec.push(["if_gain","array","writeInt8",function(){return 1},8]),e.exports={105:l,MsgAlmanac:l,104:c,MsgSetTime:c,182:u,MsgReset:u,178:y,MsgResetDep:y,192:h,MsgCwResults:h,193:f,MsgCwStart:f,34:d,MsgResetFilters:d,35:_,MsgInitBaseDep:_,23:S,MsgThreadState:S,UARTChannel:g,Period:w,Latency:E,29:m,MsgUartState:m,24:b,MsgUartStateDepa:b,25:v,MsgIarState:v,43:L,MsgMaskSatellite:L,27:I,MsgMaskSatelliteDep:I,181:T,MsgDeviceMonitor:T,184:U,MsgCommandReq:U,185:M,MsgCommandResp:M,188:D,MsgCommandOutput:D,186:O,MsgNetworkStateReq:O,187:G,MsgNetworkStateResp:G,NetworkUsage:A,189:C,MsgNetworkBandwidthUsage:C,190:R,MsgCellModemStatus:R,80:P,MsgSpecanDep:P,81:N,MsgSpecan:N,191:j,MsgFrontEndGain:j}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(p.prototype)).messageType="MSG_SBAS_RAW",s.prototype.msg_type=30583,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint32("tow").uint8("message_type").array("data",{length:27,type:"uint8"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),s.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["message_type","writeUInt8",1]),s.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},27]),e.exports={30583:s,MsgSbasRaw:s}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_SAVE",i.prototype.msg_type=161,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little"),i.prototype.fieldSpec=[];var s=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE",s.prototype.msg_type=160,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["setting","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_WRITE_RESP",n.prototype.msg_type=175,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["status","writeUInt8",1]),n.prototype.fieldSpec.push(["setting","string",null]);var a=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_REQ",a.prototype.msg_type=164,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["setting","string",null]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_RESP",l.prototype.msg_type=165,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["setting","string",null]);var c=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",c.prototype.msg_type=162,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",u.prototype.msg_type=167,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]),u.prototype.fieldSpec.push(["setting","string",null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",y.prototype.msg_type=166,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little"),y.prototype.fieldSpec=[];var h=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER",h.prototype.msg_type=174,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").string("setting",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["setting","string",null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_SETTINGS_REGISTER_RESP",f.prototype.msg_type=431,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("status").string("setting",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["status","writeUInt8",1]),f.prototype.fieldSpec.push(["setting","string",null]),e.exports={161:i,MsgSettingsSave:i,160:s,MsgSettingsWrite:s,175:n,MsgSettingsWriteResp:n,164:a,MsgSettingsReadReq:a,165:l,MsgSettingsReadResp:l,162:c,MsgSettingsReadByIndexReq:c,167:u,MsgSettingsReadByIndexResp:u,166:y,MsgSettingsReadByIndexDone:y,174:h,MsgSettingsRegister:h,431:f,MsgSettingsRegisterResp:f}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="SolutionInputType",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="SolutionInputType",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("sensor_type").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_SOLN_META_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_SOLN_META_DEP_A",s.prototype.msg_type=65295,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint16("pdop").uint16("hdop").uint16("vdop").uint8("n_sats").uint16("age_corrections").uint8("alignment_status").uint32("last_used_gnss_pos_tow").uint32("last_used_gnss_vel_tow").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),s.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),s.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),s.prototype.fieldSpec.push(["alignment_status","writeUInt8",1]),s.prototype.fieldSpec.push(["last_used_gnss_pos_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["last_used_gnss_vel_tow","writeUInt32LE",4]),s.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_SOLN_META",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_SOLN_META",n.prototype.msg_type=65294,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("tow").uint16("pdop").uint16("hdop").uint16("vdop").uint16("age_corrections").uint32("age_gnss").array("sol_in",{type:i.prototype.parser,readUntil:"eof"}),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),n.prototype.fieldSpec.push(["pdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["hdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["vdop","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_corrections","writeUInt16LE",2]),n.prototype.fieldSpec.push(["age_gnss","writeUInt32LE",4]),n.prototype.fieldSpec.push(["sol_in","array",i.prototype.fieldSpec,function(){return this.fields.array.length},null]);var a=function(e,t){return p.call(this,e),this.messageType="GNSSInputType",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="GNSSInputType",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("flags"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["flags","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="IMUInputType",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="IMUInputType",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("flags"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return p.call(this,e),this.messageType="OdoInputType",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="OdoInputType",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={SolutionInputType:i,65295:s,MsgSolnMetaDepA:s,65294:n,MsgSolnMeta:n,GNSSInputType:a,IMUInputType:l,OdoInputType:c}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase,r(0).GnssSignal),s=(r(0).GnssSignalDep,r(0).GPSTime,r(0).GPSTimeDep,r(0).GPSTimeSec),n=r(0).SvId,a=function(e,t){return p.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="CodeBiasesContent",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint8("code").int16("value"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["code","writeUInt8",1]),a.prototype.fieldSpec.push(["value","writeInt16LE",2]);var l=function(e,t){return p.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="PhaseBiasesContent",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint8("code").uint8("integer_indicator").uint8("widelane_integer_indicator").uint8("discontinuity_counter").int32("bias"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["code","writeUInt8",1]),l.prototype.fieldSpec.push(["integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["widelane_integer_indicator","writeUInt8",1]),l.prototype.fieldSpec.push(["discontinuity_counter","writeUInt8",1]),l.prototype.fieldSpec.push(["bias","writeInt32LE",4]);var c=function(e,t){return p.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="STECHeader",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),c.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),c.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),c.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="GriddedCorrectionHeader",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),u.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),u.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),u.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),u.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),u.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="STECSatElement",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).uint8("stec_quality_indicator").array("stec_coeff",{length:4,type:"int16le"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),y.prototype.fieldSpec.push(["stec_quality_indicator","writeUInt8",1]),y.prototype.fieldSpec.push(["stec_coeff","array","writeInt16LE",function(){return 2},4]);var h=function(e,t){return p.call(this,e),this.messageType="TroposphericDelayCorrectionNoStd",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="TroposphericDelayCorrectionNoStd",h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet"),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),h.prototype.fieldSpec.push(["wet","writeInt8",1]);var f=function(e,t){return p.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="TroposphericDelayCorrection",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").int16("hydro").int8("wet").uint8("stddev"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["hydro","writeInt16LE",2]),f.prototype.fieldSpec.push(["wet","writeInt8",1]),f.prototype.fieldSpec.push(["stddev","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="STECResidualNoStd",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="STECResidualNoStd",d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),d.prototype.fieldSpec.push(["residual","writeInt16LE",2]);var _=function(e,t){return p.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="STECResidual",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").nest("sv_id",{type:n.prototype.parser}).int16("residual").uint8("stddev"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["sv_id",n.prototype.fieldSpec]),_.prototype.fieldSpec.push(["residual","writeInt16LE",2]),_.prototype.fieldSpec.push(["stddev","writeUInt8",1]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK",S.prototype.msg_type=1501,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint32("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),S.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),S.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),S.prototype.fieldSpec.push(["iod","writeUInt32LE",4]),S.prototype.fieldSpec.push(["radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["along","writeInt32LE",4]),S.prototype.fieldSpec.push(["cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),S.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),S.prototype.fieldSpec.push(["c0","writeInt32LE",4]),S.prototype.fieldSpec.push(["c1","writeInt32LE",4]),S.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_SSR_CODE_BIASES",g.prototype.msg_type=1505,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").array("biases",{type:a.prototype.parser,readUntil:"eof"}),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),g.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),g.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),g.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),g.prototype.fieldSpec.push(["biases","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_SSR_PHASE_BIASES",w.prototype.msg_type=1510,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("dispersive_bias").uint8("mw_consistency").uint16("yaw").int8("yaw_rate").array("biases",{type:l.prototype.parser,readUntil:"eof"}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),w.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),w.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),w.prototype.fieldSpec.push(["dispersive_bias","writeUInt8",1]),w.prototype.fieldSpec.push(["mw_consistency","writeUInt8",1]),w.prototype.fieldSpec.push(["yaw","writeUInt16LE",2]),w.prototype.fieldSpec.push(["yaw_rate","writeInt8",1]),w.prototype.fieldSpec.push(["biases","array",l.prototype.fieldSpec,function(){return this.fields.array.length},null]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION",E.prototype.msg_type=1531,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),E.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var m=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",m.prototype.msg_type=1532,m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),m.prototype.fieldSpec.push(["index","writeUInt16LE",2]),m.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),m.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_SSR_TILE_DEFINITION",b.prototype.msg_type=1526,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").uint16("tile_set_id").uint16("tile_id").int16("corner_nw_lat").int16("corner_nw_lon").uint16("spacing_lat").uint16("spacing_lon").uint16("rows").uint16("cols").uint64("bitmask"),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),b.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),b.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),b.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),b.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),b.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),b.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var v=function(e,t){return p.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="SatelliteAPC",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("sid",{type:i.prototype.parser}).uint8("sat_info").uint16("svn").array("pco",{length:3,type:"int16le"}).array("pcv",{length:21,type:"int8"}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),v.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),v.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),v.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),v.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_SSR_SATELLITE_APC",L.prototype.msg_type=1540,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("apc",{type:v.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["apc","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",I.prototype.msg_type=1500,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).nest("sid",{type:i.prototype.parser}).uint8("update_interval").uint8("iod_ssr").uint8("iod").int32("radial").int32("along").int32("cross").int32("dot_radial").int32("dot_along").int32("dot_cross").int32("c0").int32("c1").int32("c2"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),I.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),I.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),I.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),I.prototype.fieldSpec.push(["iod","writeUInt8",1]),I.prototype.fieldSpec.push(["radial","writeInt32LE",4]),I.prototype.fieldSpec.push(["along","writeInt32LE",4]),I.prototype.fieldSpec.push(["cross","writeInt32LE",4]),I.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),I.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),I.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),I.prototype.fieldSpec.push(["c0","writeInt32LE",4]),I.prototype.fieldSpec.push(["c1","writeInt32LE",4]),I.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var T=function(e,t){return p.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="STECHeaderDepA",T.prototype.constructor=T,T.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),T.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),T.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),T.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),T.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var U=function(e,t){return p.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="GriddedCorrectionHeaderDepA",U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint16("num_msgs").uint16("seq_num").uint8("update_interval").uint8("iod_atmo").uint8("tropo_quality_indicator"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),U.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),U.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),U.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),U.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),U.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var M=function(e,t){return p.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="GridDefinitionHeaderDepA",M.prototype.constructor=M,M.prototype.parser=(new o).endianess("little").uint8("region_size_inverse").uint16("area_width").uint16("lat_nw_corner_enc").uint16("lon_nw_corner_enc").uint8("num_msgs").uint8("seq_num"),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),M.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),M.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),M.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),M.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),M.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",D.prototype.msg_type=1515,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").nest("header",{type:T.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["header",T.prototype.fieldSpec]),D.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var O=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",O.prototype.msg_type=1520,O.prototype.constructor=O,O.prototype.parser=(new o).endianess("little").nest("header",{type:U.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["header",U.prototype.fieldSpec]),O.prototype.fieldSpec.push(["index","writeUInt16LE",2]),O.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),O.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);var G=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",G.prototype.msg_type=1530,G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("header",{type:U.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["header",U.prototype.fieldSpec]),G.prototype.fieldSpec.push(["index","writeUInt16LE",2]),G.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),G.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var A=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",A.prototype.msg_type=1525,A.prototype.constructor=A,A.prototype.parser=(new o).endianess("little").nest("header",{type:M.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["header",M.prototype.fieldSpec]),A.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]),e.exports={CodeBiasesContent:a,PhaseBiasesContent:l,STECHeader:c,GriddedCorrectionHeader:u,STECSatElement:y,TroposphericDelayCorrectionNoStd:h,TroposphericDelayCorrection:f,STECResidualNoStd:d,STECResidual:_,1501:S,MsgSsrOrbitClock:S,1505:g,MsgSsrCodeBiases:g,1510:w,MsgSsrPhaseBiases:w,1531:E,MsgSsrStecCorrection:E,1532:m,MsgSsrGriddedCorrection:m,1526:b,MsgSsrTileDefinition:b,SatelliteAPC:v,1540:L,MsgSsrSatelliteApc:L,1500:I,MsgSsrOrbitClockDepA:I,STECHeaderDepA:T,GriddedCorrectionHeaderDepA:U,GridDefinitionHeaderDepA:M,1515:D,MsgSsrStecCorrectionDepA:D,1520:O,MsgSsrGriddedCorrectionNoStdDepA:O,1530:G,MsgSsrGriddedCorrectionDepA:G,1525:A,MsgSsrGridDefinitionDepA:A}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_STARTUP",i.prototype.msg_type=65280,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("cause").uint8("startup_type").uint16("reserved"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["cause","writeUInt8",1]),i.prototype.fieldSpec.push(["startup_type","writeUInt8",1]),i.prototype.fieldSpec.push(["reserved","writeUInt16LE",2]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_DGNSS_STATUS",s.prototype.msg_type=65282,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("flags").uint16("latency").uint8("num_signals").string("source",{greedy:!0}),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["latency","writeUInt16LE",2]),s.prototype.fieldSpec.push(["num_signals","writeUInt8",1]),s.prototype.fieldSpec.push(["source","string",null]);var n=function(e,t){return p.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="MSG_HEARTBEAT",n.prototype.msg_type=65535,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint32("flags"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var a=function(e,t){return p.call(this,e),this.messageType="SubSystemReport",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="SubSystemReport",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint16("component").uint8("generic").uint8("specific"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["component","writeUInt16LE",2]),a.prototype.fieldSpec.push(["generic","writeUInt8",1]),a.prototype.fieldSpec.push(["specific","writeUInt8",1]);var l=function(e,t){return p.call(this,e),this.messageType="MSG_STATUS_REPORT",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="MSG_STATUS_REPORT",l.prototype.msg_type=65534,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("sequence").uint32("uptime").array("status",{type:a.prototype.parser,readUntil:"eof"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),l.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),l.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),l.prototype.fieldSpec.push(["status","array",a.prototype.fieldSpec,function(){return this.fields.array.length},null]);var c=function(e,t){return p.call(this,e),this.messageType="StatusJournalItem",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="StatusJournalItem",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("uptime").nest("report",{type:a.prototype.parser}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["report",a.prototype.fieldSpec]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_STATUS_JOURNAL",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_STATUS_JOURNAL",u.prototype.msg_type=65533,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("total_status_reports").uint8("sequence_descriptor").array("journal",{type:c.prototype.parser,readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),u.prototype.fieldSpec.push(["total_status_reports","writeUInt32LE",4]),u.prototype.fieldSpec.push(["sequence_descriptor","writeUInt8",1]),u.prototype.fieldSpec.push(["journal","array",c.prototype.fieldSpec,function(){return this.fields.array.length},null]);var y=function(e,t){return p.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="MSG_INS_STATUS",y.prototype.msg_type=65283,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").uint32("flags"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY",h.prototype.msg_type=65284,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry",{greedy:!0}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["id","writeUInt8",1]),h.prototype.fieldSpec.push(["telemetry","string",null]);var f=function(e,t){return p.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MSG_CSAC_TELEMETRY_LABELS",f.prototype.msg_type=65285,f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").uint8("id").string("telemetry_labels",{greedy:!0}),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["id","writeUInt8",1]),f.prototype.fieldSpec.push(["telemetry_labels","string",null]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_INS_UPDATES",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_INS_UPDATES",d.prototype.msg_type=65286,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").uint32("tow").uint8("gnsspos").uint8("gnssvel").uint8("wheelticks").uint8("speed").uint8("nhc").uint8("zerovel"),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),d.prototype.fieldSpec.push(["gnsspos","writeUInt8",1]),d.prototype.fieldSpec.push(["gnssvel","writeUInt8",1]),d.prototype.fieldSpec.push(["wheelticks","writeUInt8",1]),d.prototype.fieldSpec.push(["speed","writeUInt8",1]),d.prototype.fieldSpec.push(["nhc","writeUInt8",1]),d.prototype.fieldSpec.push(["zerovel","writeUInt8",1]);var _=function(e,t){return p.call(this,e),this.messageType="MSG_GNSS_TIME_OFFSET",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="MSG_GNSS_TIME_OFFSET",_.prototype.msg_type=65287,_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("weeks").int32("milliseconds").int16("microseconds").uint8("flags"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["weeks","writeInt16LE",2]),_.prototype.fieldSpec.push(["milliseconds","writeInt32LE",4]),_.prototype.fieldSpec.push(["microseconds","writeInt16LE",2]),_.prototype.fieldSpec.push(["flags","writeUInt8",1]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_PPS_TIME",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_PPS_TIME",S.prototype.msg_type=65288,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags"),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["time","writeUInt64LE",8]),S.prototype.fieldSpec.push(["flags","writeUInt8",1]);var g=function(e,t){return p.call(this,e),this.messageType="MSG_SENSOR_AID_EVENT",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="MSG_SENSOR_AID_EVENT",g.prototype.msg_type=65289,g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").uint32("time").uint8("sensor_type").uint16("sensor_id").uint8("sensor_state").uint8("n_available_meas").uint8("n_attempted_meas").uint8("n_accepted_meas").uint32("flags"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["time","writeUInt32LE",4]),g.prototype.fieldSpec.push(["sensor_type","writeUInt8",1]),g.prototype.fieldSpec.push(["sensor_id","writeUInt16LE",2]),g.prototype.fieldSpec.push(["sensor_state","writeUInt8",1]),g.prototype.fieldSpec.push(["n_available_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["n_attempted_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["n_accepted_meas","writeUInt8",1]),g.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_GROUP_META",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_GROUP_META",w.prototype.msg_type=65290,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("group_id").uint8("flags").uint8("n_group_msgs").array("group_msgs",{type:"uint16le",length:"n_group_msgs"}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["group_id","writeUInt8",1]),w.prototype.fieldSpec.push(["flags","writeUInt8",1]),w.prototype.fieldSpec.push(["n_group_msgs","writeUInt8",1]),w.prototype.fieldSpec.push(["group_msgs","array","writeUInt16LE",function(){return 2},"n_group_msgs"]),e.exports={65280:i,MsgStartup:i,65282:s,MsgDgnssStatus:s,65535:n,MsgHeartbeat:n,SubSystemReport:a,65534:l,MsgStatusReport:l,StatusJournalItem:c,65533:u,MsgStatusJournal:u,65283:y,MsgInsStatus:y,65284:h,MsgCsacTelemetry:h,65285:f,MsgCsacTelemetryLabels:f,65286:d,MsgInsUpdates:d,65287:_,MsgGnssTimeOffset:_,65288:S,MsgPpsTime:S,65289:g,MsgSensorAidEvent:g,65290:w,MsgGroupMeta:w}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,r(0).CarrierPhase),s=r(0).GnssSignal,n=r(0).GnssSignalDep,a=r(0).GPSTime,l=r(0).GPSTimeDep,c=(r(0).GPSTimeSec,r(0).SvId,function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",c.prototype.msg_type=33,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:a.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:s.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["P","writeUInt32LE",4]),c.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["cn0","writeUInt8",1]),c.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),c.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),c.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),c.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),c.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),c.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),c.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),c.prototype.fieldSpec.push(["acceleration","writeInt8",1]),c.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),c.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var u=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",u.prototype.msg_type=17,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint64("recv_time").nest("tot",{type:l.prototype.parser}).uint32("P").uint16("P_std").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}).int32("doppler").uint16("doppler_std").uint32("uptime").int16("clock_offset").int16("clock_drift").uint16("corr_spacing").int8("acceleration").uint8("sync_flags").uint8("tow_flags").uint8("track_flags").uint8("nav_flags").uint8("pset_flags").uint8("misc_flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",l.prototype.fieldSpec]),u.prototype.fieldSpec.push(["P","writeUInt32LE",4]),u.prototype.fieldSpec.push(["P_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["cn0","writeUInt8",1]),u.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),u.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["doppler","writeInt32LE",4]),u.prototype.fieldSpec.push(["doppler_std","writeUInt16LE",2]),u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["clock_offset","writeInt16LE",2]),u.prototype.fieldSpec.push(["clock_drift","writeInt16LE",2]),u.prototype.fieldSpec.push(["corr_spacing","writeUInt16LE",2]),u.prototype.fieldSpec.push(["acceleration","writeInt8",1]),u.prototype.fieldSpec.push(["sync_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["tow_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["track_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["nav_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["pset_flags","writeUInt8",1]),u.prototype.fieldSpec.push(["misc_flags","writeUInt8",1]);var y=function(e,t){return p.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(p.prototype)).messageType="TrackingChannelState",y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).uint8("fcn").uint8("cn0"),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),y.prototype.fieldSpec.push(["fcn","writeUInt8",1]),y.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var h=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE",h.prototype.msg_type=65,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").array("states",{type:y.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["states","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return p.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(p.prototype)).messageType="MeasurementState",f.prototype.constructor=f,f.prototype.parser=(new o).endianess("little").nest("mesid",{type:s.prototype.parser}).uint8("cn0"),f.prototype.fieldSpec=[],f.prototype.fieldSpec.push(["mesid",s.prototype.fieldSpec]),f.prototype.fieldSpec.push(["cn0","writeUInt8",1]);var d=function(e,t){return p.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(p.prototype)).messageType="MSG_MEASUREMENT_STATE",d.prototype.msg_type=97,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").array("states",{type:f.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["states","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelation",_.prototype.constructor=_,_.prototype.parser=(new o).endianess("little").int16("I").int16("Q"),_.prototype.fieldSpec=[],_.prototype.fieldSpec.push(["I","writeInt16LE",2]),_.prototype.fieldSpec.push(["Q","writeInt16LE",2]);var S=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ",S.prototype.msg_type=45,S.prototype.constructor=S,S.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:_.prototype.parser}),S.prototype.fieldSpec=[],S.prototype.fieldSpec.push(["channel","writeUInt8",1]),S.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),S.prototype.fieldSpec.push(["corrs","array",_.prototype.fieldSpec,function(){return this.fields.array.length},3]);var g=function(e,t){return p.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(p.prototype)).messageType="TrackingChannelCorrelationDep",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").int32("I").int32("Q"),g.prototype.fieldSpec=[],g.prototype.fieldSpec.push(["I","writeInt32LE",4]),g.prototype.fieldSpec.push(["Q","writeInt32LE",4]);var w=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_B",w.prototype.msg_type=44,w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:s.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),w.prototype.fieldSpec=[],w.prototype.fieldSpec.push(["channel","writeUInt8",1]),w.prototype.fieldSpec.push(["sid",s.prototype.fieldSpec]),w.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var E=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_IQ_DEP_A",E.prototype.msg_type=28,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").uint8("channel").nest("sid",{type:n.prototype.parser}).array("corrs",{length:3,type:g.prototype.parser}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["channel","writeUInt8",1]),E.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),E.prototype.fieldSpec.push(["corrs","array",g.prototype.fieldSpec,function(){return this.fields.array.length},3]);var m=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepA",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").uint8("state").uint8("prn").floatle("cn0"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["state","writeUInt8",1]),m.prototype.fieldSpec.push(["prn","writeUInt8",1]),m.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_A",b.prototype.msg_type=22,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").array("states",{type:m.prototype.parser,readUntil:"eof"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["states","array",m.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepB",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["state","writeUInt8",1]),v.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),v.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",L.prototype.msg_type=19,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").array("states",{type:v.prototype.parser,readUntil:"eof"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["states","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:c,MsgTrackingStateDetailedDepA:c,17:u,MsgTrackingStateDetailedDep:u,TrackingChannelState:y,65:h,MsgTrackingState:h,MeasurementState:f,97:d,MsgMeasurementState:d,TrackingChannelCorrelation:_,45:S,MsgTrackingIq:S,TrackingChannelCorrelationDep:g,44:w,MsgTrackingIqDepB:w,28:E,MsgTrackingIqDepA:E,TrackingChannelStateDepA:m,22:b,MsgTrackingStateDepA:b,TrackingChannelStateDepB:v,19:L,MsgTrackingStateDepB:L}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_USER_DATA",i.prototype.msg_type=2048,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").array("contents",{type:"uint8",readUntil:"eof"}),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["contents","array","writeUInt8",function(){return 1},null]),e.exports={2048:i,MsgUserData:i}},function(e,t,r){var p=r(2),o=r(4),i=(r(3),r(1).UINT64,function(e,t){return p.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="MSG_ODOMETRY",i.prototype.msg_type=2307,i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint32("tow").int32("velocity").uint8("flags"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),i.prototype.fieldSpec.push(["velocity","writeInt32LE",4]),i.prototype.fieldSpec.push(["flags","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="MSG_WHEELTICK",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="MSG_WHEELTICK",s.prototype.msg_type=2308,s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint64("time").uint8("flags").uint8("source").int32("ticks"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["time","writeUInt64LE",8]),s.prototype.fieldSpec.push(["flags","writeUInt8",1]),s.prototype.fieldSpec.push(["source","writeUInt8",1]),s.prototype.fieldSpec.push(["ticks","writeInt32LE",4]),e.exports={2307:i,MsgOdometry:i,2308:s,MsgWheeltick:s}}]); \ No newline at end of file diff --git a/javascript/sbp/system.js b/javascript/sbp/system.js index 978fa00e96..207acb045f 100644 --- a/javascript/sbp/system.js +++ b/javascript/sbp/system.js @@ -131,7 +131,7 @@ MsgHeartbeat.prototype.fieldSpec.push(['flags', 'writeUInt32LE', 4]); /** * SBP class for message fragment SubSystemReport * - * Report the general and specific state of a sub-system. If the generic state is + * Report the general and specific state of a subsystem. If the generic state is * reported as initializing, the specific state should be ignored. * * Fields in the SBP payload (`sbp.payload`): @@ -166,10 +166,11 @@ SubSystemReport.prototype.fieldSpec.push(['specific', 'writeUInt8', 1]); * * The status report is sent periodically to inform the host or other attached * devices that the system is running. It is used to monitor system malfunctions. - * It contains status reports that indicate to the host the status of each sub- - * system and whether it is operating correctly. Interpretation of the subsystem - * specific status code is product dependent, but if the generic status code is - * initializing, it should be ignored. Refer to product documentation for details. + * It contains status reports that indicate to the host the status of each + * subsystem and whether it is operating correctly. Interpretation of the + * subsystem specific status code is product dependent, but if the generic status + * code is initializing, it should be ignored. Refer to product documentation for + * details. * * Fields in the SBP payload (`sbp.payload`): * @field reporting_system number (unsigned 16-bit int, 2 bytes) Identity of reporting system @@ -205,6 +206,78 @@ MsgStatusReport.prototype.fieldSpec.push(['sequence', 'writeUInt32LE', 4]); MsgStatusReport.prototype.fieldSpec.push(['uptime', 'writeUInt32LE', 4]); MsgStatusReport.prototype.fieldSpec.push(['status', 'array', SubSystemReport.prototype.fieldSpec, function () { return this.fields.array.length; }, null]); +/** + * SBP class for message fragment StatusJournalItem + * + * Reports the uptime and the state of a subsystem via generic and specific status + * codes. If the generic state is reported as initializing, the specific state + * should be ignored. + * + * Fields in the SBP payload (`sbp.payload`): + * @field uptime number (unsigned 32-bit int, 4 bytes) Milliseconds since system startup + * @field report SubSystemReport + * + * @param sbp An SBP object with a payload to be decoded. + */ +var StatusJournalItem = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "StatusJournalItem"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +StatusJournalItem.prototype = Object.create(SBP.prototype); +StatusJournalItem.prototype.messageType = "StatusJournalItem"; +StatusJournalItem.prototype.constructor = StatusJournalItem; +StatusJournalItem.prototype.parser = new Parser() + .endianess('little') + .uint32('uptime') + .nest('report', { type: SubSystemReport.prototype.parser }); +StatusJournalItem.prototype.fieldSpec = []; +StatusJournalItem.prototype.fieldSpec.push(['uptime', 'writeUInt32LE', 4]); +StatusJournalItem.prototype.fieldSpec.push(['report', SubSystemReport.prototype.fieldSpec]); + +/** + * SBP class for message MSG_STATUS_JOURNAL (0xFFFD). + * + * The status journal message contains past status reports (see MSG_STATUS_REPORT) + * and functions as a error/event storage for telemetry purposes. + * + * Fields in the SBP payload (`sbp.payload`): + * @field reporting_system number (unsigned 16-bit int, 2 bytes) Identity of reporting system + * @field sbp_version number (unsigned 16-bit int, 2 bytes) SBP protocol version + * @field total_status_reports number (unsigned 32-bit int, 4 bytes) Total number of status reports sent since system startup + * @field sequence_descriptor number (unsigned 8-bit int, 1 byte) Index and number of messages in this sequence. First nibble is the size of the + * sequence (n), second nibble is the zero-indexed counter (ith packet of n) + * @field journal array Status journal + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgStatusJournal = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_STATUS_JOURNAL"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgStatusJournal.prototype = Object.create(SBP.prototype); +MsgStatusJournal.prototype.messageType = "MSG_STATUS_JOURNAL"; +MsgStatusJournal.prototype.msg_type = 0xFFFD; +MsgStatusJournal.prototype.constructor = MsgStatusJournal; +MsgStatusJournal.prototype.parser = new Parser() + .endianess('little') + .uint16('reporting_system') + .uint16('sbp_version') + .uint32('total_status_reports') + .uint8('sequence_descriptor') + .array('journal', { type: StatusJournalItem.prototype.parser, readUntil: 'eof' }); +MsgStatusJournal.prototype.fieldSpec = []; +MsgStatusJournal.prototype.fieldSpec.push(['reporting_system', 'writeUInt16LE', 2]); +MsgStatusJournal.prototype.fieldSpec.push(['sbp_version', 'writeUInt16LE', 2]); +MsgStatusJournal.prototype.fieldSpec.push(['total_status_reports', 'writeUInt32LE', 4]); +MsgStatusJournal.prototype.fieldSpec.push(['sequence_descriptor', 'writeUInt8', 1]); +MsgStatusJournal.prototype.fieldSpec.push(['journal', 'array', StatusJournalItem.prototype.fieldSpec, function () { return this.fields.array.length; }, null]); + /** * SBP class for message MSG_INS_STATUS (0xFF03). * @@ -520,6 +593,9 @@ module.exports = { SubSystemReport: SubSystemReport, 0xFFFE: MsgStatusReport, MsgStatusReport: MsgStatusReport, + StatusJournalItem: StatusJournalItem, + 0xFFFD: MsgStatusJournal, + MsgStatusJournal: MsgStatusJournal, 0xFF03: MsgInsStatus, MsgInsStatus: MsgInsStatus, 0xFF04: MsgCsacTelemetry, diff --git a/jsonschema/MsgStatusJournal.json b/jsonschema/MsgStatusJournal.json new file mode 100644 index 0000000000..643c25654f --- /dev/null +++ b/jsonschema/MsgStatusJournal.json @@ -0,0 +1,32 @@ +{ + "copyright": [ + "Copyright (C) 2019-2021 Swift Navigation Inc.", + "Contact: https://support.swiftnav.com", + "", + "This source is subject to the license found in the file 'LICENSE' which must", + "be be distributed together with this source. All other rights reserved.", + "", + "THIS CODE AND INFORMATION IS PROVIDED 'AS IS' WITHOUT WARRANTY OF ANY KIND,", + "EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED", + "WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE." + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "#MsgStatusJournal", + "title":"MsgStatusJournal", + "description":"The status journal message contains past status reports (see MSG_STATUS_REPORT) and functions as a error/event storage for telemetry purposes.\n", + "type": "object", + "properties": { + "reporting_system": {"type": "integer"}, + "sbp_version": {"type": "integer"}, + "total_status_reports": {"type": "integer"}, + "sequence_descriptor": {"type": "integer"}, + "journal": {"type": "array", "items": {"$ref": "StatusJournalItem.json"}} + }, + "required": [ + "reporting_system", + "sbp_version", + "total_status_reports", + "sequence_descriptor", + "journal" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgStatusReport.json b/jsonschema/MsgStatusReport.json index a1a36612bd..e5ea62922b 100644 --- a/jsonschema/MsgStatusReport.json +++ b/jsonschema/MsgStatusReport.json @@ -13,7 +13,7 @@ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "#MsgStatusReport", "title":"MsgStatusReport", - "description":"The status report is sent periodically to inform the host or other attached devices that the system is running. It is used to monitor system malfunctions. It contains status reports that indicate to the host the status of each sub-system and whether it is operating correctly.,\n,\nInterpretation of the subsystem specific status code is product dependent, but if the generic status code is initializing, it should be ignored. Refer to product documentation for details.\n", + "description":"The status report is sent periodically to inform the host or other attached devices that the system is running. It is used to monitor system malfunctions. It contains status reports that indicate to the host the status of each subsystem and whether it is operating correctly.,\n,\nInterpretation of the subsystem specific status code is product dependent, but if the generic status code is initializing, it should be ignored. Refer to product documentation for details.\n", "type": "object", "properties": { "reporting_system": {"type": "integer"}, diff --git a/jsonschema/StatusJournalItem.json b/jsonschema/StatusJournalItem.json new file mode 100644 index 0000000000..96fddd94ff --- /dev/null +++ b/jsonschema/StatusJournalItem.json @@ -0,0 +1,26 @@ +{ + "copyright": [ + "Copyright (C) 2019-2021 Swift Navigation Inc.", + "Contact: https://support.swiftnav.com", + "", + "This source is subject to the license found in the file 'LICENSE' which must", + "be be distributed together with this source. All other rights reserved.", + "", + "THIS CODE AND INFORMATION IS PROVIDED 'AS IS' WITHOUT WARRANTY OF ANY KIND,", + "EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED", + "WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE." + ], + "$schema": "http://json-schema.org/draft-06/schema#", + "$id": "#StatusJournalItem", + "title":"StatusJournalItem", + "description":"Reports the uptime and the state of a subsystem via generic and specific status codes. If the generic state is reported as initializing, the specific state should be ignored.\n", + "type": "object", + "properties": { + "uptime": {"type": "integer"}, + "report": {"$ref": "SubSystemReport.json"} + }, + "required": [ + "uptime", + "report" + ] +} \ No newline at end of file diff --git a/jsonschema/SubSystemReport.json b/jsonschema/SubSystemReport.json index 25fced8c38..756c073eee 100644 --- a/jsonschema/SubSystemReport.json +++ b/jsonschema/SubSystemReport.json @@ -13,7 +13,7 @@ "$schema": "http://json-schema.org/draft-06/schema#", "$id": "#SubSystemReport", "title":"SubSystemReport", - "description":"Report the general and specific state of a sub-system. If the generic state is reported as initializing, the specific state should be ignored.\n", + "description":"Report the general and specific state of a subsystem. If the generic state is reported as initializing, the specific state should be ignored.\n", "type": "object", "properties": { "component": {"type": "integer"}, diff --git a/package-lock.json b/package-lock.json index cc92472359..1bc871427e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sbp", - "version": "4.1.6", + "version": "4.1.7-alpha", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sbp", - "version": "4.1.6", + "version": "4.1.7-alpha", "license": "MIT", "dependencies": { "binary-parser": "^1.7.0", diff --git a/package.json b/package.json index dc98c3190d..1caf212266 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sbp", - "version": "4.1.6", + "version": "4.1.7-alpha", "description": "libsbp bindings for JavaScript. More information here: http://swift-nav.github.io/libsbp/", "files": [ "javascript/*", diff --git a/proto/system.proto b/proto/system.proto index fad7097fc7..30383509ea 100644 --- a/proto/system.proto +++ b/proto/system.proto @@ -60,10 +60,10 @@ message MsgHeartbeat { uint32 flags = 1; } -/** Sub-system Status report +/** Subsystem Status report * - * Report the general and specific state of a sub-system. If the generic - * state is reported as initializing, the specific state should be ignored. + * Report the general and specific state of a subsystem. If the generic state + * is reported as initializing, the specific state should be ignored. */ message SubSystemReport { uint32 component = 1; @@ -76,7 +76,7 @@ message SubSystemReport { * The status report is sent periodically to inform the host or other attached * devices that the system is running. It is used to monitor system * malfunctions. It contains status reports that indicate to the host the - * status of each sub-system and whether it is operating correctly. + * status of each subsystem and whether it is operating correctly. * * Interpretation of the subsystem specific status code is product dependent, * but if the generic status code is initializing, it should be ignored. @@ -90,6 +90,31 @@ message MsgStatusReport { repeated SubSystemReport status = 5; } +/** Subsystem Status report + * + * Reports the uptime and the state of a subsystem via generic and specific + * status codes. If the generic state is reported as initializing, the + * specific state should be ignored. + */ +message StatusJournalItem { + uint32 uptime = 1; + SubSystemReport report = 2; +} + +/** Status report journal + * + * The status journal message contains past status reports (see + * MSG_STATUS_REPORT) and functions as a error/event storage for telemetry + * purposes. + */ +message MsgStatusJournal { + uint32 reporting_system = 1; + uint32 sbp_version = 2; + uint32 total_status_reports = 3; + uint32 sequence_descriptor = 4; + repeated StatusJournalItem journal = 5; +} + /** Inertial Navigation System status message * * The INS status message describes the state of the operation and diff --git a/python/docs/source/spelling_wordlist.txt b/python/docs/source/spelling_wordlist.txt index afd6b43eb3..db53d4f24f 100644 --- a/python/docs/source/spelling_wordlist.txt +++ b/python/docs/source/spelling_wordlist.txt @@ -163,3 +163,5 @@ wheelticks xFF xFFFE xFFFF +xFFFD +uptime diff --git a/python/sbp/system.py b/python/sbp/system.py index 21934019a0..80db48265b 100644 --- a/python/sbp/system.py +++ b/python/sbp/system.py @@ -28,7 +28,7 @@ class SubSystemReport(object): """SubSystemReport. - Report the general and specific state of a sub-system. If the generic state + Report the general and specific state of a subsystem. If the generic state is reported as initializing, the specific state should be ignored. Parameters @@ -67,6 +67,43 @@ def from_binary(self, d): for n in self.__class__.__slots__: setattr(self, n, getattr(p, n)) +class StatusJournalItem(object): + """StatusJournalItem. + + Reports the uptime and the state of a subsystem via generic and specific + status codes. If the generic state is reported as initializing, the + specific state should be ignored. + + Parameters + ---------- + uptime : int + Milliseconds since system startup + report : SubSystemReport + + """ + _parser = construct.Struct( + 'uptime' / construct.Int32ul, + 'report' / SubSystemReport._parser,) + __slots__ = [ + 'uptime', + 'report', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.uptime = kwargs.pop('uptime') + self.report = kwargs.pop('report') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = StatusJournalItem._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + SBP_MSG_STARTUP = 0xFF00 class MsgStartup(SBP): """SBP class for message MSG_STARTUP (0xFF00). @@ -383,7 +420,7 @@ class MsgStatusReport(SBP): The status report is sent periodically to inform the host or other attached devices that the system is running. It is used to monitor system malfunctions. It contains status reports that indicate to the host the - status of each sub-system and whether it is operating correctly. + status of each subsystem and whether it is operating correctly. Interpretation of the subsystem specific status code is product dependent, but if the generic status code is initializing, it should be ignored. Refer @@ -487,6 +524,119 @@ def to_json_dict(self): d.update(j) return d +SBP_MSG_STATUS_JOURNAL = 0xFFFD +class MsgStatusJournal(SBP): + """SBP class for message MSG_STATUS_JOURNAL (0xFFFD). + + You can have MSG_STATUS_JOURNAL inherit its fields directly + from an inherited SBP object, or construct it inline using a dict + of its fields. + + + The status journal message contains past status reports (see + MSG_STATUS_REPORT) and functions as a error/event storage for telemetry + purposes. + + Parameters + ---------- + sbp : SBP + SBP parent object to inherit from. + reporting_system : int + Identity of reporting system + sbp_version : int + SBP protocol version + total_status_reports : int + Total number of status reports sent since system startup + sequence_descriptor : int + Index and number of messages in this sequence. First nibble is the size of + the sequence (n), second nibble is the zero-indexed counter (ith packet of + n) + journal : array + Status journal + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'reporting_system' / construct.Int16ul, + 'sbp_version' / construct.Int16ul, + 'total_status_reports' / construct.Int32ul, + 'sequence_descriptor' / construct.Int8ul, + 'journal' / construct.GreedyRange(StatusJournalItem._parser),) + __slots__ = [ + 'reporting_system', + 'sbp_version', + 'total_status_reports', + 'sequence_descriptor', + 'journal', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgStatusJournal, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgStatusJournal, self).__init__() + self.msg_type = SBP_MSG_STATUS_JOURNAL + self.sender = kwargs.pop('sender', SENDER_ID) + self.reporting_system = kwargs.pop('reporting_system') + self.sbp_version = kwargs.pop('sbp_version') + self.total_status_reports = kwargs.pop('total_status_reports') + self.sequence_descriptor = kwargs.pop('sequence_descriptor') + self.journal = kwargs.pop('journal') + + def __repr__(self): + return fmt_repr(self) + + @staticmethod + def from_json(s): + """Given a JSON-encoded string s, build a message object. + + """ + d = json.loads(s) + return MsgStatusJournal.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgStatusJournal(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgStatusJournal._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + + def to_binary(self): + """Produce a framed/packed SBP message. + + """ + c = containerize(exclude_fields(self)) + self.payload = MsgStatusJournal._parser.build(c) + return self.pack() + + def into_buffer(self, buf, offset): + """Produce a framed/packed SBP message into the provided buffer and offset. + + """ + self.payload = containerize(exclude_fields(self)) + self.parser = MsgStatusJournal._parser + self.stream_payload.reset(buf, offset) + return self.pack_into(buf, offset, self._build_payload) + + def to_json_dict(self): + self.to_binary() + d = super( MsgStatusJournal, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + SBP_MSG_INS_STATUS = 0xFF03 class MsgInsStatus(SBP): """SBP class for message MSG_INS_STATUS (0xFF03). @@ -1342,6 +1492,7 @@ def to_json_dict(self): 0xFF02: MsgDgnssStatus, 0xFFFF: MsgHeartbeat, 0xFFFE: MsgStatusReport, + 0xFFFD: MsgStatusJournal, 0xFF03: MsgInsStatus, 0xFF04: MsgCsacTelemetry, 0xFF05: MsgCsacTelemetryLabels, diff --git a/python/tests/sbp/test_table.py b/python/tests/sbp/test_table.py index 5d104a16b2..b2eee6783f 100644 --- a/python/tests/sbp/test_table.py +++ b/python/tests/sbp/test_table.py @@ -40,7 +40,7 @@ def test_table_count(): Test number of available messages to deserialize. """ - number_of_messages = 204 + number_of_messages = 205 assert len(_SBP_TABLE) == number_of_messages def test_table_unqiue_count(): diff --git a/rust/sbp/src/messages/mod.rs b/rust/sbp/src/messages/mod.rs index 6d5256c73c..90684dd580 100644 --- a/rust/sbp/src/messages/mod.rs +++ b/rust/sbp/src/messages/mod.rs @@ -223,6 +223,7 @@ use self::system::msg_ins_updates::MsgInsUpdates; use self::system::msg_pps_time::MsgPpsTime; use self::system::msg_sensor_aid_event::MsgSensorAidEvent; use self::system::msg_startup::MsgStartup; +use self::system::msg_status_journal::MsgStatusJournal; use self::system::msg_status_report::MsgStatusReport; use self::tracking::msg_measurement_state::MsgMeasurementState; use self::tracking::msg_tracking_iq::MsgTrackingIq; @@ -731,6 +732,8 @@ pub enum Sbp { MsgSolnMeta(MsgSolnMeta), /// Deprecated MsgSolnMetaDepA(MsgSolnMetaDepA), + /// Status report journal + MsgStatusJournal(MsgStatusJournal), /// Status report message MsgStatusReport(MsgStatusReport), /// System heartbeat message @@ -1777,6 +1780,11 @@ impl Sbp { msg.set_sender_id(frame.sender_id); Ok(Sbp::MsgSolnMetaDepA(msg)) } + MsgStatusJournal::MESSAGE_TYPE => { + let mut msg = MsgStatusJournal::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgStatusJournal(msg)) + } MsgStatusReport::MESSAGE_TYPE => { let mut msg = MsgStatusReport::parse(&mut frame.payload)?; msg.set_sender_id(frame.sender_id); @@ -2001,6 +2009,7 @@ impl SbpMessage for Sbp { Sbp::MsgGroupMeta(msg) => msg.message_name(), Sbp::MsgSolnMeta(msg) => msg.message_name(), Sbp::MsgSolnMetaDepA(msg) => msg.message_name(), + Sbp::MsgStatusJournal(msg) => msg.message_name(), Sbp::MsgStatusReport(msg) => msg.message_name(), Sbp::MsgHeartbeat(msg) => msg.message_name(), Sbp::Unknown(msg) => msg.message_name(), @@ -2211,6 +2220,7 @@ impl SbpMessage for Sbp { Sbp::MsgGroupMeta(msg) => msg.message_type(), Sbp::MsgSolnMeta(msg) => msg.message_type(), Sbp::MsgSolnMetaDepA(msg) => msg.message_type(), + Sbp::MsgStatusJournal(msg) => msg.message_type(), Sbp::MsgStatusReport(msg) => msg.message_type(), Sbp::MsgHeartbeat(msg) => msg.message_type(), Sbp::Unknown(msg) => msg.message_type(), @@ -2421,6 +2431,7 @@ impl SbpMessage for Sbp { Sbp::MsgGroupMeta(msg) => msg.sender_id(), Sbp::MsgSolnMeta(msg) => msg.sender_id(), Sbp::MsgSolnMetaDepA(msg) => msg.sender_id(), + Sbp::MsgStatusJournal(msg) => msg.sender_id(), Sbp::MsgStatusReport(msg) => msg.sender_id(), Sbp::MsgHeartbeat(msg) => msg.sender_id(), Sbp::Unknown(msg) => msg.sender_id(), @@ -2631,6 +2642,7 @@ impl SbpMessage for Sbp { Sbp::MsgGroupMeta(msg) => msg.set_sender_id(new_id), Sbp::MsgSolnMeta(msg) => msg.set_sender_id(new_id), Sbp::MsgSolnMetaDepA(msg) => msg.set_sender_id(new_id), + Sbp::MsgStatusJournal(msg) => msg.set_sender_id(new_id), Sbp::MsgStatusReport(msg) => msg.set_sender_id(new_id), Sbp::MsgHeartbeat(msg) => msg.set_sender_id(new_id), Sbp::Unknown(msg) => msg.set_sender_id(new_id), @@ -2841,6 +2853,7 @@ impl SbpMessage for Sbp { Sbp::MsgGroupMeta(msg) => msg.encoded_len(), Sbp::MsgSolnMeta(msg) => msg.encoded_len(), Sbp::MsgSolnMetaDepA(msg) => msg.encoded_len(), + Sbp::MsgStatusJournal(msg) => msg.encoded_len(), Sbp::MsgStatusReport(msg) => msg.encoded_len(), Sbp::MsgHeartbeat(msg) => msg.encoded_len(), Sbp::Unknown(msg) => msg.encoded_len(), @@ -3054,6 +3067,7 @@ impl SbpMessage for Sbp { Sbp::MsgGroupMeta(msg) => msg.gps_time(), Sbp::MsgSolnMeta(msg) => msg.gps_time(), Sbp::MsgSolnMetaDepA(msg) => msg.gps_time(), + Sbp::MsgStatusJournal(msg) => msg.gps_time(), Sbp::MsgStatusReport(msg) => msg.gps_time(), Sbp::MsgHeartbeat(msg) => msg.gps_time(), Sbp::Unknown(msg) => msg.gps_time(), @@ -3272,6 +3286,7 @@ impl WireFormat for Sbp { Sbp::MsgGroupMeta(msg) => WireFormat::write(msg, buf), Sbp::MsgSolnMeta(msg) => WireFormat::write(msg, buf), Sbp::MsgSolnMetaDepA(msg) => WireFormat::write(msg, buf), + Sbp::MsgStatusJournal(msg) => WireFormat::write(msg, buf), Sbp::MsgStatusReport(msg) => WireFormat::write(msg, buf), Sbp::MsgHeartbeat(msg) => WireFormat::write(msg, buf), Sbp::Unknown(msg) => WireFormat::write(msg, buf), @@ -3482,6 +3497,7 @@ impl WireFormat for Sbp { Sbp::MsgGroupMeta(msg) => WireFormat::len(msg), Sbp::MsgSolnMeta(msg) => WireFormat::len(msg), Sbp::MsgSolnMetaDepA(msg) => WireFormat::len(msg), + Sbp::MsgStatusJournal(msg) => WireFormat::len(msg), Sbp::MsgStatusReport(msg) => WireFormat::len(msg), Sbp::MsgHeartbeat(msg) => WireFormat::len(msg), Sbp::Unknown(msg) => WireFormat::len(msg), @@ -4701,6 +4717,12 @@ impl From for Sbp { } } +impl From for Sbp { + fn from(msg: MsgStatusJournal) -> Self { + Sbp::MsgStatusJournal(msg) + } +} + impl From for Sbp { fn from(msg: MsgStatusReport) -> Self { Sbp::MsgStatusReport(msg) diff --git a/rust/sbp/src/messages/system.rs b/rust/sbp/src/messages/system.rs index 2029c09d1e..d621e69207 100644 --- a/rust/sbp/src/messages/system.rs +++ b/rust/sbp/src/messages/system.rs @@ -24,7 +24,9 @@ pub use msg_ins_updates::MsgInsUpdates; pub use msg_pps_time::MsgPpsTime; pub use msg_sensor_aid_event::MsgSensorAidEvent; pub use msg_startup::MsgStartup; +pub use msg_status_journal::MsgStatusJournal; pub use msg_status_report::MsgStatusReport; +pub use status_journal_item::StatusJournalItem; pub use sub_system_report::SubSystemReport; pub mod msg_csac_telemetry { @@ -2264,6 +2266,195 @@ pub mod msg_startup { } } +pub mod msg_status_journal { + #![allow(unused_imports)] + + use super::*; + use crate::messages::lib::*; + + /// Status report journal + /// + /// The status journal message contains past status reports (see + /// MSG_STATUS_REPORT) and functions as a error/event storage for telemetry + /// purposes. + /// + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgStatusJournal { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// Identity of reporting system + #[cfg_attr(feature = "serde", serde(rename(serialize = "reporting_system")))] + pub reporting_system: u16, + /// SBP protocol version + #[cfg_attr(feature = "serde", serde(rename(serialize = "sbp_version")))] + pub sbp_version: u16, + /// Total number of status reports sent since system startup + #[cfg_attr(feature = "serde", serde(rename(serialize = "total_status_reports")))] + pub total_status_reports: u32, + /// Index and number of messages in this sequence. First nibble is the size + /// of the sequence (n), second nibble is the zero-indexed counter (ith + /// packet of n) + #[cfg_attr(feature = "serde", serde(rename(serialize = "sequence_descriptor")))] + pub sequence_descriptor: u8, + /// Status journal + #[cfg_attr(feature = "serde", serde(rename(serialize = "journal")))] + pub journal: Vec, + } + + impl MsgStatusJournal { + /// Gets the [System][self::System] stored in the `reporting_system` bitfield. + /// + /// Returns `Ok` if the bitrange contains a known `System` variant. + /// Otherwise the value of the bitrange is returned as an `Err(u16)`. This may be because of a malformed message, + /// or because new variants of `System` were added. + pub fn system(&self) -> Result { + get_bit_range!(self.reporting_system, u16, u16, 15, 0).try_into() + } + + /// Set the bitrange corresponding to the [System][System] of the `reporting_system` bitfield. + pub fn set_system(&mut self, system: System) { + set_bit_range!(&mut self.reporting_system, system, u16, u16, 15, 0); + } + + /// Gets the `sbp_major_protocol_version_number` stored in `sbp_version`. + pub fn sbp_major_protocol_version_number(&self) -> u8 { + get_bit_range!(self.sbp_version, u16, u8, 15, 8) + } + + /// Sets the `sbp_major_protocol_version_number` bitrange of `sbp_version`. + pub fn set_sbp_major_protocol_version_number( + &mut self, + sbp_major_protocol_version_number: u8, + ) { + set_bit_range!( + &mut self.sbp_version, + sbp_major_protocol_version_number, + u16, + u8, + 15, + 8 + ); + } + + /// Gets the `sbp_minor_protocol_version_number` stored in `sbp_version`. + pub fn sbp_minor_protocol_version_number(&self) -> u8 { + get_bit_range!(self.sbp_version, u16, u8, 7, 0) + } + + /// Sets the `sbp_minor_protocol_version_number` bitrange of `sbp_version`. + pub fn set_sbp_minor_protocol_version_number( + &mut self, + sbp_minor_protocol_version_number: u8, + ) { + set_bit_range!( + &mut self.sbp_version, + sbp_minor_protocol_version_number, + u16, + u8, + 7, + 0 + ); + } + } + + impl ConcreteMessage for MsgStatusJournal { + const MESSAGE_TYPE: u16 = 65533; + const MESSAGE_NAME: &'static str = "MSG_STATUS_JOURNAL"; + } + + impl SbpMessage for MsgStatusJournal { + fn message_name(&self) -> &'static str { + ::MESSAGE_NAME + } + fn message_type(&self) -> u16 { + ::MESSAGE_TYPE + } + fn sender_id(&self) -> Option { + self.sender_id + } + fn set_sender_id(&mut self, new_id: u16) { + self.sender_id = Some(new_id); + } + fn encoded_len(&self) -> usize { + WireFormat::len(self) + crate::HEADER_LEN + crate::CRC_LEN + } + } + + impl TryFrom for MsgStatusJournal { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgStatusJournal(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgStatusJournal { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.reporting_system) + + WireFormat::len(&self.sbp_version) + + WireFormat::len(&self.total_status_reports) + + WireFormat::len(&self.sequence_descriptor) + + WireFormat::len(&self.journal) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.reporting_system, buf); + WireFormat::write(&self.sbp_version, buf); + WireFormat::write(&self.total_status_reports, buf); + WireFormat::write(&self.sequence_descriptor, buf); + WireFormat::write(&self.journal, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgStatusJournal { + sender_id: None, + reporting_system: WireFormat::parse_unchecked(buf), + sbp_version: WireFormat::parse_unchecked(buf), + total_status_reports: WireFormat::parse_unchecked(buf), + sequence_descriptor: WireFormat::parse_unchecked(buf), + journal: WireFormat::parse_unchecked(buf), + } + } + } + + /// System + #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] + pub enum System { + /// Starling + Starling = 0, + + /// Precision GNSS Module (PGM) + PrecisionGnssModule = 1, + } + + impl std::fmt::Display for System { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + System::Starling => f.write_str("Starling"), + System::PrecisionGnssModule => f.write_str("Precision GNSS Module (PGM)"), + } + } + } + + impl TryFrom for System { + type Error = u16; + fn try_from(i: u16) -> Result { + match i { + 0 => Ok(System::Starling), + 1 => Ok(System::PrecisionGnssModule), + i => Err(i), + } + } + } +} + pub mod msg_status_report { #![allow(unused_imports)] @@ -2275,7 +2466,7 @@ pub mod msg_status_report { /// The status report is sent periodically to inform the host or other /// attached devices that the system is running. It is used to monitor system /// malfunctions. It contains status reports that indicate to the host the - /// status of each sub-system and whether it is operating correctly. + /// status of each subsystem and whether it is operating correctly. /// /// Interpretation of the subsystem specific status code is product dependent, /// but if the generic status code is initializing, it should be ignored. @@ -2456,15 +2647,56 @@ pub mod msg_status_report { } } +pub mod status_journal_item { + #![allow(unused_imports)] + + use super::*; + use crate::messages::lib::*; + + /// Subsystem Status report + /// + /// Reports the uptime and the state of a subsystem via generic and specific + /// status codes. If the generic state is reported as initializing, the + /// specific state should be ignored. + /// + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct StatusJournalItem { + /// Milliseconds since system startup + #[cfg_attr(feature = "serde", serde(rename(serialize = "uptime")))] + pub uptime: u32, + #[cfg_attr(feature = "serde", serde(rename(serialize = "report")))] + pub report: SubSystemReport, + } + + impl WireFormat for StatusJournalItem { + const MIN_LEN: usize = + ::MIN_LEN + ::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.uptime) + WireFormat::len(&self.report) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.uptime, buf); + WireFormat::write(&self.report, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + StatusJournalItem { + uptime: WireFormat::parse_unchecked(buf), + report: WireFormat::parse_unchecked(buf), + } + } + } +} + pub mod sub_system_report { #![allow(unused_imports)] use super::*; use crate::messages::lib::*; - /// Sub-system Status report + /// Subsystem Status report /// - /// Report the general and specific state of a sub-system. If the generic + /// Report the general and specific state of a subsystem. If the generic /// state is reported as initializing, the specific state should be ignored. /// #[cfg_attr(feature = "serde", derive(serde::Serialize))] diff --git a/rust/sbp/src/sbp_iter_ext.rs b/rust/sbp/src/sbp_iter_ext.rs index c40f7f4d6a..06decc6152 100644 --- a/rust/sbp/src/sbp_iter_ext.rs +++ b/rust/sbp/src/sbp_iter_ext.rs @@ -214,6 +214,7 @@ mod tests { use super::*; + #[cfg(feature = "swiftnav")] #[test] fn test_rover_time_wn() { #[rustfmt::skip] @@ -246,6 +247,7 @@ mod tests { assert!((gps_time.tow() - 2568.).abs() < f64::EPSILON); } + #[cfg(feature = "swiftnav")] #[test] fn test_rover_time_result() { let data = Cursor::new(vec![ diff --git a/rust/sbp/tests/integration/auto_check_sbp_system_msg_status_journal.rs b/rust/sbp/tests/integration/auto_check_sbp_system_msg_status_journal.rs new file mode 100644 index 0000000000..7f7b5783cc --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_system_msg_status_journal.rs @@ -0,0 +1,204 @@ +// +// Copyright (C) 2019-2021 Swift Navigation Inc. +// Contact: https://support.swiftnav.com +// +// This source is subject to the license found in the file 'LICENSE' which must +// be be distributed together with this source. All other rights reserved. +// +// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, +// EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. + +// This file was auto-generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusJournal.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_system_msg_status_journal() { + { + let mut payload = Cursor::new(vec![ + 85, 253, 255, 211, 136, 33, 1, 0, 1, 4, 100, 0, 0, 0, 16, 146, 16, 0, 0, 6, 0, 1, 13, + 186, 19, 0, 0, 6, 0, 1, 14, 184, 34, 0, 0, 6, 0, 1, 15, 113, 119, + ]); + + // Test the round trip payload parsing + let sbp_msg = { + let mut msgs = iter_messages(&mut payload); + msgs.next() + .expect("no message found") + .expect("failed to parse message") + }; + match &sbp_msg { + sbp::messages::Sbp::MsgStatusJournal(msg) => { + assert_eq!( + msg.message_type(), + 0xFFFD, + "Incorrect message type, expected 0xFFFD, is {}", + msg.message_type() + ); + let sender_id = msg.sender_id().unwrap(); + assert_eq!( + sender_id, 0x88D3, + "incorrect sender id, expected 0x88D3, is {}", + sender_id + ); + assert_eq!( + msg.journal[0].report.component, 6, + "incorrect value for journal[0].report.component, expected 6, is {}", + msg.journal[0].report.component + ); + assert_eq!( + msg.journal[0].report.generic, 1, + "incorrect value for journal[0].report.generic, expected 1, is {}", + msg.journal[0].report.generic + ); + assert_eq!( + msg.journal[0].report.specific, 13, + "incorrect value for journal[0].report.specific, expected 13, is {}", + msg.journal[0].report.specific + ); + assert_eq!( + msg.journal[0].uptime, 4242, + "incorrect value for journal[0].uptime, expected 4242, is {}", + msg.journal[0].uptime + ); + assert_eq!( + msg.journal[1].report.component, 6, + "incorrect value for journal[1].report.component, expected 6, is {}", + msg.journal[1].report.component + ); + assert_eq!( + msg.journal[1].report.generic, 1, + "incorrect value for journal[1].report.generic, expected 1, is {}", + msg.journal[1].report.generic + ); + assert_eq!( + msg.journal[1].report.specific, 14, + "incorrect value for journal[1].report.specific, expected 14, is {}", + msg.journal[1].report.specific + ); + assert_eq!( + msg.journal[1].uptime, 5050, + "incorrect value for journal[1].uptime, expected 5050, is {}", + msg.journal[1].uptime + ); + assert_eq!( + msg.journal[2].report.component, 6, + "incorrect value for journal[2].report.component, expected 6, is {}", + msg.journal[2].report.component + ); + assert_eq!( + msg.journal[2].report.generic, 1, + "incorrect value for journal[2].report.generic, expected 1, is {}", + msg.journal[2].report.generic + ); + assert_eq!( + msg.journal[2].report.specific, 15, + "incorrect value for journal[2].report.specific, expected 15, is {}", + msg.journal[2].report.specific + ); + assert_eq!( + msg.journal[2].uptime, 8888, + "incorrect value for journal[2].uptime, expected 8888, is {}", + msg.journal[2].uptime + ); + assert_eq!( + msg.reporting_system, 1, + "incorrect value for reporting_system, expected 1, is {}", + msg.reporting_system + ); + assert_eq!( + msg.sbp_version, 1025, + "incorrect value for sbp_version, expected 1025, is {}", + msg.sbp_version + ); + assert_eq!( + msg.sequence_descriptor, 16, + "incorrect value for sequence_descriptor, expected 16, is {}", + msg.sequence_descriptor + ); + assert_eq!( + msg.total_status_reports, 100, + "incorrect value for total_status_reports, expected 100, is {}", + msg.total_status_reports + ); + } + _ => panic!("Invalid message type! Expected a MsgStatusJournal"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } + { + let mut payload = Cursor::new(vec![ + 85, 253, 255, 211, 136, 17, 1, 0, 1, 4, 100, 0, 0, 0, 16, 146, 16, 0, 0, 6, 0, 1, 13, + 144, 121, + ]); + + // Test the round trip payload parsing + let sbp_msg = { + let mut msgs = iter_messages(&mut payload); + msgs.next() + .expect("no message found") + .expect("failed to parse message") + }; + match &sbp_msg { + sbp::messages::Sbp::MsgStatusJournal(msg) => { + assert_eq!( + msg.message_type(), + 0xFFFD, + "Incorrect message type, expected 0xFFFD, is {}", + msg.message_type() + ); + let sender_id = msg.sender_id().unwrap(); + assert_eq!( + sender_id, 0x88D3, + "incorrect sender id, expected 0x88D3, is {}", + sender_id + ); + assert_eq!( + msg.journal[0].report.component, 6, + "incorrect value for journal[0].report.component, expected 6, is {}", + msg.journal[0].report.component + ); + assert_eq!( + msg.journal[0].report.generic, 1, + "incorrect value for journal[0].report.generic, expected 1, is {}", + msg.journal[0].report.generic + ); + assert_eq!( + msg.journal[0].report.specific, 13, + "incorrect value for journal[0].report.specific, expected 13, is {}", + msg.journal[0].report.specific + ); + assert_eq!( + msg.journal[0].uptime, 4242, + "incorrect value for journal[0].uptime, expected 4242, is {}", + msg.journal[0].uptime + ); + assert_eq!( + msg.reporting_system, 1, + "incorrect value for reporting_system, expected 1, is {}", + msg.reporting_system + ); + assert_eq!( + msg.sbp_version, 1025, + "incorrect value for sbp_version, expected 1025, is {}", + msg.sbp_version + ); + assert_eq!( + msg.sequence_descriptor, 16, + "incorrect value for sequence_descriptor, expected 16, is {}", + msg.sequence_descriptor + ); + assert_eq!( + msg.total_status_reports, 100, + "incorrect value for total_status_reports, expected 100, is {}", + msg.total_status_reports + ); + } + _ => panic!("Invalid message type! Expected a MsgStatusJournal"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} diff --git a/rust/sbp/tests/integration/main.rs b/rust/sbp/tests/integration/main.rs index c864eaeb26..1ecb30220e 100644 --- a/rust/sbp/tests/integration/main.rs +++ b/rust/sbp/tests/integration/main.rs @@ -89,6 +89,7 @@ mod auto_check_sbp_system_msg_ins_status; mod auto_check_sbp_system_msg_ins_updates; mod auto_check_sbp_system_msg_sensor_aid_event; mod auto_check_sbp_system_msg_startup; +mod auto_check_sbp_system_msg_status_journal; mod auto_check_sbp_tracking_msg_measurement_state; mod auto_check_sbp_tracking_msg_tracking_state; mod auto_check_sbp_tracking_msg_tracking_state_detailed_dep; diff --git a/sbpjson/elm/SbpJson.elm b/sbpjson/elm/SbpJson.elm index afe328d9fb..78427fb99c 100644 --- a/sbpjson/elm/SbpJson.elm +++ b/sbpjson/elm/SbpJson.elm @@ -5,7 +5,7 @@ -- add these imports -- -- import Json.Decode exposing (decodeString)`); --- import SbpJson exposing (acqSvProfile, almanacCommonContent, carrierPhase, codeBiasesContent, doppler, ephemerisCommonContent, estimatedHorizontalErrorEllipse, gnssInputType, gnssCapb, gnssSignal, gpsTime, gpsTimeSEC, gridElement, gridElementNoStd, griddedCorrectionHeader, imuInputType, latency, measurementState, msgAcqResult, msgAcqSvProfile, msgAgeCorrections, msgAlmanac, msgAlmanacGPS, msgAlmanacGlo, msgAngularRate, msgBasePosECEF, msgBasePosLLH, msgBaselineECEF, msgBaselineHeading, msgBaselineNED, msgBootloaderHandshakeReq, msgBootloaderHandshakeResp, msgBootloaderJumpToApp, msgCellModemStatus, msgCommandOutput, msgCommandReq, msgCommandResp, msgCsacTelemetry, msgCsacTelemetryLabels, msgCwResults, msgCwStart, msgDeviceMonitor, msgDgnssStatus, msgDops, msgEphemerisBds, msgEphemerisGPS, msgEphemerisGal, msgEphemerisGlo, msgEphemerisQzss, msgEphemerisSbas, msgEXTEvent, msgFileioConfigReq, msgFileioConfigResp, msgFileioReadDirReq, msgFileioReadDirResp, msgFileioReadReq, msgFileioReadResp, msgFileioRemove, msgFileioWriteReq, msgFileioWriteResp, msgFlashDone, msgFlashErase, msgFlashProgram, msgFlashReadReq, msgFlashReadResp, msgFrontEndGain, msgFwd, msgGPSTime, msgGPSTimeGnss, msgGloBiases, msgGnssCapb, msgGnssTimeOffset, msgGroupDelay, msgGroupMeta, msgHeartbeat, msgIarState, msgImuAux, msgImuRaw, msgInsStatus, msgInsUpdates, msgIono, msgLinuxCPUState, msgLinuxMemState, msgLinuxProcessFdCount, msgLinuxProcessFdSummary, msgLinuxProcessSocketCounts, msgLinuxProcessSocketQueues, msgLinuxSocketUsage, msgLinuxSysState, msgLog, msgM25FlashWriteStatus, msgMagRaw, msgMaskSatellite, msgMeasurementState, msgNapDeviceDnaReq, msgNapDeviceDnaResp, msgNdbEvent, msgNetworkBandwidthUsage, msgNetworkStateReq, msgNetworkStateResp, msgObs, msgOdometry, msgOrientEuler, msgOrientQuat, msgOsr, msgPosECEF, msgPosECEFCov, msgPosECEFCovGnss, msgPosECEFGnss, msgPosLLH, msgPosLLHAcc, msgPosLLHCov, msgPosLLHCovGnss, msgPosLLHGnss, msgPpsTime, msgProtectionLevel, msgReset, msgResetFilters, msgSbasRaw, msgSensorAidEvent, msgSetTime, msgSettingsReadByIndexDone, msgSettingsReadByIndexReq, msgSettingsReadByIndexResp, msgSettingsReadReq, msgSettingsReadResp, msgSettingsRegister, msgSettingsRegisterResp, msgSettingsSave, msgSettingsWrite, msgSettingsWriteResp, msgSolnMeta, msgSpecan, msgSsrCodeBiases, msgSsrGriddedCorrection, msgSsrOrbitClock, msgSsrPhaseBiases, msgSsrSatelliteApc, msgSsrStecCorrection, msgSsrTileDefinition, msgStartup, msgStatusReport, msgStmFlashLockSector, msgStmFlashUnlockSector, msgStmUniqueIDReq, msgStmUniqueIDResp, msgSvAzEl, msgThreadState, msgTrackingIq, msgTrackingState, msgUARTState, msgUserData, msgUTCTime, msgUTCTimeGnss, msgVelBody, msgVelCog, msgVelECEF, msgVelECEFCov, msgVelECEFCovGnss, msgVelECEFGnss, msgVelNED, msgVelNEDCov, msgVelNEDCovGnss, msgVelNEDGnss, msgWheeltick, networkUsage, observationHeader, odoInputType, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, satelliteAPC, solutionInputType, subSystemReport, svAzEl, svID, trackingChannelCorrelation, trackingChannelState, troposphericDelayCorrection, troposphericDelayCorrectionNoStd, uartChannel) +-- import SbpJson exposing (acqSvProfile, almanacCommonContent, carrierPhase, codeBiasesContent, doppler, ephemerisCommonContent, estimatedHorizontalErrorEllipse, gnssInputType, gnssCapb, gnssSignal, gpsTime, gpsTimeSEC, gridElement, gridElementNoStd, griddedCorrectionHeader, imuInputType, latency, measurementState, msgAcqResult, msgAcqSvProfile, msgAgeCorrections, msgAlmanac, msgAlmanacGPS, msgAlmanacGlo, msgAngularRate, msgBasePosECEF, msgBasePosLLH, msgBaselineECEF, msgBaselineHeading, msgBaselineNED, msgBootloaderHandshakeReq, msgBootloaderHandshakeResp, msgBootloaderJumpToApp, msgCellModemStatus, msgCommandOutput, msgCommandReq, msgCommandResp, msgCsacTelemetry, msgCsacTelemetryLabels, msgCwResults, msgCwStart, msgDeviceMonitor, msgDgnssStatus, msgDops, msgEphemerisBds, msgEphemerisGPS, msgEphemerisGal, msgEphemerisGlo, msgEphemerisQzss, msgEphemerisSbas, msgEXTEvent, msgFileioConfigReq, msgFileioConfigResp, msgFileioReadDirReq, msgFileioReadDirResp, msgFileioReadReq, msgFileioReadResp, msgFileioRemove, msgFileioWriteReq, msgFileioWriteResp, msgFlashDone, msgFlashErase, msgFlashProgram, msgFlashReadReq, msgFlashReadResp, msgFrontEndGain, msgFwd, msgGPSTime, msgGPSTimeGnss, msgGloBiases, msgGnssCapb, msgGnssTimeOffset, msgGroupDelay, msgGroupMeta, msgHeartbeat, msgIarState, msgImuAux, msgImuRaw, msgInsStatus, msgInsUpdates, msgIono, msgLinuxCPUState, msgLinuxMemState, msgLinuxProcessFdCount, msgLinuxProcessFdSummary, msgLinuxProcessSocketCounts, msgLinuxProcessSocketQueues, msgLinuxSocketUsage, msgLinuxSysState, msgLog, msgM25FlashWriteStatus, msgMagRaw, msgMaskSatellite, msgMeasurementState, msgNapDeviceDnaReq, msgNapDeviceDnaResp, msgNdbEvent, msgNetworkBandwidthUsage, msgNetworkStateReq, msgNetworkStateResp, msgObs, msgOdometry, msgOrientEuler, msgOrientQuat, msgOsr, msgPosECEF, msgPosECEFCov, msgPosECEFCovGnss, msgPosECEFGnss, msgPosLLH, msgPosLLHAcc, msgPosLLHCov, msgPosLLHCovGnss, msgPosLLHGnss, msgPpsTime, msgProtectionLevel, msgReset, msgResetFilters, msgSbasRaw, msgSensorAidEvent, msgSetTime, msgSettingsReadByIndexDone, msgSettingsReadByIndexReq, msgSettingsReadByIndexResp, msgSettingsReadReq, msgSettingsReadResp, msgSettingsRegister, msgSettingsRegisterResp, msgSettingsSave, msgSettingsWrite, msgSettingsWriteResp, msgSolnMeta, msgSpecan, msgSsrCodeBiases, msgSsrGriddedCorrection, msgSsrOrbitClock, msgSsrPhaseBiases, msgSsrSatelliteApc, msgSsrStecCorrection, msgSsrTileDefinition, msgStartup, msgStatusJournal, msgStatusReport, msgStmFlashLockSector, msgStmFlashUnlockSector, msgStmUniqueIDReq, msgStmUniqueIDResp, msgSvAzEl, msgThreadState, msgTrackingIq, msgTrackingState, msgUARTState, msgUserData, msgUTCTime, msgUTCTimeGnss, msgVelBody, msgVelCog, msgVelECEF, msgVelECEFCov, msgVelECEFCovGnss, msgVelECEFGnss, msgVelNED, msgVelNEDCov, msgVelNEDCovGnss, msgVelNEDGnss, msgWheeltick, networkUsage, observationHeader, odoInputType, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, satelliteAPC, solutionInputType, statusJournalItem, subSystemReport, svAzEl, svID, trackingChannelCorrelation, trackingChannelState, troposphericDelayCorrection, troposphericDelayCorrectionNoStd, uartChannel) -- -- and you're off to the races with -- @@ -150,6 +150,7 @@ -- decodeString msgSsrStecCorrection myJsonString -- decodeString msgSsrTileDefinition myJsonString -- decodeString msgStartup myJsonString +-- decodeString msgStatusJournal myJsonString -- decodeString msgStatusReport myJsonString -- decodeString msgStmFlashLockSector myJsonString -- decodeString msgStmFlashUnlockSector myJsonString @@ -187,6 +188,7 @@ -- decodeString stecSatElement myJsonString -- decodeString satelliteAPC myJsonString -- decodeString solutionInputType myJsonString +-- decodeString statusJournalItem myJsonString -- decodeString subSystemReport myJsonString -- decodeString svAzEl myJsonString -- decodeString svID myJsonString @@ -620,6 +622,9 @@ module SbpJson exposing , MsgStartup , msgStartupToString , msgStartup + , MsgStatusJournal + , msgStatusJournalToString + , msgStatusJournal , MsgStatusReport , msgStatusReportToString , msgStatusReport @@ -731,6 +736,9 @@ module SbpJson exposing , SolutionInputType , solutionInputTypeToString , solutionInputType + , StatusJournalItem + , statusJournalItemToString + , statusJournalItem , SubSystemReport , subSystemReportToString , subSystemReport @@ -2542,9 +2550,37 @@ type alias MsgStartup = , startupType : Int } +{-| The status journal message contains past status reports (see MSG_STATUS_REPORT) and +functions as a error/event storage for telemetry purposes. +-} +type alias MsgStatusJournal = + { journal : Array StatusJournalItem + , reportingSystem : Int + , sbpVersion : Int + , sequenceDescriptor : Int + , totalStatusReports : Int + } + +{-| Reports the uptime and the state of a subsystem via generic and specific status codes. +If the generic state is reported as initializing, the specific state should be ignored. +-} +type alias StatusJournalItem = + { report : SubSystemReport + , uptime : Int + } + +{-| Report the general and specific state of a subsystem. If the generic state is reported +as initializing, the specific state should be ignored. +-} +type alias SubSystemReport = + { component : Int + , generic : Int + , specific : Int + } + {-| The status report is sent periodically to inform the host or other attached devices that the system is running. It is used to monitor system malfunctions. It contains status -reports that indicate to the host the status of each sub-system and whether it is +reports that indicate to the host the status of each subsystem and whether it is operating correctly., , Interpretation of the subsystem specific status code is product dependent, but if the @@ -2559,15 +2595,6 @@ type alias MsgStatusReport = , uptime : Int } -{-| Report the general and specific state of a sub-system. If the generic state is reported -as initializing, the specific state should be ignored. --} -type alias SubSystemReport = - { component : Int - , generic : Int - , specific : Int - } - {-| The flash lock message locks a sector of the STM flash memory. The device replies with a MSG_FLASH_DONE message. -} @@ -3388,6 +3415,9 @@ msgSsrTileDefinitionToString r = Jenc.encode 0 (encodeMsgSsrTileDefinition r) msgStartupToString : MsgStartup -> String msgStartupToString r = Jenc.encode 0 (encodeMsgStartup r) +msgStatusJournalToString : MsgStatusJournal -> String +msgStatusJournalToString r = Jenc.encode 0 (encodeMsgStatusJournal r) + msgStatusReportToString : MsgStatusReport -> String msgStatusReportToString r = Jenc.encode 0 (encodeMsgStatusReport r) @@ -3502,6 +3532,9 @@ satelliteAPCToString r = Jenc.encode 0 (encodeSatelliteAPC r) solutionInputTypeToString : SolutionInputType -> String solutionInputTypeToString r = Jenc.encode 0 (encodeSolutionInputType r) +statusJournalItemToString : StatusJournalItem -> String +statusJournalItemToString r = Jenc.encode 0 (encodeStatusJournalItem r) + subSystemReportToString : SubSystemReport -> String subSystemReportToString r = Jenc.encode 0 (encodeSubSystemReport r) @@ -6287,22 +6320,35 @@ encodeMsgStartup x = , ("startup_type", Jenc.int x.startupType) ] -msgStatusReport : Jdec.Decoder MsgStatusReport -msgStatusReport = - Jpipe.decode MsgStatusReport +msgStatusJournal : Jdec.Decoder MsgStatusJournal +msgStatusJournal = + Jpipe.decode MsgStatusJournal + |> Jpipe.required "journal" (Jdec.array statusJournalItem) |> Jpipe.required "reporting_system" Jdec.int |> Jpipe.required "sbp_version" Jdec.int - |> Jpipe.required "sequence" Jdec.int - |> Jpipe.required "status" (Jdec.array subSystemReport) - |> Jpipe.required "uptime" Jdec.int + |> Jpipe.required "sequence_descriptor" Jdec.int + |> Jpipe.required "total_status_reports" Jdec.int -encodeMsgStatusReport : MsgStatusReport -> Jenc.Value -encodeMsgStatusReport x = +encodeMsgStatusJournal : MsgStatusJournal -> Jenc.Value +encodeMsgStatusJournal x = Jenc.object - [ ("reporting_system", Jenc.int x.reportingSystem) + [ ("journal", makeArrayEncoder encodeStatusJournalItem x.journal) + , ("reporting_system", Jenc.int x.reportingSystem) , ("sbp_version", Jenc.int x.sbpVersion) - , ("sequence", Jenc.int x.sequence) - , ("status", makeArrayEncoder encodeSubSystemReport x.status) + , ("sequence_descriptor", Jenc.int x.sequenceDescriptor) + , ("total_status_reports", Jenc.int x.totalStatusReports) + ] + +statusJournalItem : Jdec.Decoder StatusJournalItem +statusJournalItem = + Jpipe.decode StatusJournalItem + |> Jpipe.required "report" subSystemReport + |> Jpipe.required "uptime" Jdec.int + +encodeStatusJournalItem : StatusJournalItem -> Jenc.Value +encodeStatusJournalItem x = + Jenc.object + [ ("report", encodeSubSystemReport x.report) , ("uptime", Jenc.int x.uptime) ] @@ -6321,6 +6367,25 @@ encodeSubSystemReport x = , ("specific", Jenc.int x.specific) ] +msgStatusReport : Jdec.Decoder MsgStatusReport +msgStatusReport = + Jpipe.decode MsgStatusReport + |> Jpipe.required "reporting_system" Jdec.int + |> Jpipe.required "sbp_version" Jdec.int + |> Jpipe.required "sequence" Jdec.int + |> Jpipe.required "status" (Jdec.array subSystemReport) + |> Jpipe.required "uptime" Jdec.int + +encodeMsgStatusReport : MsgStatusReport -> Jenc.Value +encodeMsgStatusReport x = + Jenc.object + [ ("reporting_system", Jenc.int x.reportingSystem) + , ("sbp_version", Jenc.int x.sbpVersion) + , ("sequence", Jenc.int x.sequence) + , ("status", makeArrayEncoder encodeSubSystemReport x.status) + , ("uptime", Jenc.int x.uptime) + ] + msgStmFlashLockSector : Jdec.Decoder MsgStmFlashLockSector msgStmFlashLockSector = Jpipe.decode MsgStmFlashLockSector diff --git a/sbpjson/javascript/SbpJson.js b/sbpjson/javascript/SbpJson.js index 5059d3f4e0..0fc5d1a2a3 100644 --- a/sbpjson/javascript/SbpJson.js +++ b/sbpjson/javascript/SbpJson.js @@ -143,6 +143,7 @@ // const msgSsrStecCorrection = Convert.toMsgSsrStecCorrection(json); // const msgSsrTileDefinition = Convert.toMsgSsrTileDefinition(json); // const msgStartup = Convert.toMsgStartup(json); +// const msgStatusJournal = Convert.toMsgStatusJournal(json); // const msgStatusReport = Convert.toMsgStatusReport(json); // const msgStmFlashLockSector = Convert.toMsgStmFlashLockSector(json); // const msgStmFlashUnlockSector = Convert.toMsgStmFlashUnlockSector(json); @@ -180,6 +181,7 @@ // const sTECSatElement = Convert.toSTECSatElement(json); // const satelliteAPC = Convert.toSatelliteAPC(json); // const solutionInputType = Convert.toSolutionInputType(json); +// const statusJournalItem = Convert.toStatusJournalItem(json); // const subSystemReport = Convert.toSubSystemReport(json); // const svAzEl = Convert.toSvAzEl(json); // const svID = Convert.toSvID(json); @@ -1322,6 +1324,14 @@ function msgStartupToJson(value) { return JSON.stringify(uncast(value, r("MsgStartup")), null, 2); } +function toMsgStatusJournal(json) { + return cast(JSON.parse(json), r("MsgStatusJournal")); +} + +function msgStatusJournalToJson(value) { + return JSON.stringify(uncast(value, r("MsgStatusJournal")), null, 2); +} + function toMsgStatusReport(json) { return cast(JSON.parse(json), r("MsgStatusReport")); } @@ -1618,6 +1628,14 @@ function solutionInputTypeToJson(value) { return JSON.stringify(uncast(value, r("SolutionInputType")), null, 2); } +function toStatusJournalItem(json) { + return cast(JSON.parse(json), r("StatusJournalItem")); +} + +function statusJournalItemToJson(value) { + return JSON.stringify(uncast(value, r("StatusJournalItem")), null, 2); +} + function toSubSystemReport(json) { return cast(JSON.parse(json), r("SubSystemReport")); } @@ -2833,11 +2851,15 @@ const typeMap = { { json: "cause", js: "cause", typ: 0 }, { json: "startup_type", js: "startup_type", typ: 0 }, ], "any"), - "MsgStatusReport": o([ + "MsgStatusJournal": o([ + { json: "journal", js: "journal", typ: a(r("StatusJournalItem")) }, { json: "reporting_system", js: "reporting_system", typ: 0 }, { json: "sbp_version", js: "sbp_version", typ: 0 }, - { json: "sequence", js: "sequence", typ: 0 }, - { json: "status", js: "status", typ: a(r("SubSystemReport")) }, + { json: "sequence_descriptor", js: "sequence_descriptor", typ: 0 }, + { json: "total_status_reports", js: "total_status_reports", typ: 0 }, + ], "any"), + "StatusJournalItem": o([ + { json: "report", js: "report", typ: r("SubSystemReport") }, { json: "uptime", js: "uptime", typ: 0 }, ], "any"), "SubSystemReport": o([ @@ -2845,6 +2867,13 @@ const typeMap = { { json: "generic", js: "generic", typ: 0 }, { json: "specific", js: "specific", typ: 0 }, ], "any"), + "MsgStatusReport": o([ + { json: "reporting_system", js: "reporting_system", typ: 0 }, + { json: "sbp_version", js: "sbp_version", typ: 0 }, + { json: "sequence", js: "sequence", typ: 0 }, + { json: "status", js: "status", typ: a(r("SubSystemReport")) }, + { json: "uptime", js: "uptime", typ: 0 }, + ], "any"), "MsgStmFlashLockSector": o([ { json: "sector", js: "sector", typ: 0 }, ], "any"), @@ -3348,6 +3377,8 @@ module.exports = { "toMsgSsrTileDefinition": toMsgSsrTileDefinition, "msgStartupToJson": msgStartupToJson, "toMsgStartup": toMsgStartup, + "msgStatusJournalToJson": msgStatusJournalToJson, + "toMsgStatusJournal": toMsgStatusJournal, "msgStatusReportToJson": msgStatusReportToJson, "toMsgStatusReport": toMsgStatusReport, "msgStmFlashLockSectorToJson": msgStmFlashLockSectorToJson, @@ -3422,6 +3453,8 @@ module.exports = { "toSatelliteAPC": toSatelliteAPC, "solutionInputTypeToJson": solutionInputTypeToJson, "toSolutionInputType": toSolutionInputType, + "statusJournalItemToJson": statusJournalItemToJson, + "toStatusJournalItem": toStatusJournalItem, "subSystemReportToJson": subSystemReportToJson, "toSubSystemReport": toSubSystemReport, "svAzElToJson": svAzElToJson, diff --git a/sbpjson/typescript/SbpJson.ts b/sbpjson/typescript/SbpJson.ts index 2616761326..588ed93b9d 100644 --- a/sbpjson/typescript/SbpJson.ts +++ b/sbpjson/typescript/SbpJson.ts @@ -1,6 +1,6 @@ // To parse this data: // -// import { Convert, AcqSvProfile, AlmanacCommonContent, CarrierPhase, CodeBiasesContent, Doppler, EphemerisCommonContent, EstimatedHorizontalErrorEllipse, GNSSInputType, GnssCapb, GnssSignal, GpsTime, GpsTimeSEC, GridElement, GridElementNoStd, GriddedCorrectionHeader, IMUInputType, Latency, MeasurementState, MsgAcqResult, MsgAcqSvProfile, MsgAgeCorrections, MsgAlmanacGPS, MsgAlmanacGlo, MsgAngularRate, MsgBasePosECEF, MsgBasePosLLH, MsgBaselineECEF, MsgBaselineHeading, MsgBaselineNED, MsgBootloaderHandshakeResp, MsgBootloaderJumpToApp, MsgCellModemStatus, MsgCommandOutput, MsgCommandReq, MsgCommandResp, MsgCsacTelemetry, MsgCsacTelemetryLabels, MsgDeviceMonitor, MsgDgnssStatus, MsgDops, MsgEphemerisBds, MsgEphemerisGPS, MsgEphemerisGal, MsgEphemerisGlo, MsgEphemerisQzss, MsgEphemerisSbas, MsgEXTEvent, MsgFileioConfigReq, MsgFileioConfigResp, MsgFileioReadDirReq, MsgFileioReadDirResp, MsgFileioReadReq, MsgFileioReadResp, MsgFileioRemove, MsgFileioWriteReq, MsgFileioWriteResp, MsgFlashDone, MsgFlashErase, MsgFlashProgram, MsgFlashReadReq, MsgFlashReadResp, MsgFrontEndGain, MsgFwd, MsgGPSTime, MsgGPSTimeGnss, MsgGloBiases, MsgGnssCapb, MsgGnssTimeOffset, MsgGroupDelay, MsgGroupMeta, MsgHeartbeat, MsgIarState, MsgImuAux, MsgImuRaw, MsgInsStatus, MsgInsUpdates, MsgIono, MsgLinuxCPUState, MsgLinuxMemState, MsgLinuxProcessFdCount, MsgLinuxProcessFdSummary, MsgLinuxProcessSocketCounts, MsgLinuxProcessSocketQueues, MsgLinuxSocketUsage, MsgLinuxSysState, MsgLog, MsgM25FlashWriteStatus, MsgMagRaw, MsgMaskSatellite, MsgMeasurementState, MsgNapDeviceDnaResp, MsgNdbEvent, MsgNetworkBandwidthUsage, MsgNetworkStateResp, MsgObs, MsgOdometry, MsgOrientEuler, MsgOrientQuat, MsgOsr, MsgPosECEF, MsgPosECEFCov, MsgPosECEFCovGnss, MsgPosECEFGnss, MsgPosLLH, MsgPosLLHAcc, MsgPosLLHCov, MsgPosLLHCovGnss, MsgPosLLHGnss, MsgPpsTime, MsgProtectionLevel, MsgReset, MsgResetFilters, MsgSbasRaw, MsgSensorAidEvent, MsgSettingsReadByIndexReq, MsgSettingsReadByIndexResp, MsgSettingsReadReq, MsgSettingsReadResp, MsgSettingsRegister, MsgSettingsRegisterResp, MsgSettingsWrite, MsgSettingsWriteResp, MsgSolnMeta, MsgSpecan, MsgSsrCodeBiases, MsgSsrGriddedCorrection, MsgSsrOrbitClock, MsgSsrPhaseBiases, MsgSsrSatelliteApc, MsgSsrStecCorrection, MsgSsrTileDefinition, MsgStartup, MsgStatusReport, MsgStmFlashLockSector, MsgStmFlashUnlockSector, MsgStmUniqueIDResp, MsgSvAzEl, MsgThreadState, MsgTrackingIq, MsgTrackingState, MsgUARTState, MsgUserData, MsgUTCTime, MsgUTCTimeGnss, MsgVelBody, MsgVelCog, MsgVelECEF, MsgVelECEFCov, MsgVelECEFCovGnss, MsgVelECEFGnss, MsgVelNED, MsgVelNEDCov, MsgVelNEDCovGnss, MsgVelNEDGnss, MsgWheeltick, NetworkUsage, ObservationHeader, OdoInputType, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, SatelliteAPC, SolutionInputType, SubSystemReport, SvAzEl, SvID, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel } from "./file"; +// import { Convert, AcqSvProfile, AlmanacCommonContent, CarrierPhase, CodeBiasesContent, Doppler, EphemerisCommonContent, EstimatedHorizontalErrorEllipse, GNSSInputType, GnssCapb, GnssSignal, GpsTime, GpsTimeSEC, GridElement, GridElementNoStd, GriddedCorrectionHeader, IMUInputType, Latency, MeasurementState, MsgAcqResult, MsgAcqSvProfile, MsgAgeCorrections, MsgAlmanacGPS, MsgAlmanacGlo, MsgAngularRate, MsgBasePosECEF, MsgBasePosLLH, MsgBaselineECEF, MsgBaselineHeading, MsgBaselineNED, MsgBootloaderHandshakeResp, MsgBootloaderJumpToApp, MsgCellModemStatus, MsgCommandOutput, MsgCommandReq, MsgCommandResp, MsgCsacTelemetry, MsgCsacTelemetryLabels, MsgDeviceMonitor, MsgDgnssStatus, MsgDops, MsgEphemerisBds, MsgEphemerisGPS, MsgEphemerisGal, MsgEphemerisGlo, MsgEphemerisQzss, MsgEphemerisSbas, MsgEXTEvent, MsgFileioConfigReq, MsgFileioConfigResp, MsgFileioReadDirReq, MsgFileioReadDirResp, MsgFileioReadReq, MsgFileioReadResp, MsgFileioRemove, MsgFileioWriteReq, MsgFileioWriteResp, MsgFlashDone, MsgFlashErase, MsgFlashProgram, MsgFlashReadReq, MsgFlashReadResp, MsgFrontEndGain, MsgFwd, MsgGPSTime, MsgGPSTimeGnss, MsgGloBiases, MsgGnssCapb, MsgGnssTimeOffset, MsgGroupDelay, MsgGroupMeta, MsgHeartbeat, MsgIarState, MsgImuAux, MsgImuRaw, MsgInsStatus, MsgInsUpdates, MsgIono, MsgLinuxCPUState, MsgLinuxMemState, MsgLinuxProcessFdCount, MsgLinuxProcessFdSummary, MsgLinuxProcessSocketCounts, MsgLinuxProcessSocketQueues, MsgLinuxSocketUsage, MsgLinuxSysState, MsgLog, MsgM25FlashWriteStatus, MsgMagRaw, MsgMaskSatellite, MsgMeasurementState, MsgNapDeviceDnaResp, MsgNdbEvent, MsgNetworkBandwidthUsage, MsgNetworkStateResp, MsgObs, MsgOdometry, MsgOrientEuler, MsgOrientQuat, MsgOsr, MsgPosECEF, MsgPosECEFCov, MsgPosECEFCovGnss, MsgPosECEFGnss, MsgPosLLH, MsgPosLLHAcc, MsgPosLLHCov, MsgPosLLHCovGnss, MsgPosLLHGnss, MsgPpsTime, MsgProtectionLevel, MsgReset, MsgResetFilters, MsgSbasRaw, MsgSensorAidEvent, MsgSettingsReadByIndexReq, MsgSettingsReadByIndexResp, MsgSettingsReadReq, MsgSettingsReadResp, MsgSettingsRegister, MsgSettingsRegisterResp, MsgSettingsWrite, MsgSettingsWriteResp, MsgSolnMeta, MsgSpecan, MsgSsrCodeBiases, MsgSsrGriddedCorrection, MsgSsrOrbitClock, MsgSsrPhaseBiases, MsgSsrSatelliteApc, MsgSsrStecCorrection, MsgSsrTileDefinition, MsgStartup, MsgStatusJournal, MsgStatusReport, MsgStmFlashLockSector, MsgStmFlashUnlockSector, MsgStmUniqueIDResp, MsgSvAzEl, MsgThreadState, MsgTrackingIq, MsgTrackingState, MsgUARTState, MsgUserData, MsgUTCTime, MsgUTCTimeGnss, MsgVelBody, MsgVelCog, MsgVelECEF, MsgVelECEFCov, MsgVelECEFCovGnss, MsgVelECEFGnss, MsgVelNED, MsgVelNEDCov, MsgVelNEDCovGnss, MsgVelNEDGnss, MsgWheeltick, NetworkUsage, ObservationHeader, OdoInputType, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, SatelliteAPC, SolutionInputType, StatusJournalItem, SubSystemReport, SvAzEl, SvID, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel } from "./file"; // // const acqSvProfile = Convert.toAcqSvProfile(json); // const almanacCommonContent = Convert.toAlmanacCommonContent(json); @@ -143,6 +143,7 @@ // const msgSsrStecCorrection = Convert.toMsgSsrStecCorrection(json); // const msgSsrTileDefinition = Convert.toMsgSsrTileDefinition(json); // const msgStartup = Convert.toMsgStartup(json); +// const msgStatusJournal = Convert.toMsgStatusJournal(json); // const msgStatusReport = Convert.toMsgStatusReport(json); // const msgStmFlashLockSector = Convert.toMsgStmFlashLockSector(json); // const msgStmFlashUnlockSector = Convert.toMsgStmFlashUnlockSector(json); @@ -180,6 +181,7 @@ // const sTECSatElement = Convert.toSTECSatElement(json); // const satelliteAPC = Convert.toSatelliteAPC(json); // const solutionInputType = Convert.toSolutionInputType(json); +// const statusJournalItem = Convert.toStatusJournalItem(json); // const subSystemReport = Convert.toSubSystemReport(json); // const svAzEl = Convert.toSvAzEl(json); // const svID = Convert.toSvID(json); @@ -2113,10 +2115,41 @@ export interface MsgStartup { startup_type: number; } +/** + * The status journal message contains past status reports (see MSG_STATUS_REPORT) and + * functions as a error/event storage for telemetry purposes. + */ +export interface MsgStatusJournal { + journal: StatusJournalItem[]; + reporting_system: number; + sbp_version: number; + sequence_descriptor: number; + total_status_reports: number; +} + +/** + * Reports the uptime and the state of a subsystem via generic and specific status codes. + * If the generic state is reported as initializing, the specific state should be ignored. + */ +export interface StatusJournalItem { + report: SubSystemReport; + uptime: number; +} + +/** + * Report the general and specific state of a subsystem. If the generic state is reported + * as initializing, the specific state should be ignored. + */ +export interface SubSystemReport { + component: number; + generic: number; + specific: number; +} + /** * The status report is sent periodically to inform the host or other attached devices that * the system is running. It is used to monitor system malfunctions. It contains status - * reports that indicate to the host the status of each sub-system and whether it is + * reports that indicate to the host the status of each subsystem and whether it is * operating correctly., * , * Interpretation of the subsystem specific status code is product dependent, but if the @@ -2131,16 +2164,6 @@ export interface MsgStatusReport { uptime: number; } -/** - * Report the general and specific state of a sub-system. If the generic state is reported - * as initializing, the specific state should be ignored. - */ -export interface SubSystemReport { - component: number; - generic: number; - specific: number; -} - /** * The flash lock message locks a sector of the STM flash memory. The device replies with a * MSG_FLASH_DONE message. @@ -3673,6 +3696,14 @@ export class Convert { return JSON.stringify(uncast(value, r("MsgStartup")), null, 2); } + public static toMsgStatusJournal(json: string): MsgStatusJournal { + return cast(JSON.parse(json), r("MsgStatusJournal")); + } + + public static msgStatusJournalToJson(value: MsgStatusJournal): string { + return JSON.stringify(uncast(value, r("MsgStatusJournal")), null, 2); + } + public static toMsgStatusReport(json: string): MsgStatusReport { return cast(JSON.parse(json), r("MsgStatusReport")); } @@ -3969,6 +4000,14 @@ export class Convert { return JSON.stringify(uncast(value, r("SolutionInputType")), null, 2); } + public static toStatusJournalItem(json: string): StatusJournalItem { + return cast(JSON.parse(json), r("StatusJournalItem")); + } + + public static statusJournalItemToJson(value: StatusJournalItem): string { + return JSON.stringify(uncast(value, r("StatusJournalItem")), null, 2); + } + public static toSubSystemReport(json: string): SubSystemReport { return cast(JSON.parse(json), r("SubSystemReport")); } @@ -5185,11 +5224,15 @@ const typeMap: any = { { json: "cause", js: "cause", typ: 0 }, { json: "startup_type", js: "startup_type", typ: 0 }, ], "any"), - "MsgStatusReport": o([ + "MsgStatusJournal": o([ + { json: "journal", js: "journal", typ: a(r("StatusJournalItem")) }, { json: "reporting_system", js: "reporting_system", typ: 0 }, { json: "sbp_version", js: "sbp_version", typ: 0 }, - { json: "sequence", js: "sequence", typ: 0 }, - { json: "status", js: "status", typ: a(r("SubSystemReport")) }, + { json: "sequence_descriptor", js: "sequence_descriptor", typ: 0 }, + { json: "total_status_reports", js: "total_status_reports", typ: 0 }, + ], "any"), + "StatusJournalItem": o([ + { json: "report", js: "report", typ: r("SubSystemReport") }, { json: "uptime", js: "uptime", typ: 0 }, ], "any"), "SubSystemReport": o([ @@ -5197,6 +5240,13 @@ const typeMap: any = { { json: "generic", js: "generic", typ: 0 }, { json: "specific", js: "specific", typ: 0 }, ], "any"), + "MsgStatusReport": o([ + { json: "reporting_system", js: "reporting_system", typ: 0 }, + { json: "sbp_version", js: "sbp_version", typ: 0 }, + { json: "sequence", js: "sequence", typ: 0 }, + { json: "status", js: "status", typ: a(r("SubSystemReport")) }, + { json: "uptime", js: "uptime", typ: 0 }, + ], "any"), "MsgStmFlashLockSector": o([ { json: "sector", js: "sector", typ: 0 }, ], "any"), From 9aa6e56c328e903046a8045ade3a4932ca759b0f Mon Sep 17 00:00:00 2001 From: Jason Mobarak Date: Sun, 1 May 2022 12:20:15 -0700 Subject: [PATCH 3/4] gitignore: add vscode --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 74e3d8a0d9..bfd4e41093 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,5 @@ python/sbp/_version.py # Spec Validation previous-spec/ current-spec/ + +.vscode/ From 56043761b3d40ae743caa175f2e46fc353910561 Mon Sep 17 00:00:00 2001 From: Jason Mobarak Date: Mon, 2 May 2022 10:56:18 -0700 Subject: [PATCH 4/4] python: tests: log actual vs expect crc --- python/tests/sbp/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/tests/sbp/utils.py b/python/tests/sbp/utils.py index 7e98628b72..bb3e102a6b 100755 --- a/python/tests/sbp/utils.py +++ b/python/tests/sbp/utils.py @@ -94,7 +94,8 @@ def _assert_sbp(sbp, test_case): Unit test case parsed from YAML. """ - assert sbp.crc == int(test_case['crc'], 0), "Invalid crc." + expected = int(test_case['crc'], 0) + assert sbp.crc == expected, "Invalid crc. Actual: {:x} vs expected: {:x}.".format(sbp.crc, expected) assert sbp.msg_type == int(test_case['msg_type'], 0), "Invalid msg_type." assert sbp.sender == int(test_case['sender'], 0), "Invalid sender." assert sbp.length == test_case['length'], "Invalid length."

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