From 111c96680fbfe8c12380568e77b3c5644c88a8a6 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Wed, 4 May 2022 16:15:22 -0400 Subject: [PATCH 1/2] Add support for MSG_SSR_CODE_PHASE_BIASES_BOUNDS message [OTA-119] --- python/tests/sbp/test_table.py | 2 +- .../ssr/test_MsgSsrCodePhaseBiasesBounds.yaml | 55 +++++++++++++++++++ spec/yaml/swiftnav/sbp/ssr.yaml | 54 ++++++++++++++++++ 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml diff --git a/python/tests/sbp/test_table.py b/python/tests/sbp/test_table.py index 281a0b6923..cb6f9e54a1 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 = 206 + number_of_messages = 207 assert len(_SBP_TABLE) == number_of_messages def test_table_unqiue_count(): diff --git a/spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml b/spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml new file mode 100644 index 0000000000..47cd493044 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml @@ -0,0 +1,55 @@ +description: Unit tests for swiftnav.sbp.ssr MsgSsrCodePhaseBiasesBounds +generated_on: 2022-04-12 # manually generated +package: sbp.ssr +tests: + + - msg: + fields: + header: + time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + update_interval: 1 + sol_id: 14 + ssr_iod: 15 + const_id: 1 + n_sats_signals: 3 + satellites_signals: + - sat_id: 0 + signal_id: 3 + code_bias_bound_mu: 39 + code_bias_bound_sig: 1 + phase_bias_bound_mu: 39 + phase_bias_bound_sig: 1 + - sat_id: 1 + signal_id: 3 + code_bias_bound_mu: 39 + code_bias_bound_sig: 1 + phase_bias_bound_mu: 39 + phase_bias_bound_sig: 1 + - sat_id: 1 + signal_id: 1 + code_bias_bound_mu: 39 + code_bias_bound_sig: 1 + phase_bias_bound_mu: 39 + phase_bias_bound_sig: 1 + module: sbp.ssr + name: MsgSsrCodePhaseBiasesBounds + msg_type: '1516' + raw_json: '{"header": {"time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "update_interval": 1, + "sol_id": 14}, "ssr_iod": 15, "const_id": 1, "n_sats_signals": 3, "satellites_signals": [{ + "sat_id": 0, "signal_id": 3, "code_bias_bound_mu": 39, "code_bias_bound_sig": 1, "phase_bias_bound_mu": 39, + "phase_bias_bound_sig": 1}, {"sat_id": 1, "signal_id": 3, "code_bias_bound_mu": 39, "code_bias_bound_sig": 1, + "phase_bias_bound_mu": 39, "phase_bias_bound_sig": 1}, {"sat_id": 1, "signal_id": 1, "code_bias_bound_mu": 39, + "code_bias_bound_sig": 1, "phase_bias_bound_mu": 39, "phase_bias_bound_sig": 1}], "preamble": 85, + "msg_type": 1516, "sender": 66, "length": 31, "payload": "tAAAAAMAAQIBDg8BAwADJwEnAQEDJwEnAQEBJwEnAQ==", "crc": 28951}' + raw_packet: VewFQgAftAAAAAMAAQIBDg8BAwADJwEnAQEDJwEnAQEBJwEnARdx + sbp: + preamble: '0x55' + msg_type: '0x05EC' + sender: '0x0042' + length: 31 + payload: tAAAAAMAAQIBDg8BAwADJwEnAQEDJwEnAQEBJwEnAQ== + crc: '0x7117' diff --git a/spec/yaml/swiftnav/sbp/ssr.yaml b/spec/yaml/swiftnav/sbp/ssr.yaml index ef42110c26..a5d07f51be 100644 --- a/spec/yaml/swiftnav/sbp/ssr.yaml +++ b/spec/yaml/swiftnav/sbp/ssr.yaml @@ -920,3 +920,57 @@ definitions: size_fn: n_sats map_by: sat_id desc: Orbit and Clock Bounds per Satellite + + - CodePhaseBiasesSatSig: + short_desc: Code and Phase Biases Bounds per Satellite-Signal couple + fields: + - sat_id: + type: u8 + desc: > + Satellite ID. Similar to either RTCM DF068 (GPS), DF252 (Galileo), + or DF488 (BDS) depending on the constellation. + - signal_id: + type: u8 + desc: > + Signal and Tracking Mode Identifier. Similar to either RTCM DF380 (GPS), + DF382 (Galileo) or DF467 (BDS) depending on the constellation. + - code_bias_bound_mu: + type: u8 + units: 0.005 m + desc: Code Bias Mean (range 0-1.275) + - code_bias_bound_sig: + type: u8 + units: 0.005 m + desc: Code Bias Standard Deviation (range 0-1.275) + - phase_bias_bound_mu: + type: u8 + units: 0.005 m + desc: Phase Bias Mean (range 0-1.275) + - phase_bias_bound_sig: + type: u8 + units: 0.005 m + desc: Phase Bias Standard Deviation (range 0-1.275) + + - MSG_SSR_CODE_PHASE_BIASES_BOUNDS: + id: 0x05EC + short_desc: Combined Code and Phase Biases Bounds + public: False + fields: + - header: + type: BoundsHeader + desc: Header of a bounds message. + - ssr_iod: + type: u8 + desc: IOD of the SSR bound. + - const_id: + type: u8 + desc: Constellation ID to which the SVs belong. + - n_sats_signals: + type: u8 + desc: Number of satellite-signal couples. + - satellites_signals: + type: array + fill: CodePhaseBiasesSatSig + size_fn: n_sats_signals + map_by: sat_id + desc: Code and Phase Biases Bounds per Satellite-Signal couple. From a931ddbcbfd3b0aa6d5532c7c764994cbb9d6b5c Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Wed, 4 May 2022 16:56:12 -0400 Subject: [PATCH 2/2] make all --- c/include/libsbp/cpp/message_traits.h | 40 ++ c/include/libsbp/legacy/cpp/message_traits.h | 6 + c/include/libsbp/legacy/ssr.h | 27 ++ c/include/libsbp/sbp_msg_type.h | 1 + c/include/libsbp/ssr_macros.h | 30 ++ c/include/libsbp/v4/sbp_msg.h | 13 + c/include/libsbp/v4/ssr.h | 2 + .../libsbp/v4/ssr/CodePhaseBiasesSatSig.h | 185 ++++++++ .../v4/ssr/MSG_SSR_CODE_PHASE_BIASES_BOUNDS.h | 209 +++++++++ c/src/include/libsbp/internal/v4/ssr.h | 40 ++ c/src/v4/ssr.c | 245 ++++++++++ ...heck_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c | 425 ++++++++++++++++++ c/test/check_main.c | 1 + c/test/check_main_legacy.c | 2 + c/test/check_suites.h | 1 + c/test/check_suites_legacy.h | 1 + ...eck_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc | 227 ++++++++++ ...heck_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c | 358 +++++++++++++++ ...eck_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc | 237 ++++++++++ docs/sbp.pdf | Bin 467493 -> 467422 bytes haskell/src/SwiftNav/SBP/Msg.hs | 6 + haskell/src/SwiftNav/SBP/Ssr.hs | 74 +++ .../com/swiftnav/sbp/client/MessageTable.java | 3 + .../sbp/ssr/CodePhaseBiasesSatSig.java | 85 ++++ .../sbp/ssr/MsgSsrCodePhaseBiasesBounds.java | 83 ++++ ...p_ssr_MsgSsrCodePhaseBiasesBoundsTest.java | 315 +++++++++++++ javascript/sbp.bundle.js | 2 +- javascript/sbp/ssr.js | 83 ++++ jsonschema/CodePhaseBiasesSatSig.json | 34 ++ jsonschema/MsgSsrCodePhaseBiasesBounds.json | 32 ++ package-lock.json | 4 +- package.json | 2 +- proto/ssr.proto | 25 ++ python/sbp/ssr.py | 166 +++++++ rust/sbp/src/messages/mod.rs | 22 + rust/sbp/src/messages/ssr.rs | 166 +++++++ ...bp_ssr_msg_ssr_code_phase_biases_bounds.rs | 138 ++++++ rust/sbp/tests/integration/main.rs | 1 + sbpjson/elm/SbpJson.elm | 127 ++++-- sbpjson/javascript/SbpJson.js | 51 ++- sbpjson/typescript/SbpJson.ts | 82 +++- 41 files changed, 3496 insertions(+), 55 deletions(-) create mode 100644 c/include/libsbp/v4/ssr/CodePhaseBiasesSatSig.h create mode 100644 c/include/libsbp/v4/ssr/MSG_SSR_CODE_PHASE_BIASES_BOUNDS.h create mode 100644 c/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c create mode 100644 c/test/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc create mode 100644 c/test/legacy/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c create mode 100644 c/test/legacy/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc create mode 100644 java/src/com/swiftnav/sbp/ssr/CodePhaseBiasesSatSig.java create mode 100644 java/src/com/swiftnav/sbp/ssr/MsgSsrCodePhaseBiasesBounds.java create mode 100644 java/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBoundsTest.java create mode 100644 jsonschema/CodePhaseBiasesSatSig.json create mode 100644 jsonschema/MsgSsrCodePhaseBiasesBounds.json create mode 100644 rust/sbp/tests/integration/auto_check_sbp_ssr_msg_ssr_code_phase_biases_bounds.rs diff --git a/c/include/libsbp/cpp/message_traits.h b/c/include/libsbp/cpp/message_traits.h index 490c8d7f3b..8d52117656 100644 --- a/c/include/libsbp/cpp/message_traits.h +++ b/c/include/libsbp/cpp/message_traits.h @@ -5581,6 +5581,46 @@ struct MessageTraits { } }; +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgSsrCodePhaseBiasesBounds; + static const sbp_msg_ssr_code_phase_biases_bounds_t &get( + const sbp_msg_t &msg) { + return msg.ssr_code_phase_biases_bounds; + } + static sbp_msg_ssr_code_phase_biases_bounds_t &get(sbp_msg_t &msg) { + return msg.ssr_code_phase_biases_bounds; + } + static void to_sbp_msg(const sbp_msg_ssr_code_phase_biases_bounds_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->ssr_code_phase_biases_bounds = msg; + } + static sbp_msg_t to_sbp_msg( + const sbp_msg_ssr_code_phase_biases_bounds_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.ssr_code_phase_biases_bounds = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_ssr_code_phase_biases_bounds_t &msg, + sbp_write_fn_t write) { + return sbp_msg_ssr_code_phase_biases_bounds_send(state, sender_id, &msg, + write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_code_phase_biases_bounds_t &msg) { + return sbp_msg_ssr_code_phase_biases_bounds_encode(buf, len, n_written, + &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_code_phase_biases_bounds_t *msg) { + return sbp_msg_ssr_code_phase_biases_bounds_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_ssr_code_phase_biases_bounds_t &msg) { + return sbp_msg_ssr_code_phase_biases_bounds_encoded_len(&msg); + } +}; + template <> struct MessageTraits { static constexpr sbp_msg_type_t id = SbpMsgSsrGridDefinitionDepA; diff --git a/c/include/libsbp/legacy/cpp/message_traits.h b/c/include/libsbp/legacy/cpp/message_traits.h index 61aaa45348..c712ef6f39 100644 --- a/c/include/libsbp/legacy/cpp/message_traits.h +++ b/c/include/libsbp/legacy/cpp/message_traits.h @@ -966,6 +966,12 @@ struct MessageTraits { }; +template<> +struct MessageTraits { + static constexpr u16 id = 1516; +}; + + template<> struct MessageTraits { static constexpr u16 id = 1520; diff --git a/c/include/libsbp/legacy/ssr.h b/c/include/libsbp/legacy/ssr.h index b6958ee31b..fdab10cfbb 100644 --- a/c/include/libsbp/legacy/ssr.h +++ b/c/include/libsbp/legacy/ssr.h @@ -573,6 +573,33 @@ typedef struct SBP_ATTR_PACKED { Satellite */ } msg_ssr_orbit_clock_bounds_t; +typedef struct SBP_ATTR_PACKED { + u8 sat_id; /**< Satellite ID. Similar to either RTCM DF068 + (GPS), DF252 (Galileo), or DF488 (BDS) + depending on the constellation. */ + u8 signal_id; /**< Signal and Tracking Mode Identifier. + Similar to either RTCM DF380 (GPS), DF382 + (Galileo) or DF467 (BDS) depending on the + constellation. */ + u8 code_bias_bound_mu; /**< Code Bias Mean (range 0-1.275) [0.005 m] */ + u8 code_bias_bound_sig; /**< Code Bias Standard Deviation (range + 0-1.275) [0.005 m] */ + u8 phase_bias_bound_mu; /**< Phase Bias Mean (range 0-1.275) [0.005 m] */ + u8 phase_bias_bound_sig; /**< Phase Bias Standard Deviation (range + 0-1.275) [0.005 m] */ +} code_phase_biases_sat_sig_t; + +typedef struct SBP_ATTR_PACKED { + bounds_header_t header; /**< Header of a bounds message. */ + u8 ssr_iod; /**< IOD of the SSR bound. */ + u8 const_id; /**< Constellation ID to which the SVs belong. */ + u8 n_sats_signals; /**< Number of satellite-signal couples. */ + code_phase_biases_sat_sig_t satellites_signals[0]; /**< Code and Phase + Biases Bounds per + Satellite-Signal + couple. */ +} msg_ssr_code_phase_biases_bounds_t; + /** \} */ SBP_PACK_END diff --git a/c/include/libsbp/sbp_msg_type.h b/c/include/libsbp/sbp_msg_type.h index 18fe43f675..c89c996544 100644 --- a/c/include/libsbp/sbp_msg_type.h +++ b/c/include/libsbp/sbp_msg_type.h @@ -208,6 +208,7 @@ typedef enum { SbpMsgSpecanDep = SBP_MSG_SPECAN_DEP, SbpMsgSpecan = SBP_MSG_SPECAN, SbpMsgSsrCodeBiases = SBP_MSG_SSR_CODE_BIASES, + SbpMsgSsrCodePhaseBiasesBounds = SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS, SbpMsgSsrGridDefinitionDepA = SBP_MSG_SSR_GRID_DEFINITION_DEP_A, SbpMsgSsrGriddedCorrectionDepA = SBP_MSG_SSR_GRIDDED_CORRECTION_DEP_A, SbpMsgSsrGriddedCorrectionNoStdDepA = diff --git a/c/include/libsbp/ssr_macros.h b/c/include/libsbp/ssr_macros.h index d7c944da07..0e9022ab72 100644 --- a/c/include/libsbp/ssr_macros.h +++ b/c/include/libsbp/ssr_macros.h @@ -421,4 +421,34 @@ */ #define SBP_MSG_SSR_ORBIT_CLOCK_BOUNDS_ENCODED_OVERHEAD 13u +/** + * Encoded length of sbp_code_phase_biases_sat_sig_t (V4 API) and + * code_phase_biases_sat_sig_t (legacy API) + */ +#define SBP_CODE_PHASE_BIASES_SAT_SIG_ENCODED_LEN 6u + +#define SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS 0x05EC +/** + * The maximum number of items that can be stored in + * sbp_msg_ssr_code_phase_biases_bounds_t::satellites_signals (V4 API) or + * msg_ssr_code_phase_biases_bounds_t::satellites_signals (legacy API) before + * the maximum SBP message size is exceeded + */ +#define SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS_SATELLITES_SIGNALS_MAX 40u + +/** + * Encoded length of sbp_msg_ssr_code_phase_biases_bounds_t (V4 API) and + * msg_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_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_SSR_CODE_PHASE_BIASES_BOUNDS_ENCODED_OVERHEAD 13u + #endif /* LIBSBP_SSR_MACROS_H */ diff --git a/c/include/libsbp/v4/sbp_msg.h b/c/include/libsbp/v4/sbp_msg.h index f278d12d34..c7dadfe941 100644 --- a/c/include/libsbp/v4/sbp_msg.h +++ b/c/include/libsbp/v4/sbp_msg.h @@ -214,6 +214,7 @@ typedef union { sbp_msg_specan_dep_t specan_dep; sbp_msg_specan_t specan; sbp_msg_ssr_code_biases_t ssr_code_biases; + sbp_msg_ssr_code_phase_biases_bounds_t ssr_code_phase_biases_bounds; sbp_msg_ssr_grid_definition_dep_a_t ssr_grid_definition_dep_a; sbp_msg_ssr_gridded_correction_dep_a_t ssr_gridded_correction_dep_a; sbp_msg_ssr_gridded_correction_no_std_dep_a_t @@ -707,6 +708,9 @@ static inline s8 sbp_message_encode(uint8_t *buf, uint8_t len, case SbpMsgSsrCodeBiases: return sbp_msg_ssr_code_biases_encode(buf, len, n_written, &msg->ssr_code_biases); + case SbpMsgSsrCodePhaseBiasesBounds: + return sbp_msg_ssr_code_phase_biases_bounds_encode( + buf, len, n_written, &msg->ssr_code_phase_biases_bounds); case SbpMsgSsrGridDefinitionDepA: return sbp_msg_ssr_grid_definition_dep_a_encode( buf, len, n_written, &msg->ssr_grid_definition_dep_a); @@ -1280,6 +1284,9 @@ static inline s8 sbp_message_decode(const uint8_t *buf, uint8_t len, case SbpMsgSsrCodeBiases: return sbp_msg_ssr_code_biases_decode(buf, len, n_read, &msg->ssr_code_biases); + case SbpMsgSsrCodePhaseBiasesBounds: + return sbp_msg_ssr_code_phase_biases_bounds_decode( + buf, len, n_read, &msg->ssr_code_phase_biases_bounds); case SbpMsgSsrGridDefinitionDepA: return sbp_msg_ssr_grid_definition_dep_a_decode( buf, len, n_read, &msg->ssr_grid_definition_dep_a); @@ -1766,6 +1773,9 @@ static inline size_t sbp_message_encoded_len(sbp_msg_type_t msg_type, return sbp_msg_specan_encoded_len(&msg->specan); case SbpMsgSsrCodeBiases: return sbp_msg_ssr_code_biases_encoded_len(&msg->ssr_code_biases); + case SbpMsgSsrCodePhaseBiasesBounds: + return sbp_msg_ssr_code_phase_biases_bounds_encoded_len( + &msg->ssr_code_phase_biases_bounds); case SbpMsgSsrGridDefinitionDepA: return sbp_msg_ssr_grid_definition_dep_a_encoded_len( &msg->ssr_grid_definition_dep_a); @@ -2288,6 +2298,9 @@ static inline int sbp_message_cmp(sbp_msg_type_t msg_type, const sbp_msg_t *a, case SbpMsgSsrCodeBiases: return sbp_msg_ssr_code_biases_cmp(&a->ssr_code_biases, &b->ssr_code_biases); + case SbpMsgSsrCodePhaseBiasesBounds: + return sbp_msg_ssr_code_phase_biases_bounds_cmp( + &a->ssr_code_phase_biases_bounds, &b->ssr_code_phase_biases_bounds); case SbpMsgSsrGridDefinitionDepA: return sbp_msg_ssr_grid_definition_dep_a_cmp( &a->ssr_grid_definition_dep_a, &b->ssr_grid_definition_dep_a); diff --git a/c/include/libsbp/v4/ssr.h b/c/include/libsbp/v4/ssr.h index 7558c20214..221c794181 100644 --- a/c/include/libsbp/v4/ssr.h +++ b/c/include/libsbp/v4/ssr.h @@ -19,10 +19,12 @@ #define LIBSBP_V4_SSR_MESSAGES_H #include #include +#include #include #include #include #include +#include #include #include #include diff --git a/c/include/libsbp/v4/ssr/CodePhaseBiasesSatSig.h b/c/include/libsbp/v4/ssr/CodePhaseBiasesSatSig.h new file mode 100644 index 0000000000..b32efd0fe1 --- /dev/null +++ b/c/include/libsbp/v4/ssr/CodePhaseBiasesSatSig.h @@ -0,0 +1,185 @@ +/* + * 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/ssr.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_SSR_CODEPHASEBIASESSATSIG_H +#define LIBSBP_V4_SSR_CODEPHASEBIASESSATSIG_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_CODEPHASEBIASESSATSIG + * + *****************************************************************************/ +typedef struct { + /** + * Satellite ID. Similar to either RTCM DF068 (GPS), DF252 (Galileo), or DF488 + * (BDS) depending on the constellation. + */ + u8 sat_id; + + /** + * Signal and Tracking Mode Identifier. Similar to either RTCM DF380 (GPS), + * DF382 (Galileo) or DF467 (BDS) depending on the constellation. + */ + u8 signal_id; + + /** + * Code Bias Mean (range 0-1.275) [0.005 m] + */ + u8 code_bias_bound_mu; + + /** + * Code Bias Standard Deviation (range 0-1.275) [0.005 m] + */ + u8 code_bias_bound_sig; + + /** + * Phase Bias Mean (range 0-1.275) [0.005 m] + */ + u8 phase_bias_bound_mu; + + /** + * Phase Bias Standard Deviation (range 0-1.275) [0.005 m] + */ + u8 phase_bias_bound_sig; +} sbp_code_phase_biases_sat_sig_t; + +/** + * Get encoded size of an instance of sbp_code_phase_biases_sat_sig_t + * + * @param msg sbp_code_phase_biases_sat_sig_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_code_phase_biases_sat_sig_encoded_len( + const sbp_code_phase_biases_sat_sig_t *msg) { + (void)msg; + return SBP_CODE_PHASE_BIASES_SAT_SIG_ENCODED_LEN; +} + +/** + * Encode an instance of sbp_code_phase_biases_sat_sig_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_code_phase_biases_sat_sig_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_code_phase_biases_sat_sig_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_code_phase_biases_sat_sig_t *msg); + +/** + * Decode an instance of sbp_code_phase_biases_sat_sig_t from wire + * representation + * + * This function decodes the wire representation of a + * sbp_code_phase_biases_sat_sig_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_code_phase_biases_sat_sig_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_code_phase_biases_sat_sig_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_code_phase_biases_sat_sig_t *msg); + +/** + * Compare two instances of sbp_code_phase_biases_sat_sig_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_code_phase_biases_sat_sig_t instance + * @param b sbp_code_phase_biases_sat_sig_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_code_phase_biases_sat_sig_cmp( + const sbp_code_phase_biases_sat_sig_t *a, + const sbp_code_phase_biases_sat_sig_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_code_phase_biases_sat_sig_t &lhs, + const sbp_code_phase_biases_sat_sig_t &rhs) { + return sbp_code_phase_biases_sat_sig_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_code_phase_biases_sat_sig_t &lhs, + const sbp_code_phase_biases_sat_sig_t &rhs) { + return sbp_code_phase_biases_sat_sig_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_code_phase_biases_sat_sig_t &lhs, + const sbp_code_phase_biases_sat_sig_t &rhs) { + return sbp_code_phase_biases_sat_sig_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_code_phase_biases_sat_sig_t &lhs, + const sbp_code_phase_biases_sat_sig_t &rhs) { + return sbp_code_phase_biases_sat_sig_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_code_phase_biases_sat_sig_t &lhs, + const sbp_code_phase_biases_sat_sig_t &rhs) { + return sbp_code_phase_biases_sat_sig_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_code_phase_biases_sat_sig_t &lhs, + const sbp_code_phase_biases_sat_sig_t &rhs) { + return sbp_code_phase_biases_sat_sig_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_SSR_CODEPHASEBIASESSATSIG_H */ diff --git a/c/include/libsbp/v4/ssr/MSG_SSR_CODE_PHASE_BIASES_BOUNDS.h b/c/include/libsbp/v4/ssr/MSG_SSR_CODE_PHASE_BIASES_BOUNDS.h new file mode 100644 index 0000000000..11173dc59d --- /dev/null +++ b/c/include/libsbp/v4/ssr/MSG_SSR_CODE_PHASE_BIASES_BOUNDS.h @@ -0,0 +1,209 @@ +/* + * 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/ssr.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_SSR_MSG_SSR_CODE_PHASE_BIASES_BOUNDS_H +#define LIBSBP_V4_SSR_MSG_SSR_CODE_PHASE_BIASES_BOUNDS_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS + * + *****************************************************************************/ +typedef struct { + /** + * Header of a bounds message. + */ + sbp_bounds_header_t header; + + /** + * IOD of the SSR bound. + */ + u8 ssr_iod; + + /** + * Constellation ID to which the SVs belong. + */ + u8 const_id; + + /** + * Number of satellite-signal couples. + */ + u8 n_sats_signals; + + /** + * Code and Phase Biases Bounds per Satellite-Signal couple. + */ + sbp_code_phase_biases_sat_sig_t satellites_signals + [SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS_SATELLITES_SIGNALS_MAX]; +} sbp_msg_ssr_code_phase_biases_bounds_t; + +/** + * Get encoded size of an instance of sbp_msg_ssr_code_phase_biases_bounds_t + * + * @param msg sbp_msg_ssr_code_phase_biases_bounds_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_ssr_code_phase_biases_bounds_encoded_len( + const sbp_msg_ssr_code_phase_biases_bounds_t *msg) { + return SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS_ENCODED_OVERHEAD + + (msg->n_sats_signals * SBP_CODE_PHASE_BIASES_SAT_SIG_ENCODED_LEN); +} + +/** + * Encode an instance of sbp_msg_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_ssr_code_phase_biases_bounds_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_code_phase_biases_bounds_t *msg); + +/** + * Decode an instance of sbp_msg_ssr_code_phase_biases_bounds_t from wire + * representation + * + * This function decodes the wire representation of a + * sbp_msg_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_code_phase_biases_bounds_t *msg); +/** + * Send an instance of sbp_msg_ssr_code_phase_biases_bounds_t with the given + * write function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_code_phase_biases_bounds_t *msg, sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_t instance + * @param b sbp_msg_ssr_code_phase_biases_bounds_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_ssr_code_phase_biases_bounds_cmp( + const sbp_msg_ssr_code_phase_biases_bounds_t *a, + const sbp_msg_ssr_code_phase_biases_bounds_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==( + const sbp_msg_ssr_code_phase_biases_bounds_t &lhs, + const sbp_msg_ssr_code_phase_biases_bounds_t &rhs) { + return sbp_msg_ssr_code_phase_biases_bounds_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=( + const sbp_msg_ssr_code_phase_biases_bounds_t &lhs, + const sbp_msg_ssr_code_phase_biases_bounds_t &rhs) { + return sbp_msg_ssr_code_phase_biases_bounds_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<( + const sbp_msg_ssr_code_phase_biases_bounds_t &lhs, + const sbp_msg_ssr_code_phase_biases_bounds_t &rhs) { + return sbp_msg_ssr_code_phase_biases_bounds_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=( + const sbp_msg_ssr_code_phase_biases_bounds_t &lhs, + const sbp_msg_ssr_code_phase_biases_bounds_t &rhs) { + return sbp_msg_ssr_code_phase_biases_bounds_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>( + const sbp_msg_ssr_code_phase_biases_bounds_t &lhs, + const sbp_msg_ssr_code_phase_biases_bounds_t &rhs) { + return sbp_msg_ssr_code_phase_biases_bounds_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=( + const sbp_msg_ssr_code_phase_biases_bounds_t &lhs, + const sbp_msg_ssr_code_phase_biases_bounds_t &rhs) { + return sbp_msg_ssr_code_phase_biases_bounds_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_SSR_MSG_SSR_CODE_PHASE_BIASES_BOUNDS_H */ diff --git a/c/src/include/libsbp/internal/v4/ssr.h b/c/src/include/libsbp/internal/v4/ssr.h index 1c95eab1a9..bbb33a112d 100644 --- a/c/src/include/libsbp/internal/v4/ssr.h +++ b/c/src/include/libsbp/internal/v4/ssr.h @@ -590,6 +590,46 @@ bool sbp_msg_ssr_orbit_clock_bounds_encode_internal( bool sbp_msg_ssr_orbit_clock_bounds_decode_internal( sbp_decode_ctx_t *ctx, sbp_msg_ssr_orbit_clock_bounds_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_code_phase_biases_sat_sig_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_code_phase_biases_sat_sig_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_code_phase_biases_sat_sig_decode_internal( + sbp_decode_ctx_t *ctx, sbp_code_phase_biases_sat_sig_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_ssr_code_phase_biases_bounds_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_code_phase_biases_bounds_t *msg); + #ifdef __cplusplus } #endif diff --git a/c/src/v4/ssr.c b/c/src/v4/ssr.c index a72f243635..84dfe1ae2f 100644 --- a/c/src/v4/ssr.c +++ b/c/src/v4/ssr.c @@ -3270,3 +3270,248 @@ int sbp_msg_ssr_orbit_clock_bounds_cmp( } return ret; } + +bool sbp_code_phase_biases_sat_sig_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_code_phase_biases_sat_sig_t *msg) { + if (!sbp_u8_encode(ctx, &msg->sat_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->signal_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->code_bias_bound_mu)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->code_bias_bound_sig)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->phase_bias_bound_mu)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->phase_bias_bound_sig)) { + return false; + } + return true; +} + +s8 sbp_code_phase_biases_sat_sig_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_code_phase_biases_sat_sig_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_code_phase_biases_sat_sig_encode_internal(&ctx, msg)) { + return SBP_ENCODE_ERROR; + } + if (n_written != NULL) { + *n_written = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +bool sbp_code_phase_biases_sat_sig_decode_internal( + sbp_decode_ctx_t *ctx, sbp_code_phase_biases_sat_sig_t *msg) { + if (!sbp_u8_decode(ctx, &msg->sat_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->signal_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->code_bias_bound_mu)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->code_bias_bound_sig)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->phase_bias_bound_mu)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->phase_bias_bound_sig)) { + return false; + } + return true; +} + +s8 sbp_code_phase_biases_sat_sig_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_code_phase_biases_sat_sig_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_code_phase_biases_sat_sig_decode_internal(&ctx, msg)) { + return SBP_DECODE_ERROR; + } + if (n_read != NULL) { + *n_read = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +int sbp_code_phase_biases_sat_sig_cmp( + const sbp_code_phase_biases_sat_sig_t *a, + const sbp_code_phase_biases_sat_sig_t *b) { + int ret = 0; + + ret = sbp_u8_cmp(&a->sat_id, &b->sat_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->signal_id, &b->signal_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->code_bias_bound_mu, &b->code_bias_bound_mu); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->code_bias_bound_sig, &b->code_bias_bound_sig); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->phase_bias_bound_mu, &b->phase_bias_bound_mu); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->phase_bias_bound_sig, &b->phase_bias_bound_sig); + if (ret != 0) { + return ret; + } + return ret; +} + +bool sbp_msg_ssr_code_phase_biases_bounds_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_code_phase_biases_bounds_t *msg) { + if (!sbp_bounds_header_encode_internal(ctx, &msg->header)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_iod)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->const_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->n_sats_signals)) { + return false; + } + for (size_t i = 0; i < msg->n_sats_signals; i++) { + if (!sbp_code_phase_biases_sat_sig_encode_internal( + ctx, &msg->satellites_signals[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_code_phase_biases_bounds_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_code_phase_biases_bounds_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_code_phase_biases_bounds_encode_internal(&ctx, msg)) { + return SBP_ENCODE_ERROR; + } + if (n_written != NULL) { + *n_written = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +bool sbp_msg_ssr_code_phase_biases_bounds_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_code_phase_biases_bounds_t *msg) { + if (!sbp_bounds_header_decode_internal(ctx, &msg->header)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_iod)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->const_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->n_sats_signals)) { + return false; + } + msg->n_sats_signals = (uint8_t)((ctx->buf_len - ctx->offset) / + SBP_CODE_PHASE_BIASES_SAT_SIG_ENCODED_LEN); + for (uint8_t i = 0; i < msg->n_sats_signals; i++) { + if (!sbp_code_phase_biases_sat_sig_decode_internal( + ctx, &msg->satellites_signals[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_code_phase_biases_bounds_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_code_phase_biases_bounds_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_code_phase_biases_bounds_decode_internal(&ctx, msg)) { + return SBP_DECODE_ERROR; + } + if (n_read != NULL) { + *n_read = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +s8 sbp_msg_ssr_code_phase_biases_bounds_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_code_phase_biases_bounds_t *msg, sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_ssr_code_phase_biases_bounds_encode(payload, sizeof(payload), + &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS, sender_id, + payload_len, payload, write); +} + +int sbp_msg_ssr_code_phase_biases_bounds_cmp( + const sbp_msg_ssr_code_phase_biases_bounds_t *a, + const sbp_msg_ssr_code_phase_biases_bounds_t *b) { + int ret = 0; + + ret = sbp_bounds_header_cmp(&a->header, &b->header); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_iod, &b->ssr_iod); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->const_id, &b->const_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_sats_signals, &b->n_sats_signals); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_sats_signals, &b->n_sats_signals); + for (uint8_t i = 0; ret == 0 && i < a->n_sats_signals; i++) { + ret = sbp_code_phase_biases_sat_sig_cmp(&a->satellites_signals[i], + &b->satellites_signals[i]); + } + if (ret != 0) { + return ret; + } + return ret; +} diff --git a/c/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c b/c/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c new file mode 100644 index 0000000000..0969be633c --- /dev/null +++ b/c/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c @@ -0,0 +1,425 @@ +/* + * 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/ssr/test_MsgSsrCodePhaseBiasesBounds.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_ssr_MsgSsrCodePhaseBiasesBounds) { + 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, 1516, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 236, 5, 66, 0, 31, 180, 0, 0, 0, 3, 0, 1, + 2, 1, 14, 15, 1, 3, 0, 3, 39, 1, 39, 1, 1, + 3, 39, 1, 39, 1, 1, 1, 39, 1, 39, 1, 23, 113, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.ssr_code_phase_biases_bounds.const_id = 1; + + test_msg.ssr_code_phase_biases_bounds.header.num_msgs = 1; + + test_msg.ssr_code_phase_biases_bounds.header.seq_num = 2; + + test_msg.ssr_code_phase_biases_bounds.header.sol_id = 14; + + test_msg.ssr_code_phase_biases_bounds.header.time.tow = 180; + + test_msg.ssr_code_phase_biases_bounds.header.time.wn = 3; + + test_msg.ssr_code_phase_biases_bounds.header.update_interval = 1; + + test_msg.ssr_code_phase_biases_bounds.n_sats_signals = 3; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .code_bias_bound_mu = 39; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .code_bias_bound_sig = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .phase_bias_bound_mu = 39; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .phase_bias_bound_sig = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[0].sat_id = 0; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[0].signal_id = 3; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .code_bias_bound_mu = 39; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .code_bias_bound_sig = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .phase_bias_bound_mu = 39; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .phase_bias_bound_sig = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[1].sat_id = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[1].signal_id = 3; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .code_bias_bound_mu = 39; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .code_bias_bound_sig = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .phase_bias_bound_mu = 39; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .phase_bias_bound_sig = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[2].sat_id = 1; + + test_msg.ssr_code_phase_biases_bounds.satellites_signals[2].signal_id = 1; + + test_msg.ssr_code_phase_biases_bounds.ssr_iod = 15; + + sbp_message_send(&sbp_state, SbpMsgSsrCodePhaseBiasesBounds, 66, &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 == 66, + "msg_callback: sender_id decoded incorrectly"); + + ck_assert_msg(sbp_message_cmp(SbpMsgSsrCodePhaseBiasesBounds, &last_msg.msg, + &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.const_id == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.const_id, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.const_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.header.num_msgs == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.header.num_msgs, expected " + "1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.header.num_msgs); + + ck_assert_msg(last_msg.msg.ssr_code_phase_biases_bounds.header.seq_num == 2, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.header.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.header.seq_num); + + ck_assert_msg(last_msg.msg.ssr_code_phase_biases_bounds.header.sol_id == 14, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.header.sol_id, " + "expected 14, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.header.sol_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.header.time.tow == 180, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.header.time.tow, expected " + "180, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.header.time.tow); + + ck_assert_msg(last_msg.msg.ssr_code_phase_biases_bounds.header.time.wn == 3, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.header.time.wn, " + "expected 3, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.header.time.wn); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.header.update_interval == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.header.update_interval, " + "expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.header.update_interval); + + ck_assert_msg(last_msg.msg.ssr_code_phase_biases_bounds.n_sats_signals == 3, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.n_sats_signals, " + "expected 3, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.n_sats_signals); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .code_bias_bound_mu == 39, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0].code_" + "bias_bound_mu, expected 39, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .code_bias_bound_mu); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .code_bias_bound_sig == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0].code_" + "bias_bound_sig, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .code_bias_bound_sig); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .phase_bias_bound_mu == 39, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0].phase_" + "bias_bound_mu, expected 39, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .phase_bias_bound_mu); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .phase_bias_bound_sig == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0].phase_" + "bias_bound_sig, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .phase_bias_bound_sig); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .sat_id == 0, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0].sat_" + "id, expected 0, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0].sat_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .signal_id == 3, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0]." + "signal_id, expected 3, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[0] + .signal_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .code_bias_bound_mu == 39, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1].code_" + "bias_bound_mu, expected 39, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .code_bias_bound_mu); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .code_bias_bound_sig == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1].code_" + "bias_bound_sig, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .code_bias_bound_sig); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .phase_bias_bound_mu == 39, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1].phase_" + "bias_bound_mu, expected 39, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .phase_bias_bound_mu); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .phase_bias_bound_sig == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1].phase_" + "bias_bound_sig, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .phase_bias_bound_sig); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .sat_id == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1].sat_" + "id, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1].sat_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .signal_id == 3, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1]." + "signal_id, expected 3, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[1] + .signal_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .code_bias_bound_mu == 39, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2].code_" + "bias_bound_mu, expected 39, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .code_bias_bound_mu); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .code_bias_bound_sig == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2].code_" + "bias_bound_sig, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .code_bias_bound_sig); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .phase_bias_bound_mu == 39, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2].phase_" + "bias_bound_mu, expected 39, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .phase_bias_bound_mu); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .phase_bias_bound_sig == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2].phase_" + "bias_bound_sig, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .phase_bias_bound_sig); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .sat_id == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2].sat_" + "id, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2].sat_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .signal_id == 1, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2]." + "signal_id, expected 1, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.satellites_signals[2] + .signal_id); + + ck_assert_msg( + last_msg.msg.ssr_code_phase_biases_bounds.ssr_iod == 15, + "incorrect value for " + "last_msg.msg.ssr_code_phase_biases_bounds.ssr_iod, expected 15, is %d", + last_msg.msg.ssr_code_phase_biases_bounds.ssr_iod); + } +} +END_TEST + +Suite *auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds"); + tcase_add_test(tc_acq, test_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/check_main.c b/c/test/check_main.c index 6d4eae5896..390c1e3a7a 100644 --- a/c/test/check_main.c +++ b/c/test/check_main.c @@ -100,6 +100,7 @@ int main(void) { auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite()); srunner_add_suite(sr, auto_check_sbp_settings_MsgSettingsReadByIndexResp_suite()); + srunner_add_suite(sr, auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds_suite()); srunner_add_suite(sr, auto_check_sbp_ssr_MsgSsrOrbitClockBounds_suite()); srunner_add_suite(sr, auto_check_sbp_system_MsgDgnssStatus_suite()); srunner_add_suite(sr, auto_check_sbp_system_MsgGroupMeta_suite()); diff --git a/c/test/check_main_legacy.c b/c/test/check_main_legacy.c index c24b3e81b3..3cd9d8c2b3 100644 --- a/c/test/check_main_legacy.c +++ b/c/test/check_main_legacy.c @@ -132,6 +132,8 @@ int main(void) { sr, legacy_auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite()); srunner_add_suite( sr, legacy_auto_check_sbp_settings_MsgSettingsReadByIndexResp_suite()); + srunner_add_suite( + sr, legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_ssr_MsgSsrOrbitClockBounds_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_system_MsgDgnssStatus_suite()); diff --git a/c/test/check_suites.h b/c/test/check_suites.h index 1fd91d9394..e815114efa 100644 --- a/c/test/check_suites.h +++ b/c/test/check_suites.h @@ -90,6 +90,7 @@ Suite* auto_check_sbp_piksi_MsgUartStateDepA_suite(void); Suite* auto_check_sbp_sbas_MsgSbasRaw_suite(void); Suite* auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite(void); Suite* auto_check_sbp_settings_MsgSettingsReadByIndexResp_suite(void); +Suite* auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds_suite(void); Suite* auto_check_sbp_ssr_MsgSsrOrbitClockBounds_suite(void); Suite* auto_check_sbp_system_MsgDgnssStatus_suite(void); Suite* auto_check_sbp_system_MsgGroupMeta_suite(void); diff --git a/c/test/check_suites_legacy.h b/c/test/check_suites_legacy.h index 1b1ad0bf10..0e7e1f0cdb 100644 --- a/c/test/check_suites_legacy.h +++ b/c/test/check_suites_legacy.h @@ -90,6 +90,7 @@ Suite* legacy_auto_check_sbp_piksi_MsgUartStateDepA_suite(void); Suite* legacy_auto_check_sbp_sbas_MsgSbasRaw_suite(void); Suite* legacy_auto_check_sbp_settings_MsgSettingsReadByIndexDone_suite(void); Suite* legacy_auto_check_sbp_settings_MsgSettingsReadByIndexResp_suite(void); +Suite* legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds_suite(void); Suite* legacy_auto_check_sbp_ssr_MsgSsrOrbitClockBounds_suite(void); Suite* legacy_auto_check_sbp_system_MsgDgnssStatus_suite(void); Suite* legacy_auto_check_sbp_system_MsgGroupMeta_suite(void); diff --git a/c/test/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc b/c/test/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc new file mode 100644 index 0000000000..0547f18f26 --- /dev/null +++ b/c/test/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc @@ -0,0 +1,227 @@ +/* + * 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/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds0() + : ::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_ssr_code_phase_biases_bounds_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_ssr_code_phase_biases_bounds_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_ssr_MsgSsrCodePhaseBiasesBounds0, Test) { + uint8_t encoded_frame[] = { + 85, 236, 5, 66, 0, 31, 180, 0, 0, 0, 3, 0, 1, 2, 1, 14, 15, 1, 3, 0, + 3, 39, 1, 39, 1, 1, 3, 39, 1, 39, 1, 1, 1, 39, 1, 39, 1, 23, 113, + }; + + sbp_msg_ssr_code_phase_biases_bounds_t test_msg{}; + test_msg.const_id = 1; + test_msg.header.num_msgs = 1; + test_msg.header.seq_num = 2; + test_msg.header.sol_id = 14; + test_msg.header.time.tow = 180; + test_msg.header.time.wn = 3; + test_msg.header.update_interval = 1; + test_msg.n_sats_signals = 3; + + test_msg.satellites_signals[0].code_bias_bound_mu = 39; + test_msg.satellites_signals[0].code_bias_bound_sig = 1; + test_msg.satellites_signals[0].phase_bias_bound_mu = 39; + test_msg.satellites_signals[0].phase_bias_bound_sig = 1; + test_msg.satellites_signals[0].sat_id = 0; + test_msg.satellites_signals[0].signal_id = 3; + + test_msg.satellites_signals[1].code_bias_bound_mu = 39; + test_msg.satellites_signals[1].code_bias_bound_sig = 1; + test_msg.satellites_signals[1].phase_bias_bound_mu = 39; + test_msg.satellites_signals[1].phase_bias_bound_sig = 1; + test_msg.satellites_signals[1].sat_id = 1; + test_msg.satellites_signals[1].signal_id = 3; + + test_msg.satellites_signals[2].code_bias_bound_mu = 39; + test_msg.satellites_signals[2].code_bias_bound_sig = 1; + test_msg.satellites_signals[2].phase_bias_bound_mu = 39; + test_msg.satellites_signals[2].phase_bias_bound_sig = 1; + test_msg.satellites_signals[2].sat_id = 1; + test_msg.satellites_signals[2].signal_id = 1; + test_msg.ssr_iod = 15; + + EXPECT_EQ(send_message(66, 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_, 66); + EXPECT_EQ(last_msg_, test_msg); + EXPECT_EQ(last_msg_.const_id, 1) + << "incorrect value for last_msg_.const_id, expected 1, is " + << last_msg_.const_id; + EXPECT_EQ(last_msg_.header.num_msgs, 1) + << "incorrect value for last_msg_.header.num_msgs, expected 1, is " + << last_msg_.header.num_msgs; + EXPECT_EQ(last_msg_.header.seq_num, 2) + << "incorrect value for last_msg_.header.seq_num, expected 2, is " + << last_msg_.header.seq_num; + EXPECT_EQ(last_msg_.header.sol_id, 14) + << "incorrect value for last_msg_.header.sol_id, expected 14, is " + << last_msg_.header.sol_id; + EXPECT_EQ(last_msg_.header.time.tow, 180) + << "incorrect value for last_msg_.header.time.tow, expected 180, is " + << last_msg_.header.time.tow; + EXPECT_EQ(last_msg_.header.time.wn, 3) + << "incorrect value for last_msg_.header.time.wn, expected 3, is " + << last_msg_.header.time.wn; + EXPECT_EQ(last_msg_.header.update_interval, 1) + << "incorrect value for last_msg_.header.update_interval, expected 1, is " + << last_msg_.header.update_interval; + EXPECT_EQ(last_msg_.n_sats_signals, 3) + << "incorrect value for last_msg_.n_sats_signals, expected 3, is " + << last_msg_.n_sats_signals; + EXPECT_EQ(last_msg_.satellites_signals[0].code_bias_bound_mu, 39) + << "incorrect value for " + "last_msg_.satellites_signals[0].code_bias_bound_mu, expected 39, is " + << last_msg_.satellites_signals[0].code_bias_bound_mu; + EXPECT_EQ(last_msg_.satellites_signals[0].code_bias_bound_sig, 1) + << "incorrect value for " + "last_msg_.satellites_signals[0].code_bias_bound_sig, expected 1, is " + << last_msg_.satellites_signals[0].code_bias_bound_sig; + EXPECT_EQ(last_msg_.satellites_signals[0].phase_bias_bound_mu, 39) + << "incorrect value for " + "last_msg_.satellites_signals[0].phase_bias_bound_mu, expected 39, is " + << last_msg_.satellites_signals[0].phase_bias_bound_mu; + EXPECT_EQ(last_msg_.satellites_signals[0].phase_bias_bound_sig, 1) + << "incorrect value for " + "last_msg_.satellites_signals[0].phase_bias_bound_sig, expected 1, is " + << last_msg_.satellites_signals[0].phase_bias_bound_sig; + EXPECT_EQ(last_msg_.satellites_signals[0].sat_id, 0) + << "incorrect value for last_msg_.satellites_signals[0].sat_id, expected " + "0, is " + << last_msg_.satellites_signals[0].sat_id; + EXPECT_EQ(last_msg_.satellites_signals[0].signal_id, 3) + << "incorrect value for last_msg_.satellites_signals[0].signal_id, " + "expected 3, is " + << last_msg_.satellites_signals[0].signal_id; + EXPECT_EQ(last_msg_.satellites_signals[1].code_bias_bound_mu, 39) + << "incorrect value for " + "last_msg_.satellites_signals[1].code_bias_bound_mu, expected 39, is " + << last_msg_.satellites_signals[1].code_bias_bound_mu; + EXPECT_EQ(last_msg_.satellites_signals[1].code_bias_bound_sig, 1) + << "incorrect value for " + "last_msg_.satellites_signals[1].code_bias_bound_sig, expected 1, is " + << last_msg_.satellites_signals[1].code_bias_bound_sig; + EXPECT_EQ(last_msg_.satellites_signals[1].phase_bias_bound_mu, 39) + << "incorrect value for " + "last_msg_.satellites_signals[1].phase_bias_bound_mu, expected 39, is " + << last_msg_.satellites_signals[1].phase_bias_bound_mu; + EXPECT_EQ(last_msg_.satellites_signals[1].phase_bias_bound_sig, 1) + << "incorrect value for " + "last_msg_.satellites_signals[1].phase_bias_bound_sig, expected 1, is " + << last_msg_.satellites_signals[1].phase_bias_bound_sig; + EXPECT_EQ(last_msg_.satellites_signals[1].sat_id, 1) + << "incorrect value for last_msg_.satellites_signals[1].sat_id, expected " + "1, is " + << last_msg_.satellites_signals[1].sat_id; + EXPECT_EQ(last_msg_.satellites_signals[1].signal_id, 3) + << "incorrect value for last_msg_.satellites_signals[1].signal_id, " + "expected 3, is " + << last_msg_.satellites_signals[1].signal_id; + EXPECT_EQ(last_msg_.satellites_signals[2].code_bias_bound_mu, 39) + << "incorrect value for " + "last_msg_.satellites_signals[2].code_bias_bound_mu, expected 39, is " + << last_msg_.satellites_signals[2].code_bias_bound_mu; + EXPECT_EQ(last_msg_.satellites_signals[2].code_bias_bound_sig, 1) + << "incorrect value for " + "last_msg_.satellites_signals[2].code_bias_bound_sig, expected 1, is " + << last_msg_.satellites_signals[2].code_bias_bound_sig; + EXPECT_EQ(last_msg_.satellites_signals[2].phase_bias_bound_mu, 39) + << "incorrect value for " + "last_msg_.satellites_signals[2].phase_bias_bound_mu, expected 39, is " + << last_msg_.satellites_signals[2].phase_bias_bound_mu; + EXPECT_EQ(last_msg_.satellites_signals[2].phase_bias_bound_sig, 1) + << "incorrect value for " + "last_msg_.satellites_signals[2].phase_bias_bound_sig, expected 1, is " + << last_msg_.satellites_signals[2].phase_bias_bound_sig; + EXPECT_EQ(last_msg_.satellites_signals[2].sat_id, 1) + << "incorrect value for last_msg_.satellites_signals[2].sat_id, expected " + "1, is " + << last_msg_.satellites_signals[2].sat_id; + EXPECT_EQ(last_msg_.satellites_signals[2].signal_id, 1) + << "incorrect value for last_msg_.satellites_signals[2].signal_id, " + "expected 1, is " + << last_msg_.satellites_signals[2].signal_id; + EXPECT_EQ(last_msg_.ssr_iod, 15) + << "incorrect value for last_msg_.ssr_iod, expected 15, is " + << last_msg_.ssr_iod; +} diff --git a/c/test/legacy/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c b/c/test/legacy/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c new file mode 100644 index 0000000000..33dcdec313 --- /dev/null +++ b/c/test/legacy/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.c @@ -0,0 +1,358 @@ +/* + * 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/ssr/test_MsgSsrCodePhaseBiasesBounds.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_ssr_MsgSsrCodePhaseBiasesBounds) { + 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, 1516, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 1516, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 236, 5, 66, 0, 31, 180, 0, 0, 0, 3, 0, 1, + 2, 1, 14, 15, 1, 3, 0, 3, 39, 1, 39, 1, 1, + 3, 39, 1, 39, 1, 1, 1, 39, 1, 39, 1, 23, 113, + }; + + 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_ssr_code_phase_biases_bounds_t *test_msg = + (msg_ssr_code_phase_biases_bounds_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + test_msg->const_id = 1; + test_msg->header.num_msgs = 1; + test_msg->header.seq_num = 2; + test_msg->header.sol_id = 14; + test_msg->header.time.tow = 180; + test_msg->header.time.wn = 3; + test_msg->header.update_interval = 1; + test_msg->n_sats_signals = 3; + if (sizeof(test_msg->satellites_signals) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->satellites_signals[0]); + } + test_msg->satellites_signals[0].code_bias_bound_mu = 39; + test_msg->satellites_signals[0].code_bias_bound_sig = 1; + test_msg->satellites_signals[0].phase_bias_bound_mu = 39; + test_msg->satellites_signals[0].phase_bias_bound_sig = 1; + test_msg->satellites_signals[0].sat_id = 0; + test_msg->satellites_signals[0].signal_id = 3; + if (sizeof(test_msg->satellites_signals) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->satellites_signals[0]); + } + test_msg->satellites_signals[1].code_bias_bound_mu = 39; + test_msg->satellites_signals[1].code_bias_bound_sig = 1; + test_msg->satellites_signals[1].phase_bias_bound_mu = 39; + test_msg->satellites_signals[1].phase_bias_bound_sig = 1; + test_msg->satellites_signals[1].sat_id = 1; + test_msg->satellites_signals[1].signal_id = 3; + if (sizeof(test_msg->satellites_signals) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->satellites_signals[0]); + } + test_msg->satellites_signals[2].code_bias_bound_mu = 39; + test_msg->satellites_signals[2].code_bias_bound_sig = 1; + test_msg->satellites_signals[2].phase_bias_bound_mu = 39; + test_msg->satellites_signals[2].phase_bias_bound_sig = 1; + test_msg->satellites_signals[2].sat_id = 1; + test_msg->satellites_signals[2].signal_id = 1; + test_msg->ssr_iod = 15; + sbp_payload_send(&sbp_state, 1516, 66, 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 == 66, + "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 == 66, + "frame_callback: sender_id decoded incorrectly"); + ck_assert_msg(last_frame.msg_type == 1516, + "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_ssr_code_phase_biases_bounds_t *check_msg = + (msg_ssr_code_phase_biases_bounds_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->const_id == 1, + "incorrect value for const_id, expected 1, is %d", + check_msg->const_id); + ck_assert_msg(check_msg->header.num_msgs == 1, + "incorrect value for header.num_msgs, expected 1, is %d", + check_msg->header.num_msgs); + ck_assert_msg(check_msg->header.seq_num == 2, + "incorrect value for header.seq_num, expected 2, is %d", + check_msg->header.seq_num); + ck_assert_msg(check_msg->header.sol_id == 14, + "incorrect value for header.sol_id, expected 14, is %d", + check_msg->header.sol_id); + ck_assert_msg(check_msg->header.time.tow == 180, + "incorrect value for header.time.tow, expected 180, is %d", + check_msg->header.time.tow); + ck_assert_msg(check_msg->header.time.wn == 3, + "incorrect value for header.time.wn, expected 3, is %d", + check_msg->header.time.wn); + ck_assert_msg( + check_msg->header.update_interval == 1, + "incorrect value for header.update_interval, expected 1, is %d", + check_msg->header.update_interval); + ck_assert_msg(check_msg->n_sats_signals == 3, + "incorrect value for n_sats_signals, expected 3, is %d", + check_msg->n_sats_signals); + ck_assert_msg( + check_msg->satellites_signals[0].code_bias_bound_mu == 39, + "incorrect value for satellites_signals[0].code_bias_bound_mu, " + "expected 39, is %d", + check_msg->satellites_signals[0].code_bias_bound_mu); + ck_assert_msg( + check_msg->satellites_signals[0].code_bias_bound_sig == 1, + "incorrect value for satellites_signals[0].code_bias_bound_sig, " + "expected 1, is %d", + check_msg->satellites_signals[0].code_bias_bound_sig); + ck_assert_msg( + check_msg->satellites_signals[0].phase_bias_bound_mu == 39, + "incorrect value for satellites_signals[0].phase_bias_bound_mu, " + "expected 39, is %d", + check_msg->satellites_signals[0].phase_bias_bound_mu); + ck_assert_msg( + check_msg->satellites_signals[0].phase_bias_bound_sig == 1, + "incorrect value for satellites_signals[0].phase_bias_bound_sig, " + "expected 1, is %d", + check_msg->satellites_signals[0].phase_bias_bound_sig); + ck_assert_msg( + check_msg->satellites_signals[0].sat_id == 0, + "incorrect value for satellites_signals[0].sat_id, expected 0, is %d", + check_msg->satellites_signals[0].sat_id); + ck_assert_msg(check_msg->satellites_signals[0].signal_id == 3, + "incorrect value for satellites_signals[0].signal_id, " + "expected 3, is %d", + check_msg->satellites_signals[0].signal_id); + ck_assert_msg( + check_msg->satellites_signals[1].code_bias_bound_mu == 39, + "incorrect value for satellites_signals[1].code_bias_bound_mu, " + "expected 39, is %d", + check_msg->satellites_signals[1].code_bias_bound_mu); + ck_assert_msg( + check_msg->satellites_signals[1].code_bias_bound_sig == 1, + "incorrect value for satellites_signals[1].code_bias_bound_sig, " + "expected 1, is %d", + check_msg->satellites_signals[1].code_bias_bound_sig); + ck_assert_msg( + check_msg->satellites_signals[1].phase_bias_bound_mu == 39, + "incorrect value for satellites_signals[1].phase_bias_bound_mu, " + "expected 39, is %d", + check_msg->satellites_signals[1].phase_bias_bound_mu); + ck_assert_msg( + check_msg->satellites_signals[1].phase_bias_bound_sig == 1, + "incorrect value for satellites_signals[1].phase_bias_bound_sig, " + "expected 1, is %d", + check_msg->satellites_signals[1].phase_bias_bound_sig); + ck_assert_msg( + check_msg->satellites_signals[1].sat_id == 1, + "incorrect value for satellites_signals[1].sat_id, expected 1, is %d", + check_msg->satellites_signals[1].sat_id); + ck_assert_msg(check_msg->satellites_signals[1].signal_id == 3, + "incorrect value for satellites_signals[1].signal_id, " + "expected 3, is %d", + check_msg->satellites_signals[1].signal_id); + ck_assert_msg( + check_msg->satellites_signals[2].code_bias_bound_mu == 39, + "incorrect value for satellites_signals[2].code_bias_bound_mu, " + "expected 39, is %d", + check_msg->satellites_signals[2].code_bias_bound_mu); + ck_assert_msg( + check_msg->satellites_signals[2].code_bias_bound_sig == 1, + "incorrect value for satellites_signals[2].code_bias_bound_sig, " + "expected 1, is %d", + check_msg->satellites_signals[2].code_bias_bound_sig); + ck_assert_msg( + check_msg->satellites_signals[2].phase_bias_bound_mu == 39, + "incorrect value for satellites_signals[2].phase_bias_bound_mu, " + "expected 39, is %d", + check_msg->satellites_signals[2].phase_bias_bound_mu); + ck_assert_msg( + check_msg->satellites_signals[2].phase_bias_bound_sig == 1, + "incorrect value for satellites_signals[2].phase_bias_bound_sig, " + "expected 1, is %d", + check_msg->satellites_signals[2].phase_bias_bound_sig); + ck_assert_msg( + check_msg->satellites_signals[2].sat_id == 1, + "incorrect value for satellites_signals[2].sat_id, expected 1, is %d", + check_msg->satellites_signals[2].sat_id); + ck_assert_msg(check_msg->satellites_signals[2].signal_id == 1, + "incorrect value for satellites_signals[2].signal_id, " + "expected 1, is %d", + check_msg->satellites_signals[2].signal_id); + ck_assert_msg(check_msg->ssr_iod == 15, + "incorrect value for ssr_iod, expected 15, is %d", + check_msg->ssr_iod); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds"); + tcase_add_test(tc_acq, + test_legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc b/c/test/legacy/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc new file mode 100644 index 0000000000..8a78dc6d5c --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds.cc @@ -0,0 +1,237 @@ +/* + * 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/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBounds0() + : ::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_ssr_code_phase_biases_bounds_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_ssr_code_phase_biases_bounds_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_ssr_MsgSsrCodePhaseBiasesBounds0, Test) { + uint8_t encoded_frame[] = { + 85, 236, 5, 66, 0, 31, 180, 0, 0, 0, 3, 0, 1, 2, 1, 14, 15, 1, 3, 0, + 3, 39, 1, 39, 1, 1, 3, 39, 1, 39, 1, 1, 1, 39, 1, 39, 1, 23, 113, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_ssr_code_phase_biases_bounds_t *test_msg = + (msg_ssr_code_phase_biases_bounds_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + test_msg->const_id = 1; + test_msg->header.num_msgs = 1; + test_msg->header.seq_num = 2; + test_msg->header.sol_id = 14; + test_msg->header.time.tow = 180; + test_msg->header.time.wn = 3; + test_msg->header.update_interval = 1; + test_msg->n_sats_signals = 3; + if (sizeof(test_msg->satellites_signals) == 0) { + // Cope with variable length arrays + test_msg_len = + (uint8_t)(test_msg_len + sizeof(test_msg->satellites_signals[0])); + } + test_msg->satellites_signals[0].code_bias_bound_mu = 39; + test_msg->satellites_signals[0].code_bias_bound_sig = 1; + test_msg->satellites_signals[0].phase_bias_bound_mu = 39; + test_msg->satellites_signals[0].phase_bias_bound_sig = 1; + test_msg->satellites_signals[0].sat_id = 0; + test_msg->satellites_signals[0].signal_id = 3; + if (sizeof(test_msg->satellites_signals) == 0) { + // Cope with variable length arrays + test_msg_len = + (uint8_t)(test_msg_len + sizeof(test_msg->satellites_signals[0])); + } + test_msg->satellites_signals[1].code_bias_bound_mu = 39; + test_msg->satellites_signals[1].code_bias_bound_sig = 1; + test_msg->satellites_signals[1].phase_bias_bound_mu = 39; + test_msg->satellites_signals[1].phase_bias_bound_sig = 1; + test_msg->satellites_signals[1].sat_id = 1; + test_msg->satellites_signals[1].signal_id = 3; + if (sizeof(test_msg->satellites_signals) == 0) { + // Cope with variable length arrays + test_msg_len = + (uint8_t)(test_msg_len + sizeof(test_msg->satellites_signals[0])); + } + test_msg->satellites_signals[2].code_bias_bound_mu = 39; + test_msg->satellites_signals[2].code_bias_bound_sig = 1; + test_msg->satellites_signals[2].phase_bias_bound_mu = 39; + test_msg->satellites_signals[2].phase_bias_bound_sig = 1; + test_msg->satellites_signals[2].sat_id = 1; + test_msg->satellites_signals[2].signal_id = 1; + test_msg->ssr_iod = 15; + + EXPECT_EQ(send_message(1516, 66, 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_, 66); + EXPECT_EQ(last_msg_len_, test_msg_len); + EXPECT_EQ(last_msg_->const_id, 1) + << "incorrect value for const_id, expected 1, is " << last_msg_->const_id; + EXPECT_EQ(last_msg_->header.num_msgs, 1) + << "incorrect value for header.num_msgs, expected 1, is " + << last_msg_->header.num_msgs; + EXPECT_EQ(last_msg_->header.seq_num, 2) + << "incorrect value for header.seq_num, expected 2, is " + << last_msg_->header.seq_num; + EXPECT_EQ(last_msg_->header.sol_id, 14) + << "incorrect value for header.sol_id, expected 14, is " + << last_msg_->header.sol_id; + EXPECT_EQ(last_msg_->header.time.tow, 180) + << "incorrect value for header.time.tow, expected 180, is " + << last_msg_->header.time.tow; + EXPECT_EQ(last_msg_->header.time.wn, 3) + << "incorrect value for header.time.wn, expected 3, is " + << last_msg_->header.time.wn; + EXPECT_EQ(last_msg_->header.update_interval, 1) + << "incorrect value for header.update_interval, expected 1, is " + << last_msg_->header.update_interval; + EXPECT_EQ(last_msg_->n_sats_signals, 3) + << "incorrect value for n_sats_signals, expected 3, is " + << last_msg_->n_sats_signals; + EXPECT_EQ(last_msg_->satellites_signals[0].code_bias_bound_mu, 39) + << "incorrect value for satellites_signals[0].code_bias_bound_mu, " + "expected 39, is " + << last_msg_->satellites_signals[0].code_bias_bound_mu; + EXPECT_EQ(last_msg_->satellites_signals[0].code_bias_bound_sig, 1) + << "incorrect value for satellites_signals[0].code_bias_bound_sig, " + "expected 1, is " + << last_msg_->satellites_signals[0].code_bias_bound_sig; + EXPECT_EQ(last_msg_->satellites_signals[0].phase_bias_bound_mu, 39) + << "incorrect value for satellites_signals[0].phase_bias_bound_mu, " + "expected 39, is " + << last_msg_->satellites_signals[0].phase_bias_bound_mu; + EXPECT_EQ(last_msg_->satellites_signals[0].phase_bias_bound_sig, 1) + << "incorrect value for satellites_signals[0].phase_bias_bound_sig, " + "expected 1, is " + << last_msg_->satellites_signals[0].phase_bias_bound_sig; + EXPECT_EQ(last_msg_->satellites_signals[0].sat_id, 0) + << "incorrect value for satellites_signals[0].sat_id, expected 0, is " + << last_msg_->satellites_signals[0].sat_id; + EXPECT_EQ(last_msg_->satellites_signals[0].signal_id, 3) + << "incorrect value for satellites_signals[0].signal_id, expected 3, is " + << last_msg_->satellites_signals[0].signal_id; + EXPECT_EQ(last_msg_->satellites_signals[1].code_bias_bound_mu, 39) + << "incorrect value for satellites_signals[1].code_bias_bound_mu, " + "expected 39, is " + << last_msg_->satellites_signals[1].code_bias_bound_mu; + EXPECT_EQ(last_msg_->satellites_signals[1].code_bias_bound_sig, 1) + << "incorrect value for satellites_signals[1].code_bias_bound_sig, " + "expected 1, is " + << last_msg_->satellites_signals[1].code_bias_bound_sig; + EXPECT_EQ(last_msg_->satellites_signals[1].phase_bias_bound_mu, 39) + << "incorrect value for satellites_signals[1].phase_bias_bound_mu, " + "expected 39, is " + << last_msg_->satellites_signals[1].phase_bias_bound_mu; + EXPECT_EQ(last_msg_->satellites_signals[1].phase_bias_bound_sig, 1) + << "incorrect value for satellites_signals[1].phase_bias_bound_sig, " + "expected 1, is " + << last_msg_->satellites_signals[1].phase_bias_bound_sig; + EXPECT_EQ(last_msg_->satellites_signals[1].sat_id, 1) + << "incorrect value for satellites_signals[1].sat_id, expected 1, is " + << last_msg_->satellites_signals[1].sat_id; + EXPECT_EQ(last_msg_->satellites_signals[1].signal_id, 3) + << "incorrect value for satellites_signals[1].signal_id, expected 3, is " + << last_msg_->satellites_signals[1].signal_id; + EXPECT_EQ(last_msg_->satellites_signals[2].code_bias_bound_mu, 39) + << "incorrect value for satellites_signals[2].code_bias_bound_mu, " + "expected 39, is " + << last_msg_->satellites_signals[2].code_bias_bound_mu; + EXPECT_EQ(last_msg_->satellites_signals[2].code_bias_bound_sig, 1) + << "incorrect value for satellites_signals[2].code_bias_bound_sig, " + "expected 1, is " + << last_msg_->satellites_signals[2].code_bias_bound_sig; + EXPECT_EQ(last_msg_->satellites_signals[2].phase_bias_bound_mu, 39) + << "incorrect value for satellites_signals[2].phase_bias_bound_mu, " + "expected 39, is " + << last_msg_->satellites_signals[2].phase_bias_bound_mu; + EXPECT_EQ(last_msg_->satellites_signals[2].phase_bias_bound_sig, 1) + << "incorrect value for satellites_signals[2].phase_bias_bound_sig, " + "expected 1, is " + << last_msg_->satellites_signals[2].phase_bias_bound_sig; + EXPECT_EQ(last_msg_->satellites_signals[2].sat_id, 1) + << "incorrect value for satellites_signals[2].sat_id, expected 1, is " + << last_msg_->satellites_signals[2].sat_id; + EXPECT_EQ(last_msg_->satellites_signals[2].signal_id, 1) + << "incorrect value for satellites_signals[2].signal_id, expected 1, is " + << last_msg_->satellites_signals[2].signal_id; + EXPECT_EQ(last_msg_->ssr_iod, 15) + << "incorrect value for ssr_iod, expected 15, is " << last_msg_->ssr_iod; +} diff --git a/docs/sbp.pdf b/docs/sbp.pdf index ac5152fd0d0b8e009c8f393ce2afd0bea0dd2ac4..b84bf78676b72429e7553ad04c38168aa6134ecd 100644 GIT binary patch delta 86038 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 O3N<(~3MC~)Peuv{E$#{c delta 86328 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%0DH*7 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 VTIZLwAqO7{HZ?E`B_%~qMha`oT6X{d diff --git a/haskell/src/SwiftNav/SBP/Msg.hs b/haskell/src/SwiftNav/SBP/Msg.hs index 643a411350..6cd8d9fc6a 100644 --- a/haskell/src/SwiftNav/SBP/Msg.hs +++ b/haskell/src/SwiftNav/SBP/Msg.hs @@ -213,6 +213,7 @@ data SBPMsg = | SBPMsgSpecan MsgSpecan Msg | SBPMsgSpecanDep MsgSpecanDep Msg | SBPMsgSsrCodeBiases MsgSsrCodeBiases Msg + | SBPMsgSsrCodePhaseBiasesBounds MsgSsrCodePhaseBiasesBounds Msg | SBPMsgSsrGridDefinitionDepA MsgSsrGridDefinitionDepA Msg | SBPMsgSsrGriddedCorrection MsgSsrGriddedCorrection Msg | SBPMsgSsrGriddedCorrectionDepA MsgSsrGriddedCorrectionDepA Msg @@ -432,6 +433,7 @@ instance Binary SBPMsg where | _msgSBPType == msgSpecan = SBPMsgSpecan (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSpecanDep = SBPMsgSpecanDep (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrCodeBiases = SBPMsgSsrCodeBiases (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrCodePhaseBiasesBounds = SBPMsgSsrCodePhaseBiasesBounds (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrGridDefinitionDepA = SBPMsgSsrGridDefinitionDepA (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrGriddedCorrection = SBPMsgSsrGriddedCorrection (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrGriddedCorrectionDepA = SBPMsgSsrGriddedCorrectionDepA (decode (fromStrict (unBytes _msgSBPPayload))) m @@ -643,6 +645,7 @@ instance Binary SBPMsg where encoder (SBPMsgSpecan _ m) = put m encoder (SBPMsgSpecanDep _ m) = put m encoder (SBPMsgSsrCodeBiases _ m) = put m + encoder (SBPMsgSsrCodePhaseBiasesBounds _ m) = put m encoder (SBPMsgSsrGridDefinitionDepA _ m) = put m encoder (SBPMsgSsrGriddedCorrection _ m) = put m encoder (SBPMsgSsrGriddedCorrectionDepA _ m) = put m @@ -858,6 +861,7 @@ instance FromJSON SBPMsg where | msgType == msgSpecan = SBPMsgSpecan <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSpecanDep = SBPMsgSpecanDep <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrCodeBiases = SBPMsgSsrCodeBiases <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrCodePhaseBiasesBounds = SBPMsgSsrCodePhaseBiasesBounds <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrGridDefinitionDepA = SBPMsgSsrGridDefinitionDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrGriddedCorrection = SBPMsgSsrGriddedCorrection <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj | msgType == msgSsrGriddedCorrectionDepA = SBPMsgSsrGriddedCorrectionDepA <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj @@ -1074,6 +1078,7 @@ instance ToJSON SBPMsg where toJSON (SBPMsgSpecan n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSpecanDep n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrCodeBiases n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrCodePhaseBiasesBounds n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrGridDefinitionDepA n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrGriddedCorrection n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrGriddedCorrectionDepA n m) = toJSON n <<>> toJSON m @@ -1284,6 +1289,7 @@ instance HasMsg SBPMsg where msg f (SBPMsgSpecan n m) = SBPMsgSpecan n <$> f m msg f (SBPMsgSpecanDep n m) = SBPMsgSpecanDep n <$> f m msg f (SBPMsgSsrCodeBiases n m) = SBPMsgSsrCodeBiases n <$> f m + msg f (SBPMsgSsrCodePhaseBiasesBounds n m) = SBPMsgSsrCodePhaseBiasesBounds n <$> f m msg f (SBPMsgSsrGridDefinitionDepA n m) = SBPMsgSsrGridDefinitionDepA n <$> f m msg f (SBPMsgSsrGriddedCorrection n m) = SBPMsgSsrGriddedCorrection n <$> f m msg f (SBPMsgSsrGriddedCorrectionDepA n m) = SBPMsgSsrGriddedCorrectionDepA n <$> f m diff --git a/haskell/src/SwiftNav/SBP/Ssr.hs b/haskell/src/SwiftNav/SBP/Ssr.hs index 34e387a9f9..4ee440b5b9 100644 --- a/haskell/src/SwiftNav/SBP/Ssr.hs +++ b/haskell/src/SwiftNav/SBP/Ssr.hs @@ -1171,3 +1171,77 @@ instance Binary MsgSsrOrbitClockBounds where $(makeSBP 'msgSsrOrbitClockBounds ''MsgSsrOrbitClockBounds) $(makeJSON "_msgSsrOrbitClockBounds_" ''MsgSsrOrbitClockBounds) $(makeLenses ''MsgSsrOrbitClockBounds) + +data CodePhaseBiasesSatSig = CodePhaseBiasesSatSig + { _codePhaseBiasesSatSig_sat_id :: !Word8 + -- ^ Satellite ID. Similar to either RTCM DF068 (GPS), DF252 (Galileo), or + -- DF488 (BDS) depending on the constellation. + , _codePhaseBiasesSatSig_signal_id :: !Word8 + -- ^ Signal and Tracking Mode Identifier. Similar to either RTCM DF380 + -- (GPS), DF382 (Galileo) or DF467 (BDS) depending on the constellation. + , _codePhaseBiasesSatSig_code_bias_bound_mu :: !Word8 + -- ^ Code Bias Mean (range 0-1.275) + , _codePhaseBiasesSatSig_code_bias_bound_sig :: !Word8 + -- ^ Code Bias Standard Deviation (range 0-1.275) + , _codePhaseBiasesSatSig_phase_bias_bound_mu :: !Word8 + -- ^ Phase Bias Mean (range 0-1.275) + , _codePhaseBiasesSatSig_phase_bias_bound_sig :: !Word8 + -- ^ Phase Bias Standard Deviation (range 0-1.275) + } deriving ( Show, Read, Eq ) + +instance Binary CodePhaseBiasesSatSig where + get = do + _codePhaseBiasesSatSig_sat_id <- getWord8 + _codePhaseBiasesSatSig_signal_id <- getWord8 + _codePhaseBiasesSatSig_code_bias_bound_mu <- getWord8 + _codePhaseBiasesSatSig_code_bias_bound_sig <- getWord8 + _codePhaseBiasesSatSig_phase_bias_bound_mu <- getWord8 + _codePhaseBiasesSatSig_phase_bias_bound_sig <- getWord8 + pure CodePhaseBiasesSatSig {..} + + put CodePhaseBiasesSatSig {..} = do + putWord8 _codePhaseBiasesSatSig_sat_id + putWord8 _codePhaseBiasesSatSig_signal_id + putWord8 _codePhaseBiasesSatSig_code_bias_bound_mu + putWord8 _codePhaseBiasesSatSig_code_bias_bound_sig + putWord8 _codePhaseBiasesSatSig_phase_bias_bound_mu + putWord8 _codePhaseBiasesSatSig_phase_bias_bound_sig + +$(makeJSON "_codePhaseBiasesSatSig_" ''CodePhaseBiasesSatSig) +$(makeLenses ''CodePhaseBiasesSatSig) + +msgSsrCodePhaseBiasesBounds :: Word16 +msgSsrCodePhaseBiasesBounds = 0x05EC + +data MsgSsrCodePhaseBiasesBounds = MsgSsrCodePhaseBiasesBounds + { _msgSsrCodePhaseBiasesBounds_header :: !BoundsHeader + -- ^ Header of a bounds message. + , _msgSsrCodePhaseBiasesBounds_ssr_iod :: !Word8 + -- ^ IOD of the SSR bound. + , _msgSsrCodePhaseBiasesBounds_const_id :: !Word8 + -- ^ Constellation ID to which the SVs belong. + , _msgSsrCodePhaseBiasesBounds_n_sats_signals :: !Word8 + -- ^ Number of satellite-signal couples. + , _msgSsrCodePhaseBiasesBounds_satellites_signals :: ![CodePhaseBiasesSatSig] + -- ^ Code and Phase Biases Bounds per Satellite-Signal couple. + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrCodePhaseBiasesBounds where + get = do + _msgSsrCodePhaseBiasesBounds_header <- get + _msgSsrCodePhaseBiasesBounds_ssr_iod <- getWord8 + _msgSsrCodePhaseBiasesBounds_const_id <- getWord8 + _msgSsrCodePhaseBiasesBounds_n_sats_signals <- getWord8 + _msgSsrCodePhaseBiasesBounds_satellites_signals <- whileM (not <$> isEmpty) get + pure MsgSsrCodePhaseBiasesBounds {..} + + put MsgSsrCodePhaseBiasesBounds {..} = do + put _msgSsrCodePhaseBiasesBounds_header + putWord8 _msgSsrCodePhaseBiasesBounds_ssr_iod + putWord8 _msgSsrCodePhaseBiasesBounds_const_id + putWord8 _msgSsrCodePhaseBiasesBounds_n_sats_signals + mapM_ put _msgSsrCodePhaseBiasesBounds_satellites_signals + +$(makeSBP 'msgSsrCodePhaseBiasesBounds ''MsgSsrCodePhaseBiasesBounds) +$(makeJSON "_msgSsrCodePhaseBiasesBounds_" ''MsgSsrCodePhaseBiasesBounds) +$(makeLenses ''MsgSsrCodePhaseBiasesBounds) diff --git a/java/src/com/swiftnav/sbp/client/MessageTable.java b/java/src/com/swiftnav/sbp/client/MessageTable.java index 4e575d2b40..674e8ef200 100644 --- a/java/src/com/swiftnav/sbp/client/MessageTable.java +++ b/java/src/com/swiftnav/sbp/client/MessageTable.java @@ -182,6 +182,7 @@ import com.swiftnav.sbp.solution_meta.MsgSolnMeta; import com.swiftnav.sbp.solution_meta.MsgSolnMetaDepA; import com.swiftnav.sbp.ssr.MsgSsrCodeBiases; +import com.swiftnav.sbp.ssr.MsgSsrCodePhaseBiasesBounds; import com.swiftnav.sbp.ssr.MsgSsrGridDefinitionDepA; import com.swiftnav.sbp.ssr.MsgSsrGriddedCorrection; import com.swiftnav.sbp.ssr.MsgSsrGriddedCorrectionDepA; @@ -585,6 +586,8 @@ static SBPMessage dispatch(SBPMessage msg) throws SBPBinaryException { return new MsgSsrGridDefinitionDepA(msg); case MsgSsrOrbitClockBounds.TYPE: return new MsgSsrOrbitClockBounds(msg); + case MsgSsrCodePhaseBiasesBounds.TYPE: + return new MsgSsrCodePhaseBiasesBounds(msg); case MsgStartup.TYPE: return new MsgStartup(msg); case MsgDgnssStatus.TYPE: diff --git a/java/src/com/swiftnav/sbp/ssr/CodePhaseBiasesSatSig.java b/java/src/com/swiftnav/sbp/ssr/CodePhaseBiasesSatSig.java new file mode 100644 index 0000000000..3209186c0d --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/CodePhaseBiasesSatSig.java @@ -0,0 +1,85 @@ +/* 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.ssr; + +// This file was auto-generated from yaml/swiftnav/sbp/ssr.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 com.swiftnav.sbp.gnss.*; +import org.json.JSONObject; + +public class CodePhaseBiasesSatSig extends SBPStruct { + + /** + * Satellite ID. Similar to either RTCM DF068 (GPS), DF252 (Galileo), or DF488 (BDS) depending + * on the constellation. + */ + public int sat_id; + + /** + * Signal and Tracking Mode Identifier. Similar to either RTCM DF380 (GPS), DF382 (Galileo) or + * DF467 (BDS) depending on the constellation. + */ + public int signal_id; + + /** Code Bias Mean (range 0-1.275) */ + public int code_bias_bound_mu; + + /** Code Bias Standard Deviation (range 0-1.275) */ + public int code_bias_bound_sig; + + /** Phase Bias Mean (range 0-1.275) */ + public int phase_bias_bound_mu; + + /** Phase Bias Standard Deviation (range 0-1.275) */ + public int phase_bias_bound_sig; + + public CodePhaseBiasesSatSig() {} + + @Override + public CodePhaseBiasesSatSig parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + sat_id = parser.getU8(); + signal_id = parser.getU8(); + code_bias_bound_mu = parser.getU8(); + code_bias_bound_sig = parser.getU8(); + phase_bias_bound_mu = parser.getU8(); + phase_bias_bound_sig = parser.getU8(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + builder.putU8(sat_id); + builder.putU8(signal_id); + builder.putU8(code_bias_bound_mu); + builder.putU8(code_bias_bound_sig); + builder.putU8(phase_bias_bound_mu); + builder.putU8(phase_bias_bound_sig); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("sat_id", sat_id); + obj.put("signal_id", signal_id); + obj.put("code_bias_bound_mu", code_bias_bound_mu); + obj.put("code_bias_bound_sig", code_bias_bound_sig); + obj.put("phase_bias_bound_mu", phase_bias_bound_mu); + obj.put("phase_bias_bound_sig", phase_bias_bound_sig); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/ssr/MsgSsrCodePhaseBiasesBounds.java b/java/src/com/swiftnav/sbp/ssr/MsgSsrCodePhaseBiasesBounds.java new file mode 100644 index 0000000000..b1a9e8050f --- /dev/null +++ b/java/src/com/swiftnav/sbp/ssr/MsgSsrCodePhaseBiasesBounds.java @@ -0,0 +1,83 @@ +/* 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.ssr; + +// This file was auto-generated from yaml/swiftnav/sbp/ssr.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 com.swiftnav.sbp.gnss.*; +import org.json.JSONObject; + +public class MsgSsrCodePhaseBiasesBounds extends SBPMessage { + public static final int TYPE = 0x05EC; + + /** Header of a bounds message. */ + public BoundsHeader header; + + /** IOD of the SSR bound. */ + public int ssr_iod; + + /** Constellation ID to which the SVs belong. */ + public int const_id; + + /** Number of satellite-signal couples. */ + public int n_sats_signals; + + /** Code and Phase Biases Bounds per Satellite-Signal couple. */ + public CodePhaseBiasesSatSig[] satellites_signals; + + public MsgSsrCodePhaseBiasesBounds(int sender) { + super(sender, TYPE); + } + + public MsgSsrCodePhaseBiasesBounds() { + super(TYPE); + } + + public MsgSsrCodePhaseBiasesBounds(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + header = new BoundsHeader().parse(parser); + ssr_iod = parser.getU8(); + const_id = parser.getU8(); + n_sats_signals = parser.getU8(); + satellites_signals = parser.getArray(CodePhaseBiasesSatSig.class); + } + + @Override + protected void build(Builder builder) { + header.build(builder); + builder.putU8(ssr_iod); + builder.putU8(const_id); + builder.putU8(n_sats_signals); + builder.putArray(satellites_signals); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("header", header.toJSON()); + obj.put("ssr_iod", ssr_iod); + obj.put("const_id", const_id); + obj.put("n_sats_signals", n_sats_signals); + obj.put("satellites_signals", SBPStruct.toJSONArray(satellites_signals)); + return obj; + } +} diff --git a/java/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBoundsTest.java b/java/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBoundsTest.java new file mode 100644 index 0000000000..549917c584 --- /dev/null +++ b/java/test/auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBoundsTest.java @@ -0,0 +1,315 @@ +/* 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/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml by generate.py. Do not +// modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.ssr.MsgSsrCodePhaseBiasesBounds; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_ssr_MsgSsrCodePhaseBiasesBoundsTest { + + 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_ssr_MsgSsrCodePhaseBiasesBoundsTest.test1"); + byte[] payload = + new byte[] { + (byte) 180, (byte) 0, (byte) 0, (byte) 0, (byte) 3, (byte) 0, (byte) 1, + (byte) 2, (byte) 1, (byte) 14, (byte) 15, (byte) 1, (byte) 3, (byte) 0, + (byte) 3, (byte) 39, (byte) 1, (byte) 39, (byte) 1, (byte) 1, (byte) 3, + (byte) 39, (byte) 1, (byte) 39, (byte) 1, (byte) 1, (byte) 1, (byte) 39, + (byte) 1, (byte) 39, (byte) 1, + }; + SBPMessage sbp = new SBPMessage(0x0042, 0x05EC, payload); + MsgSsrCodePhaseBiasesBounds msg = new MsgSsrCodePhaseBiasesBounds(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.const_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.const_id + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.header.num_msgs; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.header.num_msgs + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.header.seq_num; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.header.seq_num + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.header.sol_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.header.sol_id + "' != '" + 14 + "'", + value.equals(BigInteger.valueOf(14L))); + } else { + value = value.longValue(); + expected = 14L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.header.time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.header.time.tow + "' != '" + 180 + "'", + value.equals(BigInteger.valueOf(180L))); + } else { + value = value.longValue(); + expected = 180L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.header.time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.header.time.wn + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.header.update_interval; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.header.update_interval + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.n_sats_signals; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_sats_signals + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[0].code_bias_bound_mu; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[0].code_bias_bound_mu + "' != '" + 39 + "'", + value.equals(BigInteger.valueOf(39L))); + } else { + value = value.longValue(); + expected = 39L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[0].code_bias_bound_sig; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[0].code_bias_bound_sig + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[0].phase_bias_bound_mu; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[0].phase_bias_bound_mu + "' != '" + 39 + "'", + value.equals(BigInteger.valueOf(39L))); + } else { + value = value.longValue(); + expected = 39L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[0].phase_bias_bound_sig; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[0].phase_bias_bound_sig + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[0].sat_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[0].sat_id + "' != '" + 0 + "'", + value.equals(BigInteger.valueOf(0L))); + } else { + value = value.longValue(); + expected = 0L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[0].signal_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[0].signal_id + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[1].code_bias_bound_mu; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[1].code_bias_bound_mu + "' != '" + 39 + "'", + value.equals(BigInteger.valueOf(39L))); + } else { + value = value.longValue(); + expected = 39L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[1].code_bias_bound_sig; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[1].code_bias_bound_sig + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[1].phase_bias_bound_mu; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[1].phase_bias_bound_mu + "' != '" + 39 + "'", + value.equals(BigInteger.valueOf(39L))); + } else { + value = value.longValue(); + expected = 39L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[1].phase_bias_bound_sig; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[1].phase_bias_bound_sig + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[1].sat_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[1].sat_id + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[1].signal_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[1].signal_id + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[2].code_bias_bound_mu; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[2].code_bias_bound_mu + "' != '" + 39 + "'", + value.equals(BigInteger.valueOf(39L))); + } else { + value = value.longValue(); + expected = 39L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[2].code_bias_bound_sig; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[2].code_bias_bound_sig + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[2].phase_bias_bound_mu; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[2].phase_bias_bound_mu + "' != '" + 39 + "'", + value.equals(BigInteger.valueOf(39L))); + } else { + value = value.longValue(); + expected = 39L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[2].phase_bias_bound_sig; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[2].phase_bias_bound_sig + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[2].sat_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[2].sat_id + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.satellites_signals[2].signal_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.satellites_signals[2].signal_id + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.ssr_iod; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.ssr_iod + "' != '" + 15 + "'", value.equals(BigInteger.valueOf(15L))); + } else { + value = value.longValue(); + expected = 15L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/javascript/sbp.bundle.js b/javascript/sbp.bundle.js index 2c010d6983..10a20627bd 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 I=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_GNSS",I.prototype.msg_type=554,I.prototype.constructor=I,I.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"),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(["h_accuracy","writeUInt16LE",2]),I.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV_GNSS",L.prototype.msg_type=561,L.prototype.constructor=L,L.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"),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(["cov_n_n","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.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:I,MsgPosLlhGnss:I,561:L,MsgPosLlhCovGnss:L,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_QZSS",I.prototype.msg_type=142,I.prototype.constructor=I,I.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"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["tgd","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","writeFloatLE",4]),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 L=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_BDS",L.prototype.msg_type=137,L.prototype.constructor=L,L.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"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),L.prototype.fieldSpec.push(["tgd2","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","writeDoubleLE",8]),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 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 H=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepC",H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["P","writeUInt32LE",4]),H.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),H.prototype.fieldSpec.push(["cn0","writeUInt8",1]),H.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),H.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);var V=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_A",V.prototype.msg_type=69,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),V.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:H.prototype.parser,readUntil:"eof"}),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),W.prototype.fieldSpec.push(["obs","array",H.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:I,MsgEphemerisQzss:I,137:L,MsgEphemerisBds:L,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:H,69:V,MsgObsDepA:V,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE",I.prototype.msg_type=43,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["mask","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE_DEP",L.prototype.msg_type=27,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.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:I,MsgMaskSatellite:I,27:L,MsgMaskSatelliteDep:L,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_SSR_SATELLITE_APC",I.prototype.msg_type=1540,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").array("apc",{type:v.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["apc","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]);var L=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};(L.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",L.prototype.msg_type=1500,L.prototype.constructor=L,L.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"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),L.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),L.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),L.prototype.fieldSpec.push(["iod","writeUInt8",1]),L.prototype.fieldSpec.push(["radial","writeInt32LE",4]),L.prototype.fieldSpec.push(["along","writeInt32LE",4]),L.prototype.fieldSpec.push(["cross","writeInt32LE",4]),L.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),L.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),L.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),L.prototype.fieldSpec.push(["c0","writeInt32LE",4]),L.prototype.fieldSpec.push(["c1","writeInt32LE",4]),L.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]);var C=function(e,t){return p.call(this,e),this.messageType="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="BoundsHeader",C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),C.prototype.fieldSpec=[],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(["sol_id","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="OrbitClockBound",R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").uint8("sat_id").uint8("orb_radial_bound_mu").uint8("orb_along_bound_mu").uint8("orb_cross_bound_mu").uint8("orb_radial_bound_sig").uint8("orb_along_bound_sig").uint8("orb_cross_bound_sig").uint8("clock_bound_mu").uint8("clock_bound_sig"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),R.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",P.prototype.msg_type=1502,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:R.prototype.parser,length:"n_sats"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),P.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),P.prototype.fieldSpec.push(["const_id","writeUInt8",1]),P.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),P.prototype.fieldSpec.push(["orbit_clock_bounds","array",R.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]),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:I,MsgSsrSatelliteApc:I,1500:L,MsgSsrOrbitClockDepA:L,STECHeaderDepA:T,GriddedCorrectionHeaderDepA:U,GridDefinitionHeaderDepA:M,1515:D,MsgSsrStecCorrectionDepA:D,1520:O,MsgSsrGriddedCorrectionNoStdDepA:O,1530:G,MsgSsrGriddedCorrectionDepA:G,1525:A,MsgSsrGridDefinitionDepA:A,BoundsHeader:C,OrbitClockBound:R,1502:P,MsgSsrOrbitClockBounds:P}},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 I=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",I.prototype.msg_type=19,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").array("states",{type:v.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.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:I,MsgTrackingStateDepB: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_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 I=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_GNSS",I.prototype.msg_type=554,I.prototype.constructor=I,I.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"),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(["h_accuracy","writeUInt16LE",2]),I.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_COV_GNSS",L.prototype.msg_type=561,L.prototype.constructor=L,L.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"),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(["cov_n_n","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_n_e","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_n_d","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_e_e","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_e_d","writeFloatLE",4]),L.prototype.fieldSpec.push(["cov_d_d","writeFloatLE",4]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.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:I,MsgPosLlhGnss:I,561:L,MsgPosLlhCovGnss:L,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_QZSS",I.prototype.msg_type=142,I.prototype.constructor=I,I.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"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),I.prototype.fieldSpec.push(["tgd","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","writeFloatLE",4]),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 L=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_BDS",L.prototype.msg_type=137,L.prototype.constructor=L,L.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"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tgd1","writeFloatLE",4]),L.prototype.fieldSpec.push(["tgd2","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","writeDoubleLE",8]),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 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 H=function(e,t){return p.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(p.prototype)).messageType="PackedObsContentDepC",H.prototype.constructor=H,H.prototype.parser=(new o).endianess("little").uint32("P").nest("L",{type:i.prototype.parser}).uint8("cn0").uint16("lock").nest("sid",{type:n.prototype.parser}),H.prototype.fieldSpec=[],H.prototype.fieldSpec.push(["P","writeUInt32LE",4]),H.prototype.fieldSpec.push(["L",i.prototype.fieldSpec]),H.prototype.fieldSpec.push(["cn0","writeUInt8",1]),H.prototype.fieldSpec.push(["lock","writeUInt16LE",2]),H.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]);var V=function(e,t){return p.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(p.prototype)).messageType="MSG_OBS_DEP_A",V.prototype.msg_type=69,V.prototype.constructor=V,V.prototype.parser=(new o).endianess("little").nest("header",{type:F.prototype.parser}).array("obs",{type:q.prototype.parser,readUntil:"eof"}),V.prototype.fieldSpec=[],V.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),V.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:H.prototype.parser,readUntil:"eof"}),W.prototype.fieldSpec=[],W.prototype.fieldSpec.push(["header",F.prototype.fieldSpec]),W.prototype.fieldSpec.push(["obs","array",H.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:I,MsgEphemerisQzss:I,137:L,MsgEphemerisBds:L,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:H,69:V,MsgObsDepA:V,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE",I.prototype.msg_type=43,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["mask","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE_DEP",L.prototype.msg_type=27,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:s.prototype.parser}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["mask","writeUInt8",1]),L.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:I,MsgMaskSatellite:I,27:L,MsgMaskSatelliteDep:L,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_SSR_SATELLITE_APC",I.prototype.msg_type=1540,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").array("apc",{type:v.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["apc","array",v.prototype.fieldSpec,function(){return this.fields.array.length},null]);var L=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};(L.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",L.prototype.msg_type=1500,L.prototype.constructor=L,L.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"),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),L.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),L.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),L.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),L.prototype.fieldSpec.push(["iod","writeUInt8",1]),L.prototype.fieldSpec.push(["radial","writeInt32LE",4]),L.prototype.fieldSpec.push(["along","writeInt32LE",4]),L.prototype.fieldSpec.push(["cross","writeInt32LE",4]),L.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),L.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),L.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),L.prototype.fieldSpec.push(["c0","writeInt32LE",4]),L.prototype.fieldSpec.push(["c1","writeInt32LE",4]),L.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]);var C=function(e,t){return p.call(this,e),this.messageType="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="BoundsHeader",C.prototype.constructor=C,C.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),C.prototype.fieldSpec=[],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(["sol_id","writeUInt8",1]);var R=function(e,t){return p.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(p.prototype)).messageType="OrbitClockBound",R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").uint8("sat_id").uint8("orb_radial_bound_mu").uint8("orb_along_bound_mu").uint8("orb_cross_bound_mu").uint8("orb_radial_bound_sig").uint8("orb_along_bound_sig").uint8("orb_cross_bound_sig").uint8("clock_bound_mu").uint8("clock_bound_sig"),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),R.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),R.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),R.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);var P=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",P.prototype.msg_type=1502,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:R.prototype.parser,length:"n_sats"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),P.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),P.prototype.fieldSpec.push(["const_id","writeUInt8",1]),P.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),P.prototype.fieldSpec.push(["orbit_clock_bounds","array",R.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var N=function(e,t){return p.call(this,e),this.messageType="CodePhaseBiasesSatSig",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(p.prototype)).messageType="CodePhaseBiasesSatSig",N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").uint8("sat_id").uint8("signal_id").uint8("code_bias_bound_mu").uint8("code_bias_bound_sig").uint8("phase_bias_bound_mu").uint8("phase_bias_bound_sig"),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),N.prototype.fieldSpec.push(["signal_id","writeUInt8",1]),N.prototype.fieldSpec.push(["code_bias_bound_mu","writeUInt8",1]),N.prototype.fieldSpec.push(["code_bias_bound_sig","writeUInt8",1]),N.prototype.fieldSpec.push(["phase_bias_bound_mu","writeUInt8",1]),N.prototype.fieldSpec.push(["phase_bias_bound_sig","writeUInt8",1]);var j=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(p.prototype)).messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",j.prototype.msg_type=1516,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats_signals").array("satellites_signals",{type:N.prototype.parser,length:"n_sats_signals"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),j.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),j.prototype.fieldSpec.push(["const_id","writeUInt8",1]),j.prototype.fieldSpec.push(["n_sats_signals","writeUInt8",1]),j.prototype.fieldSpec.push(["satellites_signals","array",N.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats_signals"]),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:I,MsgSsrSatelliteApc:I,1500:L,MsgSsrOrbitClockDepA:L,STECHeaderDepA:T,GriddedCorrectionHeaderDepA:U,GridDefinitionHeaderDepA:M,1515:D,MsgSsrStecCorrectionDepA:D,1520:O,MsgSsrGriddedCorrectionNoStdDepA:O,1530:G,MsgSsrGriddedCorrectionDepA:G,1525:A,MsgSsrGridDefinitionDepA:A,BoundsHeader:C,OrbitClockBound:R,1502:P,MsgSsrOrbitClockBounds:P,CodePhaseBiasesSatSig:N,1516:j,MsgSsrCodePhaseBiasesBounds:j}},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 I=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",I.prototype.msg_type=19,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").array("states",{type:v.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.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:I,MsgTrackingStateDepB: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_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/ssr.js b/javascript/sbp/ssr.js index 1439b14630..06e7beb200 100644 --- a/javascript/sbp/ssr.js +++ b/javascript/sbp/ssr.js @@ -1192,6 +1192,86 @@ MsgSsrOrbitClockBounds.prototype.fieldSpec.push(['const_id', 'writeUInt8', 1]); MsgSsrOrbitClockBounds.prototype.fieldSpec.push(['n_sats', 'writeUInt8', 1]); MsgSsrOrbitClockBounds.prototype.fieldSpec.push(['orbit_clock_bounds', 'array', OrbitClockBound.prototype.fieldSpec, function () { return this.fields.array.length; }, 'n_sats']); +/** + * SBP class for message fragment CodePhaseBiasesSatSig + * + + * Fields in the SBP payload (`sbp.payload`): + * @field sat_id number (unsigned 8-bit int, 1 byte) Satellite ID. Similar to either RTCM DF068 (GPS), DF252 (Galileo), or DF488 + * (BDS) depending on the constellation. + * @field signal_id number (unsigned 8-bit int, 1 byte) Signal and Tracking Mode Identifier. Similar to either RTCM DF380 (GPS), DF382 + * (Galileo) or DF467 (BDS) depending on the constellation. + * @field code_bias_bound_mu number (unsigned 8-bit int, 1 byte) Code Bias Mean (range 0-1.275) + * @field code_bias_bound_sig number (unsigned 8-bit int, 1 byte) Code Bias Standard Deviation (range 0-1.275) + * @field phase_bias_bound_mu number (unsigned 8-bit int, 1 byte) Phase Bias Mean (range 0-1.275) + * @field phase_bias_bound_sig number (unsigned 8-bit int, 1 byte) Phase Bias Standard Deviation (range 0-1.275) + * + * @param sbp An SBP object with a payload to be decoded. + */ +var CodePhaseBiasesSatSig = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "CodePhaseBiasesSatSig"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +CodePhaseBiasesSatSig.prototype = Object.create(SBP.prototype); +CodePhaseBiasesSatSig.prototype.messageType = "CodePhaseBiasesSatSig"; +CodePhaseBiasesSatSig.prototype.constructor = CodePhaseBiasesSatSig; +CodePhaseBiasesSatSig.prototype.parser = new Parser() + .endianess('little') + .uint8('sat_id') + .uint8('signal_id') + .uint8('code_bias_bound_mu') + .uint8('code_bias_bound_sig') + .uint8('phase_bias_bound_mu') + .uint8('phase_bias_bound_sig'); +CodePhaseBiasesSatSig.prototype.fieldSpec = []; +CodePhaseBiasesSatSig.prototype.fieldSpec.push(['sat_id', 'writeUInt8', 1]); +CodePhaseBiasesSatSig.prototype.fieldSpec.push(['signal_id', 'writeUInt8', 1]); +CodePhaseBiasesSatSig.prototype.fieldSpec.push(['code_bias_bound_mu', 'writeUInt8', 1]); +CodePhaseBiasesSatSig.prototype.fieldSpec.push(['code_bias_bound_sig', 'writeUInt8', 1]); +CodePhaseBiasesSatSig.prototype.fieldSpec.push(['phase_bias_bound_mu', 'writeUInt8', 1]); +CodePhaseBiasesSatSig.prototype.fieldSpec.push(['phase_bias_bound_sig', 'writeUInt8', 1]); + +/** + * SBP class for message MSG_SSR_CODE_PHASE_BIASES_BOUNDS (0x05EC). + * + + * Fields in the SBP payload (`sbp.payload`): + * @field header BoundsHeader Header of a bounds message. + * @field ssr_iod number (unsigned 8-bit int, 1 byte) IOD of the SSR bound. + * @field const_id number (unsigned 8-bit int, 1 byte) Constellation ID to which the SVs belong. + * @field n_sats_signals number (unsigned 8-bit int, 1 byte) Number of satellite-signal couples. + * @field satellites_signals array Code and Phase Biases Bounds per Satellite-Signal couple. + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrCodePhaseBiasesBounds = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_CODE_PHASE_BIASES_BOUNDS"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrCodePhaseBiasesBounds.prototype = Object.create(SBP.prototype); +MsgSsrCodePhaseBiasesBounds.prototype.messageType = "MSG_SSR_CODE_PHASE_BIASES_BOUNDS"; +MsgSsrCodePhaseBiasesBounds.prototype.msg_type = 0x05EC; +MsgSsrCodePhaseBiasesBounds.prototype.constructor = MsgSsrCodePhaseBiasesBounds; +MsgSsrCodePhaseBiasesBounds.prototype.parser = new Parser() + .endianess('little') + .nest('header', { type: BoundsHeader.prototype.parser }) + .uint8('ssr_iod') + .uint8('const_id') + .uint8('n_sats_signals') + .array('satellites_signals', { type: CodePhaseBiasesSatSig.prototype.parser, length: 'n_sats_signals' }); +MsgSsrCodePhaseBiasesBounds.prototype.fieldSpec = []; +MsgSsrCodePhaseBiasesBounds.prototype.fieldSpec.push(['header', BoundsHeader.prototype.fieldSpec]); +MsgSsrCodePhaseBiasesBounds.prototype.fieldSpec.push(['ssr_iod', 'writeUInt8', 1]); +MsgSsrCodePhaseBiasesBounds.prototype.fieldSpec.push(['const_id', 'writeUInt8', 1]); +MsgSsrCodePhaseBiasesBounds.prototype.fieldSpec.push(['n_sats_signals', 'writeUInt8', 1]); +MsgSsrCodePhaseBiasesBounds.prototype.fieldSpec.push(['satellites_signals', 'array', CodePhaseBiasesSatSig.prototype.fieldSpec, function () { return this.fields.array.length; }, 'n_sats_signals']); + module.exports = { CodeBiasesContent: CodeBiasesContent, PhaseBiasesContent: PhaseBiasesContent, @@ -1234,4 +1314,7 @@ module.exports = { OrbitClockBound: OrbitClockBound, 0x05DE: MsgSsrOrbitClockBounds, MsgSsrOrbitClockBounds: MsgSsrOrbitClockBounds, + CodePhaseBiasesSatSig: CodePhaseBiasesSatSig, + 0x05EC: MsgSsrCodePhaseBiasesBounds, + MsgSsrCodePhaseBiasesBounds: MsgSsrCodePhaseBiasesBounds, } \ No newline at end of file diff --git a/jsonschema/CodePhaseBiasesSatSig.json b/jsonschema/CodePhaseBiasesSatSig.json new file mode 100644 index 0000000000..c370752778 --- /dev/null +++ b/jsonschema/CodePhaseBiasesSatSig.json @@ -0,0 +1,34 @@ +{ + "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": "#CodePhaseBiasesSatSig", + "title":"CodePhaseBiasesSatSig", + "description":"", + "type": "object", + "properties": { + "sat_id": {"type": "integer"}, + "signal_id": {"type": "integer"}, + "code_bias_bound_mu": {"type": "integer"}, + "code_bias_bound_sig": {"type": "integer"}, + "phase_bias_bound_mu": {"type": "integer"}, + "phase_bias_bound_sig": {"type": "integer"} + }, + "required": [ + "sat_id", + "signal_id", + "code_bias_bound_mu", + "code_bias_bound_sig", + "phase_bias_bound_mu", + "phase_bias_bound_sig" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgSsrCodePhaseBiasesBounds.json b/jsonschema/MsgSsrCodePhaseBiasesBounds.json new file mode 100644 index 0000000000..1dab87fb7e --- /dev/null +++ b/jsonschema/MsgSsrCodePhaseBiasesBounds.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": "#MsgSsrCodePhaseBiasesBounds", + "title":"MsgSsrCodePhaseBiasesBounds", + "description":"", + "type": "object", + "properties": { + "header": {"$ref": "BoundsHeader.json"}, + "ssr_iod": {"type": "integer"}, + "const_id": {"type": "integer"}, + "n_sats_signals": {"type": "integer"}, + "satellites_signals": {"type": "array", "items": {"$ref": "CodePhaseBiasesSatSig.json"}} + }, + "required": [ + "header", + "ssr_iod", + "const_id", + "n_sats_signals", + "satellites_signals" + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 1bc871427e..982781ecd7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sbp", - "version": "4.1.7-alpha", + "version": "4.2.1-alpha", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sbp", - "version": "4.1.7-alpha", + "version": "4.2.1-alpha", "license": "MIT", "dependencies": { "binary-parser": "^1.7.0", diff --git a/package.json b/package.json index 1caf212266..8e1c129039 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sbp", - "version": "4.1.7-alpha", + "version": "4.2.1-alpha", "description": "libsbp bindings for JavaScript. More information here: http://swift-nav.github.io/libsbp/", "files": [ "javascript/*", diff --git a/proto/ssr.proto b/proto/ssr.proto index 2eb6f26858..875baeaee8 100644 --- a/proto/ssr.proto +++ b/proto/ssr.proto @@ -291,4 +291,29 @@ message MsgSsrOrbitClockBounds { uint32 const_id = 3; uint32 n_sats = 4; repeated OrbitClockBound orbit_clock_bounds = 5; +} + +/** Code and Phase Biases Bounds per Satellite-Signal couple + * +None + */ +message CodePhaseBiasesSatSig { + uint32 sat_id = 1; + uint32 signal_id = 2; + uint32 code_bias_bound_mu = 3; + uint32 code_bias_bound_sig = 4; + uint32 phase_bias_bound_mu = 5; + uint32 phase_bias_bound_sig = 6; +} + +/** Combined Code and Phase Biases Bounds + * +None + */ +message MsgSsrCodePhaseBiasesBounds { + BoundsHeader header = 1; + uint32 ssr_iod = 2; + uint32 const_id = 3; + uint32 n_sats_signals = 4; + repeated CodePhaseBiasesSatSig satellites_signals = 5; } \ No newline at end of file diff --git a/python/sbp/ssr.py b/python/sbp/ssr.py index d72954a70c..b73d357545 100644 --- a/python/sbp/ssr.py +++ b/python/sbp/ssr.py @@ -803,6 +803,63 @@ def from_binary(self, d): for n in self.__class__.__slots__: setattr(self, n, getattr(p, n)) +class CodePhaseBiasesSatSig(object): + """CodePhaseBiasesSatSig. + + + Parameters + ---------- + sat_id : int + Satellite ID. Similar to either RTCM DF068 (GPS), DF252 (Galileo), or + DF488 (BDS) depending on the constellation. + signal_id : int + Signal and Tracking Mode Identifier. Similar to either RTCM DF380 (GPS), + DF382 (Galileo) or DF467 (BDS) depending on the constellation. + code_bias_bound_mu : int + Code Bias Mean (range 0-1.275) + code_bias_bound_sig : int + Code Bias Standard Deviation (range 0-1.275) + phase_bias_bound_mu : int + Phase Bias Mean (range 0-1.275) + phase_bias_bound_sig : int + Phase Bias Standard Deviation (range 0-1.275) + + """ + _parser = construct.Struct( + 'sat_id' / construct.Int8ul, + 'signal_id' / construct.Int8ul, + 'code_bias_bound_mu' / construct.Int8ul, + 'code_bias_bound_sig' / construct.Int8ul, + 'phase_bias_bound_mu' / construct.Int8ul, + 'phase_bias_bound_sig' / construct.Int8ul,) + __slots__ = [ + 'sat_id', + 'signal_id', + 'code_bias_bound_mu', + 'code_bias_bound_sig', + 'phase_bias_bound_mu', + 'phase_bias_bound_sig', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.sat_id = kwargs.pop('sat_id') + self.signal_id = kwargs.pop('signal_id') + self.code_bias_bound_mu = kwargs.pop('code_bias_bound_mu') + self.code_bias_bound_sig = kwargs.pop('code_bias_bound_sig') + self.phase_bias_bound_mu = kwargs.pop('phase_bias_bound_mu') + self.phase_bias_bound_sig = kwargs.pop('phase_bias_bound_sig') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = CodePhaseBiasesSatSig._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + SBP_MSG_SSR_ORBIT_CLOCK = 0x05DD class MsgSsrOrbitClock(SBP): """SBP class for message MSG_SSR_ORBIT_CLOCK (0x05DD). @@ -2332,6 +2389,114 @@ def to_json_dict(self): d.update(j) return d +SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS = 0x05EC +class MsgSsrCodePhaseBiasesBounds(SBP): + """SBP class for message MSG_SSR_CODE_PHASE_BIASES_BOUNDS (0x05EC). + + You can have MSG_SSR_CODE_PHASE_BIASES_BOUNDS inherit its fields directly + from an inherited SBP object, or construct it inline using a dict + of its fields. + + + + Parameters + ---------- + sbp : SBP + SBP parent object to inherit from. + header : BoundsHeader + Header of a bounds message. + ssr_iod : int + IOD of the SSR bound. + const_id : int + Constellation ID to which the SVs belong. + n_sats_signals : int + Number of satellite-signal couples. + satellites_signals : array + Code and Phase Biases Bounds per Satellite-Signal couple. + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'header' / BoundsHeader._parser, + 'ssr_iod' / construct.Int8ul, + 'const_id' / construct.Int8ul, + 'n_sats_signals' / construct.Int8ul, + 'satellites_signals' / construct.GreedyRange(CodePhaseBiasesSatSig._parser),) + __slots__ = [ + 'header', + 'ssr_iod', + 'const_id', + 'n_sats_signals', + 'satellites_signals', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrCodePhaseBiasesBounds, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrCodePhaseBiasesBounds, self).__init__() + self.msg_type = SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS + self.sender = kwargs.pop('sender', SENDER_ID) + self.header = kwargs.pop('header') + self.ssr_iod = kwargs.pop('ssr_iod') + self.const_id = kwargs.pop('const_id') + self.n_sats_signals = kwargs.pop('n_sats_signals') + self.satellites_signals = kwargs.pop('satellites_signals') + + 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 MsgSsrCodePhaseBiasesBounds.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrCodePhaseBiasesBounds(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrCodePhaseBiasesBounds._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 = MsgSsrCodePhaseBiasesBounds._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 = MsgSsrCodePhaseBiasesBounds._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( MsgSsrCodePhaseBiasesBounds, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + msg_classes = { 0x05DD: MsgSsrOrbitClock, @@ -2347,4 +2512,5 @@ def to_json_dict(self): 0x05FA: MsgSsrGriddedCorrectionDepA, 0x05F5: MsgSsrGridDefinitionDepA, 0x05DE: MsgSsrOrbitClockBounds, + 0x05EC: MsgSsrCodePhaseBiasesBounds, } \ No newline at end of file diff --git a/rust/sbp/src/messages/mod.rs b/rust/sbp/src/messages/mod.rs index 74d5393721..1e0619189d 100644 --- a/rust/sbp/src/messages/mod.rs +++ b/rust/sbp/src/messages/mod.rs @@ -201,6 +201,7 @@ use self::settings::msg_settings_write_resp::MsgSettingsWriteResp; use self::solution_meta::msg_soln_meta::MsgSolnMeta; use self::solution_meta::msg_soln_meta_dep_a::MsgSolnMetaDepA; use self::ssr::msg_ssr_code_biases::MsgSsrCodeBiases; +use self::ssr::msg_ssr_code_phase_biases_bounds::MsgSsrCodePhaseBiasesBounds; use self::ssr::msg_ssr_grid_definition_dep_a::MsgSsrGridDefinitionDepA; use self::ssr::msg_ssr_gridded_correction::MsgSsrGriddedCorrection; use self::ssr::msg_ssr_gridded_correction_dep_a::MsgSsrGriddedCorrectionDepA; @@ -655,6 +656,8 @@ pub enum Sbp { MsgSsrPhaseBiases(MsgSsrPhaseBiases), /// Deprecated MsgSsrStecCorrectionDepA(MsgSsrStecCorrectionDepA), + /// Combined Code and Phase Biases Bounds + MsgSsrCodePhaseBiasesBounds(MsgSsrCodePhaseBiasesBounds), /// Deprecated MsgSsrGriddedCorrectionNoStdDepA(MsgSsrGriddedCorrectionNoStdDepA), /// Deprecated @@ -1588,6 +1591,11 @@ impl Sbp { msg.set_sender_id(frame.sender_id); Ok(Sbp::MsgSsrStecCorrectionDepA(msg)) } + MsgSsrCodePhaseBiasesBounds::MESSAGE_TYPE => { + let mut msg = MsgSsrCodePhaseBiasesBounds::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgSsrCodePhaseBiasesBounds(msg)) + } MsgSsrGriddedCorrectionNoStdDepA::MESSAGE_TYPE => { let mut msg = MsgSsrGriddedCorrectionNoStdDepA::parse(&mut frame.payload)?; msg.set_sender_id(frame.sender_id); @@ -1978,6 +1986,7 @@ impl SbpMessage for Sbp { Sbp::MsgSsrCodeBiases(msg) => msg.message_name(), Sbp::MsgSsrPhaseBiases(msg) => msg.message_name(), Sbp::MsgSsrStecCorrectionDepA(msg) => msg.message_name(), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => msg.message_name(), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => msg.message_name(), Sbp::MsgSsrGridDefinitionDepA(msg) => msg.message_name(), Sbp::MsgSsrTileDefinition(msg) => msg.message_name(), @@ -2190,6 +2199,7 @@ impl SbpMessage for Sbp { Sbp::MsgSsrCodeBiases(msg) => msg.message_type(), Sbp::MsgSsrPhaseBiases(msg) => msg.message_type(), Sbp::MsgSsrStecCorrectionDepA(msg) => msg.message_type(), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => msg.message_type(), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => msg.message_type(), Sbp::MsgSsrGridDefinitionDepA(msg) => msg.message_type(), Sbp::MsgSsrTileDefinition(msg) => msg.message_type(), @@ -2402,6 +2412,7 @@ impl SbpMessage for Sbp { Sbp::MsgSsrCodeBiases(msg) => msg.sender_id(), Sbp::MsgSsrPhaseBiases(msg) => msg.sender_id(), Sbp::MsgSsrStecCorrectionDepA(msg) => msg.sender_id(), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => msg.sender_id(), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => msg.sender_id(), Sbp::MsgSsrGridDefinitionDepA(msg) => msg.sender_id(), Sbp::MsgSsrTileDefinition(msg) => msg.sender_id(), @@ -2614,6 +2625,7 @@ impl SbpMessage for Sbp { Sbp::MsgSsrCodeBiases(msg) => msg.set_sender_id(new_id), Sbp::MsgSsrPhaseBiases(msg) => msg.set_sender_id(new_id), Sbp::MsgSsrStecCorrectionDepA(msg) => msg.set_sender_id(new_id), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => msg.set_sender_id(new_id), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => msg.set_sender_id(new_id), Sbp::MsgSsrGridDefinitionDepA(msg) => msg.set_sender_id(new_id), Sbp::MsgSsrTileDefinition(msg) => msg.set_sender_id(new_id), @@ -2826,6 +2838,7 @@ impl SbpMessage for Sbp { Sbp::MsgSsrCodeBiases(msg) => msg.encoded_len(), Sbp::MsgSsrPhaseBiases(msg) => msg.encoded_len(), Sbp::MsgSsrStecCorrectionDepA(msg) => msg.encoded_len(), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => msg.encoded_len(), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => msg.encoded_len(), Sbp::MsgSsrGridDefinitionDepA(msg) => msg.encoded_len(), Sbp::MsgSsrTileDefinition(msg) => msg.encoded_len(), @@ -3041,6 +3054,7 @@ impl SbpMessage for Sbp { Sbp::MsgSsrCodeBiases(msg) => msg.gps_time(), Sbp::MsgSsrPhaseBiases(msg) => msg.gps_time(), Sbp::MsgSsrStecCorrectionDepA(msg) => msg.gps_time(), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => msg.gps_time(), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => msg.gps_time(), Sbp::MsgSsrGridDefinitionDepA(msg) => msg.gps_time(), Sbp::MsgSsrTileDefinition(msg) => msg.gps_time(), @@ -3261,6 +3275,7 @@ impl WireFormat for Sbp { Sbp::MsgSsrCodeBiases(msg) => WireFormat::write(msg, buf), Sbp::MsgSsrPhaseBiases(msg) => WireFormat::write(msg, buf), Sbp::MsgSsrStecCorrectionDepA(msg) => WireFormat::write(msg, buf), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => WireFormat::write(msg, buf), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => WireFormat::write(msg, buf), Sbp::MsgSsrGridDefinitionDepA(msg) => WireFormat::write(msg, buf), Sbp::MsgSsrTileDefinition(msg) => WireFormat::write(msg, buf), @@ -3473,6 +3488,7 @@ impl WireFormat for Sbp { Sbp::MsgSsrCodeBiases(msg) => WireFormat::len(msg), Sbp::MsgSsrPhaseBiases(msg) => WireFormat::len(msg), Sbp::MsgSsrStecCorrectionDepA(msg) => WireFormat::len(msg), + Sbp::MsgSsrCodePhaseBiasesBounds(msg) => WireFormat::len(msg), Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) => WireFormat::len(msg), Sbp::MsgSsrGridDefinitionDepA(msg) => WireFormat::len(msg), Sbp::MsgSsrTileDefinition(msg) => WireFormat::len(msg), @@ -4499,6 +4515,12 @@ impl From for Sbp { } } +impl From for Sbp { + fn from(msg: MsgSsrCodePhaseBiasesBounds) -> Self { + Sbp::MsgSsrCodePhaseBiasesBounds(msg) + } +} + impl From for Sbp { fn from(msg: MsgSsrGriddedCorrectionNoStdDepA) -> Self { Sbp::MsgSsrGriddedCorrectionNoStdDepA(msg) diff --git a/rust/sbp/src/messages/ssr.rs b/rust/sbp/src/messages/ssr.rs index 6fa3ce4dfe..771430b330 100644 --- a/rust/sbp/src/messages/ssr.rs +++ b/rust/sbp/src/messages/ssr.rs @@ -15,10 +15,12 @@ //! Precise State Space Representation (SSR) corrections format pub use bounds_header::BoundsHeader; pub use code_biases_content::CodeBiasesContent; +pub use code_phase_biases_sat_sig::CodePhaseBiasesSatSig; pub use grid_definition_header_dep_a::GridDefinitionHeaderDepA; pub use gridded_correction_header::GriddedCorrectionHeader; pub use gridded_correction_header_dep_a::GriddedCorrectionHeaderDepA; pub use msg_ssr_code_biases::MsgSsrCodeBiases; +pub use msg_ssr_code_phase_biases_bounds::MsgSsrCodePhaseBiasesBounds; pub use msg_ssr_grid_definition_dep_a::MsgSsrGridDefinitionDepA; pub use msg_ssr_gridded_correction::MsgSsrGriddedCorrection; pub use msg_ssr_gridded_correction_dep_a::MsgSsrGriddedCorrectionDepA; @@ -143,6 +145,74 @@ pub mod code_biases_content { } } +pub mod code_phase_biases_sat_sig { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// Code and Phase Biases Bounds per Satellite-Signal couple + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct CodePhaseBiasesSatSig { + /// Satellite ID. Similar to either RTCM DF068 (GPS), DF252 (Galileo), or + /// DF488 (BDS) depending on the constellation. + #[cfg_attr(feature = "serde", serde(rename(serialize = "sat_id")))] + pub sat_id: u8, + /// Signal and Tracking Mode Identifier. Similar to either RTCM DF380 (GPS), + /// DF382 (Galileo) or DF467 (BDS) depending on the constellation. + #[cfg_attr(feature = "serde", serde(rename(serialize = "signal_id")))] + pub signal_id: u8, + /// Code Bias Mean (range 0-1.275) + #[cfg_attr(feature = "serde", serde(rename(serialize = "code_bias_bound_mu")))] + pub code_bias_bound_mu: u8, + /// Code Bias Standard Deviation (range 0-1.275) + #[cfg_attr(feature = "serde", serde(rename(serialize = "code_bias_bound_sig")))] + pub code_bias_bound_sig: u8, + /// Phase Bias Mean (range 0-1.275) + #[cfg_attr(feature = "serde", serde(rename(serialize = "phase_bias_bound_mu")))] + pub phase_bias_bound_mu: u8, + /// Phase Bias Standard Deviation (range 0-1.275) + #[cfg_attr(feature = "serde", serde(rename(serialize = "phase_bias_bound_sig")))] + pub phase_bias_bound_sig: u8, + } + + impl WireFormat for CodePhaseBiasesSatSig { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.sat_id) + + WireFormat::len(&self.signal_id) + + WireFormat::len(&self.code_bias_bound_mu) + + WireFormat::len(&self.code_bias_bound_sig) + + WireFormat::len(&self.phase_bias_bound_mu) + + WireFormat::len(&self.phase_bias_bound_sig) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.sat_id, buf); + WireFormat::write(&self.signal_id, buf); + WireFormat::write(&self.code_bias_bound_mu, buf); + WireFormat::write(&self.code_bias_bound_sig, buf); + WireFormat::write(&self.phase_bias_bound_mu, buf); + WireFormat::write(&self.phase_bias_bound_sig, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + CodePhaseBiasesSatSig { + sat_id: WireFormat::parse_unchecked(buf), + signal_id: WireFormat::parse_unchecked(buf), + code_bias_bound_mu: WireFormat::parse_unchecked(buf), + code_bias_bound_sig: WireFormat::parse_unchecked(buf), + phase_bias_bound_mu: WireFormat::parse_unchecked(buf), + phase_bias_bound_sig: WireFormat::parse_unchecked(buf), + } + } + } +} + pub mod grid_definition_header_dep_a { #![allow(unused_imports)] @@ -486,6 +556,102 @@ pub mod msg_ssr_code_biases { } } +pub mod msg_ssr_code_phase_biases_bounds { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// Combined Code and Phase Biases Bounds + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgSsrCodePhaseBiasesBounds { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// Header of a bounds message. + #[cfg_attr(feature = "serde", serde(rename(serialize = "header")))] + pub header: BoundsHeader, + /// IOD of the SSR bound. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_iod")))] + pub ssr_iod: u8, + /// Constellation ID to which the SVs belong. + #[cfg_attr(feature = "serde", serde(rename(serialize = "const_id")))] + pub const_id: u8, + /// Number of satellite-signal couples. + #[cfg_attr(feature = "serde", serde(rename(serialize = "n_sats_signals")))] + pub n_sats_signals: u8, + /// Code and Phase Biases Bounds per Satellite-Signal couple. + #[cfg_attr(feature = "serde", serde(rename(serialize = "satellites_signals")))] + pub satellites_signals: Vec, + } + + impl ConcreteMessage for MsgSsrCodePhaseBiasesBounds { + const MESSAGE_TYPE: u16 = 1516; + const MESSAGE_NAME: &'static str = "MSG_SSR_CODE_PHASE_BIASES_BOUNDS"; + } + + impl SbpMessage for MsgSsrCodePhaseBiasesBounds { + 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 MsgSsrCodePhaseBiasesBounds { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgSsrCodePhaseBiasesBounds(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgSsrCodePhaseBiasesBounds { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.header) + + WireFormat::len(&self.ssr_iod) + + WireFormat::len(&self.const_id) + + WireFormat::len(&self.n_sats_signals) + + WireFormat::len(&self.satellites_signals) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.header, buf); + WireFormat::write(&self.ssr_iod, buf); + WireFormat::write(&self.const_id, buf); + WireFormat::write(&self.n_sats_signals, buf); + WireFormat::write(&self.satellites_signals, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgSsrCodePhaseBiasesBounds { + sender_id: None, + header: WireFormat::parse_unchecked(buf), + ssr_iod: WireFormat::parse_unchecked(buf), + const_id: WireFormat::parse_unchecked(buf), + n_sats_signals: WireFormat::parse_unchecked(buf), + satellites_signals: WireFormat::parse_unchecked(buf), + } + } + } +} + pub mod msg_ssr_gridded_correction { #![allow(unused_imports)] diff --git a/rust/sbp/tests/integration/auto_check_sbp_ssr_msg_ssr_code_phase_biases_bounds.rs b/rust/sbp/tests/integration/auto_check_sbp_ssr_msg_ssr_code_phase_biases_bounds.rs new file mode 100644 index 0000000000..e94bf8663e --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_ssr_msg_ssr_code_phase_biases_bounds.rs @@ -0,0 +1,138 @@ +// +// 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/ssr/test_MsgSsrCodePhaseBiasesBounds.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_ssr_msg_ssr_code_phase_biases_bounds() { + { + let mut payload = Cursor::new(vec![ + 85, 236, 5, 66, 0, 31, 180, 0, 0, 0, 3, 0, 1, 2, 1, 14, 15, 1, 3, 0, 3, 39, 1, 39, 1, + 1, 3, 39, 1, 39, 1, 1, 1, 39, 1, 39, 1, 23, 113, + ]); + + // 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::MsgSsrCodePhaseBiasesBounds(msg) => { + assert_eq!( + msg.message_type(), + 1516, + "Incorrect message type, expected 1516, is {}", + msg.message_type() + ); + let sender_id = msg.sender_id().unwrap(); + assert_eq!( + sender_id, 0x0042, + "incorrect sender id, expected 0x0042, is {}", + sender_id + ); + assert_eq!( + msg.const_id, 1, + "incorrect value for const_id, expected 1, is {}", + msg.const_id + ); + assert_eq!( + msg.header.num_msgs, 1, + "incorrect value for header.num_msgs, expected 1, is {}", + msg.header.num_msgs + ); + assert_eq!( + msg.header.seq_num, 2, + "incorrect value for header.seq_num, expected 2, is {}", + msg.header.seq_num + ); + assert_eq!( + msg.header.sol_id, 14, + "incorrect value for header.sol_id, expected 14, is {}", + msg.header.sol_id + ); + assert_eq!( + msg.header.time.tow, 180, + "incorrect value for header.time.tow, expected 180, is {}", + msg.header.time.tow + ); + assert_eq!( + msg.header.time.wn, 3, + "incorrect value for header.time.wn, expected 3, is {}", + msg.header.time.wn + ); + assert_eq!( + msg.header.update_interval, 1, + "incorrect value for header.update_interval, expected 1, is {}", + msg.header.update_interval + ); + assert_eq!( + msg.n_sats_signals, 3, + "incorrect value for n_sats_signals, expected 3, is {}", + msg.n_sats_signals + ); + assert_eq!(msg.satellites_signals[0].code_bias_bound_mu, 39, "incorrect value for satellites_signals[0].code_bias_bound_mu, expected 39, is {}", msg.satellites_signals[0].code_bias_bound_mu); + assert_eq!(msg.satellites_signals[0].code_bias_bound_sig, 1, "incorrect value for satellites_signals[0].code_bias_bound_sig, expected 1, is {}", msg.satellites_signals[0].code_bias_bound_sig); + assert_eq!(msg.satellites_signals[0].phase_bias_bound_mu, 39, "incorrect value for satellites_signals[0].phase_bias_bound_mu, expected 39, is {}", msg.satellites_signals[0].phase_bias_bound_mu); + assert_eq!(msg.satellites_signals[0].phase_bias_bound_sig, 1, "incorrect value for satellites_signals[0].phase_bias_bound_sig, expected 1, is {}", msg.satellites_signals[0].phase_bias_bound_sig); + assert_eq!( + msg.satellites_signals[0].sat_id, 0, + "incorrect value for satellites_signals[0].sat_id, expected 0, is {}", + msg.satellites_signals[0].sat_id + ); + assert_eq!( + msg.satellites_signals[0].signal_id, 3, + "incorrect value for satellites_signals[0].signal_id, expected 3, is {}", + msg.satellites_signals[0].signal_id + ); + assert_eq!(msg.satellites_signals[1].code_bias_bound_mu, 39, "incorrect value for satellites_signals[1].code_bias_bound_mu, expected 39, is {}", msg.satellites_signals[1].code_bias_bound_mu); + assert_eq!(msg.satellites_signals[1].code_bias_bound_sig, 1, "incorrect value for satellites_signals[1].code_bias_bound_sig, expected 1, is {}", msg.satellites_signals[1].code_bias_bound_sig); + assert_eq!(msg.satellites_signals[1].phase_bias_bound_mu, 39, "incorrect value for satellites_signals[1].phase_bias_bound_mu, expected 39, is {}", msg.satellites_signals[1].phase_bias_bound_mu); + assert_eq!(msg.satellites_signals[1].phase_bias_bound_sig, 1, "incorrect value for satellites_signals[1].phase_bias_bound_sig, expected 1, is {}", msg.satellites_signals[1].phase_bias_bound_sig); + assert_eq!( + msg.satellites_signals[1].sat_id, 1, + "incorrect value for satellites_signals[1].sat_id, expected 1, is {}", + msg.satellites_signals[1].sat_id + ); + assert_eq!( + msg.satellites_signals[1].signal_id, 3, + "incorrect value for satellites_signals[1].signal_id, expected 3, is {}", + msg.satellites_signals[1].signal_id + ); + assert_eq!(msg.satellites_signals[2].code_bias_bound_mu, 39, "incorrect value for satellites_signals[2].code_bias_bound_mu, expected 39, is {}", msg.satellites_signals[2].code_bias_bound_mu); + assert_eq!(msg.satellites_signals[2].code_bias_bound_sig, 1, "incorrect value for satellites_signals[2].code_bias_bound_sig, expected 1, is {}", msg.satellites_signals[2].code_bias_bound_sig); + assert_eq!(msg.satellites_signals[2].phase_bias_bound_mu, 39, "incorrect value for satellites_signals[2].phase_bias_bound_mu, expected 39, is {}", msg.satellites_signals[2].phase_bias_bound_mu); + assert_eq!(msg.satellites_signals[2].phase_bias_bound_sig, 1, "incorrect value for satellites_signals[2].phase_bias_bound_sig, expected 1, is {}", msg.satellites_signals[2].phase_bias_bound_sig); + assert_eq!( + msg.satellites_signals[2].sat_id, 1, + "incorrect value for satellites_signals[2].sat_id, expected 1, is {}", + msg.satellites_signals[2].sat_id + ); + assert_eq!( + msg.satellites_signals[2].signal_id, 1, + "incorrect value for satellites_signals[2].signal_id, expected 1, is {}", + msg.satellites_signals[2].signal_id + ); + assert_eq!( + msg.ssr_iod, 15, + "incorrect value for ssr_iod, expected 15, is {}", + msg.ssr_iod + ); + } + _ => panic!("Invalid message type! Expected a MsgSsrCodePhaseBiasesBounds"), + }; + 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 a3e7cd249f..ebd82121f2 100644 --- a/rust/sbp/tests/integration/main.rs +++ b/rust/sbp/tests/integration/main.rs @@ -82,6 +82,7 @@ mod auto_check_sbp_piksi_msg_uart_state_dep_a; mod auto_check_sbp_sbas_msg_sbas_raw; mod auto_check_sbp_settings_msg_settings_read_by_index_done; mod auto_check_sbp_settings_msg_settings_read_by_index_resp; +mod auto_check_sbp_ssr_msg_ssr_code_phase_biases_bounds; mod auto_check_sbp_ssr_msg_ssr_orbit_clock_bounds; mod auto_check_sbp_system_msg_dgnss_status; mod auto_check_sbp_system_msg_group_meta; diff --git a/sbpjson/elm/SbpJson.elm b/sbpjson/elm/SbpJson.elm index f047448a6c..d53974c362 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, boundsHeader, 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, msgSsrOrbitClockBounds, 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, orbitClockBound, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, satelliteAPC, solutionInputType, statusJournalItem, subSystemReport, svAzEl, svID, trackingChannelCorrelation, trackingChannelState, troposphericDelayCorrection, troposphericDelayCorrectionNoStd, uartChannel) +-- import SbpJson exposing (acqSvProfile, almanacCommonContent, boundsHeader, carrierPhase, codeBiasesContent, codePhaseBiasesSatSig, 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, msgSsrCodePhaseBiasesBounds, msgSsrGriddedCorrection, msgSsrOrbitClock, msgSsrOrbitClockBounds, 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, orbitClockBound, 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 -- @@ -14,6 +14,7 @@ -- decodeString boundsHeader myJsonString -- decodeString carrierPhase myJsonString -- decodeString codeBiasesContent myJsonString +-- decodeString codePhaseBiasesSatSig myJsonString -- decodeString doppler myJsonString -- decodeString ephemerisCommonContent myJsonString -- decodeString estimatedHorizontalErrorEllipse myJsonString @@ -144,6 +145,7 @@ -- decodeString msgSolnMeta myJsonString -- decodeString msgSpecan myJsonString -- decodeString msgSsrCodeBiases myJsonString +-- decodeString msgSsrCodePhaseBiasesBounds myJsonString -- decodeString msgSsrGriddedCorrection myJsonString -- decodeString msgSsrOrbitClock myJsonString -- decodeString msgSsrOrbitClockBounds myJsonString @@ -217,6 +219,9 @@ module SbpJson exposing , CodeBiasesContent , codeBiasesContentToString , codeBiasesContent + , CodePhaseBiasesSatSig + , codePhaseBiasesSatSigToString + , codePhaseBiasesSatSig , Doppler , dopplerToString , doppler @@ -607,6 +612,9 @@ module SbpJson exposing , MsgSsrCodeBiases , msgSsrCodeBiasesToString , msgSsrCodeBiases + , MsgSsrCodePhaseBiasesBounds + , msgSsrCodePhaseBiasesBoundsToString + , msgSsrCodePhaseBiasesBounds , MsgSsrGriddedCorrection , msgSsrGriddedCorrectionToString , msgSsrGriddedCorrection @@ -2417,6 +2425,31 @@ type alias CodeBiasesContent = , value : Int } +type alias MsgSsrCodePhaseBiasesBounds = + { constID : Int + , header : BoundsHeader + , nSatsSignals : Int + , satellitesSignals : Array CodePhaseBiasesSatSig + , ssrIod : Int + } + +type alias BoundsHeader = + { numMsgs : Int + , seqNum : Int + , solID : Int + , time : GpsTimeSEC + , updateInterval : Int + } + +type alias CodePhaseBiasesSatSig = + { codeBiasBoundMu : Int + , codeBiasBoundSig : Int + , phaseBiasBoundMu : Int + , phaseBiasBoundSig : Int + , satID : Int + , signalID : Int + } + {-| STEC residuals are per space vehicle, troposphere is not., , It is typically equivalent to the QZSS CLAS Sub Type 9 messages. @@ -2470,14 +2503,6 @@ type alias MsgSsrOrbitClockBounds = , ssrIod : Int } -type alias BoundsHeader = - { numMsgs : Int - , seqNum : Int - , solID : Int - , time : GpsTimeSEC - , updateInterval : Int - } - {-| Orbit and clock bound. -} type alias OrbitClockBound = { clockBoundMu : Int @@ -3021,6 +3046,9 @@ carrierPhaseToString r = Jenc.encode 0 (encodeCarrierPhase r) codeBiasesContentToString : CodeBiasesContent -> String codeBiasesContentToString r = Jenc.encode 0 (encodeCodeBiasesContent r) +codePhaseBiasesSatSigToString : CodePhaseBiasesSatSig -> String +codePhaseBiasesSatSigToString r = Jenc.encode 0 (encodeCodePhaseBiasesSatSig r) + dopplerToString : Doppler -> String dopplerToString r = Jenc.encode 0 (encodeDoppler r) @@ -3438,6 +3466,9 @@ msgSpecanToString r = Jenc.encode 0 (encodeMsgSpecan r) msgSsrCodeBiasesToString : MsgSsrCodeBiases -> String msgSsrCodeBiasesToString r = Jenc.encode 0 (encodeMsgSsrCodeBiases r) +msgSsrCodePhaseBiasesBoundsToString : MsgSsrCodePhaseBiasesBounds -> String +msgSsrCodePhaseBiasesBoundsToString r = Jenc.encode 0 (encodeMsgSsrCodePhaseBiasesBounds r) + msgSsrGriddedCorrectionToString : MsgSsrGriddedCorrection -> String msgSsrGriddedCorrectionToString r = Jenc.encode 0 (encodeMsgSsrGriddedCorrection r) @@ -6124,6 +6155,65 @@ encodeCodeBiasesContent x = , ("value", Jenc.int x.value) ] +msgSsrCodePhaseBiasesBounds : Jdec.Decoder MsgSsrCodePhaseBiasesBounds +msgSsrCodePhaseBiasesBounds = + Jpipe.decode MsgSsrCodePhaseBiasesBounds + |> Jpipe.required "const_id" Jdec.int + |> Jpipe.required "header" boundsHeader + |> Jpipe.required "n_sats_signals" Jdec.int + |> Jpipe.required "satellites_signals" (Jdec.array codePhaseBiasesSatSig) + |> Jpipe.required "ssr_iod" Jdec.int + +encodeMsgSsrCodePhaseBiasesBounds : MsgSsrCodePhaseBiasesBounds -> Jenc.Value +encodeMsgSsrCodePhaseBiasesBounds x = + Jenc.object + [ ("const_id", Jenc.int x.constID) + , ("header", encodeBoundsHeader x.header) + , ("n_sats_signals", Jenc.int x.nSatsSignals) + , ("satellites_signals", makeArrayEncoder encodeCodePhaseBiasesSatSig x.satellitesSignals) + , ("ssr_iod", Jenc.int x.ssrIod) + ] + +boundsHeader : Jdec.Decoder BoundsHeader +boundsHeader = + Jpipe.decode BoundsHeader + |> Jpipe.required "num_msgs" Jdec.int + |> Jpipe.required "seq_num" Jdec.int + |> Jpipe.required "sol_id" Jdec.int + |> Jpipe.required "time" gpsTimeSEC + |> Jpipe.required "update_interval" Jdec.int + +encodeBoundsHeader : BoundsHeader -> Jenc.Value +encodeBoundsHeader x = + Jenc.object + [ ("num_msgs", Jenc.int x.numMsgs) + , ("seq_num", Jenc.int x.seqNum) + , ("sol_id", Jenc.int x.solID) + , ("time", encodeGpsTimeSEC x.time) + , ("update_interval", Jenc.int x.updateInterval) + ] + +codePhaseBiasesSatSig : Jdec.Decoder CodePhaseBiasesSatSig +codePhaseBiasesSatSig = + Jpipe.decode CodePhaseBiasesSatSig + |> Jpipe.required "code_bias_bound_mu" Jdec.int + |> Jpipe.required "code_bias_bound_sig" Jdec.int + |> Jpipe.required "phase_bias_bound_mu" Jdec.int + |> Jpipe.required "phase_bias_bound_sig" Jdec.int + |> Jpipe.required "sat_id" Jdec.int + |> Jpipe.required "signal_id" Jdec.int + +encodeCodePhaseBiasesSatSig : CodePhaseBiasesSatSig -> Jenc.Value +encodeCodePhaseBiasesSatSig x = + Jenc.object + [ ("code_bias_bound_mu", Jenc.int x.codeBiasBoundMu) + , ("code_bias_bound_sig", Jenc.int x.codeBiasBoundSig) + , ("phase_bias_bound_mu", Jenc.int x.phaseBiasBoundMu) + , ("phase_bias_bound_sig", Jenc.int x.phaseBiasBoundSig) + , ("sat_id", Jenc.int x.satID) + , ("signal_id", Jenc.int x.signalID) + ] + msgSsrGriddedCorrection : Jdec.Decoder MsgSsrGriddedCorrection msgSsrGriddedCorrection = Jpipe.decode MsgSsrGriddedCorrection @@ -6222,25 +6312,6 @@ encodeMsgSsrOrbitClockBounds x = , ("ssr_iod", Jenc.int x.ssrIod) ] -boundsHeader : Jdec.Decoder BoundsHeader -boundsHeader = - Jpipe.decode BoundsHeader - |> Jpipe.required "num_msgs" Jdec.int - |> Jpipe.required "seq_num" Jdec.int - |> Jpipe.required "sol_id" Jdec.int - |> Jpipe.required "time" gpsTimeSEC - |> Jpipe.required "update_interval" Jdec.int - -encodeBoundsHeader : BoundsHeader -> Jenc.Value -encodeBoundsHeader x = - Jenc.object - [ ("num_msgs", Jenc.int x.numMsgs) - , ("seq_num", Jenc.int x.seqNum) - , ("sol_id", Jenc.int x.solID) - , ("time", encodeGpsTimeSEC x.time) - , ("update_interval", Jenc.int x.updateInterval) - ] - orbitClockBound : Jdec.Decoder OrbitClockBound orbitClockBound = Jpipe.decode OrbitClockBound diff --git a/sbpjson/javascript/SbpJson.js b/sbpjson/javascript/SbpJson.js index ba6157c2e4..59a78d276d 100644 --- a/sbpjson/javascript/SbpJson.js +++ b/sbpjson/javascript/SbpJson.js @@ -7,6 +7,7 @@ // const boundsHeader = Convert.toBoundsHeader(json); // const carrierPhase = Convert.toCarrierPhase(json); // const codeBiasesContent = Convert.toCodeBiasesContent(json); +// const codePhaseBiasesSatSig = Convert.toCodePhaseBiasesSatSig(json); // const doppler = Convert.toDoppler(json); // const ephemerisCommonContent = Convert.toEphemerisCommonContent(json); // const estimatedHorizontalErrorEllipse = Convert.toEstimatedHorizontalErrorEllipse(json); @@ -137,6 +138,7 @@ // const msgSolnMeta = Convert.toMsgSolnMeta(json); // const msgSpecan = Convert.toMsgSpecan(json); // const msgSsrCodeBiases = Convert.toMsgSsrCodeBiases(json); +// const msgSsrCodePhaseBiasesBounds = Convert.toMsgSsrCodePhaseBiasesBounds(json); // const msgSsrGriddedCorrection = Convert.toMsgSsrGriddedCorrection(json); // const msgSsrOrbitClock = Convert.toMsgSsrOrbitClock(json); // const msgSsrOrbitClockBounds = Convert.toMsgSsrOrbitClockBounds(json); @@ -239,6 +241,14 @@ function codeBiasesContentToJson(value) { return JSON.stringify(uncast(value, r("CodeBiasesContent")), null, 2); } +function toCodePhaseBiasesSatSig(json) { + return cast(JSON.parse(json), r("CodePhaseBiasesSatSig")); +} + +function codePhaseBiasesSatSigToJson(value) { + return JSON.stringify(uncast(value, r("CodePhaseBiasesSatSig")), null, 2); +} + function toDoppler(json) { return cast(JSON.parse(json), r("Doppler")); } @@ -1279,6 +1289,14 @@ function msgSsrCodeBiasesToJson(value) { return JSON.stringify(uncast(value, r("MsgSsrCodeBiases")), null, 2); } +function toMsgSsrCodePhaseBiasesBounds(json) { + return cast(JSON.parse(json), r("MsgSsrCodePhaseBiasesBounds")); +} + +function msgSsrCodePhaseBiasesBoundsToJson(value) { + return JSON.stringify(uncast(value, r("MsgSsrCodePhaseBiasesBounds")), null, 2); +} + function toMsgSsrGriddedCorrection(json) { return cast(JSON.parse(json), r("MsgSsrGriddedCorrection")); } @@ -2785,6 +2803,28 @@ const typeMap = { { json: "code", js: "code", typ: 0 }, { json: "value", js: "value", typ: 0 }, ], "any"), + "MsgSsrCodePhaseBiasesBounds": o([ + { json: "const_id", js: "const_id", typ: 0 }, + { json: "header", js: "header", typ: r("BoundsHeader") }, + { json: "n_sats_signals", js: "n_sats_signals", typ: 0 }, + { json: "satellites_signals", js: "satellites_signals", typ: a(r("CodePhaseBiasesSatSig")) }, + { json: "ssr_iod", js: "ssr_iod", typ: 0 }, + ], "any"), + "BoundsHeader": o([ + { json: "num_msgs", js: "num_msgs", typ: 0 }, + { json: "seq_num", js: "seq_num", typ: 0 }, + { json: "sol_id", js: "sol_id", typ: 0 }, + { json: "time", js: "time", typ: r("GpsTimeSEC") }, + { json: "update_interval", js: "update_interval", typ: 0 }, + ], "any"), + "CodePhaseBiasesSatSig": o([ + { json: "code_bias_bound_mu", js: "code_bias_bound_mu", typ: 0 }, + { json: "code_bias_bound_sig", js: "code_bias_bound_sig", typ: 0 }, + { json: "phase_bias_bound_mu", js: "phase_bias_bound_mu", typ: 0 }, + { json: "phase_bias_bound_sig", js: "phase_bias_bound_sig", typ: 0 }, + { json: "sat_id", js: "sat_id", typ: 0 }, + { json: "signal_id", js: "signal_id", typ: 0 }, + ], "any"), "MsgSsrGriddedCorrection": o([ { json: "header", js: "header", typ: r("GriddedCorrectionHeader") }, { json: "index", js: "index", typ: 0 }, @@ -2824,13 +2864,6 @@ const typeMap = { { json: "orbit_clock_bounds", js: "orbit_clock_bounds", typ: a(r("OrbitClockBound")) }, { json: "ssr_iod", js: "ssr_iod", typ: 0 }, ], "any"), - "BoundsHeader": o([ - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "sol_id", js: "sol_id", typ: 0 }, - { json: "time", js: "time", typ: r("GpsTimeSEC") }, - { json: "update_interval", js: "update_interval", typ: 0 }, - ], "any"), "OrbitClockBound": o([ { json: "clock_bound_mu", js: "clock_bound_mu", typ: 0 }, { json: "clock_bound_sig", js: "clock_bound_sig", typ: 0 }, @@ -3157,6 +3190,8 @@ module.exports = { "toCarrierPhase": toCarrierPhase, "codeBiasesContentToJson": codeBiasesContentToJson, "toCodeBiasesContent": toCodeBiasesContent, + "codePhaseBiasesSatSigToJson": codePhaseBiasesSatSigToJson, + "toCodePhaseBiasesSatSig": toCodePhaseBiasesSatSig, "dopplerToJson": dopplerToJson, "toDoppler": toDoppler, "ephemerisCommonContentToJson": ephemerisCommonContentToJson, @@ -3417,6 +3452,8 @@ module.exports = { "toMsgSpecan": toMsgSpecan, "msgSsrCodeBiasesToJson": msgSsrCodeBiasesToJson, "toMsgSsrCodeBiases": toMsgSsrCodeBiases, + "msgSsrCodePhaseBiasesBoundsToJson": msgSsrCodePhaseBiasesBoundsToJson, + "toMsgSsrCodePhaseBiasesBounds": toMsgSsrCodePhaseBiasesBounds, "msgSsrGriddedCorrectionToJson": msgSsrGriddedCorrectionToJson, "toMsgSsrGriddedCorrection": toMsgSsrGriddedCorrection, "msgSsrOrbitClockToJson": msgSsrOrbitClockToJson, diff --git a/sbpjson/typescript/SbpJson.ts b/sbpjson/typescript/SbpJson.ts index 268f6c57b2..d0f59f1b96 100644 --- a/sbpjson/typescript/SbpJson.ts +++ b/sbpjson/typescript/SbpJson.ts @@ -1,12 +1,13 @@ // To parse this data: // -// import { Convert, AcqSvProfile, AlmanacCommonContent, BoundsHeader, 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, MsgSsrOrbitClockBounds, 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, OrbitClockBound, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, SatelliteAPC, SolutionInputType, StatusJournalItem, SubSystemReport, SvAzEl, SvID, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel } from "./file"; +// import { Convert, AcqSvProfile, AlmanacCommonContent, BoundsHeader, CarrierPhase, CodeBiasesContent, CodePhaseBiasesSatSig, 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, MsgSsrCodePhaseBiasesBounds, MsgSsrGriddedCorrection, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, 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, OrbitClockBound, 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); // const boundsHeader = Convert.toBoundsHeader(json); // const carrierPhase = Convert.toCarrierPhase(json); // const codeBiasesContent = Convert.toCodeBiasesContent(json); +// const codePhaseBiasesSatSig = Convert.toCodePhaseBiasesSatSig(json); // const doppler = Convert.toDoppler(json); // const ephemerisCommonContent = Convert.toEphemerisCommonContent(json); // const estimatedHorizontalErrorEllipse = Convert.toEstimatedHorizontalErrorEllipse(json); @@ -137,6 +138,7 @@ // const msgSolnMeta = Convert.toMsgSolnMeta(json); // const msgSpecan = Convert.toMsgSpecan(json); // const msgSsrCodeBiases = Convert.toMsgSsrCodeBiases(json); +// const msgSsrCodePhaseBiasesBounds = Convert.toMsgSsrCodePhaseBiasesBounds(json); // const msgSsrGriddedCorrection = Convert.toMsgSsrGriddedCorrection(json); // const msgSsrOrbitClock = Convert.toMsgSsrOrbitClock(json); // const msgSsrOrbitClockBounds = Convert.toMsgSsrOrbitClockBounds(json); @@ -1960,6 +1962,31 @@ export interface CodeBiasesContent { value: number; } +export interface MsgSsrCodePhaseBiasesBounds { + const_id: number; + header: BoundsHeader; + n_sats_signals: number; + satellites_signals: CodePhaseBiasesSatSig[]; + ssr_iod: number; +} + +export interface BoundsHeader { + num_msgs: number; + seq_num: number; + sol_id: number; + time: GpsTimeSEC; + update_interval: number; +} + +export interface CodePhaseBiasesSatSig { + code_bias_bound_mu: number; + code_bias_bound_sig: number; + phase_bias_bound_mu: number; + phase_bias_bound_sig: number; + sat_id: number; + signal_id: number; +} + /** * STEC residuals are per space vehicle, troposphere is not., * , @@ -2016,14 +2043,6 @@ export interface MsgSsrOrbitClockBounds { ssr_iod: number; } -export interface BoundsHeader { - num_msgs: number; - seq_num: number; - sol_id: number; - time: GpsTimeSEC; - update_interval: number; -} - /** * Orbit and clock bound. */ @@ -2642,6 +2661,14 @@ export class Convert { return JSON.stringify(uncast(value, r("CodeBiasesContent")), null, 2); } + public static toCodePhaseBiasesSatSig(json: string): CodePhaseBiasesSatSig { + return cast(JSON.parse(json), r("CodePhaseBiasesSatSig")); + } + + public static codePhaseBiasesSatSigToJson(value: CodePhaseBiasesSatSig): string { + return JSON.stringify(uncast(value, r("CodePhaseBiasesSatSig")), null, 2); + } + public static toDoppler(json: string): Doppler { return cast(JSON.parse(json), r("Doppler")); } @@ -3682,6 +3709,14 @@ export class Convert { return JSON.stringify(uncast(value, r("MsgSsrCodeBiases")), null, 2); } + public static toMsgSsrCodePhaseBiasesBounds(json: string): MsgSsrCodePhaseBiasesBounds { + return cast(JSON.parse(json), r("MsgSsrCodePhaseBiasesBounds")); + } + + public static msgSsrCodePhaseBiasesBoundsToJson(value: MsgSsrCodePhaseBiasesBounds): string { + return JSON.stringify(uncast(value, r("MsgSsrCodePhaseBiasesBounds")), null, 2); + } + public static toMsgSsrGriddedCorrection(json: string): MsgSsrGriddedCorrection { return cast(JSON.parse(json), r("MsgSsrGriddedCorrection")); } @@ -5189,6 +5224,28 @@ const typeMap: any = { { json: "code", js: "code", typ: 0 }, { json: "value", js: "value", typ: 0 }, ], "any"), + "MsgSsrCodePhaseBiasesBounds": o([ + { json: "const_id", js: "const_id", typ: 0 }, + { json: "header", js: "header", typ: r("BoundsHeader") }, + { json: "n_sats_signals", js: "n_sats_signals", typ: 0 }, + { json: "satellites_signals", js: "satellites_signals", typ: a(r("CodePhaseBiasesSatSig")) }, + { json: "ssr_iod", js: "ssr_iod", typ: 0 }, + ], "any"), + "BoundsHeader": o([ + { json: "num_msgs", js: "num_msgs", typ: 0 }, + { json: "seq_num", js: "seq_num", typ: 0 }, + { json: "sol_id", js: "sol_id", typ: 0 }, + { json: "time", js: "time", typ: r("GpsTimeSEC") }, + { json: "update_interval", js: "update_interval", typ: 0 }, + ], "any"), + "CodePhaseBiasesSatSig": o([ + { json: "code_bias_bound_mu", js: "code_bias_bound_mu", typ: 0 }, + { json: "code_bias_bound_sig", js: "code_bias_bound_sig", typ: 0 }, + { json: "phase_bias_bound_mu", js: "phase_bias_bound_mu", typ: 0 }, + { json: "phase_bias_bound_sig", js: "phase_bias_bound_sig", typ: 0 }, + { json: "sat_id", js: "sat_id", typ: 0 }, + { json: "signal_id", js: "signal_id", typ: 0 }, + ], "any"), "MsgSsrGriddedCorrection": o([ { json: "header", js: "header", typ: r("GriddedCorrectionHeader") }, { json: "index", js: "index", typ: 0 }, @@ -5228,13 +5285,6 @@ const typeMap: any = { { json: "orbit_clock_bounds", js: "orbit_clock_bounds", typ: a(r("OrbitClockBound")) }, { json: "ssr_iod", js: "ssr_iod", typ: 0 }, ], "any"), - "BoundsHeader": o([ - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "sol_id", js: "sol_id", typ: 0 }, - { json: "time", js: "time", typ: r("GpsTimeSEC") }, - { json: "update_interval", js: "update_interval", typ: 0 }, - ], "any"), "OrbitClockBound": o([ { json: "clock_bound_mu", js: "clock_bound_mu", typ: 0 }, { json: "clock_bound_sig", js: "clock_bound_sig", typ: 0 },