From bde9feb9a85bd482ea7249d685ef2dd41c3e50a0 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Thu, 5 May 2022 14:09:38 -0400 Subject: [PATCH 01/11] Add Integrity Flags messages [OTA-121] --- python/tests/sbp/test_table.py | 2 +- .../integrity/test_MsgSsrFlagHighLevel.yaml | 46 ++++ .../test_MsgSsrFlagIonoGridPointSatLos.yaml | 38 +++ .../test_MsgSsrFlagIonoGridPoints.yaml | 35 +++ .../test_MsgSsrFlagIonoTileSatLos.yaml | 37 +++ .../integrity/test_MsgSsrFlagSatellites.yaml | 31 +++ .../test_MsgSsrFlagTropoGridPoints.yaml | 35 +++ spec/yaml/swiftnav/sbp/integrity.yaml | 242 ++++++++++++++++++ 8 files changed, 465 insertions(+), 1 deletion(-) create mode 100644 spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml create mode 100644 spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml create mode 100644 spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml create mode 100644 spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml create mode 100644 spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagSatellites.yaml create mode 100644 spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml create mode 100644 spec/yaml/swiftnav/sbp/integrity.yaml diff --git a/python/tests/sbp/test_table.py b/python/tests/sbp/test_table.py index a9f68a91af..e124abb917 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 = 211 + number_of_messages = 217 assert len(_SBP_TABLE) == number_of_messages def test_table_unqiue_count(): diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml new file mode 100644 index 0000000000..7164ae9659 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml @@ -0,0 +1,46 @@ +description: Unit tests for swiftnav.sbp.integrity MsgSsrFlagHighLevel +generated_on: 2022-04-21 # manually generated +package: sbp.integrity +tests: + +- msg: + fields: + obs_time: + tow: 180 + wn: 3 + corr_time: + tow: 360 + wn: 6 + ssr_sol_id: 10 + tile_set_id: 20 + tile_id: 30 + chain_id: 40 + use_gps_sat: 1 + use_gal_sat: 2 + use_bds_sat: 3 + reserved: + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + use_tropo_grid_points: 4 + use_iono_grid_points: 5 + use_iono_tile_sat_los: 6 + use_iono_grid_point_sat_los: 7 + module: sbp.integrity + name: MsgSsrFlagHighLevel + msg_type: '3001' + raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "corr_time": {"tow": 360, "wn": 6}, "ssr_sol_id": 10, "tile_set_id": 20, + "tile_id": 30, "chain_id": 40, "use_gps_sat": 1, "use_gal_sat": 3, "reserved": [0,0,0,0,0,0], + "use_tropo_grid_points": 4, "use_iono_grid_points": 5, "use_iono_tile_sat_los": 6, "use_iono_grid_point_sat_los": 7, + "preamble": 85, "msg_type": 3001, "sender": 66, "length": 31, "payload": "tAAAAAMAaAEAAAYAChQAHgAoAQIDAAAAAAAABAUGBw==", "crc": 17254}' + raw_packet: VbkLQgAftAAAAAMAaAEAAAYAChQAHgAoAQIDAAAAAAAABAUGB2ZD + sbp: + preamble: '0x55' + msg_type: '0x0BB9' + sender: '0x0042' + length: 31 + payload: tAAAAAMAaAEAAAYAChQAHgAoAQIDAAAAAAAABAUGBw== + crc: '0x4366' diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml new file mode 100644 index 0000000000..581553b026 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml @@ -0,0 +1,38 @@ +description: Unit tests for swiftnav.sbp.integrity MsgSsrFlagIonoGridPointSatLos +generated_on: 2022-04-22 # manually generated +package: sbp.integrity +tests: + +- msg: + fields: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 + grid_point_id: 30 + n_faulty_los: 2 + faulty_los: + - satId: 10 + constellation: 11 + - satId: 15 + constellation: 14 + module: sbp.integrity + name: MsgSsrFlagIonoGridPointSatLos + msg_type: '3025' + raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6, "grid_point_id": 30, "n_faulty_los": 3, "faulty_los": [{"satId": 10, + "constellation": 11}, {"satId": 15, "constellation": 14}], "preamble": 85, "msg_type": 3025, "sender": 66, "length": 21, + "payload": "tAAAAAMAAQIDBAAFAAYeAAIKCw8O", "crc": 37986}' + raw_packet: VdELQgAVtAAAAAMAAQIDBAAFAAYeAAIKCw8OYpQ= + sbp: + preamble: '0x55' + msg_type: '0x0BD1' + sender: '0x0042' + length: 21 + payload: tAAAAAMAAQIDBAAFAAYeAAIKCw8O + crc: '0x9462' diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml new file mode 100644 index 0000000000..eed8439728 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml @@ -0,0 +1,35 @@ +description: Unit tests for swiftnav.sbp.integrity MsgSsrFlagIonoGridPoints +generated_on: 2022-04-22 # manually generated +package: sbp.integrity +tests: + +- msg: + fields: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 + n_faulty_points: 3 + faulty_points: + - 10 + - 11 + - 12 + module: sbp.integrity + name: MsgSsrFlagIonoGridPoints + msg_type: '3015' + raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6, "n_faulty_points": 3, "faulty_points": [10, 11, 12], "preamble": 85, "msg_type": 3015, + "sender": 66, "length": 21, "payload": "tAAAAAMAAQIDBAAFAAYDCgALAAwA", "crc": 1845}' + raw_packet: VccLQgAVtAAAAAMAAQIDBAAFAAYDCgALAAwANQc= + sbp: + preamble: '0x55' + msg_type: '0x0BC7' + sender: '0x0042' + length: 21 + payload: tAAAAAMAAQIDBAAFAAYDCgALAAwA + crc: '0x0735' diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml new file mode 100644 index 0000000000..59c83cb344 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml @@ -0,0 +1,37 @@ +description: Unit tests for swiftnav.sbp.integrity MsgSsrFlagIonoTileSatLos +generated_on: 2022-04-22 # manually generated +package: sbp.integrity +tests: + +- msg: + fields: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 + n_faulty_los: 2 + faulty_los: + - satId: 10 + constellation: 11 + - satId: 15 + constellation: 14 + module: sbp.integrity + name: MsgSsrFlagIonoTileSatLos + msg_type: '3021' + raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6, "n_faulty_los": 3, "faulty_los": [{"satId": 10, "constellation": 11}, {"satId": 15, + "constellation": 14}], "preamble": 85, "msg_type": 3021, "sender": 66, "length": 19, + "payload": "tAAAAAMAAQIDBAAFAAYCCgsPDg==", "crc": 60399}' + raw_packet: Vc0LQgATtAAAAAMAAQIDBAAFAAYCCgsPDu/r + sbp: + preamble: '0x55' + msg_type: '0x0BCD' + sender: '0x0042' + length: 19 + payload: tAAAAAMAAQIDBAAFAAYCCgsPDg== + crc: '0xEBEF' diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagSatellites.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagSatellites.yaml new file mode 100644 index 0000000000..f06693fd24 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagSatellites.yaml @@ -0,0 +1,31 @@ +description: Unit tests for swiftnav.sbp.integrity MsgSsrFlagSatellites +generated_on: 2022-04-22 # manually generated +package: sbp.integrity +tests: + +- msg: + fields: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + chain_id: 4 + const_id: 5 + n_faulty_sats: 3 + faulty_sats: [10,11,12] + module: sbp.integrity + name: MsgSsrFlagSatellites + msg_type: '3005' + raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "chain_id": 4, "const_id": 5, + "n_faulty_sats": 3, "faulty_sats": [10, 11, 12], "preamble": 85, "msg_type": 3005, "sender": 66, "length": 15, + "payload": "tAAAAAMAAQIDBAUDCgsM", "crc": 42350}' + raw_packet: Vb0LQgAPtAAAAAMAAQIDBAUDCgsMbqU= + sbp: + preamble: '0x55' + msg_type: '0x0BBD' + sender: '0x0042' + length: 15 + payload: tAAAAAMAAQIDBAUDCgsM + crc: '0xA56E' diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml new file mode 100644 index 0000000000..46dec64204 --- /dev/null +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml @@ -0,0 +1,35 @@ +description: Unit tests for swiftnav.sbp.integrity MsgSsrFlagTropoGridPoints +generated_on: 2022-04-22 # manually generated +package: sbp.integrity +tests: + +- msg: + fields: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 + n_faulty_points: 3 + faulty_points: + - 10 + - 11 + - 12 + module: sbp.integrity + name: MsgSsrFlagTropoGridPoints + msg_type: '3011' + raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6, "n_faulty_points": 3, "faulty_points": [10, 11, 12], "preamble": 85, "msg_type": 3011, + "sender": 66, "length": 21, "payload": "tAAAAAMAAQIDBAAFAAYDCgALAAwA", "crc": 38643}' + raw_packet: VcMLQgAVtAAAAAMAAQIDBAAFAAYDCgALAAwA85Y= + sbp: + preamble: '0x55' + msg_type: '0x0BC3' + sender: '0x0042' + length: 21 + payload: tAAAAAMAAQIDBAAFAAYDCgALAAwA + crc: '0x96F3' diff --git a/spec/yaml/swiftnav/sbp/integrity.yaml b/spec/yaml/swiftnav/sbp/integrity.yaml new file mode 100644 index 0000000000..1e71ac1bd1 --- /dev/null +++ b/spec/yaml/swiftnav/sbp/integrity.yaml @@ -0,0 +1,242 @@ +# Copyright (C) 2018-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: swiftnav.sbp.integrity +description: Integrity flag messages +stable: False +public: False +include: + - types.yaml + - gnss.yaml +definitions: + - MSG_SSR_FLAG_HIGH_LEVEL: + id: 0x0BB9 + short_desc: High level integrity flags + public: False + fields: + - obs_time: + type: GPSTimeSec + desc: GNSS reference time of the observation used to generate the flag. + - corr_time: + type: GPSTimeSec + desc: GNSS reference time of the correction associated to the flag. + - ssr_sol_id: + type: u8 + desc: SSR Solution ID. + - tile_set_id: + type: u16 + desc: Unique identifier of the set this tile belongs to. + - tile_id: + type: u16 + desc: Unique identifier of this tile in the tile set. + - chain_id: + type: u8 + desc: Chain and type of flag. + - use_gps_sat: + type: u8 + desc: Use GPS satellites. + - use_gal_sat: + type: u8 + desc: Use GAL satellites. + - use_bds_sat: + type: u8 + desc: Use BDS satellites. + - reserved: + type: array + size: 6 + fill: u8 + desc: Reserved + - use_tropo_grid_points: + type: u8 + desc: Use tropo grid points. + - use_iono_grid_points: + type: u8 + desc: Use iono grid points. + - use_iono_tile_sat_los: + type: u8 + desc: Use iono tile satellite LoS. + - use_iono_grid_point_sat_los: + type: u8 + desc: Use iono grid point satellite LoS. + + - MSG_SSR_FLAG_SATELLITES: + id: 0x0BBD + short_desc: List of satellites which are faulty, per constellation + public: False + fields: + - obs_time: + type: GPSTimeSec + desc: GNSS reference time of the observation used to generate the flag. + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Position of this message in the dataset + - ssr_sol_id: + type: u8 + desc: SSR Solution ID. + - chain_id: + type: u8 + desc: Chain and type of flag. + - const_id: + type: u8 + desc: Constellation ID. + - n_faulty_sats: + type: u8 + desc: Number of faulty satellites. + - faulty_sats: + type: array + fill: u8 + size_fn: n_faulty_sats + desc: List of faulty satellites. + + - MSG_SSR_FLAG_TROPO_GRID_POINTS: + id: 0x0BC3 + short_desc: List of grid points which are faulty + public: False + fields: + - obs_time: + type: GPSTimeSec + desc: GNSS reference time of the observation used to generate the flag. + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Position of this message in the dataset + - ssr_sol_id: + type: u8 + desc: SSR Solution ID. + - tile_set_id: + type: u16 + desc: Unique identifier of the set this tile belongs to. + - tile_id: + type: u16 + desc: Unique identifier of this tile in the tile set. + - chain_id: + type: u8 + desc: Chain and type of flag. + - n_faulty_points: + type: u8 + desc: Number of faulty grid points. + - faulty_points: + type: array + fill: u16 + size_fn: n_faulty_points + desc: List of faulty grid points. + + - MSG_SSR_FLAG_IONO_GRID_POINTS: + id: 0x0BC7 + short_desc: List of grid points which are faulty + public: False + fields: + - obs_time: + type: GPSTimeSec + desc: GNSS reference time of the observation used to generate the flag. + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Position of this message in the dataset + - ssr_sol_id: + type: u8 + desc: SSR Solution ID. + - tile_set_id: + type: u16 + desc: Unique identifier of the set this tile belongs to. + - tile_id: + type: u16 + desc: Unique identifier of this tile in the tile set. + - chain_id: + type: u8 + desc: Chain and type of flag. + - n_faulty_points: + type: u8 + desc: Number of faulty grid points. + - faulty_points: + type: array + fill: u16 + size_fn: n_faulty_points + desc: List of faulty grid points. + + - MSG_SSR_FLAG_IONO_TILE_SAT_LOS: + id: 0x0BCD + short_desc: List of all the LOS which are faulty + public: False + fields: + - obs_time: + type: GPSTimeSec + desc: GNSS reference time of the observation used to generate the flag. + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Position of this message in the dataset + - ssr_sol_id: + type: u8 + desc: SSR Solution ID. + - tile_set_id: + type: u16 + desc: Unique identifier of the set this tile belongs to. + - tile_id: + type: u16 + desc: Unique identifier of this tile in the tile set. + - chain_id: + type: u8 + desc: Chain and type of flag. + - n_faulty_los: + type: u8 + desc: Number of faulty LOS. + - faulty_los: + type: array + fill: SvId + size_fn: n_faulty_los + desc: List of faulty LOS + + - MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS: + id: 0x0BD1 + short_desc: List of all the grid points to satellite which are faulty + public: False + fields: + - obs_time: + type: GPSTimeSec + desc: GNSS reference time of the observation used to generate the flag. + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Position of this message in the dataset + - ssr_sol_id: + type: u8 + desc: SSR Solution ID. + - tile_set_id: + type: u16 + desc: Unique identifier of the set this tile belongs to. + - tile_id: + type: u16 + desc: Unique identifier of this tile in the tile set. + - chain_id: + type: u8 + desc: Chain and type of flag. + - grid_point_id: + type: u16 + desc: Index of the grid point. + - n_faulty_los: + type: u8 + desc: Number of faulty LOS. + - faulty_los: + type: array + fill: SvId + size_fn: n_faulty_los + desc: List of faulty LOS From 434749201562eaf485a7d6c57116fca9b3fd6518 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 11:08:44 -0400 Subject: [PATCH 02/11] make all --- c/include/libsbp/cpp/message_traits.h | 226 ++++ c/include/libsbp/integrity.h | 30 + c/include/libsbp/integrity_macros.h | 156 +++ c/include/libsbp/legacy/cpp/message_traits.h | 37 + c/include/libsbp/legacy/integrity.h | 130 ++ c/include/libsbp/sbp_msg_type.h | 7 + c/include/libsbp/v4/integrity.h | 27 + .../v4/integrity/MSG_SSR_FLAG_HIGH_LEVEL.h | 242 ++++ .../integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h | 220 ++++ .../MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h | 235 ++++ .../MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h | 222 ++++ .../v4/integrity/MSG_SSR_FLAG_SATELLITES.h | 212 ++++ .../MSG_SSR_FLAG_TROPO_GRID_POINTS.h | 221 ++++ c/include/libsbp/v4/sbp_msg.h | 78 ++ c/src/include/libsbp/internal/v4/integrity.h | 156 +++ c/src/v4/integrity.c | 1097 +++++++++++++++++ ..._check_sbp_integrity_MsgSsrFlagHighLevel.c | 306 +++++ ..._integrity_MsgSsrFlagIonoGridPointSatLos.c | 266 ++++ ...k_sbp_integrity_MsgSsrFlagIonoGridPoints.c | 237 ++++ ...k_sbp_integrity_MsgSsrFlagIonoTileSatLos.c | 253 ++++ ...check_sbp_integrity_MsgSsrFlagSatellites.c | 227 ++++ ..._sbp_integrity_MsgSsrFlagTropoGridPoints.c | 240 ++++ c/test/check_main.c | 10 + c/test/check_main_legacy.c | 13 + c/test/check_suites.h | 6 + c/test/check_suites_legacy.h | 7 + ...check_sbp_integrity_MsgSsrFlagHighLevel.cc | 188 +++ ...integrity_MsgSsrFlagIonoGridPointSatLos.cc | 158 +++ ..._sbp_integrity_MsgSsrFlagIonoGridPoints.cc | 148 +++ ..._sbp_integrity_MsgSsrFlagIonoTileSatLos.cc | 154 +++ ...heck_sbp_integrity_MsgSsrFlagSatellites.cc | 144 +++ ...sbp_integrity_MsgSsrFlagTropoGridPoints.cc | 149 +++ ..._check_sbp_integrity_MsgSsrFlagHighLevel.c | 318 +++++ ..._integrity_MsgSsrFlagIonoGridPointSatLos.c | 275 +++++ ...k_sbp_integrity_MsgSsrFlagIonoGridPoints.c | 267 ++++ ...k_sbp_integrity_MsgSsrFlagIonoTileSatLos.c | 269 ++++ ...check_sbp_integrity_MsgSsrFlagSatellites.c | 262 ++++ ..._sbp_integrity_MsgSsrFlagTropoGridPoints.c | 267 ++++ ...check_sbp_integrity_MsgSsrFlagHighLevel.cc | 211 ++++ ...integrity_MsgSsrFlagIonoGridPointSatLos.cc | 166 +++ ..._sbp_integrity_MsgSsrFlagIonoGridPoints.cc | 160 +++ ..._sbp_integrity_MsgSsrFlagIonoTileSatLos.cc | 160 +++ ...heck_sbp_integrity_MsgSsrFlagSatellites.cc | 156 +++ ...sbp_integrity_MsgSsrFlagTropoGridPoints.cc | 160 +++ haskell/sbp.cabal | 1 + haskell/src/SwiftNav/SBP.hs | 1 + haskell/src/SwiftNav/SBP/Integrity.hs | 369 ++++++ haskell/src/SwiftNav/SBP/Msg.hs | 37 + .../com/swiftnav/sbp/client/MessageTable.java | 18 + .../sbp/integrity/MsgSsrFlagHighLevel.java | 137 ++ .../MsgSsrFlagIonoGridPointSatLos.java | 113 ++ .../integrity/MsgSsrFlagIonoGridPoints.java | 107 ++ .../integrity/MsgSsrFlagIonoTileSatLos.java | 107 ++ .../sbp/integrity/MsgSsrFlagSatellites.java | 101 ++ .../integrity/MsgSsrFlagTropoGridPoints.java | 107 ++ ...sbp_integrity_MsgSsrFlagHighLevelTest.java | 282 +++++ ...ity_MsgSsrFlagIonoGridPointSatLosTest.java | 200 +++ ...ntegrity_MsgSsrFlagIonoGridPointsTest.java | 180 +++ ...ntegrity_MsgSsrFlagIonoTileSatLosTest.java | 188 +++ ...bp_integrity_MsgSsrFlagSatellitesTest.java | 151 +++ ...tegrity_MsgSsrFlagTropoGridPointsTest.java | 180 +++ javascript/sbp/integrity.js | 361 ++++++ jsonschema/MsgSsrFlagHighLevel.json | 48 + jsonschema/MsgSsrFlagIonoGridPointSatLos.json | 42 + jsonschema/MsgSsrFlagIonoGridPoints.json | 40 + jsonschema/MsgSsrFlagIonoTileSatLos.json | 40 + jsonschema/MsgSsrFlagSatellites.json | 38 + jsonschema/MsgSsrFlagTropoGridPoints.json | 40 + proto/integrity.proto | 122 ++ python/sbp/integrity.py | 830 +++++++++++++ rust/sbp/src/messages/integrity.rs | 803 ++++++++++++ rust/sbp/src/messages/mod.rs | 133 ++ ...k_sbp_integrity_msg_ssr_flag_high_level.rs | 156 +++ ...ty_msg_ssr_flag_iono_grid_point_sat_los.rs | 121 ++ ...integrity_msg_ssr_flag_iono_grid_points.rs | 111 ++ ...ntegrity_msg_ssr_flag_iono_tile_sat_los.rs | 116 ++ ...k_sbp_integrity_msg_ssr_flag_satellites.rs | 105 ++ ...ntegrity_msg_ssr_flag_tropo_grid_points.rs | 111 ++ rust/sbp/tests/integration/main.rs | 6 + sbpjson/elm/SbpJson.elm | 290 ++++- sbpjson/typescript/SbpJson.ts | 202 ++- 81 files changed, 14465 insertions(+), 2 deletions(-) create mode 100644 c/include/libsbp/integrity.h create mode 100644 c/include/libsbp/integrity_macros.h create mode 100644 c/include/libsbp/legacy/integrity.h create mode 100644 c/include/libsbp/v4/integrity.h create mode 100644 c/include/libsbp/v4/integrity/MSG_SSR_FLAG_HIGH_LEVEL.h create mode 100644 c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h create mode 100644 c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h create mode 100644 c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h create mode 100644 c/include/libsbp/v4/integrity/MSG_SSR_FLAG_SATELLITES.h create mode 100644 c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h create mode 100644 c/src/include/libsbp/internal/v4/integrity.h create mode 100644 c/src/v4/integrity.c create mode 100644 c/test/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c create mode 100644 c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c create mode 100644 c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c create mode 100644 c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c create mode 100644 c/test/auto_check_sbp_integrity_MsgSsrFlagSatellites.c create mode 100644 c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c create mode 100644 c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc create mode 100644 c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc create mode 100644 c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc create mode 100644 c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc create mode 100644 c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc create mode 100644 c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc create mode 100644 c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c create mode 100644 c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c create mode 100644 c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c create mode 100644 c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c create mode 100644 c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagSatellites.c create mode 100644 c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c create mode 100644 c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc create mode 100644 c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc create mode 100644 c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc create mode 100644 c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc create mode 100644 c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc create mode 100644 c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc create mode 100644 haskell/src/SwiftNav/SBP/Integrity.hs create mode 100644 java/src/com/swiftnav/sbp/integrity/MsgSsrFlagHighLevel.java create mode 100644 java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java create mode 100644 java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java create mode 100644 java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java create mode 100644 java/src/com/swiftnav/sbp/integrity/MsgSsrFlagSatellites.java create mode 100644 java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java create mode 100644 java/test/auto_check_sbp_integrity_MsgSsrFlagHighLevelTest.java create mode 100644 java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java create mode 100644 java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java create mode 100644 java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java create mode 100644 java/test/auto_check_sbp_integrity_MsgSsrFlagSatellitesTest.java create mode 100644 java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java create mode 100644 javascript/sbp/integrity.js create mode 100644 jsonschema/MsgSsrFlagHighLevel.json create mode 100644 jsonschema/MsgSsrFlagIonoGridPointSatLos.json create mode 100644 jsonschema/MsgSsrFlagIonoGridPoints.json create mode 100644 jsonschema/MsgSsrFlagIonoTileSatLos.json create mode 100644 jsonschema/MsgSsrFlagSatellites.json create mode 100644 jsonschema/MsgSsrFlagTropoGridPoints.json create mode 100644 proto/integrity.proto create mode 100644 python/sbp/integrity.py create mode 100644 rust/sbp/src/messages/integrity.rs create mode 100644 rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_high_level.rs create mode 100644 rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs create mode 100644 rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs create mode 100644 rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs create mode 100644 rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_satellites.rs create mode 100644 rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs diff --git a/c/include/libsbp/cpp/message_traits.h b/c/include/libsbp/cpp/message_traits.h index 7dc2678368..8fee293e95 100644 --- a/c/include/libsbp/cpp/message_traits.h +++ b/c/include/libsbp/cpp/message_traits.h @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -5621,6 +5622,231 @@ struct MessageTraits { } }; +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgSsrFlagHighLevel; + static const sbp_msg_ssr_flag_high_level_t &get(const sbp_msg_t &msg) { + return msg.ssr_flag_high_level; + } + static sbp_msg_ssr_flag_high_level_t &get(sbp_msg_t &msg) { + return msg.ssr_flag_high_level; + } + static void to_sbp_msg(const sbp_msg_ssr_flag_high_level_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->ssr_flag_high_level = msg; + } + static sbp_msg_t to_sbp_msg(const sbp_msg_ssr_flag_high_level_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.ssr_flag_high_level = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_ssr_flag_high_level_t &msg, + sbp_write_fn_t write) { + return sbp_msg_ssr_flag_high_level_send(state, sender_id, &msg, write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_high_level_t &msg) { + return sbp_msg_ssr_flag_high_level_encode(buf, len, n_written, &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_high_level_t *msg) { + return sbp_msg_ssr_flag_high_level_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_ssr_flag_high_level_t &msg) { + return sbp_msg_ssr_flag_high_level_encoded_len(&msg); + } +}; + +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgSsrFlagIonoGridPointSatLos; + static const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &get( + const sbp_msg_t &msg) { + return msg.ssr_flag_iono_grid_point_sat_los; + } + static sbp_msg_ssr_flag_iono_grid_point_sat_los_t &get(sbp_msg_t &msg) { + return msg.ssr_flag_iono_grid_point_sat_los; + } + static void to_sbp_msg(const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->ssr_flag_iono_grid_point_sat_los = msg; + } + static sbp_msg_t to_sbp_msg( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.ssr_flag_iono_grid_point_sat_los = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &msg, + sbp_write_fn_t write) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_send(state, sender_id, &msg, + write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &msg) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_encode(buf, len, n_written, + &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_decode(buf, len, n_read, + msg); + } + static size_t encoded_len( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &msg) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_encoded_len(&msg); + } +}; + +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgSsrFlagIonoGridPoints; + static const sbp_msg_ssr_flag_iono_grid_points_t &get(const sbp_msg_t &msg) { + return msg.ssr_flag_iono_grid_points; + } + static sbp_msg_ssr_flag_iono_grid_points_t &get(sbp_msg_t &msg) { + return msg.ssr_flag_iono_grid_points; + } + static void to_sbp_msg(const sbp_msg_ssr_flag_iono_grid_points_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->ssr_flag_iono_grid_points = msg; + } + static sbp_msg_t to_sbp_msg(const sbp_msg_ssr_flag_iono_grid_points_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.ssr_flag_iono_grid_points = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_ssr_flag_iono_grid_points_t &msg, + sbp_write_fn_t write) { + return sbp_msg_ssr_flag_iono_grid_points_send(state, sender_id, &msg, + write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_grid_points_t &msg) { + return sbp_msg_ssr_flag_iono_grid_points_encode(buf, len, n_written, &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_grid_points_t *msg) { + return sbp_msg_ssr_flag_iono_grid_points_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_ssr_flag_iono_grid_points_t &msg) { + return sbp_msg_ssr_flag_iono_grid_points_encoded_len(&msg); + } +}; + +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgSsrFlagIonoTileSatLos; + static const sbp_msg_ssr_flag_iono_tile_sat_los_t &get(const sbp_msg_t &msg) { + return msg.ssr_flag_iono_tile_sat_los; + } + static sbp_msg_ssr_flag_iono_tile_sat_los_t &get(sbp_msg_t &msg) { + return msg.ssr_flag_iono_tile_sat_los; + } + static void to_sbp_msg(const sbp_msg_ssr_flag_iono_tile_sat_los_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->ssr_flag_iono_tile_sat_los = msg; + } + static sbp_msg_t to_sbp_msg(const sbp_msg_ssr_flag_iono_tile_sat_los_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.ssr_flag_iono_tile_sat_los = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &msg, + sbp_write_fn_t write) { + return sbp_msg_ssr_flag_iono_tile_sat_los_send(state, sender_id, &msg, + write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &msg) { + return sbp_msg_ssr_flag_iono_tile_sat_los_encode(buf, len, n_written, &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { + return sbp_msg_ssr_flag_iono_tile_sat_los_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_ssr_flag_iono_tile_sat_los_t &msg) { + return sbp_msg_ssr_flag_iono_tile_sat_los_encoded_len(&msg); + } +}; + +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgSsrFlagSatellites; + static const sbp_msg_ssr_flag_satellites_t &get(const sbp_msg_t &msg) { + return msg.ssr_flag_satellites; + } + static sbp_msg_ssr_flag_satellites_t &get(sbp_msg_t &msg) { + return msg.ssr_flag_satellites; + } + static void to_sbp_msg(const sbp_msg_ssr_flag_satellites_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->ssr_flag_satellites = msg; + } + static sbp_msg_t to_sbp_msg(const sbp_msg_ssr_flag_satellites_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.ssr_flag_satellites = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_ssr_flag_satellites_t &msg, + sbp_write_fn_t write) { + return sbp_msg_ssr_flag_satellites_send(state, sender_id, &msg, write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_satellites_t &msg) { + return sbp_msg_ssr_flag_satellites_encode(buf, len, n_written, &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_satellites_t *msg) { + return sbp_msg_ssr_flag_satellites_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_ssr_flag_satellites_t &msg) { + return sbp_msg_ssr_flag_satellites_encoded_len(&msg); + } +}; + +template <> +struct MessageTraits { + static constexpr sbp_msg_type_t id = SbpMsgSsrFlagTropoGridPoints; + static const sbp_msg_ssr_flag_tropo_grid_points_t &get(const sbp_msg_t &msg) { + return msg.ssr_flag_tropo_grid_points; + } + static sbp_msg_ssr_flag_tropo_grid_points_t &get(sbp_msg_t &msg) { + return msg.ssr_flag_tropo_grid_points; + } + static void to_sbp_msg(const sbp_msg_ssr_flag_tropo_grid_points_t &msg, + sbp_msg_t *sbp_msg) { + sbp_msg->ssr_flag_tropo_grid_points = msg; + } + static sbp_msg_t to_sbp_msg(const sbp_msg_ssr_flag_tropo_grid_points_t &msg) { + sbp_msg_t sbp_msg; + sbp_msg.ssr_flag_tropo_grid_points = msg; + return sbp_msg; + } + static s8 send(sbp_state_t *state, u16 sender_id, + const sbp_msg_ssr_flag_tropo_grid_points_t &msg, + sbp_write_fn_t write) { + return sbp_msg_ssr_flag_tropo_grid_points_send(state, sender_id, &msg, + write); + } + static s8 encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_tropo_grid_points_t &msg) { + return sbp_msg_ssr_flag_tropo_grid_points_encode(buf, len, n_written, &msg); + } + static s8 decode(const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_tropo_grid_points_t *msg) { + return sbp_msg_ssr_flag_tropo_grid_points_decode(buf, len, n_read, msg); + } + static size_t encoded_len(const sbp_msg_ssr_flag_tropo_grid_points_t &msg) { + return sbp_msg_ssr_flag_tropo_grid_points_encoded_len(&msg); + } +}; + template <> struct MessageTraits { static constexpr sbp_msg_type_t id = SbpMsgSsrGridDefinitionDepA; diff --git a/c/include/libsbp/integrity.h b/c/include/libsbp/integrity.h new file mode 100644 index 0000000000..20a99b3f59 --- /dev/null +++ b/c/include/libsbp/integrity.h @@ -0,0 +1,30 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_INTEGRITY_MESSAGES_H +#define LIBSBP_INTEGRITY_MESSAGES_H + +#include + +SBP_MESSAGE( + "Legacy SBP definitions have moved. To continue using legacy message " + "definitions include `libsbp/legacy/integrity.h` instead. Access to legacy " + "types via `libsbp/integrity.h` will be removed in version 5.") + +#include + +#endif /* LIBSBP_INTEGRITY_MESSAGES_H */ \ No newline at end of file diff --git a/c/include/libsbp/integrity_macros.h b/c/include/libsbp/integrity_macros.h new file mode 100644 index 0000000000..9e3e6abf87 --- /dev/null +++ b/c/include/libsbp/integrity_macros.h @@ -0,0 +1,156 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_INTEGRITY_MACROS_H +#define LIBSBP_INTEGRITY_MACROS_H + +#define SBP_MSG_SSR_FLAG_HIGH_LEVEL 0x0BB9 +/** + * The maximum number of items that can be stored in + * sbp_msg_ssr_flag_high_level_t::reserved (V4 API) or + * msg_ssr_flag_high_level_t::reserved (legacy API) before the maximum SBP + * message size is exceeded + */ +#define SBP_MSG_SSR_FLAG_HIGH_LEVEL_RESERVED_MAX 6u + +/** + * Encoded length of sbp_msg_ssr_flag_high_level_t (V4 API) and + * msg_ssr_flag_high_level_t (legacy API) + */ +#define SBP_MSG_SSR_FLAG_HIGH_LEVEL_ENCODED_LEN 31u + +#define SBP_MSG_SSR_FLAG_SATELLITES 0x0BBD +/** + * The maximum number of items that can be stored in + * sbp_msg_ssr_flag_satellites_t::faulty_sats (V4 API) or + * msg_ssr_flag_satellites_t::faulty_sats (legacy API) before the maximum SBP + * message size is exceeded + */ +#define SBP_MSG_SSR_FLAG_SATELLITES_FAULTY_SATS_MAX 243u + +/** + * Encoded length of sbp_msg_ssr_flag_satellites_t (V4 API) and + * msg_ssr_flag_satellites_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_flag_satellites_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_FLAG_SATELLITES_ENCODED_OVERHEAD 12u + +#define SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS 0x0BC3 +/** + * The maximum number of items that can be stored in + * sbp_msg_ssr_flag_tropo_grid_points_t::faulty_points (V4 API) or + * msg_ssr_flag_tropo_grid_points_t::faulty_points (legacy API) before the + * maximum SBP message size is exceeded + */ +#define SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS_FAULTY_POINTS_MAX 120u + +/** + * Encoded length of sbp_msg_ssr_flag_tropo_grid_points_t (V4 API) and + * msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_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_FLAG_TROPO_GRID_POINTS_ENCODED_OVERHEAD 15u + +#define SBP_MSG_SSR_FLAG_IONO_GRID_POINTS 0x0BC7 +/** + * The maximum number of items that can be stored in + * sbp_msg_ssr_flag_iono_grid_points_t::faulty_points (V4 API) or + * msg_ssr_flag_iono_grid_points_t::faulty_points (legacy API) before the + * maximum SBP message size is exceeded + */ +#define SBP_MSG_SSR_FLAG_IONO_GRID_POINTS_FAULTY_POINTS_MAX 120u + +/** + * Encoded length of sbp_msg_ssr_flag_iono_grid_points_t (V4 API) and + * msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_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_FLAG_IONO_GRID_POINTS_ENCODED_OVERHEAD 15u + +#define SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS 0x0BCD +/** + * The maximum number of items that can be stored in + * sbp_msg_ssr_flag_iono_tile_sat_los_t::faulty_los (V4 API) or + * msg_ssr_flag_iono_tile_sat_los_t::faulty_los (legacy API) before the maximum + * SBP message size is exceeded + */ +#define SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS_FAULTY_LOS_MAX 120u + +/** + * Encoded length of sbp_msg_ssr_flag_iono_tile_sat_los_t (V4 API) and + * msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_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_FLAG_IONO_TILE_SAT_LOS_ENCODED_OVERHEAD 15u + +#define SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS 0x0BD1 +/** + * The maximum number of items that can be stored in + * sbp_msg_ssr_flag_iono_grid_point_sat_los_t::faulty_los (V4 API) or + * msg_ssr_flag_iono_grid_point_sat_los_t::faulty_los (legacy API) before the + * maximum SBP message size is exceeded + */ +#define SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS_FAULTY_LOS_MAX 119u + +/** + * Encoded length of sbp_msg_ssr_flag_iono_grid_point_sat_los_t (V4 API) and + * msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_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_FLAG_IONO_GRID_POINT_SAT_LOS_ENCODED_OVERHEAD 17u + +#endif /* LIBSBP_INTEGRITY_MACROS_H */ diff --git a/c/include/libsbp/legacy/cpp/message_traits.h b/c/include/libsbp/legacy/cpp/message_traits.h index 074741129c..53b815ded2 100644 --- a/c/include/libsbp/legacy/cpp/message_traits.h +++ b/c/include/libsbp/legacy/cpp/message_traits.h @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -1080,6 +1081,42 @@ struct MessageTraits { }; +template<> +struct MessageTraits { + static constexpr u16 id = 3001; +}; + + +template<> +struct MessageTraits { + static constexpr u16 id = 3005; +}; + + +template<> +struct MessageTraits { + static constexpr u16 id = 3011; +}; + + +template<> +struct MessageTraits { + static constexpr u16 id = 3015; +}; + + +template<> +struct MessageTraits { + static constexpr u16 id = 3021; +}; + + +template<> +struct MessageTraits { + static constexpr u16 id = 3025; +}; + + template<> struct MessageTraits { static constexpr u16 id = 4097; diff --git a/c/include/libsbp/legacy/integrity.h b/c/include/libsbp/legacy/integrity.h new file mode 100644 index 0000000000..9d936ca45f --- /dev/null +++ b/c/include/libsbp/legacy/integrity.h @@ -0,0 +1,130 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +/** \defgroup integrity Integrity + * + * Integrity flag messages + * \{ */ + +#ifndef LIBSBP_LEGACY_INTEGRITY_MESSAGES_H +#define LIBSBP_LEGACY_INTEGRITY_MESSAGES_H + +#include + +#include +#include + +SBP_PACK_START + +typedef struct SBP_ATTR_PACKED { + gps_time_sec_t obs_time; /**< GNSS reference time of + the observation used to + generate the flag. */ + gps_time_sec_t corr_time; /**< GNSS reference time of + the correction + associated to the flag. */ + u8 ssr_sol_id; /**< SSR Solution ID. */ + u16 tile_set_id; /**< Unique identifier of the set this + tile belongs to. */ + u16 tile_id; /**< Unique identifier of this tile in + the tile set. */ + u8 chain_id; /**< Chain and type of flag. */ + u8 use_gps_sat; /**< Use GPS satellites. */ + u8 use_gal_sat; /**< Use GAL satellites. */ + u8 use_bds_sat; /**< Use BDS satellites. */ + u8 reserved[6]; /**< Reserved */ + u8 use_tropo_grid_points; /**< Use tropo grid points. */ + u8 use_iono_grid_points; /**< Use iono grid points. */ + u8 use_iono_tile_sat_los; /**< Use iono tile satellite LoS. */ + u8 use_iono_grid_point_sat_los; /**< Use iono grid point satellite LoS. */ +} msg_ssr_flag_high_level_t; + +typedef struct SBP_ATTR_PACKED { + gps_time_sec_t obs_time; /**< GNSS reference time of the observation + used to generate the flag. */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Position of this message in the dataset */ + u8 ssr_sol_id; /**< SSR Solution ID. */ + u8 chain_id; /**< Chain and type of flag. */ + u8 const_id; /**< Constellation ID. */ + u8 n_faulty_sats; /**< Number of faulty satellites. */ + u8 faulty_sats[0]; /**< List of faulty satellites. */ +} msg_ssr_flag_satellites_t; + +typedef struct SBP_ATTR_PACKED { + gps_time_sec_t obs_time; /**< GNSS reference time of the + observation used to generate the + flag. */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Position of this message in the dataset */ + u8 ssr_sol_id; /**< SSR Solution ID. */ + u16 tile_set_id; /**< Unique identifier of the set this tile belongs + to. */ + u16 tile_id; /**< Unique identifier of this tile in the tile set. */ + u8 chain_id; /**< Chain and type of flag. */ + u8 n_faulty_points; /**< Number of faulty grid points. */ + u16 faulty_points[0]; /**< List of faulty grid points. */ +} msg_ssr_flag_tropo_grid_points_t; + +typedef struct SBP_ATTR_PACKED { + gps_time_sec_t obs_time; /**< GNSS reference time of the + observation used to generate the + flag. */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Position of this message in the dataset */ + u8 ssr_sol_id; /**< SSR Solution ID. */ + u16 tile_set_id; /**< Unique identifier of the set this tile belongs + to. */ + u16 tile_id; /**< Unique identifier of this tile in the tile set. */ + u8 chain_id; /**< Chain and type of flag. */ + u8 n_faulty_points; /**< Number of faulty grid points. */ + u16 faulty_points[0]; /**< List of faulty grid points. */ +} msg_ssr_flag_iono_grid_points_t; + +typedef struct SBP_ATTR_PACKED { + gps_time_sec_t obs_time; /**< GNSS reference time of the observation + used to generate the flag. */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Position of this message in the dataset */ + u8 ssr_sol_id; /**< SSR Solution ID. */ + u16 tile_set_id; /**< Unique identifier of the set this tile belongs to. */ + u16 tile_id; /**< Unique identifier of this tile in the tile set. */ + u8 chain_id; /**< Chain and type of flag. */ + u8 n_faulty_los; /**< Number of faulty LOS. */ + sv_id_t faulty_los[0]; /**< List of faulty LOS */ +} msg_ssr_flag_iono_tile_sat_los_t; + +typedef struct SBP_ATTR_PACKED { + gps_time_sec_t obs_time; /**< GNSS reference time of the observation + used to generate the flag. */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Position of this message in the dataset */ + u8 ssr_sol_id; /**< SSR Solution ID. */ + u16 tile_set_id; /**< Unique identifier of the set this tile belongs + to. */ + u16 tile_id; /**< Unique identifier of this tile in the tile set. */ + u8 chain_id; /**< Chain and type of flag. */ + u16 grid_point_id; /**< Index of the grid point. */ + u8 n_faulty_los; /**< Number of faulty LOS. */ + sv_id_t faulty_los[0]; /**< List of faulty LOS */ +} msg_ssr_flag_iono_grid_point_sat_los_t; + +/** \} */ + +SBP_PACK_END + +#endif /* LIBSBP_LEGACY_INTEGRITY_MESSAGES_H */ \ No newline at end of file diff --git a/c/include/libsbp/sbp_msg_type.h b/c/include/libsbp/sbp_msg_type.h index 2f84d68322..ec5f1af697 100644 --- a/c/include/libsbp/sbp_msg_type.h +++ b/c/include/libsbp/sbp_msg_type.h @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -209,6 +210,12 @@ typedef enum { SbpMsgSpecan = SBP_MSG_SPECAN, SbpMsgSsrCodeBiases = SBP_MSG_SSR_CODE_BIASES, SbpMsgSsrCodePhaseBiasesBounds = SBP_MSG_SSR_CODE_PHASE_BIASES_BOUNDS, + SbpMsgSsrFlagHighLevel = SBP_MSG_SSR_FLAG_HIGH_LEVEL, + SbpMsgSsrFlagIonoGridPointSatLos = SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS, + SbpMsgSsrFlagIonoGridPoints = SBP_MSG_SSR_FLAG_IONO_GRID_POINTS, + SbpMsgSsrFlagIonoTileSatLos = SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS, + SbpMsgSsrFlagSatellites = SBP_MSG_SSR_FLAG_SATELLITES, + SbpMsgSsrFlagTropoGridPoints = SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS, SbpMsgSsrGridDefinitionDepA = SBP_MSG_SSR_GRID_DEFINITION_DEP_A, SbpMsgSsrGriddedCorrectionBounds = SBP_MSG_SSR_GRIDDED_CORRECTION_BOUNDS, SbpMsgSsrGriddedCorrectionDepA = SBP_MSG_SSR_GRIDDED_CORRECTION_DEP_A, diff --git a/c/include/libsbp/v4/integrity.h b/c/include/libsbp/v4/integrity.h new file mode 100644 index 0000000000..71576464b1 --- /dev/null +++ b/c/include/libsbp/v4/integrity.h @@ -0,0 +1,27 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_MESSAGES_H +#define LIBSBP_V4_INTEGRITY_MESSAGES_H +#include +#include +#include +#include +#include +#include + +#endif /* LIBSBP_V4_INTEGRITY_MESSAGES_H */ diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_HIGH_LEVEL.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_HIGH_LEVEL.h new file mode 100644 index 0000000000..dc346a5ff1 --- /dev/null +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_HIGH_LEVEL.h @@ -0,0 +1,242 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_HIGH_LEVEL_H +#define LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_HIGH_LEVEL_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_SSR_FLAG_HIGH_LEVEL + * + *****************************************************************************/ +typedef struct { + /** + * GNSS reference time of the observation used to generate the flag. + */ + sbp_gps_time_sec_t obs_time; + + /** + * GNSS reference time of the correction associated to the flag. + */ + sbp_gps_time_sec_t corr_time; + + /** + * SSR Solution ID. + */ + u8 ssr_sol_id; + + /** + * Unique identifier of the set this tile belongs to. + */ + u16 tile_set_id; + + /** + * Unique identifier of this tile in the tile set. + */ + u16 tile_id; + + /** + * Chain and type of flag. + */ + u8 chain_id; + + /** + * Use GPS satellites. + */ + u8 use_gps_sat; + + /** + * Use GAL satellites. + */ + u8 use_gal_sat; + + /** + * Use BDS satellites. + */ + u8 use_bds_sat; + + /** + * Reserved + */ + u8 reserved[SBP_MSG_SSR_FLAG_HIGH_LEVEL_RESERVED_MAX]; + + /** + * Use tropo grid points. + */ + u8 use_tropo_grid_points; + + /** + * Use iono grid points. + */ + u8 use_iono_grid_points; + + /** + * Use iono tile satellite LoS. + */ + u8 use_iono_tile_sat_los; + + /** + * Use iono grid point satellite LoS. + */ + u8 use_iono_grid_point_sat_los; +} sbp_msg_ssr_flag_high_level_t; + +/** + * Get encoded size of an instance of sbp_msg_ssr_flag_high_level_t + * + * @param msg sbp_msg_ssr_flag_high_level_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_ssr_flag_high_level_encoded_len( + const sbp_msg_ssr_flag_high_level_t *msg) { + (void)msg; + return SBP_MSG_SSR_FLAG_HIGH_LEVEL_ENCODED_LEN; +} + +/** + * Encode an instance of sbp_msg_ssr_flag_high_level_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_flag_high_level_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_ssr_flag_high_level_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_high_level_t *msg); + +/** + * Decode an instance of sbp_msg_ssr_flag_high_level_t from wire representation + * + * This function decodes the wire representation of a + * sbp_msg_ssr_flag_high_level_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_flag_high_level_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_flag_high_level_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_high_level_t *msg); +/** + * Send an instance of sbp_msg_ssr_flag_high_level_t with the given write + * function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_ssr_flag_high_level_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_flag_high_level_send( + sbp_state_t *s, u16 sender_id, const sbp_msg_ssr_flag_high_level_t *msg, + sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_ssr_flag_high_level_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_flag_high_level_t instance + * @param b sbp_msg_ssr_flag_high_level_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_ssr_flag_high_level_cmp( + const sbp_msg_ssr_flag_high_level_t *a, + const sbp_msg_ssr_flag_high_level_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_msg_ssr_flag_high_level_t &lhs, + const sbp_msg_ssr_flag_high_level_t &rhs) { + return sbp_msg_ssr_flag_high_level_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_msg_ssr_flag_high_level_t &lhs, + const sbp_msg_ssr_flag_high_level_t &rhs) { + return sbp_msg_ssr_flag_high_level_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_msg_ssr_flag_high_level_t &lhs, + const sbp_msg_ssr_flag_high_level_t &rhs) { + return sbp_msg_ssr_flag_high_level_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_msg_ssr_flag_high_level_t &lhs, + const sbp_msg_ssr_flag_high_level_t &rhs) { + return sbp_msg_ssr_flag_high_level_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_msg_ssr_flag_high_level_t &lhs, + const sbp_msg_ssr_flag_high_level_t &rhs) { + return sbp_msg_ssr_flag_high_level_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_msg_ssr_flag_high_level_t &lhs, + const sbp_msg_ssr_flag_high_level_t &rhs) { + return sbp_msg_ssr_flag_high_level_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_HIGH_LEVEL_H */ diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h new file mode 100644 index 0000000000..0b6f7a5965 --- /dev/null +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h @@ -0,0 +1,220 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_GRID_POINTS_H +#define LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_GRID_POINTS_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_SSR_FLAG_IONO_GRID_POINTS + * + *****************************************************************************/ +typedef struct { + /** + * GNSS reference time of the observation used to generate the flag. + */ + sbp_gps_time_sec_t obs_time; + + /** + * Number of messages in the dataset + */ + u8 num_msgs; + + /** + * Position of this message in the dataset + */ + u8 seq_num; + + /** + * SSR Solution ID. + */ + u8 ssr_sol_id; + + /** + * Unique identifier of the set this tile belongs to. + */ + u16 tile_set_id; + + /** + * Unique identifier of this tile in the tile set. + */ + u16 tile_id; + + /** + * Chain and type of flag. + */ + u8 chain_id; + + /** + * Number of faulty grid points. + */ + u8 n_faulty_points; + + /** + * List of faulty grid points. + */ + u16 faulty_points[SBP_MSG_SSR_FLAG_IONO_GRID_POINTS_FAULTY_POINTS_MAX]; +} sbp_msg_ssr_flag_iono_grid_points_t; + +/** + * Get encoded size of an instance of sbp_msg_ssr_flag_iono_grid_points_t + * + * @param msg sbp_msg_ssr_flag_iono_grid_points_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_ssr_flag_iono_grid_points_encoded_len( + const sbp_msg_ssr_flag_iono_grid_points_t *msg) { + return SBP_MSG_SSR_FLAG_IONO_GRID_POINTS_ENCODED_OVERHEAD + + (msg->n_faulty_points * SBP_ENCODED_LEN_U16); +} + +/** + * Encode an instance of sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_ssr_flag_iono_grid_points_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_grid_points_t *msg); + +/** + * Decode an instance of sbp_msg_ssr_flag_iono_grid_points_t from wire + * representation + * + * This function decodes the wire representation of a + * sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_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_flag_iono_grid_points_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_grid_points_t *msg); +/** + * Send an instance of sbp_msg_ssr_flag_iono_grid_points_t with the given write + * function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_iono_grid_points_t *msg, sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_t instance + * @param b sbp_msg_ssr_flag_iono_grid_points_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_ssr_flag_iono_grid_points_cmp( + const sbp_msg_ssr_flag_iono_grid_points_t *a, + const sbp_msg_ssr_flag_iono_grid_points_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_msg_ssr_flag_iono_grid_points_t &lhs, + const sbp_msg_ssr_flag_iono_grid_points_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_points_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_msg_ssr_flag_iono_grid_points_t &lhs, + const sbp_msg_ssr_flag_iono_grid_points_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_points_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_msg_ssr_flag_iono_grid_points_t &lhs, + const sbp_msg_ssr_flag_iono_grid_points_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_points_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_msg_ssr_flag_iono_grid_points_t &lhs, + const sbp_msg_ssr_flag_iono_grid_points_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_points_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_msg_ssr_flag_iono_grid_points_t &lhs, + const sbp_msg_ssr_flag_iono_grid_points_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_points_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_msg_ssr_flag_iono_grid_points_t &lhs, + const sbp_msg_ssr_flag_iono_grid_points_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_points_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_GRID_POINTS_H */ diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h new file mode 100644 index 0000000000..3a0363fd9f --- /dev/null +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h @@ -0,0 +1,235 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS_H +#define LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS + * + *****************************************************************************/ +typedef struct { + /** + * GNSS reference time of the observation used to generate the flag. + */ + sbp_gps_time_sec_t obs_time; + + /** + * Number of messages in the dataset + */ + u8 num_msgs; + + /** + * Position of this message in the dataset + */ + u8 seq_num; + + /** + * SSR Solution ID. + */ + u8 ssr_sol_id; + + /** + * Unique identifier of the set this tile belongs to. + */ + u16 tile_set_id; + + /** + * Unique identifier of this tile in the tile set. + */ + u16 tile_id; + + /** + * Chain and type of flag. + */ + u8 chain_id; + + /** + * Index of the grid point. + */ + u16 grid_point_id; + + /** + * Number of faulty LOS. + */ + u8 n_faulty_los; + + /** + * List of faulty LOS + */ + sbp_sv_id_t + faulty_los[SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS_FAULTY_LOS_MAX]; +} sbp_msg_ssr_flag_iono_grid_point_sat_los_t; + +/** + * Get encoded size of an instance of sbp_msg_ssr_flag_iono_grid_point_sat_los_t + * + * @param msg sbp_msg_ssr_flag_iono_grid_point_sat_los_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_ssr_flag_iono_grid_point_sat_los_encoded_len( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { + return SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS_ENCODED_OVERHEAD + + (msg->n_faulty_los * SBP_SV_ID_ENCODED_LEN); +} + +/** + * Encode an instance of sbp_msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_ssr_flag_iono_grid_point_sat_los_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg); + +/** + * Decode an instance of sbp_msg_ssr_flag_iono_grid_point_sat_los_t from wire + * representation + * + * This function decodes the wire representation of a + * sbp_msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg); +/** + * Send an instance of sbp_msg_ssr_flag_iono_grid_point_sat_los_t with the given + * write function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg, + sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_t instance + * @param b sbp_msg_ssr_flag_iono_grid_point_sat_los_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *a, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS_H */ diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h new file mode 100644 index 0000000000..9ffb41ad4f --- /dev/null +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h @@ -0,0 +1,222 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_TILE_SAT_LOS_H +#define LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_TILE_SAT_LOS_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS + * + *****************************************************************************/ +typedef struct { + /** + * GNSS reference time of the observation used to generate the flag. + */ + sbp_gps_time_sec_t obs_time; + + /** + * Number of messages in the dataset + */ + u8 num_msgs; + + /** + * Position of this message in the dataset + */ + u8 seq_num; + + /** + * SSR Solution ID. + */ + u8 ssr_sol_id; + + /** + * Unique identifier of the set this tile belongs to. + */ + u16 tile_set_id; + + /** + * Unique identifier of this tile in the tile set. + */ + u16 tile_id; + + /** + * Chain and type of flag. + */ + u8 chain_id; + + /** + * Number of faulty LOS. + */ + u8 n_faulty_los; + + /** + * List of faulty LOS + */ + sbp_sv_id_t faulty_los[SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS_FAULTY_LOS_MAX]; +} sbp_msg_ssr_flag_iono_tile_sat_los_t; + +/** + * Get encoded size of an instance of sbp_msg_ssr_flag_iono_tile_sat_los_t + * + * @param msg sbp_msg_ssr_flag_iono_tile_sat_los_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_ssr_flag_iono_tile_sat_los_encoded_len( + const sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { + return SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS_ENCODED_OVERHEAD + + (msg->n_faulty_los * SBP_SV_ID_ENCODED_LEN); +} + +/** + * Encode an instance of sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_ssr_flag_iono_tile_sat_los_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_tile_sat_los_t *msg); + +/** + * Decode an instance of sbp_msg_ssr_flag_iono_tile_sat_los_t from wire + * representation + * + * This function decodes the wire representation of a + * sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_tile_sat_los_t *msg); +/** + * Send an instance of sbp_msg_ssr_flag_iono_tile_sat_los_t with the given write + * function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_iono_tile_sat_los_t *msg, sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_t instance + * @param b sbp_msg_ssr_flag_iono_tile_sat_los_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_ssr_flag_iono_tile_sat_los_cmp( + const sbp_msg_ssr_flag_iono_tile_sat_los_t *a, + const sbp_msg_ssr_flag_iono_tile_sat_los_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_msg_ssr_flag_iono_tile_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_tile_sat_los_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_msg_ssr_flag_iono_tile_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_tile_sat_los_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_msg_ssr_flag_iono_tile_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_tile_sat_los_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_msg_ssr_flag_iono_tile_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_tile_sat_los_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_msg_ssr_flag_iono_tile_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_tile_sat_los_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_msg_ssr_flag_iono_tile_sat_los_t &lhs, + const sbp_msg_ssr_flag_iono_tile_sat_los_t &rhs) { + return sbp_msg_ssr_flag_iono_tile_sat_los_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_IONO_TILE_SAT_LOS_H */ diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_SATELLITES.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_SATELLITES.h new file mode 100644 index 0000000000..cdfdbac228 --- /dev/null +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_SATELLITES.h @@ -0,0 +1,212 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_SATELLITES_H +#define LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_SATELLITES_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_SSR_FLAG_SATELLITES + * + *****************************************************************************/ +typedef struct { + /** + * GNSS reference time of the observation used to generate the flag. + */ + sbp_gps_time_sec_t obs_time; + + /** + * Number of messages in the dataset + */ + u8 num_msgs; + + /** + * Position of this message in the dataset + */ + u8 seq_num; + + /** + * SSR Solution ID. + */ + u8 ssr_sol_id; + + /** + * Chain and type of flag. + */ + u8 chain_id; + + /** + * Constellation ID. + */ + u8 const_id; + + /** + * Number of faulty satellites. + */ + u8 n_faulty_sats; + + /** + * List of faulty satellites. + */ + u8 faulty_sats[SBP_MSG_SSR_FLAG_SATELLITES_FAULTY_SATS_MAX]; +} sbp_msg_ssr_flag_satellites_t; + +/** + * Get encoded size of an instance of sbp_msg_ssr_flag_satellites_t + * + * @param msg sbp_msg_ssr_flag_satellites_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_ssr_flag_satellites_encoded_len( + const sbp_msg_ssr_flag_satellites_t *msg) { + return SBP_MSG_SSR_FLAG_SATELLITES_ENCODED_OVERHEAD + + (msg->n_faulty_sats * SBP_ENCODED_LEN_U8); +} + +/** + * Encode an instance of sbp_msg_ssr_flag_satellites_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_flag_satellites_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_ssr_flag_satellites_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_satellites_t *msg); + +/** + * Decode an instance of sbp_msg_ssr_flag_satellites_t from wire representation + * + * This function decodes the wire representation of a + * sbp_msg_ssr_flag_satellites_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_flag_satellites_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_flag_satellites_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_satellites_t *msg); +/** + * Send an instance of sbp_msg_ssr_flag_satellites_t with the given write + * function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_ssr_flag_satellites_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_flag_satellites_send( + sbp_state_t *s, u16 sender_id, const sbp_msg_ssr_flag_satellites_t *msg, + sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_ssr_flag_satellites_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_flag_satellites_t instance + * @param b sbp_msg_ssr_flag_satellites_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_ssr_flag_satellites_cmp( + const sbp_msg_ssr_flag_satellites_t *a, + const sbp_msg_ssr_flag_satellites_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_msg_ssr_flag_satellites_t &lhs, + const sbp_msg_ssr_flag_satellites_t &rhs) { + return sbp_msg_ssr_flag_satellites_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_msg_ssr_flag_satellites_t &lhs, + const sbp_msg_ssr_flag_satellites_t &rhs) { + return sbp_msg_ssr_flag_satellites_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_msg_ssr_flag_satellites_t &lhs, + const sbp_msg_ssr_flag_satellites_t &rhs) { + return sbp_msg_ssr_flag_satellites_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_msg_ssr_flag_satellites_t &lhs, + const sbp_msg_ssr_flag_satellites_t &rhs) { + return sbp_msg_ssr_flag_satellites_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_msg_ssr_flag_satellites_t &lhs, + const sbp_msg_ssr_flag_satellites_t &rhs) { + return sbp_msg_ssr_flag_satellites_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_msg_ssr_flag_satellites_t &lhs, + const sbp_msg_ssr_flag_satellites_t &rhs) { + return sbp_msg_ssr_flag_satellites_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_SATELLITES_H */ diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h new file mode 100644 index 0000000000..776bb3b812 --- /dev/null +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h @@ -0,0 +1,221 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_TROPO_GRID_POINTS_H +#define LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_TROPO_GRID_POINTS_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS + * + *****************************************************************************/ +typedef struct { + /** + * GNSS reference time of the observation used to generate the flag. + */ + sbp_gps_time_sec_t obs_time; + + /** + * Number of messages in the dataset + */ + u8 num_msgs; + + /** + * Position of this message in the dataset + */ + u8 seq_num; + + /** + * SSR Solution ID. + */ + u8 ssr_sol_id; + + /** + * Unique identifier of the set this tile belongs to. + */ + u16 tile_set_id; + + /** + * Unique identifier of this tile in the tile set. + */ + u16 tile_id; + + /** + * Chain and type of flag. + */ + u8 chain_id; + + /** + * Number of faulty grid points. + */ + u8 n_faulty_points; + + /** + * List of faulty grid points. + */ + u16 faulty_points[SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS_FAULTY_POINTS_MAX]; +} sbp_msg_ssr_flag_tropo_grid_points_t; + +/** + * Get encoded size of an instance of sbp_msg_ssr_flag_tropo_grid_points_t + * + * @param msg sbp_msg_ssr_flag_tropo_grid_points_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_msg_ssr_flag_tropo_grid_points_encoded_len( + const sbp_msg_ssr_flag_tropo_grid_points_t *msg) { + return SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS_ENCODED_OVERHEAD + + (msg->n_faulty_points * SBP_ENCODED_LEN_U16); +} + +/** + * Encode an instance of sbp_msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 sbp_msg_ssr_flag_tropo_grid_points_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_tropo_grid_points_t *msg); + +/** + * Decode an instance of sbp_msg_ssr_flag_tropo_grid_points_t from wire + * representation + * + * This function decodes the wire representation of a + * sbp_msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_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_flag_tropo_grid_points_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_tropo_grid_points_t *msg); +/** + * Send an instance of sbp_msg_ssr_flag_tropo_grid_points_t with the given write + * function + * + * An equivalent of #sbp_message_send which operates specifically on + * sbp_msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_tropo_grid_points_t *msg, sbp_write_fn_t write); + +/** + * Compare two instances of sbp_msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_t instance + * @param b sbp_msg_ssr_flag_tropo_grid_points_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_msg_ssr_flag_tropo_grid_points_cmp( + const sbp_msg_ssr_flag_tropo_grid_points_t *a, + const sbp_msg_ssr_flag_tropo_grid_points_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_msg_ssr_flag_tropo_grid_points_t &lhs, + const sbp_msg_ssr_flag_tropo_grid_points_t &rhs) { + return sbp_msg_ssr_flag_tropo_grid_points_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_msg_ssr_flag_tropo_grid_points_t &lhs, + const sbp_msg_ssr_flag_tropo_grid_points_t &rhs) { + return sbp_msg_ssr_flag_tropo_grid_points_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_msg_ssr_flag_tropo_grid_points_t &lhs, + const sbp_msg_ssr_flag_tropo_grid_points_t &rhs) { + return sbp_msg_ssr_flag_tropo_grid_points_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_msg_ssr_flag_tropo_grid_points_t &lhs, + const sbp_msg_ssr_flag_tropo_grid_points_t &rhs) { + return sbp_msg_ssr_flag_tropo_grid_points_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_msg_ssr_flag_tropo_grid_points_t &lhs, + const sbp_msg_ssr_flag_tropo_grid_points_t &rhs) { + return sbp_msg_ssr_flag_tropo_grid_points_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_msg_ssr_flag_tropo_grid_points_t &lhs, + const sbp_msg_ssr_flag_tropo_grid_points_t &rhs) { + return sbp_msg_ssr_flag_tropo_grid_points_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_INTEGRITY_MSG_SSR_FLAG_TROPO_GRID_POINTS_H */ diff --git a/c/include/libsbp/v4/sbp_msg.h b/c/include/libsbp/v4/sbp_msg.h index 86dc012735..d34875fdbb 100644 --- a/c/include/libsbp/v4/sbp_msg.h +++ b/c/include/libsbp/v4/sbp_msg.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -215,6 +216,12 @@ typedef union { 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_flag_high_level_t ssr_flag_high_level; + sbp_msg_ssr_flag_iono_grid_point_sat_los_t ssr_flag_iono_grid_point_sat_los; + sbp_msg_ssr_flag_iono_grid_points_t ssr_flag_iono_grid_points; + sbp_msg_ssr_flag_iono_tile_sat_los_t ssr_flag_iono_tile_sat_los; + sbp_msg_ssr_flag_satellites_t ssr_flag_satellites; + sbp_msg_ssr_flag_tropo_grid_points_t ssr_flag_tropo_grid_points; sbp_msg_ssr_grid_definition_dep_a_t ssr_grid_definition_dep_a; sbp_msg_ssr_gridded_correction_bounds_t ssr_gridded_correction_bounds; sbp_msg_ssr_gridded_correction_dep_a_t ssr_gridded_correction_dep_a; @@ -716,6 +723,24 @@ static inline s8 sbp_message_encode(uint8_t *buf, uint8_t len, case SbpMsgSsrCodePhaseBiasesBounds: return sbp_msg_ssr_code_phase_biases_bounds_encode( buf, len, n_written, &msg->ssr_code_phase_biases_bounds); + case SbpMsgSsrFlagHighLevel: + return sbp_msg_ssr_flag_high_level_encode(buf, len, n_written, + &msg->ssr_flag_high_level); + case SbpMsgSsrFlagIonoGridPointSatLos: + return sbp_msg_ssr_flag_iono_grid_point_sat_los_encode( + buf, len, n_written, &msg->ssr_flag_iono_grid_point_sat_los); + case SbpMsgSsrFlagIonoGridPoints: + return sbp_msg_ssr_flag_iono_grid_points_encode( + buf, len, n_written, &msg->ssr_flag_iono_grid_points); + case SbpMsgSsrFlagIonoTileSatLos: + return sbp_msg_ssr_flag_iono_tile_sat_los_encode( + buf, len, n_written, &msg->ssr_flag_iono_tile_sat_los); + case SbpMsgSsrFlagSatellites: + return sbp_msg_ssr_flag_satellites_encode(buf, len, n_written, + &msg->ssr_flag_satellites); + case SbpMsgSsrFlagTropoGridPoints: + return sbp_msg_ssr_flag_tropo_grid_points_encode( + buf, len, n_written, &msg->ssr_flag_tropo_grid_points); case SbpMsgSsrGridDefinitionDepA: return sbp_msg_ssr_grid_definition_dep_a_encode( buf, len, n_written, &msg->ssr_grid_definition_dep_a); @@ -1304,6 +1329,24 @@ static inline s8 sbp_message_decode(const uint8_t *buf, uint8_t len, case SbpMsgSsrCodePhaseBiasesBounds: return sbp_msg_ssr_code_phase_biases_bounds_decode( buf, len, n_read, &msg->ssr_code_phase_biases_bounds); + case SbpMsgSsrFlagHighLevel: + return sbp_msg_ssr_flag_high_level_decode(buf, len, n_read, + &msg->ssr_flag_high_level); + case SbpMsgSsrFlagIonoGridPointSatLos: + return sbp_msg_ssr_flag_iono_grid_point_sat_los_decode( + buf, len, n_read, &msg->ssr_flag_iono_grid_point_sat_los); + case SbpMsgSsrFlagIonoGridPoints: + return sbp_msg_ssr_flag_iono_grid_points_decode( + buf, len, n_read, &msg->ssr_flag_iono_grid_points); + case SbpMsgSsrFlagIonoTileSatLos: + return sbp_msg_ssr_flag_iono_tile_sat_los_decode( + buf, len, n_read, &msg->ssr_flag_iono_tile_sat_los); + case SbpMsgSsrFlagSatellites: + return sbp_msg_ssr_flag_satellites_decode(buf, len, n_read, + &msg->ssr_flag_satellites); + case SbpMsgSsrFlagTropoGridPoints: + return sbp_msg_ssr_flag_tropo_grid_points_decode( + buf, len, n_read, &msg->ssr_flag_tropo_grid_points); case SbpMsgSsrGridDefinitionDepA: return sbp_msg_ssr_grid_definition_dep_a_decode( buf, len, n_read, &msg->ssr_grid_definition_dep_a); @@ -1805,6 +1848,22 @@ static inline size_t sbp_message_encoded_len(sbp_msg_type_t msg_type, case SbpMsgSsrCodePhaseBiasesBounds: return sbp_msg_ssr_code_phase_biases_bounds_encoded_len( &msg->ssr_code_phase_biases_bounds); + case SbpMsgSsrFlagHighLevel: + return sbp_msg_ssr_flag_high_level_encoded_len(&msg->ssr_flag_high_level); + case SbpMsgSsrFlagIonoGridPointSatLos: + return sbp_msg_ssr_flag_iono_grid_point_sat_los_encoded_len( + &msg->ssr_flag_iono_grid_point_sat_los); + case SbpMsgSsrFlagIonoGridPoints: + return sbp_msg_ssr_flag_iono_grid_points_encoded_len( + &msg->ssr_flag_iono_grid_points); + case SbpMsgSsrFlagIonoTileSatLos: + return sbp_msg_ssr_flag_iono_tile_sat_los_encoded_len( + &msg->ssr_flag_iono_tile_sat_los); + case SbpMsgSsrFlagSatellites: + return sbp_msg_ssr_flag_satellites_encoded_len(&msg->ssr_flag_satellites); + case SbpMsgSsrFlagTropoGridPoints: + return sbp_msg_ssr_flag_tropo_grid_points_encoded_len( + &msg->ssr_flag_tropo_grid_points); case SbpMsgSsrGridDefinitionDepA: return sbp_msg_ssr_grid_definition_dep_a_encoded_len( &msg->ssr_grid_definition_dep_a); @@ -2342,6 +2401,25 @@ static inline int sbp_message_cmp(sbp_msg_type_t msg_type, const sbp_msg_t *a, case SbpMsgSsrCodePhaseBiasesBounds: return sbp_msg_ssr_code_phase_biases_bounds_cmp( &a->ssr_code_phase_biases_bounds, &b->ssr_code_phase_biases_bounds); + case SbpMsgSsrFlagHighLevel: + return sbp_msg_ssr_flag_high_level_cmp(&a->ssr_flag_high_level, + &b->ssr_flag_high_level); + case SbpMsgSsrFlagIonoGridPointSatLos: + return sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp( + &a->ssr_flag_iono_grid_point_sat_los, + &b->ssr_flag_iono_grid_point_sat_los); + case SbpMsgSsrFlagIonoGridPoints: + return sbp_msg_ssr_flag_iono_grid_points_cmp( + &a->ssr_flag_iono_grid_points, &b->ssr_flag_iono_grid_points); + case SbpMsgSsrFlagIonoTileSatLos: + return sbp_msg_ssr_flag_iono_tile_sat_los_cmp( + &a->ssr_flag_iono_tile_sat_los, &b->ssr_flag_iono_tile_sat_los); + case SbpMsgSsrFlagSatellites: + return sbp_msg_ssr_flag_satellites_cmp(&a->ssr_flag_satellites, + &b->ssr_flag_satellites); + case SbpMsgSsrFlagTropoGridPoints: + return sbp_msg_ssr_flag_tropo_grid_points_cmp( + &a->ssr_flag_tropo_grid_points, &b->ssr_flag_tropo_grid_points); 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/src/include/libsbp/internal/v4/integrity.h b/c/src/include/libsbp/internal/v4/integrity.h new file mode 100644 index 0000000000..e61261b598 --- /dev/null +++ b/c/src/include/libsbp/internal/v4/integrity.h @@ -0,0 +1,156 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_INTERNAL_V4_INTEGRITY_H +#define LIBSBP_INTERNAL_V4_INTEGRITY_H + +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * 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_flag_high_level_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_high_level_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_flag_high_level_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_high_level_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_flag_satellites_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_satellites_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_flag_satellites_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_satellites_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_flag_tropo_grid_points_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_tropo_grid_points_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_flag_iono_grid_points_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_tile_sat_los_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_grid_point_sat_los_encode_internal( + sbp_encode_ctx_t *ctx, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg); + +#ifdef __cplusplus +} +#endif + +#endif /* LIBSBP_INTERNAL_V4_INTEGRITY_H */ diff --git a/c/src/v4/integrity.c b/c/src/v4/integrity.c new file mode 100644 index 0000000000..f231267287 --- /dev/null +++ b/c/src/v4/integrity.c @@ -0,0 +1,1097 @@ +/***************************************************************************** + * Automatically generated from yaml/swiftnav/sbp/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +bool sbp_msg_ssr_flag_high_level_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_high_level_t *msg) { + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->corr_time)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->use_gps_sat)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->use_gal_sat)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->use_bds_sat)) { + return false; + } + for (size_t i = 0; i < SBP_MSG_SSR_FLAG_HIGH_LEVEL_RESERVED_MAX; i++) { + if (!sbp_u8_encode(ctx, &msg->reserved[i])) { + return false; + } + } + if (!sbp_u8_encode(ctx, &msg->use_tropo_grid_points)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->use_iono_grid_points)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->use_iono_tile_sat_los)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->use_iono_grid_point_sat_los)) { + return false; + } + return true; +} + +s8 sbp_msg_ssr_flag_high_level_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_high_level_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_high_level_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_flag_high_level_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_high_level_t *msg) { + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->corr_time)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->use_gps_sat)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->use_gal_sat)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->use_bds_sat)) { + return false; + } + for (uint8_t i = 0; i < SBP_MSG_SSR_FLAG_HIGH_LEVEL_RESERVED_MAX; i++) { + if (!sbp_u8_decode(ctx, &msg->reserved[i])) { + return false; + } + } + if (!sbp_u8_decode(ctx, &msg->use_tropo_grid_points)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->use_iono_grid_points)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->use_iono_tile_sat_los)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->use_iono_grid_point_sat_los)) { + return false; + } + return true; +} + +s8 sbp_msg_ssr_flag_high_level_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_msg_ssr_flag_high_level_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_high_level_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_flag_high_level_send(sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_high_level_t *msg, + sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_ssr_flag_high_level_encode(payload, sizeof(payload), + &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_SSR_FLAG_HIGH_LEVEL, sender_id, + payload_len, payload, write); +} + +int sbp_msg_ssr_flag_high_level_cmp(const sbp_msg_ssr_flag_high_level_t *a, + const sbp_msg_ssr_flag_high_level_t *b) { + int ret = 0; + + ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); + if (ret != 0) { + return ret; + } + + ret = sbp_gps_time_sec_cmp(&a->corr_time, &b->corr_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->use_gps_sat, &b->use_gps_sat); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->use_gal_sat, &b->use_gal_sat); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->use_bds_sat, &b->use_bds_sat); + if (ret != 0) { + return ret; + } + + for (uint8_t i = 0; ret == 0 && i < SBP_MSG_SSR_FLAG_HIGH_LEVEL_RESERVED_MAX; + i++) { + ret = sbp_u8_cmp(&a->reserved[i], &b->reserved[i]); + } + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->use_tropo_grid_points, &b->use_tropo_grid_points); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->use_iono_grid_points, &b->use_iono_grid_points); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->use_iono_tile_sat_los, &b->use_iono_tile_sat_los); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->use_iono_grid_point_sat_los, + &b->use_iono_grid_point_sat_los); + if (ret != 0) { + return ret; + } + return ret; +} + +bool sbp_msg_ssr_flag_satellites_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_satellites_t *msg) { + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->const_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->n_faulty_sats)) { + return false; + } + for (size_t i = 0; i < msg->n_faulty_sats; i++) { + if (!sbp_u8_encode(ctx, &msg->faulty_sats[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_satellites_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_satellites_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_satellites_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_flag_satellites_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_satellites_t *msg) { + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->const_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->n_faulty_sats)) { + return false; + } + msg->n_faulty_sats = + (uint8_t)((ctx->buf_len - ctx->offset) / SBP_ENCODED_LEN_U8); + for (uint8_t i = 0; i < msg->n_faulty_sats; i++) { + if (!sbp_u8_decode(ctx, &msg->faulty_sats[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_satellites_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_msg_ssr_flag_satellites_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_satellites_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_flag_satellites_send(sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_satellites_t *msg, + sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_ssr_flag_satellites_encode(payload, sizeof(payload), + &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_SSR_FLAG_SATELLITES, sender_id, + payload_len, payload, write); +} + +int sbp_msg_ssr_flag_satellites_cmp(const sbp_msg_ssr_flag_satellites_t *a, + const sbp_msg_ssr_flag_satellites_t *b) { + int ret = 0; + + ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + 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_faulty_sats, &b->n_faulty_sats); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_sats, &b->n_faulty_sats); + for (uint8_t i = 0; ret == 0 && i < a->n_faulty_sats; i++) { + ret = sbp_u8_cmp(&a->faulty_sats[i], &b->faulty_sats[i]); + } + if (ret != 0) { + return ret; + } + return ret; +} + +bool sbp_msg_ssr_flag_tropo_grid_points_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_tropo_grid_points_t *msg) { + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->n_faulty_points)) { + return false; + } + for (size_t i = 0; i < msg->n_faulty_points; i++) { + if (!sbp_u16_encode(ctx, &msg->faulty_points[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_tropo_grid_points_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_tropo_grid_points_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_tropo_grid_points_t *msg) { + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->n_faulty_points)) { + return false; + } + msg->n_faulty_points = + (uint8_t)((ctx->buf_len - ctx->offset) / SBP_ENCODED_LEN_U16); + for (uint8_t i = 0; i < msg->n_faulty_points; i++) { + if (!sbp_u16_decode(ctx, &msg->faulty_points[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_tropo_grid_points_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_tropo_grid_points_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_tropo_grid_points_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_flag_tropo_grid_points_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_tropo_grid_points_t *msg, sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_ssr_flag_tropo_grid_points_encode(payload, sizeof(payload), + &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS, sender_id, + payload_len, payload, write); +} + +int sbp_msg_ssr_flag_tropo_grid_points_cmp( + const sbp_msg_ssr_flag_tropo_grid_points_t *a, + const sbp_msg_ssr_flag_tropo_grid_points_t *b) { + int ret = 0; + + ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_points, &b->n_faulty_points); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_points, &b->n_faulty_points); + for (uint8_t i = 0; ret == 0 && i < a->n_faulty_points; i++) { + ret = sbp_u16_cmp(&a->faulty_points[i], &b->faulty_points[i]); + } + if (ret != 0) { + return ret; + } + return ret; +} + +bool sbp_msg_ssr_flag_iono_grid_points_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_iono_grid_points_t *msg) { + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->n_faulty_points)) { + return false; + } + for (size_t i = 0; i < msg->n_faulty_points; i++) { + if (!sbp_u16_encode(ctx, &msg->faulty_points[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_iono_grid_points_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_grid_points_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_grid_points_t *msg) { + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->n_faulty_points)) { + return false; + } + msg->n_faulty_points = + (uint8_t)((ctx->buf_len - ctx->offset) / SBP_ENCODED_LEN_U16); + for (uint8_t i = 0; i < msg->n_faulty_points; i++) { + if (!sbp_u16_decode(ctx, &msg->faulty_points[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_iono_grid_points_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_grid_points_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_iono_grid_points_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_flag_iono_grid_points_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_iono_grid_points_t *msg, sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_ssr_flag_iono_grid_points_encode(payload, sizeof(payload), + &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_SSR_FLAG_IONO_GRID_POINTS, sender_id, + payload_len, payload, write); +} + +int sbp_msg_ssr_flag_iono_grid_points_cmp( + const sbp_msg_ssr_flag_iono_grid_points_t *a, + const sbp_msg_ssr_flag_iono_grid_points_t *b) { + int ret = 0; + + ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_points, &b->n_faulty_points); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_points, &b->n_faulty_points); + for (uint8_t i = 0; ret == 0 && i < a->n_faulty_points; i++) { + ret = sbp_u16_cmp(&a->faulty_points[i], &b->faulty_points[i]); + } + if (ret != 0) { + return ret; + } + return ret; +} + +bool sbp_msg_ssr_flag_iono_tile_sat_los_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->n_faulty_los)) { + return false; + } + for (size_t i = 0; i < msg->n_faulty_los; i++) { + if (!sbp_sv_id_encode_internal(ctx, &msg->faulty_los[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_iono_tile_sat_los_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->n_faulty_los)) { + return false; + } + msg->n_faulty_los = + (uint8_t)((ctx->buf_len - ctx->offset) / SBP_SV_ID_ENCODED_LEN); + for (uint8_t i = 0; i < msg->n_faulty_los; i++) { + if (!sbp_sv_id_decode_internal(ctx, &msg->faulty_los[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_iono_tile_sat_los_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_iono_tile_sat_los_t *msg, sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_ssr_flag_iono_tile_sat_los_encode(payload, sizeof(payload), + &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS, sender_id, + payload_len, payload, write); +} + +int sbp_msg_ssr_flag_iono_tile_sat_los_cmp( + const sbp_msg_ssr_flag_iono_tile_sat_los_t *a, + const sbp_msg_ssr_flag_iono_tile_sat_los_t *b) { + int ret = 0; + + ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_los, &b->n_faulty_los); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_los, &b->n_faulty_los); + for (uint8_t i = 0; ret == 0 && i < a->n_faulty_los; i++) { + ret = sbp_sv_id_cmp(&a->faulty_los[i], &b->faulty_los[i]); + } + if (ret != 0) { + return ret; + } + return ret; +} + +bool sbp_msg_ssr_flag_iono_grid_point_sat_los_encode_internal( + sbp_encode_ctx_t *ctx, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->grid_point_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->n_faulty_los)) { + return false; + } + for (size_t i = 0; i < msg->n_faulty_los; i++) { + if (!sbp_sv_id_encode_internal(ctx, &msg->faulty_los[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_iono_grid_point_sat_los_encode( + uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_decode_internal( + sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->chain_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->grid_point_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->n_faulty_los)) { + return false; + } + msg->n_faulty_los = + (uint8_t)((ctx->buf_len - ctx->offset) / SBP_SV_ID_ENCODED_LEN); + for (uint8_t i = 0; i < msg->n_faulty_los; i++) { + if (!sbp_sv_id_decode_internal(ctx, &msg->faulty_los[i])) { + return false; + } + } + return true; +} + +s8 sbp_msg_ssr_flag_iono_grid_point_sat_los_decode( + const uint8_t *buf, uint8_t len, uint8_t *n_read, + sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_msg_ssr_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_send( + sbp_state_t *s, u16 sender_id, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg, + sbp_write_fn_t write) { + uint8_t payload[SBP_MAX_PAYLOAD_LEN]; + uint8_t payload_len; + s8 ret = sbp_msg_ssr_flag_iono_grid_point_sat_los_encode( + payload, sizeof(payload), &payload_len, msg); + if (ret != SBP_OK) { + return ret; + } + return sbp_payload_send(s, SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS, + sender_id, payload_len, payload, write); +} + +int sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp( + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *a, + const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *b) { + int ret = 0; + + ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->grid_point_id, &b->grid_point_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_los, &b->n_faulty_los); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->n_faulty_los, &b->n_faulty_los); + for (uint8_t i = 0; ret == 0 && i < a->n_faulty_los; i++) { + ret = sbp_sv_id_cmp(&a->faulty_los[i], &b->faulty_los[i]); + } + if (ret != 0) { + return ret; + } + return ret; +} diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c new file mode 100644 index 0000000000..3b5eb855af --- /dev/null +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c @@ -0,0 +1,306 @@ +/* + * 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/integrity/test_MsgSsrFlagHighLevel.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_integrity_MsgSsrFlagHighLevel) { + 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, 3001, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 185, 11, 66, 0, 31, 180, 0, 0, 0, 3, 0, 104, + 1, 0, 0, 6, 0, 10, 20, 0, 30, 0, 40, 1, 2, + 3, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 102, 67, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.ssr_flag_high_level.chain_id = 40; + + test_msg.ssr_flag_high_level.corr_time.tow = 360; + + test_msg.ssr_flag_high_level.corr_time.wn = 6; + + test_msg.ssr_flag_high_level.obs_time.tow = 180; + + test_msg.ssr_flag_high_level.obs_time.wn = 3; + + test_msg.ssr_flag_high_level.reserved[0] = 0; + + test_msg.ssr_flag_high_level.reserved[1] = 0; + + test_msg.ssr_flag_high_level.reserved[2] = 0; + + test_msg.ssr_flag_high_level.reserved[3] = 0; + + test_msg.ssr_flag_high_level.reserved[4] = 0; + + test_msg.ssr_flag_high_level.reserved[5] = 0; + + test_msg.ssr_flag_high_level.ssr_sol_id = 10; + + test_msg.ssr_flag_high_level.tile_id = 30; + + test_msg.ssr_flag_high_level.tile_set_id = 20; + + test_msg.ssr_flag_high_level.use_bds_sat = 3; + + test_msg.ssr_flag_high_level.use_gal_sat = 2; + + test_msg.ssr_flag_high_level.use_gps_sat = 1; + + test_msg.ssr_flag_high_level.use_iono_grid_point_sat_los = 7; + + test_msg.ssr_flag_high_level.use_iono_grid_points = 5; + + test_msg.ssr_flag_high_level.use_iono_tile_sat_los = 6; + + test_msg.ssr_flag_high_level.use_tropo_grid_points = 4; + + sbp_message_send(&sbp_state, SbpMsgSsrFlagHighLevel, 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(SbpMsgSsrFlagHighLevel, &last_msg.msg, &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.chain_id == 40, + "incorrect value for last_msg.msg.ssr_flag_high_level.chain_id, " + "expected 40, is %d", + last_msg.msg.ssr_flag_high_level.chain_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.corr_time.tow == 360, + "incorrect value for last_msg.msg.ssr_flag_high_level.corr_time.tow, " + "expected 360, is %d", + last_msg.msg.ssr_flag_high_level.corr_time.tow); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.corr_time.wn == 6, + "incorrect value for last_msg.msg.ssr_flag_high_level.corr_time.wn, " + "expected 6, is %d", + last_msg.msg.ssr_flag_high_level.corr_time.wn); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.obs_time.tow == 180, + "incorrect value for last_msg.msg.ssr_flag_high_level.obs_time.tow, " + "expected 180, is %d", + last_msg.msg.ssr_flag_high_level.obs_time.tow); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.obs_time.wn == 3, + "incorrect value for last_msg.msg.ssr_flag_high_level.obs_time.wn, " + "expected 3, is %d", + last_msg.msg.ssr_flag_high_level.obs_time.wn); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.reserved[0] == 0, + "incorrect value for last_msg.msg.ssr_flag_high_level.reserved[0], " + "expected 0, is %d", + last_msg.msg.ssr_flag_high_level.reserved[0]); + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.reserved[1] == 0, + "incorrect value for last_msg.msg.ssr_flag_high_level.reserved[1], " + "expected 0, is %d", + last_msg.msg.ssr_flag_high_level.reserved[1]); + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.reserved[2] == 0, + "incorrect value for last_msg.msg.ssr_flag_high_level.reserved[2], " + "expected 0, is %d", + last_msg.msg.ssr_flag_high_level.reserved[2]); + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.reserved[3] == 0, + "incorrect value for last_msg.msg.ssr_flag_high_level.reserved[3], " + "expected 0, is %d", + last_msg.msg.ssr_flag_high_level.reserved[3]); + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.reserved[4] == 0, + "incorrect value for last_msg.msg.ssr_flag_high_level.reserved[4], " + "expected 0, is %d", + last_msg.msg.ssr_flag_high_level.reserved[4]); + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.reserved[5] == 0, + "incorrect value for last_msg.msg.ssr_flag_high_level.reserved[5], " + "expected 0, is %d", + last_msg.msg.ssr_flag_high_level.reserved[5]); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.ssr_sol_id == 10, + "incorrect value for last_msg.msg.ssr_flag_high_level.ssr_sol_id, " + "expected 10, is %d", + last_msg.msg.ssr_flag_high_level.ssr_sol_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.tile_id == 30, + "incorrect value for last_msg.msg.ssr_flag_high_level.tile_id, " + "expected 30, is %d", + last_msg.msg.ssr_flag_high_level.tile_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.tile_set_id == 20, + "incorrect value for last_msg.msg.ssr_flag_high_level.tile_set_id, " + "expected 20, is %d", + last_msg.msg.ssr_flag_high_level.tile_set_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.use_bds_sat == 3, + "incorrect value for last_msg.msg.ssr_flag_high_level.use_bds_sat, " + "expected 3, is %d", + last_msg.msg.ssr_flag_high_level.use_bds_sat); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.use_gal_sat == 2, + "incorrect value for last_msg.msg.ssr_flag_high_level.use_gal_sat, " + "expected 2, is %d", + last_msg.msg.ssr_flag_high_level.use_gal_sat); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.use_gps_sat == 1, + "incorrect value for last_msg.msg.ssr_flag_high_level.use_gps_sat, " + "expected 1, is %d", + last_msg.msg.ssr_flag_high_level.use_gps_sat); + + ck_assert_msg( + last_msg.msg.ssr_flag_high_level.use_iono_grid_point_sat_los == 7, + "incorrect value for " + "last_msg.msg.ssr_flag_high_level.use_iono_grid_point_sat_los, " + "expected 7, is %d", + last_msg.msg.ssr_flag_high_level.use_iono_grid_point_sat_los); + + ck_assert_msg(last_msg.msg.ssr_flag_high_level.use_iono_grid_points == 5, + "incorrect value for " + "last_msg.msg.ssr_flag_high_level.use_iono_grid_points, " + "expected 5, is %d", + last_msg.msg.ssr_flag_high_level.use_iono_grid_points); + + ck_assert_msg(last_msg.msg.ssr_flag_high_level.use_iono_tile_sat_los == 6, + "incorrect value for " + "last_msg.msg.ssr_flag_high_level.use_iono_tile_sat_los, " + "expected 6, is %d", + last_msg.msg.ssr_flag_high_level.use_iono_tile_sat_los); + + ck_assert_msg(last_msg.msg.ssr_flag_high_level.use_tropo_grid_points == 4, + "incorrect value for " + "last_msg.msg.ssr_flag_high_level.use_tropo_grid_points, " + "expected 4, is %d", + last_msg.msg.ssr_flag_high_level.use_tropo_grid_points); + } +} +END_TEST + +Suite *auto_check_sbp_integrity_MsgSsrFlagHighLevel_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: auto_check_sbp_integrity_MsgSsrFlagHighLevel"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_integrity_MsgSsrFlagHighLevel"); + tcase_add_test(tc_acq, test_auto_check_sbp_integrity_MsgSsrFlagHighLevel); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c new file mode 100644 index 0000000000..34e0bae18d --- /dev/null +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c @@ -0,0 +1,266 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoGridPointSatLos.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_integrity_MsgSsrFlagIonoGridPointSatLos) { + 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, 3025, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 209, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 30, 0, 2, 10, 11, 15, 14, 98, 148, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.ssr_flag_iono_grid_point_sat_los.chain_id = 6; + + test_msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0].constellation = 11; + + test_msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0].satId = 10; + + test_msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1].constellation = 14; + + test_msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1].satId = 15; + + test_msg.ssr_flag_iono_grid_point_sat_los.grid_point_id = 30; + + test_msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los = 2; + + test_msg.ssr_flag_iono_grid_point_sat_los.num_msgs = 1; + + test_msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow = 180; + + test_msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn = 3; + + test_msg.ssr_flag_iono_grid_point_sat_los.seq_num = 2; + + test_msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id = 3; + + test_msg.ssr_flag_iono_grid_point_sat_los.tile_id = 5; + + test_msg.ssr_flag_iono_grid_point_sat_los.tile_set_id = 4; + + sbp_message_send(&sbp_state, SbpMsgSsrFlagIonoGridPointSatLos, 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(SbpMsgSsrFlagIonoGridPointSatLos, + &last_msg.msg, &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.chain_id == 6, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.chain_id); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0] + .constellation == 11, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0]." + "constellation, expected 11, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0] + .constellation); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0].satId == 10, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0].satId, " + "expected 10, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0].satId); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1] + .constellation == 14, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1]." + "constellation, expected 14, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1] + .constellation); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1].satId == 15, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1].satId, " + "expected 15, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[1].satId); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.grid_point_id == 30, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.grid_point_id, expected " + "30, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.grid_point_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los, expected " + "2, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.num_msgs == 1, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.num_msgs); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow == 180, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow, expected " + "180, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn, expected " + "3, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.seq_num == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.seq_num); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id, " + "expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_id == 5, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_set_id == 4, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_set_id, expected " + "4, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_set_id); + } +} +END_TEST + +Suite *auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos"); + tcase_add_test(tc_acq, + test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c new file mode 100644 index 0000000000..1b07d2fd51 --- /dev/null +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c @@ -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/integrity/test_MsgSsrFlagIonoGridPoints.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_integrity_MsgSsrFlagIonoGridPoints) { + 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, 3015, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 199, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 53, 7, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.ssr_flag_iono_grid_points.chain_id = 6; + + test_msg.ssr_flag_iono_grid_points.faulty_points[0] = 10; + + test_msg.ssr_flag_iono_grid_points.faulty_points[1] = 11; + + test_msg.ssr_flag_iono_grid_points.faulty_points[2] = 12; + + test_msg.ssr_flag_iono_grid_points.n_faulty_points = 3; + + test_msg.ssr_flag_iono_grid_points.num_msgs = 1; + + test_msg.ssr_flag_iono_grid_points.obs_time.tow = 180; + + test_msg.ssr_flag_iono_grid_points.obs_time.wn = 3; + + test_msg.ssr_flag_iono_grid_points.seq_num = 2; + + test_msg.ssr_flag_iono_grid_points.ssr_sol_id = 3; + + test_msg.ssr_flag_iono_grid_points.tile_id = 5; + + test_msg.ssr_flag_iono_grid_points.tile_set_id = 4; + + sbp_message_send(&sbp_state, SbpMsgSsrFlagIonoGridPoints, 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(SbpMsgSsrFlagIonoGridPoints, &last_msg.msg, + &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_points.chain_id == 6, + "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_iono_grid_points.chain_id); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.faulty_points[0] == 10, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.faulty_points[0], " + "expected 10, is %d", + last_msg.msg.ssr_flag_iono_grid_points.faulty_points[0]); + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.faulty_points[1] == 11, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.faulty_points[1], " + "expected 11, is %d", + last_msg.msg.ssr_flag_iono_grid_points.faulty_points[1]); + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.faulty_points[2] == 12, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.faulty_points[2], " + "expected 12, is %d", + last_msg.msg.ssr_flag_iono_grid_points.faulty_points[2]); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points, " + "expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_points.num_msgs == 1, + "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_iono_grid_points.num_msgs); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.obs_time.tow == 180, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.obs_time.tow, " + "expected 180, is %d", + last_msg.msg.ssr_flag_iono_grid_points.obs_time.tow); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_points.obs_time.wn == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.obs_time.wn, expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_points.obs_time.wn); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_points.seq_num == 2, + "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_grid_points.seq_num); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_points.ssr_sol_id == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.ssr_sol_id, expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_points.ssr_sol_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_points.tile_id == 5, + "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_iono_grid_points.tile_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_points.tile_set_id == 4, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.tile_set_id, expected 4, is %d", + last_msg.msg.ssr_flag_iono_grid_points.tile_set_id); + } +} +END_TEST + +Suite *auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints"); + tcase_add_test(tc_acq, + test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c new file mode 100644 index 0000000000..c97e36a27a --- /dev/null +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c @@ -0,0 +1,253 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoTileSatLos.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_integrity_MsgSsrFlagIonoTileSatLos) { + 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, 3021, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 205, 11, 66, 0, 19, 180, 0, 0, 0, 3, 0, 1, 2, + 3, 4, 0, 5, 0, 6, 2, 10, 11, 15, 14, 239, 235, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.ssr_flag_iono_tile_sat_los.chain_id = 6; + + test_msg.ssr_flag_iono_tile_sat_los.faulty_los[0].constellation = 11; + + test_msg.ssr_flag_iono_tile_sat_los.faulty_los[0].satId = 10; + + test_msg.ssr_flag_iono_tile_sat_los.faulty_los[1].constellation = 14; + + test_msg.ssr_flag_iono_tile_sat_los.faulty_los[1].satId = 15; + + test_msg.ssr_flag_iono_tile_sat_los.n_faulty_los = 2; + + test_msg.ssr_flag_iono_tile_sat_los.num_msgs = 1; + + test_msg.ssr_flag_iono_tile_sat_los.obs_time.tow = 180; + + test_msg.ssr_flag_iono_tile_sat_los.obs_time.wn = 3; + + test_msg.ssr_flag_iono_tile_sat_los.seq_num = 2; + + test_msg.ssr_flag_iono_tile_sat_los.ssr_sol_id = 3; + + test_msg.ssr_flag_iono_tile_sat_los.tile_id = 5; + + test_msg.ssr_flag_iono_tile_sat_los.tile_set_id = 4; + + sbp_message_send(&sbp_state, SbpMsgSsrFlagIonoTileSatLos, 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(SbpMsgSsrFlagIonoTileSatLos, &last_msg.msg, + &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.chain_id == 6, + "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.chain_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[0].constellation == + 11, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[0].constellation, " + "expected 11, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[0].constellation); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[0].satId == 10, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[0].satId, expected " + "10, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[0].satId); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[1].constellation == + 14, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[1].constellation, " + "expected 14, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[1].constellation); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[1].satId == 15, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[1].satId, expected " + "15, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[1].satId); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.num_msgs == 1, + "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.num_msgs); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.tow == 180, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.tow, " + "expected 180, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.tow); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.wn == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.wn, " + "expected 3, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.wn); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.seq_num == 2, + "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.seq_num); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.ssr_sol_id == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.ssr_sol_id, expected 3, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.ssr_sol_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.tile_id == 5, + "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.tile_id); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.tile_set_id == 4, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.tile_set_id, " + "expected 4, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.tile_set_id); + } +} +END_TEST + +Suite *auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos"); + tcase_add_test(tc_acq, + test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagSatellites.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagSatellites.c new file mode 100644 index 0000000000..1afbdd3bcd --- /dev/null +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagSatellites.c @@ -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/integrity/test_MsgSsrFlagSatellites.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_integrity_MsgSsrFlagSatellites) { + 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, 3005, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 189, 11, 66, 0, 15, 180, 0, 0, 0, 3, 0, + 1, 2, 3, 4, 5, 3, 10, 11, 12, 110, 165, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.ssr_flag_satellites.chain_id = 4; + + test_msg.ssr_flag_satellites.const_id = 5; + + test_msg.ssr_flag_satellites.faulty_sats[0] = 10; + + test_msg.ssr_flag_satellites.faulty_sats[1] = 11; + + test_msg.ssr_flag_satellites.faulty_sats[2] = 12; + + test_msg.ssr_flag_satellites.n_faulty_sats = 3; + + test_msg.ssr_flag_satellites.num_msgs = 1; + + test_msg.ssr_flag_satellites.obs_time.tow = 180; + + test_msg.ssr_flag_satellites.obs_time.wn = 3; + + test_msg.ssr_flag_satellites.seq_num = 2; + + test_msg.ssr_flag_satellites.ssr_sol_id = 3; + + sbp_message_send(&sbp_state, SbpMsgSsrFlagSatellites, 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(SbpMsgSsrFlagSatellites, &last_msg.msg, &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.chain_id == 4, + "incorrect value for last_msg.msg.ssr_flag_satellites.chain_id, " + "expected 4, is %d", + last_msg.msg.ssr_flag_satellites.chain_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.const_id == 5, + "incorrect value for last_msg.msg.ssr_flag_satellites.const_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_satellites.const_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.faulty_sats[0] == 10, + "incorrect value for last_msg.msg.ssr_flag_satellites.faulty_sats[0], " + "expected 10, is %d", + last_msg.msg.ssr_flag_satellites.faulty_sats[0]); + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.faulty_sats[1] == 11, + "incorrect value for last_msg.msg.ssr_flag_satellites.faulty_sats[1], " + "expected 11, is %d", + last_msg.msg.ssr_flag_satellites.faulty_sats[1]); + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.faulty_sats[2] == 12, + "incorrect value for last_msg.msg.ssr_flag_satellites.faulty_sats[2], " + "expected 12, is %d", + last_msg.msg.ssr_flag_satellites.faulty_sats[2]); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.n_faulty_sats == 3, + "incorrect value for last_msg.msg.ssr_flag_satellites.n_faulty_sats, " + "expected 3, is %d", + last_msg.msg.ssr_flag_satellites.n_faulty_sats); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.num_msgs == 1, + "incorrect value for last_msg.msg.ssr_flag_satellites.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_satellites.num_msgs); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.obs_time.tow == 180, + "incorrect value for last_msg.msg.ssr_flag_satellites.obs_time.tow, " + "expected 180, is %d", + last_msg.msg.ssr_flag_satellites.obs_time.tow); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.obs_time.wn == 3, + "incorrect value for last_msg.msg.ssr_flag_satellites.obs_time.wn, " + "expected 3, is %d", + last_msg.msg.ssr_flag_satellites.obs_time.wn); + + ck_assert_msg(last_msg.msg.ssr_flag_satellites.seq_num == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_satellites.seq_num, expected 2, is %d", + last_msg.msg.ssr_flag_satellites.seq_num); + + ck_assert_msg( + last_msg.msg.ssr_flag_satellites.ssr_sol_id == 3, + "incorrect value for last_msg.msg.ssr_flag_satellites.ssr_sol_id, " + "expected 3, is %d", + last_msg.msg.ssr_flag_satellites.ssr_sol_id); + } +} +END_TEST + +Suite *auto_check_sbp_integrity_MsgSsrFlagSatellites_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "auto_check_sbp_integrity_MsgSsrFlagSatellites"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_integrity_MsgSsrFlagSatellites"); + tcase_add_test(tc_acq, test_auto_check_sbp_integrity_MsgSsrFlagSatellites); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c new file mode 100644 index 0000000000..498004a302 --- /dev/null +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c @@ -0,0 +1,240 @@ +/* + * 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/integrity/test_MsgSsrFlagTropoGridPoints.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_integrity_MsgSsrFlagTropoGridPoints) { + 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, 3011, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + + u8 encoded_frame[] = { + 85, 195, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 243, 150, + }; + + dummy_reset(); + + sbp_msg_t test_msg; + memset(&test_msg, 0, sizeof(test_msg)); + + test_msg.ssr_flag_tropo_grid_points.chain_id = 6; + + test_msg.ssr_flag_tropo_grid_points.faulty_points[0] = 10; + + test_msg.ssr_flag_tropo_grid_points.faulty_points[1] = 11; + + test_msg.ssr_flag_tropo_grid_points.faulty_points[2] = 12; + + test_msg.ssr_flag_tropo_grid_points.n_faulty_points = 3; + + test_msg.ssr_flag_tropo_grid_points.num_msgs = 1; + + test_msg.ssr_flag_tropo_grid_points.obs_time.tow = 180; + + test_msg.ssr_flag_tropo_grid_points.obs_time.wn = 3; + + test_msg.ssr_flag_tropo_grid_points.seq_num = 2; + + test_msg.ssr_flag_tropo_grid_points.ssr_sol_id = 3; + + test_msg.ssr_flag_tropo_grid_points.tile_id = 5; + + test_msg.ssr_flag_tropo_grid_points.tile_set_id = 4; + + sbp_message_send(&sbp_state, SbpMsgSsrFlagTropoGridPoints, 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(SbpMsgSsrFlagTropoGridPoints, &last_msg.msg, + &test_msg) == 0, + "Sent and received messages did not compare equal"); + + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.chain_id == 6, + "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.chain_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[0] == 10, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[0], expected " + "10, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[0]); + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[1] == 11, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[1], expected " + "11, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[1]); + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[2] == 12, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[2], expected " + "12, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[2]); + + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points, " + "expected 3, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points); + + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.num_msgs == 1, + "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.num_msgs); + + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.obs_time.tow == 180, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.obs_time.tow, " + "expected 180, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.obs_time.tow); + + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.obs_time.wn == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.obs_time.wn, " + "expected 3, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.obs_time.wn); + + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.seq_num == 2, + "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.seq_num); + + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.ssr_sol_id == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.ssr_sol_id, expected 3, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.ssr_sol_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.tile_id == 5, + "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.tile_id); + + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.tile_set_id == 4, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.tile_set_id, " + "expected 4, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.tile_set_id); + } +} +END_TEST + +Suite *auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints"); + TCase *tc_acq = tcase_create( + "Automated_Suite_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints"); + tcase_add_test(tc_acq, + test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints); + 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 09a6c6d772..3ea32395ab 100644 --- a/c/test/check_main.c +++ b/c/test/check_main.c @@ -34,6 +34,16 @@ int main(void) { srunner_add_suite(sr, auto_check_sbp_file_io_MsgFileioWriteResp_suite()); srunner_add_suite(sr, auto_check_sbp_imu_MsgImuAux_suite()); srunner_add_suite(sr, auto_check_sbp_imu_MsgImuRaw_suite()); + srunner_add_suite(sr, auto_check_sbp_integrity_MsgSsrFlagHighLevel_suite()); + srunner_add_suite( + sr, auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos_suite()); + srunner_add_suite(sr, + auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints_suite()); + srunner_add_suite(sr, + auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos_suite()); + srunner_add_suite(sr, auto_check_sbp_integrity_MsgSsrFlagSatellites_suite()); + srunner_add_suite(sr, + auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints_suite()); srunner_add_suite(sr, auto_check_sbp_logging_MsgFwd_suite()); srunner_add_suite(sr, auto_check_sbp_logging_MsgLog_suite()); srunner_add_suite(sr, auto_check_sbp_logging_MsgPrintDep_suite()); diff --git a/c/test/check_main_legacy.c b/c/test/check_main_legacy.c index da78e3a381..461d1dff7e 100644 --- a/c/test/check_main_legacy.c +++ b/c/test/check_main_legacy.c @@ -38,6 +38,19 @@ int main(void) { legacy_auto_check_sbp_file_io_MsgFileioWriteResp_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_imu_MsgImuAux_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_imu_MsgImuRaw_suite()); + srunner_add_suite( + sr, legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel_suite()); + srunner_add_suite( + sr, + legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos_suite()); + srunner_add_suite( + sr, legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints_suite()); + srunner_add_suite( + sr, legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos_suite()); + srunner_add_suite( + sr, legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites_suite()); + srunner_add_suite( + sr, legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_logging_MsgFwd_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_logging_MsgLog_suite()); srunner_add_suite(sr, legacy_auto_check_sbp_logging_MsgPrintDep_suite()); diff --git a/c/test/check_suites.h b/c/test/check_suites.h index 6aa7a5c142..d07ef70412 100644 --- a/c/test/check_suites.h +++ b/c/test/check_suites.h @@ -26,6 +26,12 @@ Suite* auto_check_sbp_ext_events_MsgExtEvent_suite(void); Suite* auto_check_sbp_file_io_MsgFileioWriteResp_suite(void); Suite* auto_check_sbp_imu_MsgImuAux_suite(void); Suite* auto_check_sbp_imu_MsgImuRaw_suite(void); +Suite* auto_check_sbp_integrity_MsgSsrFlagHighLevel_suite(void); +Suite* auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos_suite(void); +Suite* auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints_suite(void); +Suite* auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos_suite(void); +Suite* auto_check_sbp_integrity_MsgSsrFlagSatellites_suite(void); +Suite* auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints_suite(void); Suite* auto_check_sbp_logging_MsgFwd_suite(void); Suite* auto_check_sbp_logging_MsgLog_suite(void); Suite* auto_check_sbp_logging_MsgPrintDep_suite(void); diff --git a/c/test/check_suites_legacy.h b/c/test/check_suites_legacy.h index 2aca20676f..421c8292e1 100644 --- a/c/test/check_suites_legacy.h +++ b/c/test/check_suites_legacy.h @@ -26,6 +26,13 @@ Suite* legacy_auto_check_sbp_ext_events_MsgExtEvent_suite(void); Suite* legacy_auto_check_sbp_file_io_MsgFileioWriteResp_suite(void); Suite* legacy_auto_check_sbp_imu_MsgImuAux_suite(void); Suite* legacy_auto_check_sbp_imu_MsgImuRaw_suite(void); +Suite* legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel_suite(void); +Suite* legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos_suite( + void); +Suite* legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints_suite(void); +Suite* legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos_suite(void); +Suite* legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites_suite(void); +Suite* legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints_suite(void); Suite* legacy_auto_check_sbp_logging_MsgFwd_suite(void); Suite* legacy_auto_check_sbp_logging_MsgLog_suite(void); Suite* legacy_auto_check_sbp_logging_MsgPrintDep_suite(void); diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc new file mode 100644 index 0000000000..21dfbfe29c --- /dev/null +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc @@ -0,0 +1,188 @@ +/* + * 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/integrity/test_MsgSsrFlagHighLevel.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_integrity_MsgSsrFlagHighLevel0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_integrity_MsgSsrFlagHighLevel0() + : ::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_flag_high_level_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_ssr_flag_high_level_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_integrity_MsgSsrFlagHighLevel0, Test) { + uint8_t encoded_frame[] = { + 85, 185, 11, 66, 0, 31, 180, 0, 0, 0, 3, 0, 104, 1, 0, 0, 6, 0, 10, 20, + 0, 30, 0, 40, 1, 2, 3, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 102, 67, + }; + + sbp_msg_ssr_flag_high_level_t test_msg{}; + test_msg.chain_id = 40; + test_msg.corr_time.tow = 360; + test_msg.corr_time.wn = 6; + test_msg.obs_time.tow = 180; + test_msg.obs_time.wn = 3; + + test_msg.reserved[0] = 0; + + test_msg.reserved[1] = 0; + + test_msg.reserved[2] = 0; + + test_msg.reserved[3] = 0; + + test_msg.reserved[4] = 0; + + test_msg.reserved[5] = 0; + test_msg.ssr_sol_id = 10; + test_msg.tile_id = 30; + test_msg.tile_set_id = 20; + test_msg.use_bds_sat = 3; + test_msg.use_gal_sat = 2; + test_msg.use_gps_sat = 1; + test_msg.use_iono_grid_point_sat_los = 7; + test_msg.use_iono_grid_points = 5; + test_msg.use_iono_tile_sat_los = 6; + test_msg.use_tropo_grid_points = 4; + + 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_.chain_id, 40) + << "incorrect value for last_msg_.chain_id, expected 40, is " + << last_msg_.chain_id; + EXPECT_EQ(last_msg_.corr_time.tow, 360) + << "incorrect value for last_msg_.corr_time.tow, expected 360, is " + << last_msg_.corr_time.tow; + EXPECT_EQ(last_msg_.corr_time.wn, 6) + << "incorrect value for last_msg_.corr_time.wn, expected 6, is " + << last_msg_.corr_time.wn; + EXPECT_EQ(last_msg_.obs_time.tow, 180) + << "incorrect value for last_msg_.obs_time.tow, expected 180, is " + << last_msg_.obs_time.tow; + EXPECT_EQ(last_msg_.obs_time.wn, 3) + << "incorrect value for last_msg_.obs_time.wn, expected 3, is " + << last_msg_.obs_time.wn; + EXPECT_EQ(last_msg_.reserved[0], 0) + << "incorrect value for last_msg_.reserved[0], expected 0, is " + << last_msg_.reserved[0]; + EXPECT_EQ(last_msg_.reserved[1], 0) + << "incorrect value for last_msg_.reserved[1], expected 0, is " + << last_msg_.reserved[1]; + EXPECT_EQ(last_msg_.reserved[2], 0) + << "incorrect value for last_msg_.reserved[2], expected 0, is " + << last_msg_.reserved[2]; + EXPECT_EQ(last_msg_.reserved[3], 0) + << "incorrect value for last_msg_.reserved[3], expected 0, is " + << last_msg_.reserved[3]; + EXPECT_EQ(last_msg_.reserved[4], 0) + << "incorrect value for last_msg_.reserved[4], expected 0, is " + << last_msg_.reserved[4]; + EXPECT_EQ(last_msg_.reserved[5], 0) + << "incorrect value for last_msg_.reserved[5], expected 0, is " + << last_msg_.reserved[5]; + EXPECT_EQ(last_msg_.ssr_sol_id, 10) + << "incorrect value for last_msg_.ssr_sol_id, expected 10, is " + << last_msg_.ssr_sol_id; + EXPECT_EQ(last_msg_.tile_id, 30) + << "incorrect value for last_msg_.tile_id, expected 30, is " + << last_msg_.tile_id; + EXPECT_EQ(last_msg_.tile_set_id, 20) + << "incorrect value for last_msg_.tile_set_id, expected 20, is " + << last_msg_.tile_set_id; + EXPECT_EQ(last_msg_.use_bds_sat, 3) + << "incorrect value for last_msg_.use_bds_sat, expected 3, is " + << last_msg_.use_bds_sat; + EXPECT_EQ(last_msg_.use_gal_sat, 2) + << "incorrect value for last_msg_.use_gal_sat, expected 2, is " + << last_msg_.use_gal_sat; + EXPECT_EQ(last_msg_.use_gps_sat, 1) + << "incorrect value for last_msg_.use_gps_sat, expected 1, is " + << last_msg_.use_gps_sat; + EXPECT_EQ(last_msg_.use_iono_grid_point_sat_los, 7) + << "incorrect value for last_msg_.use_iono_grid_point_sat_los, expected " + "7, is " + << last_msg_.use_iono_grid_point_sat_los; + EXPECT_EQ(last_msg_.use_iono_grid_points, 5) + << "incorrect value for last_msg_.use_iono_grid_points, expected 5, is " + << last_msg_.use_iono_grid_points; + EXPECT_EQ(last_msg_.use_iono_tile_sat_los, 6) + << "incorrect value for last_msg_.use_iono_tile_sat_los, expected 6, is " + << last_msg_.use_iono_tile_sat_los; + EXPECT_EQ(last_msg_.use_tropo_grid_points, 4) + << "incorrect value for last_msg_.use_tropo_grid_points, expected 4, is " + << last_msg_.use_tropo_grid_points; +} diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc new file mode 100644 index 0000000000..5d6e653eec --- /dev/null +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc @@ -0,0 +1,158 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml +// by generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0() + : ::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_flag_iono_grid_point_sat_los_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_ssr_flag_iono_grid_point_sat_los_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_integrity_MsgSsrFlagIonoGridPointSatLos0, Test) { + uint8_t encoded_frame[] = { + 85, 209, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 30, 0, 2, 10, 11, 15, 14, 98, 148, + }; + + sbp_msg_ssr_flag_iono_grid_point_sat_los_t test_msg{}; + test_msg.chain_id = 6; + + test_msg.faulty_los[0].constellation = 11; + test_msg.faulty_los[0].satId = 10; + + test_msg.faulty_los[1].constellation = 14; + test_msg.faulty_los[1].satId = 15; + test_msg.grid_point_id = 30; + test_msg.n_faulty_los = 2; + test_msg.num_msgs = 1; + test_msg.obs_time.tow = 180; + test_msg.obs_time.wn = 3; + test_msg.seq_num = 2; + test_msg.ssr_sol_id = 3; + test_msg.tile_id = 5; + test_msg.tile_set_id = 4; + + 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_.chain_id, 6) + << "incorrect value for last_msg_.chain_id, expected 6, is " + << last_msg_.chain_id; + EXPECT_EQ(last_msg_.faulty_los[0].constellation, 11) + << "incorrect value for last_msg_.faulty_los[0].constellation, expected " + "11, is " + << last_msg_.faulty_los[0].constellation; + EXPECT_EQ(last_msg_.faulty_los[0].satId, 10) + << "incorrect value for last_msg_.faulty_los[0].satId, expected 10, is " + << last_msg_.faulty_los[0].satId; + EXPECT_EQ(last_msg_.faulty_los[1].constellation, 14) + << "incorrect value for last_msg_.faulty_los[1].constellation, expected " + "14, is " + << last_msg_.faulty_los[1].constellation; + EXPECT_EQ(last_msg_.faulty_los[1].satId, 15) + << "incorrect value for last_msg_.faulty_los[1].satId, expected 15, is " + << last_msg_.faulty_los[1].satId; + EXPECT_EQ(last_msg_.grid_point_id, 30) + << "incorrect value for last_msg_.grid_point_id, expected 30, is " + << last_msg_.grid_point_id; + EXPECT_EQ(last_msg_.n_faulty_los, 2) + << "incorrect value for last_msg_.n_faulty_los, expected 2, is " + << last_msg_.n_faulty_los; + EXPECT_EQ(last_msg_.num_msgs, 1) + << "incorrect value for last_msg_.num_msgs, expected 1, is " + << last_msg_.num_msgs; + EXPECT_EQ(last_msg_.obs_time.tow, 180) + << "incorrect value for last_msg_.obs_time.tow, expected 180, is " + << last_msg_.obs_time.tow; + EXPECT_EQ(last_msg_.obs_time.wn, 3) + << "incorrect value for last_msg_.obs_time.wn, expected 3, is " + << last_msg_.obs_time.wn; + EXPECT_EQ(last_msg_.seq_num, 2) + << "incorrect value for last_msg_.seq_num, expected 2, is " + << last_msg_.seq_num; + EXPECT_EQ(last_msg_.ssr_sol_id, 3) + << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " + << last_msg_.ssr_sol_id; + EXPECT_EQ(last_msg_.tile_id, 5) + << "incorrect value for last_msg_.tile_id, expected 5, is " + << last_msg_.tile_id; + EXPECT_EQ(last_msg_.tile_set_id, 4) + << "incorrect value for last_msg_.tile_set_id, expected 4, is " + << last_msg_.tile_set_id; +} diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc new file mode 100644 index 0000000000..ee491d8453 --- /dev/null +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc @@ -0,0 +1,148 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoGridPoints.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0() + : ::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_flag_iono_grid_points_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_ssr_flag_iono_grid_points_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_integrity_MsgSsrFlagIonoGridPoints0, Test) { + uint8_t encoded_frame[] = { + 85, 199, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 53, 7, + }; + + sbp_msg_ssr_flag_iono_grid_points_t test_msg{}; + test_msg.chain_id = 6; + + test_msg.faulty_points[0] = 10; + + test_msg.faulty_points[1] = 11; + + test_msg.faulty_points[2] = 12; + test_msg.n_faulty_points = 3; + test_msg.num_msgs = 1; + test_msg.obs_time.tow = 180; + test_msg.obs_time.wn = 3; + test_msg.seq_num = 2; + test_msg.ssr_sol_id = 3; + test_msg.tile_id = 5; + test_msg.tile_set_id = 4; + + 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_.chain_id, 6) + << "incorrect value for last_msg_.chain_id, expected 6, is " + << last_msg_.chain_id; + EXPECT_EQ(last_msg_.faulty_points[0], 10) + << "incorrect value for last_msg_.faulty_points[0], expected 10, is " + << last_msg_.faulty_points[0]; + EXPECT_EQ(last_msg_.faulty_points[1], 11) + << "incorrect value for last_msg_.faulty_points[1], expected 11, is " + << last_msg_.faulty_points[1]; + EXPECT_EQ(last_msg_.faulty_points[2], 12) + << "incorrect value for last_msg_.faulty_points[2], expected 12, is " + << last_msg_.faulty_points[2]; + EXPECT_EQ(last_msg_.n_faulty_points, 3) + << "incorrect value for last_msg_.n_faulty_points, expected 3, is " + << last_msg_.n_faulty_points; + EXPECT_EQ(last_msg_.num_msgs, 1) + << "incorrect value for last_msg_.num_msgs, expected 1, is " + << last_msg_.num_msgs; + EXPECT_EQ(last_msg_.obs_time.tow, 180) + << "incorrect value for last_msg_.obs_time.tow, expected 180, is " + << last_msg_.obs_time.tow; + EXPECT_EQ(last_msg_.obs_time.wn, 3) + << "incorrect value for last_msg_.obs_time.wn, expected 3, is " + << last_msg_.obs_time.wn; + EXPECT_EQ(last_msg_.seq_num, 2) + << "incorrect value for last_msg_.seq_num, expected 2, is " + << last_msg_.seq_num; + EXPECT_EQ(last_msg_.ssr_sol_id, 3) + << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " + << last_msg_.ssr_sol_id; + EXPECT_EQ(last_msg_.tile_id, 5) + << "incorrect value for last_msg_.tile_id, expected 5, is " + << last_msg_.tile_id; + EXPECT_EQ(last_msg_.tile_set_id, 4) + << "incorrect value for last_msg_.tile_set_id, expected 4, is " + << last_msg_.tile_set_id; +} diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc new file mode 100644 index 0000000000..0ddf593cb0 --- /dev/null +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc @@ -0,0 +1,154 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoTileSatLos.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0() + : ::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_flag_iono_tile_sat_los_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_ssr_flag_iono_tile_sat_los_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_integrity_MsgSsrFlagIonoTileSatLos0, Test) { + uint8_t encoded_frame[] = { + 85, 205, 11, 66, 0, 19, 180, 0, 0, 0, 3, 0, 1, 2, + 3, 4, 0, 5, 0, 6, 2, 10, 11, 15, 14, 239, 235, + }; + + sbp_msg_ssr_flag_iono_tile_sat_los_t test_msg{}; + test_msg.chain_id = 6; + + test_msg.faulty_los[0].constellation = 11; + test_msg.faulty_los[0].satId = 10; + + test_msg.faulty_los[1].constellation = 14; + test_msg.faulty_los[1].satId = 15; + test_msg.n_faulty_los = 2; + test_msg.num_msgs = 1; + test_msg.obs_time.tow = 180; + test_msg.obs_time.wn = 3; + test_msg.seq_num = 2; + test_msg.ssr_sol_id = 3; + test_msg.tile_id = 5; + test_msg.tile_set_id = 4; + + 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_.chain_id, 6) + << "incorrect value for last_msg_.chain_id, expected 6, is " + << last_msg_.chain_id; + EXPECT_EQ(last_msg_.faulty_los[0].constellation, 11) + << "incorrect value for last_msg_.faulty_los[0].constellation, expected " + "11, is " + << last_msg_.faulty_los[0].constellation; + EXPECT_EQ(last_msg_.faulty_los[0].satId, 10) + << "incorrect value for last_msg_.faulty_los[0].satId, expected 10, is " + << last_msg_.faulty_los[0].satId; + EXPECT_EQ(last_msg_.faulty_los[1].constellation, 14) + << "incorrect value for last_msg_.faulty_los[1].constellation, expected " + "14, is " + << last_msg_.faulty_los[1].constellation; + EXPECT_EQ(last_msg_.faulty_los[1].satId, 15) + << "incorrect value for last_msg_.faulty_los[1].satId, expected 15, is " + << last_msg_.faulty_los[1].satId; + EXPECT_EQ(last_msg_.n_faulty_los, 2) + << "incorrect value for last_msg_.n_faulty_los, expected 2, is " + << last_msg_.n_faulty_los; + EXPECT_EQ(last_msg_.num_msgs, 1) + << "incorrect value for last_msg_.num_msgs, expected 1, is " + << last_msg_.num_msgs; + EXPECT_EQ(last_msg_.obs_time.tow, 180) + << "incorrect value for last_msg_.obs_time.tow, expected 180, is " + << last_msg_.obs_time.tow; + EXPECT_EQ(last_msg_.obs_time.wn, 3) + << "incorrect value for last_msg_.obs_time.wn, expected 3, is " + << last_msg_.obs_time.wn; + EXPECT_EQ(last_msg_.seq_num, 2) + << "incorrect value for last_msg_.seq_num, expected 2, is " + << last_msg_.seq_num; + EXPECT_EQ(last_msg_.ssr_sol_id, 3) + << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " + << last_msg_.ssr_sol_id; + EXPECT_EQ(last_msg_.tile_id, 5) + << "incorrect value for last_msg_.tile_id, expected 5, is " + << last_msg_.tile_id; + EXPECT_EQ(last_msg_.tile_set_id, 4) + << "incorrect value for last_msg_.tile_set_id, expected 4, is " + << last_msg_.tile_set_id; +} diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc new file mode 100644 index 0000000000..6f2f141fb3 --- /dev/null +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc @@ -0,0 +1,144 @@ +/* + * 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/integrity/test_MsgSsrFlagSatellites.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_integrity_MsgSsrFlagSatellites0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_integrity_MsgSsrFlagSatellites0() + : ::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_flag_satellites_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_ssr_flag_satellites_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_integrity_MsgSsrFlagSatellites0, Test) { + uint8_t encoded_frame[] = { + 85, 189, 11, 66, 0, 15, 180, 0, 0, 0, 3, 0, + 1, 2, 3, 4, 5, 3, 10, 11, 12, 110, 165, + }; + + sbp_msg_ssr_flag_satellites_t test_msg{}; + test_msg.chain_id = 4; + test_msg.const_id = 5; + + test_msg.faulty_sats[0] = 10; + + test_msg.faulty_sats[1] = 11; + + test_msg.faulty_sats[2] = 12; + test_msg.n_faulty_sats = 3; + test_msg.num_msgs = 1; + test_msg.obs_time.tow = 180; + test_msg.obs_time.wn = 3; + test_msg.seq_num = 2; + test_msg.ssr_sol_id = 3; + + 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_.chain_id, 4) + << "incorrect value for last_msg_.chain_id, expected 4, is " + << last_msg_.chain_id; + EXPECT_EQ(last_msg_.const_id, 5) + << "incorrect value for last_msg_.const_id, expected 5, is " + << last_msg_.const_id; + EXPECT_EQ(last_msg_.faulty_sats[0], 10) + << "incorrect value for last_msg_.faulty_sats[0], expected 10, is " + << last_msg_.faulty_sats[0]; + EXPECT_EQ(last_msg_.faulty_sats[1], 11) + << "incorrect value for last_msg_.faulty_sats[1], expected 11, is " + << last_msg_.faulty_sats[1]; + EXPECT_EQ(last_msg_.faulty_sats[2], 12) + << "incorrect value for last_msg_.faulty_sats[2], expected 12, is " + << last_msg_.faulty_sats[2]; + EXPECT_EQ(last_msg_.n_faulty_sats, 3) + << "incorrect value for last_msg_.n_faulty_sats, expected 3, is " + << last_msg_.n_faulty_sats; + EXPECT_EQ(last_msg_.num_msgs, 1) + << "incorrect value for last_msg_.num_msgs, expected 1, is " + << last_msg_.num_msgs; + EXPECT_EQ(last_msg_.obs_time.tow, 180) + << "incorrect value for last_msg_.obs_time.tow, expected 180, is " + << last_msg_.obs_time.tow; + EXPECT_EQ(last_msg_.obs_time.wn, 3) + << "incorrect value for last_msg_.obs_time.wn, expected 3, is " + << last_msg_.obs_time.wn; + EXPECT_EQ(last_msg_.seq_num, 2) + << "incorrect value for last_msg_.seq_num, expected 2, is " + << last_msg_.seq_num; + EXPECT_EQ(last_msg_.ssr_sol_id, 3) + << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " + << last_msg_.ssr_sol_id; +} diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc new file mode 100644 index 0000000000..99188dc619 --- /dev/null +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc @@ -0,0 +1,149 @@ +/* + * 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/integrity/test_MsgSsrFlagTropoGridPoints.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +#include +class Test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::MessageHandler { + public: + Test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0() + : ::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_flag_tropo_grid_points_t &msg) override { + last_msg_ = msg; + last_sender_id_ = sender_id; + n_callbacks_logged_++; + } + + sbp_msg_ssr_flag_tropo_grid_points_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_integrity_MsgSsrFlagTropoGridPoints0, Test) { + uint8_t encoded_frame[] = { + 85, 195, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 243, 150, + }; + + sbp_msg_ssr_flag_tropo_grid_points_t test_msg{}; + test_msg.chain_id = 6; + + test_msg.faulty_points[0] = 10; + + test_msg.faulty_points[1] = 11; + + test_msg.faulty_points[2] = 12; + test_msg.n_faulty_points = 3; + test_msg.num_msgs = 1; + test_msg.obs_time.tow = 180; + test_msg.obs_time.wn = 3; + test_msg.seq_num = 2; + test_msg.ssr_sol_id = 3; + test_msg.tile_id = 5; + test_msg.tile_set_id = 4; + + 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_.chain_id, 6) + << "incorrect value for last_msg_.chain_id, expected 6, is " + << last_msg_.chain_id; + EXPECT_EQ(last_msg_.faulty_points[0], 10) + << "incorrect value for last_msg_.faulty_points[0], expected 10, is " + << last_msg_.faulty_points[0]; + EXPECT_EQ(last_msg_.faulty_points[1], 11) + << "incorrect value for last_msg_.faulty_points[1], expected 11, is " + << last_msg_.faulty_points[1]; + EXPECT_EQ(last_msg_.faulty_points[2], 12) + << "incorrect value for last_msg_.faulty_points[2], expected 12, is " + << last_msg_.faulty_points[2]; + EXPECT_EQ(last_msg_.n_faulty_points, 3) + << "incorrect value for last_msg_.n_faulty_points, expected 3, is " + << last_msg_.n_faulty_points; + EXPECT_EQ(last_msg_.num_msgs, 1) + << "incorrect value for last_msg_.num_msgs, expected 1, is " + << last_msg_.num_msgs; + EXPECT_EQ(last_msg_.obs_time.tow, 180) + << "incorrect value for last_msg_.obs_time.tow, expected 180, is " + << last_msg_.obs_time.tow; + EXPECT_EQ(last_msg_.obs_time.wn, 3) + << "incorrect value for last_msg_.obs_time.wn, expected 3, is " + << last_msg_.obs_time.wn; + EXPECT_EQ(last_msg_.seq_num, 2) + << "incorrect value for last_msg_.seq_num, expected 2, is " + << last_msg_.seq_num; + EXPECT_EQ(last_msg_.ssr_sol_id, 3) + << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " + << last_msg_.ssr_sol_id; + EXPECT_EQ(last_msg_.tile_id, 5) + << "incorrect value for last_msg_.tile_id, expected 5, is " + << last_msg_.tile_id; + EXPECT_EQ(last_msg_.tile_set_id, 4) + << "incorrect value for last_msg_.tile_set_id, expected 4, is " + << last_msg_.tile_set_id; +} diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c new file mode 100644 index 0000000000..b9f870cec6 --- /dev/null +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagHighLevel.c @@ -0,0 +1,318 @@ +/* + * 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/integrity/test_MsgSsrFlagHighLevel.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_integrity_MsgSsrFlagHighLevel) { + 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, 3001, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 3001, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 185, 11, 66, 0, 31, 180, 0, 0, 0, 3, 0, 104, + 1, 0, 0, 6, 0, 10, 20, 0, 30, 0, 40, 1, 2, + 3, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 102, 67, + }; + + 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_flag_high_level_t *test_msg = + (msg_ssr_flag_high_level_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + test_msg->chain_id = 40; + test_msg->corr_time.tow = 360; + test_msg->corr_time.wn = 6; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->reserved[0]); + } + test_msg->reserved[0] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->reserved[0]); + } + test_msg->reserved[1] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->reserved[0]); + } + test_msg->reserved[2] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->reserved[0]); + } + test_msg->reserved[3] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->reserved[0]); + } + test_msg->reserved[4] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->reserved[0]); + } + test_msg->reserved[5] = 0; + test_msg->ssr_sol_id = 10; + test_msg->tile_id = 30; + test_msg->tile_set_id = 20; + test_msg->use_bds_sat = 3; + test_msg->use_gal_sat = 2; + test_msg->use_gps_sat = 1; + test_msg->use_iono_grid_point_sat_los = 7; + test_msg->use_iono_grid_points = 5; + test_msg->use_iono_tile_sat_los = 6; + test_msg->use_tropo_grid_points = 4; + sbp_payload_send(&sbp_state, 3001, 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 == 3001, + "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_flag_high_level_t *check_msg = + (msg_ssr_flag_high_level_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->chain_id == 40, + "incorrect value for chain_id, expected 40, is %d", + check_msg->chain_id); + ck_assert_msg(check_msg->corr_time.tow == 360, + "incorrect value for corr_time.tow, expected 360, is %d", + check_msg->corr_time.tow); + ck_assert_msg(check_msg->corr_time.wn == 6, + "incorrect value for corr_time.wn, expected 6, is %d", + check_msg->corr_time.wn); + ck_assert_msg(check_msg->obs_time.tow == 180, + "incorrect value for obs_time.tow, expected 180, is %d", + check_msg->obs_time.tow); + ck_assert_msg(check_msg->obs_time.wn == 3, + "incorrect value for obs_time.wn, expected 3, is %d", + check_msg->obs_time.wn); + ck_assert_msg(check_msg->reserved[0] == 0, + "incorrect value for reserved[0], expected 0, is %d", + check_msg->reserved[0]); + ck_assert_msg(check_msg->reserved[1] == 0, + "incorrect value for reserved[1], expected 0, is %d", + check_msg->reserved[1]); + ck_assert_msg(check_msg->reserved[2] == 0, + "incorrect value for reserved[2], expected 0, is %d", + check_msg->reserved[2]); + ck_assert_msg(check_msg->reserved[3] == 0, + "incorrect value for reserved[3], expected 0, is %d", + check_msg->reserved[3]); + ck_assert_msg(check_msg->reserved[4] == 0, + "incorrect value for reserved[4], expected 0, is %d", + check_msg->reserved[4]); + ck_assert_msg(check_msg->reserved[5] == 0, + "incorrect value for reserved[5], expected 0, is %d", + check_msg->reserved[5]); + ck_assert_msg(check_msg->ssr_sol_id == 10, + "incorrect value for ssr_sol_id, expected 10, is %d", + check_msg->ssr_sol_id); + ck_assert_msg(check_msg->tile_id == 30, + "incorrect value for tile_id, expected 30, is %d", + check_msg->tile_id); + ck_assert_msg(check_msg->tile_set_id == 20, + "incorrect value for tile_set_id, expected 20, is %d", + check_msg->tile_set_id); + ck_assert_msg(check_msg->use_bds_sat == 3, + "incorrect value for use_bds_sat, expected 3, is %d", + check_msg->use_bds_sat); + ck_assert_msg(check_msg->use_gal_sat == 2, + "incorrect value for use_gal_sat, expected 2, is %d", + check_msg->use_gal_sat); + ck_assert_msg(check_msg->use_gps_sat == 1, + "incorrect value for use_gps_sat, expected 1, is %d", + check_msg->use_gps_sat); + ck_assert_msg( + check_msg->use_iono_grid_point_sat_los == 7, + "incorrect value for use_iono_grid_point_sat_los, expected 7, is %d", + check_msg->use_iono_grid_point_sat_los); + ck_assert_msg(check_msg->use_iono_grid_points == 5, + "incorrect value for use_iono_grid_points, expected 5, is %d", + check_msg->use_iono_grid_points); + ck_assert_msg( + check_msg->use_iono_tile_sat_los == 6, + "incorrect value for use_iono_tile_sat_los, expected 6, is %d", + check_msg->use_iono_tile_sat_los); + ck_assert_msg( + check_msg->use_tropo_grid_points == 4, + "incorrect value for use_tropo_grid_points, expected 4, is %d", + check_msg->use_tropo_grid_points); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel"); + tcase_add_test(tc_acq, + test_legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c new file mode 100644 index 0000000000..8b5fee9e33 --- /dev/null +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c @@ -0,0 +1,275 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoGridPointSatLos.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_integrity_MsgSsrFlagIonoGridPointSatLos) { + 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, 3025, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 3025, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 209, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 30, 0, 2, 10, 11, 15, 14, 98, 148, + }; + + 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_flag_iono_grid_point_sat_los_t *test_msg = + (msg_ssr_flag_iono_grid_point_sat_los_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_los[0]); + } + test_msg->faulty_los[0].constellation = 11; + test_msg->faulty_los[0].satId = 10; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_los[0]); + } + test_msg->faulty_los[1].constellation = 14; + test_msg->faulty_los[1].satId = 15; + test_msg->grid_point_id = 30; + test_msg->n_faulty_los = 2; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + sbp_payload_send(&sbp_state, 3025, 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 == 3025, + "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_flag_iono_grid_point_sat_los_t *check_msg = + (msg_ssr_flag_iono_grid_point_sat_los_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->chain_id == 6, + "incorrect value for chain_id, expected 6, is %d", + check_msg->chain_id); + ck_assert_msg( + check_msg->faulty_los[0].constellation == 11, + "incorrect value for faulty_los[0].constellation, expected 11, is %d", + check_msg->faulty_los[0].constellation); + ck_assert_msg(check_msg->faulty_los[0].satId == 10, + "incorrect value for faulty_los[0].satId, expected 10, is %d", + check_msg->faulty_los[0].satId); + ck_assert_msg( + check_msg->faulty_los[1].constellation == 14, + "incorrect value for faulty_los[1].constellation, expected 14, is %d", + check_msg->faulty_los[1].constellation); + ck_assert_msg(check_msg->faulty_los[1].satId == 15, + "incorrect value for faulty_los[1].satId, expected 15, is %d", + check_msg->faulty_los[1].satId); + ck_assert_msg(check_msg->grid_point_id == 30, + "incorrect value for grid_point_id, expected 30, is %d", + check_msg->grid_point_id); + ck_assert_msg(check_msg->n_faulty_los == 2, + "incorrect value for n_faulty_los, expected 2, is %d", + check_msg->n_faulty_los); + ck_assert_msg(check_msg->num_msgs == 1, + "incorrect value for num_msgs, expected 1, is %d", + check_msg->num_msgs); + ck_assert_msg(check_msg->obs_time.tow == 180, + "incorrect value for obs_time.tow, expected 180, is %d", + check_msg->obs_time.tow); + ck_assert_msg(check_msg->obs_time.wn == 3, + "incorrect value for obs_time.wn, expected 3, is %d", + check_msg->obs_time.wn); + ck_assert_msg(check_msg->seq_num == 2, + "incorrect value for seq_num, expected 2, is %d", + check_msg->seq_num); + ck_assert_msg(check_msg->ssr_sol_id == 3, + "incorrect value for ssr_sol_id, expected 3, is %d", + check_msg->ssr_sol_id); + ck_assert_msg(check_msg->tile_id == 5, + "incorrect value for tile_id, expected 5, is %d", + check_msg->tile_id); + ck_assert_msg(check_msg->tile_set_id == 4, + "incorrect value for tile_set_id, expected 4, is %d", + check_msg->tile_set_id); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos_suite( + void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_integrity_" + "MsgSsrFlagIonoGridPointSatLos"); + tcase_add_test( + tc_acq, + test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c new file mode 100644 index 0000000000..9291402293 --- /dev/null +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c @@ -0,0 +1,267 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoGridPoints.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_integrity_MsgSsrFlagIonoGridPoints) { + 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, 3015, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 3015, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 199, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 53, 7, + }; + + 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_flag_iono_grid_points_t *test_msg = + (msg_ssr_flag_iono_grid_points_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_points[0]); + } + test_msg->faulty_points[0] = 10; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_points[0]); + } + test_msg->faulty_points[1] = 11; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_points[0]); + } + test_msg->faulty_points[2] = 12; + test_msg->n_faulty_points = 3; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + sbp_payload_send(&sbp_state, 3015, 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 == 3015, + "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_flag_iono_grid_points_t *check_msg = + (msg_ssr_flag_iono_grid_points_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->chain_id == 6, + "incorrect value for chain_id, expected 6, is %d", + check_msg->chain_id); + ck_assert_msg(check_msg->faulty_points[0] == 10, + "incorrect value for faulty_points[0], expected 10, is %d", + check_msg->faulty_points[0]); + ck_assert_msg(check_msg->faulty_points[1] == 11, + "incorrect value for faulty_points[1], expected 11, is %d", + check_msg->faulty_points[1]); + ck_assert_msg(check_msg->faulty_points[2] == 12, + "incorrect value for faulty_points[2], expected 12, is %d", + check_msg->faulty_points[2]); + ck_assert_msg(check_msg->n_faulty_points == 3, + "incorrect value for n_faulty_points, expected 3, is %d", + check_msg->n_faulty_points); + ck_assert_msg(check_msg->num_msgs == 1, + "incorrect value for num_msgs, expected 1, is %d", + check_msg->num_msgs); + ck_assert_msg(check_msg->obs_time.tow == 180, + "incorrect value for obs_time.tow, expected 180, is %d", + check_msg->obs_time.tow); + ck_assert_msg(check_msg->obs_time.wn == 3, + "incorrect value for obs_time.wn, expected 3, is %d", + check_msg->obs_time.wn); + ck_assert_msg(check_msg->seq_num == 2, + "incorrect value for seq_num, expected 2, is %d", + check_msg->seq_num); + ck_assert_msg(check_msg->ssr_sol_id == 3, + "incorrect value for ssr_sol_id, expected 3, is %d", + check_msg->ssr_sol_id); + ck_assert_msg(check_msg->tile_id == 5, + "incorrect value for tile_id, expected 5, is %d", + check_msg->tile_id); + ck_assert_msg(check_msg->tile_set_id == 4, + "incorrect value for tile_set_id, expected 4, is %d", + check_msg->tile_set_id); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_integrity_" + "MsgSsrFlagIonoGridPoints"); + tcase_add_test(tc_acq, + test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c new file mode 100644 index 0000000000..ce98917a1b --- /dev/null +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c @@ -0,0 +1,269 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoTileSatLos.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_integrity_MsgSsrFlagIonoTileSatLos) { + 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, 3021, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 3021, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 205, 11, 66, 0, 19, 180, 0, 0, 0, 3, 0, 1, 2, + 3, 4, 0, 5, 0, 6, 2, 10, 11, 15, 14, 239, 235, + }; + + 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_flag_iono_tile_sat_los_t *test_msg = + (msg_ssr_flag_iono_tile_sat_los_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_los[0]); + } + test_msg->faulty_los[0].constellation = 11; + test_msg->faulty_los[0].satId = 10; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_los[0]); + } + test_msg->faulty_los[1].constellation = 14; + test_msg->faulty_los[1].satId = 15; + test_msg->n_faulty_los = 2; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + sbp_payload_send(&sbp_state, 3021, 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 == 3021, + "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_flag_iono_tile_sat_los_t *check_msg = + (msg_ssr_flag_iono_tile_sat_los_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->chain_id == 6, + "incorrect value for chain_id, expected 6, is %d", + check_msg->chain_id); + ck_assert_msg( + check_msg->faulty_los[0].constellation == 11, + "incorrect value for faulty_los[0].constellation, expected 11, is %d", + check_msg->faulty_los[0].constellation); + ck_assert_msg(check_msg->faulty_los[0].satId == 10, + "incorrect value for faulty_los[0].satId, expected 10, is %d", + check_msg->faulty_los[0].satId); + ck_assert_msg( + check_msg->faulty_los[1].constellation == 14, + "incorrect value for faulty_los[1].constellation, expected 14, is %d", + check_msg->faulty_los[1].constellation); + ck_assert_msg(check_msg->faulty_los[1].satId == 15, + "incorrect value for faulty_los[1].satId, expected 15, is %d", + check_msg->faulty_los[1].satId); + ck_assert_msg(check_msg->n_faulty_los == 2, + "incorrect value for n_faulty_los, expected 2, is %d", + check_msg->n_faulty_los); + ck_assert_msg(check_msg->num_msgs == 1, + "incorrect value for num_msgs, expected 1, is %d", + check_msg->num_msgs); + ck_assert_msg(check_msg->obs_time.tow == 180, + "incorrect value for obs_time.tow, expected 180, is %d", + check_msg->obs_time.tow); + ck_assert_msg(check_msg->obs_time.wn == 3, + "incorrect value for obs_time.wn, expected 3, is %d", + check_msg->obs_time.wn); + ck_assert_msg(check_msg->seq_num == 2, + "incorrect value for seq_num, expected 2, is %d", + check_msg->seq_num); + ck_assert_msg(check_msg->ssr_sol_id == 3, + "incorrect value for ssr_sol_id, expected 3, is %d", + check_msg->ssr_sol_id); + ck_assert_msg(check_msg->tile_id == 5, + "incorrect value for tile_id, expected 5, is %d", + check_msg->tile_id); + ck_assert_msg(check_msg->tile_set_id == 4, + "incorrect value for tile_set_id, expected 4, is %d", + check_msg->tile_set_id); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_integrity_" + "MsgSsrFlagIonoTileSatLos"); + tcase_add_test(tc_acq, + test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagSatellites.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagSatellites.c new file mode 100644 index 0000000000..19811e095d --- /dev/null +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagSatellites.c @@ -0,0 +1,262 @@ +/* + * 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/integrity/test_MsgSsrFlagSatellites.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_integrity_MsgSsrFlagSatellites) { + 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, 3005, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 3005, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 189, 11, 66, 0, 15, 180, 0, 0, 0, 3, 0, + 1, 2, 3, 4, 5, 3, 10, 11, 12, 110, 165, + }; + + 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_flag_satellites_t *test_msg = + (msg_ssr_flag_satellites_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + test_msg->chain_id = 4; + test_msg->const_id = 5; + if (sizeof(test_msg->faulty_sats) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_sats[0]); + } + test_msg->faulty_sats[0] = 10; + if (sizeof(test_msg->faulty_sats) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_sats[0]); + } + test_msg->faulty_sats[1] = 11; + if (sizeof(test_msg->faulty_sats) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_sats[0]); + } + test_msg->faulty_sats[2] = 12; + test_msg->n_faulty_sats = 3; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + sbp_payload_send(&sbp_state, 3005, 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 == 3005, + "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_flag_satellites_t *check_msg = + (msg_ssr_flag_satellites_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->chain_id == 4, + "incorrect value for chain_id, expected 4, is %d", + check_msg->chain_id); + ck_assert_msg(check_msg->const_id == 5, + "incorrect value for const_id, expected 5, is %d", + check_msg->const_id); + ck_assert_msg(check_msg->faulty_sats[0] == 10, + "incorrect value for faulty_sats[0], expected 10, is %d", + check_msg->faulty_sats[0]); + ck_assert_msg(check_msg->faulty_sats[1] == 11, + "incorrect value for faulty_sats[1], expected 11, is %d", + check_msg->faulty_sats[1]); + ck_assert_msg(check_msg->faulty_sats[2] == 12, + "incorrect value for faulty_sats[2], expected 12, is %d", + check_msg->faulty_sats[2]); + ck_assert_msg(check_msg->n_faulty_sats == 3, + "incorrect value for n_faulty_sats, expected 3, is %d", + check_msg->n_faulty_sats); + ck_assert_msg(check_msg->num_msgs == 1, + "incorrect value for num_msgs, expected 1, is %d", + check_msg->num_msgs); + ck_assert_msg(check_msg->obs_time.tow == 180, + "incorrect value for obs_time.tow, expected 180, is %d", + check_msg->obs_time.tow); + ck_assert_msg(check_msg->obs_time.wn == 3, + "incorrect value for obs_time.wn, expected 3, is %d", + check_msg->obs_time.wn); + ck_assert_msg(check_msg->seq_num == 2, + "incorrect value for seq_num, expected 2, is %d", + check_msg->seq_num); + ck_assert_msg(check_msg->ssr_sol_id == 3, + "incorrect value for ssr_sol_id, expected 3, is %d", + check_msg->ssr_sol_id); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites"); + tcase_add_test(tc_acq, + test_legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c new file mode 100644 index 0000000000..313b343166 --- /dev/null +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c @@ -0,0 +1,267 @@ +/* + * 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/integrity/test_MsgSsrFlagTropoGridPoints.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_integrity_MsgSsrFlagTropoGridPoints) { + 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, 3011, &msg_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n); + sbp_frame_callback_register(&sbp_state, 3011, &frame_callback, + &DUMMY_MEMORY_FOR_CALLBACKS, &n2); + + u8 encoded_frame[] = { + 85, 195, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 243, 150, + }; + + 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_flag_tropo_grid_points_t *test_msg = + (msg_ssr_flag_tropo_grid_points_t *)test_msg_storage; + test_msg_len = sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_points[0]); + } + test_msg->faulty_points[0] = 10; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_points[0]); + } + test_msg->faulty_points[1] = 11; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len += sizeof(test_msg->faulty_points[0]); + } + test_msg->faulty_points[2] = 12; + test_msg->n_faulty_points = 3; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + sbp_payload_send(&sbp_state, 3011, 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 == 3011, + "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_flag_tropo_grid_points_t *check_msg = + (msg_ssr_flag_tropo_grid_points_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->chain_id == 6, + "incorrect value for chain_id, expected 6, is %d", + check_msg->chain_id); + ck_assert_msg(check_msg->faulty_points[0] == 10, + "incorrect value for faulty_points[0], expected 10, is %d", + check_msg->faulty_points[0]); + ck_assert_msg(check_msg->faulty_points[1] == 11, + "incorrect value for faulty_points[1], expected 11, is %d", + check_msg->faulty_points[1]); + ck_assert_msg(check_msg->faulty_points[2] == 12, + "incorrect value for faulty_points[2], expected 12, is %d", + check_msg->faulty_points[2]); + ck_assert_msg(check_msg->n_faulty_points == 3, + "incorrect value for n_faulty_points, expected 3, is %d", + check_msg->n_faulty_points); + ck_assert_msg(check_msg->num_msgs == 1, + "incorrect value for num_msgs, expected 1, is %d", + check_msg->num_msgs); + ck_assert_msg(check_msg->obs_time.tow == 180, + "incorrect value for obs_time.tow, expected 180, is %d", + check_msg->obs_time.tow); + ck_assert_msg(check_msg->obs_time.wn == 3, + "incorrect value for obs_time.wn, expected 3, is %d", + check_msg->obs_time.wn); + ck_assert_msg(check_msg->seq_num == 2, + "incorrect value for seq_num, expected 2, is %d", + check_msg->seq_num); + ck_assert_msg(check_msg->ssr_sol_id == 3, + "incorrect value for ssr_sol_id, expected 3, is %d", + check_msg->ssr_sol_id); + ck_assert_msg(check_msg->tile_id == 5, + "incorrect value for tile_id, expected 5, is %d", + check_msg->tile_id); + ck_assert_msg(check_msg->tile_set_id == 4, + "incorrect value for tile_set_id, expected 4, is %d", + check_msg->tile_set_id); + } +} +END_TEST + +Suite *legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints_suite(void) { + Suite *s = suite_create( + "SBP generated test suite: " + "legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints"); + TCase *tc_acq = tcase_create( + "Automated_Suite_legacy_auto_check_sbp_integrity_" + "MsgSsrFlagTropoGridPoints"); + tcase_add_test( + tc_acq, test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints); + suite_add_tcase(s, tc_acq); + return s; +} \ No newline at end of file diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc new file mode 100644 index 0000000000..68a8ae01f4 --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagHighLevel.cc @@ -0,0 +1,211 @@ +/* + * 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/integrity/test_MsgSsrFlagHighLevel.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_integrity_MsgSsrFlagHighLevel0() + : ::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_flag_high_level_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_flag_high_level_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_integrity_MsgSsrFlagHighLevel0, Test) { + uint8_t encoded_frame[] = { + 85, 185, 11, 66, 0, 31, 180, 0, 0, 0, 3, 0, 104, 1, 0, 0, 6, 0, 10, 20, + 0, 30, 0, 40, 1, 2, 3, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 102, 67, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_ssr_flag_high_level_t *test_msg = + (msg_ssr_flag_high_level_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + test_msg->chain_id = 40; + test_msg->corr_time.tow = 360; + test_msg->corr_time.wn = 6; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->reserved[0])); + } + test_msg->reserved[0] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->reserved[0])); + } + test_msg->reserved[1] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->reserved[0])); + } + test_msg->reserved[2] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->reserved[0])); + } + test_msg->reserved[3] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->reserved[0])); + } + test_msg->reserved[4] = 0; + if (sizeof(test_msg->reserved) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->reserved[0])); + } + test_msg->reserved[5] = 0; + test_msg->ssr_sol_id = 10; + test_msg->tile_id = 30; + test_msg->tile_set_id = 20; + test_msg->use_bds_sat = 3; + test_msg->use_gal_sat = 2; + test_msg->use_gps_sat = 1; + test_msg->use_iono_grid_point_sat_los = 7; + test_msg->use_iono_grid_points = 5; + test_msg->use_iono_tile_sat_los = 6; + test_msg->use_tropo_grid_points = 4; + + EXPECT_EQ(send_message(3001, 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_->chain_id, 40) + << "incorrect value for chain_id, expected 40, is " + << last_msg_->chain_id; + EXPECT_EQ(last_msg_->corr_time.tow, 360) + << "incorrect value for corr_time.tow, expected 360, is " + << last_msg_->corr_time.tow; + EXPECT_EQ(last_msg_->corr_time.wn, 6) + << "incorrect value for corr_time.wn, expected 6, is " + << last_msg_->corr_time.wn; + EXPECT_EQ(last_msg_->obs_time.tow, 180) + << "incorrect value for obs_time.tow, expected 180, is " + << last_msg_->obs_time.tow; + EXPECT_EQ(last_msg_->obs_time.wn, 3) + << "incorrect value for obs_time.wn, expected 3, is " + << last_msg_->obs_time.wn; + EXPECT_EQ(last_msg_->reserved[0], 0) + << "incorrect value for reserved[0], expected 0, is " + << last_msg_->reserved[0]; + EXPECT_EQ(last_msg_->reserved[1], 0) + << "incorrect value for reserved[1], expected 0, is " + << last_msg_->reserved[1]; + EXPECT_EQ(last_msg_->reserved[2], 0) + << "incorrect value for reserved[2], expected 0, is " + << last_msg_->reserved[2]; + EXPECT_EQ(last_msg_->reserved[3], 0) + << "incorrect value for reserved[3], expected 0, is " + << last_msg_->reserved[3]; + EXPECT_EQ(last_msg_->reserved[4], 0) + << "incorrect value for reserved[4], expected 0, is " + << last_msg_->reserved[4]; + EXPECT_EQ(last_msg_->reserved[5], 0) + << "incorrect value for reserved[5], expected 0, is " + << last_msg_->reserved[5]; + EXPECT_EQ(last_msg_->ssr_sol_id, 10) + << "incorrect value for ssr_sol_id, expected 10, is " + << last_msg_->ssr_sol_id; + EXPECT_EQ(last_msg_->tile_id, 30) + << "incorrect value for tile_id, expected 30, is " << last_msg_->tile_id; + EXPECT_EQ(last_msg_->tile_set_id, 20) + << "incorrect value for tile_set_id, expected 20, is " + << last_msg_->tile_set_id; + EXPECT_EQ(last_msg_->use_bds_sat, 3) + << "incorrect value for use_bds_sat, expected 3, is " + << last_msg_->use_bds_sat; + EXPECT_EQ(last_msg_->use_gal_sat, 2) + << "incorrect value for use_gal_sat, expected 2, is " + << last_msg_->use_gal_sat; + EXPECT_EQ(last_msg_->use_gps_sat, 1) + << "incorrect value for use_gps_sat, expected 1, is " + << last_msg_->use_gps_sat; + EXPECT_EQ(last_msg_->use_iono_grid_point_sat_los, 7) + << "incorrect value for use_iono_grid_point_sat_los, expected 7, is " + << last_msg_->use_iono_grid_point_sat_los; + EXPECT_EQ(last_msg_->use_iono_grid_points, 5) + << "incorrect value for use_iono_grid_points, expected 5, is " + << last_msg_->use_iono_grid_points; + EXPECT_EQ(last_msg_->use_iono_tile_sat_los, 6) + << "incorrect value for use_iono_tile_sat_los, expected 6, is " + << last_msg_->use_iono_tile_sat_los; + EXPECT_EQ(last_msg_->use_tropo_grid_points, 4) + << "incorrect value for use_tropo_grid_points, expected 4, is " + << last_msg_->use_tropo_grid_points; +} diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc new file mode 100644 index 0000000000..f0da0b0732 --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc @@ -0,0 +1,166 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml +// by generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0() + : ::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_flag_iono_grid_point_sat_los_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_flag_iono_grid_point_sat_los_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_integrity_MsgSsrFlagIonoGridPointSatLos0, + Test) { + uint8_t encoded_frame[] = { + 85, 209, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 30, 0, 2, 10, 11, 15, 14, 98, 148, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_ssr_flag_iono_grid_point_sat_los_t *test_msg = + (msg_ssr_flag_iono_grid_point_sat_los_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_los[0])); + } + test_msg->faulty_los[0].constellation = 11; + test_msg->faulty_los[0].satId = 10; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_los[0])); + } + test_msg->faulty_los[1].constellation = 14; + test_msg->faulty_los[1].satId = 15; + test_msg->grid_point_id = 30; + test_msg->n_faulty_los = 2; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + + EXPECT_EQ(send_message(3025, 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_->chain_id, 6) + << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; + EXPECT_EQ(last_msg_->faulty_los[0].constellation, 11) + << "incorrect value for faulty_los[0].constellation, expected 11, is " + << last_msg_->faulty_los[0].constellation; + EXPECT_EQ(last_msg_->faulty_los[0].satId, 10) + << "incorrect value for faulty_los[0].satId, expected 10, is " + << last_msg_->faulty_los[0].satId; + EXPECT_EQ(last_msg_->faulty_los[1].constellation, 14) + << "incorrect value for faulty_los[1].constellation, expected 14, is " + << last_msg_->faulty_los[1].constellation; + EXPECT_EQ(last_msg_->faulty_los[1].satId, 15) + << "incorrect value for faulty_los[1].satId, expected 15, is " + << last_msg_->faulty_los[1].satId; + EXPECT_EQ(last_msg_->grid_point_id, 30) + << "incorrect value for grid_point_id, expected 30, is " + << last_msg_->grid_point_id; + EXPECT_EQ(last_msg_->n_faulty_los, 2) + << "incorrect value for n_faulty_los, expected 2, is " + << last_msg_->n_faulty_los; + EXPECT_EQ(last_msg_->num_msgs, 1) + << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; + EXPECT_EQ(last_msg_->obs_time.tow, 180) + << "incorrect value for obs_time.tow, expected 180, is " + << last_msg_->obs_time.tow; + EXPECT_EQ(last_msg_->obs_time.wn, 3) + << "incorrect value for obs_time.wn, expected 3, is " + << last_msg_->obs_time.wn; + EXPECT_EQ(last_msg_->seq_num, 2) + << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; + EXPECT_EQ(last_msg_->ssr_sol_id, 3) + << "incorrect value for ssr_sol_id, expected 3, is " + << last_msg_->ssr_sol_id; + EXPECT_EQ(last_msg_->tile_id, 5) + << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; + EXPECT_EQ(last_msg_->tile_set_id, 4) + << "incorrect value for tile_set_id, expected 4, is " + << last_msg_->tile_set_id; +} diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc new file mode 100644 index 0000000000..e7cb63bd23 --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc @@ -0,0 +1,160 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoGridPoints.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0() + : ::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_flag_iono_grid_points_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_flag_iono_grid_points_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_integrity_MsgSsrFlagIonoGridPoints0, Test) { + uint8_t encoded_frame[] = { + 85, 199, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 53, 7, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_ssr_flag_iono_grid_points_t *test_msg = + (msg_ssr_flag_iono_grid_points_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); + } + test_msg->faulty_points[0] = 10; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); + } + test_msg->faulty_points[1] = 11; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); + } + test_msg->faulty_points[2] = 12; + test_msg->n_faulty_points = 3; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + + EXPECT_EQ(send_message(3015, 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_->chain_id, 6) + << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; + EXPECT_EQ(last_msg_->faulty_points[0], 10) + << "incorrect value for faulty_points[0], expected 10, is " + << last_msg_->faulty_points[0]; + EXPECT_EQ(last_msg_->faulty_points[1], 11) + << "incorrect value for faulty_points[1], expected 11, is " + << last_msg_->faulty_points[1]; + EXPECT_EQ(last_msg_->faulty_points[2], 12) + << "incorrect value for faulty_points[2], expected 12, is " + << last_msg_->faulty_points[2]; + EXPECT_EQ(last_msg_->n_faulty_points, 3) + << "incorrect value for n_faulty_points, expected 3, is " + << last_msg_->n_faulty_points; + EXPECT_EQ(last_msg_->num_msgs, 1) + << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; + EXPECT_EQ(last_msg_->obs_time.tow, 180) + << "incorrect value for obs_time.tow, expected 180, is " + << last_msg_->obs_time.tow; + EXPECT_EQ(last_msg_->obs_time.wn, 3) + << "incorrect value for obs_time.wn, expected 3, is " + << last_msg_->obs_time.wn; + EXPECT_EQ(last_msg_->seq_num, 2) + << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; + EXPECT_EQ(last_msg_->ssr_sol_id, 3) + << "incorrect value for ssr_sol_id, expected 3, is " + << last_msg_->ssr_sol_id; + EXPECT_EQ(last_msg_->tile_id, 5) + << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; + EXPECT_EQ(last_msg_->tile_set_id, 4) + << "incorrect value for tile_set_id, expected 4, is " + << last_msg_->tile_set_id; +} diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc new file mode 100644 index 0000000000..a6f7f7340d --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc @@ -0,0 +1,160 @@ +/* + * 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/integrity/test_MsgSsrFlagIonoTileSatLos.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0() + : ::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_flag_iono_tile_sat_los_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_flag_iono_tile_sat_los_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_integrity_MsgSsrFlagIonoTileSatLos0, Test) { + uint8_t encoded_frame[] = { + 85, 205, 11, 66, 0, 19, 180, 0, 0, 0, 3, 0, 1, 2, + 3, 4, 0, 5, 0, 6, 2, 10, 11, 15, 14, 239, 235, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_ssr_flag_iono_tile_sat_los_t *test_msg = + (msg_ssr_flag_iono_tile_sat_los_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_los[0])); + } + test_msg->faulty_los[0].constellation = 11; + test_msg->faulty_los[0].satId = 10; + if (sizeof(test_msg->faulty_los) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_los[0])); + } + test_msg->faulty_los[1].constellation = 14; + test_msg->faulty_los[1].satId = 15; + test_msg->n_faulty_los = 2; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + + EXPECT_EQ(send_message(3021, 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_->chain_id, 6) + << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; + EXPECT_EQ(last_msg_->faulty_los[0].constellation, 11) + << "incorrect value for faulty_los[0].constellation, expected 11, is " + << last_msg_->faulty_los[0].constellation; + EXPECT_EQ(last_msg_->faulty_los[0].satId, 10) + << "incorrect value for faulty_los[0].satId, expected 10, is " + << last_msg_->faulty_los[0].satId; + EXPECT_EQ(last_msg_->faulty_los[1].constellation, 14) + << "incorrect value for faulty_los[1].constellation, expected 14, is " + << last_msg_->faulty_los[1].constellation; + EXPECT_EQ(last_msg_->faulty_los[1].satId, 15) + << "incorrect value for faulty_los[1].satId, expected 15, is " + << last_msg_->faulty_los[1].satId; + EXPECT_EQ(last_msg_->n_faulty_los, 2) + << "incorrect value for n_faulty_los, expected 2, is " + << last_msg_->n_faulty_los; + EXPECT_EQ(last_msg_->num_msgs, 1) + << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; + EXPECT_EQ(last_msg_->obs_time.tow, 180) + << "incorrect value for obs_time.tow, expected 180, is " + << last_msg_->obs_time.tow; + EXPECT_EQ(last_msg_->obs_time.wn, 3) + << "incorrect value for obs_time.wn, expected 3, is " + << last_msg_->obs_time.wn; + EXPECT_EQ(last_msg_->seq_num, 2) + << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; + EXPECT_EQ(last_msg_->ssr_sol_id, 3) + << "incorrect value for ssr_sol_id, expected 3, is " + << last_msg_->ssr_sol_id; + EXPECT_EQ(last_msg_->tile_id, 5) + << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; + EXPECT_EQ(last_msg_->tile_set_id, 4) + << "incorrect value for tile_set_id, expected 4, is " + << last_msg_->tile_set_id; +} diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc new file mode 100644 index 0000000000..f5cefd8cd4 --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagSatellites.cc @@ -0,0 +1,156 @@ +/* + * 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/integrity/test_MsgSsrFlagSatellites.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_integrity_MsgSsrFlagSatellites0() + : ::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_flag_satellites_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_flag_satellites_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_integrity_MsgSsrFlagSatellites0, Test) { + uint8_t encoded_frame[] = { + 85, 189, 11, 66, 0, 15, 180, 0, 0, 0, 3, 0, + 1, 2, 3, 4, 5, 3, 10, 11, 12, 110, 165, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_ssr_flag_satellites_t *test_msg = + (msg_ssr_flag_satellites_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + test_msg->chain_id = 4; + test_msg->const_id = 5; + if (sizeof(test_msg->faulty_sats) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_sats[0])); + } + test_msg->faulty_sats[0] = 10; + if (sizeof(test_msg->faulty_sats) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_sats[0])); + } + test_msg->faulty_sats[1] = 11; + if (sizeof(test_msg->faulty_sats) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_sats[0])); + } + test_msg->faulty_sats[2] = 12; + test_msg->n_faulty_sats = 3; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + + EXPECT_EQ(send_message(3005, 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_->chain_id, 4) + << "incorrect value for chain_id, expected 4, is " << last_msg_->chain_id; + EXPECT_EQ(last_msg_->const_id, 5) + << "incorrect value for const_id, expected 5, is " << last_msg_->const_id; + EXPECT_EQ(last_msg_->faulty_sats[0], 10) + << "incorrect value for faulty_sats[0], expected 10, is " + << last_msg_->faulty_sats[0]; + EXPECT_EQ(last_msg_->faulty_sats[1], 11) + << "incorrect value for faulty_sats[1], expected 11, is " + << last_msg_->faulty_sats[1]; + EXPECT_EQ(last_msg_->faulty_sats[2], 12) + << "incorrect value for faulty_sats[2], expected 12, is " + << last_msg_->faulty_sats[2]; + EXPECT_EQ(last_msg_->n_faulty_sats, 3) + << "incorrect value for n_faulty_sats, expected 3, is " + << last_msg_->n_faulty_sats; + EXPECT_EQ(last_msg_->num_msgs, 1) + << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; + EXPECT_EQ(last_msg_->obs_time.tow, 180) + << "incorrect value for obs_time.tow, expected 180, is " + << last_msg_->obs_time.tow; + EXPECT_EQ(last_msg_->obs_time.wn, 3) + << "incorrect value for obs_time.wn, expected 3, is " + << last_msg_->obs_time.wn; + EXPECT_EQ(last_msg_->seq_num, 2) + << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; + EXPECT_EQ(last_msg_->ssr_sol_id, 3) + << "incorrect value for ssr_sol_id, expected 3, is " + << last_msg_->ssr_sol_id; +} diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc new file mode 100644 index 0000000000..6f9b2708ae --- /dev/null +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc @@ -0,0 +1,160 @@ +/* + * 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/integrity/test_MsgSsrFlagTropoGridPoints.yaml by +// generate.py. Do not modify by hand! + +#include +#include +#include +#include +class Test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0 + : public ::testing::Test, + public sbp::State, + public sbp::IReader, + public sbp::IWriter, + sbp::PayloadHandler { + public: + Test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0() + : ::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_flag_tropo_grid_points_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_flag_tropo_grid_points_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_integrity_MsgSsrFlagTropoGridPoints0, Test) { + uint8_t encoded_frame[] = { + 85, 195, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, + 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, 12, 0, 243, 150, + }; + + uint8_t test_msg_storage[SBP_MAX_PAYLOAD_LEN]{}; + uint8_t test_msg_len = 0; + msg_ssr_flag_tropo_grid_points_t *test_msg = + (msg_ssr_flag_tropo_grid_points_t *)test_msg_storage; + test_msg_len = (uint8_t)sizeof(*test_msg); + test_msg->chain_id = 6; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); + } + test_msg->faulty_points[0] = 10; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); + } + test_msg->faulty_points[1] = 11; + if (sizeof(test_msg->faulty_points) == 0) { + // Cope with variable length arrays + test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); + } + test_msg->faulty_points[2] = 12; + test_msg->n_faulty_points = 3; + test_msg->num_msgs = 1; + test_msg->obs_time.tow = 180; + test_msg->obs_time.wn = 3; + test_msg->seq_num = 2; + test_msg->ssr_sol_id = 3; + test_msg->tile_id = 5; + test_msg->tile_set_id = 4; + + EXPECT_EQ(send_message(3011, 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_->chain_id, 6) + << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; + EXPECT_EQ(last_msg_->faulty_points[0], 10) + << "incorrect value for faulty_points[0], expected 10, is " + << last_msg_->faulty_points[0]; + EXPECT_EQ(last_msg_->faulty_points[1], 11) + << "incorrect value for faulty_points[1], expected 11, is " + << last_msg_->faulty_points[1]; + EXPECT_EQ(last_msg_->faulty_points[2], 12) + << "incorrect value for faulty_points[2], expected 12, is " + << last_msg_->faulty_points[2]; + EXPECT_EQ(last_msg_->n_faulty_points, 3) + << "incorrect value for n_faulty_points, expected 3, is " + << last_msg_->n_faulty_points; + EXPECT_EQ(last_msg_->num_msgs, 1) + << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; + EXPECT_EQ(last_msg_->obs_time.tow, 180) + << "incorrect value for obs_time.tow, expected 180, is " + << last_msg_->obs_time.tow; + EXPECT_EQ(last_msg_->obs_time.wn, 3) + << "incorrect value for obs_time.wn, expected 3, is " + << last_msg_->obs_time.wn; + EXPECT_EQ(last_msg_->seq_num, 2) + << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; + EXPECT_EQ(last_msg_->ssr_sol_id, 3) + << "incorrect value for ssr_sol_id, expected 3, is " + << last_msg_->ssr_sol_id; + EXPECT_EQ(last_msg_->tile_id, 5) + << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; + EXPECT_EQ(last_msg_->tile_set_id, 4) + << "incorrect value for tile_set_id, expected 4, is " + << last_msg_->tile_set_id; +} diff --git a/haskell/sbp.cabal b/haskell/sbp.cabal index bfcea6cce6..51e5c695db 100644 --- a/haskell/sbp.cabal +++ b/haskell/sbp.cabal @@ -32,6 +32,7 @@ library , SwiftNav.SBP.Flash , SwiftNav.SBP.Gnss , SwiftNav.SBP.Imu + , SwiftNav.SBP.Integrity , SwiftNav.SBP.Linux , SwiftNav.SBP.Logging , SwiftNav.SBP.Mag diff --git a/haskell/src/SwiftNav/SBP.hs b/haskell/src/SwiftNav/SBP.hs index b5de8301f4..818833b7ef 100644 --- a/haskell/src/SwiftNav/SBP.hs +++ b/haskell/src/SwiftNav/SBP.hs @@ -21,6 +21,7 @@ import SwiftNav.SBP.FileIo as Exports import SwiftNav.SBP.Flash as Exports import SwiftNav.SBP.Gnss as Exports import SwiftNav.SBP.Imu as Exports +import SwiftNav.SBP.Integrity as Exports import SwiftNav.SBP.Linux as Exports import SwiftNav.SBP.Logging as Exports import SwiftNav.SBP.Mag as Exports diff --git a/haskell/src/SwiftNav/SBP/Integrity.hs b/haskell/src/SwiftNav/SBP/Integrity.hs new file mode 100644 index 0000000000..89f8bd341c --- /dev/null +++ b/haskell/src/SwiftNav/SBP/Integrity.hs @@ -0,0 +1,369 @@ +{-# OPTIONS_GHC -fno-warn-unused-imports #-} +{-# LANGUAGE NoImplicitPrelude #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE RecordWildCards #-} + +-- | +-- Module: SwiftNav.SBP.Integrity +-- Copyright: Copyright (C) 2015-2021 Swift Navigation, Inc. +-- License: MIT +-- Contact: https://support.swiftnav.com +-- Stability: experimental +-- Portability: portable +-- +-- \< Integrity flag messages \> + +module SwiftNav.SBP.Integrity + ( module SwiftNav.SBP.Integrity + ) where + +import BasicPrelude +import Control.Lens +import Control.Monad.Loops +import Data.Binary +import Data.Binary.Get +import Data.Binary.IEEE754 +import Data.Binary.Put +import Data.ByteString.Lazy hiding (ByteString) +import Data.Int +import Data.Word +import SwiftNav.SBP.TH +import SwiftNav.SBP.Types +import SwiftNav.SBP.Gnss + +{-# ANN module ("HLint: ignore Use camelCase"::String) #-} +{-# ANN module ("HLint: ignore Redundant do"::String) #-} +{-# ANN module ("HLint: ignore Use newtype instead of data"::String) #-} + + +msgSsrFlagHighLevel :: Word16 +msgSsrFlagHighLevel = 0x0BB9 + +data MsgSsrFlagHighLevel = MsgSsrFlagHighLevel + { _msgSsrFlagHighLevel_obs_time :: !GpsTimeSec + -- ^ GNSS reference time of the observation used to generate the flag. + , _msgSsrFlagHighLevel_corr_time :: !GpsTimeSec + -- ^ GNSS reference time of the correction associated to the flag. + , _msgSsrFlagHighLevel_ssr_sol_id :: !Word8 + -- ^ SSR Solution ID. + , _msgSsrFlagHighLevel_tile_set_id :: !Word16 + -- ^ Unique identifier of the set this tile belongs to. + , _msgSsrFlagHighLevel_tile_id :: !Word16 + -- ^ Unique identifier of this tile in the tile set. + , _msgSsrFlagHighLevel_chain_id :: !Word8 + -- ^ Chain and type of flag. + , _msgSsrFlagHighLevel_use_gps_sat :: !Word8 + -- ^ Use GPS satellites. + , _msgSsrFlagHighLevel_use_gal_sat :: !Word8 + -- ^ Use GAL satellites. + , _msgSsrFlagHighLevel_use_bds_sat :: !Word8 + -- ^ Use BDS satellites. + , _msgSsrFlagHighLevel_reserved :: ![Word8] + -- ^ Reserved + , _msgSsrFlagHighLevel_use_tropo_grid_points :: !Word8 + -- ^ Use tropo grid points. + , _msgSsrFlagHighLevel_use_iono_grid_points :: !Word8 + -- ^ Use iono grid points. + , _msgSsrFlagHighLevel_use_iono_tile_sat_los :: !Word8 + -- ^ Use iono tile satellite LoS. + , _msgSsrFlagHighLevel_use_iono_grid_point_sat_los :: !Word8 + -- ^ Use iono grid point satellite LoS. + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrFlagHighLevel where + get = do + _msgSsrFlagHighLevel_obs_time <- get + _msgSsrFlagHighLevel_corr_time <- get + _msgSsrFlagHighLevel_ssr_sol_id <- getWord8 + _msgSsrFlagHighLevel_tile_set_id <- getWord16le + _msgSsrFlagHighLevel_tile_id <- getWord16le + _msgSsrFlagHighLevel_chain_id <- getWord8 + _msgSsrFlagHighLevel_use_gps_sat <- getWord8 + _msgSsrFlagHighLevel_use_gal_sat <- getWord8 + _msgSsrFlagHighLevel_use_bds_sat <- getWord8 + _msgSsrFlagHighLevel_reserved <- replicateM 6 getWord8 + _msgSsrFlagHighLevel_use_tropo_grid_points <- getWord8 + _msgSsrFlagHighLevel_use_iono_grid_points <- getWord8 + _msgSsrFlagHighLevel_use_iono_tile_sat_los <- getWord8 + _msgSsrFlagHighLevel_use_iono_grid_point_sat_los <- getWord8 + pure MsgSsrFlagHighLevel {..} + + put MsgSsrFlagHighLevel {..} = do + put _msgSsrFlagHighLevel_obs_time + put _msgSsrFlagHighLevel_corr_time + putWord8 _msgSsrFlagHighLevel_ssr_sol_id + putWord16le _msgSsrFlagHighLevel_tile_set_id + putWord16le _msgSsrFlagHighLevel_tile_id + putWord8 _msgSsrFlagHighLevel_chain_id + putWord8 _msgSsrFlagHighLevel_use_gps_sat + putWord8 _msgSsrFlagHighLevel_use_gal_sat + putWord8 _msgSsrFlagHighLevel_use_bds_sat + mapM_ putWord8 _msgSsrFlagHighLevel_reserved + putWord8 _msgSsrFlagHighLevel_use_tropo_grid_points + putWord8 _msgSsrFlagHighLevel_use_iono_grid_points + putWord8 _msgSsrFlagHighLevel_use_iono_tile_sat_los + putWord8 _msgSsrFlagHighLevel_use_iono_grid_point_sat_los + +$(makeSBP 'msgSsrFlagHighLevel ''MsgSsrFlagHighLevel) +$(makeJSON "_msgSsrFlagHighLevel_" ''MsgSsrFlagHighLevel) +$(makeLenses ''MsgSsrFlagHighLevel) + +msgSsrFlagSatellites :: Word16 +msgSsrFlagSatellites = 0x0BBD + +data MsgSsrFlagSatellites = MsgSsrFlagSatellites + { _msgSsrFlagSatellites_obs_time :: !GpsTimeSec + -- ^ GNSS reference time of the observation used to generate the flag. + , _msgSsrFlagSatellites_num_msgs :: !Word8 + -- ^ Number of messages in the dataset + , _msgSsrFlagSatellites_seq_num :: !Word8 + -- ^ Position of this message in the dataset + , _msgSsrFlagSatellites_ssr_sol_id :: !Word8 + -- ^ SSR Solution ID. + , _msgSsrFlagSatellites_chain_id :: !Word8 + -- ^ Chain and type of flag. + , _msgSsrFlagSatellites_const_id :: !Word8 + -- ^ Constellation ID. + , _msgSsrFlagSatellites_n_faulty_sats :: !Word8 + -- ^ Number of faulty satellites. + , _msgSsrFlagSatellites_faulty_sats :: ![Word8] + -- ^ List of faulty satellites. + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrFlagSatellites where + get = do + _msgSsrFlagSatellites_obs_time <- get + _msgSsrFlagSatellites_num_msgs <- getWord8 + _msgSsrFlagSatellites_seq_num <- getWord8 + _msgSsrFlagSatellites_ssr_sol_id <- getWord8 + _msgSsrFlagSatellites_chain_id <- getWord8 + _msgSsrFlagSatellites_const_id <- getWord8 + _msgSsrFlagSatellites_n_faulty_sats <- getWord8 + _msgSsrFlagSatellites_faulty_sats <- whileM (not <$> isEmpty) getWord8 + pure MsgSsrFlagSatellites {..} + + put MsgSsrFlagSatellites {..} = do + put _msgSsrFlagSatellites_obs_time + putWord8 _msgSsrFlagSatellites_num_msgs + putWord8 _msgSsrFlagSatellites_seq_num + putWord8 _msgSsrFlagSatellites_ssr_sol_id + putWord8 _msgSsrFlagSatellites_chain_id + putWord8 _msgSsrFlagSatellites_const_id + putWord8 _msgSsrFlagSatellites_n_faulty_sats + mapM_ putWord8 _msgSsrFlagSatellites_faulty_sats + +$(makeSBP 'msgSsrFlagSatellites ''MsgSsrFlagSatellites) +$(makeJSON "_msgSsrFlagSatellites_" ''MsgSsrFlagSatellites) +$(makeLenses ''MsgSsrFlagSatellites) + +msgSsrFlagTropoGridPoints :: Word16 +msgSsrFlagTropoGridPoints = 0x0BC3 + +data MsgSsrFlagTropoGridPoints = MsgSsrFlagTropoGridPoints + { _msgSsrFlagTropoGridPoints_obs_time :: !GpsTimeSec + -- ^ GNSS reference time of the observation used to generate the flag. + , _msgSsrFlagTropoGridPoints_num_msgs :: !Word8 + -- ^ Number of messages in the dataset + , _msgSsrFlagTropoGridPoints_seq_num :: !Word8 + -- ^ Position of this message in the dataset + , _msgSsrFlagTropoGridPoints_ssr_sol_id :: !Word8 + -- ^ SSR Solution ID. + , _msgSsrFlagTropoGridPoints_tile_set_id :: !Word16 + -- ^ Unique identifier of the set this tile belongs to. + , _msgSsrFlagTropoGridPoints_tile_id :: !Word16 + -- ^ Unique identifier of this tile in the tile set. + , _msgSsrFlagTropoGridPoints_chain_id :: !Word8 + -- ^ Chain and type of flag. + , _msgSsrFlagTropoGridPoints_n_faulty_points :: !Word8 + -- ^ Number of faulty grid points. + , _msgSsrFlagTropoGridPoints_faulty_points :: ![Word16] + -- ^ List of faulty grid points. + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrFlagTropoGridPoints where + get = do + _msgSsrFlagTropoGridPoints_obs_time <- get + _msgSsrFlagTropoGridPoints_num_msgs <- getWord8 + _msgSsrFlagTropoGridPoints_seq_num <- getWord8 + _msgSsrFlagTropoGridPoints_ssr_sol_id <- getWord8 + _msgSsrFlagTropoGridPoints_tile_set_id <- getWord16le + _msgSsrFlagTropoGridPoints_tile_id <- getWord16le + _msgSsrFlagTropoGridPoints_chain_id <- getWord8 + _msgSsrFlagTropoGridPoints_n_faulty_points <- getWord8 + _msgSsrFlagTropoGridPoints_faulty_points <- whileM (not <$> isEmpty) getWord16le + pure MsgSsrFlagTropoGridPoints {..} + + put MsgSsrFlagTropoGridPoints {..} = do + put _msgSsrFlagTropoGridPoints_obs_time + putWord8 _msgSsrFlagTropoGridPoints_num_msgs + putWord8 _msgSsrFlagTropoGridPoints_seq_num + putWord8 _msgSsrFlagTropoGridPoints_ssr_sol_id + putWord16le _msgSsrFlagTropoGridPoints_tile_set_id + putWord16le _msgSsrFlagTropoGridPoints_tile_id + putWord8 _msgSsrFlagTropoGridPoints_chain_id + putWord8 _msgSsrFlagTropoGridPoints_n_faulty_points + mapM_ putWord16le _msgSsrFlagTropoGridPoints_faulty_points + +$(makeSBP 'msgSsrFlagTropoGridPoints ''MsgSsrFlagTropoGridPoints) +$(makeJSON "_msgSsrFlagTropoGridPoints_" ''MsgSsrFlagTropoGridPoints) +$(makeLenses ''MsgSsrFlagTropoGridPoints) + +msgSsrFlagIonoGridPoints :: Word16 +msgSsrFlagIonoGridPoints = 0x0BC7 + +data MsgSsrFlagIonoGridPoints = MsgSsrFlagIonoGridPoints + { _msgSsrFlagIonoGridPoints_obs_time :: !GpsTimeSec + -- ^ GNSS reference time of the observation used to generate the flag. + , _msgSsrFlagIonoGridPoints_num_msgs :: !Word8 + -- ^ Number of messages in the dataset + , _msgSsrFlagIonoGridPoints_seq_num :: !Word8 + -- ^ Position of this message in the dataset + , _msgSsrFlagIonoGridPoints_ssr_sol_id :: !Word8 + -- ^ SSR Solution ID. + , _msgSsrFlagIonoGridPoints_tile_set_id :: !Word16 + -- ^ Unique identifier of the set this tile belongs to. + , _msgSsrFlagIonoGridPoints_tile_id :: !Word16 + -- ^ Unique identifier of this tile in the tile set. + , _msgSsrFlagIonoGridPoints_chain_id :: !Word8 + -- ^ Chain and type of flag. + , _msgSsrFlagIonoGridPoints_n_faulty_points :: !Word8 + -- ^ Number of faulty grid points. + , _msgSsrFlagIonoGridPoints_faulty_points :: ![Word16] + -- ^ List of faulty grid points. + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrFlagIonoGridPoints where + get = do + _msgSsrFlagIonoGridPoints_obs_time <- get + _msgSsrFlagIonoGridPoints_num_msgs <- getWord8 + _msgSsrFlagIonoGridPoints_seq_num <- getWord8 + _msgSsrFlagIonoGridPoints_ssr_sol_id <- getWord8 + _msgSsrFlagIonoGridPoints_tile_set_id <- getWord16le + _msgSsrFlagIonoGridPoints_tile_id <- getWord16le + _msgSsrFlagIonoGridPoints_chain_id <- getWord8 + _msgSsrFlagIonoGridPoints_n_faulty_points <- getWord8 + _msgSsrFlagIonoGridPoints_faulty_points <- whileM (not <$> isEmpty) getWord16le + pure MsgSsrFlagIonoGridPoints {..} + + put MsgSsrFlagIonoGridPoints {..} = do + put _msgSsrFlagIonoGridPoints_obs_time + putWord8 _msgSsrFlagIonoGridPoints_num_msgs + putWord8 _msgSsrFlagIonoGridPoints_seq_num + putWord8 _msgSsrFlagIonoGridPoints_ssr_sol_id + putWord16le _msgSsrFlagIonoGridPoints_tile_set_id + putWord16le _msgSsrFlagIonoGridPoints_tile_id + putWord8 _msgSsrFlagIonoGridPoints_chain_id + putWord8 _msgSsrFlagIonoGridPoints_n_faulty_points + mapM_ putWord16le _msgSsrFlagIonoGridPoints_faulty_points + +$(makeSBP 'msgSsrFlagIonoGridPoints ''MsgSsrFlagIonoGridPoints) +$(makeJSON "_msgSsrFlagIonoGridPoints_" ''MsgSsrFlagIonoGridPoints) +$(makeLenses ''MsgSsrFlagIonoGridPoints) + +msgSsrFlagIonoTileSatLos :: Word16 +msgSsrFlagIonoTileSatLos = 0x0BCD + +data MsgSsrFlagIonoTileSatLos = MsgSsrFlagIonoTileSatLos + { _msgSsrFlagIonoTileSatLos_obs_time :: !GpsTimeSec + -- ^ GNSS reference time of the observation used to generate the flag. + , _msgSsrFlagIonoTileSatLos_num_msgs :: !Word8 + -- ^ Number of messages in the dataset + , _msgSsrFlagIonoTileSatLos_seq_num :: !Word8 + -- ^ Position of this message in the dataset + , _msgSsrFlagIonoTileSatLos_ssr_sol_id :: !Word8 + -- ^ SSR Solution ID. + , _msgSsrFlagIonoTileSatLos_tile_set_id :: !Word16 + -- ^ Unique identifier of the set this tile belongs to. + , _msgSsrFlagIonoTileSatLos_tile_id :: !Word16 + -- ^ Unique identifier of this tile in the tile set. + , _msgSsrFlagIonoTileSatLos_chain_id :: !Word8 + -- ^ Chain and type of flag. + , _msgSsrFlagIonoTileSatLos_n_faulty_los :: !Word8 + -- ^ Number of faulty LOS. + , _msgSsrFlagIonoTileSatLos_faulty_los :: ![SvId] + -- ^ List of faulty LOS + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrFlagIonoTileSatLos where + get = do + _msgSsrFlagIonoTileSatLos_obs_time <- get + _msgSsrFlagIonoTileSatLos_num_msgs <- getWord8 + _msgSsrFlagIonoTileSatLos_seq_num <- getWord8 + _msgSsrFlagIonoTileSatLos_ssr_sol_id <- getWord8 + _msgSsrFlagIonoTileSatLos_tile_set_id <- getWord16le + _msgSsrFlagIonoTileSatLos_tile_id <- getWord16le + _msgSsrFlagIonoTileSatLos_chain_id <- getWord8 + _msgSsrFlagIonoTileSatLos_n_faulty_los <- getWord8 + _msgSsrFlagIonoTileSatLos_faulty_los <- whileM (not <$> isEmpty) get + pure MsgSsrFlagIonoTileSatLos {..} + + put MsgSsrFlagIonoTileSatLos {..} = do + put _msgSsrFlagIonoTileSatLos_obs_time + putWord8 _msgSsrFlagIonoTileSatLos_num_msgs + putWord8 _msgSsrFlagIonoTileSatLos_seq_num + putWord8 _msgSsrFlagIonoTileSatLos_ssr_sol_id + putWord16le _msgSsrFlagIonoTileSatLos_tile_set_id + putWord16le _msgSsrFlagIonoTileSatLos_tile_id + putWord8 _msgSsrFlagIonoTileSatLos_chain_id + putWord8 _msgSsrFlagIonoTileSatLos_n_faulty_los + mapM_ put _msgSsrFlagIonoTileSatLos_faulty_los + +$(makeSBP 'msgSsrFlagIonoTileSatLos ''MsgSsrFlagIonoTileSatLos) +$(makeJSON "_msgSsrFlagIonoTileSatLos_" ''MsgSsrFlagIonoTileSatLos) +$(makeLenses ''MsgSsrFlagIonoTileSatLos) + +msgSsrFlagIonoGridPointSatLos :: Word16 +msgSsrFlagIonoGridPointSatLos = 0x0BD1 + +data MsgSsrFlagIonoGridPointSatLos = MsgSsrFlagIonoGridPointSatLos + { _msgSsrFlagIonoGridPointSatLos_obs_time :: !GpsTimeSec + -- ^ GNSS reference time of the observation used to generate the flag. + , _msgSsrFlagIonoGridPointSatLos_num_msgs :: !Word8 + -- ^ Number of messages in the dataset + , _msgSsrFlagIonoGridPointSatLos_seq_num :: !Word8 + -- ^ Position of this message in the dataset + , _msgSsrFlagIonoGridPointSatLos_ssr_sol_id :: !Word8 + -- ^ SSR Solution ID. + , _msgSsrFlagIonoGridPointSatLos_tile_set_id :: !Word16 + -- ^ Unique identifier of the set this tile belongs to. + , _msgSsrFlagIonoGridPointSatLos_tile_id :: !Word16 + -- ^ Unique identifier of this tile in the tile set. + , _msgSsrFlagIonoGridPointSatLos_chain_id :: !Word8 + -- ^ Chain and type of flag. + , _msgSsrFlagIonoGridPointSatLos_grid_point_id :: !Word16 + -- ^ Index of the grid point. + , _msgSsrFlagIonoGridPointSatLos_n_faulty_los :: !Word8 + -- ^ Number of faulty LOS. + , _msgSsrFlagIonoGridPointSatLos_faulty_los :: ![SvId] + -- ^ List of faulty LOS + } deriving ( Show, Read, Eq ) + +instance Binary MsgSsrFlagIonoGridPointSatLos where + get = do + _msgSsrFlagIonoGridPointSatLos_obs_time <- get + _msgSsrFlagIonoGridPointSatLos_num_msgs <- getWord8 + _msgSsrFlagIonoGridPointSatLos_seq_num <- getWord8 + _msgSsrFlagIonoGridPointSatLos_ssr_sol_id <- getWord8 + _msgSsrFlagIonoGridPointSatLos_tile_set_id <- getWord16le + _msgSsrFlagIonoGridPointSatLos_tile_id <- getWord16le + _msgSsrFlagIonoGridPointSatLos_chain_id <- getWord8 + _msgSsrFlagIonoGridPointSatLos_grid_point_id <- getWord16le + _msgSsrFlagIonoGridPointSatLos_n_faulty_los <- getWord8 + _msgSsrFlagIonoGridPointSatLos_faulty_los <- whileM (not <$> isEmpty) get + pure MsgSsrFlagIonoGridPointSatLos {..} + + put MsgSsrFlagIonoGridPointSatLos {..} = do + put _msgSsrFlagIonoGridPointSatLos_obs_time + putWord8 _msgSsrFlagIonoGridPointSatLos_num_msgs + putWord8 _msgSsrFlagIonoGridPointSatLos_seq_num + putWord8 _msgSsrFlagIonoGridPointSatLos_ssr_sol_id + putWord16le _msgSsrFlagIonoGridPointSatLos_tile_set_id + putWord16le _msgSsrFlagIonoGridPointSatLos_tile_id + putWord8 _msgSsrFlagIonoGridPointSatLos_chain_id + putWord16le _msgSsrFlagIonoGridPointSatLos_grid_point_id + putWord8 _msgSsrFlagIonoGridPointSatLos_n_faulty_los + mapM_ put _msgSsrFlagIonoGridPointSatLos_faulty_los + +$(makeSBP 'msgSsrFlagIonoGridPointSatLos ''MsgSsrFlagIonoGridPointSatLos) +$(makeJSON "_msgSsrFlagIonoGridPointSatLos_" ''MsgSsrFlagIonoGridPointSatLos) +$(makeLenses ''MsgSsrFlagIonoGridPointSatLos) diff --git a/haskell/src/SwiftNav/SBP/Msg.hs b/haskell/src/SwiftNav/SBP/Msg.hs index c651433be7..873cebec31 100644 --- a/haskell/src/SwiftNav/SBP/Msg.hs +++ b/haskell/src/SwiftNav/SBP/Msg.hs @@ -31,6 +31,7 @@ import SwiftNav.SBP.FileIo import SwiftNav.SBP.Flash import SwiftNav.SBP.Gnss import SwiftNav.SBP.Imu +import SwiftNav.SBP.Integrity import SwiftNav.SBP.Linux import SwiftNav.SBP.Logging import SwiftNav.SBP.Mag @@ -214,6 +215,12 @@ data SBPMsg = | SBPMsgSpecanDep MsgSpecanDep Msg | SBPMsgSsrCodeBiases MsgSsrCodeBiases Msg | SBPMsgSsrCodePhaseBiasesBounds MsgSsrCodePhaseBiasesBounds Msg + | SBPMsgSsrFlagHighLevel MsgSsrFlagHighLevel Msg + | SBPMsgSsrFlagIonoGridPointSatLos MsgSsrFlagIonoGridPointSatLos Msg + | SBPMsgSsrFlagIonoGridPoints MsgSsrFlagIonoGridPoints Msg + | SBPMsgSsrFlagIonoTileSatLos MsgSsrFlagIonoTileSatLos Msg + | SBPMsgSsrFlagSatellites MsgSsrFlagSatellites Msg + | SBPMsgSsrFlagTropoGridPoints MsgSsrFlagTropoGridPoints Msg | SBPMsgSsrGridDefinitionDepA MsgSsrGridDefinitionDepA Msg | SBPMsgSsrGriddedCorrection MsgSsrGriddedCorrection Msg | SBPMsgSsrGriddedCorrectionBounds MsgSsrGriddedCorrectionBounds Msg @@ -438,6 +445,12 @@ instance Binary SBPMsg where | _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 == msgSsrFlagHighLevel = SBPMsgSsrFlagHighLevel (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrFlagIonoGridPointSatLos = SBPMsgSsrFlagIonoGridPointSatLos (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrFlagIonoGridPoints = SBPMsgSsrFlagIonoGridPoints (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrFlagIonoTileSatLos = SBPMsgSsrFlagIonoTileSatLos (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrFlagSatellites = SBPMsgSsrFlagSatellites (decode (fromStrict (unBytes _msgSBPPayload))) m + | _msgSBPType == msgSsrFlagTropoGridPoints = SBPMsgSsrFlagTropoGridPoints (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrGridDefinitionDepA = SBPMsgSsrGridDefinitionDepA (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrGriddedCorrection = SBPMsgSsrGriddedCorrection (decode (fromStrict (unBytes _msgSBPPayload))) m | _msgSBPType == msgSsrGriddedCorrectionBounds = SBPMsgSsrGriddedCorrectionBounds (decode (fromStrict (unBytes _msgSBPPayload))) m @@ -654,6 +667,12 @@ instance Binary SBPMsg where encoder (SBPMsgSpecanDep _ m) = put m encoder (SBPMsgSsrCodeBiases _ m) = put m encoder (SBPMsgSsrCodePhaseBiasesBounds _ m) = put m + encoder (SBPMsgSsrFlagHighLevel _ m) = put m + encoder (SBPMsgSsrFlagIonoGridPointSatLos _ m) = put m + encoder (SBPMsgSsrFlagIonoGridPoints _ m) = put m + encoder (SBPMsgSsrFlagIonoTileSatLos _ m) = put m + encoder (SBPMsgSsrFlagSatellites _ m) = put m + encoder (SBPMsgSsrFlagTropoGridPoints _ m) = put m encoder (SBPMsgSsrGridDefinitionDepA _ m) = put m encoder (SBPMsgSsrGriddedCorrection _ m) = put m encoder (SBPMsgSsrGriddedCorrectionBounds _ m) = put m @@ -874,6 +893,12 @@ instance FromJSON SBPMsg where | 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 == msgSsrFlagHighLevel = SBPMsgSsrFlagHighLevel <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrFlagIonoGridPointSatLos = SBPMsgSsrFlagIonoGridPointSatLos <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrFlagIonoGridPoints = SBPMsgSsrFlagIonoGridPoints <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrFlagIonoTileSatLos = SBPMsgSsrFlagIonoTileSatLos <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrFlagSatellites = SBPMsgSsrFlagSatellites <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj + | msgType == msgSsrFlagTropoGridPoints = SBPMsgSsrFlagTropoGridPoints <$> 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 == msgSsrGriddedCorrectionBounds = SBPMsgSsrGriddedCorrectionBounds <$> pure (decode (fromStrict (unBytes payload))) <*> parseJSON obj @@ -1095,6 +1120,12 @@ instance ToJSON SBPMsg where 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 (SBPMsgSsrFlagHighLevel n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrFlagIonoGridPointSatLos n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrFlagIonoGridPoints n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrFlagIonoTileSatLos n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrFlagSatellites n m) = toJSON n <<>> toJSON m + toJSON (SBPMsgSsrFlagTropoGridPoints n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrGridDefinitionDepA n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrGriddedCorrection n m) = toJSON n <<>> toJSON m toJSON (SBPMsgSsrGriddedCorrectionBounds n m) = toJSON n <<>> toJSON m @@ -1310,6 +1341,12 @@ instance HasMsg SBPMsg where 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 (SBPMsgSsrFlagHighLevel n m) = SBPMsgSsrFlagHighLevel n <$> f m + msg f (SBPMsgSsrFlagIonoGridPointSatLos n m) = SBPMsgSsrFlagIonoGridPointSatLos n <$> f m + msg f (SBPMsgSsrFlagIonoGridPoints n m) = SBPMsgSsrFlagIonoGridPoints n <$> f m + msg f (SBPMsgSsrFlagIonoTileSatLos n m) = SBPMsgSsrFlagIonoTileSatLos n <$> f m + msg f (SBPMsgSsrFlagSatellites n m) = SBPMsgSsrFlagSatellites n <$> f m + msg f (SBPMsgSsrFlagTropoGridPoints n m) = SBPMsgSsrFlagTropoGridPoints n <$> f m msg f (SBPMsgSsrGridDefinitionDepA n m) = SBPMsgSsrGridDefinitionDepA n <$> f m msg f (SBPMsgSsrGriddedCorrection n m) = SBPMsgSsrGriddedCorrection n <$> f m msg f (SBPMsgSsrGriddedCorrectionBounds n m) = SBPMsgSsrGriddedCorrectionBounds n <$> f m diff --git a/java/src/com/swiftnav/sbp/client/MessageTable.java b/java/src/com/swiftnav/sbp/client/MessageTable.java index 8095c21f3e..c2f61d2544 100644 --- a/java/src/com/swiftnav/sbp/client/MessageTable.java +++ b/java/src/com/swiftnav/sbp/client/MessageTable.java @@ -47,6 +47,12 @@ import com.swiftnav.sbp.flash.MsgStmUniqueIdResp; import com.swiftnav.sbp.imu.MsgImuAux; import com.swiftnav.sbp.imu.MsgImuRaw; +import com.swiftnav.sbp.integrity.MsgSsrFlagHighLevel; +import com.swiftnav.sbp.integrity.MsgSsrFlagIonoGridPointSatLos; +import com.swiftnav.sbp.integrity.MsgSsrFlagIonoGridPoints; +import com.swiftnav.sbp.integrity.MsgSsrFlagIonoTileSatLos; +import com.swiftnav.sbp.integrity.MsgSsrFlagSatellites; +import com.swiftnav.sbp.integrity.MsgSsrFlagTropoGridPoints; import com.swiftnav.sbp.linux.MsgLinuxCpuState; import com.swiftnav.sbp.linux.MsgLinuxCpuStateDepA; import com.swiftnav.sbp.linux.MsgLinuxMemState; @@ -296,6 +302,18 @@ static SBPMessage dispatch(SBPMessage msg) throws SBPBinaryException { return new MsgImuRaw(msg); case MsgImuAux.TYPE: return new MsgImuAux(msg); + case MsgSsrFlagHighLevel.TYPE: + return new MsgSsrFlagHighLevel(msg); + case MsgSsrFlagSatellites.TYPE: + return new MsgSsrFlagSatellites(msg); + case MsgSsrFlagTropoGridPoints.TYPE: + return new MsgSsrFlagTropoGridPoints(msg); + case MsgSsrFlagIonoGridPoints.TYPE: + return new MsgSsrFlagIonoGridPoints(msg); + case MsgSsrFlagIonoTileSatLos.TYPE: + return new MsgSsrFlagIonoTileSatLos(msg); + case MsgSsrFlagIonoGridPointSatLos.TYPE: + return new MsgSsrFlagIonoGridPointSatLos(msg); case MsgLinuxCpuStateDepA.TYPE: return new MsgLinuxCpuStateDepA(msg); case MsgLinuxMemStateDepA.TYPE: diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagHighLevel.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagHighLevel.java new file mode 100644 index 0000000000..824a080302 --- /dev/null +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagHighLevel.java @@ -0,0 +1,137 @@ +/* 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.integrity; + +// This file was auto-generated from yaml/swiftnav/sbp/integrity.yaml by generate.py. +// Do not modify by hand! + + +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.gnss.*; +import org.json.JSONArray; +import org.json.JSONObject; + +public class MsgSsrFlagHighLevel extends SBPMessage { + public static final int TYPE = 0x0BB9; + + /** GNSS reference time of the observation used to generate the flag. */ + public GPSTimeSec obs_time; + + /** GNSS reference time of the correction associated to the flag. */ + public GPSTimeSec corr_time; + + /** SSR Solution ID. */ + public int ssr_sol_id; + + /** Unique identifier of the set this tile belongs to. */ + public int tile_set_id; + + /** Unique identifier of this tile in the tile set. */ + public int tile_id; + + /** Chain and type of flag. */ + public int chain_id; + + /** Use GPS satellites. */ + public int use_gps_sat; + + /** Use GAL satellites. */ + public int use_gal_sat; + + /** Use BDS satellites. */ + public int use_bds_sat; + + /** Reserved */ + public int[] reserved; + + /** Use tropo grid points. */ + public int use_tropo_grid_points; + + /** Use iono grid points. */ + public int use_iono_grid_points; + + /** Use iono tile satellite LoS. */ + public int use_iono_tile_sat_los; + + /** Use iono grid point satellite LoS. */ + public int use_iono_grid_point_sat_los; + + public MsgSsrFlagHighLevel(int sender) { + super(sender, TYPE); + } + + public MsgSsrFlagHighLevel() { + super(TYPE); + } + + public MsgSsrFlagHighLevel(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + obs_time = new GPSTimeSec().parse(parser); + corr_time = new GPSTimeSec().parse(parser); + ssr_sol_id = parser.getU8(); + tile_set_id = parser.getU16(); + tile_id = parser.getU16(); + chain_id = parser.getU8(); + use_gps_sat = parser.getU8(); + use_gal_sat = parser.getU8(); + use_bds_sat = parser.getU8(); + reserved = parser.getArrayofU8(6); + use_tropo_grid_points = parser.getU8(); + use_iono_grid_points = parser.getU8(); + use_iono_tile_sat_los = parser.getU8(); + use_iono_grid_point_sat_los = parser.getU8(); + } + + @Override + protected void build(Builder builder) { + obs_time.build(builder); + corr_time.build(builder); + builder.putU8(ssr_sol_id); + builder.putU16(tile_set_id); + builder.putU16(tile_id); + builder.putU8(chain_id); + builder.putU8(use_gps_sat); + builder.putU8(use_gal_sat); + builder.putU8(use_bds_sat); + builder.putArrayofU8(reserved, 6); + builder.putU8(use_tropo_grid_points); + builder.putU8(use_iono_grid_points); + builder.putU8(use_iono_tile_sat_los); + builder.putU8(use_iono_grid_point_sat_los); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("obs_time", obs_time.toJSON()); + obj.put("corr_time", corr_time.toJSON()); + obj.put("ssr_sol_id", ssr_sol_id); + obj.put("tile_set_id", tile_set_id); + obj.put("tile_id", tile_id); + obj.put("chain_id", chain_id); + obj.put("use_gps_sat", use_gps_sat); + obj.put("use_gal_sat", use_gal_sat); + obj.put("use_bds_sat", use_bds_sat); + obj.put("reserved", new JSONArray(reserved)); + obj.put("use_tropo_grid_points", use_tropo_grid_points); + obj.put("use_iono_grid_points", use_iono_grid_points); + obj.put("use_iono_tile_sat_los", use_iono_tile_sat_los); + obj.put("use_iono_grid_point_sat_los", use_iono_grid_point_sat_los); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java new file mode 100644 index 0000000000..39119ac2c9 --- /dev/null +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java @@ -0,0 +1,113 @@ +/* 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.integrity; + +// This file was auto-generated from yaml/swiftnav/sbp/integrity.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 MsgSsrFlagIonoGridPointSatLos extends SBPMessage { + public static final int TYPE = 0x0BD1; + + /** GNSS reference time of the observation used to generate the flag. */ + public GPSTimeSec obs_time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** SSR Solution ID. */ + public int ssr_sol_id; + + /** Unique identifier of the set this tile belongs to. */ + public int tile_set_id; + + /** Unique identifier of this tile in the tile set. */ + public int tile_id; + + /** Chain and type of flag. */ + public int chain_id; + + /** Index of the grid point. */ + public int grid_point_id; + + /** Number of faulty LOS. */ + public int n_faulty_los; + + /** List of faulty LOS */ + public SvId[] faulty_los; + + public MsgSsrFlagIonoGridPointSatLos(int sender) { + super(sender, TYPE); + } + + public MsgSsrFlagIonoGridPointSatLos() { + super(TYPE); + } + + public MsgSsrFlagIonoGridPointSatLos(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + obs_time = new GPSTimeSec().parse(parser); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + ssr_sol_id = parser.getU8(); + tile_set_id = parser.getU16(); + tile_id = parser.getU16(); + chain_id = parser.getU8(); + grid_point_id = parser.getU16(); + n_faulty_los = parser.getU8(); + faulty_los = parser.getArray(SvId.class); + } + + @Override + protected void build(Builder builder) { + obs_time.build(builder); + builder.putU8(num_msgs); + builder.putU8(seq_num); + builder.putU8(ssr_sol_id); + builder.putU16(tile_set_id); + builder.putU16(tile_id); + builder.putU8(chain_id); + builder.putU16(grid_point_id); + builder.putU8(n_faulty_los); + builder.putArray(faulty_los); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("obs_time", obs_time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_sol_id", ssr_sol_id); + obj.put("tile_set_id", tile_set_id); + obj.put("tile_id", tile_id); + obj.put("chain_id", chain_id); + obj.put("grid_point_id", grid_point_id); + obj.put("n_faulty_los", n_faulty_los); + obj.put("faulty_los", SBPStruct.toJSONArray(faulty_los)); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java new file mode 100644 index 0000000000..f34bdec992 --- /dev/null +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java @@ -0,0 +1,107 @@ +/* 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.integrity; + +// This file was auto-generated from yaml/swiftnav/sbp/integrity.yaml by generate.py. +// Do not modify by hand! + + +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.gnss.*; +import org.json.JSONArray; +import org.json.JSONObject; + +public class MsgSsrFlagIonoGridPoints extends SBPMessage { + public static final int TYPE = 0x0BC7; + + /** GNSS reference time of the observation used to generate the flag. */ + public GPSTimeSec obs_time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** SSR Solution ID. */ + public int ssr_sol_id; + + /** Unique identifier of the set this tile belongs to. */ + public int tile_set_id; + + /** Unique identifier of this tile in the tile set. */ + public int tile_id; + + /** Chain and type of flag. */ + public int chain_id; + + /** Number of faulty grid points. */ + public int n_faulty_points; + + /** List of faulty grid points. */ + public int[] faulty_points; + + public MsgSsrFlagIonoGridPoints(int sender) { + super(sender, TYPE); + } + + public MsgSsrFlagIonoGridPoints() { + super(TYPE); + } + + public MsgSsrFlagIonoGridPoints(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + obs_time = new GPSTimeSec().parse(parser); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + ssr_sol_id = parser.getU8(); + tile_set_id = parser.getU16(); + tile_id = parser.getU16(); + chain_id = parser.getU8(); + n_faulty_points = parser.getU8(); + faulty_points = parser.getArrayofU16(); + } + + @Override + protected void build(Builder builder) { + obs_time.build(builder); + builder.putU8(num_msgs); + builder.putU8(seq_num); + builder.putU8(ssr_sol_id); + builder.putU16(tile_set_id); + builder.putU16(tile_id); + builder.putU8(chain_id); + builder.putU8(n_faulty_points); + builder.putArrayofU16(faulty_points); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("obs_time", obs_time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_sol_id", ssr_sol_id); + obj.put("tile_set_id", tile_set_id); + obj.put("tile_id", tile_id); + obj.put("chain_id", chain_id); + obj.put("n_faulty_points", n_faulty_points); + obj.put("faulty_points", new JSONArray(faulty_points)); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java new file mode 100644 index 0000000000..188065d1e1 --- /dev/null +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java @@ -0,0 +1,107 @@ +/* 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.integrity; + +// This file was auto-generated from yaml/swiftnav/sbp/integrity.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 MsgSsrFlagIonoTileSatLos extends SBPMessage { + public static final int TYPE = 0x0BCD; + + /** GNSS reference time of the observation used to generate the flag. */ + public GPSTimeSec obs_time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** SSR Solution ID. */ + public int ssr_sol_id; + + /** Unique identifier of the set this tile belongs to. */ + public int tile_set_id; + + /** Unique identifier of this tile in the tile set. */ + public int tile_id; + + /** Chain and type of flag. */ + public int chain_id; + + /** Number of faulty LOS. */ + public int n_faulty_los; + + /** List of faulty LOS */ + public SvId[] faulty_los; + + public MsgSsrFlagIonoTileSatLos(int sender) { + super(sender, TYPE); + } + + public MsgSsrFlagIonoTileSatLos() { + super(TYPE); + } + + public MsgSsrFlagIonoTileSatLos(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + obs_time = new GPSTimeSec().parse(parser); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + ssr_sol_id = parser.getU8(); + tile_set_id = parser.getU16(); + tile_id = parser.getU16(); + chain_id = parser.getU8(); + n_faulty_los = parser.getU8(); + faulty_los = parser.getArray(SvId.class); + } + + @Override + protected void build(Builder builder) { + obs_time.build(builder); + builder.putU8(num_msgs); + builder.putU8(seq_num); + builder.putU8(ssr_sol_id); + builder.putU16(tile_set_id); + builder.putU16(tile_id); + builder.putU8(chain_id); + builder.putU8(n_faulty_los); + builder.putArray(faulty_los); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("obs_time", obs_time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_sol_id", ssr_sol_id); + obj.put("tile_set_id", tile_set_id); + obj.put("tile_id", tile_id); + obj.put("chain_id", chain_id); + obj.put("n_faulty_los", n_faulty_los); + obj.put("faulty_los", SBPStruct.toJSONArray(faulty_los)); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagSatellites.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagSatellites.java new file mode 100644 index 0000000000..3bc801683a --- /dev/null +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagSatellites.java @@ -0,0 +1,101 @@ +/* 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.integrity; + +// This file was auto-generated from yaml/swiftnav/sbp/integrity.yaml by generate.py. +// Do not modify by hand! + + +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.gnss.*; +import org.json.JSONArray; +import org.json.JSONObject; + +public class MsgSsrFlagSatellites extends SBPMessage { + public static final int TYPE = 0x0BBD; + + /** GNSS reference time of the observation used to generate the flag. */ + public GPSTimeSec obs_time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** SSR Solution ID. */ + public int ssr_sol_id; + + /** Chain and type of flag. */ + public int chain_id; + + /** Constellation ID. */ + public int const_id; + + /** Number of faulty satellites. */ + public int n_faulty_sats; + + /** List of faulty satellites. */ + public int[] faulty_sats; + + public MsgSsrFlagSatellites(int sender) { + super(sender, TYPE); + } + + public MsgSsrFlagSatellites() { + super(TYPE); + } + + public MsgSsrFlagSatellites(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + obs_time = new GPSTimeSec().parse(parser); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + ssr_sol_id = parser.getU8(); + chain_id = parser.getU8(); + const_id = parser.getU8(); + n_faulty_sats = parser.getU8(); + faulty_sats = parser.getArrayofU8(); + } + + @Override + protected void build(Builder builder) { + obs_time.build(builder); + builder.putU8(num_msgs); + builder.putU8(seq_num); + builder.putU8(ssr_sol_id); + builder.putU8(chain_id); + builder.putU8(const_id); + builder.putU8(n_faulty_sats); + builder.putArrayofU8(faulty_sats); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("obs_time", obs_time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_sol_id", ssr_sol_id); + obj.put("chain_id", chain_id); + obj.put("const_id", const_id); + obj.put("n_faulty_sats", n_faulty_sats); + obj.put("faulty_sats", new JSONArray(faulty_sats)); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java new file mode 100644 index 0000000000..a322ab5bde --- /dev/null +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java @@ -0,0 +1,107 @@ +/* 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.integrity; + +// This file was auto-generated from yaml/swiftnav/sbp/integrity.yaml by generate.py. +// Do not modify by hand! + + +import com.swiftnav.sbp.SBPBinaryException; +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.gnss.*; +import org.json.JSONArray; +import org.json.JSONObject; + +public class MsgSsrFlagTropoGridPoints extends SBPMessage { + public static final int TYPE = 0x0BC3; + + /** GNSS reference time of the observation used to generate the flag. */ + public GPSTimeSec obs_time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** SSR Solution ID. */ + public int ssr_sol_id; + + /** Unique identifier of the set this tile belongs to. */ + public int tile_set_id; + + /** Unique identifier of this tile in the tile set. */ + public int tile_id; + + /** Chain and type of flag. */ + public int chain_id; + + /** Number of faulty grid points. */ + public int n_faulty_points; + + /** List of faulty grid points. */ + public int[] faulty_points; + + public MsgSsrFlagTropoGridPoints(int sender) { + super(sender, TYPE); + } + + public MsgSsrFlagTropoGridPoints() { + super(TYPE); + } + + public MsgSsrFlagTropoGridPoints(SBPMessage msg) throws SBPBinaryException { + super(msg); + assert msg.type == TYPE; + } + + @Override + protected void parse(Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + obs_time = new GPSTimeSec().parse(parser); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + ssr_sol_id = parser.getU8(); + tile_set_id = parser.getU16(); + tile_id = parser.getU16(); + chain_id = parser.getU8(); + n_faulty_points = parser.getU8(); + faulty_points = parser.getArrayofU16(); + } + + @Override + protected void build(Builder builder) { + obs_time.build(builder); + builder.putU8(num_msgs); + builder.putU8(seq_num); + builder.putU8(ssr_sol_id); + builder.putU16(tile_set_id); + builder.putU16(tile_id); + builder.putU8(chain_id); + builder.putU8(n_faulty_points); + builder.putArrayofU16(faulty_points); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = super.toJSON(); + obj.put("obs_time", obs_time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_sol_id", ssr_sol_id); + obj.put("tile_set_id", tile_set_id); + obj.put("tile_id", tile_id); + obj.put("chain_id", chain_id); + obj.put("n_faulty_points", n_faulty_points); + obj.put("faulty_points", new JSONArray(faulty_points)); + return obj; + } +} diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagHighLevelTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagHighLevelTest.java new file mode 100644 index 0000000000..3123db6c8f --- /dev/null +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagHighLevelTest.java @@ -0,0 +1,282 @@ +/* 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/integrity/test_MsgSsrFlagHighLevel.yaml by generate.py. Do not +// modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.integrity.MsgSsrFlagHighLevel; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_integrity_MsgSsrFlagHighLevelTest { + + 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_integrity_MsgSsrFlagHighLevelTest.test1"); + byte[] payload = + new byte[] { + (byte) 180, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 3, + (byte) 0, + (byte) 104, + (byte) 1, + (byte) 0, + (byte) 0, + (byte) 6, + (byte) 0, + (byte) 10, + (byte) 20, + (byte) 0, + (byte) 30, + (byte) 0, + (byte) 40, + (byte) 1, + (byte) 2, + (byte) 3, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 4, + (byte) 5, + (byte) 6, + (byte) 7, + }; + SBPMessage sbp = new SBPMessage(0x0042, 0x0BB9, payload); + MsgSsrFlagHighLevel msg = new MsgSsrFlagHighLevel(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.chain_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.chain_id + "' != '" + 40 + "'", + value.equals(BigInteger.valueOf(40L))); + } else { + value = value.longValue(); + expected = 40L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.corr_time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.corr_time.tow + "' != '" + 360 + "'", + value.equals(BigInteger.valueOf(360L))); + } else { + value = value.longValue(); + expected = 360L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.corr_time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.corr_time.wn + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.tow + "' != '" + 180 + "'", + value.equals(BigInteger.valueOf(180L))); + } else { + value = value.longValue(); + expected = 180L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.wn + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reserved[0]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reserved[0] + "' != '" + 0 + "'", + value.equals(BigInteger.valueOf(0L))); + } else { + value = value.longValue(); + expected = 0L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reserved[1]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reserved[1] + "' != '" + 0 + "'", + value.equals(BigInteger.valueOf(0L))); + } else { + value = value.longValue(); + expected = 0L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reserved[2]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reserved[2] + "' != '" + 0 + "'", + value.equals(BigInteger.valueOf(0L))); + } else { + value = value.longValue(); + expected = 0L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reserved[3]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reserved[3] + "' != '" + 0 + "'", + value.equals(BigInteger.valueOf(0L))); + } else { + value = value.longValue(); + expected = 0L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reserved[4]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reserved[4] + "' != '" + 0 + "'", + value.equals(BigInteger.valueOf(0L))); + } else { + value = value.longValue(); + expected = 0L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.reserved[5]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.reserved[5] + "' != '" + 0 + "'", + value.equals(BigInteger.valueOf(0L))); + } else { + value = value.longValue(); + expected = 0L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.ssr_sol_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.ssr_sol_id + "' != '" + 10 + "'", + value.equals(BigInteger.valueOf(10L))); + } else { + value = value.longValue(); + expected = 10L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_id + "' != '" + 30 + "'", value.equals(BigInteger.valueOf(30L))); + } else { + value = value.longValue(); + expected = 30L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_set_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_set_id + "' != '" + 20 + "'", + value.equals(BigInteger.valueOf(20L))); + } else { + value = value.longValue(); + expected = 20L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.use_bds_sat; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.use_bds_sat + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.use_gal_sat; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.use_gal_sat + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.use_gps_sat; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.use_gps_sat + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.use_iono_grid_point_sat_los; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.use_iono_grid_point_sat_los + "' != '" + 7 + "'", + value.equals(BigInteger.valueOf(7L))); + } else { + value = value.longValue(); + expected = 7L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.use_iono_grid_points; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.use_iono_grid_points + "' != '" + 5 + "'", + value.equals(BigInteger.valueOf(5L))); + } else { + value = value.longValue(); + expected = 5L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.use_iono_tile_sat_los; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.use_iono_tile_sat_los + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.use_tropo_grid_points; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.use_tropo_grid_points + "' != '" + 4 + "'", + value.equals(BigInteger.valueOf(4L))); + } else { + value = value.longValue(); + expected = 4L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java new file mode 100644 index 0000000000..989168eb33 --- /dev/null +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java @@ -0,0 +1,200 @@ +/* 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/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml by generate.py. Do +// not modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.integrity.MsgSsrFlagIonoGridPointSatLos; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest { + + 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_integrity_MsgSsrFlagIonoGridPointSatLosTest.test1"); + byte[] payload = + new byte[] { + (byte) 180, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 3, + (byte) 0, + (byte) 1, + (byte) 2, + (byte) 3, + (byte) 4, + (byte) 0, + (byte) 5, + (byte) 0, + (byte) 6, + (byte) 30, + (byte) 0, + (byte) 2, + (byte) 10, + (byte) 11, + (byte) 15, + (byte) 14, + }; + SBPMessage sbp = new SBPMessage(0x0042, 0x0BD1, payload); + MsgSsrFlagIonoGridPointSatLos msg = new MsgSsrFlagIonoGridPointSatLos(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.chain_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[0].constellation; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[0].constellation + "' != '" + 11 + "'", + value.equals(BigInteger.valueOf(11L))); + } else { + value = value.longValue(); + expected = 11L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[0].satId; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[0].satId + "' != '" + 10 + "'", + value.equals(BigInteger.valueOf(10L))); + } else { + value = value.longValue(); + expected = 10L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[1].constellation; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[1].constellation + "' != '" + 14 + "'", + value.equals(BigInteger.valueOf(14L))); + } else { + value = value.longValue(); + expected = 14L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[1].satId; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[1].satId + "' != '" + 15 + "'", + value.equals(BigInteger.valueOf(15L))); + } else { + value = value.longValue(); + expected = 15L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.grid_point_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.grid_point_id + "' != '" + 30 + "'", + value.equals(BigInteger.valueOf(30L))); + } else { + value = value.longValue(); + expected = 30L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.n_faulty_los; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_los + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.num_msgs; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.tow + "' != '" + 180 + "'", + value.equals(BigInteger.valueOf(180L))); + } else { + value = value.longValue(); + expected = 180L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.wn + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.seq_num; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.ssr_sol_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + } else { + value = value.longValue(); + expected = 5L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_set_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_set_id + "' != '" + 4 + "'", + value.equals(BigInteger.valueOf(4L))); + } else { + value = value.longValue(); + expected = 4L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java new file mode 100644 index 0000000000..4fe7ff20b8 --- /dev/null +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java @@ -0,0 +1,180 @@ +/* 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/integrity/test_MsgSsrFlagIonoGridPoints.yaml by generate.py. Do not +// modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.integrity.MsgSsrFlagIonoGridPoints; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest { + + 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_integrity_MsgSsrFlagIonoGridPointsTest.test1"); + byte[] payload = + new byte[] { + (byte) 180, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 3, + (byte) 0, + (byte) 1, + (byte) 2, + (byte) 3, + (byte) 4, + (byte) 0, + (byte) 5, + (byte) 0, + (byte) 6, + (byte) 3, + (byte) 10, + (byte) 0, + (byte) 11, + (byte) 0, + (byte) 12, + (byte) 0, + }; + SBPMessage sbp = new SBPMessage(0x0042, 0x0BC7, payload); + MsgSsrFlagIonoGridPoints msg = new MsgSsrFlagIonoGridPoints(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.chain_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_points[0]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_points[0] + "' != '" + 10 + "'", + value.equals(BigInteger.valueOf(10L))); + } else { + value = value.longValue(); + expected = 10L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_points[1]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_points[1] + "' != '" + 11 + "'", + value.equals(BigInteger.valueOf(11L))); + } else { + value = value.longValue(); + expected = 11L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_points[2]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_points[2] + "' != '" + 12 + "'", + value.equals(BigInteger.valueOf(12L))); + } else { + value = value.longValue(); + expected = 12L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.n_faulty_points; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_points + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.num_msgs; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.tow + "' != '" + 180 + "'", + value.equals(BigInteger.valueOf(180L))); + } else { + value = value.longValue(); + expected = 180L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.wn + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.seq_num; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.ssr_sol_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + } else { + value = value.longValue(); + expected = 5L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_set_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_set_id + "' != '" + 4 + "'", + value.equals(BigInteger.valueOf(4L))); + } else { + value = value.longValue(); + expected = 4L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java new file mode 100644 index 0000000000..5f54a74ca9 --- /dev/null +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java @@ -0,0 +1,188 @@ +/* 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/integrity/test_MsgSsrFlagIonoTileSatLos.yaml by generate.py. Do not +// modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.integrity.MsgSsrFlagIonoTileSatLos; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest { + + 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_integrity_MsgSsrFlagIonoTileSatLosTest.test1"); + byte[] payload = + new byte[] { + (byte) 180, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 3, + (byte) 0, + (byte) 1, + (byte) 2, + (byte) 3, + (byte) 4, + (byte) 0, + (byte) 5, + (byte) 0, + (byte) 6, + (byte) 2, + (byte) 10, + (byte) 11, + (byte) 15, + (byte) 14, + }; + SBPMessage sbp = new SBPMessage(0x0042, 0x0BCD, payload); + MsgSsrFlagIonoTileSatLos msg = new MsgSsrFlagIonoTileSatLos(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.chain_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[0].constellation; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[0].constellation + "' != '" + 11 + "'", + value.equals(BigInteger.valueOf(11L))); + } else { + value = value.longValue(); + expected = 11L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[0].satId; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[0].satId + "' != '" + 10 + "'", + value.equals(BigInteger.valueOf(10L))); + } else { + value = value.longValue(); + expected = 10L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[1].constellation; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[1].constellation + "' != '" + 14 + "'", + value.equals(BigInteger.valueOf(14L))); + } else { + value = value.longValue(); + expected = 14L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_los[1].satId; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_los[1].satId + "' != '" + 15 + "'", + value.equals(BigInteger.valueOf(15L))); + } else { + value = value.longValue(); + expected = 15L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.n_faulty_los; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_los + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.num_msgs; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.tow + "' != '" + 180 + "'", + value.equals(BigInteger.valueOf(180L))); + } else { + value = value.longValue(); + expected = 180L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.wn + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.seq_num; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.ssr_sol_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + } else { + value = value.longValue(); + expected = 5L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_set_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_set_id + "' != '" + 4 + "'", + value.equals(BigInteger.valueOf(4L))); + } else { + value = value.longValue(); + expected = 4L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagSatellitesTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagSatellitesTest.java new file mode 100644 index 0000000000..ba0b7ba805 --- /dev/null +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagSatellitesTest.java @@ -0,0 +1,151 @@ +/* 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/integrity/test_MsgSsrFlagSatellites.yaml by generate.py. Do not +// modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.integrity.MsgSsrFlagSatellites; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_integrity_MsgSsrFlagSatellitesTest { + + 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_integrity_MsgSsrFlagSatellitesTest.test1"); + byte[] payload = + new byte[] { + (byte) 180, (byte) 0, (byte) 0, (byte) 0, (byte) 3, (byte) 0, (byte) 1, + (byte) 2, (byte) 3, (byte) 4, (byte) 5, (byte) 3, (byte) 10, (byte) 11, + (byte) 12, + }; + SBPMessage sbp = new SBPMessage(0x0042, 0x0BBD, payload); + MsgSsrFlagSatellites msg = new MsgSsrFlagSatellites(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.chain_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.chain_id + "' != '" + 4 + "'", value.equals(BigInteger.valueOf(4L))); + } else { + value = value.longValue(); + expected = 4L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.const_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.const_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + } else { + value = value.longValue(); + expected = 5L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_sats[0]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_sats[0] + "' != '" + 10 + "'", + value.equals(BigInteger.valueOf(10L))); + } else { + value = value.longValue(); + expected = 10L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_sats[1]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_sats[1] + "' != '" + 11 + "'", + value.equals(BigInteger.valueOf(11L))); + } else { + value = value.longValue(); + expected = 11L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_sats[2]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_sats[2] + "' != '" + 12 + "'", + value.equals(BigInteger.valueOf(12L))); + } else { + value = value.longValue(); + expected = 12L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.n_faulty_sats; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_sats + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.num_msgs; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.tow + "' != '" + 180 + "'", + value.equals(BigInteger.valueOf(180L))); + } else { + value = value.longValue(); + expected = 180L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.wn + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.seq_num; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.ssr_sol_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java new file mode 100644 index 0000000000..2b597c3a6d --- /dev/null +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java @@ -0,0 +1,180 @@ +/* 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/integrity/test_MsgSsrFlagTropoGridPoints.yaml by generate.py. Do not +// modify by hand! + + +import com.swiftnav.sbp.SBPMessage; +import com.swiftnav.sbp.integrity.MsgSsrFlagTropoGridPoints; +import java.math.BigInteger; +import org.json.JSONObject; +import org.junit.Test; + +public class auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest { + + 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_integrity_MsgSsrFlagTropoGridPointsTest.test1"); + byte[] payload = + new byte[] { + (byte) 180, + (byte) 0, + (byte) 0, + (byte) 0, + (byte) 3, + (byte) 0, + (byte) 1, + (byte) 2, + (byte) 3, + (byte) 4, + (byte) 0, + (byte) 5, + (byte) 0, + (byte) 6, + (byte) 3, + (byte) 10, + (byte) 0, + (byte) 11, + (byte) 0, + (byte) 12, + (byte) 0, + }; + SBPMessage sbp = new SBPMessage(0x0042, 0x0BC3, payload); + MsgSsrFlagTropoGridPoints msg = new MsgSsrFlagTropoGridPoints(sbp); + JSONObject json = msg.toJSON(); + Number value; + Number expected; + value = msg.chain_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); + } else { + value = value.longValue(); + expected = 6L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_points[0]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_points[0] + "' != '" + 10 + "'", + value.equals(BigInteger.valueOf(10L))); + } else { + value = value.longValue(); + expected = 10L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_points[1]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_points[1] + "' != '" + 11 + "'", + value.equals(BigInteger.valueOf(11L))); + } else { + value = value.longValue(); + expected = 11L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.faulty_points[2]; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.faulty_points[2] + "' != '" + 12 + "'", + value.equals(BigInteger.valueOf(12L))); + } else { + value = value.longValue(); + expected = 12L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.n_faulty_points; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_points + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.num_msgs; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + } else { + value = value.longValue(); + expected = 1L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.tow; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.tow + "' != '" + 180 + "'", + value.equals(BigInteger.valueOf(180L))); + } else { + value = value.longValue(); + expected = 180L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.obs_time.wn; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.obs_time.wn + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.seq_num; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.ssr_sol_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + } else { + value = value.longValue(); + expected = 5L; + org.junit.Assert.assertEquals(value, expected); + } + value = msg.tile_set_id; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.tile_set_id + "' != '" + 4 + "'", + value.equals(BigInteger.valueOf(4L))); + } else { + value = value.longValue(); + expected = 4L; + org.junit.Assert.assertEquals(value, expected); + } + } +} diff --git a/javascript/sbp/integrity.js b/javascript/sbp/integrity.js new file mode 100644 index 0000000000..7df18cbdd5 --- /dev/null +++ b/javascript/sbp/integrity.js @@ -0,0 +1,361 @@ +/** + * 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 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 piksi/yaml/swiftnav/sbp/integrity.yaml with generate.py. + * Don't edit this by hand! + ********************** + * Package description: + * + * Integrity flag messages +***********************/ + +var SBP = require('./sbp'); +var Parser = require('./parser'); +var Int64 = require('node-int64'); +var UInt64 = require('cuint').UINT64; +var CarrierPhase = require("./gnss").CarrierPhase; +var GnssSignal = require("./gnss").GnssSignal; +var GnssSignalDep = require("./gnss").GnssSignalDep; +var GPSTime = require("./gnss").GPSTime; +var GPSTimeDep = require("./gnss").GPSTimeDep; +var GPSTimeSec = require("./gnss").GPSTimeSec; +var SvId = require("./gnss").SvId; + +/** + * SBP class for message MSG_SSR_FLAG_HIGH_LEVEL (0x0BB9). + * + + * Fields in the SBP payload (`sbp.payload`): + * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. + * @field corr_time GPSTimeSec GNSS reference time of the correction associated to the flag. + * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. + * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. + * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. + * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field use_gps_sat number (unsigned 8-bit int, 1 byte) Use GPS satellites. + * @field use_gal_sat number (unsigned 8-bit int, 1 byte) Use GAL satellites. + * @field use_bds_sat number (unsigned 8-bit int, 1 byte) Use BDS satellites. + * @field reserved array Reserved + * @field use_tropo_grid_points number (unsigned 8-bit int, 1 byte) Use tropo grid points. + * @field use_iono_grid_points number (unsigned 8-bit int, 1 byte) Use iono grid points. + * @field use_iono_tile_sat_los number (unsigned 8-bit int, 1 byte) Use iono tile satellite LoS. + * @field use_iono_grid_point_sat_los number (unsigned 8-bit int, 1 byte) Use iono grid point satellite LoS. + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrFlagHighLevel = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_FLAG_HIGH_LEVEL"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrFlagHighLevel.prototype = Object.create(SBP.prototype); +MsgSsrFlagHighLevel.prototype.messageType = "MSG_SSR_FLAG_HIGH_LEVEL"; +MsgSsrFlagHighLevel.prototype.msg_type = 0x0BB9; +MsgSsrFlagHighLevel.prototype.constructor = MsgSsrFlagHighLevel; +MsgSsrFlagHighLevel.prototype.parser = new Parser() + .endianess('little') + .nest('obs_time', { type: GPSTimeSec.prototype.parser }) + .nest('corr_time', { type: GPSTimeSec.prototype.parser }) + .uint8('ssr_sol_id') + .uint16('tile_set_id') + .uint16('tile_id') + .uint8('chain_id') + .uint8('use_gps_sat') + .uint8('use_gal_sat') + .uint8('use_bds_sat') + .array('reserved', { length: 6, type: 'uint8' }) + .uint8('use_tropo_grid_points') + .uint8('use_iono_grid_points') + .uint8('use_iono_tile_sat_los') + .uint8('use_iono_grid_point_sat_los'); +MsgSsrFlagHighLevel.prototype.fieldSpec = []; +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['corr_time', GPSTimeSec.prototype.fieldSpec]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['use_gps_sat', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['use_gal_sat', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['use_bds_sat', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['reserved', 'array', 'writeUInt8', function () { return 1; }, 6]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['use_tropo_grid_points', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['use_iono_grid_points', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['use_iono_tile_sat_los', 'writeUInt8', 1]); +MsgSsrFlagHighLevel.prototype.fieldSpec.push(['use_iono_grid_point_sat_los', 'writeUInt8', 1]); + +/** + * SBP class for message MSG_SSR_FLAG_SATELLITES (0x0BBD). + * + + * Fields in the SBP payload (`sbp.payload`): + * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset + * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. + * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field const_id number (unsigned 8-bit int, 1 byte) Constellation ID. + * @field n_faulty_sats number (unsigned 8-bit int, 1 byte) Number of faulty satellites. + * @field faulty_sats array List of faulty satellites. + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrFlagSatellites = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_FLAG_SATELLITES"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrFlagSatellites.prototype = Object.create(SBP.prototype); +MsgSsrFlagSatellites.prototype.messageType = "MSG_SSR_FLAG_SATELLITES"; +MsgSsrFlagSatellites.prototype.msg_type = 0x0BBD; +MsgSsrFlagSatellites.prototype.constructor = MsgSsrFlagSatellites; +MsgSsrFlagSatellites.prototype.parser = new Parser() + .endianess('little') + .nest('obs_time', { type: GPSTimeSec.prototype.parser }) + .uint8('num_msgs') + .uint8('seq_num') + .uint8('ssr_sol_id') + .uint8('chain_id') + .uint8('const_id') + .uint8('n_faulty_sats') + .array('faulty_sats', { type: 'uint8', length: 'n_faulty_sats' }); +MsgSsrFlagSatellites.prototype.fieldSpec = []; +MsgSsrFlagSatellites.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); +MsgSsrFlagSatellites.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +MsgSsrFlagSatellites.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); +MsgSsrFlagSatellites.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); +MsgSsrFlagSatellites.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagSatellites.prototype.fieldSpec.push(['const_id', 'writeUInt8', 1]); +MsgSsrFlagSatellites.prototype.fieldSpec.push(['n_faulty_sats', 'writeUInt8', 1]); +MsgSsrFlagSatellites.prototype.fieldSpec.push(['faulty_sats', 'array', 'writeUInt8', function () { return 1; }, 'n_faulty_sats']); + +/** + * SBP class for message MSG_SSR_FLAG_TROPO_GRID_POINTS (0x0BC3). + * + + * Fields in the SBP payload (`sbp.payload`): + * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset + * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. + * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. + * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. + * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field n_faulty_points number (unsigned 8-bit int, 1 byte) Number of faulty grid points. + * @field faulty_points array List of faulty grid points. + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrFlagTropoGridPoints = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_FLAG_TROPO_GRID_POINTS"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrFlagTropoGridPoints.prototype = Object.create(SBP.prototype); +MsgSsrFlagTropoGridPoints.prototype.messageType = "MSG_SSR_FLAG_TROPO_GRID_POINTS"; +MsgSsrFlagTropoGridPoints.prototype.msg_type = 0x0BC3; +MsgSsrFlagTropoGridPoints.prototype.constructor = MsgSsrFlagTropoGridPoints; +MsgSsrFlagTropoGridPoints.prototype.parser = new Parser() + .endianess('little') + .nest('obs_time', { type: GPSTimeSec.prototype.parser }) + .uint8('num_msgs') + .uint8('seq_num') + .uint8('ssr_sol_id') + .uint16('tile_set_id') + .uint16('tile_id') + .uint8('chain_id') + .uint8('n_faulty_points') + .array('faulty_points', { type: 'uint16le', length: 'n_faulty_points' }); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec = []; +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['n_faulty_points', 'writeUInt8', 1]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['faulty_points', 'array', 'writeUInt16LE', function () { return 2; }, 'n_faulty_points']); + +/** + * SBP class for message MSG_SSR_FLAG_IONO_GRID_POINTS (0x0BC7). + * + + * Fields in the SBP payload (`sbp.payload`): + * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset + * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. + * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. + * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. + * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field n_faulty_points number (unsigned 8-bit int, 1 byte) Number of faulty grid points. + * @field faulty_points array List of faulty grid points. + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrFlagIonoGridPoints = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_FLAG_IONO_GRID_POINTS"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrFlagIonoGridPoints.prototype = Object.create(SBP.prototype); +MsgSsrFlagIonoGridPoints.prototype.messageType = "MSG_SSR_FLAG_IONO_GRID_POINTS"; +MsgSsrFlagIonoGridPoints.prototype.msg_type = 0x0BC7; +MsgSsrFlagIonoGridPoints.prototype.constructor = MsgSsrFlagIonoGridPoints; +MsgSsrFlagIonoGridPoints.prototype.parser = new Parser() + .endianess('little') + .nest('obs_time', { type: GPSTimeSec.prototype.parser }) + .uint8('num_msgs') + .uint8('seq_num') + .uint8('ssr_sol_id') + .uint16('tile_set_id') + .uint16('tile_id') + .uint8('chain_id') + .uint8('n_faulty_points') + .array('faulty_points', { type: 'uint16le', length: 'n_faulty_points' }); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec = []; +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['n_faulty_points', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['faulty_points', 'array', 'writeUInt16LE', function () { return 2; }, 'n_faulty_points']); + +/** + * SBP class for message MSG_SSR_FLAG_IONO_TILE_SAT_LOS (0x0BCD). + * + + * Fields in the SBP payload (`sbp.payload`): + * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset + * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. + * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. + * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. + * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field n_faulty_los number (unsigned 8-bit int, 1 byte) Number of faulty LOS. + * @field faulty_los array List of faulty LOS + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrFlagIonoTileSatLos = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_FLAG_IONO_TILE_SAT_LOS"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrFlagIonoTileSatLos.prototype = Object.create(SBP.prototype); +MsgSsrFlagIonoTileSatLos.prototype.messageType = "MSG_SSR_FLAG_IONO_TILE_SAT_LOS"; +MsgSsrFlagIonoTileSatLos.prototype.msg_type = 0x0BCD; +MsgSsrFlagIonoTileSatLos.prototype.constructor = MsgSsrFlagIonoTileSatLos; +MsgSsrFlagIonoTileSatLos.prototype.parser = new Parser() + .endianess('little') + .nest('obs_time', { type: GPSTimeSec.prototype.parser }) + .uint8('num_msgs') + .uint8('seq_num') + .uint8('ssr_sol_id') + .uint16('tile_set_id') + .uint16('tile_id') + .uint8('chain_id') + .uint8('n_faulty_los') + .array('faulty_los', { type: SvId.prototype.parser, length: 'n_faulty_los' }); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec = []; +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['n_faulty_los', 'writeUInt8', 1]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['faulty_los', 'array', SvId.prototype.fieldSpec, function () { return this.fields.array.length; }, 'n_faulty_los']); + +/** + * SBP class for message MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS (0x0BD1). + * + + * Fields in the SBP payload (`sbp.payload`): + * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset + * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. + * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. + * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. + * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field grid_point_id number (unsigned 16-bit int, 2 bytes) Index of the grid point. + * @field n_faulty_los number (unsigned 8-bit int, 1 byte) Number of faulty LOS. + * @field faulty_los array List of faulty LOS + * + * @param sbp An SBP object with a payload to be decoded. + */ +var MsgSsrFlagIonoGridPointSatLos = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +MsgSsrFlagIonoGridPointSatLos.prototype = Object.create(SBP.prototype); +MsgSsrFlagIonoGridPointSatLos.prototype.messageType = "MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS"; +MsgSsrFlagIonoGridPointSatLos.prototype.msg_type = 0x0BD1; +MsgSsrFlagIonoGridPointSatLos.prototype.constructor = MsgSsrFlagIonoGridPointSatLos; +MsgSsrFlagIonoGridPointSatLos.prototype.parser = new Parser() + .endianess('little') + .nest('obs_time', { type: GPSTimeSec.prototype.parser }) + .uint8('num_msgs') + .uint8('seq_num') + .uint8('ssr_sol_id') + .uint16('tile_set_id') + .uint16('tile_id') + .uint8('chain_id') + .uint16('grid_point_id') + .uint8('n_faulty_los') + .array('faulty_los', { type: SvId.prototype.parser, length: 'n_faulty_los' }); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec = []; +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['grid_point_id', 'writeUInt16LE', 2]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['n_faulty_los', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['faulty_los', 'array', SvId.prototype.fieldSpec, function () { return this.fields.array.length; }, 'n_faulty_los']); + +module.exports = { + 0x0BB9: MsgSsrFlagHighLevel, + MsgSsrFlagHighLevel: MsgSsrFlagHighLevel, + 0x0BBD: MsgSsrFlagSatellites, + MsgSsrFlagSatellites: MsgSsrFlagSatellites, + 0x0BC3: MsgSsrFlagTropoGridPoints, + MsgSsrFlagTropoGridPoints: MsgSsrFlagTropoGridPoints, + 0x0BC7: MsgSsrFlagIonoGridPoints, + MsgSsrFlagIonoGridPoints: MsgSsrFlagIonoGridPoints, + 0x0BCD: MsgSsrFlagIonoTileSatLos, + MsgSsrFlagIonoTileSatLos: MsgSsrFlagIonoTileSatLos, + 0x0BD1: MsgSsrFlagIonoGridPointSatLos, + MsgSsrFlagIonoGridPointSatLos: MsgSsrFlagIonoGridPointSatLos, +} \ No newline at end of file diff --git a/jsonschema/MsgSsrFlagHighLevel.json b/jsonschema/MsgSsrFlagHighLevel.json new file mode 100644 index 0000000000..535b524a58 --- /dev/null +++ b/jsonschema/MsgSsrFlagHighLevel.json @@ -0,0 +1,48 @@ +{ + "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": "#MsgSsrFlagHighLevel", + "title":"MsgSsrFlagHighLevel", + "description":"", + "type": "object", + "properties": { + "obs_time": {"$ref": "GpsTimeSec.json"}, + "corr_time": {"$ref": "GpsTimeSec.json"}, + "ssr_sol_id": {"type": "integer"}, + "tile_set_id": {"type": "integer"}, + "tile_id": {"type": "integer"}, + "chain_id": {"type": "integer"}, + "use_gps_sat": {"type": "integer"}, + "use_gal_sat": {"type": "integer"}, + "use_bds_sat": {"type": "integer"}, + "use_tropo_grid_points": {"type": "integer"}, + "use_iono_grid_points": {"type": "integer"}, + "use_iono_tile_sat_los": {"type": "integer"}, + "use_iono_grid_point_sat_los": {"type": "integer"} + }, + "required": [ + "obs_time", + "corr_time", + "ssr_sol_id", + "tile_set_id", + "tile_id", + "chain_id", + "use_gps_sat", + "use_gal_sat", + "use_bds_sat", + "use_tropo_grid_points", + "use_iono_grid_points", + "use_iono_tile_sat_los", + "use_iono_grid_point_sat_los" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgSsrFlagIonoGridPointSatLos.json b/jsonschema/MsgSsrFlagIonoGridPointSatLos.json new file mode 100644 index 0000000000..25cab5a8cd --- /dev/null +++ b/jsonschema/MsgSsrFlagIonoGridPointSatLos.json @@ -0,0 +1,42 @@ +{ + "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": "#MsgSsrFlagIonoGridPointSatLos", + "title":"MsgSsrFlagIonoGridPointSatLos", + "description":"", + "type": "object", + "properties": { + "obs_time": {"$ref": "GpsTimeSec.json"}, + "num_msgs": {"type": "integer"}, + "seq_num": {"type": "integer"}, + "ssr_sol_id": {"type": "integer"}, + "tile_set_id": {"type": "integer"}, + "tile_id": {"type": "integer"}, + "chain_id": {"type": "integer"}, + "grid_point_id": {"type": "integer"}, + "n_faulty_los": {"type": "integer"}, + "faulty_los": {"type": "array", "items": {"$ref": "SvId.json"}} + }, + "required": [ + "obs_time", + "num_msgs", + "seq_num", + "ssr_sol_id", + "tile_set_id", + "tile_id", + "chain_id", + "grid_point_id", + "n_faulty_los", + "faulty_los" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgSsrFlagIonoGridPoints.json b/jsonschema/MsgSsrFlagIonoGridPoints.json new file mode 100644 index 0000000000..b0894b0a3b --- /dev/null +++ b/jsonschema/MsgSsrFlagIonoGridPoints.json @@ -0,0 +1,40 @@ +{ + "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": "#MsgSsrFlagIonoGridPoints", + "title":"MsgSsrFlagIonoGridPoints", + "description":"", + "type": "object", + "properties": { + "obs_time": {"$ref": "GpsTimeSec.json"}, + "num_msgs": {"type": "integer"}, + "seq_num": {"type": "integer"}, + "ssr_sol_id": {"type": "integer"}, + "tile_set_id": {"type": "integer"}, + "tile_id": {"type": "integer"}, + "chain_id": {"type": "integer"}, + "n_faulty_points": {"type": "integer"}, + "faulty_points": {"type": "array", "items": {"type": "integer"}} + }, + "required": [ + "obs_time", + "num_msgs", + "seq_num", + "ssr_sol_id", + "tile_set_id", + "tile_id", + "chain_id", + "n_faulty_points", + "faulty_points" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgSsrFlagIonoTileSatLos.json b/jsonschema/MsgSsrFlagIonoTileSatLos.json new file mode 100644 index 0000000000..f9aca0cc15 --- /dev/null +++ b/jsonschema/MsgSsrFlagIonoTileSatLos.json @@ -0,0 +1,40 @@ +{ + "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": "#MsgSsrFlagIonoTileSatLos", + "title":"MsgSsrFlagIonoTileSatLos", + "description":"", + "type": "object", + "properties": { + "obs_time": {"$ref": "GpsTimeSec.json"}, + "num_msgs": {"type": "integer"}, + "seq_num": {"type": "integer"}, + "ssr_sol_id": {"type": "integer"}, + "tile_set_id": {"type": "integer"}, + "tile_id": {"type": "integer"}, + "chain_id": {"type": "integer"}, + "n_faulty_los": {"type": "integer"}, + "faulty_los": {"type": "array", "items": {"$ref": "SvId.json"}} + }, + "required": [ + "obs_time", + "num_msgs", + "seq_num", + "ssr_sol_id", + "tile_set_id", + "tile_id", + "chain_id", + "n_faulty_los", + "faulty_los" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgSsrFlagSatellites.json b/jsonschema/MsgSsrFlagSatellites.json new file mode 100644 index 0000000000..900f8d1e00 --- /dev/null +++ b/jsonschema/MsgSsrFlagSatellites.json @@ -0,0 +1,38 @@ +{ + "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": "#MsgSsrFlagSatellites", + "title":"MsgSsrFlagSatellites", + "description":"", + "type": "object", + "properties": { + "obs_time": {"$ref": "GpsTimeSec.json"}, + "num_msgs": {"type": "integer"}, + "seq_num": {"type": "integer"}, + "ssr_sol_id": {"type": "integer"}, + "chain_id": {"type": "integer"}, + "const_id": {"type": "integer"}, + "n_faulty_sats": {"type": "integer"}, + "faulty_sats": {"type": "array", "items": {"type": "integer"}} + }, + "required": [ + "obs_time", + "num_msgs", + "seq_num", + "ssr_sol_id", + "chain_id", + "const_id", + "n_faulty_sats", + "faulty_sats" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgSsrFlagTropoGridPoints.json b/jsonschema/MsgSsrFlagTropoGridPoints.json new file mode 100644 index 0000000000..2dd25e32fe --- /dev/null +++ b/jsonschema/MsgSsrFlagTropoGridPoints.json @@ -0,0 +1,40 @@ +{ + "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": "#MsgSsrFlagTropoGridPoints", + "title":"MsgSsrFlagTropoGridPoints", + "description":"", + "type": "object", + "properties": { + "obs_time": {"$ref": "GpsTimeSec.json"}, + "num_msgs": {"type": "integer"}, + "seq_num": {"type": "integer"}, + "ssr_sol_id": {"type": "integer"}, + "tile_set_id": {"type": "integer"}, + "tile_id": {"type": "integer"}, + "chain_id": {"type": "integer"}, + "n_faulty_points": {"type": "integer"}, + "faulty_points": {"type": "array", "items": {"type": "integer"}} + }, + "required": [ + "obs_time", + "num_msgs", + "seq_num", + "ssr_sol_id", + "tile_set_id", + "tile_id", + "chain_id", + "n_faulty_points", + "faulty_points" + ] +} \ No newline at end of file diff --git a/proto/integrity.proto b/proto/integrity.proto new file mode 100644 index 0000000000..873d89cd9b --- /dev/null +++ b/proto/integrity.proto @@ -0,0 +1,122 @@ +/* + * Copyright (C) 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. + */ + +syntax = "proto3"; + +/** Integrity + * + * Integrity flag messages + */ + +package swiftnav.sbp.integrity; + +import "gnss.proto"; + +/** High level integrity flags + * +None + */ +message MsgSsrFlagHighLevel { + gnss.GpsTimeSec obs_time = 1; + gnss.GpsTimeSec corr_time = 2; + uint32 ssr_sol_id = 3; + uint32 tile_set_id = 4; + uint32 tile_id = 5; + uint32 chain_id = 6; + uint32 use_gps_sat = 7; + uint32 use_gal_sat = 8; + uint32 use_bds_sat = 9; + uint32 use_tropo_grid_points = 11; + uint32 use_iono_grid_points = 12; + uint32 use_iono_tile_sat_los = 13; + uint32 use_iono_grid_point_sat_los = 14; +} + +/** List of satellites which are faulty, per constellation + * +None + */ +message MsgSsrFlagSatellites { + gnss.GpsTimeSec obs_time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_sol_id = 4; + uint32 chain_id = 5; + uint32 const_id = 6; + uint32 n_faulty_sats = 7; + repeated uint32 faulty_sats = 8; +} + +/** List of grid points which are faulty + * +None + */ +message MsgSsrFlagTropoGridPoints { + gnss.GpsTimeSec obs_time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_sol_id = 4; + uint32 tile_set_id = 5; + uint32 tile_id = 6; + uint32 chain_id = 7; + uint32 n_faulty_points = 8; + repeated uint32 faulty_points = 9; +} + +/** List of grid points which are faulty + * +None + */ +message MsgSsrFlagIonoGridPoints { + gnss.GpsTimeSec obs_time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_sol_id = 4; + uint32 tile_set_id = 5; + uint32 tile_id = 6; + uint32 chain_id = 7; + uint32 n_faulty_points = 8; + repeated uint32 faulty_points = 9; +} + +/** List of all the LOS which are faulty + * +None + */ +message MsgSsrFlagIonoTileSatLos { + gnss.GpsTimeSec obs_time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_sol_id = 4; + uint32 tile_set_id = 5; + uint32 tile_id = 6; + uint32 chain_id = 7; + uint32 n_faulty_los = 8; + repeated SvId faulty_los = 9; +} + +/** List of all the grid points to satellite which are faulty + * +None + */ +message MsgSsrFlagIonoGridPointSatLos { + gnss.GpsTimeSec obs_time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_sol_id = 4; + uint32 tile_set_id = 5; + uint32 tile_id = 6; + uint32 chain_id = 7; + uint32 grid_point_id = 8; + uint32 n_faulty_los = 9; + repeated SvId faulty_los = 10; +} \ No newline at end of file diff --git a/python/sbp/integrity.py b/python/sbp/integrity.py new file mode 100644 index 0000000000..da387d5104 --- /dev/null +++ b/python/sbp/integrity.py @@ -0,0 +1,830 @@ +#!/usr/bin/env python +# 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. + + +""" +Integrity flag messages +""" + +import json + +import construct + +from sbp.msg import SBP, SENDER_ID +from sbp.utils import fmt_repr, exclude_fields, walk_json_dict, containerize +from sbp.gnss import GPSTimeSec, SvId + +# Automatically generated from piksi/yaml/swiftnav/sbp/integrity.yaml with generate.py. +# Please do not hand edit! + + +SBP_MSG_SSR_FLAG_HIGH_LEVEL = 0x0BB9 +class MsgSsrFlagHighLevel(SBP): + """SBP class for message MSG_SSR_FLAG_HIGH_LEVEL (0x0BB9). + + You can have MSG_SSR_FLAG_HIGH_LEVEL 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. + obs_time : GPSTimeSec + GNSS reference time of the observation used to generate the flag. + corr_time : GPSTimeSec + GNSS reference time of the correction associated to the flag. + ssr_sol_id : int + SSR Solution ID. + tile_set_id : int + Unique identifier of the set this tile belongs to. + tile_id : int + Unique identifier of this tile in the tile set. + chain_id : int + Chain and type of flag. + use_gps_sat : int + Use GPS satellites. + use_gal_sat : int + Use GAL satellites. + use_bds_sat : int + Use BDS satellites. + reserved : array + Reserved + use_tropo_grid_points : int + Use tropo grid points. + use_iono_grid_points : int + Use iono grid points. + use_iono_tile_sat_los : int + Use iono tile satellite LoS. + use_iono_grid_point_sat_los : int + Use iono grid point satellite LoS. + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'obs_time' / GPSTimeSec._parser, + 'corr_time' / GPSTimeSec._parser, + 'ssr_sol_id' / construct.Int8ul, + 'tile_set_id' / construct.Int16ul, + 'tile_id' / construct.Int16ul, + 'chain_id' / construct.Int8ul, + 'use_gps_sat' / construct.Int8ul, + 'use_gal_sat' / construct.Int8ul, + 'use_bds_sat' / construct.Int8ul, + 'reserved' / construct.Array(6, construct.Int8ul), + 'use_tropo_grid_points' / construct.Int8ul, + 'use_iono_grid_points' / construct.Int8ul, + 'use_iono_tile_sat_los' / construct.Int8ul, + 'use_iono_grid_point_sat_los' / construct.Int8ul,) + __slots__ = [ + 'obs_time', + 'corr_time', + 'ssr_sol_id', + 'tile_set_id', + 'tile_id', + 'chain_id', + 'use_gps_sat', + 'use_gal_sat', + 'use_bds_sat', + 'reserved', + 'use_tropo_grid_points', + 'use_iono_grid_points', + 'use_iono_tile_sat_los', + 'use_iono_grid_point_sat_los', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrFlagHighLevel, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrFlagHighLevel, self).__init__() + self.msg_type = SBP_MSG_SSR_FLAG_HIGH_LEVEL + self.sender = kwargs.pop('sender', SENDER_ID) + self.obs_time = kwargs.pop('obs_time') + self.corr_time = kwargs.pop('corr_time') + self.ssr_sol_id = kwargs.pop('ssr_sol_id') + self.tile_set_id = kwargs.pop('tile_set_id') + self.tile_id = kwargs.pop('tile_id') + self.chain_id = kwargs.pop('chain_id') + self.use_gps_sat = kwargs.pop('use_gps_sat') + self.use_gal_sat = kwargs.pop('use_gal_sat') + self.use_bds_sat = kwargs.pop('use_bds_sat') + self.reserved = kwargs.pop('reserved') + self.use_tropo_grid_points = kwargs.pop('use_tropo_grid_points') + self.use_iono_grid_points = kwargs.pop('use_iono_grid_points') + self.use_iono_tile_sat_los = kwargs.pop('use_iono_tile_sat_los') + self.use_iono_grid_point_sat_los = kwargs.pop('use_iono_grid_point_sat_los') + + 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 MsgSsrFlagHighLevel.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrFlagHighLevel(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrFlagHighLevel._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 = MsgSsrFlagHighLevel._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 = MsgSsrFlagHighLevel._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( MsgSsrFlagHighLevel, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + +SBP_MSG_SSR_FLAG_SATELLITES = 0x0BBD +class MsgSsrFlagSatellites(SBP): + """SBP class for message MSG_SSR_FLAG_SATELLITES (0x0BBD). + + You can have MSG_SSR_FLAG_SATELLITES 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. + obs_time : GPSTimeSec + GNSS reference time of the observation used to generate the flag. + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_sol_id : int + SSR Solution ID. + chain_id : int + Chain and type of flag. + const_id : int + Constellation ID. + n_faulty_sats : int + Number of faulty satellites. + faulty_sats : array + List of faulty satellites. + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'obs_time' / GPSTimeSec._parser, + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul, + 'ssr_sol_id' / construct.Int8ul, + 'chain_id' / construct.Int8ul, + 'const_id' / construct.Int8ul, + 'n_faulty_sats' / construct.Int8ul, + 'faulty_sats' / construct.GreedyRange(construct.Int8ul),) + __slots__ = [ + 'obs_time', + 'num_msgs', + 'seq_num', + 'ssr_sol_id', + 'chain_id', + 'const_id', + 'n_faulty_sats', + 'faulty_sats', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrFlagSatellites, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrFlagSatellites, self).__init__() + self.msg_type = SBP_MSG_SSR_FLAG_SATELLITES + self.sender = kwargs.pop('sender', SENDER_ID) + self.obs_time = kwargs.pop('obs_time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_sol_id = kwargs.pop('ssr_sol_id') + self.chain_id = kwargs.pop('chain_id') + self.const_id = kwargs.pop('const_id') + self.n_faulty_sats = kwargs.pop('n_faulty_sats') + self.faulty_sats = kwargs.pop('faulty_sats') + + 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 MsgSsrFlagSatellites.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrFlagSatellites(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrFlagSatellites._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 = MsgSsrFlagSatellites._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 = MsgSsrFlagSatellites._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( MsgSsrFlagSatellites, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + +SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS = 0x0BC3 +class MsgSsrFlagTropoGridPoints(SBP): + """SBP class for message MSG_SSR_FLAG_TROPO_GRID_POINTS (0x0BC3). + + You can have MSG_SSR_FLAG_TROPO_GRID_POINTS 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. + obs_time : GPSTimeSec + GNSS reference time of the observation used to generate the flag. + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_sol_id : int + SSR Solution ID. + tile_set_id : int + Unique identifier of the set this tile belongs to. + tile_id : int + Unique identifier of this tile in the tile set. + chain_id : int + Chain and type of flag. + n_faulty_points : int + Number of faulty grid points. + faulty_points : array + List of faulty grid points. + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'obs_time' / GPSTimeSec._parser, + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul, + 'ssr_sol_id' / construct.Int8ul, + 'tile_set_id' / construct.Int16ul, + 'tile_id' / construct.Int16ul, + 'chain_id' / construct.Int8ul, + 'n_faulty_points' / construct.Int8ul, + 'faulty_points' / construct.GreedyRange(construct.Int16ul),) + __slots__ = [ + 'obs_time', + 'num_msgs', + 'seq_num', + 'ssr_sol_id', + 'tile_set_id', + 'tile_id', + 'chain_id', + 'n_faulty_points', + 'faulty_points', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrFlagTropoGridPoints, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrFlagTropoGridPoints, self).__init__() + self.msg_type = SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS + self.sender = kwargs.pop('sender', SENDER_ID) + self.obs_time = kwargs.pop('obs_time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_sol_id = kwargs.pop('ssr_sol_id') + self.tile_set_id = kwargs.pop('tile_set_id') + self.tile_id = kwargs.pop('tile_id') + self.chain_id = kwargs.pop('chain_id') + self.n_faulty_points = kwargs.pop('n_faulty_points') + self.faulty_points = kwargs.pop('faulty_points') + + 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 MsgSsrFlagTropoGridPoints.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrFlagTropoGridPoints(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrFlagTropoGridPoints._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 = MsgSsrFlagTropoGridPoints._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 = MsgSsrFlagTropoGridPoints._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( MsgSsrFlagTropoGridPoints, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + +SBP_MSG_SSR_FLAG_IONO_GRID_POINTS = 0x0BC7 +class MsgSsrFlagIonoGridPoints(SBP): + """SBP class for message MSG_SSR_FLAG_IONO_GRID_POINTS (0x0BC7). + + You can have MSG_SSR_FLAG_IONO_GRID_POINTS 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. + obs_time : GPSTimeSec + GNSS reference time of the observation used to generate the flag. + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_sol_id : int + SSR Solution ID. + tile_set_id : int + Unique identifier of the set this tile belongs to. + tile_id : int + Unique identifier of this tile in the tile set. + chain_id : int + Chain and type of flag. + n_faulty_points : int + Number of faulty grid points. + faulty_points : array + List of faulty grid points. + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'obs_time' / GPSTimeSec._parser, + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul, + 'ssr_sol_id' / construct.Int8ul, + 'tile_set_id' / construct.Int16ul, + 'tile_id' / construct.Int16ul, + 'chain_id' / construct.Int8ul, + 'n_faulty_points' / construct.Int8ul, + 'faulty_points' / construct.GreedyRange(construct.Int16ul),) + __slots__ = [ + 'obs_time', + 'num_msgs', + 'seq_num', + 'ssr_sol_id', + 'tile_set_id', + 'tile_id', + 'chain_id', + 'n_faulty_points', + 'faulty_points', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrFlagIonoGridPoints, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrFlagIonoGridPoints, self).__init__() + self.msg_type = SBP_MSG_SSR_FLAG_IONO_GRID_POINTS + self.sender = kwargs.pop('sender', SENDER_ID) + self.obs_time = kwargs.pop('obs_time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_sol_id = kwargs.pop('ssr_sol_id') + self.tile_set_id = kwargs.pop('tile_set_id') + self.tile_id = kwargs.pop('tile_id') + self.chain_id = kwargs.pop('chain_id') + self.n_faulty_points = kwargs.pop('n_faulty_points') + self.faulty_points = kwargs.pop('faulty_points') + + 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 MsgSsrFlagIonoGridPoints.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrFlagIonoGridPoints(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrFlagIonoGridPoints._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 = MsgSsrFlagIonoGridPoints._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 = MsgSsrFlagIonoGridPoints._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( MsgSsrFlagIonoGridPoints, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + +SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS = 0x0BCD +class MsgSsrFlagIonoTileSatLos(SBP): + """SBP class for message MSG_SSR_FLAG_IONO_TILE_SAT_LOS (0x0BCD). + + You can have MSG_SSR_FLAG_IONO_TILE_SAT_LOS 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. + obs_time : GPSTimeSec + GNSS reference time of the observation used to generate the flag. + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_sol_id : int + SSR Solution ID. + tile_set_id : int + Unique identifier of the set this tile belongs to. + tile_id : int + Unique identifier of this tile in the tile set. + chain_id : int + Chain and type of flag. + n_faulty_los : int + Number of faulty LOS. + faulty_los : array + List of faulty LOS + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'obs_time' / GPSTimeSec._parser, + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul, + 'ssr_sol_id' / construct.Int8ul, + 'tile_set_id' / construct.Int16ul, + 'tile_id' / construct.Int16ul, + 'chain_id' / construct.Int8ul, + 'n_faulty_los' / construct.Int8ul, + 'faulty_los' / construct.GreedyRange(SvId._parser),) + __slots__ = [ + 'obs_time', + 'num_msgs', + 'seq_num', + 'ssr_sol_id', + 'tile_set_id', + 'tile_id', + 'chain_id', + 'n_faulty_los', + 'faulty_los', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrFlagIonoTileSatLos, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrFlagIonoTileSatLos, self).__init__() + self.msg_type = SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS + self.sender = kwargs.pop('sender', SENDER_ID) + self.obs_time = kwargs.pop('obs_time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_sol_id = kwargs.pop('ssr_sol_id') + self.tile_set_id = kwargs.pop('tile_set_id') + self.tile_id = kwargs.pop('tile_id') + self.chain_id = kwargs.pop('chain_id') + self.n_faulty_los = kwargs.pop('n_faulty_los') + self.faulty_los = kwargs.pop('faulty_los') + + 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 MsgSsrFlagIonoTileSatLos.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrFlagIonoTileSatLos(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrFlagIonoTileSatLos._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 = MsgSsrFlagIonoTileSatLos._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 = MsgSsrFlagIonoTileSatLos._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( MsgSsrFlagIonoTileSatLos, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + +SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS = 0x0BD1 +class MsgSsrFlagIonoGridPointSatLos(SBP): + """SBP class for message MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS (0x0BD1). + + You can have MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS 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. + obs_time : GPSTimeSec + GNSS reference time of the observation used to generate the flag. + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_sol_id : int + SSR Solution ID. + tile_set_id : int + Unique identifier of the set this tile belongs to. + tile_id : int + Unique identifier of this tile in the tile set. + chain_id : int + Chain and type of flag. + grid_point_id : int + Index of the grid point. + n_faulty_los : int + Number of faulty LOS. + faulty_los : array + List of faulty LOS + sender : int + Optional sender ID, defaults to SENDER_ID (see sbp/msg.py). + + """ + _parser = construct.Struct( + 'obs_time' / GPSTimeSec._parser, + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul, + 'ssr_sol_id' / construct.Int8ul, + 'tile_set_id' / construct.Int16ul, + 'tile_id' / construct.Int16ul, + 'chain_id' / construct.Int8ul, + 'grid_point_id' / construct.Int16ul, + 'n_faulty_los' / construct.Int8ul, + 'faulty_los' / construct.GreedyRange(SvId._parser),) + __slots__ = [ + 'obs_time', + 'num_msgs', + 'seq_num', + 'ssr_sol_id', + 'tile_set_id', + 'tile_id', + 'chain_id', + 'grid_point_id', + 'n_faulty_los', + 'faulty_los', + ] + + def __init__(self, sbp=None, **kwargs): + if sbp: + super( MsgSsrFlagIonoGridPointSatLos, + self).__init__(sbp.msg_type, sbp.sender, sbp.length, + sbp.payload, sbp.crc) + self.from_binary(sbp.payload) + else: + super( MsgSsrFlagIonoGridPointSatLos, self).__init__() + self.msg_type = SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS + self.sender = kwargs.pop('sender', SENDER_ID) + self.obs_time = kwargs.pop('obs_time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_sol_id = kwargs.pop('ssr_sol_id') + self.tile_set_id = kwargs.pop('tile_set_id') + self.tile_id = kwargs.pop('tile_id') + self.chain_id = kwargs.pop('chain_id') + self.grid_point_id = kwargs.pop('grid_point_id') + self.n_faulty_los = kwargs.pop('n_faulty_los') + self.faulty_los = kwargs.pop('faulty_los') + + 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 MsgSsrFlagIonoGridPointSatLos.from_json_dict(d) + + @staticmethod + def from_json_dict(d): + sbp = SBP.from_json_dict(d) + return MsgSsrFlagIonoGridPointSatLos(sbp, **d) + + + def from_binary(self, d): + """Given a binary payload d, update the appropriate payload fields of + the message. + + """ + p = MsgSsrFlagIonoGridPointSatLos._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 = MsgSsrFlagIonoGridPointSatLos._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 = MsgSsrFlagIonoGridPointSatLos._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( MsgSsrFlagIonoGridPointSatLos, self).to_json_dict() + j = walk_json_dict(exclude_fields(self)) + d.update(j) + return d + + +msg_classes = { + 0x0BB9: MsgSsrFlagHighLevel, + 0x0BBD: MsgSsrFlagSatellites, + 0x0BC3: MsgSsrFlagTropoGridPoints, + 0x0BC7: MsgSsrFlagIonoGridPoints, + 0x0BCD: MsgSsrFlagIonoTileSatLos, + 0x0BD1: MsgSsrFlagIonoGridPointSatLos, +} \ No newline at end of file diff --git a/rust/sbp/src/messages/integrity.rs b/rust/sbp/src/messages/integrity.rs new file mode 100644 index 0000000000..7b860e8642 --- /dev/null +++ b/rust/sbp/src/messages/integrity.rs @@ -0,0 +1,803 @@ +// 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/integrity.yaml +// with generate.py. Please do not hand edit! +//****************************************************************************/ +//! Integrity flag messages +pub use msg_ssr_flag_high_level::MsgSsrFlagHighLevel; +pub use msg_ssr_flag_iono_grid_point_sat_los::MsgSsrFlagIonoGridPointSatLos; +pub use msg_ssr_flag_iono_grid_points::MsgSsrFlagIonoGridPoints; +pub use msg_ssr_flag_iono_tile_sat_los::MsgSsrFlagIonoTileSatLos; +pub use msg_ssr_flag_satellites::MsgSsrFlagSatellites; +pub use msg_ssr_flag_tropo_grid_points::MsgSsrFlagTropoGridPoints; + +pub mod msg_ssr_flag_high_level { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// High level integrity flags + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgSsrFlagHighLevel { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// GNSS reference time of the observation used to generate the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] + pub obs_time: GpsTimeSec, + /// GNSS reference time of the correction associated to the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "corr_time")))] + pub corr_time: GpsTimeSec, + /// SSR Solution ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] + pub ssr_sol_id: u8, + /// Unique identifier of the set this tile belongs to. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] + pub tile_set_id: u16, + /// Unique identifier of this tile in the tile set. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] + pub tile_id: u16, + /// Chain and type of flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] + pub chain_id: u8, + /// Use GPS satellites. + #[cfg_attr(feature = "serde", serde(rename(serialize = "use_gps_sat")))] + pub use_gps_sat: u8, + /// Use GAL satellites. + #[cfg_attr(feature = "serde", serde(rename(serialize = "use_gal_sat")))] + pub use_gal_sat: u8, + /// Use BDS satellites. + #[cfg_attr(feature = "serde", serde(rename(serialize = "use_bds_sat")))] + pub use_bds_sat: u8, + /// Reserved + #[cfg_attr(feature = "serde", serde(rename(serialize = "reserved")))] + pub reserved: [u8; 6], + /// Use tropo grid points. + #[cfg_attr(feature = "serde", serde(rename(serialize = "use_tropo_grid_points")))] + pub use_tropo_grid_points: u8, + /// Use iono grid points. + #[cfg_attr(feature = "serde", serde(rename(serialize = "use_iono_grid_points")))] + pub use_iono_grid_points: u8, + /// Use iono tile satellite LoS. + #[cfg_attr(feature = "serde", serde(rename(serialize = "use_iono_tile_sat_los")))] + pub use_iono_tile_sat_los: u8, + /// Use iono grid point satellite LoS. + #[cfg_attr( + feature = "serde", + serde(rename(serialize = "use_iono_grid_point_sat_los")) + )] + pub use_iono_grid_point_sat_los: u8, + } + + impl ConcreteMessage for MsgSsrFlagHighLevel { + const MESSAGE_TYPE: u16 = 3001; + const MESSAGE_NAME: &'static str = "MSG_SSR_FLAG_HIGH_LEVEL"; + } + + impl SbpMessage for MsgSsrFlagHighLevel { + 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 MsgSsrFlagHighLevel { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgSsrFlagHighLevel(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgSsrFlagHighLevel { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + <[u8; 6] as WireFormat>::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.obs_time) + + WireFormat::len(&self.corr_time) + + WireFormat::len(&self.ssr_sol_id) + + WireFormat::len(&self.tile_set_id) + + WireFormat::len(&self.tile_id) + + WireFormat::len(&self.chain_id) + + WireFormat::len(&self.use_gps_sat) + + WireFormat::len(&self.use_gal_sat) + + WireFormat::len(&self.use_bds_sat) + + WireFormat::len(&self.reserved) + + WireFormat::len(&self.use_tropo_grid_points) + + WireFormat::len(&self.use_iono_grid_points) + + WireFormat::len(&self.use_iono_tile_sat_los) + + WireFormat::len(&self.use_iono_grid_point_sat_los) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.obs_time, buf); + WireFormat::write(&self.corr_time, buf); + WireFormat::write(&self.ssr_sol_id, buf); + WireFormat::write(&self.tile_set_id, buf); + WireFormat::write(&self.tile_id, buf); + WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.use_gps_sat, buf); + WireFormat::write(&self.use_gal_sat, buf); + WireFormat::write(&self.use_bds_sat, buf); + WireFormat::write(&self.reserved, buf); + WireFormat::write(&self.use_tropo_grid_points, buf); + WireFormat::write(&self.use_iono_grid_points, buf); + WireFormat::write(&self.use_iono_tile_sat_los, buf); + WireFormat::write(&self.use_iono_grid_point_sat_los, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgSsrFlagHighLevel { + sender_id: None, + obs_time: WireFormat::parse_unchecked(buf), + corr_time: WireFormat::parse_unchecked(buf), + ssr_sol_id: WireFormat::parse_unchecked(buf), + tile_set_id: WireFormat::parse_unchecked(buf), + tile_id: WireFormat::parse_unchecked(buf), + chain_id: WireFormat::parse_unchecked(buf), + use_gps_sat: WireFormat::parse_unchecked(buf), + use_gal_sat: WireFormat::parse_unchecked(buf), + use_bds_sat: WireFormat::parse_unchecked(buf), + reserved: WireFormat::parse_unchecked(buf), + use_tropo_grid_points: WireFormat::parse_unchecked(buf), + use_iono_grid_points: WireFormat::parse_unchecked(buf), + use_iono_tile_sat_los: WireFormat::parse_unchecked(buf), + use_iono_grid_point_sat_los: WireFormat::parse_unchecked(buf), + } + } + } +} + +pub mod msg_ssr_flag_iono_grid_points { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// List of grid points which are faulty + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgSsrFlagIonoGridPoints { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// GNSS reference time of the observation used to generate the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] + pub obs_time: GpsTimeSec, + /// Number of messages in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] + pub num_msgs: u8, + /// Position of this message in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] + pub seq_num: u8, + /// SSR Solution ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] + pub ssr_sol_id: u8, + /// Unique identifier of the set this tile belongs to. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] + pub tile_set_id: u16, + /// Unique identifier of this tile in the tile set. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] + pub tile_id: u16, + /// Chain and type of flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] + pub chain_id: u8, + /// Number of faulty grid points. + #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_points")))] + pub n_faulty_points: u8, + /// List of faulty grid points. + #[cfg_attr(feature = "serde", serde(rename(serialize = "faulty_points")))] + pub faulty_points: Vec, + } + + impl ConcreteMessage for MsgSsrFlagIonoGridPoints { + const MESSAGE_TYPE: u16 = 3015; + const MESSAGE_NAME: &'static str = "MSG_SSR_FLAG_IONO_GRID_POINTS"; + } + + impl SbpMessage for MsgSsrFlagIonoGridPoints { + 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 MsgSsrFlagIonoGridPoints { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgSsrFlagIonoGridPoints(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgSsrFlagIonoGridPoints { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.obs_time) + + WireFormat::len(&self.num_msgs) + + WireFormat::len(&self.seq_num) + + WireFormat::len(&self.ssr_sol_id) + + WireFormat::len(&self.tile_set_id) + + WireFormat::len(&self.tile_id) + + WireFormat::len(&self.chain_id) + + WireFormat::len(&self.n_faulty_points) + + WireFormat::len(&self.faulty_points) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.obs_time, buf); + WireFormat::write(&self.num_msgs, buf); + WireFormat::write(&self.seq_num, buf); + WireFormat::write(&self.ssr_sol_id, buf); + WireFormat::write(&self.tile_set_id, buf); + WireFormat::write(&self.tile_id, buf); + WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.n_faulty_points, buf); + WireFormat::write(&self.faulty_points, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgSsrFlagIonoGridPoints { + sender_id: None, + obs_time: WireFormat::parse_unchecked(buf), + num_msgs: WireFormat::parse_unchecked(buf), + seq_num: WireFormat::parse_unchecked(buf), + ssr_sol_id: WireFormat::parse_unchecked(buf), + tile_set_id: WireFormat::parse_unchecked(buf), + tile_id: WireFormat::parse_unchecked(buf), + chain_id: WireFormat::parse_unchecked(buf), + n_faulty_points: WireFormat::parse_unchecked(buf), + faulty_points: WireFormat::parse_unchecked(buf), + } + } + } +} + +pub mod msg_ssr_flag_iono_grid_point_sat_los { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// List of all the grid points to satellite which are faulty + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgSsrFlagIonoGridPointSatLos { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// GNSS reference time of the observation used to generate the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] + pub obs_time: GpsTimeSec, + /// Number of messages in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] + pub num_msgs: u8, + /// Position of this message in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] + pub seq_num: u8, + /// SSR Solution ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] + pub ssr_sol_id: u8, + /// Unique identifier of the set this tile belongs to. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] + pub tile_set_id: u16, + /// Unique identifier of this tile in the tile set. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] + pub tile_id: u16, + /// Chain and type of flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] + pub chain_id: u8, + /// Index of the grid point. + #[cfg_attr(feature = "serde", serde(rename(serialize = "grid_point_id")))] + pub grid_point_id: u16, + /// Number of faulty LOS. + #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_los")))] + pub n_faulty_los: u8, + /// List of faulty LOS + #[cfg_attr(feature = "serde", serde(rename(serialize = "faulty_los")))] + pub faulty_los: Vec, + } + + impl ConcreteMessage for MsgSsrFlagIonoGridPointSatLos { + const MESSAGE_TYPE: u16 = 3025; + const MESSAGE_NAME: &'static str = "MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS"; + } + + impl SbpMessage for MsgSsrFlagIonoGridPointSatLos { + 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 MsgSsrFlagIonoGridPointSatLos { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgSsrFlagIonoGridPointSatLos(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgSsrFlagIonoGridPointSatLos { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.obs_time) + + WireFormat::len(&self.num_msgs) + + WireFormat::len(&self.seq_num) + + WireFormat::len(&self.ssr_sol_id) + + WireFormat::len(&self.tile_set_id) + + WireFormat::len(&self.tile_id) + + WireFormat::len(&self.chain_id) + + WireFormat::len(&self.grid_point_id) + + WireFormat::len(&self.n_faulty_los) + + WireFormat::len(&self.faulty_los) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.obs_time, buf); + WireFormat::write(&self.num_msgs, buf); + WireFormat::write(&self.seq_num, buf); + WireFormat::write(&self.ssr_sol_id, buf); + WireFormat::write(&self.tile_set_id, buf); + WireFormat::write(&self.tile_id, buf); + WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.grid_point_id, buf); + WireFormat::write(&self.n_faulty_los, buf); + WireFormat::write(&self.faulty_los, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgSsrFlagIonoGridPointSatLos { + sender_id: None, + obs_time: WireFormat::parse_unchecked(buf), + num_msgs: WireFormat::parse_unchecked(buf), + seq_num: WireFormat::parse_unchecked(buf), + ssr_sol_id: WireFormat::parse_unchecked(buf), + tile_set_id: WireFormat::parse_unchecked(buf), + tile_id: WireFormat::parse_unchecked(buf), + chain_id: WireFormat::parse_unchecked(buf), + grid_point_id: WireFormat::parse_unchecked(buf), + n_faulty_los: WireFormat::parse_unchecked(buf), + faulty_los: WireFormat::parse_unchecked(buf), + } + } + } +} + +pub mod msg_ssr_flag_iono_tile_sat_los { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// List of all the LOS which are faulty + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgSsrFlagIonoTileSatLos { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// GNSS reference time of the observation used to generate the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] + pub obs_time: GpsTimeSec, + /// Number of messages in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] + pub num_msgs: u8, + /// Position of this message in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] + pub seq_num: u8, + /// SSR Solution ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] + pub ssr_sol_id: u8, + /// Unique identifier of the set this tile belongs to. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] + pub tile_set_id: u16, + /// Unique identifier of this tile in the tile set. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] + pub tile_id: u16, + /// Chain and type of flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] + pub chain_id: u8, + /// Number of faulty LOS. + #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_los")))] + pub n_faulty_los: u8, + /// List of faulty LOS + #[cfg_attr(feature = "serde", serde(rename(serialize = "faulty_los")))] + pub faulty_los: Vec, + } + + impl ConcreteMessage for MsgSsrFlagIonoTileSatLos { + const MESSAGE_TYPE: u16 = 3021; + const MESSAGE_NAME: &'static str = "MSG_SSR_FLAG_IONO_TILE_SAT_LOS"; + } + + impl SbpMessage for MsgSsrFlagIonoTileSatLos { + 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 MsgSsrFlagIonoTileSatLos { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgSsrFlagIonoTileSatLos(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgSsrFlagIonoTileSatLos { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.obs_time) + + WireFormat::len(&self.num_msgs) + + WireFormat::len(&self.seq_num) + + WireFormat::len(&self.ssr_sol_id) + + WireFormat::len(&self.tile_set_id) + + WireFormat::len(&self.tile_id) + + WireFormat::len(&self.chain_id) + + WireFormat::len(&self.n_faulty_los) + + WireFormat::len(&self.faulty_los) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.obs_time, buf); + WireFormat::write(&self.num_msgs, buf); + WireFormat::write(&self.seq_num, buf); + WireFormat::write(&self.ssr_sol_id, buf); + WireFormat::write(&self.tile_set_id, buf); + WireFormat::write(&self.tile_id, buf); + WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.n_faulty_los, buf); + WireFormat::write(&self.faulty_los, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgSsrFlagIonoTileSatLos { + sender_id: None, + obs_time: WireFormat::parse_unchecked(buf), + num_msgs: WireFormat::parse_unchecked(buf), + seq_num: WireFormat::parse_unchecked(buf), + ssr_sol_id: WireFormat::parse_unchecked(buf), + tile_set_id: WireFormat::parse_unchecked(buf), + tile_id: WireFormat::parse_unchecked(buf), + chain_id: WireFormat::parse_unchecked(buf), + n_faulty_los: WireFormat::parse_unchecked(buf), + faulty_los: WireFormat::parse_unchecked(buf), + } + } + } +} + +pub mod msg_ssr_flag_satellites { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// List of satellites which are faulty, per constellation + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgSsrFlagSatellites { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// GNSS reference time of the observation used to generate the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] + pub obs_time: GpsTimeSec, + /// Number of messages in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] + pub num_msgs: u8, + /// Position of this message in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] + pub seq_num: u8, + /// SSR Solution ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] + pub ssr_sol_id: u8, + /// Chain and type of flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] + pub chain_id: u8, + /// Constellation ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "const_id")))] + pub const_id: u8, + /// Number of faulty satellites. + #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_sats")))] + pub n_faulty_sats: u8, + /// List of faulty satellites. + #[cfg_attr(feature = "serde", serde(rename(serialize = "faulty_sats")))] + pub faulty_sats: Vec, + } + + impl ConcreteMessage for MsgSsrFlagSatellites { + const MESSAGE_TYPE: u16 = 3005; + const MESSAGE_NAME: &'static str = "MSG_SSR_FLAG_SATELLITES"; + } + + impl SbpMessage for MsgSsrFlagSatellites { + 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 MsgSsrFlagSatellites { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgSsrFlagSatellites(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgSsrFlagSatellites { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.obs_time) + + WireFormat::len(&self.num_msgs) + + WireFormat::len(&self.seq_num) + + WireFormat::len(&self.ssr_sol_id) + + WireFormat::len(&self.chain_id) + + WireFormat::len(&self.const_id) + + WireFormat::len(&self.n_faulty_sats) + + WireFormat::len(&self.faulty_sats) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.obs_time, buf); + WireFormat::write(&self.num_msgs, buf); + WireFormat::write(&self.seq_num, buf); + WireFormat::write(&self.ssr_sol_id, buf); + WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.const_id, buf); + WireFormat::write(&self.n_faulty_sats, buf); + WireFormat::write(&self.faulty_sats, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgSsrFlagSatellites { + sender_id: None, + obs_time: WireFormat::parse_unchecked(buf), + num_msgs: WireFormat::parse_unchecked(buf), + seq_num: WireFormat::parse_unchecked(buf), + ssr_sol_id: WireFormat::parse_unchecked(buf), + chain_id: WireFormat::parse_unchecked(buf), + const_id: WireFormat::parse_unchecked(buf), + n_faulty_sats: WireFormat::parse_unchecked(buf), + faulty_sats: WireFormat::parse_unchecked(buf), + } + } + } +} + +pub mod msg_ssr_flag_tropo_grid_points { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// List of grid points which are faulty + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct MsgSsrFlagTropoGridPoints { + /// The message sender_id + #[cfg_attr(feature = "serde", serde(skip_serializing))] + pub sender_id: Option, + /// GNSS reference time of the observation used to generate the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] + pub obs_time: GpsTimeSec, + /// Number of messages in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] + pub num_msgs: u8, + /// Position of this message in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] + pub seq_num: u8, + /// SSR Solution ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] + pub ssr_sol_id: u8, + /// Unique identifier of the set this tile belongs to. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] + pub tile_set_id: u16, + /// Unique identifier of this tile in the tile set. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] + pub tile_id: u16, + /// Chain and type of flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] + pub chain_id: u8, + /// Number of faulty grid points. + #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_points")))] + pub n_faulty_points: u8, + /// List of faulty grid points. + #[cfg_attr(feature = "serde", serde(rename(serialize = "faulty_points")))] + pub faulty_points: Vec, + } + + impl ConcreteMessage for MsgSsrFlagTropoGridPoints { + const MESSAGE_TYPE: u16 = 3011; + const MESSAGE_NAME: &'static str = "MSG_SSR_FLAG_TROPO_GRID_POINTS"; + } + + impl SbpMessage for MsgSsrFlagTropoGridPoints { + 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 MsgSsrFlagTropoGridPoints { + type Error = TryFromSbpError; + fn try_from(msg: Sbp) -> Result { + match msg { + Sbp::MsgSsrFlagTropoGridPoints(m) => Ok(m), + _ => Err(TryFromSbpError), + } + } + } + + impl WireFormat for MsgSsrFlagTropoGridPoints { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + as WireFormat>::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.obs_time) + + WireFormat::len(&self.num_msgs) + + WireFormat::len(&self.seq_num) + + WireFormat::len(&self.ssr_sol_id) + + WireFormat::len(&self.tile_set_id) + + WireFormat::len(&self.tile_id) + + WireFormat::len(&self.chain_id) + + WireFormat::len(&self.n_faulty_points) + + WireFormat::len(&self.faulty_points) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.obs_time, buf); + WireFormat::write(&self.num_msgs, buf); + WireFormat::write(&self.seq_num, buf); + WireFormat::write(&self.ssr_sol_id, buf); + WireFormat::write(&self.tile_set_id, buf); + WireFormat::write(&self.tile_id, buf); + WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.n_faulty_points, buf); + WireFormat::write(&self.faulty_points, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + MsgSsrFlagTropoGridPoints { + sender_id: None, + obs_time: WireFormat::parse_unchecked(buf), + num_msgs: WireFormat::parse_unchecked(buf), + seq_num: WireFormat::parse_unchecked(buf), + ssr_sol_id: WireFormat::parse_unchecked(buf), + tile_set_id: WireFormat::parse_unchecked(buf), + tile_id: WireFormat::parse_unchecked(buf), + chain_id: WireFormat::parse_unchecked(buf), + n_faulty_points: WireFormat::parse_unchecked(buf), + faulty_points: WireFormat::parse_unchecked(buf), + } + } + } +} diff --git a/rust/sbp/src/messages/mod.rs b/rust/sbp/src/messages/mod.rs index f547063d9a..fc903931b5 100644 --- a/rust/sbp/src/messages/mod.rs +++ b/rust/sbp/src/messages/mod.rs @@ -15,6 +15,7 @@ pub mod file_io; pub mod flash; pub mod gnss; pub mod imu; +pub mod integrity; pub mod linux; pub mod logging; pub mod mag; @@ -66,6 +67,12 @@ use self::flash::msg_stm_unique_id_req::MsgStmUniqueIdReq; use self::flash::msg_stm_unique_id_resp::MsgStmUniqueIdResp; use self::imu::msg_imu_aux::MsgImuAux; use self::imu::msg_imu_raw::MsgImuRaw; +use self::integrity::msg_ssr_flag_high_level::MsgSsrFlagHighLevel; +use self::integrity::msg_ssr_flag_iono_grid_point_sat_los::MsgSsrFlagIonoGridPointSatLos; +use self::integrity::msg_ssr_flag_iono_grid_points::MsgSsrFlagIonoGridPoints; +use self::integrity::msg_ssr_flag_iono_tile_sat_los::MsgSsrFlagIonoTileSatLos; +use self::integrity::msg_ssr_flag_satellites::MsgSsrFlagSatellites; +use self::integrity::msg_ssr_flag_tropo_grid_points::MsgSsrFlagTropoGridPoints; use self::linux::msg_linux_cpu_state::MsgLinuxCpuState; use self::linux::msg_linux_cpu_state_dep_a::MsgLinuxCpuStateDepA; use self::linux::msg_linux_mem_state::MsgLinuxMemState; @@ -698,6 +705,18 @@ pub enum Sbp { MsgOdometry(MsgOdometry), /// Accumulated wheeltick count message MsgWheeltick(MsgWheeltick), + /// High level integrity flags + MsgSsrFlagHighLevel(MsgSsrFlagHighLevel), + /// List of satellites which are faulty, per constellation + MsgSsrFlagSatellites(MsgSsrFlagSatellites), + /// List of grid points which are faulty + MsgSsrFlagTropoGridPoints(MsgSsrFlagTropoGridPoints), + /// List of grid points which are faulty + MsgSsrFlagIonoGridPoints(MsgSsrFlagIonoGridPoints), + /// List of all the LOS which are faulty + MsgSsrFlagIonoTileSatLos(MsgSsrFlagIonoTileSatLos), + /// List of all the grid points to satellite which are faulty + MsgSsrFlagIonoGridPointSatLos(MsgSsrFlagIonoGridPointSatLos), /// Request advice on the optimal configuration for FileIO MsgFileioConfigReq(MsgFileioConfigReq), /// Response with advice on the optimal configuration for FileIO. @@ -1698,6 +1717,36 @@ impl Sbp { msg.set_sender_id(frame.sender_id); Ok(Sbp::MsgWheeltick(msg)) } + MsgSsrFlagHighLevel::MESSAGE_TYPE => { + let mut msg = MsgSsrFlagHighLevel::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgSsrFlagHighLevel(msg)) + } + MsgSsrFlagSatellites::MESSAGE_TYPE => { + let mut msg = MsgSsrFlagSatellites::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgSsrFlagSatellites(msg)) + } + MsgSsrFlagTropoGridPoints::MESSAGE_TYPE => { + let mut msg = MsgSsrFlagTropoGridPoints::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgSsrFlagTropoGridPoints(msg)) + } + MsgSsrFlagIonoGridPoints::MESSAGE_TYPE => { + let mut msg = MsgSsrFlagIonoGridPoints::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgSsrFlagIonoGridPoints(msg)) + } + MsgSsrFlagIonoTileSatLos::MESSAGE_TYPE => { + let mut msg = MsgSsrFlagIonoTileSatLos::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgSsrFlagIonoTileSatLos(msg)) + } + MsgSsrFlagIonoGridPointSatLos::MESSAGE_TYPE => { + let mut msg = MsgSsrFlagIonoGridPointSatLos::parse(&mut frame.payload)?; + msg.set_sender_id(frame.sender_id); + Ok(Sbp::MsgSsrFlagIonoGridPointSatLos(msg)) + } MsgFileioConfigReq::MESSAGE_TYPE => { let mut msg = MsgFileioConfigReq::parse(&mut frame.payload)?; msg.set_sender_id(frame.sender_id); @@ -2037,6 +2086,12 @@ impl SbpMessage for Sbp { Sbp::MsgMagRaw(msg) => msg.message_name(), Sbp::MsgOdometry(msg) => msg.message_name(), Sbp::MsgWheeltick(msg) => msg.message_name(), + Sbp::MsgSsrFlagHighLevel(msg) => msg.message_name(), + Sbp::MsgSsrFlagSatellites(msg) => msg.message_name(), + Sbp::MsgSsrFlagTropoGridPoints(msg) => msg.message_name(), + Sbp::MsgSsrFlagIonoGridPoints(msg) => msg.message_name(), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => msg.message_name(), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => msg.message_name(), Sbp::MsgFileioConfigReq(msg) => msg.message_name(), Sbp::MsgFileioConfigResp(msg) => msg.message_name(), Sbp::MsgSbasRaw(msg) => msg.message_name(), @@ -2254,6 +2309,12 @@ impl SbpMessage for Sbp { Sbp::MsgMagRaw(msg) => msg.message_type(), Sbp::MsgOdometry(msg) => msg.message_type(), Sbp::MsgWheeltick(msg) => msg.message_type(), + Sbp::MsgSsrFlagHighLevel(msg) => msg.message_type(), + Sbp::MsgSsrFlagSatellites(msg) => msg.message_type(), + Sbp::MsgSsrFlagTropoGridPoints(msg) => msg.message_type(), + Sbp::MsgSsrFlagIonoGridPoints(msg) => msg.message_type(), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => msg.message_type(), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => msg.message_type(), Sbp::MsgFileioConfigReq(msg) => msg.message_type(), Sbp::MsgFileioConfigResp(msg) => msg.message_type(), Sbp::MsgSbasRaw(msg) => msg.message_type(), @@ -2471,6 +2532,12 @@ impl SbpMessage for Sbp { Sbp::MsgMagRaw(msg) => msg.sender_id(), Sbp::MsgOdometry(msg) => msg.sender_id(), Sbp::MsgWheeltick(msg) => msg.sender_id(), + Sbp::MsgSsrFlagHighLevel(msg) => msg.sender_id(), + Sbp::MsgSsrFlagSatellites(msg) => msg.sender_id(), + Sbp::MsgSsrFlagTropoGridPoints(msg) => msg.sender_id(), + Sbp::MsgSsrFlagIonoGridPoints(msg) => msg.sender_id(), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => msg.sender_id(), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => msg.sender_id(), Sbp::MsgFileioConfigReq(msg) => msg.sender_id(), Sbp::MsgFileioConfigResp(msg) => msg.sender_id(), Sbp::MsgSbasRaw(msg) => msg.sender_id(), @@ -2688,6 +2755,12 @@ impl SbpMessage for Sbp { Sbp::MsgMagRaw(msg) => msg.set_sender_id(new_id), Sbp::MsgOdometry(msg) => msg.set_sender_id(new_id), Sbp::MsgWheeltick(msg) => msg.set_sender_id(new_id), + Sbp::MsgSsrFlagHighLevel(msg) => msg.set_sender_id(new_id), + Sbp::MsgSsrFlagSatellites(msg) => msg.set_sender_id(new_id), + Sbp::MsgSsrFlagTropoGridPoints(msg) => msg.set_sender_id(new_id), + Sbp::MsgSsrFlagIonoGridPoints(msg) => msg.set_sender_id(new_id), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => msg.set_sender_id(new_id), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => msg.set_sender_id(new_id), Sbp::MsgFileioConfigReq(msg) => msg.set_sender_id(new_id), Sbp::MsgFileioConfigResp(msg) => msg.set_sender_id(new_id), Sbp::MsgSbasRaw(msg) => msg.set_sender_id(new_id), @@ -2905,6 +2978,12 @@ impl SbpMessage for Sbp { Sbp::MsgMagRaw(msg) => msg.encoded_len(), Sbp::MsgOdometry(msg) => msg.encoded_len(), Sbp::MsgWheeltick(msg) => msg.encoded_len(), + Sbp::MsgSsrFlagHighLevel(msg) => msg.encoded_len(), + Sbp::MsgSsrFlagSatellites(msg) => msg.encoded_len(), + Sbp::MsgSsrFlagTropoGridPoints(msg) => msg.encoded_len(), + Sbp::MsgSsrFlagIonoGridPoints(msg) => msg.encoded_len(), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => msg.encoded_len(), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => msg.encoded_len(), Sbp::MsgFileioConfigReq(msg) => msg.encoded_len(), Sbp::MsgFileioConfigResp(msg) => msg.encoded_len(), Sbp::MsgSbasRaw(msg) => msg.encoded_len(), @@ -3125,6 +3204,12 @@ impl SbpMessage for Sbp { Sbp::MsgMagRaw(msg) => msg.gps_time(), Sbp::MsgOdometry(msg) => msg.gps_time(), Sbp::MsgWheeltick(msg) => msg.gps_time(), + Sbp::MsgSsrFlagHighLevel(msg) => msg.gps_time(), + Sbp::MsgSsrFlagSatellites(msg) => msg.gps_time(), + Sbp::MsgSsrFlagTropoGridPoints(msg) => msg.gps_time(), + Sbp::MsgSsrFlagIonoGridPoints(msg) => msg.gps_time(), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => msg.gps_time(), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => msg.gps_time(), Sbp::MsgFileioConfigReq(msg) => msg.gps_time(), Sbp::MsgFileioConfigResp(msg) => msg.gps_time(), Sbp::MsgSbasRaw(msg) => msg.gps_time(), @@ -3350,6 +3435,12 @@ impl WireFormat for Sbp { Sbp::MsgMagRaw(msg) => WireFormat::write(msg, buf), Sbp::MsgOdometry(msg) => WireFormat::write(msg, buf), Sbp::MsgWheeltick(msg) => WireFormat::write(msg, buf), + Sbp::MsgSsrFlagHighLevel(msg) => WireFormat::write(msg, buf), + Sbp::MsgSsrFlagSatellites(msg) => WireFormat::write(msg, buf), + Sbp::MsgSsrFlagTropoGridPoints(msg) => WireFormat::write(msg, buf), + Sbp::MsgSsrFlagIonoGridPoints(msg) => WireFormat::write(msg, buf), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => WireFormat::write(msg, buf), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => WireFormat::write(msg, buf), Sbp::MsgFileioConfigReq(msg) => WireFormat::write(msg, buf), Sbp::MsgFileioConfigResp(msg) => WireFormat::write(msg, buf), Sbp::MsgSbasRaw(msg) => WireFormat::write(msg, buf), @@ -3567,6 +3658,12 @@ impl WireFormat for Sbp { Sbp::MsgMagRaw(msg) => WireFormat::len(msg), Sbp::MsgOdometry(msg) => WireFormat::len(msg), Sbp::MsgWheeltick(msg) => WireFormat::len(msg), + Sbp::MsgSsrFlagHighLevel(msg) => WireFormat::len(msg), + Sbp::MsgSsrFlagSatellites(msg) => WireFormat::len(msg), + Sbp::MsgSsrFlagTropoGridPoints(msg) => WireFormat::len(msg), + Sbp::MsgSsrFlagIonoGridPoints(msg) => WireFormat::len(msg), + Sbp::MsgSsrFlagIonoTileSatLos(msg) => WireFormat::len(msg), + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) => WireFormat::len(msg), Sbp::MsgFileioConfigReq(msg) => WireFormat::len(msg), Sbp::MsgFileioConfigResp(msg) => WireFormat::len(msg), Sbp::MsgSbasRaw(msg) => WireFormat::len(msg), @@ -4693,6 +4790,42 @@ impl From for Sbp { } } +impl From for Sbp { + fn from(msg: MsgSsrFlagHighLevel) -> Self { + Sbp::MsgSsrFlagHighLevel(msg) + } +} + +impl From for Sbp { + fn from(msg: MsgSsrFlagSatellites) -> Self { + Sbp::MsgSsrFlagSatellites(msg) + } +} + +impl From for Sbp { + fn from(msg: MsgSsrFlagTropoGridPoints) -> Self { + Sbp::MsgSsrFlagTropoGridPoints(msg) + } +} + +impl From for Sbp { + fn from(msg: MsgSsrFlagIonoGridPoints) -> Self { + Sbp::MsgSsrFlagIonoGridPoints(msg) + } +} + +impl From for Sbp { + fn from(msg: MsgSsrFlagIonoTileSatLos) -> Self { + Sbp::MsgSsrFlagIonoTileSatLos(msg) + } +} + +impl From for Sbp { + fn from(msg: MsgSsrFlagIonoGridPointSatLos) -> Self { + Sbp::MsgSsrFlagIonoGridPointSatLos(msg) + } +} + impl From for Sbp { fn from(msg: MsgFileioConfigReq) -> Self { Sbp::MsgFileioConfigReq(msg) diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_high_level.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_high_level.rs new file mode 100644 index 0000000000..caf7c4c59f --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_high_level.rs @@ -0,0 +1,156 @@ +// +// 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/integrity/test_MsgSsrFlagHighLevel.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_integrity_msg_ssr_flag_high_level() { + { + let mut payload = Cursor::new(vec![ + 85, 185, 11, 66, 0, 31, 180, 0, 0, 0, 3, 0, 104, 1, 0, 0, 6, 0, 10, 20, 0, 30, 0, 40, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 102, 67, + ]); + + // 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::MsgSsrFlagHighLevel(msg) => { + assert_eq!( + msg.message_type(), + 3001, + "Incorrect message type, expected 3001, 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.chain_id, 40, + "incorrect value for chain_id, expected 40, is {}", + msg.chain_id + ); + assert_eq!( + msg.corr_time.tow, 360, + "incorrect value for corr_time.tow, expected 360, is {}", + msg.corr_time.tow + ); + assert_eq!( + msg.corr_time.wn, 6, + "incorrect value for corr_time.wn, expected 6, is {}", + msg.corr_time.wn + ); + assert_eq!( + msg.obs_time.tow, 180, + "incorrect value for obs_time.tow, expected 180, is {}", + msg.obs_time.tow + ); + assert_eq!( + msg.obs_time.wn, 3, + "incorrect value for obs_time.wn, expected 3, is {}", + msg.obs_time.wn + ); + assert_eq!( + msg.reserved[0], 0, + "incorrect value for reserved[0], expected 0, is {}", + msg.reserved[0] + ); + assert_eq!( + msg.reserved[1], 0, + "incorrect value for reserved[1], expected 0, is {}", + msg.reserved[1] + ); + assert_eq!( + msg.reserved[2], 0, + "incorrect value for reserved[2], expected 0, is {}", + msg.reserved[2] + ); + assert_eq!( + msg.reserved[3], 0, + "incorrect value for reserved[3], expected 0, is {}", + msg.reserved[3] + ); + assert_eq!( + msg.reserved[4], 0, + "incorrect value for reserved[4], expected 0, is {}", + msg.reserved[4] + ); + assert_eq!( + msg.reserved[5], 0, + "incorrect value for reserved[5], expected 0, is {}", + msg.reserved[5] + ); + assert_eq!( + msg.ssr_sol_id, 10, + "incorrect value for ssr_sol_id, expected 10, is {}", + msg.ssr_sol_id + ); + assert_eq!( + msg.tile_id, 30, + "incorrect value for tile_id, expected 30, is {}", + msg.tile_id + ); + assert_eq!( + msg.tile_set_id, 20, + "incorrect value for tile_set_id, expected 20, is {}", + msg.tile_set_id + ); + assert_eq!( + msg.use_bds_sat, 3, + "incorrect value for use_bds_sat, expected 3, is {}", + msg.use_bds_sat + ); + assert_eq!( + msg.use_gal_sat, 2, + "incorrect value for use_gal_sat, expected 2, is {}", + msg.use_gal_sat + ); + assert_eq!( + msg.use_gps_sat, 1, + "incorrect value for use_gps_sat, expected 1, is {}", + msg.use_gps_sat + ); + assert_eq!( + msg.use_iono_grid_point_sat_los, 7, + "incorrect value for use_iono_grid_point_sat_los, expected 7, is {}", + msg.use_iono_grid_point_sat_los + ); + assert_eq!( + msg.use_iono_grid_points, 5, + "incorrect value for use_iono_grid_points, expected 5, is {}", + msg.use_iono_grid_points + ); + assert_eq!( + msg.use_iono_tile_sat_los, 6, + "incorrect value for use_iono_tile_sat_los, expected 6, is {}", + msg.use_iono_tile_sat_los + ); + assert_eq!( + msg.use_tropo_grid_points, 4, + "incorrect value for use_tropo_grid_points, expected 4, is {}", + msg.use_tropo_grid_points + ); + } + _ => panic!("Invalid message type! Expected a MsgSsrFlagHighLevel"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs new file mode 100644 index 0000000000..515170a7e3 --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs @@ -0,0 +1,121 @@ +// +// 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/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los() { + { + let mut payload = Cursor::new(vec![ + 85, 209, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, 4, 0, 5, 0, 6, 30, 0, 2, 10, 11, + 15, 14, 98, 148, + ]); + + // 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::MsgSsrFlagIonoGridPointSatLos(msg) => { + assert_eq!( + msg.message_type(), + 3025, + "Incorrect message type, expected 3025, 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.chain_id, 6, + "incorrect value for chain_id, expected 6, is {}", + msg.chain_id + ); + assert_eq!( + msg.faulty_los[0].constellation, 11, + "incorrect value for faulty_los[0].constellation, expected 11, is {}", + msg.faulty_los[0].constellation + ); + assert_eq!( + msg.faulty_los[0].sat_id, 10, + "incorrect value for faulty_los[0].sat_id, expected 10, is {}", + msg.faulty_los[0].sat_id + ); + assert_eq!( + msg.faulty_los[1].constellation, 14, + "incorrect value for faulty_los[1].constellation, expected 14, is {}", + msg.faulty_los[1].constellation + ); + assert_eq!( + msg.faulty_los[1].sat_id, 15, + "incorrect value for faulty_los[1].sat_id, expected 15, is {}", + msg.faulty_los[1].sat_id + ); + assert_eq!( + msg.grid_point_id, 30, + "incorrect value for grid_point_id, expected 30, is {}", + msg.grid_point_id + ); + assert_eq!( + msg.n_faulty_los, 2, + "incorrect value for n_faulty_los, expected 2, is {}", + msg.n_faulty_los + ); + assert_eq!( + msg.num_msgs, 1, + "incorrect value for num_msgs, expected 1, is {}", + msg.num_msgs + ); + assert_eq!( + msg.obs_time.tow, 180, + "incorrect value for obs_time.tow, expected 180, is {}", + msg.obs_time.tow + ); + assert_eq!( + msg.obs_time.wn, 3, + "incorrect value for obs_time.wn, expected 3, is {}", + msg.obs_time.wn + ); + assert_eq!( + msg.seq_num, 2, + "incorrect value for seq_num, expected 2, is {}", + msg.seq_num + ); + assert_eq!( + msg.ssr_sol_id, 3, + "incorrect value for ssr_sol_id, expected 3, is {}", + msg.ssr_sol_id + ); + assert_eq!( + msg.tile_id, 5, + "incorrect value for tile_id, expected 5, is {}", + msg.tile_id + ); + assert_eq!( + msg.tile_set_id, 4, + "incorrect value for tile_set_id, expected 4, is {}", + msg.tile_set_id + ); + } + _ => panic!("Invalid message type! Expected a MsgSsrFlagIonoGridPointSatLos"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs new file mode 100644 index 0000000000..643082c87d --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs @@ -0,0 +1,111 @@ +// +// 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/integrity/test_MsgSsrFlagIonoGridPoints.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points() { + { + let mut payload = Cursor::new(vec![ + 85, 199, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, + 12, 0, 53, 7, + ]); + + // 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::MsgSsrFlagIonoGridPoints(msg) => { + assert_eq!( + msg.message_type(), + 3015, + "Incorrect message type, expected 3015, 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.chain_id, 6, + "incorrect value for chain_id, expected 6, is {}", + msg.chain_id + ); + assert_eq!( + msg.faulty_points[0], 10, + "incorrect value for faulty_points[0], expected 10, is {}", + msg.faulty_points[0] + ); + assert_eq!( + msg.faulty_points[1], 11, + "incorrect value for faulty_points[1], expected 11, is {}", + msg.faulty_points[1] + ); + assert_eq!( + msg.faulty_points[2], 12, + "incorrect value for faulty_points[2], expected 12, is {}", + msg.faulty_points[2] + ); + assert_eq!( + msg.n_faulty_points, 3, + "incorrect value for n_faulty_points, expected 3, is {}", + msg.n_faulty_points + ); + assert_eq!( + msg.num_msgs, 1, + "incorrect value for num_msgs, expected 1, is {}", + msg.num_msgs + ); + assert_eq!( + msg.obs_time.tow, 180, + "incorrect value for obs_time.tow, expected 180, is {}", + msg.obs_time.tow + ); + assert_eq!( + msg.obs_time.wn, 3, + "incorrect value for obs_time.wn, expected 3, is {}", + msg.obs_time.wn + ); + assert_eq!( + msg.seq_num, 2, + "incorrect value for seq_num, expected 2, is {}", + msg.seq_num + ); + assert_eq!( + msg.ssr_sol_id, 3, + "incorrect value for ssr_sol_id, expected 3, is {}", + msg.ssr_sol_id + ); + assert_eq!( + msg.tile_id, 5, + "incorrect value for tile_id, expected 5, is {}", + msg.tile_id + ); + assert_eq!( + msg.tile_set_id, 4, + "incorrect value for tile_set_id, expected 4, is {}", + msg.tile_set_id + ); + } + _ => panic!("Invalid message type! Expected a MsgSsrFlagIonoGridPoints"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs new file mode 100644 index 0000000000..09102896f4 --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs @@ -0,0 +1,116 @@ +// +// 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/integrity/test_MsgSsrFlagIonoTileSatLos.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los() { + { + let mut payload = Cursor::new(vec![ + 85, 205, 11, 66, 0, 19, 180, 0, 0, 0, 3, 0, 1, 2, 3, 4, 0, 5, 0, 6, 2, 10, 11, 15, 14, + 239, 235, + ]); + + // 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::MsgSsrFlagIonoTileSatLos(msg) => { + assert_eq!( + msg.message_type(), + 3021, + "Incorrect message type, expected 3021, 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.chain_id, 6, + "incorrect value for chain_id, expected 6, is {}", + msg.chain_id + ); + assert_eq!( + msg.faulty_los[0].constellation, 11, + "incorrect value for faulty_los[0].constellation, expected 11, is {}", + msg.faulty_los[0].constellation + ); + assert_eq!( + msg.faulty_los[0].sat_id, 10, + "incorrect value for faulty_los[0].sat_id, expected 10, is {}", + msg.faulty_los[0].sat_id + ); + assert_eq!( + msg.faulty_los[1].constellation, 14, + "incorrect value for faulty_los[1].constellation, expected 14, is {}", + msg.faulty_los[1].constellation + ); + assert_eq!( + msg.faulty_los[1].sat_id, 15, + "incorrect value for faulty_los[1].sat_id, expected 15, is {}", + msg.faulty_los[1].sat_id + ); + assert_eq!( + msg.n_faulty_los, 2, + "incorrect value for n_faulty_los, expected 2, is {}", + msg.n_faulty_los + ); + assert_eq!( + msg.num_msgs, 1, + "incorrect value for num_msgs, expected 1, is {}", + msg.num_msgs + ); + assert_eq!( + msg.obs_time.tow, 180, + "incorrect value for obs_time.tow, expected 180, is {}", + msg.obs_time.tow + ); + assert_eq!( + msg.obs_time.wn, 3, + "incorrect value for obs_time.wn, expected 3, is {}", + msg.obs_time.wn + ); + assert_eq!( + msg.seq_num, 2, + "incorrect value for seq_num, expected 2, is {}", + msg.seq_num + ); + assert_eq!( + msg.ssr_sol_id, 3, + "incorrect value for ssr_sol_id, expected 3, is {}", + msg.ssr_sol_id + ); + assert_eq!( + msg.tile_id, 5, + "incorrect value for tile_id, expected 5, is {}", + msg.tile_id + ); + assert_eq!( + msg.tile_set_id, 4, + "incorrect value for tile_set_id, expected 4, is {}", + msg.tile_set_id + ); + } + _ => panic!("Invalid message type! Expected a MsgSsrFlagIonoTileSatLos"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_satellites.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_satellites.rs new file mode 100644 index 0000000000..afe84fac45 --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_satellites.rs @@ -0,0 +1,105 @@ +// +// 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/integrity/test_MsgSsrFlagSatellites.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_integrity_msg_ssr_flag_satellites() { + { + let mut payload = Cursor::new(vec![ + 85, 189, 11, 66, 0, 15, 180, 0, 0, 0, 3, 0, 1, 2, 3, 4, 5, 3, 10, 11, 12, 110, 165, + ]); + + // 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::MsgSsrFlagSatellites(msg) => { + assert_eq!( + msg.message_type(), + 3005, + "Incorrect message type, expected 3005, 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.chain_id, 4, + "incorrect value for chain_id, expected 4, is {}", + msg.chain_id + ); + assert_eq!( + msg.const_id, 5, + "incorrect value for const_id, expected 5, is {}", + msg.const_id + ); + assert_eq!( + msg.faulty_sats[0], 10, + "incorrect value for faulty_sats[0], expected 10, is {}", + msg.faulty_sats[0] + ); + assert_eq!( + msg.faulty_sats[1], 11, + "incorrect value for faulty_sats[1], expected 11, is {}", + msg.faulty_sats[1] + ); + assert_eq!( + msg.faulty_sats[2], 12, + "incorrect value for faulty_sats[2], expected 12, is {}", + msg.faulty_sats[2] + ); + assert_eq!( + msg.n_faulty_sats, 3, + "incorrect value for n_faulty_sats, expected 3, is {}", + msg.n_faulty_sats + ); + assert_eq!( + msg.num_msgs, 1, + "incorrect value for num_msgs, expected 1, is {}", + msg.num_msgs + ); + assert_eq!( + msg.obs_time.tow, 180, + "incorrect value for obs_time.tow, expected 180, is {}", + msg.obs_time.tow + ); + assert_eq!( + msg.obs_time.wn, 3, + "incorrect value for obs_time.wn, expected 3, is {}", + msg.obs_time.wn + ); + assert_eq!( + msg.seq_num, 2, + "incorrect value for seq_num, expected 2, is {}", + msg.seq_num + ); + assert_eq!( + msg.ssr_sol_id, 3, + "incorrect value for ssr_sol_id, expected 3, is {}", + msg.ssr_sol_id + ); + } + _ => panic!("Invalid message type! Expected a MsgSsrFlagSatellites"), + }; + let frame = sbp::to_vec(&sbp_msg).unwrap(); + assert_eq!(frame, payload.into_inner()); + } +} diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs new file mode 100644 index 0000000000..3c2c50924a --- /dev/null +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs @@ -0,0 +1,111 @@ +// +// 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/integrity/test_MsgSsrFlagTropoGridPoints.yaml by generate.py. Do not modify by hand! + +use crate::*; + +#[test] +fn test_auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points() { + { + let mut payload = Cursor::new(vec![ + 85, 195, 11, 66, 0, 21, 180, 0, 0, 0, 3, 0, 1, 2, 3, 4, 0, 5, 0, 6, 3, 10, 0, 11, 0, + 12, 0, 243, 150, + ]); + + // 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::MsgSsrFlagTropoGridPoints(msg) => { + assert_eq!( + msg.message_type(), + 3011, + "Incorrect message type, expected 3011, 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.chain_id, 6, + "incorrect value for chain_id, expected 6, is {}", + msg.chain_id + ); + assert_eq!( + msg.faulty_points[0], 10, + "incorrect value for faulty_points[0], expected 10, is {}", + msg.faulty_points[0] + ); + assert_eq!( + msg.faulty_points[1], 11, + "incorrect value for faulty_points[1], expected 11, is {}", + msg.faulty_points[1] + ); + assert_eq!( + msg.faulty_points[2], 12, + "incorrect value for faulty_points[2], expected 12, is {}", + msg.faulty_points[2] + ); + assert_eq!( + msg.n_faulty_points, 3, + "incorrect value for n_faulty_points, expected 3, is {}", + msg.n_faulty_points + ); + assert_eq!( + msg.num_msgs, 1, + "incorrect value for num_msgs, expected 1, is {}", + msg.num_msgs + ); + assert_eq!( + msg.obs_time.tow, 180, + "incorrect value for obs_time.tow, expected 180, is {}", + msg.obs_time.tow + ); + assert_eq!( + msg.obs_time.wn, 3, + "incorrect value for obs_time.wn, expected 3, is {}", + msg.obs_time.wn + ); + assert_eq!( + msg.seq_num, 2, + "incorrect value for seq_num, expected 2, is {}", + msg.seq_num + ); + assert_eq!( + msg.ssr_sol_id, 3, + "incorrect value for ssr_sol_id, expected 3, is {}", + msg.ssr_sol_id + ); + assert_eq!( + msg.tile_id, 5, + "incorrect value for tile_id, expected 5, is {}", + msg.tile_id + ); + assert_eq!( + msg.tile_set_id, 4, + "incorrect value for tile_set_id, expected 4, is {}", + msg.tile_set_id + ); + } + _ => panic!("Invalid message type! Expected a MsgSsrFlagTropoGridPoints"), + }; + 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 ef934ad494..d714748939 100644 --- a/rust/sbp/tests/integration/main.rs +++ b/rust/sbp/tests/integration/main.rs @@ -18,6 +18,12 @@ mod auto_check_sbp_ext_events_msg_ext_event; mod auto_check_sbp_file_io_msg_fileio_write_resp; mod auto_check_sbp_imu_msg_imu_aux; mod auto_check_sbp_imu_msg_imu_raw; +mod auto_check_sbp_integrity_msg_ssr_flag_high_level; +mod auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los; +mod auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points; +mod auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los; +mod auto_check_sbp_integrity_msg_ssr_flag_satellites; +mod auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points; mod auto_check_sbp_logging_msg_fwd; mod auto_check_sbp_logging_msg_log; mod auto_check_sbp_logging_msg_print_dep; diff --git a/sbpjson/elm/SbpJson.elm b/sbpjson/elm/SbpJson.elm index 73d17823d0..bc338b1565 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, 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, msgSsrGriddedCorrectionBounds, msgSsrOrbitClock, msgSsrOrbitClockBounds, msgSsrOrbitClockBoundsDegradation, 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, orbitClockBoundDegradation, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, stecSatElementIntegrity, 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, msgSsrFlagHighLevel, msgSsrFlagIonoGridPointSatLos, msgSsrFlagIonoGridPoints, msgSsrFlagIonoTileSatLos, msgSsrFlagSatellites, msgSsrFlagTropoGridPoints, msgSsrGriddedCorrection, msgSsrGriddedCorrectionBounds, msgSsrOrbitClock, msgSsrOrbitClockBounds, msgSsrOrbitClockBoundsDegradation, 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, orbitClockBoundDegradation, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, stecSatElementIntegrity, satelliteAPC, solutionInputType, statusJournalItem, subSystemReport, svAzEl, svID, trackingChannelCorrelation, trackingChannelState, troposphericDelayCorrection, troposphericDelayCorrectionNoStd, uartChannel) -- -- and you're off to the races with -- @@ -146,6 +146,12 @@ -- decodeString msgSpecan myJsonString -- decodeString msgSsrCodeBiases myJsonString -- decodeString msgSsrCodePhaseBiasesBounds myJsonString +-- decodeString msgSsrFlagHighLevel myJsonString +-- decodeString msgSsrFlagIonoGridPointSatLos myJsonString +-- decodeString msgSsrFlagIonoGridPoints myJsonString +-- decodeString msgSsrFlagIonoTileSatLos myJsonString +-- decodeString msgSsrFlagSatellites myJsonString +-- decodeString msgSsrFlagTropoGridPoints myJsonString -- decodeString msgSsrGriddedCorrection myJsonString -- decodeString msgSsrGriddedCorrectionBounds myJsonString -- decodeString msgSsrOrbitClock myJsonString @@ -619,6 +625,24 @@ module SbpJson exposing , MsgSsrCodePhaseBiasesBounds , msgSsrCodePhaseBiasesBoundsToString , msgSsrCodePhaseBiasesBounds + , MsgSsrFlagHighLevel + , msgSsrFlagHighLevelToString + , msgSsrFlagHighLevel + , MsgSsrFlagIonoGridPointSatLos + , msgSsrFlagIonoGridPointSatLosToString + , msgSsrFlagIonoGridPointSatLos + , MsgSsrFlagIonoGridPoints + , msgSsrFlagIonoGridPointsToString + , msgSsrFlagIonoGridPoints + , MsgSsrFlagIonoTileSatLos + , msgSsrFlagIonoTileSatLosToString + , msgSsrFlagIonoTileSatLos + , MsgSsrFlagSatellites + , msgSsrFlagSatellitesToString + , msgSsrFlagSatellites + , MsgSsrFlagTropoGridPoints + , msgSsrFlagTropoGridPointsToString + , msgSsrFlagTropoGridPoints , MsgSsrGriddedCorrection , msgSsrGriddedCorrectionToString , msgSsrGriddedCorrection @@ -2466,6 +2490,82 @@ type alias CodePhaseBiasesSatSig = , signalID : Int } +type alias MsgSsrFlagHighLevel = + { chainID : Int + , corrTime : GpsTimeSEC + , obsTime : GpsTimeSEC + , ssrSolID : Int + , tileID : Int + , tileSetID : Int + , useBdsSat : Int + , useGalSat : Int + , useGpsSat : Int + , useIonoGridPointSatLos : Int + , useIonoGridPoints : Int + , useIonoTileSatLos : Int + , useTropoGridPoints : Int + } + +type alias MsgSsrFlagIonoGridPointSatLos = + { chainID : Int + , faultyLos : Array SvID + , gridPointID : Int + , nFaultyLos : Int + , numMsgs : Int + , obsTime : GpsTimeSEC + , seqNum : Int + , ssrSolID : Int + , tileID : Int + , tileSetID : Int + } + +type alias MsgSsrFlagIonoGridPoints = + { chainID : Int + , faultyPoints : Array Int + , nFaultyPoints : Int + , numMsgs : Int + , obsTime : GpsTimeSEC + , seqNum : Int + , ssrSolID : Int + , tileID : Int + , tileSetID : Int + } + +type alias MsgSsrFlagIonoTileSatLos = + { chainID : Int + , faultyLos : Array SvID + , nFaultyLos : Int + , numMsgs : Int + , obsTime : GpsTimeSEC + , seqNum : Int + , ssrSolID : Int + , tileID : Int + , tileSetID : Int + } + +type alias MsgSsrFlagSatellites = + { chainID : Int + , constID : Int + , faultySats : Array Int + , nFaultySats : Int + , numMsgs : Int + , obsTime : GpsTimeSEC + , seqNum : Int + , ssrSolID : Int + } + +type alias MsgSsrFlagTropoGridPoints = + { chainID : Int + , faultyPoints : Array Int + , nFaultyPoints : Int + , numMsgs : Int + , obsTime : GpsTimeSEC + , seqNum : Int + , ssrSolID : Int + , tileID : Int + , tileSetID : Int + } + {-| STEC residuals are per space vehicle, troposphere is not., , It is typically equivalent to the QZSS CLAS Sub Type 9 messages. @@ -3527,6 +3627,24 @@ msgSsrCodeBiasesToString r = Jenc.encode 0 (encodeMsgSsrCodeBiases r) msgSsrCodePhaseBiasesBoundsToString : MsgSsrCodePhaseBiasesBounds -> String msgSsrCodePhaseBiasesBoundsToString r = Jenc.encode 0 (encodeMsgSsrCodePhaseBiasesBounds r) +msgSsrFlagHighLevelToString : MsgSsrFlagHighLevel -> String +msgSsrFlagHighLevelToString r = Jenc.encode 0 (encodeMsgSsrFlagHighLevel r) + +msgSsrFlagIonoGridPointSatLosToString : MsgSsrFlagIonoGridPointSatLos -> String +msgSsrFlagIonoGridPointSatLosToString r = Jenc.encode 0 (encodeMsgSsrFlagIonoGridPointSatLos r) + +msgSsrFlagIonoGridPointsToString : MsgSsrFlagIonoGridPoints -> String +msgSsrFlagIonoGridPointsToString r = Jenc.encode 0 (encodeMsgSsrFlagIonoGridPoints r) + +msgSsrFlagIonoTileSatLosToString : MsgSsrFlagIonoTileSatLos -> String +msgSsrFlagIonoTileSatLosToString r = Jenc.encode 0 (encodeMsgSsrFlagIonoTileSatLos r) + +msgSsrFlagSatellitesToString : MsgSsrFlagSatellites -> String +msgSsrFlagSatellitesToString r = Jenc.encode 0 (encodeMsgSsrFlagSatellites r) + +msgSsrFlagTropoGridPointsToString : MsgSsrFlagTropoGridPoints -> String +msgSsrFlagTropoGridPointsToString r = Jenc.encode 0 (encodeMsgSsrFlagTropoGridPoints r) + msgSsrGriddedCorrectionToString : MsgSsrGriddedCorrection -> String msgSsrGriddedCorrectionToString r = Jenc.encode 0 (encodeMsgSsrGriddedCorrection r) @@ -6284,6 +6402,176 @@ encodeCodePhaseBiasesSatSig x = , ("signal_id", Jenc.int x.signalID) ] +msgSsrFlagHighLevel : Jdec.Decoder MsgSsrFlagHighLevel +msgSsrFlagHighLevel = + Jpipe.decode MsgSsrFlagHighLevel + |> Jpipe.required "chain_id" Jdec.int + |> Jpipe.required "corr_time" gpsTimeSEC + |> Jpipe.required "obs_time" gpsTimeSEC + |> Jpipe.required "ssr_sol_id" Jdec.int + |> Jpipe.required "tile_id" Jdec.int + |> Jpipe.required "tile_set_id" Jdec.int + |> Jpipe.required "use_bds_sat" Jdec.int + |> Jpipe.required "use_gal_sat" Jdec.int + |> Jpipe.required "use_gps_sat" Jdec.int + |> Jpipe.required "use_iono_grid_point_sat_los" Jdec.int + |> Jpipe.required "use_iono_grid_points" Jdec.int + |> Jpipe.required "use_iono_tile_sat_los" Jdec.int + |> Jpipe.required "use_tropo_grid_points" Jdec.int + +encodeMsgSsrFlagHighLevel : MsgSsrFlagHighLevel -> Jenc.Value +encodeMsgSsrFlagHighLevel x = + Jenc.object + [ ("chain_id", Jenc.int x.chainID) + , ("corr_time", encodeGpsTimeSEC x.corrTime) + , ("obs_time", encodeGpsTimeSEC x.obsTime) + , ("ssr_sol_id", Jenc.int x.ssrSolID) + , ("tile_id", Jenc.int x.tileID) + , ("tile_set_id", Jenc.int x.tileSetID) + , ("use_bds_sat", Jenc.int x.useBdsSat) + , ("use_gal_sat", Jenc.int x.useGalSat) + , ("use_gps_sat", Jenc.int x.useGpsSat) + , ("use_iono_grid_point_sat_los", Jenc.int x.useIonoGridPointSatLos) + , ("use_iono_grid_points", Jenc.int x.useIonoGridPoints) + , ("use_iono_tile_sat_los", Jenc.int x.useIonoTileSatLos) + , ("use_tropo_grid_points", Jenc.int x.useTropoGridPoints) + ] + +msgSsrFlagIonoGridPointSatLos : Jdec.Decoder MsgSsrFlagIonoGridPointSatLos +msgSsrFlagIonoGridPointSatLos = + Jpipe.decode MsgSsrFlagIonoGridPointSatLos + |> Jpipe.required "chain_id" Jdec.int + |> Jpipe.required "faulty_los" (Jdec.array svID) + |> Jpipe.required "grid_point_id" Jdec.int + |> Jpipe.required "n_faulty_los" Jdec.int + |> Jpipe.required "num_msgs" Jdec.int + |> Jpipe.required "obs_time" gpsTimeSEC + |> Jpipe.required "seq_num" Jdec.int + |> Jpipe.required "ssr_sol_id" Jdec.int + |> Jpipe.required "tile_id" Jdec.int + |> Jpipe.required "tile_set_id" Jdec.int + +encodeMsgSsrFlagIonoGridPointSatLos : MsgSsrFlagIonoGridPointSatLos -> Jenc.Value +encodeMsgSsrFlagIonoGridPointSatLos x = + Jenc.object + [ ("chain_id", Jenc.int x.chainID) + , ("faulty_los", makeArrayEncoder encodeSvID x.faultyLos) + , ("grid_point_id", Jenc.int x.gridPointID) + , ("n_faulty_los", Jenc.int x.nFaultyLos) + , ("num_msgs", Jenc.int x.numMsgs) + , ("obs_time", encodeGpsTimeSEC x.obsTime) + , ("seq_num", Jenc.int x.seqNum) + , ("ssr_sol_id", Jenc.int x.ssrSolID) + , ("tile_id", Jenc.int x.tileID) + , ("tile_set_id", Jenc.int x.tileSetID) + ] + +msgSsrFlagIonoGridPoints : Jdec.Decoder MsgSsrFlagIonoGridPoints +msgSsrFlagIonoGridPoints = + Jpipe.decode MsgSsrFlagIonoGridPoints + |> Jpipe.required "chain_id" Jdec.int + |> Jpipe.required "faulty_points" (Jdec.array Jdec.int) + |> Jpipe.required "n_faulty_points" Jdec.int + |> Jpipe.required "num_msgs" Jdec.int + |> Jpipe.required "obs_time" gpsTimeSEC + |> Jpipe.required "seq_num" Jdec.int + |> Jpipe.required "ssr_sol_id" Jdec.int + |> Jpipe.required "tile_id" Jdec.int + |> Jpipe.required "tile_set_id" Jdec.int + +encodeMsgSsrFlagIonoGridPoints : MsgSsrFlagIonoGridPoints -> Jenc.Value +encodeMsgSsrFlagIonoGridPoints x = + Jenc.object + [ ("chain_id", Jenc.int x.chainID) + , ("faulty_points", makeArrayEncoder Jenc.int x.faultyPoints) + , ("n_faulty_points", Jenc.int x.nFaultyPoints) + , ("num_msgs", Jenc.int x.numMsgs) + , ("obs_time", encodeGpsTimeSEC x.obsTime) + , ("seq_num", Jenc.int x.seqNum) + , ("ssr_sol_id", Jenc.int x.ssrSolID) + , ("tile_id", Jenc.int x.tileID) + , ("tile_set_id", Jenc.int x.tileSetID) + ] + +msgSsrFlagIonoTileSatLos : Jdec.Decoder MsgSsrFlagIonoTileSatLos +msgSsrFlagIonoTileSatLos = + Jpipe.decode MsgSsrFlagIonoTileSatLos + |> Jpipe.required "chain_id" Jdec.int + |> Jpipe.required "faulty_los" (Jdec.array svID) + |> Jpipe.required "n_faulty_los" Jdec.int + |> Jpipe.required "num_msgs" Jdec.int + |> Jpipe.required "obs_time" gpsTimeSEC + |> Jpipe.required "seq_num" Jdec.int + |> Jpipe.required "ssr_sol_id" Jdec.int + |> Jpipe.required "tile_id" Jdec.int + |> Jpipe.required "tile_set_id" Jdec.int + +encodeMsgSsrFlagIonoTileSatLos : MsgSsrFlagIonoTileSatLos -> Jenc.Value +encodeMsgSsrFlagIonoTileSatLos x = + Jenc.object + [ ("chain_id", Jenc.int x.chainID) + , ("faulty_los", makeArrayEncoder encodeSvID x.faultyLos) + , ("n_faulty_los", Jenc.int x.nFaultyLos) + , ("num_msgs", Jenc.int x.numMsgs) + , ("obs_time", encodeGpsTimeSEC x.obsTime) + , ("seq_num", Jenc.int x.seqNum) + , ("ssr_sol_id", Jenc.int x.ssrSolID) + , ("tile_id", Jenc.int x.tileID) + , ("tile_set_id", Jenc.int x.tileSetID) + ] + +msgSsrFlagSatellites : Jdec.Decoder MsgSsrFlagSatellites +msgSsrFlagSatellites = + Jpipe.decode MsgSsrFlagSatellites + |> Jpipe.required "chain_id" Jdec.int + |> Jpipe.required "const_id" Jdec.int + |> Jpipe.required "faulty_sats" (Jdec.array Jdec.int) + |> Jpipe.required "n_faulty_sats" Jdec.int + |> Jpipe.required "num_msgs" Jdec.int + |> Jpipe.required "obs_time" gpsTimeSEC + |> Jpipe.required "seq_num" Jdec.int + |> Jpipe.required "ssr_sol_id" Jdec.int + +encodeMsgSsrFlagSatellites : MsgSsrFlagSatellites -> Jenc.Value +encodeMsgSsrFlagSatellites x = + Jenc.object + [ ("chain_id", Jenc.int x.chainID) + , ("const_id", Jenc.int x.constID) + , ("faulty_sats", makeArrayEncoder Jenc.int x.faultySats) + , ("n_faulty_sats", Jenc.int x.nFaultySats) + , ("num_msgs", Jenc.int x.numMsgs) + , ("obs_time", encodeGpsTimeSEC x.obsTime) + , ("seq_num", Jenc.int x.seqNum) + , ("ssr_sol_id", Jenc.int x.ssrSolID) + ] + +msgSsrFlagTropoGridPoints : Jdec.Decoder MsgSsrFlagTropoGridPoints +msgSsrFlagTropoGridPoints = + Jpipe.decode MsgSsrFlagTropoGridPoints + |> Jpipe.required "chain_id" Jdec.int + |> Jpipe.required "faulty_points" (Jdec.array Jdec.int) + |> Jpipe.required "n_faulty_points" Jdec.int + |> Jpipe.required "num_msgs" Jdec.int + |> Jpipe.required "obs_time" gpsTimeSEC + |> Jpipe.required "seq_num" Jdec.int + |> Jpipe.required "ssr_sol_id" Jdec.int + |> Jpipe.required "tile_id" Jdec.int + |> Jpipe.required "tile_set_id" Jdec.int + +encodeMsgSsrFlagTropoGridPoints : MsgSsrFlagTropoGridPoints -> Jenc.Value +encodeMsgSsrFlagTropoGridPoints x = + Jenc.object + [ ("chain_id", Jenc.int x.chainID) + , ("faulty_points", makeArrayEncoder Jenc.int x.faultyPoints) + , ("n_faulty_points", Jenc.int x.nFaultyPoints) + , ("num_msgs", Jenc.int x.numMsgs) + , ("obs_time", encodeGpsTimeSEC x.obsTime) + , ("seq_num", Jenc.int x.seqNum) + , ("ssr_sol_id", Jenc.int x.ssrSolID) + , ("tile_id", Jenc.int x.tileID) + , ("tile_set_id", Jenc.int x.tileSetID) + ] + msgSsrGriddedCorrection : Jdec.Decoder MsgSsrGriddedCorrection msgSsrGriddedCorrection = Jpipe.decode MsgSsrGriddedCorrection diff --git a/sbpjson/typescript/SbpJson.ts b/sbpjson/typescript/SbpJson.ts index cfac2a5462..7da44b1fcf 100644 --- a/sbpjson/typescript/SbpJson.ts +++ b/sbpjson/typescript/SbpJson.ts @@ -1,6 +1,6 @@ // To parse this data: // -// 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, MsgSsrGriddedCorrectionBounds, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, MsgSsrOrbitClockBoundsDegradation, 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, OrbitClockBoundDegradation, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, STECSatElementIntegrity, 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, MsgSsrFlagHighLevel, MsgSsrFlagIonoGridPointSatLos, MsgSsrFlagIonoGridPoints, MsgSsrFlagIonoTileSatLos, MsgSsrFlagSatellites, MsgSsrFlagTropoGridPoints, MsgSsrGriddedCorrection, MsgSsrGriddedCorrectionBounds, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, MsgSsrOrbitClockBoundsDegradation, 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, OrbitClockBoundDegradation, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, STECSatElementIntegrity, SatelliteAPC, SolutionInputType, StatusJournalItem, SubSystemReport, SvAzEl, SvID, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel } from "./file"; // // const acqSvProfile = Convert.toAcqSvProfile(json); // const almanacCommonContent = Convert.toAlmanacCommonContent(json); @@ -139,6 +139,12 @@ // const msgSpecan = Convert.toMsgSpecan(json); // const msgSsrCodeBiases = Convert.toMsgSsrCodeBiases(json); // const msgSsrCodePhaseBiasesBounds = Convert.toMsgSsrCodePhaseBiasesBounds(json); +// const msgSsrFlagHighLevel = Convert.toMsgSsrFlagHighLevel(json); +// const msgSsrFlagIonoGridPointSatLos = Convert.toMsgSsrFlagIonoGridPointSatLos(json); +// const msgSsrFlagIonoGridPoints = Convert.toMsgSsrFlagIonoGridPoints(json); +// const msgSsrFlagIonoTileSatLos = Convert.toMsgSsrFlagIonoTileSatLos(json); +// const msgSsrFlagSatellites = Convert.toMsgSsrFlagSatellites(json); +// const msgSsrFlagTropoGridPoints = Convert.toMsgSsrFlagTropoGridPoints(json); // const msgSsrGriddedCorrection = Convert.toMsgSsrGriddedCorrection(json); // const msgSsrGriddedCorrectionBounds = Convert.toMsgSsrGriddedCorrectionBounds(json); // const msgSsrOrbitClock = Convert.toMsgSsrOrbitClock(json); @@ -1991,6 +1997,82 @@ export interface CodePhaseBiasesSatSig { signal_id: number; } +export interface MsgSsrFlagHighLevel { + chain_id: number; + corr_time: GpsTimeSEC; + obs_time: GpsTimeSEC; + ssr_sol_id: number; + tile_id: number; + tile_set_id: number; + use_bds_sat: number; + use_gal_sat: number; + use_gps_sat: number; + use_iono_grid_point_sat_los: number; + use_iono_grid_points: number; + use_iono_tile_sat_los: number; + use_tropo_grid_points: number; +} + +export interface MsgSsrFlagIonoGridPointSatLos { + chain_id: number; + faulty_los: SvID[]; + grid_point_id: number; + n_faulty_los: number; + num_msgs: number; + obs_time: GpsTimeSEC; + seq_num: number; + ssr_sol_id: number; + tile_id: number; + tile_set_id: number; +} + +export interface MsgSsrFlagIonoGridPoints { + chain_id: number; + faulty_points: number[]; + n_faulty_points: number; + num_msgs: number; + obs_time: GpsTimeSEC; + seq_num: number; + ssr_sol_id: number; + tile_id: number; + tile_set_id: number; +} + +export interface MsgSsrFlagIonoTileSatLos { + chain_id: number; + faulty_los: SvID[]; + n_faulty_los: number; + num_msgs: number; + obs_time: GpsTimeSEC; + seq_num: number; + ssr_sol_id: number; + tile_id: number; + tile_set_id: number; +} + +export interface MsgSsrFlagSatellites { + chain_id: number; + const_id: number; + faulty_sats: number[]; + n_faulty_sats: number; + num_msgs: number; + obs_time: GpsTimeSEC; + seq_num: number; + ssr_sol_id: number; +} + +export interface MsgSsrFlagTropoGridPoints { + chain_id: number; + faulty_points: number[]; + n_faulty_points: number; + num_msgs: number; + obs_time: GpsTimeSEC; + seq_num: number; + ssr_sol_id: number; + tile_id: number; + tile_set_id: number; +} + /** * STEC residuals are per space vehicle, troposphere is not., * , @@ -3766,6 +3848,54 @@ export class Convert { return JSON.stringify(uncast(value, r("MsgSsrCodePhaseBiasesBounds")), null, 2); } + public static toMsgSsrFlagHighLevel(json: string): MsgSsrFlagHighLevel { + return cast(JSON.parse(json), r("MsgSsrFlagHighLevel")); + } + + public static msgSsrFlagHighLevelToJson(value: MsgSsrFlagHighLevel): string { + return JSON.stringify(uncast(value, r("MsgSsrFlagHighLevel")), null, 2); + } + + public static toMsgSsrFlagIonoGridPointSatLos(json: string): MsgSsrFlagIonoGridPointSatLos { + return cast(JSON.parse(json), r("MsgSsrFlagIonoGridPointSatLos")); + } + + public static msgSsrFlagIonoGridPointSatLosToJson(value: MsgSsrFlagIonoGridPointSatLos): string { + return JSON.stringify(uncast(value, r("MsgSsrFlagIonoGridPointSatLos")), null, 2); + } + + public static toMsgSsrFlagIonoGridPoints(json: string): MsgSsrFlagIonoGridPoints { + return cast(JSON.parse(json), r("MsgSsrFlagIonoGridPoints")); + } + + public static msgSsrFlagIonoGridPointsToJson(value: MsgSsrFlagIonoGridPoints): string { + return JSON.stringify(uncast(value, r("MsgSsrFlagIonoGridPoints")), null, 2); + } + + public static toMsgSsrFlagIonoTileSatLos(json: string): MsgSsrFlagIonoTileSatLos { + return cast(JSON.parse(json), r("MsgSsrFlagIonoTileSatLos")); + } + + public static msgSsrFlagIonoTileSatLosToJson(value: MsgSsrFlagIonoTileSatLos): string { + return JSON.stringify(uncast(value, r("MsgSsrFlagIonoTileSatLos")), null, 2); + } + + public static toMsgSsrFlagSatellites(json: string): MsgSsrFlagSatellites { + return cast(JSON.parse(json), r("MsgSsrFlagSatellites")); + } + + public static msgSsrFlagSatellitesToJson(value: MsgSsrFlagSatellites): string { + return JSON.stringify(uncast(value, r("MsgSsrFlagSatellites")), null, 2); + } + + public static toMsgSsrFlagTropoGridPoints(json: string): MsgSsrFlagTropoGridPoints { + return cast(JSON.parse(json), r("MsgSsrFlagTropoGridPoints")); + } + + public static msgSsrFlagTropoGridPointsToJson(value: MsgSsrFlagTropoGridPoints): string { + return JSON.stringify(uncast(value, r("MsgSsrFlagTropoGridPoints")), null, 2); + } + public static toMsgSsrGriddedCorrection(json: string): MsgSsrGriddedCorrection { return cast(JSON.parse(json), r("MsgSsrGriddedCorrection")); } @@ -5327,6 +5457,76 @@ const typeMap: any = { { json: "sat_id", js: "sat_id", typ: 0 }, { json: "signal_id", js: "signal_id", typ: 0 }, ], "any"), + "MsgSsrFlagHighLevel": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, + { json: "corr_time", js: "corr_time", typ: r("GpsTimeSEC") }, + { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, + { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, + { json: "tile_id", js: "tile_id", typ: 0 }, + { json: "tile_set_id", js: "tile_set_id", typ: 0 }, + { json: "use_bds_sat", js: "use_bds_sat", typ: 0 }, + { json: "use_gal_sat", js: "use_gal_sat", typ: 0 }, + { json: "use_gps_sat", js: "use_gps_sat", typ: 0 }, + { json: "use_iono_grid_point_sat_los", js: "use_iono_grid_point_sat_los", typ: 0 }, + { json: "use_iono_grid_points", js: "use_iono_grid_points", typ: 0 }, + { json: "use_iono_tile_sat_los", js: "use_iono_tile_sat_los", typ: 0 }, + { json: "use_tropo_grid_points", js: "use_tropo_grid_points", typ: 0 }, + ], "any"), + "MsgSsrFlagIonoGridPointSatLos": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, + { json: "faulty_los", js: "faulty_los", typ: a(r("SvID")) }, + { json: "grid_point_id", js: "grid_point_id", typ: 0 }, + { json: "n_faulty_los", js: "n_faulty_los", typ: 0 }, + { json: "num_msgs", js: "num_msgs", typ: 0 }, + { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, + { json: "seq_num", js: "seq_num", typ: 0 }, + { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, + { json: "tile_id", js: "tile_id", typ: 0 }, + { json: "tile_set_id", js: "tile_set_id", typ: 0 }, + ], "any"), + "MsgSsrFlagIonoGridPoints": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, + { json: "faulty_points", js: "faulty_points", typ: a(0) }, + { json: "n_faulty_points", js: "n_faulty_points", typ: 0 }, + { json: "num_msgs", js: "num_msgs", typ: 0 }, + { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, + { json: "seq_num", js: "seq_num", typ: 0 }, + { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, + { json: "tile_id", js: "tile_id", typ: 0 }, + { json: "tile_set_id", js: "tile_set_id", typ: 0 }, + ], "any"), + "MsgSsrFlagIonoTileSatLos": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, + { json: "faulty_los", js: "faulty_los", typ: a(r("SvID")) }, + { json: "n_faulty_los", js: "n_faulty_los", typ: 0 }, + { json: "num_msgs", js: "num_msgs", typ: 0 }, + { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, + { json: "seq_num", js: "seq_num", typ: 0 }, + { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, + { json: "tile_id", js: "tile_id", typ: 0 }, + { json: "tile_set_id", js: "tile_set_id", typ: 0 }, + ], "any"), + "MsgSsrFlagSatellites": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, + { json: "const_id", js: "const_id", typ: 0 }, + { json: "faulty_sats", js: "faulty_sats", typ: a(0) }, + { json: "n_faulty_sats", js: "n_faulty_sats", typ: 0 }, + { json: "num_msgs", js: "num_msgs", typ: 0 }, + { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, + { json: "seq_num", js: "seq_num", typ: 0 }, + { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, + ], "any"), + "MsgSsrFlagTropoGridPoints": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, + { json: "faulty_points", js: "faulty_points", typ: a(0) }, + { json: "n_faulty_points", js: "n_faulty_points", typ: 0 }, + { json: "num_msgs", js: "num_msgs", typ: 0 }, + { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, + { json: "seq_num", js: "seq_num", typ: 0 }, + { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, + { json: "tile_id", js: "tile_id", typ: 0 }, + { json: "tile_set_id", js: "tile_set_id", typ: 0 }, + ], "any"), "MsgSsrGriddedCorrection": o([ { json: "header", js: "header", typ: r("GriddedCorrectionHeader") }, { json: "index", js: "index", typ: 0 }, From b2b62aeffc10cea4f9f822a46623a8962693b27b Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 12:02:32 -0400 Subject: [PATCH 03/11] fix typos --- .../yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml | 2 +- .../sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml | 2 +- .../swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml index 7164ae9659..8c232940fc 100644 --- a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagHighLevel.yaml @@ -33,7 +33,7 @@ tests: name: MsgSsrFlagHighLevel msg_type: '3001' raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "corr_time": {"tow": 360, "wn": 6}, "ssr_sol_id": 10, "tile_set_id": 20, - "tile_id": 30, "chain_id": 40, "use_gps_sat": 1, "use_gal_sat": 3, "reserved": [0,0,0,0,0,0], + "tile_id": 30, "chain_id": 40, "use_gps_sat": 1, "use_gal_sat": 2, "use_bds_sat": 3, "reserved": [0,0,0,0,0,0], "use_tropo_grid_points": 4, "use_iono_grid_points": 5, "use_iono_tile_sat_los": 6, "use_iono_grid_point_sat_los": 7, "preamble": 85, "msg_type": 3001, "sender": 66, "length": 31, "payload": "tAAAAAMAaAEAAAYAChQAHgAoAQIDAAAAAAAABAUGBw==", "crc": 17254}' raw_packet: VbkLQgAftAAAAAMAaAEAAAYAChQAHgAoAQIDAAAAAAAABAUGB2ZD diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml index 581553b026..855e18c0c9 100644 --- a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml @@ -25,7 +25,7 @@ tests: name: MsgSsrFlagIonoGridPointSatLos msg_type: '3025' raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, - "tile_id": 5, "chain_id": 6, "grid_point_id": 30, "n_faulty_los": 3, "faulty_los": [{"satId": 10, + "tile_id": 5, "chain_id": 6, "grid_point_id": 30, "n_faulty_los": 2, "faulty_los": [{"satId": 10, "constellation": 11}, {"satId": 15, "constellation": 14}], "preamble": 85, "msg_type": 3025, "sender": 66, "length": 21, "payload": "tAAAAAMAAQIDBAAFAAYeAAIKCw8O", "crc": 37986}' raw_packet: VdELQgAVtAAAAAMAAQIDBAAFAAYeAAIKCw8OYpQ= diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml index 59c83cb344..1f3b387e1a 100644 --- a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml @@ -24,7 +24,7 @@ tests: name: MsgSsrFlagIonoTileSatLos msg_type: '3021' raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, - "tile_id": 5, "chain_id": 6, "n_faulty_los": 3, "faulty_los": [{"satId": 10, "constellation": 11}, {"satId": 15, + "tile_id": 5, "chain_id": 6, "n_faulty_los": 2, "faulty_los": [{"satId": 10, "constellation": 11}, {"satId": 15, "constellation": 14}], "preamble": 85, "msg_type": 3021, "sender": 66, "length": 19, "payload": "tAAAAAMAAQIDBAAFAAYCCgsPDg==", "crc": 60399}' raw_packet: Vc0LQgATtAAAAAMAAQIDBAAFAAYCCgsPDu/r From 1f51f9ffbc739f96168f2c9c7eb833bedf1dea86 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 12:02:58 -0400 Subject: [PATCH 04/11] manually add include --- javascript/sbp/msg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/javascript/sbp/msg.js b/javascript/sbp/msg.js index 039344028b..ed680ec013 100644 --- a/javascript/sbp/msg.js +++ b/javascript/sbp/msg.js @@ -95,6 +95,7 @@ var sbpImports = { flash: require('./flash.js'), gnss: require('./gnss.js'), imu: require('./imu.js'), + integrity: require('./integrity.js'), linux: require('./linux.js'), logging: require('./logging.js'), mag: require('./mag.js'), From f0d2398f4ae82bd45512447f6803d23984cc711d Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 12:03:10 -0400 Subject: [PATCH 05/11] make javascript --- javascript/sbp.bundle.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/javascript/sbp.bundle.js b/javascript/sbp.bundle.js index e7c3e14e2f..04e7392e58 100644 --- a/javascript/sbp.bundle.js +++ b/javascript/sbp.bundle.js @@ -1,15 +1,15 @@ -!function(e){var t={};function r(p){if(t[p])return t[p].exports;var o=t[p]={i:p,l:!1,exports:{}};return e[p].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,p){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:p})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var p=Object.create(null);if(r.r(p),Object.defineProperty(p,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(p,o,function(t){return e[t]}.bind(null,o));return p},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=24)}([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="GnssSignal",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(p.prototype)).messageType="GnssSignal",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("sat").uint8("code"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sat","writeUInt8",1]),i.prototype.fieldSpec.push(["code","writeUInt8",1]);var s=function(e,t){return p.call(this,e),this.messageType="SvId",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(p.prototype)).messageType="SvId",s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("satId").uint8("constellation"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["satId","writeUInt8",1]),s.prototype.fieldSpec.push(["constellation","writeUInt8",1]);var n=function(e,t){return p.call(this,e),this.messageType="GnssSignalDep",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(p.prototype)).messageType="GnssSignalDep",n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("sat").uint8("code").uint8("reserved"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sat","writeUInt16LE",2]),n.prototype.fieldSpec.push(["code","writeUInt8",1]),n.prototype.fieldSpec.push(["reserved","writeUInt8",1]);var a=function(e,t){return p.call(this,e),this.messageType="GPSTimeDep",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(p.prototype)).messageType="GPSTimeDep",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").uint16("wn"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var l=function(e,t){return p.call(this,e),this.messageType="GPSTimeSec",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(p.prototype)).messageType="GPSTimeSec",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").uint16("wn"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var c=function(e,t){return p.call(this,e),this.messageType="GPSTime",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(p.prototype)).messageType="GPSTime",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("tow").int32("ns_residual").uint16("wn"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),c.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),c.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var u=function(e,t){return p.call(this,e),this.messageType="CarrierPhase",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(p.prototype)).messageType="CarrierPhase",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["i","writeInt32LE",4]),u.prototype.fieldSpec.push(["f","writeUInt8",1]),e.exports={GnssSignal:i,SvId:s,GnssSignalDep:n,GPSTimeDep:a,GPSTimeSec:l,GPSTime:c,CarrierPhase:u}},function(e,t,r){t.UINT32=r(44),t.UINT64=r(45)},function(e,t,r){(function(t){var p=r(43),o=(r(3),r(1).UINT64),i=function(e,r,p,o){var i=new t(e);return i[r](p,o||0),i};function s(e){return this.messageType="raw",this.sbp=e||{},this.fields={},this}o.prototype.toJSON=function(){return this.toString()},s.prototype.fieldSpec=[],s.prototype.payloadToBuffer=function(e,r){var i=[];for(var s in e=e||this.fieldSpec,r=r||this.fields,e){var n=e[s],a=n[0],l=n[1],c=function(e){return"function"==typeof e?e.apply(this):e}.bind(this);if("string"==typeof l&&0===l.indexOf("write")){var u=c(n[2]);if("writeUInt64LE"===l){p(r[a]instanceof o,"uint64 type must be represented by cuint.UINT64");var y=r[a].clone().shiftRight(32).and(new o(4294967295,0)).toNumber(),h=r[a].clone().and(new o(4294967295,0)).toNumber();let e=new t(8);e.writeUInt32LE(h),e.writeUInt32LE(y,4),i.push(e)}else{let e=new t(u);e[l](r[a],0),i.push(e)}}else if("string"===l){let e=new t(r[a].length);e.write(r[a],0,"utf8"),i.push(e)}else if("array"===l){var f=n[2];for(var d in r[a]){var _=r[a][d];if(Array.isArray(f))i=i.concat(this.payloadToBuffer(f,_));else{let e=new t(c(n[3]));e[f](_,0),i.push(e)}}}else i=i.concat(this.payloadToBuffer(l,r[a]))}return t.concat(i)},s.prototype.getLengthBuffer=function(){return i(1,"writeUInt8",this.length||this.sbp.length,0)},s.prototype.getSenderBuffer=function(){return i(2,"writeUInt16LE",this.sender||this.sbp.sender,0)},s.prototype.getPreambleBuffer=function(){return i(1,"writeUInt8",this.preamble||this.sbp.preamble,0)},s.prototype.getMsgTypeBuffer=function(){return i(2,"writeUInt16LE",this.msg_type||this.sbp.msg_type,0)},s.prototype.toBuffer=function(){var e=this.payloadToBuffer(),r=i(2,"writeUInt16LE",this.crc||this.sbp.crc,0),p=[this.getPreambleBuffer(),this.getMsgTypeBuffer(),this.getSenderBuffer(),this.getLengthBuffer()];return t.concat(p.concat(e).concat(r))},s.prototype.toJSON=function(){var e={};return Object.keys(this.sbp).forEach(function(r){this.sbp[r]instanceof t?e[r]=this.sbp[r].toString("base64"):e[r]=this.sbp[r]}.bind(this)),Object.keys(this.fields).forEach(function(t){e[t]=this.fields[t]}.bind(this)),e},s.prototype.toBase64=function(){return this.toBuffer().toString("base64")},e.exports=s}).call(this,r(8).Buffer)},function(e,t,r){(function(t){for(var r=4294967296,p=[],o=0;o<256;o++)p[o]=(o>15?"":"0")+o.toString(16);var i=e.exports=function(e,r){e instanceof t?(this.buffer=e,this.offset=r||0):"[object Uint8Array]"==Object.prototype.toString.call(e)?(this.buffer=new t(e),this.offset=r||0):(this.buffer=this.buffer||new t(8),this.offset=0,this.setValue.apply(this,arguments))};i.MAX_INT=Math.pow(2,53),i.MIN_INT=-Math.pow(2,53),i.prototype={constructor:i,_2scomp:function(){for(var e=this.buffer,t=this.offset,r=1,p=t+7;p>=t;p--){var o=(255^e[p])+r;e[p]=255&o,r=o>>8}},setValue:function(e,t){var p=!1;if(1==arguments.length)if("number"==typeof e){if(p=e<0,t=(e=Math.abs(e))%r,(e/=r)>r)throw new RangeError(e+" is outside Int64 range");e|=0}else{if("string"!=typeof e)throw new Error(e+" must be a Number or String");t=(e=(e+"").replace(/^0x/,"")).substr(-8),e=e.length>8?e.substr(0,e.length-8):"",e=parseInt(e,16),t=parseInt(t,16)}for(var o=this.buffer,i=this.offset,s=7;s>=0;s--)o[i+s]=255&t,t=4==s?e:t>>>8;p&&this._2scomp()},toNumber:function(e){for(var t=this.buffer,r=this.offset,p=128&t[r],o=0,s=1,n=7,a=1;n>=0;n--,a*=256){var l=t[r+n];p&&(s=(l=(255^l)+s)>>8,l&=255),o+=l*a}return!e&&o>=i.MAX_INT?p?-1/0:1/0:p?-o:o},valueOf:function(){return this.toNumber(!1)},toString:function(e){return this.valueOf().toString(e||10)},toOctetString:function(e){for(var t=new Array(8),r=this.buffer,o=this.offset,i=0;i<8;i++)t[i]=p[r[o+i]];return t.join(e||"")},toBuffer:function(e){if(e&&0===this.offset)return this.buffer;var r=new t(8);return this.buffer.copy(r,0,this.offset,this.offset+8),r},copy:function(e,t){this.buffer.copy(e,t||0,this.offset,this.offset+8)},compare:function(e){if((128&this.buffer[this.offset])!=(128&e.buffer[e.offset]))return e.buffer[e.offset]-this.buffer[this.offset];for(var t=0;t<8;t++)if(this.buffer[this.offset+t]!==e.buffer[e.offset+t])return this.buffer[this.offset+t]-e.buffer[e.offset+t];return 0},equals:function(e){return 0===this.compare(e)},inspect:function(){return"[Int64 value:"+this+" octets:"+this.toOctetString(" ")+"]"}}}).call(this,r(8).Buffer)},function(e,t,r){(function(t){var p=r(17).Parser;p.prototype.uint64=function(e,t){return this.setNextParser("uint64",e,Object.assign({},t,{formatter:function(e){var t=r(1).UINT64,p=buffer.readUInt32LE(offset);offset+=4;var o=buffer.readUInt32LE(offset);return offset+=4,new t(p,o)}}))},p.prototype.compile=function(){var e=this.getCode();this.compiled=function(p,o,i){return"undefined"!=typeof window&&void 0===window.Buffer&&(window.Buffer=t),new Function("buffer","callback","constructorFn","require",e).call(this,p,o,i,(function(e){if("cuint"===e)return r(1);throw new Error("Unknown module required: "+e)}))}},e.exports=p}).call(this,r(8).Buffer)},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},function(e,t,r){"use strict";var p=r(11),o=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};e.exports=u;var i=r(10);i.inherits=r(6);var s=r(19),n=r(15);i.inherits(u,s);for(var a=o(n.prototype),l=0;l15?"":"0")+o.toString(16);var i=e.exports=function(e,p){e instanceof t?(this.buffer=e,this.offset=p||0):"[object Uint8Array]"==Object.prototype.toString.call(e)?(this.buffer=new t(e),this.offset=p||0):(this.buffer=this.buffer||new t(8),this.offset=0,this.setValue.apply(this,arguments))};i.MAX_INT=Math.pow(2,53),i.MIN_INT=-Math.pow(2,53),i.prototype={constructor:i,_2scomp:function(){for(var e=this.buffer,t=this.offset,p=1,r=t+7;r>=t;r--){var o=(255^e[r])+p;e[r]=255&o,p=o>>8}},setValue:function(e,t){var r=!1;if(1==arguments.length)if("number"==typeof e){if(r=e<0,t=(e=Math.abs(e))%p,(e/=p)>p)throw new RangeError(e+" is outside Int64 range");e|=0}else{if("string"!=typeof e)throw new Error(e+" must be a Number or String");t=(e=(e+"").replace(/^0x/,"")).substr(-8),e=e.length>8?e.substr(0,e.length-8):"",e=parseInt(e,16),t=parseInt(t,16)}for(var o=this.buffer,i=this.offset,s=7;s>=0;s--)o[i+s]=255&t,t=4==s?e:t>>>8;r&&this._2scomp()},toNumber:function(e){for(var t=this.buffer,p=this.offset,r=128&t[p],o=0,s=1,n=7,a=1;n>=0;n--,a*=256){var l=t[p+n];r&&(s=(l=(255^l)+s)>>8,l&=255),o+=l*a}return!e&&o>=i.MAX_INT?r?-1/0:1/0:r?-o:o},valueOf:function(){return this.toNumber(!1)},toString:function(e){return this.valueOf().toString(e||10)},toOctetString:function(e){for(var t=new Array(8),p=this.buffer,o=this.offset,i=0;i<8;i++)t[i]=r[p[o+i]];return t.join(e||"")},toBuffer:function(e){if(e&&0===this.offset)return this.buffer;var p=new t(8);return this.buffer.copy(p,0,this.offset,this.offset+8),p},copy:function(e,t){this.buffer.copy(e,t||0,this.offset,this.offset+8)},compare:function(e){if((128&this.buffer[this.offset])!=(128&e.buffer[e.offset]))return e.buffer[e.offset]-this.buffer[this.offset];for(var t=0;t<8;t++)if(this.buffer[this.offset+t]!==e.buffer[e.offset+t])return this.buffer[this.offset+t]-e.buffer[e.offset+t];return 0},equals:function(e){return 0===this.compare(e)},inspect:function(){return"[Int64 value:"+this+" octets:"+this.toOctetString(" ")+"]"}}}).call(this,p(8).Buffer)},function(e,t,p){(function(t){var r=p(17).Parser;r.prototype.uint64=function(e,t){return this.setNextParser("uint64",e,Object.assign({},t,{formatter:function(e){var t=p(1).UINT64,r=buffer.readUInt32LE(offset);offset+=4;var o=buffer.readUInt32LE(offset);return offset+=4,new t(r,o)}}))},r.prototype.compile=function(){var e=this.getCode();this.compiled=function(r,o,i){return"undefined"!=typeof window&&void 0===window.Buffer&&(window.Buffer=t),new Function("buffer","callback","constructorFn","require",e).call(this,r,o,i,(function(e){if("cuint"===e)return p(1);throw new Error("Unknown module required: "+e)}))}},e.exports=r}).call(this,p(8).Buffer)},function(e,t){var p;p=function(){return this}();try{p=p||new Function("return this")()}catch(e){"object"==typeof window&&(p=window)}e.exports=p},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var p=function(){};p.prototype=t.prototype,e.prototype=new p,e.prototype.constructor=e}},function(e,t,p){"use strict";var r=p(11),o=Object.keys||function(e){var t=[];for(var p in e)t.push(p);return t};e.exports=c;var i=p(10);i.inherits=p(6);var s=p(19),n=p(15);i.inherits(c,s);for(var a=o(n.prototype),l=0;l * @license MIT */ -var p=r(25),o=r(26),i=r(16);function s(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function n(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var p=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return B(e).length;default:if(p)return F(e).length;t=(""+t).toLowerCase(),p=!0}}function d(e,t,r){var p=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,r);case"utf8":case"utf-8":return T(this,t,r);case"ascii":return U(this,t,r);case"latin1":case"binary":return M(this,t,r);case"base64":return L(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,r);default:if(p)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),p=!0}}function _(e,t,r){var p=e[t];e[t]=e[r],e[r]=p}function S(e,t,r,p,o){if(0===e.length)return-1;if("string"==typeof r?(p=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=a.from(t,p)),a.isBuffer(t))return 0===t.length?-1:g(e,t,r,p,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,p,o);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,p,o){var i,s=1,n=e.length,a=t.length;if(void 0!==p&&("ucs2"===(p=String(p).toLowerCase())||"ucs-2"===p||"utf16le"===p||"utf-16le"===p)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,r/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var c=-1;for(i=r;in&&(r=n-a),i=r;i>=0;i--){for(var u=!0,y=0;yo&&(p=o):p=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");p>i/2&&(p=i/2);for(var s=0;s>8,o=r%256,i.push(o),i.push(p);return i}(t,e.length-r),e,r,p)}function L(e,t,r){return 0===t&&r===e.length?p.fromByteArray(e):p.fromByteArray(e.slice(t,r))}function T(e,t,r){r=Math.min(e.length,r);for(var p=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+u<=r)switch(u){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(c=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(c=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(c=a)}null===c?(c=65533,u=1):c>65535&&(c-=65536,p.push(c>>>10&1023|55296),c=56320|1023&c),p.push(c),o+=u}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r="",p=0;for(;p0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},a.prototype.compare=function(e,t,r,p,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===p&&(p=0),void 0===o&&(o=this.length),t<0||r>e.length||p<0||o>this.length)throw new RangeError("out of range index");if(p>=o&&t>=r)return 0;if(p>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(p>>>=0),s=(r>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(p,o),c=e.slice(t,r),u=0;uo)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");p||(p="utf8");for(var i=!1;;)switch(p){case"hex":return w(this,e,t,r);case"utf8":case"utf-8":return E(this,e,t,r);case"ascii":return m(this,e,t,r);case"latin1":case"binary":return b(this,e,t,r);case"base64":return I(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+p);p=(""+p).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function U(e,t,r){var p="";r=Math.min(e.length,r);for(var o=t;op)&&(r=p);for(var o="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,r,p,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function C(e,t,r,p){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-r,2);o>>8*(p?o:1-o)}function R(e,t,r,p){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-r,4);o>>8*(p?o:3-o)&255}function P(e,t,r,p,o,i){if(r+p>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function N(e,t,r,p,i){return i||P(e,0,r,4),o.write(e,t,r,p,23,4),r+4}function j(e,t,r,p,i){return i||P(e,0,r,8),o.write(e,t,r,p,52,8),r+8}a.prototype.slice=function(e,t){var r,p=this.length;if((e=~~e)<0?(e+=p)<0&&(e=0):e>p&&(e=p),(t=void 0===t?p:~~t)<0?(t+=p)<0&&(t=0):t>p&&(t=p),t0&&(o*=256);)p+=this[e+--t]*o;return p},a.prototype.readUInt8=function(e,t){return t||G(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||G(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||G(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||G(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||G(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||G(e,t,this.length);for(var p=this[e],o=1,i=0;++i=(o*=128)&&(p-=Math.pow(2,8*t)),p},a.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||G(e,t,this.length);for(var p=t,o=1,i=this[e+--p];p>0&&(o*=256);)i+=this[e+--p]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||G(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||G(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){t||G(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return t||G(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||G(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,r,p){(e=+e,t|=0,r|=0,p)||A(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+r},a.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,r,p){if(e=+e,t|=0,!p){var o=Math.pow(2,8*r-1);A(this,e,t,r,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+r},a.prototype.writeIntBE=function(e,t,r,p){if(e=+e,t|=0,!p){var o=Math.pow(2,8*r-1);A(this,e,t,r,o-1,-o)}var i=r-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,r){return N(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return N(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return j(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return j(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,p){if(r||(r=0),p||0===p||(p=this.length),t>=e.length&&(t=e.length),t||(t=0),p>0&&p=this.length)throw new RangeError("sourceStart out of bounds");if(p<0)throw new RangeError("sourceEnd out of bounds");p>this.length&&(p=this.length),e.length-t=0;--o)e[o+t]=this[o+r];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===p){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function B(e){return p.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,r,p){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}}).call(this,r(5))},function(e,t){var r,p,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(r===setTimeout)return setTimeout(e,0);if((r===i||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:i}catch(e){r=i}try{p="function"==typeof clearTimeout?clearTimeout:s}catch(e){p=s}}();var a,l=[],c=!1,u=-1;function y(){c&&a&&(c=!1,a.length?l=a.concat(l):u=-1,l.length&&h())}function h(){if(!c){var e=n(y);c=!0;for(var t=l.length;t;){for(a=l,l=[];++u1)for(var r=1;r0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!p(t))throw TypeError("listener must be a function");var r=!1;function o(){this.removeListener(e,o),r||(r=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},r.prototype.removeListener=function(e,t){var r,i,s,n;if(!p(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(r=this._events[e]).length,i=-1,r===t||p(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(r)){for(n=s;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){i=n;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(p(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?p(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(p(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){(t=e.exports=r(19)).Stream=t,t.Readable=t,t.Writable=r(15),t.Duplex=r(7),t.Transform=r(23),t.PassThrough=r(38)},function(e,t,r){"use strict";(function(t,p,o){var i=r(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var p=e.entry;e.entry=null;for(;p;){var o=p.callback;t.pendingcb--,o(r),p=p.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?p:i.nextTick;g.WritableState=S;var l=r(10);l.inherits=r(6);var c={deprecate:r(37)},u=r(20),y=r(12).Buffer,h=o.Uint8Array||function(){};var f,d=r(21);function _(){}function S(e,t){n=n||r(7),e=e||{};var p=t instanceof n;this.objectMode=!!e.objectMode,p&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:p&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,p=r.sync,o=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,p,o){--t.pendingcb,r?(i.nextTick(o,p),i.nextTick(v,e,t),e._writableState.errorEmitted=!0,e.emit("error",p)):(o(p),e._writableState.errorEmitted=!0,e.emit("error",p),v(e,t))}(e,r,p,t,o);else{var s=b(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||m(e,r),p?a(E,e,r,s,o):E(e,r,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||r(7),!(f.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function w(e,t,r,p,o,i,s){t.writelen=p,t.writecb=s,t.writing=!0,t.sync=!0,r?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,r,p){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,p(),v(e,t)}function m(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var p=t.bufferedRequestCount,o=new Array(p),i=t.corkedRequestsFree;i.entry=r;for(var n=0,a=!0;r;)o[n]=r,r.isBuf||(a=!1),r=r.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;r;){var l=r.chunk,c=r.encoding,u=r.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,c,u),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function I(e,t){e._final((function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),v(e,t)}))}function v(e,t){var r=b(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(I,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}l.inherits(g,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):f=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,r){var p,o=this._writableState,s=!1,n=!o.objectMode&&(p=e,y.isBuffer(p)||p instanceof h);return n&&!y.isBuffer(e)&&(e=function(e){return y.from(e)}(e)),"function"==typeof t&&(r=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof r&&(r=_),o.ended?function(e,t){var r=new Error("write after end");e.emit("error",r),i.nextTick(t,r)}(this,r):(n||function(e,t,r,p){var o=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(p,s),o=!1),o}(this,o,e,r))&&(o.pendingcb++,s=function(e,t,r,p,o,i){if(!r){var s=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=y.from(t,r));return t}(t,p,o);p!==s&&(r=!0,o="buffer",p=s)}var n=t.objectMode?1:p.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,r){var p=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),p.corked&&(p.corked=1,this.uncork()),p.ending||p.finished||function(e,t,r){t.ending=!0,v(e,t),r&&(t.finished?i.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,p,r)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(9),r(35).setImmediate,r(5))},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var p=r(28),o={},i={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},s={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},n={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1},a=function(){function e(){this.varName="",this.type="",this.options={},this.next=null,this.head=null,this.compiled=null,this.endian="be",this.constructorFn=null,this.alias=null}return e.start=function(){return new e},e.prototype.primitiveGenerateN=function(e,t){var r=s[e],p=n[e];t.pushCode(t.generateVariable(this.varName)+" = dataView.get"+r+"(offset, "+p+");"),t.pushCode("offset += "+i[e]+";")},e.prototype.primitiveN=function(e,t,r){return this.setNextParser(e,t,r)},e.prototype.useThisEndian=function(e){return e+this.endian.toLowerCase()},e.prototype.uint8=function(e,t){return this.primitiveN("uint8",e,t)},e.prototype.uint16=function(e,t){return this.primitiveN(this.useThisEndian("uint16"),e,t)},e.prototype.uint16le=function(e,t){return this.primitiveN("uint16le",e,t)},e.prototype.uint16be=function(e,t){return this.primitiveN("uint16be",e,t)},e.prototype.uint32=function(e,t){return this.primitiveN(this.useThisEndian("uint32"),e,t)},e.prototype.uint32le=function(e,t){return this.primitiveN("uint32le",e,t)},e.prototype.uint32be=function(e,t){return this.primitiveN("uint32be",e,t)},e.prototype.int8=function(e,t){return this.primitiveN("int8",e,t)},e.prototype.int16=function(e,t){return this.primitiveN(this.useThisEndian("int16"),e,t)},e.prototype.int16le=function(e,t){return this.primitiveN("int16le",e,t)},e.prototype.int16be=function(e,t){return this.primitiveN("int16be",e,t)},e.prototype.int32=function(e,t){return this.primitiveN(this.useThisEndian("int32"),e,t)},e.prototype.int32le=function(e,t){return this.primitiveN("int32le",e,t)},e.prototype.int32be=function(e,t){return this.primitiveN("int32be",e,t)},e.prototype.bigIntVersionCheck=function(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported in this runtime")},e.prototype.int64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),e,t)},e.prototype.int64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64be",e,t)},e.prototype.int64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64le",e,t)},e.prototype.uint64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),e,t)},e.prototype.uint64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64be",e,t)},e.prototype.uint64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64le",e,t)},e.prototype.floatle=function(e,t){return this.primitiveN("floatle",e,t)},e.prototype.floatbe=function(e,t){return this.primitiveN("floatbe",e,t)},e.prototype.doublele=function(e,t){return this.primitiveN("doublele",e,t)},e.prototype.doublebe=function(e,t){return this.primitiveN("doublebe",e,t)},e.prototype.bitN=function(e,t,r){return r||(r={}),r.length=e,this.setNextParser("bit",t,r)},e.prototype.bit1=function(e,t){return this.bitN(1,e,t)},e.prototype.bit2=function(e,t){return this.bitN(2,e,t)},e.prototype.bit3=function(e,t){return this.bitN(3,e,t)},e.prototype.bit4=function(e,t){return this.bitN(4,e,t)},e.prototype.bit5=function(e,t){return this.bitN(5,e,t)},e.prototype.bit6=function(e,t){return this.bitN(6,e,t)},e.prototype.bit7=function(e,t){return this.bitN(7,e,t)},e.prototype.bit8=function(e,t){return this.bitN(8,e,t)},e.prototype.bit9=function(e,t){return this.bitN(9,e,t)},e.prototype.bit10=function(e,t){return this.bitN(10,e,t)},e.prototype.bit11=function(e,t){return this.bitN(11,e,t)},e.prototype.bit12=function(e,t){return this.bitN(12,e,t)},e.prototype.bit13=function(e,t){return this.bitN(13,e,t)},e.prototype.bit14=function(e,t){return this.bitN(14,e,t)},e.prototype.bit15=function(e,t){return this.bitN(15,e,t)},e.prototype.bit16=function(e,t){return this.bitN(16,e,t)},e.prototype.bit17=function(e,t){return this.bitN(17,e,t)},e.prototype.bit18=function(e,t){return this.bitN(18,e,t)},e.prototype.bit19=function(e,t){return this.bitN(19,e,t)},e.prototype.bit20=function(e,t){return this.bitN(20,e,t)},e.prototype.bit21=function(e,t){return this.bitN(21,e,t)},e.prototype.bit22=function(e,t){return this.bitN(22,e,t)},e.prototype.bit23=function(e,t){return this.bitN(23,e,t)},e.prototype.bit24=function(e,t){return this.bitN(24,e,t)},e.prototype.bit25=function(e,t){return this.bitN(25,e,t)},e.prototype.bit26=function(e,t){return this.bitN(26,e,t)},e.prototype.bit27=function(e,t){return this.bitN(27,e,t)},e.prototype.bit28=function(e,t){return this.bitN(28,e,t)},e.prototype.bit29=function(e,t){return this.bitN(29,e,t)},e.prototype.bit30=function(e,t){return this.bitN(30,e,t)},e.prototype.bit31=function(e,t){return this.bitN(31,e,t)},e.prototype.bit32=function(e,t){return this.bitN(32,e,t)},e.prototype.namely=function(e){return o[e]=this,this.alias=e,this},e.prototype.skip=function(e,t){return this.seek(e,t)},e.prototype.seek=function(e,t){if(t&&t.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:e})},e.prototype.string=function(e,t){if(!t.zeroTerminated&&!t.length&&!t.greedy)throw new Error("Neither length, zeroTerminated, nor greedy is defined for string.");if((t.zeroTerminated||t.length)&&t.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(t.stripNull&&!t.length&&!t.greedy)throw new Error("Length or greedy must be defined if stripNull is defined.");return t.encoding=t.encoding||"utf8",this.setNextParser("string",e,t)},e.prototype.buffer=function(e,t){if(!t.length&&!t.readUntil)throw new Error("Length nor readUntil is defined in buffer parser");return this.setNextParser("buffer",e,t)},e.prototype.array=function(e,t){if(!t.readUntil&&!t.length&&!t.lengthInBytes)throw new Error("Length option of array is not defined.");if(!t.type)throw new Error("Type option of array is not defined.");if("string"==typeof t.type&&!o[t.type]&&Object.keys(i).indexOf(t.type)<0)throw new Error('Specified primitive type "'+t.type+'" is not supported.');return this.setNextParser("array",e,t)},e.prototype.choice=function(e,t){if("object"!=typeof t&&"object"==typeof e&&(t=e,e=null),!t.tag)throw new Error("Tag option of array is not defined.");if(!t.choices)throw new Error("Choices option of array is not defined.");return Object.keys(t.choices).forEach((function(r){var p=parseInt(r,10),s=t.choices[p];if(isNaN(p))throw new Error("Key of choices must be a number.");if(!s)throw new Error("Choice Case "+r+" of "+e+" is not valid.");if("string"==typeof s&&!o[s]&&Object.keys(i).indexOf(s)<0)throw new Error('Specified primitive type "'+s+'" is not supported.')})),this.setNextParser("choice",e,t)},e.prototype.nest=function(t,r){if("object"!=typeof r&&"object"==typeof t&&(r=t,t=null),!r.type)throw new Error("Type option of nest is not defined.");if(!(r.type instanceof e||o[r.type]))throw new Error("Type option of nest must be a Parser object.");if(!(r.type instanceof e||t))throw new Error("options.type must be a object if variable name is omitted.");return this.setNextParser("nest",t,r)},e.prototype.pointer=function(t,r){if(!r.offset)throw new Error("Offset option of pointer is not defined.");if(!r.type)throw new Error("Type option of pointer is not defined.");if("string"==typeof r.type){if(Object.keys(i).indexOf(r.type)<0&&!o[r.type])throw new Error('Specified type "'+r.type+'" is not supported.')}else if(!(r.type instanceof e))throw new Error("Type option of pointer must be a string or a Parser object.");return this.setNextParser("pointer",t,r)},e.prototype.saveOffset=function(e,t){return this.setNextParser("saveOffset",e,t)},e.prototype.endianess=function(e){switch(e.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error("Invalid endianess: "+e)}return this},e.prototype.create=function(e){if(!(e instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=e,this},e.prototype.getContext=function(e){var t=new p.Context(e);return t.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(t),t.pushCode("return ___parser_"+this.alias+"(0).result;")):this.addRawCode(t),t},e.prototype.getCode=function(){return this.getContext().code},e.prototype.addRawCode=function(e){e.pushCode("var offset = 0;"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),this.resolveReferences(e),e.pushCode("return vars;")},e.prototype.addAliasedCode=function(e){return e.pushCode("function ___parser_"+this.alias+"(offset) {"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),e.markResolved(this.alias),this.resolveReferences(e),e.pushCode("return { offset: offset, result: vars };"),e.pushCode("}"),e},e.prototype.resolveReferences=function(e){var t=e.getUnresolvedReferences();e.markRequested(t),t.forEach((function(t){o[t].addAliasedCode(e)}))},e.prototype.compile=function(){var e=this.getContext("imports");this.compiled=new Function("imports","TextDecoder","return function (buffer, constructorFn) { "+e.code+" };")(e.imports,"undefined"==typeof TextDecoder?r(18).TextDecoder:TextDecoder)},e.prototype.sizeOf=function(){var t=NaN;if(Object.keys(i).indexOf(this.type)>=0)t=i[this.type];else if("string"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("buffer"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("array"===this.type&&"number"==typeof this.options.length){var r=NaN;"string"==typeof this.options.type?r=i[this.options.type]:this.options.type instanceof e&&(r=this.options.type.sizeOf()),t=this.options.length*r}else"seek"===this.type?t=this.options.length:"nest"===this.type?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t},e.prototype.parse=function(e){return this.compiled||this.compile(),this.compiled(e,this.constructorFn)},e.prototype.setNextParser=function(t,r,p){var o=new e;return o.type=t,o.varName=r,o.options=p||o.options,o.endian=this.endian,this.head?this.head.next=o:this.next=o,this.head=o,this},e.prototype.generate=function(e){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,e);break;case"bit":this.generateBit(e);break;case"string":this.generateString(e);break;case"buffer":this.generateBuffer(e);break;case"seek":this.generateSeek(e);break;case"nest":this.generateNest(e);break;case"array":this.generateArray(e);break;case"choice":this.generateChoice(e);break;case"pointer":this.generatePointer(e);break;case"saveOffset":this.generateSaveOffset(e)}this.generateAssert(e)}var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},e.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":var r=e.addImport(this.options.assert);e.pushCode("if (!"+r+".call(vars, "+t+")) {");break;case"number":e.pushCode("if ("+this.options.assert+" !== "+t+") {");break;case"string":e.pushCode('if ("'+this.options.assert+'" !== '+t+") {");break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: '+t+' is " + '+this.options.assert),e.pushCode("}")}},e.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},e.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){var r=0;e.bitFields.forEach((function(e){return r+=e.options.length}));var p=e.generateTmpVariable();if(r<=8)e.pushCode("var "+p+" = dataView.getUint8(offset);"),r=8;else if(r<=16)e.pushCode("var "+p+" = dataView.getUint16(offset);"),r=16;else if(r<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var "+o+" = dataView.getUint16(offset);"),e.pushCode("var "+i+" = dataView.getUint8(offset + 2);"),e.pushCode("var "+p+" = ("+o+" << 8) | "+i+";"),r=24}else{if(!(r<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var "+p+" = dataView.getUint32(offset);"),r=32}e.pushCode("offset += "+r/8+";");var s=0,n="be"===this.endian;e.bitFields.forEach((function(t){var o=t.options.length,i=n?r-s-o:s,a=(1<> "+i+" & "+a+";"),s+=o})),e.bitFields=[]}},e.prototype.generateSeek=function(e){var t=e.generateOption(this.options.length);e.pushCode("offset += "+t+";")},e.prototype.generateString=function(e){var t=e.generateVariable(this.varName),r=e.generateTmpVariable(),p=this.options.encoding,o="hex"===p.toLowerCase(),i='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){var s=this.options.length;e.pushCode("var "+r+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0 && offset - "+r+" < "+s+");");var n="offset - "+r+" < "+s+" ? offset - 1 : offset";e.pushCode(o?t+" = Array.from(buffer.subarray("+r+", "+n+"), "+i+").join('');":t+" = new TextDecoder('"+p+"').decode(buffer.subarray("+r+", "+n+"));")}else if(this.options.length){s=e.generateOption(this.options.length);e.pushCode(o?t+" = Array.from(buffer.subarray(offset, offset + "+s+"), "+i+").join('');":t+" = new TextDecoder('"+p+"').decode(buffer.subarray(offset, offset + "+s+"));"),e.pushCode("offset += "+s+";")}else this.options.zeroTerminated?(e.pushCode("var "+r+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+r+", offset - 1)), "+i+").join('');":t+" = new TextDecoder('"+p+"').decode(buffer.subarray("+r+", offset - 1));")):this.options.greedy&&(e.pushCode("var "+r+" = offset;"),e.pushCode("while(buffer.length > offset++);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+r+", offset)), "+i+").join('');":t+" = new TextDecoder('"+p+"').decode(buffer.subarray("+r+", offset));"));this.options.stripNull&&e.pushCode(t+" = "+t+".replace(/\\x00+$/g, '')")},e.prototype.generateBuffer=function(e){var t=e.generateVariable(this.varName);if("function"==typeof this.options.readUntil){var r=this.options.readUntil,p=e.generateTmpVariable(),o=e.generateTmpVariable();e.pushCode("var "+p+" = offset;"),e.pushCode("var "+o+" = 0;"),e.pushCode("while (offset < buffer.length) {"),e.pushCode(o+" = dataView.getUint8(offset);");var i=e.addImport(r);e.pushCode("if ("+i+".call(this, "+o+", buffer.subarray(offset))) break;"),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(t+" = buffer.subarray("+p+", offset);")}else if("eof"===this.options.readUntil)e.pushCode(t+" = buffer.subarray(offset);");else{var s=e.generateOption(this.options.length);e.pushCode(t+" = buffer.subarray(offset, offset + "+s+");"),e.pushCode("offset += "+s+";")}this.options.clone&&e.pushCode(t+" = buffer.constructor.from("+t+");")},e.prototype.generateArray=function(t){var r=t.generateOption(this.options.length),p=t.generateOption(this.options.lengthInBytes),a=this.options.type,l=t.generateTmpVariable(),c=t.generateVariable(this.varName),u=t.generateTmpVariable(),y=this.options.key,h="string"==typeof y;if(h?t.pushCode(c+" = {};"):t.pushCode(c+" = [];"),"function"==typeof this.options.readUntil?t.pushCode("do {"):"eof"===this.options.readUntil?t.pushCode("for (var "+l+" = 0; offset < buffer.length; "+l+"++) {"):void 0!==p?t.pushCode("for (var "+l+" = offset + "+p+"; offset < "+l+"; ) {"):t.pushCode("for (var "+l+" = "+r+"; "+l+" > 0; "+l+"--) {"),"string"==typeof a)if(o[a]){var f=t.generateTmpVariable();t.pushCode("var "+f+" = ___parser_"+a+"(offset);"),t.pushCode("var "+u+" = "+f+".result; offset = "+f+".offset;"),a!==this.alias&&t.addReference(a)}else{var d=s[a],_=n[a];t.pushCode("var "+u+" = dataView.get"+d+"(offset, "+_+");"),t.pushCode("offset += "+i[a]+";")}else a instanceof e&&(t.pushCode("var "+u+" = {};"),t.pushScope(u),a.generate(t),t.popScope());if(h?t.pushCode(c+"["+u+"."+y+"] = "+u+";"):t.pushCode(c+".push("+u+");"),t.pushCode("}"),"function"==typeof this.options.readUntil){var S=this.options.readUntil,g=t.addImport(S);t.pushCode("while (!"+g+".call(this, "+u+", buffer.subarray(offset)));")}},e.prototype.generateChoiceCase=function(t,r,p){if("string"==typeof p){var a=t.generateVariable(this.varName);if(o[p]){var l=t.generateTmpVariable();t.pushCode("var "+l+" = ___parser_"+p+"(offset);"),t.pushCode(a+" = "+l+".result; offset = "+l+".offset;"),p!==this.alias&&t.addReference(p)}else{var c=s[p],u=n[p];t.pushCode(a+" = dataView.get"+c+"(offset, "+u+");"),t.pushCode("offset += "+i[p])}}else p instanceof e&&(t.pushPath(r),p.generate(t),t.popPath(r))},e.prototype.generateChoice=function(e){var t=this,r=e.generateOption(this.options.tag);this.varName&&e.pushCode(e.generateVariable(this.varName)+" = {};"),e.pushCode("switch("+r+") {"),Object.keys(this.options.choices).forEach((function(r){var p=t.options.choices[parseInt(r,10)];e.pushCode("case "+r+":"),t.generateChoiceCase(e,t.varName,p),e.pushCode("break;")})),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + '+r+' + " at choice"'),e.pushCode("}")},e.prototype.generateNest=function(t){var r=t.generateVariable(this.varName);if(this.options.type instanceof e)this.varName&&t.pushCode(r+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var p=t.generateTmpVariable();t.pushCode("var "+p+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(r+" = "+p+".result; offset = "+p+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}},e.prototype.generateFormatter=function(e,t,r){if("function"==typeof r){var p=e.addImport(r);e.pushCode(t+" = "+p+".call(this, "+t+");")}},e.prototype.generatePointer=function(t){var r=this.options.type,p=t.generateOption(this.options.offset),a=t.generateTmpVariable(),l=t.generateVariable(this.varName);if(t.pushCode("var "+a+" = offset;"),t.pushCode("offset = "+p+";"),this.options.type instanceof e)t.pushCode(l+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var c=t.generateTmpVariable();t.pushCode("var "+c+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(l+" = "+c+".result; offset = "+c+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(i).indexOf(this.options.type)>=0){var u=s[r],y=n[r];t.pushCode(l+" = dataView.get"+u+"(offset, "+y+");"),t.pushCode("offset += "+i[r]+";")}t.pushCode("offset = "+a+";")},e.prototype.generateSaveOffset=function(e){var t=e.generateVariable(this.varName);e.pushCode(t+" = offset")},e}();t.Parser=a},function(e,t,r){(function(e,p){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(p[r++]);case"%d":return Number(p[r++]);case"%j":try{return JSON.stringify(p[r++])}catch(e){return"[Circular]"}default:return e}})),a=p[r];r=3&&(p.depth=arguments[2]),arguments.length>=4&&(p.colors=arguments[3]),f(r)?p.showHidden=r:r&&t._extend(p,r),g(p.showHidden)&&(p.showHidden=!1),g(p.depth)&&(p.depth=2),g(p.colors)&&(p.colors=!1),g(p.customInspect)&&(p.customInspect=!0),p.colors&&(p.stylize=a),c(p,e,p.depth)}function a(e,t){var r=n.styles[t];return r?"["+n.colors[r][0]+"m"+e+"["+n.colors[r][1]+"m":e}function l(e,t){return e}function c(e,r,p){if(e.customInspect&&r&&I(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(p,e);return S(o)||(o=c(e,o,p)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(_(t))return e.stylize(""+t,"number");if(f(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,r);if(i)return i;var s=Object.keys(r),n=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(r)),b(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return u(r);if(0===s.length){if(I(r)){var a=r.name?": "+r.name:"";return e.stylize("[Function"+a+"]","special")}if(w(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(m(r))return e.stylize(Date.prototype.toString.call(r),"date");if(b(r))return u(r)}var l,E="",v=!1,L=["{","}"];(h(r)&&(v=!0,L=["[","]"]),I(r))&&(E=" [Function"+(r.name?": "+r.name:"")+"]");return w(r)&&(E=" "+RegExp.prototype.toString.call(r)),m(r)&&(E=" "+Date.prototype.toUTCString.call(r)),b(r)&&(E=" "+u(r)),0!==s.length||v&&0!=r.length?p<0?w(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),l=v?function(e,t,r,p,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(l,E,L)):L[0]+E+L[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function y(e,t,r,p,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(p,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(r)?c(e,a.value,null):c(e,a.value,r-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+n.split("\n").map((function(e){return" "+e})).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function h(e){return Array.isArray(e)}function f(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===v(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===v(e)}function b(e){return E(e)&&("[object Error]"===v(e)||e instanceof Error)}function I(e){return"function"==typeof e}function v(e){return Object.prototype.toString.call(e)}function L(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=p.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var r=p.pid;s[e]=function(){var p=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,p)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=h,t.isBoolean=f,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=I,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=r(29);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function U(){var e=new Date,t=[L(e.getHours()),L(e.getMinutes()),L(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",U(),t.format.apply(t,arguments))},t.inherits=r(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var r=Object.keys(t),p=r.length;p--;)e[r[p]]=t[r[p]];return e}}).call(this,r(5),r(9))},function(e,t,r){"use strict";(function(t,p){var o=r(11);e.exports=w;var i,s=r(16);w.ReadableState=g;r(13).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=r(20),l=r(12).Buffer,c=t.Uint8Array||function(){};var u=r(10);u.inherits=r(6);var y=r(32),h=void 0;h=y&&y.debuglog?y.debuglog("stream"):function(){};var f,d=r(33),_=r(21);u.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var p=t instanceof(i=i||r(7));this.objectMode=!!e.objectMode,p&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:p&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(f||(f=r(22).StringDecoder),this.decoder=new f(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||r(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,r,p,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,I(e)}(e,s)):(o||(i=function(e,t){var r;p=t,l.isBuffer(p)||p instanceof c||"string"==typeof t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var p;return r}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),p?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):L(e,s)):m(e,s,t,!1))):p||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(v,e):v(e))}function v(e){h("emit readable"),e.emit("readable"),D(e)}function L(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(T,e,t))}function T(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var p;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++p,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++p}return t.length-=p,o}(e,t):function(e,t){var r=l.allocUnsafe(e),p=t.head,o=1;p.data.copy(r),e-=p.data.length;for(;p=p.next;){var i=p.data,s=e>i.length?i.length:e;if(i.copy(r,r.length-e,0,s),0===(e-=s)){s===i.length?(++o,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++o}return t.length-=o,r}(e,t);return p}(e,t.buffer,t.decoder),r);var r}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function C(e,t){for(var r=0,p=e.length;r=t.highWaterMark||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):I(this),null;if(0===(e=b(e,t))&&t.ended)return 0===t.length&&G(this),null;var p,o=t.needReadable;return h("need readable",o),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&G(this)),null!==p&&this.emit("data",p),p},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,h("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==p.stdout&&e!==p.stderr?c:w;function l(t,p){h("onunpipe"),t===r&&p&&!1===p.hasUnpiped&&(p.hasUnpiped=!0,h("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",u),e.removeListener("error",_),e.removeListener("unpipe",l),r.removeListener("end",c),r.removeListener("end",w),r.removeListener("data",d),y=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}function c(){h("onend"),e.end()}i.endEmitted?o.nextTick(a):r.once("end",a),e.on("unpipe",l);var u=function(e){return function(){var t=e._readableState;h("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,D(e))}}(r);e.on("drain",u);var y=!1;var f=!1;function d(t){h("ondata"),f=!1,!1!==e.write(t)||f||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==C(i.pipes,e))&&!y&&(h("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,f=!0),r.pause())}function _(t){h("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){h("onfinish"),e.removeListener("close",S),w()}function w(){h("unpipe"),r.unpipe(e)}return r.on("data",d),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",r),i.flowing||(h("pipe resume"),r.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r)),this;if(!e){var p=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var p=r.charCodeAt(r.length-1);if(p>=55296&&p<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function c(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function y(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return o>0&&(e.lastNeed=o-1),o;if(--p=0)return o>0&&(e.lastNeed=o-2),o;if(--p=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var p=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,p),e.toString("utf8",t,p)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){"use strict";e.exports=s;var p=r(7),o=r(10);function i(e,t){var r=this._transformState;r.transforming=!1;var p=r.writecb;if(!p)return this.emit("error",new Error("write callback called multiple times"));r.writechunk=null,r.writecb=null,null!=t&&this.push(t),p(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&r],t&=65535;return t}p.exports={preambleByte:85,crc16:S,sbpIdTable:h,sbpMessageTypesTable:f,decode:function(e){var t=d.parse(e),r=h[t.msg_type];return void 0===r?(console.log("Unknown message type: ",t.msg_type),new s(t)):new r(t)},dispatch:function(t,r,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof r?i=r:(i=o,s=r),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(r){t.pause();try{if((n=e.concat([n,r])).length<2)return;var o=function(){var e,t,r,o,i,a,l;for(l=0;ln.length)throw new c;e=n.slice(l+1,l+6),r=n.readUInt16LE(l+1),_=n.readUInt16LE(l+3),o=n.readUInt8(l+5);var y=s&&Array.isArray(s)&&-1!==s.indexOf(r),h=s&&"number"==typeof s&&s&r,f=s&&"function"==typeof s&&s(r);if(s&&!(y||h||f))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new c;a=S(n.slice(l+6,l+6+o),S(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[p.exports.decode(d),d];throw n=n.slice(l+1),new u}();if(null===o)return;var l=o[0],y=o[1];i(null,l,y)}catch(e){if(!(e instanceof c||e instanceof u))throw e}finally{t.resume(),n.length>0&&setTimeout((function(){a(new e(0))}),0)}};t.on("data",a)}},function(e){var r={function:!0,object:!0},i=r[typeof window]&&window||this,s=r[typeof t]&&t&&!t.nodeType&&t,n=r[typeof p]&&p&&!p.nodeType&&p,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(p.exports)}).call(this,r(8).Buffer,r(27)(e),r(5))},function(e,t,r){"use strict";t.byteLength=function(e){var t=l(e),r=t[0],p=t[1];return 3*(r+p)/4-p},t.toByteArray=function(e){for(var t,r=l(e),p=r[0],s=r[1],n=new i(function(e,t,r){return 3*(t+r)/4-r}(0,p,s)),a=0,c=s>0?p-4:p,u=0;u>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(u)]<<2|o[e.charCodeAt(u+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(u)]<<10|o[e.charCodeAt(u+1)]<<4|o[e.charCodeAt(u+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],s=0,n=r-o;sn?n:s+16383));1===o?(t=e[r-1],i.push(p[t>>2]+p[t<<4&63]+"==")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(p[t>>10]+p[t>>4&63]+p[t<<2&63]+"="));return i.join("")};for(var p=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,r){for(var o,i,s=[],n=t;n>18&63]+p[i>>12&63]+p[i>>6&63]+p[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,p,o){var i,s,n=8*o-p-1,a=(1<>1,c=-7,u=r?o-1:0,y=r?-1:1,h=e[t+u];for(u+=y,i=h&(1<<-c)-1,h>>=-c,c+=n;c>0;i=256*i+e[t+u],u+=y,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=p;c>0;s=256*s+e[t+u],u+=y,c-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,p),i-=l}return(h?-1:1)*s*Math.pow(2,i-p)},t.write=function(e,t,r,p,o,i){var s,n,a,l=8*i-o-1,c=(1<>1,y=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=p?0:i-1,f=p?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+u>=1?y/a:y*Math.pow(2,1-u))*a>=2&&(s++,a/=2),s+u>=c?(n=0,s=c):s+u>=1?(n=(t*a-1)*Math.pow(2,o),s+=u):(n=t*Math.pow(2,u-1)*Math.pow(2,o),s=0));o>=8;e[r+h]=255&n,h+=f,n/=256,o-=8);for(s=s<0;e[r+h]=255&s,h+=f,s/=256,l-=8);e[r+h-f]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Context=void 0;var p=function(){function e(e){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references={},this.imports=[],this.reverseImports=new Map,this.importPath=e}return e.prototype.generateVariable=function(e){var t=[],r=this.scopes[this.scopes.length-1];return t.push.apply(t,r),e&&t.push(e),t.join(".")},e.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return this.addImport(e)+".call("+this.generateVariable()+", vars)"}},e.prototype.generateError=function(e){this.pushCode("throw new Error("+e+");")},e.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},e.prototype.pushCode=function(e){this.code+=e+"\n"},e.prototype.pushPath=function(e){e&&this.scopes[this.scopes.length-1].push(e)},e.prototype.popPath=function(e){e&&this.scopes[this.scopes.length-1].pop()},e.prototype.pushScope=function(e){this.scopes.push([e])},e.prototype.popScope=function(){this.scopes.pop()},e.prototype.addImport=function(e){if(!this.importPath)return"("+e+")";var t=this.reverseImports.get(e);return t||(t=this.imports.push(e)-1,this.reverseImports.set(e,t)),this.importPath+"["+t+"]"},e.prototype.addReference=function(e){this.references[e]||(this.references[e]={resolved:!1,requested:!1})},e.prototype.markResolved=function(e){this.references[e].resolved=!0},e.prototype.markRequested=function(e){var t=this;e.forEach((function(e){t.references[e].requested=!0}))},e.prototype.getUnresolvedReferences=function(){var e=this.references;return Object.keys(this.references).filter((function(t){return!e[t].resolved&&!e[t].requested}))},e}();t.Context=p},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,r){(function(e){function r(e,t){for(var r=0,p=e.length-1;p>=0;p--){var o=e[p];"."===o?e.splice(p,1):".."===o?(e.splice(p,1),r++):r&&(e.splice(p,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}var p=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return p.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var r=[],p=0;p=-1&&!p;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,p="/"===s.charAt(0))}return(p?"/":"")+(t=r(i(t.split("/"),(function(e){return!!e})),!p).join("/"))||"."},t.normalize=function(e){var p=t.isAbsolute(e),o="/"===s(e,-1);return(e=r(i(e.split("/"),(function(e){return!!e})),!p).join("/"))||p||(e="."),e&&o&&(e+="/"),(p?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,r){function p(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var o=p(e.split("/")),i=p(r.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return p.alloc(0);if(1===this.length)return this.head.data;for(var t=p.allocUnsafe(e>>>0),r=this.head,o=0;r;)i(r.data,t,o),o+=r.data.length,r=r.next;return t},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,r){(function(e){var p=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,p,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,p,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(p,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},r(36),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(5))},function(e,t,r){(function(e,t){!function(e,r){"use strict";if(!e.setImmediate){var p,o,i,s,n,a=1,l={},c=!1,u=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?p=function(e){t.nextTick((function(){f(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=r,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){f(e.data)},p=function(e){i.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,p=function(e){var t=u.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):p=function(e){setTimeout(f,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&f(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),p=function(t){e.postMessage(s+t,"*")}),y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var p=e.length;if(0===p)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return p;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*p;case"hex":return p>>>1;case"base64":return B(e).length;default:if(r)return F(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,p){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===p||p>this.length)&&(p=this.length),p<=0)return"";if((p>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,p);case"utf8":case"utf-8":return T(this,t,p);case"ascii":return U(this,t,p);case"latin1":case"binary":return M(this,t,p);case"base64":return L(this,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,p);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function _(e,t,p){var r=e[t];e[t]=e[p],e[p]=r}function S(e,t,p,r,o){if(0===e.length)return-1;if("string"==typeof p?(r=p,p=0):p>2147483647?p=2147483647:p<-2147483648&&(p=-2147483648),p=+p,isNaN(p)&&(p=o?0:e.length-1),p<0&&(p=e.length+p),p>=e.length){if(o)return-1;p=e.length-1}else if(p<0){if(!o)return-1;p=0}if("string"==typeof t&&(t=a.from(t,r)),a.isBuffer(t))return 0===t.length?-1:g(e,t,p,r,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,p):Uint8Array.prototype.lastIndexOf.call(e,t,p):g(e,[t],p,r,o);throw new TypeError("val must be string, number or Buffer")}function g(e,t,p,r,o){var i,s=1,n=e.length,a=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,p/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var u=-1;for(i=p;in&&(p=n-a),i=p;i>=0;i--){for(var c=!0,y=0;yo&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=p%256,i.push(o),i.push(r);return i}(t,e.length-p),e,p,r)}function L(e,t,p){return 0===t&&p===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,p))}function T(e,t,p){p=Math.min(e.length,p);for(var r=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+c<=p)switch(c){case 1:l<128&&(u=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(u=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(u=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(u=a)}null===u?(u=65533,c=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=c}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var p="",r=0;for(;r0&&(e=this.toString("hex",0,p).match(/.{2}/g).join(" "),this.length>p&&(e+=" ... ")),""},a.prototype.compare=function(e,t,p,r,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===p&&(p=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||p>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=p)return 0;if(r>=o)return-1;if(t>=p)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(p>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(r,o),u=e.slice(t,p),c=0;co)&&(p=o),e.length>0&&(p<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return w(this,e,t,p);case"utf8":case"utf-8":return E(this,e,t,p);case"ascii":return m(this,e,t,p);case"latin1":case"binary":return b(this,e,t,p);case"base64":return I(this,e,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,e,t,p);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function U(e,t,p){var r="";p=Math.min(e.length,p);for(var o=t;or)&&(p=r);for(var o="",i=t;ip)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,p,r,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function C(e,t,p,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-p,2);o>>8*(r?o:1-o)}function R(e,t,p,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-p,4);o>>8*(r?o:3-o)&255}function P(e,t,p,r,o,i){if(p+r>e.length)throw new RangeError("Index out of range");if(p<0)throw new RangeError("Index out of range")}function N(e,t,p,r,i){return i||P(e,0,p,4),o.write(e,t,p,r,23,4),p+4}function j(e,t,p,r,i){return i||P(e,0,p,8),o.write(e,t,p,r,52,8),p+8}a.prototype.slice=function(e,t){var p,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},a.prototype.readUInt8=function(e,t){return t||G(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||G(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||G(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||G(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||G(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},a.prototype.readIntBE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||G(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||G(e,2,this.length);var p=this[e]|this[e+1]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt16BE=function(e,t){t||G(e,2,this.length);var p=this[e+1]|this[e]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt32LE=function(e,t){return t||G(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||G(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,p,r){(e=+e,t|=0,p|=0,r)||A(this,e,t,p,Math.pow(2,8*p)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+p},a.prototype.writeUInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+p},a.prototype.writeIntBE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=p-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+p},a.prototype.writeInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,p){return N(this,e,t,!0,p)},a.prototype.writeFloatBE=function(e,t,p){return N(this,e,t,!1,p)},a.prototype.writeDoubleLE=function(e,t,p){return j(this,e,t,!0,p)},a.prototype.writeDoubleBE=function(e,t,p){return j(this,e,t,!1,p)},a.prototype.copy=function(e,t,p,r){if(p||(p=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+p];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,p=void 0===p?this.length:p>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&p<57344){if(!o){if(p>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=p;continue}if(p<56320){(t-=3)>-1&&i.push(239,191,189),o=p;continue}p=65536+(o-55296<<10|p-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,p<128){if((t-=1)<0)break;i.push(p)}else if(p<2048){if((t-=2)<0)break;i.push(p>>6|192,63&p|128)}else if(p<65536){if((t-=3)<0)break;i.push(p>>12|224,p>>6&63|128,63&p|128)}else{if(!(p<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(p>>18|240,p>>12&63|128,p>>6&63|128,63&p|128)}}return i}function B(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,p,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+p]=e[o];return o}}).call(this,p(5))},function(e,t){var p,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(p===setTimeout)return setTimeout(e,0);if((p===i||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}!function(){try{p="function"==typeof setTimeout?setTimeout:i}catch(e){p=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var a,l=[],u=!1,c=-1;function y(){u&&a&&(u=!1,a.length?l=a.concat(l):c=-1,l.length&&h())}function h(){if(!u){var e=n(y);u=!0;for(var t=l.length;t;){for(a=l,l=[];++c1)for(var p=1;p0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},p.prototype.on=p.prototype.addListener,p.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var p=!1;function o(){this.removeListener(e,o),p||(p=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},p.prototype.removeListener=function(e,t){var p,i,s,n;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(p=this._events[e]).length,i=-1,p===t||r(p.listener)&&p.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(p)){for(n=s;n-- >0;)if(p[n]===t||p[n].listener&&p[n].listener===t){i=n;break}if(i<0)return this;1===p.length?(p.length=0,delete this._events[e]):p.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},p.prototype.removeAllListeners=function(e){var t,p;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(p=this._events[e]))this.removeListener(e,p);else if(p)for(;p.length;)this.removeListener(e,p[p.length-1]);return delete this._events[e],this},p.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},p.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},p.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,p){(t=e.exports=p(19)).Stream=t,t.Readable=t,t.Writable=p(15),t.Duplex=p(7),t.Transform=p(23),t.PassThrough=p(38)},function(e,t,p){"use strict";(function(t,r,o){var i=p(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,p){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(p),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;g.WritableState=S;var l=p(10);l.inherits=p(6);var u={deprecate:p(37)},c=p(20),y=p(12).Buffer,h=o.Uint8Array||function(){};var f,d=p(21);function _(){}function S(e,t){n=n||p(7),e=e||{};var r=t instanceof n;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(l||0===l)?l:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var c=!1===e.decodeStrings;this.decodeStrings=!c,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var p=e._writableState,r=p.sync,o=p.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(p),t)!function(e,t,p,r,o){--t.pendingcb,p?(i.nextTick(o,r),i.nextTick(v,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),v(e,t))}(e,p,r,t,o);else{var s=b(p);s||p.corked||p.bufferProcessing||!p.bufferedRequest||m(e,p),r?a(E,e,p,s,o):E(e,p,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||p(7),!(f.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),c.call(this)}function w(e,t,p,r,o,i,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,p?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,p,r){p||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),v(e,t)}function m(e,t){t.bufferProcessing=!0;var p=t.bufferedRequest;if(e._writev&&p&&p.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=p;for(var n=0,a=!0;p;)o[n]=p,p.isBuf||(a=!1),p=p.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;p;){var l=p.chunk,u=p.encoding,c=p.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,u,c),p=p.next,t.bufferedRequestCount--,t.writing)break}null===p&&(t.lastBufferedRequest=null)}t.bufferedRequest=p,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function I(e,t){e._final((function(p){t.pendingcb--,p&&e.emit("error",p),t.prefinished=!0,e.emit("prefinish"),v(e,t)}))}function v(e,t){var p=b(t);return p&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(I,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),p}l.inherits(g,c),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:u.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):f=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,p){var r,o=this._writableState,s=!1,n=!o.objectMode&&(r=e,y.isBuffer(r)||r instanceof h);return n&&!y.isBuffer(e)&&(e=function(e){return y.from(e)}(e)),"function"==typeof t&&(p=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof p&&(p=_),o.ended?function(e,t){var p=new Error("write after end");e.emit("error",p),i.nextTick(t,p)}(this,p):(n||function(e,t,p,r){var o=!0,s=!1;return null===p?s=new TypeError("May not write null values to stream"):"string"==typeof p||void 0===p||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(r,s),o=!1),o}(this,o,e,p))&&(o.pendingcb++,s=function(e,t,p,r,o,i){if(!p){var s=function(e,t,p){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=y.from(t,p));return t}(t,r,o);r!==s&&(p=!0,o="buffer",r=s)}var n=t.objectMode?1:r.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,p){p(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,p){var r=this._writableState;"function"==typeof e?(p=e,e=null,t=null):"function"==typeof t&&(p=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,p){t.ending=!0,v(e,t),p&&(t.finished?i.nextTick(p):e.once("finish",p));t.ended=!0,e.writable=!1}(this,r,p)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,p(9),p(35).setImmediate,p(5))},function(e,t){var p={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==p.call(e)}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var r=p(28),o={},i={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},s={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},n={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1},a=function(){function e(){this.varName="",this.type="",this.options={},this.next=null,this.head=null,this.compiled=null,this.endian="be",this.constructorFn=null,this.alias=null}return e.start=function(){return new e},e.prototype.primitiveGenerateN=function(e,t){var p=s[e],r=n[e];t.pushCode(t.generateVariable(this.varName)+" = dataView.get"+p+"(offset, "+r+");"),t.pushCode("offset += "+i[e]+";")},e.prototype.primitiveN=function(e,t,p){return this.setNextParser(e,t,p)},e.prototype.useThisEndian=function(e){return e+this.endian.toLowerCase()},e.prototype.uint8=function(e,t){return this.primitiveN("uint8",e,t)},e.prototype.uint16=function(e,t){return this.primitiveN(this.useThisEndian("uint16"),e,t)},e.prototype.uint16le=function(e,t){return this.primitiveN("uint16le",e,t)},e.prototype.uint16be=function(e,t){return this.primitiveN("uint16be",e,t)},e.prototype.uint32=function(e,t){return this.primitiveN(this.useThisEndian("uint32"),e,t)},e.prototype.uint32le=function(e,t){return this.primitiveN("uint32le",e,t)},e.prototype.uint32be=function(e,t){return this.primitiveN("uint32be",e,t)},e.prototype.int8=function(e,t){return this.primitiveN("int8",e,t)},e.prototype.int16=function(e,t){return this.primitiveN(this.useThisEndian("int16"),e,t)},e.prototype.int16le=function(e,t){return this.primitiveN("int16le",e,t)},e.prototype.int16be=function(e,t){return this.primitiveN("int16be",e,t)},e.prototype.int32=function(e,t){return this.primitiveN(this.useThisEndian("int32"),e,t)},e.prototype.int32le=function(e,t){return this.primitiveN("int32le",e,t)},e.prototype.int32be=function(e,t){return this.primitiveN("int32be",e,t)},e.prototype.bigIntVersionCheck=function(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported in this runtime")},e.prototype.int64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),e,t)},e.prototype.int64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64be",e,t)},e.prototype.int64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64le",e,t)},e.prototype.uint64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),e,t)},e.prototype.uint64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64be",e,t)},e.prototype.uint64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64le",e,t)},e.prototype.floatle=function(e,t){return this.primitiveN("floatle",e,t)},e.prototype.floatbe=function(e,t){return this.primitiveN("floatbe",e,t)},e.prototype.doublele=function(e,t){return this.primitiveN("doublele",e,t)},e.prototype.doublebe=function(e,t){return this.primitiveN("doublebe",e,t)},e.prototype.bitN=function(e,t,p){return p||(p={}),p.length=e,this.setNextParser("bit",t,p)},e.prototype.bit1=function(e,t){return this.bitN(1,e,t)},e.prototype.bit2=function(e,t){return this.bitN(2,e,t)},e.prototype.bit3=function(e,t){return this.bitN(3,e,t)},e.prototype.bit4=function(e,t){return this.bitN(4,e,t)},e.prototype.bit5=function(e,t){return this.bitN(5,e,t)},e.prototype.bit6=function(e,t){return this.bitN(6,e,t)},e.prototype.bit7=function(e,t){return this.bitN(7,e,t)},e.prototype.bit8=function(e,t){return this.bitN(8,e,t)},e.prototype.bit9=function(e,t){return this.bitN(9,e,t)},e.prototype.bit10=function(e,t){return this.bitN(10,e,t)},e.prototype.bit11=function(e,t){return this.bitN(11,e,t)},e.prototype.bit12=function(e,t){return this.bitN(12,e,t)},e.prototype.bit13=function(e,t){return this.bitN(13,e,t)},e.prototype.bit14=function(e,t){return this.bitN(14,e,t)},e.prototype.bit15=function(e,t){return this.bitN(15,e,t)},e.prototype.bit16=function(e,t){return this.bitN(16,e,t)},e.prototype.bit17=function(e,t){return this.bitN(17,e,t)},e.prototype.bit18=function(e,t){return this.bitN(18,e,t)},e.prototype.bit19=function(e,t){return this.bitN(19,e,t)},e.prototype.bit20=function(e,t){return this.bitN(20,e,t)},e.prototype.bit21=function(e,t){return this.bitN(21,e,t)},e.prototype.bit22=function(e,t){return this.bitN(22,e,t)},e.prototype.bit23=function(e,t){return this.bitN(23,e,t)},e.prototype.bit24=function(e,t){return this.bitN(24,e,t)},e.prototype.bit25=function(e,t){return this.bitN(25,e,t)},e.prototype.bit26=function(e,t){return this.bitN(26,e,t)},e.prototype.bit27=function(e,t){return this.bitN(27,e,t)},e.prototype.bit28=function(e,t){return this.bitN(28,e,t)},e.prototype.bit29=function(e,t){return this.bitN(29,e,t)},e.prototype.bit30=function(e,t){return this.bitN(30,e,t)},e.prototype.bit31=function(e,t){return this.bitN(31,e,t)},e.prototype.bit32=function(e,t){return this.bitN(32,e,t)},e.prototype.namely=function(e){return o[e]=this,this.alias=e,this},e.prototype.skip=function(e,t){return this.seek(e,t)},e.prototype.seek=function(e,t){if(t&&t.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:e})},e.prototype.string=function(e,t){if(!t.zeroTerminated&&!t.length&&!t.greedy)throw new Error("Neither length, zeroTerminated, nor greedy is defined for string.");if((t.zeroTerminated||t.length)&&t.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(t.stripNull&&!t.length&&!t.greedy)throw new Error("Length or greedy must be defined if stripNull is defined.");return t.encoding=t.encoding||"utf8",this.setNextParser("string",e,t)},e.prototype.buffer=function(e,t){if(!t.length&&!t.readUntil)throw new Error("Length nor readUntil is defined in buffer parser");return this.setNextParser("buffer",e,t)},e.prototype.array=function(e,t){if(!t.readUntil&&!t.length&&!t.lengthInBytes)throw new Error("Length option of array is not defined.");if(!t.type)throw new Error("Type option of array is not defined.");if("string"==typeof t.type&&!o[t.type]&&Object.keys(i).indexOf(t.type)<0)throw new Error('Specified primitive type "'+t.type+'" is not supported.');return this.setNextParser("array",e,t)},e.prototype.choice=function(e,t){if("object"!=typeof t&&"object"==typeof e&&(t=e,e=null),!t.tag)throw new Error("Tag option of array is not defined.");if(!t.choices)throw new Error("Choices option of array is not defined.");return Object.keys(t.choices).forEach((function(p){var r=parseInt(p,10),s=t.choices[r];if(isNaN(r))throw new Error("Key of choices must be a number.");if(!s)throw new Error("Choice Case "+p+" of "+e+" is not valid.");if("string"==typeof s&&!o[s]&&Object.keys(i).indexOf(s)<0)throw new Error('Specified primitive type "'+s+'" is not supported.')})),this.setNextParser("choice",e,t)},e.prototype.nest=function(t,p){if("object"!=typeof p&&"object"==typeof t&&(p=t,t=null),!p.type)throw new Error("Type option of nest is not defined.");if(!(p.type instanceof e||o[p.type]))throw new Error("Type option of nest must be a Parser object.");if(!(p.type instanceof e||t))throw new Error("options.type must be a object if variable name is omitted.");return this.setNextParser("nest",t,p)},e.prototype.pointer=function(t,p){if(!p.offset)throw new Error("Offset option of pointer is not defined.");if(!p.type)throw new Error("Type option of pointer is not defined.");if("string"==typeof p.type){if(Object.keys(i).indexOf(p.type)<0&&!o[p.type])throw new Error('Specified type "'+p.type+'" is not supported.')}else if(!(p.type instanceof e))throw new Error("Type option of pointer must be a string or a Parser object.");return this.setNextParser("pointer",t,p)},e.prototype.saveOffset=function(e,t){return this.setNextParser("saveOffset",e,t)},e.prototype.endianess=function(e){switch(e.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error("Invalid endianess: "+e)}return this},e.prototype.create=function(e){if(!(e instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=e,this},e.prototype.getContext=function(e){var t=new r.Context(e);return t.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(t),t.pushCode("return ___parser_"+this.alias+"(0).result;")):this.addRawCode(t),t},e.prototype.getCode=function(){return this.getContext().code},e.prototype.addRawCode=function(e){e.pushCode("var offset = 0;"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),this.resolveReferences(e),e.pushCode("return vars;")},e.prototype.addAliasedCode=function(e){return e.pushCode("function ___parser_"+this.alias+"(offset) {"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),e.markResolved(this.alias),this.resolveReferences(e),e.pushCode("return { offset: offset, result: vars };"),e.pushCode("}"),e},e.prototype.resolveReferences=function(e){var t=e.getUnresolvedReferences();e.markRequested(t),t.forEach((function(t){o[t].addAliasedCode(e)}))},e.prototype.compile=function(){var e=this.getContext("imports");this.compiled=new Function("imports","TextDecoder","return function (buffer, constructorFn) { "+e.code+" };")(e.imports,"undefined"==typeof TextDecoder?p(18).TextDecoder:TextDecoder)},e.prototype.sizeOf=function(){var t=NaN;if(Object.keys(i).indexOf(this.type)>=0)t=i[this.type];else if("string"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("buffer"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("array"===this.type&&"number"==typeof this.options.length){var p=NaN;"string"==typeof this.options.type?p=i[this.options.type]:this.options.type instanceof e&&(p=this.options.type.sizeOf()),t=this.options.length*p}else"seek"===this.type?t=this.options.length:"nest"===this.type?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t},e.prototype.parse=function(e){return this.compiled||this.compile(),this.compiled(e,this.constructorFn)},e.prototype.setNextParser=function(t,p,r){var o=new e;return o.type=t,o.varName=p,o.options=r||o.options,o.endian=this.endian,this.head?this.head.next=o:this.next=o,this.head=o,this},e.prototype.generate=function(e){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,e);break;case"bit":this.generateBit(e);break;case"string":this.generateString(e);break;case"buffer":this.generateBuffer(e);break;case"seek":this.generateSeek(e);break;case"nest":this.generateNest(e);break;case"array":this.generateArray(e);break;case"choice":this.generateChoice(e);break;case"pointer":this.generatePointer(e);break;case"saveOffset":this.generateSaveOffset(e)}this.generateAssert(e)}var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},e.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":var p=e.addImport(this.options.assert);e.pushCode("if (!"+p+".call(vars, "+t+")) {");break;case"number":e.pushCode("if ("+this.options.assert+" !== "+t+") {");break;case"string":e.pushCode('if ("'+this.options.assert+'" !== '+t+") {");break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: '+t+' is " + '+this.options.assert),e.pushCode("}")}},e.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},e.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){var p=0;e.bitFields.forEach((function(e){return p+=e.options.length}));var r=e.generateTmpVariable();if(p<=8)e.pushCode("var "+r+" = dataView.getUint8(offset);"),p=8;else if(p<=16)e.pushCode("var "+r+" = dataView.getUint16(offset);"),p=16;else if(p<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var "+o+" = dataView.getUint16(offset);"),e.pushCode("var "+i+" = dataView.getUint8(offset + 2);"),e.pushCode("var "+r+" = ("+o+" << 8) | "+i+";"),p=24}else{if(!(p<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var "+r+" = dataView.getUint32(offset);"),p=32}e.pushCode("offset += "+p/8+";");var s=0,n="be"===this.endian;e.bitFields.forEach((function(t){var o=t.options.length,i=n?p-s-o:s,a=(1<> "+i+" & "+a+";"),s+=o})),e.bitFields=[]}},e.prototype.generateSeek=function(e){var t=e.generateOption(this.options.length);e.pushCode("offset += "+t+";")},e.prototype.generateString=function(e){var t=e.generateVariable(this.varName),p=e.generateTmpVariable(),r=this.options.encoding,o="hex"===r.toLowerCase(),i='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){var s=this.options.length;e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0 && offset - "+p+" < "+s+");");var n="offset - "+p+" < "+s+" ? offset - 1 : offset";e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", "+n+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", "+n+"));")}else if(this.options.length){s=e.generateOption(this.options.length);e.pushCode(o?t+" = Array.from(buffer.subarray(offset, offset + "+s+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray(offset, offset + "+s+"));"),e.pushCode("offset += "+s+";")}else this.options.zeroTerminated?(e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset - 1)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset - 1));")):this.options.greedy&&(e.pushCode("var "+p+" = offset;"),e.pushCode("while(buffer.length > offset++);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset));"));this.options.stripNull&&e.pushCode(t+" = "+t+".replace(/\\x00+$/g, '')")},e.prototype.generateBuffer=function(e){var t=e.generateVariable(this.varName);if("function"==typeof this.options.readUntil){var p=this.options.readUntil,r=e.generateTmpVariable(),o=e.generateTmpVariable();e.pushCode("var "+r+" = offset;"),e.pushCode("var "+o+" = 0;"),e.pushCode("while (offset < buffer.length) {"),e.pushCode(o+" = dataView.getUint8(offset);");var i=e.addImport(p);e.pushCode("if ("+i+".call(this, "+o+", buffer.subarray(offset))) break;"),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(t+" = buffer.subarray("+r+", offset);")}else if("eof"===this.options.readUntil)e.pushCode(t+" = buffer.subarray(offset);");else{var s=e.generateOption(this.options.length);e.pushCode(t+" = buffer.subarray(offset, offset + "+s+");"),e.pushCode("offset += "+s+";")}this.options.clone&&e.pushCode(t+" = buffer.constructor.from("+t+");")},e.prototype.generateArray=function(t){var p=t.generateOption(this.options.length),r=t.generateOption(this.options.lengthInBytes),a=this.options.type,l=t.generateTmpVariable(),u=t.generateVariable(this.varName),c=t.generateTmpVariable(),y=this.options.key,h="string"==typeof y;if(h?t.pushCode(u+" = {};"):t.pushCode(u+" = [];"),"function"==typeof this.options.readUntil?t.pushCode("do {"):"eof"===this.options.readUntil?t.pushCode("for (var "+l+" = 0; offset < buffer.length; "+l+"++) {"):void 0!==r?t.pushCode("for (var "+l+" = offset + "+r+"; offset < "+l+"; ) {"):t.pushCode("for (var "+l+" = "+p+"; "+l+" > 0; "+l+"--) {"),"string"==typeof a)if(o[a]){var f=t.generateTmpVariable();t.pushCode("var "+f+" = ___parser_"+a+"(offset);"),t.pushCode("var "+c+" = "+f+".result; offset = "+f+".offset;"),a!==this.alias&&t.addReference(a)}else{var d=s[a],_=n[a];t.pushCode("var "+c+" = dataView.get"+d+"(offset, "+_+");"),t.pushCode("offset += "+i[a]+";")}else a instanceof e&&(t.pushCode("var "+c+" = {};"),t.pushScope(c),a.generate(t),t.popScope());if(h?t.pushCode(u+"["+c+"."+y+"] = "+c+";"):t.pushCode(u+".push("+c+");"),t.pushCode("}"),"function"==typeof this.options.readUntil){var S=this.options.readUntil,g=t.addImport(S);t.pushCode("while (!"+g+".call(this, "+c+", buffer.subarray(offset)));")}},e.prototype.generateChoiceCase=function(t,p,r){if("string"==typeof r){var a=t.generateVariable(this.varName);if(o[r]){var l=t.generateTmpVariable();t.pushCode("var "+l+" = ___parser_"+r+"(offset);"),t.pushCode(a+" = "+l+".result; offset = "+l+".offset;"),r!==this.alias&&t.addReference(r)}else{var u=s[r],c=n[r];t.pushCode(a+" = dataView.get"+u+"(offset, "+c+");"),t.pushCode("offset += "+i[r])}}else r instanceof e&&(t.pushPath(p),r.generate(t),t.popPath(p))},e.prototype.generateChoice=function(e){var t=this,p=e.generateOption(this.options.tag);this.varName&&e.pushCode(e.generateVariable(this.varName)+" = {};"),e.pushCode("switch("+p+") {"),Object.keys(this.options.choices).forEach((function(p){var r=t.options.choices[parseInt(p,10)];e.pushCode("case "+p+":"),t.generateChoiceCase(e,t.varName,r),e.pushCode("break;")})),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + '+p+' + " at choice"'),e.pushCode("}")},e.prototype.generateNest=function(t){var p=t.generateVariable(this.varName);if(this.options.type instanceof e)this.varName&&t.pushCode(p+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var r=t.generateTmpVariable();t.pushCode("var "+r+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(p+" = "+r+".result; offset = "+r+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}},e.prototype.generateFormatter=function(e,t,p){if("function"==typeof p){var r=e.addImport(p);e.pushCode(t+" = "+r+".call(this, "+t+");")}},e.prototype.generatePointer=function(t){var p=this.options.type,r=t.generateOption(this.options.offset),a=t.generateTmpVariable(),l=t.generateVariable(this.varName);if(t.pushCode("var "+a+" = offset;"),t.pushCode("offset = "+r+";"),this.options.type instanceof e)t.pushCode(l+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var u=t.generateTmpVariable();t.pushCode("var "+u+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(l+" = "+u+".result; offset = "+u+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(i).indexOf(this.options.type)>=0){var c=s[p],y=n[p];t.pushCode(l+" = dataView.get"+c+"(offset, "+y+");"),t.pushCode("offset += "+i[p]+";")}t.pushCode("offset = "+a+";")},e.prototype.generateSaveOffset=function(e){var t=e.generateVariable(this.varName);e.pushCode(t+" = offset")},e}();t.Parser=a},function(e,t,p){(function(e,r){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],p=0;p=i)return e;switch(e){case"%s":return String(r[p++]);case"%d":return Number(r[p++]);case"%j":try{return JSON.stringify(r[p++])}catch(e){return"[Circular]"}default:return e}})),a=r[p];p=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),f(p)?r.showHidden=p:p&&t._extend(r,p),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),u(r,e,r.depth)}function a(e,t){var p=n.styles[t];return p?"["+n.colors[p][0]+"m"+e+"["+n.colors[p][1]+"m":e}function l(e,t){return e}function u(e,p,r){if(e.customInspect&&p&&I(p.inspect)&&p.inspect!==t.inspect&&(!p.constructor||p.constructor.prototype!==p)){var o=p.inspect(r,e);return S(o)||(o=u(e,o,r)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var p="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(p,"string")}if(_(t))return e.stylize(""+t,"number");if(f(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,p);if(i)return i;var s=Object.keys(p),n=function(e){var t={};return e.forEach((function(e,p){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(p)),b(p)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return c(p);if(0===s.length){if(I(p)){var a=p.name?": "+p.name:"";return e.stylize("[Function"+a+"]","special")}if(w(p))return e.stylize(RegExp.prototype.toString.call(p),"regexp");if(m(p))return e.stylize(Date.prototype.toString.call(p),"date");if(b(p))return c(p)}var l,E="",v=!1,L=["{","}"];(h(p)&&(v=!0,L=["[","]"]),I(p))&&(E=" [Function"+(p.name?": "+p.name:"")+"]");return w(p)&&(E=" "+RegExp.prototype.toString.call(p)),m(p)&&(E=" "+Date.prototype.toUTCString.call(p)),b(p)&&(E=" "+c(p)),0!==s.length||v&&0!=p.length?r<0?w(p)?e.stylize(RegExp.prototype.toString.call(p),"regexp"):e.stylize("[Object]","special"):(e.seen.push(p),l=v?function(e,t,p,r,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return p[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+p[1];return p[0]+t+" "+e.join(", ")+" "+p[1]}(l,E,L)):L[0]+E+L[1]}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function y(e,t,p,r,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(r,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(p)?u(e,a.value,null):u(e,a.value,p-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+n.split("\n").map((function(e){return" "+e})).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function h(e){return Array.isArray(e)}function f(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===v(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===v(e)}function b(e){return E(e)&&("[object Error]"===v(e)||e instanceof Error)}function I(e){return"function"==typeof e}function v(e){return Object.prototype.toString.call(e)}function L(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var p=r.pid;s[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,p,r)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=h,t.isBoolean=f,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=I,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=p(29);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function U(){var e=new Date,t=[L(e.getHours()),L(e.getMinutes()),L(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",U(),t.format.apply(t,arguments))},t.inherits=p(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var p=Object.keys(t),r=p.length;r--;)e[p[r]]=t[p[r]];return e}}).call(this,p(5),p(9))},function(e,t,p){"use strict";(function(t,r){var o=p(11);e.exports=w;var i,s=p(16);w.ReadableState=g;p(13).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=p(20),l=p(12).Buffer,u=t.Uint8Array||function(){};var c=p(10);c.inherits=p(6);var y=p(32),h=void 0;h=y&&y.debuglog?y.debuglog("stream"):function(){};var f,d=p(33),_=p(21);c.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var r=t instanceof(i=i||p(7));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(f||(f=p(22).StringDecoder),this.decoder=new f(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||p(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,p,r,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var p=t.decoder.end();p&&p.length&&(t.buffer.push(p),t.length+=t.objectMode?1:p.length)}t.ended=!0,I(e)}(e,s)):(o||(i=function(e,t){var p;r=t,l.isBuffer(r)||r instanceof u||"string"==typeof t||void 0===t||e.objectMode||(p=new TypeError("Invalid non-string/buffer chunk"));var r;return p}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!p?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):L(e,s)):m(e,s,t,!1))):r||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(v,e):v(e))}function v(e){h("emit readable"),e.emit("readable"),D(e)}function L(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(T,e,t))}function T(e,t){for(var p=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(p=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):p=function(e,t,p){var r;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++r,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++r}return t.length-=r,o}(e,t):function(e,t){var p=l.allocUnsafe(e),r=t.head,o=1;r.data.copy(p),e-=r.data.length;for(;r=r.next;){var i=r.data,s=e>i.length?i.length:e;if(i.copy(p,p.length-e,0,s),0===(e-=s)){s===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++o}return t.length-=o,p}(e,t);return r}(e,t.buffer,t.decoder),p);var p}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function C(e,t){for(var p=0,r=e.length;p=t.highWaterMark||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):I(this),null;if(0===(e=b(e,t))&&t.ended)return 0===t.length&&G(this),null;var r,o=t.needReadable;return h("need readable",o),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),p!==e&&t.ended&&G(this)),null!==r&&this.emit("data",r),r},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var p=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,h("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?u:w;function l(t,r){h("onunpipe"),t===p&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,h("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",c),e.removeListener("error",_),e.removeListener("unpipe",l),p.removeListener("end",u),p.removeListener("end",w),p.removeListener("data",d),y=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}function u(){h("onend"),e.end()}i.endEmitted?o.nextTick(a):p.once("end",a),e.on("unpipe",l);var c=function(e){return function(){var t=e._readableState;h("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,D(e))}}(p);e.on("drain",c);var y=!1;var f=!1;function d(t){h("ondata"),f=!1,!1!==e.write(t)||f||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==C(i.pipes,e))&&!y&&(h("false write response, pause",p._readableState.awaitDrain),p._readableState.awaitDrain++,f=!0),p.pause())}function _(t){h("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){h("onfinish"),e.removeListener("close",S),w()}function w(){h("unpipe"),p.unpipe(e)}return p.on("data",d),function(e,t,p){if("function"==typeof e.prependListener)return e.prependListener(t,p);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(p):e._events[t]=[p,e._events[t]]:e.on(t,p)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",p),i.flowing||(h("pipe resume"),p.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,p={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,p)),this;if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,p=function(e,t,p){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==p?p:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var p=e.toString("utf16le",t);if(p){var r=p.charCodeAt(p.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],p.slice(0,-1)}return p}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var p=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,p)}return t}function u(e,t){var p=(e.length-t)%3;return 0===p?e.toString("base64",t):(this.lastNeed=3-p,this.lastTotal=3,1===p?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-p))}function c(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function y(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,p;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";p=this.lastNeed,this.lastNeed=0}else p=0;return p=0)return o>0&&(e.lastNeed=o-1),o;if(--r=0)return o>0&&(e.lastNeed=o-2),o;if(--r=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=p;var r=e.length-(p-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,p){"use strict";e.exports=s;var r=p(7),o=p(10);function i(e,t){var p=this._transformState;p.transforming=!1;var r=p.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));p.writechunk=null,p.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&p],t&=65535;return t}r.exports={preambleByte:85,crc16:S,sbpIdTable:h,sbpMessageTypesTable:f,decode:function(e){var t=d.parse(e),p=h[t.msg_type];return void 0===p?(console.log("Unknown message type: ",t.msg_type),new s(t)):new p(t)},dispatch:function(t,p,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof p?i=p:(i=o,s=p),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(p){t.pause();try{if((n=e.concat([n,p])).length<2)return;var o=function(){var e,t,p,o,i,a,l;for(l=0;ln.length)throw new u;e=n.slice(l+1,l+6),p=n.readUInt16LE(l+1),_=n.readUInt16LE(l+3),o=n.readUInt8(l+5);var y=s&&Array.isArray(s)&&-1!==s.indexOf(p),h=s&&"number"==typeof s&&s&p,f=s&&"function"==typeof s&&s(p);if(s&&!(y||h||f))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new u;a=S(n.slice(l+6,l+6+o),S(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[r.exports.decode(d),d];throw n=n.slice(l+1),new c}();if(null===o)return;var l=o[0],y=o[1];i(null,l,y)}catch(e){if(!(e instanceof u||e instanceof c))throw e}finally{t.resume(),n.length>0&&setTimeout((function(){a(new e(0))}),0)}};t.on("data",a)}},function(e){var p={function:!0,object:!0},i=p[typeof window]&&window||this,s=p[typeof t]&&t&&!t.nodeType&&t,n=p[typeof r]&&r&&!r.nodeType&&r,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(r.exports)}).call(this,p(8).Buffer,p(27)(e),p(5))},function(e,t,p){"use strict";t.byteLength=function(e){var t=l(e),p=t[0],r=t[1];return 3*(p+r)/4-r},t.toByteArray=function(e){for(var t,p=l(e),r=p[0],s=p[1],n=new i(function(e,t,p){return 3*(t+p)/4-p}(0,r,s)),a=0,u=s>0?r-4:r,c=0;c>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(c)]<<2|o[e.charCodeAt(c+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(c)]<<10|o[e.charCodeAt(c+1)]<<4|o[e.charCodeAt(c+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,p=e.length,o=p%3,i=[],s=0,n=p-o;sn?n:s+16383));1===o?(t=e[p-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[p-2]<<8)+e[p-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var p=e.indexOf("=");return-1===p&&(p=t),[p,p===t?0:4-p%4]}function u(e,t,p){for(var o,i,s=[],n=t;n>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,p,r,o){var i,s,n=8*o-r-1,a=(1<>1,u=-7,c=p?o-1:0,y=p?-1:1,h=e[t+c];for(c+=y,i=h&(1<<-u)-1,h>>=-u,u+=n;u>0;i=256*i+e[t+c],c+=y,u-=8);for(s=i&(1<<-u)-1,i>>=-u,u+=r;u>0;s=256*s+e[t+c],c+=y,u-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,r),i-=l}return(h?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,p,r,o,i){var s,n,a,l=8*i-o-1,u=(1<>1,y=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:i-1,f=r?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+c>=1?y/a:y*Math.pow(2,1-c))*a>=2&&(s++,a/=2),s+c>=u?(n=0,s=u):s+c>=1?(n=(t*a-1)*Math.pow(2,o),s+=c):(n=t*Math.pow(2,c-1)*Math.pow(2,o),s=0));o>=8;e[p+h]=255&n,h+=f,n/=256,o-=8);for(s=s<0;e[p+h]=255&s,h+=f,s/=256,l-=8);e[p+h-f]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Context=void 0;var r=function(){function e(e){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references={},this.imports=[],this.reverseImports=new Map,this.importPath=e}return e.prototype.generateVariable=function(e){var t=[],p=this.scopes[this.scopes.length-1];return t.push.apply(t,p),e&&t.push(e),t.join(".")},e.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return this.addImport(e)+".call("+this.generateVariable()+", vars)"}},e.prototype.generateError=function(e){this.pushCode("throw new Error("+e+");")},e.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},e.prototype.pushCode=function(e){this.code+=e+"\n"},e.prototype.pushPath=function(e){e&&this.scopes[this.scopes.length-1].push(e)},e.prototype.popPath=function(e){e&&this.scopes[this.scopes.length-1].pop()},e.prototype.pushScope=function(e){this.scopes.push([e])},e.prototype.popScope=function(){this.scopes.pop()},e.prototype.addImport=function(e){if(!this.importPath)return"("+e+")";var t=this.reverseImports.get(e);return t||(t=this.imports.push(e)-1,this.reverseImports.set(e,t)),this.importPath+"["+t+"]"},e.prototype.addReference=function(e){this.references[e]||(this.references[e]={resolved:!1,requested:!1})},e.prototype.markResolved=function(e){this.references[e].resolved=!0},e.prototype.markRequested=function(e){var t=this;e.forEach((function(e){t.references[e].requested=!0}))},e.prototype.getUnresolvedReferences=function(){var e=this.references;return Object.keys(this.references).filter((function(t){return!e[t].resolved&&!e[t].requested}))},e}();t.Context=r},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,p){(function(e){function p(e,t){for(var p=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),p++):p&&(e.splice(r,1),p--)}if(t)for(;p--;p)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var p=[],r=0;r=-1&&!r;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,r="/"===s.charAt(0))}return(r?"/":"")+(t=p(i(t.split("/"),(function(e){return!!e})),!r).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===s(e,-1);return(e=p(i(e.split("/"),(function(e){return!!e})),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,p){function r(e){for(var t=0;t=0&&""===e[p];p--);return t>p?[]:e.slice(t,p-t+1)}e=t.resolve(e).substr(1),p=t.resolve(p).substr(1);for(var o=r(e.split("/")),i=r(p.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,p=""+t.data;t=t.next;)p+=e+t.data;return p},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t=r.allocUnsafe(e>>>0),p=this.head,o=0;p;)i(p.data,t,o),o+=p.data.length,p=p.next;return t},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,p){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},p(36),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,p(5))},function(e,t,p){(function(e,t){!function(e,p){"use strict";if(!e.setImmediate){var r,o,i,s,n,a=1,l={},u=!1,c=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){f(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,p=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=p,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){f(e.data)},r=function(e){i.port2.postMessage(e)}):c&&"onreadystatechange"in c.createElement("script")?(o=c.documentElement,r=function(e){var t=c.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(f,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&f(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(t){e.postMessage(s+t,"*")}),y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),p=0;p * @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 I=function(e,t){return p.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",I.prototype.msg_type=564,I.prototype.constructor=I,I.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"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeDoubleLE",8]),I.prototype.fieldSpec.push(["y","writeDoubleLE",8]),I.prototype.fieldSpec.push(["z","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_POS_LLH_GNSS",v.prototype.msg_type=554,v.prototype.constructor=v,v.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"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),v.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),v.prototype.fieldSpec.push(["height","writeDoubleLE",8]),v.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_POS_LLH_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:I,MsgPosEcefCovGnss:I,554:v,MsgPosLlhGnss:v,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_GPS",I.prototype.msg_type=138,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 v=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_EPHEMERIS_QZSS",v.prototype.msg_type=142,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeFloatLE",4]),v.prototype.fieldSpec.push(["af1","writeFloatLE",4]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_EPHEMERIS_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:I,MsgEphemerisGps:I,142:v,MsgEphemerisQzss:v,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 I=function(e,t){return p.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_IAR_STATE",I.prototype.msg_type=25,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("num_hyps"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_MASK_SATELLITE",v.prototype.msg_type=43,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["mask","writeUInt8",1]),v.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:I,MsgIarState:I,43:v,MsgMaskSatellite:v,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_DEP",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP",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="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(p.prototype)).messageType="BoundsHeader",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),m.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),m.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),m.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),m.prototype.fieldSpec.push(["sol_id","writeUInt8",1]);var b=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION",b.prototype.msg_type=1533,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("n_sats").array("stec_sat_list",{type:y.prototype.parser,length:"n_sats"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),b.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var I=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",I.prototype.msg_type=1532,I.prototype.constructor=I,I.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"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),I.prototype.fieldSpec.push(["index","writeUInt16LE",2]),I.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),I.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return p.call(this,e),this.messageType="STECSatElementIntegrity",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="STECSatElementIntegrity",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("stec_residual",{type:_.prototype.parser}).uint8("stec_bound_mu").uint8("stec_bound_sig").uint8("stec_bound_mu_dot").uint8("stec_bound_sig_dot"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["stec_residual",_.prototype.fieldSpec]),v.prototype.fieldSpec.push(["stec_bound_mu","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_mu_dot","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig_dot","writeUInt8",1]);var L=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",L.prototype.msg_type=1534,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("tropo_qi").uint16("grid_point_id").nest("tropo_delay_correction",{type:f.prototype.parser}).uint8("tropo_bound_mu").uint8("tropo_bound_sig").uint8("n_sats").array("stec_sat_list",{type:v.prototype.parser,length:"n_sats"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),L.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),L.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_qi","writeUInt8",1]),L.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tropo_bound_mu","writeUInt8",1]),L.prototype.fieldSpec.push(["tropo_bound_sig","writeUInt8",1]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_sat_list","array",v.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var T=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(p.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP",T.prototype.msg_type=1526,T.prototype.constructor=T,T.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"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),T.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),T.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),T.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var U=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(p.prototype)).messageType="MSG_SSR_TILE_DEFINITION",U.prototype.msg_type=1527,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint8("ssr_sol_id").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"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),U.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),U.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),U.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),U.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var M=function(e,t){return p.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(p.prototype)).messageType="SatelliteAPC",M.prototype.constructor=M,M.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"}),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),M.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),M.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),M.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),M.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);var D=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(p.prototype)).messageType="MSG_SSR_SATELLITE_APC",D.prototype.msg_type=1540,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").array("apc",{type:M.prototype.parser,readUntil:"eof"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["apc","array",M.prototype.fieldSpec,function(){return this.fields.array.length},null]);var O=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};(O.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",O.prototype.msg_type=1500,O.prototype.constructor=O,O.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"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),O.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),O.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),O.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),O.prototype.fieldSpec.push(["iod","writeUInt8",1]),O.prototype.fieldSpec.push(["radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["along","writeInt32LE",4]),O.prototype.fieldSpec.push(["cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["c0","writeInt32LE",4]),O.prototype.fieldSpec.push(["c1","writeInt32LE",4]),O.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var G=function(e,t){return p.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(p.prototype)).messageType="STECHeaderDepA",G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),G.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),G.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),G.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),G.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var A=function(e,t){return p.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(p.prototype)).messageType="GriddedCorrectionHeaderDepA",A.prototype.constructor=A,A.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"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),A.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),A.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),A.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),A.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),A.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var C=function(e,t){return p.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(p.prototype)).messageType="GridDefinitionHeaderDepA",C.prototype.constructor=C,C.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"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),C.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),C.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);var R=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};(R.prototype=Object.create(p.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",R.prototype.msg_type=1515,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("header",{type:G.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["header",G.prototype.fieldSpec]),R.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var P=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};(P.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",P.prototype.msg_type=1520,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),P.prototype.fieldSpec.push(["index","writeUInt16LE",2]),P.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),P.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);var N=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};(N.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",N.prototype.msg_type=1530,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),N.prototype.fieldSpec.push(["index","writeUInt16LE",2]),N.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),N.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var j=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};(j.prototype=Object.create(p.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",j.prototype.msg_type=1525,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),j.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]);var x=function(e,t){return p.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(p.prototype)).messageType="OrbitClockBound",x.prototype.constructor=x,x.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"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);var k=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",k.prototype.msg_type=1502,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:x.prototype.parser,length:"n_sats"}),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),k.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),k.prototype.fieldSpec.push(["const_id","writeUInt8",1]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["orbit_clock_bounds","array",x.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var F=function(e,t){return p.call(this,e),this.messageType="CodePhaseBiasesSatSig",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(p.prototype)).messageType="CodePhaseBiasesSatSig",F.prototype.constructor=F,F.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"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),F.prototype.fieldSpec.push(["signal_id","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_sig","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_sig","writeUInt8",1]);var B=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};(B.prototype=Object.create(p.prototype)).messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",B.prototype.msg_type=1516,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats_signals").array("satellites_signals",{type:F.prototype.parser,length:"n_sats_signals"}),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),B.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),B.prototype.fieldSpec.push(["const_id","writeUInt8",1]),B.prototype.fieldSpec.push(["n_sats_signals","writeUInt8",1]),B.prototype.fieldSpec.push(["satellites_signals","array",F.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats_signals"]);var q=function(e,t){return p.call(this,e),this.messageType="OrbitClockBoundDegradation",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(p.prototype)).messageType="OrbitClockBoundDegradation",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint8("orb_radial_bound_mu_dot").uint8("orb_along_bound_mu_dot").uint8("orb_cross_bound_mu_dot").uint8("orb_radial_bound_sig_dot").uint8("orb_along_bound_sig_dot").uint8("orb_cross_bound_sig_dot").uint8("clock_bound_mu_dot").uint8("clock_bound_sig_dot"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["orb_radial_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_radial_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_sig_dot","writeUInt8",1]);var z=function(e,t){return p.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(p.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",z.prototype.msg_type=1503,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint64("sat_bitmask").nest("orbit_clock_bounds_degradation",{type:q.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),z.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),z.prototype.fieldSpec.push(["const_id","writeUInt8",1]),z.prototype.fieldSpec.push(["sat_bitmask","writeUInt64LE",8]),z.prototype.fieldSpec.push(["orbit_clock_bounds_degradation",q.prototype.fieldSpec]),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,MsgSsrStecCorrectionDep:E,BoundsHeader:m,1533:b,MsgSsrStecCorrection:b,1532:I,MsgSsrGriddedCorrection:I,STECSatElementIntegrity:v,1534:L,MsgSsrGriddedCorrectionBounds:L,1526:T,MsgSsrTileDefinitionDep:T,1527:U,MsgSsrTileDefinition:U,SatelliteAPC:M,1540:D,MsgSsrSatelliteApc:D,1500:O,MsgSsrOrbitClockDepA:O,STECHeaderDepA:G,GriddedCorrectionHeaderDepA:A,GridDefinitionHeaderDepA:C,1515:R,MsgSsrStecCorrectionDepA:R,1520:P,MsgSsrGriddedCorrectionNoStdDepA:P,1530:N,MsgSsrGriddedCorrectionDepA:N,1525:j,MsgSsrGridDefinitionDepA:j,OrbitClockBound:x,1502:k,MsgSsrOrbitClockBounds:k,CodePhaseBiasesSatSig:F,1516:B,MsgSsrCodePhaseBiasesBounds:B,OrbitClockBoundDegradation:q,1503:z,MsgSsrOrbitClockBoundsDegradation:z}},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 I=function(e,t){return p.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(p.prototype)).messageType="TrackingChannelStateDepB",I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["state","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),I.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var v=function(e,t){return p.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(p.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",v.prototype.msg_type=19,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").array("states",{type:I.prototype.parser,readUntil:"eof"}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["states","array",I.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:I,19:v,MsgTrackingStateDepB:v}},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 r(e,t){if(e===t)return 0;for(var p=e.length,r=t.length,o=0,i=Math.min(p,r);o=0;l--)if(u[l]!==c[l])return!1;for(l=u.length-1;l>=0;l--)if(a=u[l],!g(e[a],t[a],p,r))return!1;return!0}(e,t,p,s))}return p?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,p,r){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof p&&(r=p,p=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(p&&p.name?" ("+p.name+").":".")+(r?" "+r:"."),e&&!o&&_(o,p,"Missing expected exception"+r);var s="string"==typeof r,n=!e&&o&&!p;if((!e&&i.isError(o)&&s&&E(o,p)||n)&&_(o,p,"Got unwanted exception"+r),e&&o&&p&&!E(o,p)||!e&&o)throw o}c.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 p=new Error;if(p.stack){var r=p.stack,o=h(t),i=r.indexOf("\n"+o);if(i>=0){var s=r.indexOf("\n",i+1);r=r.substring(s+1)}this.stack=r}}},i.inherits(c.AssertionError,Error),c.fail=_,c.ok=S,c.equal=function(e,t,p){e!=t&&_(e,t,p,"==",c.equal)},c.notEqual=function(e,t,p){e==t&&_(e,t,p,"!=",c.notEqual)},c.deepEqual=function(e,t,p){g(e,t,!1)||_(e,t,p,"deepEqual",c.deepEqual)},c.deepStrictEqual=function(e,t,p){g(e,t,!0)||_(e,t,p,"deepStrictEqual",c.deepStrictEqual)},c.notDeepEqual=function(e,t,p){g(e,t,!1)&&_(e,t,p,"notDeepEqual",c.notDeepEqual)},c.notDeepStrictEqual=function e(t,p,r){g(t,p,!0)&&_(t,p,r,"notDeepStrictEqual",e)},c.strictEqual=function(e,t,p){e!==t&&_(e,t,p,"===",c.strictEqual)},c.notStrictEqual=function(e,t,p){e===t&&_(e,t,p,"!==",c.notStrictEqual)},c.throws=function(e,t,p){m(!0,e,t,p)},c.doesNotThrow=function(e,t,p){m(!1,e,t,p)},c.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var p in e)s.call(e,p)&&t.push(p);return t}}).call(this,p(5))},function(e,t,p){var r;!function(p){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 p=parseInt(e,t||10);return this._low=65535&p,this._high=p>>>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,p=t>>>16;return p+=this._high+e._high,this._low=65535&t,this._high=65535&p,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,p,r=this._high,o=this._low,i=e._high,s=e._low;return t=(p=o*s)>>>16,t+=r*s,t&=65535,t+=o*i,this._low=65535&p,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(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._low=0,this._high=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=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===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r;!function(p){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,p,r){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,p,r)}function n(e,t,p,r){return void 0===p?(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|p,this._a48=0|r,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 p=o[t]||new s(Math.pow(t,5)),r=0,i=e.length;r=0&&(p.div(t),r[o]=p.remainder.toNumber().toString(e),p.gt(t));o--);return r[o-1]=p.toNumber().toString(e),r.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,p=t>>>16,r=(p+=this._a16+e._a16)>>>16,o=(r+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&p,this._a32=65535&r,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,p=this._a16,r=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,u=(l+=t*s)>>>16;l&=65535,u+=(l+=p*i)>>>16;var c=(u+=t*n)>>>16;return u&=65535,c+=(u+=p*s)>>>16,u&=65535,c+=(u+=r*i)>>>16,c+=t*e._a48,c&=65535,c+=p*n,c&=65535,c+=r*s,c&=65535,c+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&u,this._a48=65535&c,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(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=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 p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p<>>32-e,i=r<>>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 p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p>>>e|r<<32-e,i=r>>>e|p<<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===(r=function(){return s}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=(p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",u.prototype.msg_type=21,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["snr","writeFloatLE",4]),u.prototype.fieldSpec.push(["cp","writeFloatLE",4]),u.prototype.fieldSpec.push(["cf","writeFloatLE",4]),u.prototype.fieldSpec.push(["prn","writeUInt8",1]);var c=function(e,t){return r.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="AcqSvProfile",c.prototype.constructor=c,c.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"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["job_type","writeUInt8",1]),c.prototype.fieldSpec.push(["status","writeUInt8",1]),c.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),c.prototype.fieldSpec.push(["int_time","writeUInt8",1]),c.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),c.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),c.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),c.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),c.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),c.prototype.fieldSpec.push(["cf","writeInt32LE",4]),c.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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:c.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["acq_sv_profile","array",c.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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:u,MsgAcqResultDepA:u,AcqSvProfile:c,AcqSvProfileDep:y,46:h,MsgAcqSvProfile:h,30:f,MsgAcqSvProfileDep:f}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",u.prototype.msg_type=176,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),u.prototype.fieldSpec=[],u.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:u,MsgBootloaderHandshakeDepA:u}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_REQ",u.prototype.msg_type=173,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),u.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),u.prototype.fieldSpec.push(["filename","string",null]),u.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_RESP",c.prototype.msg_type=171,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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:u,MsgFileioWriteReq:u,171:c,MsgFileioWriteResp:c,4097:y,MsgFileioConfigReq:y,4098:h,MsgFileioConfigResp:h}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",u.prototype.msg_type=227,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",c.prototype.msg_type=228,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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:u,MsgStmFlashLockSector:u,228:c,MsgStmFlashUnlockSector:c,232:y,MsgStmUniqueIdReq:y,229:h,MsgStmUniqueIdResp:h,243:f,MsgM25FlashWriteStatus:f}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal,p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),s=p(0).SvId,n=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_HIGH_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_HIGH_LEVEL",n.prototype.msg_type=3001,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).nest("corr_time",{type:i.prototype.parser}).uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("use_gps_sat").uint8("use_gal_sat").uint8("use_bds_sat").array("reserved",{length:6,type:"uint8"}).uint8("use_tropo_grid_points").uint8("use_iono_grid_points").uint8("use_iono_tile_sat_los").uint8("use_iono_grid_point_sat_los"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),n.prototype.fieldSpec.push(["corr_time",i.prototype.fieldSpec]),n.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),n.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),n.prototype.fieldSpec.push(["use_gps_sat","writeUInt8",1]),n.prototype.fieldSpec.push(["use_gal_sat","writeUInt8",1]),n.prototype.fieldSpec.push(["use_bds_sat","writeUInt8",1]),n.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},6]),n.prototype.fieldSpec.push(["use_tropo_grid_points","writeUInt8",1]),n.prototype.fieldSpec.push(["use_iono_grid_points","writeUInt8",1]),n.prototype.fieldSpec.push(["use_iono_tile_sat_los","writeUInt8",1]),n.prototype.fieldSpec.push(["use_iono_grid_point_sat_los","writeUInt8",1]);var a=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_SATELLITES",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_SATELLITES",a.prototype.msg_type=3005,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint8("chain_id").uint8("const_id").uint8("n_faulty_sats").array("faulty_sats",{type:"uint8",length:"n_faulty_sats"}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),a.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),a.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),a.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),a.prototype.fieldSpec.push(["const_id","writeUInt8",1]),a.prototype.fieldSpec.push(["n_faulty_sats","writeUInt8",1]),a.prototype.fieldSpec.push(["faulty_sats","array","writeUInt8",function(){return 1},"n_faulty_sats"]);var l=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",l.prototype.msg_type=3011,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),l.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),l.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),l.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),l.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),l.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),l.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),l.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);var u=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",u.prototype.msg_type=3015,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),u.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),u.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),u.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),u.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),u.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",c.prototype.msg_type=3021,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),c.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),c.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),c.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),c.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),c.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",y.prototype.msg_type=3025,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint16("grid_point_id").uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),y.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),y.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),y.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),y.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),y.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),y.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),y.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),y.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]),e.exports={3001:n,MsgSsrFlagHighLevel:n,3005:a,MsgSsrFlagSatellites:a,3011:l,MsgSsrFlagTropoGridPoints:l,3015:u,MsgSsrFlagIonoGridPoints:u,3021:c,MsgSsrFlagIonoTileSatLos:c,3025:y,MsgSsrFlagIonoGridPointSatLos:y}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",u.prototype.msg_type=32517,u.prototype.constructor=u,u.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"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),u.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),u.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),u.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",c.prototype.msg_type=32518,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt8",1]),c.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),c.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),c.prototype.fieldSpec.push(["cmdline","string",null]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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:u,MsgLinuxSocketUsage:u,32518:c,MsgLinuxProcessFdCount:c,32519:y,MsgLinuxProcessFdSummary:y,32520:h,MsgLinuxCpuState:h,32521:f,MsgLinuxMemState:f,32522:d,MsgLinuxSysState:d}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GPS_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UTC_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF",u.prototype.msg_type=521,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").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(["accuracy","writeUInt16LE",2]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV",c.prototype.msg_type=532,c.prototype.constructor=c,c.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"),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(["cov_x_x","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="EstimatedHorizontalErrorEllipse",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_ACC",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",I.prototype.msg_type=564,I.prototype.constructor=I,I.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"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeDoubleLE",8]),I.prototype.fieldSpec.push(["y","writeDoubleLE",8]),I.prototype.fieldSpec.push(["z","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_GNSS",v.prototype.msg_type=554,v.prototype.constructor=v,v.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"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),v.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),v.prototype.fieldSpec.push(["height","writeDoubleLE",8]),v.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_GNSS",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_COG",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.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:u,MsgPosEcef:u,532:c,MsgPosEcefCov:c,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:I,MsgPosEcefCovGnss:I,554:v,MsgPosLlhGnss:v,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,u=p(0).GPSTimeSec,c=(p(0).SvId,function(e,t){return r.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(r.prototype)).messageType="ObservationHeader",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("t",{type:a.prototype.parser}).uint8("n_obs"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var y=function(e,t){return r.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("obs",{type:h.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return r.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:u.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",u.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 r.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:u.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",u.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 r.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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:u.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",u.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var I=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS",I.prototype.msg_type=138,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:u.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",u.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt8",1]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_QZSS",v.prototype.msg_type=142,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:u.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",u.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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:u.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",u.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var T=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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:u.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",u.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var U=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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:u.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",u.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.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 r.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.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 r.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(r.prototype)).messageType="MSG_IONO",Q.prototype.msg_type=144,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:u.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",u.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 r.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(r.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:u.prototype.parser}).uint32("l2c_mask"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["t_nmct",u.prototype.fieldSpec]),K.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);var X=function(e,t){return r.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(r.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:u.prototype.parser}).nest("gc",{type:X.prototype.parser}),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_nmct",u.prototype.fieldSpec]),J.prototype.fieldSpec.push(["gc",X.prototype.fieldSpec]);var $=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(r.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:u.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",u.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 r.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(r.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:u.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",u.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 r.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContent",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:u.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",u.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 pe=function(e,t){return r.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContentDep",pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toa",{type:u.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["toa",u.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),pe.prototype.fieldSpec.push(["valid","writeUInt8",1]),pe.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var re=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GPS_DEP",re.prototype.msg_type=112,re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("common",{type:pe.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["common",pe.prototype.fieldSpec]),re.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),re.prototype.fieldSpec.push(["w","writeDoubleLE",8]),re.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var oe=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(r.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:pe.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",pe.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 r.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(r.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 r.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(r.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 ue=function(e,t){return r.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(ue.prototype=Object.create(r.prototype)).messageType="MSG_OSR",ue.prototype.msg_type=1600,ue.prototype.constructor=ue,ue.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),ue.prototype.fieldSpec=[],ue.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),ue.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:c,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:I,MsgEphemerisGps:I,142:v,MsgEphemerisQzss:v,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:pe,112:re,MsgAlmanacGpsDep:re,114:oe,MsgAlmanacGps:oe,113:ie,MsgAlmanacGloDep:ie,115:se,MsgAlmanacGlo:se,117:ne,MsgGloBiases:ne,SvAzEl:ae,151:le,MsgSvAzEl:le,1600:ue,MsgOsr:ue}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=p(0).GPSTime,a=p(0).GPSTimeDep,l=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];var u=function(e,t){return r.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SET_TIME",u.prototype.msg_type=104,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little"),u.prototype.fieldSpec=[];var c=function(e,t){return r.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_RESET",c.prototype.msg_type=182,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_INIT_BASE_DEP",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_IAR_STATE",I.prototype.msg_type=25,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("num_hyps"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_MASK_SATELLITE",v.prototype.msg_type=43,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["mask","writeUInt8",1]),v.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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:u,MsgSetTime:u,182:c,MsgReset:c,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:I,MsgIarState:I,43:v,MsgMaskSatellite:v,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",u.prototype.msg_type=162,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",c.prototype.msg_type=167,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]),c.prototype.fieldSpec.push(["setting","string",null]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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:u,MsgSettingsReadByIndexReq:u,167:c,MsgSettingsReadByIndexResp:c,166:y,MsgSettingsReadByIndexDone:y,174:h,MsgSettingsRegister:h,431:f,MsgSettingsRegisterResp:f}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="SolutionInputType",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SOLN_META_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SOLN_META",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="GNSSInputType",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="IMUInputType",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="OdoInputType",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="OdoInputType",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={SolutionInputType:i,65295:s,MsgSolnMetaDepA:s,65294:n,MsgSolnMeta:n,GNSSInputType:a,IMUInputType:l,OdoInputType:u}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),n=p(0).SvId,a=function(e,t){return r.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="STECHeader",u.prototype.constructor=u,u.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"),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","writeUInt8",1]),u.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),u.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),u.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var c=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeader",c.prototype.constructor=c,c.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"),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","writeUInt16LE",2]),c.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),c.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),c.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),c.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var y=function(e,t){return r.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="TroposphericDelayCorrectionNoStd",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECResidualNoStd",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP",E.prototype.msg_type=1531,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["header",u.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 r.call(this,e),this.messageType="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="BoundsHeader",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),m.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),m.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),m.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),m.prototype.fieldSpec.push(["sol_id","writeUInt8",1]);var b=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION",b.prototype.msg_type=1533,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("n_sats").array("stec_sat_list",{type:y.prototype.parser,length:"n_sats"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),b.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var I=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",I.prototype.msg_type=1532,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),I.prototype.fieldSpec.push(["index","writeUInt16LE",2]),I.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),I.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return r.call(this,e),this.messageType="STECSatElementIntegrity",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="STECSatElementIntegrity",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("stec_residual",{type:_.prototype.parser}).uint8("stec_bound_mu").uint8("stec_bound_sig").uint8("stec_bound_mu_dot").uint8("stec_bound_sig_dot"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["stec_residual",_.prototype.fieldSpec]),v.prototype.fieldSpec.push(["stec_bound_mu","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_mu_dot","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig_dot","writeUInt8",1]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",L.prototype.msg_type=1534,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("tropo_qi").uint16("grid_point_id").nest("tropo_delay_correction",{type:f.prototype.parser}).uint8("tropo_bound_mu").uint8("tropo_bound_sig").uint8("n_sats").array("stec_sat_list",{type:v.prototype.parser,length:"n_sats"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),L.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),L.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_qi","writeUInt8",1]),L.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tropo_bound_mu","writeUInt8",1]),L.prototype.fieldSpec.push(["tropo_bound_sig","writeUInt8",1]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_sat_list","array",v.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var T=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP",T.prototype.msg_type=1526,T.prototype.constructor=T,T.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"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),T.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),T.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),T.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var U=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION",U.prototype.msg_type=1527,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint8("ssr_sol_id").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"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),U.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),U.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),U.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),U.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var M=function(e,t){return r.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="SatelliteAPC",M.prototype.constructor=M,M.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"}),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),M.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),M.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),M.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),M.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);var D=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_SSR_SATELLITE_APC",D.prototype.msg_type=1540,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").array("apc",{type:M.prototype.parser,readUntil:"eof"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["apc","array",M.prototype.fieldSpec,function(){return this.fields.array.length},null]);var O=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",O.prototype.msg_type=1500,O.prototype.constructor=O,O.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"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),O.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),O.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),O.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),O.prototype.fieldSpec.push(["iod","writeUInt8",1]),O.prototype.fieldSpec.push(["radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["along","writeInt32LE",4]),O.prototype.fieldSpec.push(["cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["c0","writeInt32LE",4]),O.prototype.fieldSpec.push(["c1","writeInt32LE",4]),O.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var G=function(e,t){return r.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="STECHeaderDepA",G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),G.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),G.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),G.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),G.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var A=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeaderDepA",A.prototype.constructor=A,A.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"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),A.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),A.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),A.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),A.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),A.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var C=function(e,t){return r.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="GridDefinitionHeaderDepA",C.prototype.constructor=C,C.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"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),C.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),C.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);var R=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",R.prototype.msg_type=1515,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("header",{type:G.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["header",G.prototype.fieldSpec]),R.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var P=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",P.prototype.msg_type=1520,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),P.prototype.fieldSpec.push(["index","writeUInt16LE",2]),P.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),P.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);var N=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",N.prototype.msg_type=1530,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),N.prototype.fieldSpec.push(["index","writeUInt16LE",2]),N.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),N.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var j=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",j.prototype.msg_type=1525,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),j.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]);var x=function(e,t){return r.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="OrbitClockBound",x.prototype.constructor=x,x.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"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);var k=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",k.prototype.msg_type=1502,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:x.prototype.parser,length:"n_sats"}),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),k.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),k.prototype.fieldSpec.push(["const_id","writeUInt8",1]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["orbit_clock_bounds","array",x.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var F=function(e,t){return r.call(this,e),this.messageType="CodePhaseBiasesSatSig",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="CodePhaseBiasesSatSig",F.prototype.constructor=F,F.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"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),F.prototype.fieldSpec.push(["signal_id","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_sig","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_sig","writeUInt8",1]);var B=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",B.prototype.msg_type=1516,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats_signals").array("satellites_signals",{type:F.prototype.parser,length:"n_sats_signals"}),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),B.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),B.prototype.fieldSpec.push(["const_id","writeUInt8",1]),B.prototype.fieldSpec.push(["n_sats_signals","writeUInt8",1]),B.prototype.fieldSpec.push(["satellites_signals","array",F.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats_signals"]);var q=function(e,t){return r.call(this,e),this.messageType="OrbitClockBoundDegradation",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="OrbitClockBoundDegradation",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint8("orb_radial_bound_mu_dot").uint8("orb_along_bound_mu_dot").uint8("orb_cross_bound_mu_dot").uint8("orb_radial_bound_sig_dot").uint8("orb_along_bound_sig_dot").uint8("orb_cross_bound_sig_dot").uint8("clock_bound_mu_dot").uint8("clock_bound_sig_dot"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["orb_radial_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_radial_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_sig_dot","writeUInt8",1]);var z=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",z.prototype.msg_type=1503,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint64("sat_bitmask").nest("orbit_clock_bounds_degradation",{type:q.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),z.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),z.prototype.fieldSpec.push(["const_id","writeUInt8",1]),z.prototype.fieldSpec.push(["sat_bitmask","writeUInt64LE",8]),z.prototype.fieldSpec.push(["orbit_clock_bounds_degradation",q.prototype.fieldSpec]),e.exports={CodeBiasesContent:a,PhaseBiasesContent:l,STECHeader:u,GriddedCorrectionHeader:c,STECSatElement:y,TroposphericDelayCorrectionNoStd:h,TroposphericDelayCorrection:f,STECResidualNoStd:d,STECResidual:_,1501:S,MsgSsrOrbitClock:S,1505:g,MsgSsrCodeBiases:g,1510:w,MsgSsrPhaseBiases:w,1531:E,MsgSsrStecCorrectionDep:E,BoundsHeader:m,1533:b,MsgSsrStecCorrection:b,1532:I,MsgSsrGriddedCorrection:I,STECSatElementIntegrity:v,1534:L,MsgSsrGriddedCorrectionBounds:L,1526:T,MsgSsrTileDefinitionDep:T,1527:U,MsgSsrTileDefinition:U,SatelliteAPC:M,1540:D,MsgSsrSatelliteApc:D,1500:O,MsgSsrOrbitClockDepA:O,STECHeaderDepA:G,GriddedCorrectionHeaderDepA:A,GridDefinitionHeaderDepA:C,1515:R,MsgSsrStecCorrectionDepA:R,1520:P,MsgSsrGriddedCorrectionNoStdDepA:P,1530:N,MsgSsrGriddedCorrectionDepA:N,1525:j,MsgSsrGridDefinitionDepA:j,OrbitClockBound:x,1502:k,MsgSsrOrbitClockBounds:k,CodePhaseBiasesSatSig:F,1516:B,MsgSsrCodePhaseBiasesBounds:B,OrbitClockBoundDegradation:q,1503:z,MsgSsrOrbitClockBoundsDegradation:z}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="SubSystemReport",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STATUS_REPORT",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="StatusJournalItem",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="StatusJournalItem",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("uptime").nest("report",{type:a.prototype.parser}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["report",a.prototype.fieldSpec]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_STATUS_JOURNAL",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_STATUS_JOURNAL",c.prototype.msg_type=65533,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("total_status_reports").uint8("sequence_descriptor").array("journal",{type:u.prototype.parser,readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),c.prototype.fieldSpec.push(["total_status_reports","writeUInt32LE",4]),c.prototype.fieldSpec.push(["sequence_descriptor","writeUInt8",1]),c.prototype.fieldSpec.push(["journal","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_INS_UPDATES",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GNSS_TIME_OFFSET",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PPS_TIME",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SENSOR_AID_EVENT",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_META",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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:u,65533:c,MsgStatusJournal:c,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,u=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",u.prototype.msg_type=33,u.prototype.constructor=u,u.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"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",a.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",s.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 c=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",c.prototype.msg_type=17,c.prototype.constructor=c,c.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"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",l.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",n.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 y=function(e,t){return r.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="TrackingChannelStateDepB",I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["state","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),I.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",v.prototype.msg_type=19,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").array("states",{type:I.prototype.parser,readUntil:"eof"}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["states","array",I.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:u,MsgTrackingStateDetailedDepA:u,17:c,MsgTrackingStateDetailedDep:c,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:I,19:v,MsgTrackingStateDepB:v}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_WHEELTICK",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 From 233fd18bf657223eb9e1685e9b68248cff591676 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 12:12:52 -0400 Subject: [PATCH 06/11] manually add import --- python/tests/sbp/test_table.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/python/tests/sbp/test_table.py b/python/tests/sbp/test_table.py index e124abb917..2f35619b22 100644 --- a/python/tests/sbp/test_table.py +++ b/python/tests/sbp/test_table.py @@ -24,6 +24,7 @@ from sbp import tracking as trac from sbp import user as user from sbp import imu as imu +from sbp import integrity as integrity from sbp import ext_events as ext_events from sbp import ndb as ndb from sbp import mag as mag @@ -61,6 +62,7 @@ def test_table_unqiue_count(): + len(trac.msg_classes) + len(user.msg_classes) + len(imu.msg_classes) + + len(integrity.msg_classes) + len(ext_events.msg_classes) + len(ndb.msg_classes) + len(mag.msg_classes) From f9466fb1dca1ff1f922215aca50ecb89031f9928 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 12:44:16 -0400 Subject: [PATCH 07/11] manually add import --- python/sbp/table.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/python/sbp/table.py b/python/sbp/table.py index f754ce905d..5d2465fa7c 100755 --- a/python/sbp/table.py +++ b/python/sbp/table.py @@ -30,6 +30,7 @@ from . import ext_events as ext_events from . import user as user from . import imu as imu +from . import integrity as integrity from . import mag as mag from . import ndb as ndb from . import vehicle as vehicle @@ -54,6 +55,7 @@ + list(trac.msg_classes.items()) + list(user.msg_classes.items()) + list(imu.msg_classes.items()) + + list(integrity.msg_classes.items()) + list(mag.msg_classes.items()) + list(ext_events.msg_classes.items()) + list(ndb.msg_classes.items()) @@ -116,4 +118,4 @@ def lookup(msg_type, table=_SBP_TABLE): SBP Message class """ - return table.get(msg_type) \ No newline at end of file + return table.get(msg_type) From cf821e30f10ef41228f55b13f039afbba5cc6254 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 13:59:55 -0400 Subject: [PATCH 08/11] Add to spellcheck --- python/docs/source/spelling_wordlist.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/python/docs/source/spelling_wordlist.txt b/python/docs/source/spelling_wordlist.txt index a52bcc655c..11bd8176da 100644 --- a/python/docs/source/spelling_wordlist.txt +++ b/python/docs/source/spelling_wordlist.txt @@ -1,6 +1,8 @@ 0x00BD AE Acq +BBD +BCD BD Beidou Bestpos @@ -17,6 +19,7 @@ IPv InputType Iono Kalman +LoS MiB Navstar Piksi @@ -81,6 +84,7 @@ infofirmware interoperable io iode +iono iterable ith jit From f9021303dfb919224537da4754c02feb269a8560 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 14:00:07 -0400 Subject: [PATCH 09/11] make all --- docs/sbp.pdf | Bin 473173 -> 473183 bytes sbpjson/javascript/SbpJson.js | 136 ++++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) diff --git a/docs/sbp.pdf b/docs/sbp.pdf index 9205123e8c7f1c2dabad93680fe0458b3c3c3313..ae85988da608d5a45c8f055bb3e3e4e12ae5abee 100644 GIT binary patch delta 62539 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 delta 62610 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

K_eFN@;k;qDG+Qz0V( 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 cSq^*!inaO#r10 Date: Mon, 9 May 2022 16:34:04 -0400 Subject: [PATCH 10/11] Group similar fields into one structure --- .../test_MsgSsrFlagIonoGridPointSatLos.yaml | 23 ++-- .../test_MsgSsrFlagIonoGridPoints.yaml | 23 ++-- .../test_MsgSsrFlagIonoTileSatLos.yaml | 23 ++-- .../test_MsgSsrFlagTropoGridPoints.yaml | 23 ++-- spec/yaml/swiftnav/sbp/integrity.yaml | 121 ++++++------------ 5 files changed, 85 insertions(+), 128 deletions(-) diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml index 855e18c0c9..736b3464bb 100644 --- a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPointSatLos.yaml @@ -5,15 +5,16 @@ tests: - msg: fields: - obs_time: - tow: 180 - wn: 3 - num_msgs: 1 - seq_num: 2 - ssr_sol_id: 3 - tile_set_id: 4 - tile_id: 5 - chain_id: 6 + header: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 grid_point_id: 30 n_faulty_los: 2 faulty_los: @@ -24,8 +25,8 @@ tests: module: sbp.integrity name: MsgSsrFlagIonoGridPointSatLos msg_type: '3025' - raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, - "tile_id": 5, "chain_id": 6, "grid_point_id": 30, "n_faulty_los": 2, "faulty_los": [{"satId": 10, + raw_json: '{"header": {"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6}, "grid_point_id": 30, "n_faulty_los": 2, "faulty_los": [{"satId": 10, "constellation": 11}, {"satId": 15, "constellation": 14}], "preamble": 85, "msg_type": 3025, "sender": 66, "length": 21, "payload": "tAAAAAMAAQIDBAAFAAYeAAIKCw8O", "crc": 37986}' raw_packet: VdELQgAVtAAAAAMAAQIDBAAFAAYeAAIKCw8OYpQ= diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml index eed8439728..81f568ba6f 100644 --- a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoGridPoints.yaml @@ -5,15 +5,16 @@ tests: - msg: fields: - obs_time: - tow: 180 - wn: 3 - num_msgs: 1 - seq_num: 2 - ssr_sol_id: 3 - tile_set_id: 4 - tile_id: 5 - chain_id: 6 + header: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 n_faulty_points: 3 faulty_points: - 10 @@ -22,8 +23,8 @@ tests: module: sbp.integrity name: MsgSsrFlagIonoGridPoints msg_type: '3015' - raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, - "tile_id": 5, "chain_id": 6, "n_faulty_points": 3, "faulty_points": [10, 11, 12], "preamble": 85, "msg_type": 3015, + raw_json: '{"header": {"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6}, "n_faulty_points": 3, "faulty_points": [10, 11, 12], "preamble": 85, "msg_type": 3015, "sender": 66, "length": 21, "payload": "tAAAAAMAAQIDBAAFAAYDCgALAAwA", "crc": 1845}' raw_packet: VccLQgAVtAAAAAMAAQIDBAAFAAYDCgALAAwANQc= sbp: diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml index 1f3b387e1a..9ad0471f1b 100644 --- a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagIonoTileSatLos.yaml @@ -5,15 +5,16 @@ tests: - msg: fields: - obs_time: - tow: 180 - wn: 3 - num_msgs: 1 - seq_num: 2 - ssr_sol_id: 3 - tile_set_id: 4 - tile_id: 5 - chain_id: 6 + header: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 n_faulty_los: 2 faulty_los: - satId: 10 @@ -23,8 +24,8 @@ tests: module: sbp.integrity name: MsgSsrFlagIonoTileSatLos msg_type: '3021' - raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, - "tile_id": 5, "chain_id": 6, "n_faulty_los": 2, "faulty_los": [{"satId": 10, "constellation": 11}, {"satId": 15, + raw_json: '{"header": {"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6}, "n_faulty_los": 2, "faulty_los": [{"satId": 10, "constellation": 11}, {"satId": 15, "constellation": 14}], "preamble": 85, "msg_type": 3021, "sender": 66, "length": 19, "payload": "tAAAAAMAAQIDBAAFAAYCCgsPDg==", "crc": 60399}' raw_packet: Vc0LQgATtAAAAAMAAQIDBAAFAAYCCgsPDu/r diff --git a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml index 46dec64204..44d096845c 100644 --- a/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml +++ b/spec/tests/yaml/swiftnav/sbp/integrity/test_MsgSsrFlagTropoGridPoints.yaml @@ -5,15 +5,16 @@ tests: - msg: fields: - obs_time: - tow: 180 - wn: 3 - num_msgs: 1 - seq_num: 2 - ssr_sol_id: 3 - tile_set_id: 4 - tile_id: 5 - chain_id: 6 + header: + obs_time: + tow: 180 + wn: 3 + num_msgs: 1 + seq_num: 2 + ssr_sol_id: 3 + tile_set_id: 4 + tile_id: 5 + chain_id: 6 n_faulty_points: 3 faulty_points: - 10 @@ -22,8 +23,8 @@ tests: module: sbp.integrity name: MsgSsrFlagTropoGridPoints msg_type: '3011' - raw_json: '{"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, - "tile_id": 5, "chain_id": 6, "n_faulty_points": 3, "faulty_points": [10, 11, 12], "preamble": 85, "msg_type": 3011, + raw_json: '{"header": {"obs_time": {"tow": 180, "wn": 3}, "num_msgs": 1, "seq_num": 2, "ssr_sol_id": 3, "tile_set_id": 4, + "tile_id": 5, "chain_id": 6}, "n_faulty_points": 3, "faulty_points": [10, 11, 12], "preamble": 85, "msg_type": 3011, "sender": 66, "length": 21, "payload": "tAAAAAMAAQIDBAAFAAYDCgALAAwA", "crc": 38643}' raw_packet: VcMLQgAVtAAAAAMAAQIDBAAFAAYDCgALAAwA85Y= sbp: diff --git a/spec/yaml/swiftnav/sbp/integrity.yaml b/spec/yaml/swiftnav/sbp/integrity.yaml index 1e71ac1bd1..f6f7b7e246 100644 --- a/spec/yaml/swiftnav/sbp/integrity.yaml +++ b/spec/yaml/swiftnav/sbp/integrity.yaml @@ -16,6 +16,31 @@ include: - types.yaml - gnss.yaml definitions: + - IntegritySSRHeader: + short_desc: Common fields for SSR integrity messages + fields: + - obs_time: + type: GPSTimeSec + desc: GNSS reference time of the observation used to generate the flag. + - num_msgs: + type: u8 + desc: Number of messages in the dataset + - seq_num: + type: u8 + desc: Position of this message in the dataset + - ssr_sol_id: + type: u8 + desc: SSR Solution ID. + - tile_set_id: + type: u16 + desc: Unique identifier of the set this tile belongs to. + - tile_id: + type: u16 + desc: Unique identifier of this tile in the tile set. + - chain_id: + type: u8 + desc: Chain and type of flag. + - MSG_SSR_FLAG_HIGH_LEVEL: id: 0x0BB9 short_desc: High level integrity flags @@ -103,27 +128,9 @@ definitions: short_desc: List of grid points which are faulty public: False fields: - - obs_time: - type: GPSTimeSec - desc: GNSS reference time of the observation used to generate the flag. - - num_msgs: - type: u8 - desc: Number of messages in the dataset - - seq_num: - type: u8 - desc: Position of this message in the dataset - - ssr_sol_id: - type: u8 - desc: SSR Solution ID. - - tile_set_id: - type: u16 - desc: Unique identifier of the set this tile belongs to. - - tile_id: - type: u16 - desc: Unique identifier of this tile in the tile set. - - chain_id: - type: u8 - desc: Chain and type of flag. + - header: + type: IntegritySSRHeader + desc: Header of an integrity message. - n_faulty_points: type: u8 desc: Number of faulty grid points. @@ -138,27 +145,9 @@ definitions: short_desc: List of grid points which are faulty public: False fields: - - obs_time: - type: GPSTimeSec - desc: GNSS reference time of the observation used to generate the flag. - - num_msgs: - type: u8 - desc: Number of messages in the dataset - - seq_num: - type: u8 - desc: Position of this message in the dataset - - ssr_sol_id: - type: u8 - desc: SSR Solution ID. - - tile_set_id: - type: u16 - desc: Unique identifier of the set this tile belongs to. - - tile_id: - type: u16 - desc: Unique identifier of this tile in the tile set. - - chain_id: - type: u8 - desc: Chain and type of flag. + - header: + type: IntegritySSRHeader + desc: Header of an integrity message. - n_faulty_points: type: u8 desc: Number of faulty grid points. @@ -173,27 +162,9 @@ definitions: short_desc: List of all the LOS which are faulty public: False fields: - - obs_time: - type: GPSTimeSec - desc: GNSS reference time of the observation used to generate the flag. - - num_msgs: - type: u8 - desc: Number of messages in the dataset - - seq_num: - type: u8 - desc: Position of this message in the dataset - - ssr_sol_id: - type: u8 - desc: SSR Solution ID. - - tile_set_id: - type: u16 - desc: Unique identifier of the set this tile belongs to. - - tile_id: - type: u16 - desc: Unique identifier of this tile in the tile set. - - chain_id: - type: u8 - desc: Chain and type of flag. + - header: + type: IntegritySSRHeader + desc: Header of an integrity message. - n_faulty_los: type: u8 desc: Number of faulty LOS. @@ -208,27 +179,9 @@ definitions: short_desc: List of all the grid points to satellite which are faulty public: False fields: - - obs_time: - type: GPSTimeSec - desc: GNSS reference time of the observation used to generate the flag. - - num_msgs: - type: u8 - desc: Number of messages in the dataset - - seq_num: - type: u8 - desc: Position of this message in the dataset - - ssr_sol_id: - type: u8 - desc: SSR Solution ID. - - tile_set_id: - type: u16 - desc: Unique identifier of the set this tile belongs to. - - tile_id: - type: u16 - desc: Unique identifier of this tile in the tile set. - - chain_id: - type: u8 - desc: Chain and type of flag. + - header: + type: IntegritySSRHeader + desc: Header of an integrity message. - grid_point_id: type: u16 desc: Index of the grid point. From 002072fba8e4bd447b1f1808522d2efe69ec41e7 Mon Sep 17 00:00:00 2001 From: fpezzinosn Date: Mon, 9 May 2022 17:11:27 -0400 Subject: [PATCH 11/11] make all --- c/include/libsbp/integrity_macros.h | 6 + c/include/libsbp/legacy/integrity.h | 73 ++-- c/include/libsbp/v4/integrity.h | 1 + .../libsbp/v4/integrity/IntegritySSRHeader.h | 186 ++++++++ .../integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h | 36 +- .../MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h | 36 +- .../MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h | 36 +- .../MSG_SSR_FLAG_TROPO_GRID_POINTS.h | 36 +- c/src/include/libsbp/internal/v4/integrity.h | 20 + c/src/v4/integrity.c | 413 ++++++------------ ..._integrity_MsgSsrFlagIonoGridPointSatLos.c | 110 ++--- ...k_sbp_integrity_MsgSsrFlagIonoGridPoints.c | 103 ++--- ...k_sbp_integrity_MsgSsrFlagIonoTileSatLos.c | 104 ++--- ..._sbp_integrity_MsgSsrFlagTropoGridPoints.c | 104 ++--- ...integrity_MsgSsrFlagIonoGridPointSatLos.cc | 64 +-- ..._sbp_integrity_MsgSsrFlagIonoGridPoints.cc | 64 +-- ..._sbp_integrity_MsgSsrFlagIonoTileSatLos.cc | 64 +-- ...sbp_integrity_MsgSsrFlagTropoGridPoints.cc | 64 +-- ..._integrity_MsgSsrFlagIonoGridPointSatLos.c | 65 +-- ...k_sbp_integrity_MsgSsrFlagIonoGridPoints.c | 65 +-- ...k_sbp_integrity_MsgSsrFlagIonoTileSatLos.c | 65 +-- ..._sbp_integrity_MsgSsrFlagTropoGridPoints.c | 65 +-- ...integrity_MsgSsrFlagIonoGridPointSatLos.cc | 60 +-- ..._sbp_integrity_MsgSsrFlagIonoGridPoints.cc | 60 +-- ..._sbp_integrity_MsgSsrFlagIonoTileSatLos.cc | 60 +-- ...sbp_integrity_MsgSsrFlagTropoGridPoints.cc | 60 +-- docs/sbp.pdf | Bin 473183 -> 473183 bytes haskell/src/SwiftNav/SBP/Integrity.hs | 168 +++---- .../sbp/integrity/IntegritySSRHeader.java | 85 ++++ .../MsgSsrFlagIonoGridPointSatLos.java | 46 +- .../integrity/MsgSsrFlagIonoGridPoints.java | 46 +- .../integrity/MsgSsrFlagIonoTileSatLos.java | 46 +- .../integrity/MsgSsrFlagTropoGridPoints.java | 46 +- ...ity_MsgSsrFlagIonoGridPointSatLosTest.java | 58 +-- ...ntegrity_MsgSsrFlagIonoGridPointsTest.java | 58 +-- ...ntegrity_MsgSsrFlagIonoTileSatLosTest.java | 58 +-- ...tegrity_MsgSsrFlagTropoGridPointsTest.java | 58 +-- javascript/sbp.bundle.js | 6 +- javascript/sbp/integrity.js | 140 +++--- jsonschema/IntegritySSRHeader.json | 36 ++ jsonschema/MsgSsrFlagIonoGridPointSatLos.json | 16 +- jsonschema/MsgSsrFlagIonoGridPoints.json | 16 +- jsonschema/MsgSsrFlagIonoTileSatLos.json | 16 +- jsonschema/MsgSsrFlagTropoGridPoints.json | 16 +- proto/integrity.proto | 64 ++- python/sbp/integrity.py | 220 ++++------ rust/sbp/src/messages/integrity.rs | 298 +++++-------- ...ty_msg_ssr_flag_iono_grid_point_sat_los.rs | 58 +-- ...integrity_msg_ssr_flag_iono_grid_points.rs | 58 +-- ...ntegrity_msg_ssr_flag_iono_tile_sat_los.rs | 58 +-- ...ntegrity_msg_ssr_flag_tropo_grid_points.rs | 58 +-- sbpjson/elm/SbpJson.elm | 124 ++---- sbpjson/javascript/SbpJson.js | 40 +- sbpjson/typescript/SbpJson.ts | 82 ++-- 54 files changed, 1804 insertions(+), 2191 deletions(-) create mode 100644 c/include/libsbp/v4/integrity/IntegritySSRHeader.h create mode 100644 java/src/com/swiftnav/sbp/integrity/IntegritySSRHeader.java create mode 100644 jsonschema/IntegritySSRHeader.json diff --git a/c/include/libsbp/integrity_macros.h b/c/include/libsbp/integrity_macros.h index 9e3e6abf87..fef1547d27 100644 --- a/c/include/libsbp/integrity_macros.h +++ b/c/include/libsbp/integrity_macros.h @@ -18,6 +18,12 @@ #ifndef LIBSBP_INTEGRITY_MACROS_H #define LIBSBP_INTEGRITY_MACROS_H +/** + * Encoded length of sbp_integrity_ssr_header_t (V4 API) and + * integrity_ssr_header_t (legacy API) + */ +#define SBP_INTEGRITY_SSR_HEADER_ENCODED_LEN 14u + #define SBP_MSG_SSR_FLAG_HIGH_LEVEL 0x0BB9 /** * The maximum number of items that can be stored in diff --git a/c/include/libsbp/legacy/integrity.h b/c/include/libsbp/legacy/integrity.h index 9d936ca45f..a61099e266 100644 --- a/c/include/libsbp/legacy/integrity.h +++ b/c/include/libsbp/legacy/integrity.h @@ -30,6 +30,17 @@ SBP_PACK_START +typedef struct SBP_ATTR_PACKED { + gps_time_sec_t obs_time; /**< GNSS reference time of the observation + used to generate the flag. */ + u8 num_msgs; /**< Number of messages in the dataset */ + u8 seq_num; /**< Position of this message in the dataset */ + u8 ssr_sol_id; /**< SSR Solution ID. */ + u16 tile_set_id; /**< Unique identifier of the set this tile belongs to. */ + u16 tile_id; /**< Unique identifier of this tile in the tile set. */ + u8 chain_id; /**< Chain and type of flag. */ +} integrity_ssr_header_t; + typedef struct SBP_ATTR_PACKED { gps_time_sec_t obs_time; /**< GNSS reference time of the observation used to @@ -66,61 +77,31 @@ typedef struct SBP_ATTR_PACKED { } msg_ssr_flag_satellites_t; typedef struct SBP_ATTR_PACKED { - gps_time_sec_t obs_time; /**< GNSS reference time of the - observation used to generate the - flag. */ - u8 num_msgs; /**< Number of messages in the dataset */ - u8 seq_num; /**< Position of this message in the dataset */ - u8 ssr_sol_id; /**< SSR Solution ID. */ - u16 tile_set_id; /**< Unique identifier of the set this tile belongs - to. */ - u16 tile_id; /**< Unique identifier of this tile in the tile set. */ - u8 chain_id; /**< Chain and type of flag. */ - u8 n_faulty_points; /**< Number of faulty grid points. */ - u16 faulty_points[0]; /**< List of faulty grid points. */ + integrity_ssr_header_t header; /**< Header of an integrity + message. */ + u8 n_faulty_points; /**< Number of faulty grid points. */ + u16 faulty_points[0]; /**< List of faulty grid points. */ } msg_ssr_flag_tropo_grid_points_t; typedef struct SBP_ATTR_PACKED { - gps_time_sec_t obs_time; /**< GNSS reference time of the - observation used to generate the - flag. */ - u8 num_msgs; /**< Number of messages in the dataset */ - u8 seq_num; /**< Position of this message in the dataset */ - u8 ssr_sol_id; /**< SSR Solution ID. */ - u16 tile_set_id; /**< Unique identifier of the set this tile belongs - to. */ - u16 tile_id; /**< Unique identifier of this tile in the tile set. */ - u8 chain_id; /**< Chain and type of flag. */ - u8 n_faulty_points; /**< Number of faulty grid points. */ - u16 faulty_points[0]; /**< List of faulty grid points. */ + integrity_ssr_header_t header; /**< Header of an integrity + message. */ + u8 n_faulty_points; /**< Number of faulty grid points. */ + u16 faulty_points[0]; /**< List of faulty grid points. */ } msg_ssr_flag_iono_grid_points_t; typedef struct SBP_ATTR_PACKED { - gps_time_sec_t obs_time; /**< GNSS reference time of the observation - used to generate the flag. */ - u8 num_msgs; /**< Number of messages in the dataset */ - u8 seq_num; /**< Position of this message in the dataset */ - u8 ssr_sol_id; /**< SSR Solution ID. */ - u16 tile_set_id; /**< Unique identifier of the set this tile belongs to. */ - u16 tile_id; /**< Unique identifier of this tile in the tile set. */ - u8 chain_id; /**< Chain and type of flag. */ - u8 n_faulty_los; /**< Number of faulty LOS. */ - sv_id_t faulty_los[0]; /**< List of faulty LOS */ + integrity_ssr_header_t header; /**< Header of an integrity message. */ + u8 n_faulty_los; /**< Number of faulty LOS. */ + sv_id_t faulty_los[0]; /**< List of faulty LOS */ } msg_ssr_flag_iono_tile_sat_los_t; typedef struct SBP_ATTR_PACKED { - gps_time_sec_t obs_time; /**< GNSS reference time of the observation - used to generate the flag. */ - u8 num_msgs; /**< Number of messages in the dataset */ - u8 seq_num; /**< Position of this message in the dataset */ - u8 ssr_sol_id; /**< SSR Solution ID. */ - u16 tile_set_id; /**< Unique identifier of the set this tile belongs - to. */ - u16 tile_id; /**< Unique identifier of this tile in the tile set. */ - u8 chain_id; /**< Chain and type of flag. */ - u16 grid_point_id; /**< Index of the grid point. */ - u8 n_faulty_los; /**< Number of faulty LOS. */ - sv_id_t faulty_los[0]; /**< List of faulty LOS */ + integrity_ssr_header_t header; /**< Header of an integrity + message. */ + u16 grid_point_id; /**< Index of the grid point. */ + u8 n_faulty_los; /**< Number of faulty LOS. */ + sv_id_t faulty_los[0]; /**< List of faulty LOS */ } msg_ssr_flag_iono_grid_point_sat_los_t; /** \} */ diff --git a/c/include/libsbp/v4/integrity.h b/c/include/libsbp/v4/integrity.h index 71576464b1..d83beca69c 100644 --- a/c/include/libsbp/v4/integrity.h +++ b/c/include/libsbp/v4/integrity.h @@ -17,6 +17,7 @@ #ifndef LIBSBP_V4_INTEGRITY_MESSAGES_H #define LIBSBP_V4_INTEGRITY_MESSAGES_H +#include #include #include #include diff --git a/c/include/libsbp/v4/integrity/IntegritySSRHeader.h b/c/include/libsbp/v4/integrity/IntegritySSRHeader.h new file mode 100644 index 0000000000..d09417b649 --- /dev/null +++ b/c/include/libsbp/v4/integrity/IntegritySSRHeader.h @@ -0,0 +1,186 @@ +/* + * 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/integrity.yaml + * with generate.py. Please do not hand edit! + *****************************************************************************/ + +#ifndef LIBSBP_V4_INTEGRITY_INTEGRITYSSRHEADER_H +#define LIBSBP_V4_INTEGRITY_INTEGRITYSSRHEADER_H + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * + * SBP_INTEGRITYSSRHEADER + * + *****************************************************************************/ +typedef struct { + /** + * GNSS reference time of the observation used to generate the flag. + */ + sbp_gps_time_sec_t obs_time; + + /** + * Number of messages in the dataset + */ + u8 num_msgs; + + /** + * Position of this message in the dataset + */ + u8 seq_num; + + /** + * SSR Solution ID. + */ + u8 ssr_sol_id; + + /** + * Unique identifier of the set this tile belongs to. + */ + u16 tile_set_id; + + /** + * Unique identifier of this tile in the tile set. + */ + u16 tile_id; + + /** + * Chain and type of flag. + */ + u8 chain_id; +} sbp_integrity_ssr_header_t; + +/** + * Get encoded size of an instance of sbp_integrity_ssr_header_t + * + * @param msg sbp_integrity_ssr_header_t instance + * @return Length of on-wire representation + */ +static inline size_t sbp_integrity_ssr_header_encoded_len( + const sbp_integrity_ssr_header_t *msg) { + (void)msg; + return SBP_INTEGRITY_SSR_HEADER_ENCODED_LEN; +} + +/** + * Encode an instance of sbp_integrity_ssr_header_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_integrity_ssr_header_t to encode + * @return SBP_OK on success, or other libsbp error code + */ +SBP_EXPORT s8 +sbp_integrity_ssr_header_encode(uint8_t *buf, uint8_t len, uint8_t *n_written, + const sbp_integrity_ssr_header_t *msg); + +/** + * Decode an instance of sbp_integrity_ssr_header_t from wire representation + * + * This function decodes the wire representation of a sbp_integrity_ssr_header_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_integrity_ssr_header_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_integrity_ssr_header_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_integrity_ssr_header_t *msg); + +/** + * Compare two instances of sbp_integrity_ssr_header_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_integrity_ssr_header_t instance + * @param b sbp_integrity_ssr_header_t instance + * @return 0, <0, >0 + */ +SBP_EXPORT int sbp_integrity_ssr_header_cmp( + const sbp_integrity_ssr_header_t *a, const sbp_integrity_ssr_header_t *b); + +#ifdef __cplusplus +} + +static inline bool operator==(const sbp_integrity_ssr_header_t &lhs, + const sbp_integrity_ssr_header_t &rhs) { + return sbp_integrity_ssr_header_cmp(&lhs, &rhs) == 0; +} + +static inline bool operator!=(const sbp_integrity_ssr_header_t &lhs, + const sbp_integrity_ssr_header_t &rhs) { + return sbp_integrity_ssr_header_cmp(&lhs, &rhs) != 0; +} + +static inline bool operator<(const sbp_integrity_ssr_header_t &lhs, + const sbp_integrity_ssr_header_t &rhs) { + return sbp_integrity_ssr_header_cmp(&lhs, &rhs) < 0; +} + +static inline bool operator<=(const sbp_integrity_ssr_header_t &lhs, + const sbp_integrity_ssr_header_t &rhs) { + return sbp_integrity_ssr_header_cmp(&lhs, &rhs) <= 0; +} + +static inline bool operator>(const sbp_integrity_ssr_header_t &lhs, + const sbp_integrity_ssr_header_t &rhs) { + return sbp_integrity_ssr_header_cmp(&lhs, &rhs) > 0; +} + +static inline bool operator>=(const sbp_integrity_ssr_header_t &lhs, + const sbp_integrity_ssr_header_t &rhs) { + return sbp_integrity_ssr_header_cmp(&lhs, &rhs) >= 0; +} + +#endif // ifdef __cplusplus + +#endif /* LIBSBP_V4_INTEGRITY_INTEGRITYSSRHEADER_H */ diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h index 0b6f7a5965..f6ad5c300e 100644 --- a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINTS.h @@ -27,7 +27,7 @@ #include #include -#include +#include #include #ifdef __cplusplus @@ -41,39 +41,9 @@ extern "C" { *****************************************************************************/ typedef struct { /** - * GNSS reference time of the observation used to generate the flag. + * Header of an integrity message. */ - sbp_gps_time_sec_t obs_time; - - /** - * Number of messages in the dataset - */ - u8 num_msgs; - - /** - * Position of this message in the dataset - */ - u8 seq_num; - - /** - * SSR Solution ID. - */ - u8 ssr_sol_id; - - /** - * Unique identifier of the set this tile belongs to. - */ - u16 tile_set_id; - - /** - * Unique identifier of this tile in the tile set. - */ - u16 tile_id; - - /** - * Chain and type of flag. - */ - u8 chain_id; + sbp_integrity_ssr_header_t header; /** * Number of faulty grid points. diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h index 3a0363fd9f..4f1dcee826 100644 --- a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS.h @@ -27,8 +27,8 @@ #include #include -#include #include +#include #include #ifdef __cplusplus @@ -42,39 +42,9 @@ extern "C" { *****************************************************************************/ typedef struct { /** - * GNSS reference time of the observation used to generate the flag. + * Header of an integrity message. */ - sbp_gps_time_sec_t obs_time; - - /** - * Number of messages in the dataset - */ - u8 num_msgs; - - /** - * Position of this message in the dataset - */ - u8 seq_num; - - /** - * SSR Solution ID. - */ - u8 ssr_sol_id; - - /** - * Unique identifier of the set this tile belongs to. - */ - u16 tile_set_id; - - /** - * Unique identifier of this tile in the tile set. - */ - u16 tile_id; - - /** - * Chain and type of flag. - */ - u8 chain_id; + sbp_integrity_ssr_header_t header; /** * Index of the grid point. diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h index 9ffb41ad4f..f406f65e48 100644 --- a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_IONO_TILE_SAT_LOS.h @@ -27,8 +27,8 @@ #include #include -#include #include +#include #include #ifdef __cplusplus @@ -42,39 +42,9 @@ extern "C" { *****************************************************************************/ typedef struct { /** - * GNSS reference time of the observation used to generate the flag. + * Header of an integrity message. */ - sbp_gps_time_sec_t obs_time; - - /** - * Number of messages in the dataset - */ - u8 num_msgs; - - /** - * Position of this message in the dataset - */ - u8 seq_num; - - /** - * SSR Solution ID. - */ - u8 ssr_sol_id; - - /** - * Unique identifier of the set this tile belongs to. - */ - u16 tile_set_id; - - /** - * Unique identifier of this tile in the tile set. - */ - u16 tile_id; - - /** - * Chain and type of flag. - */ - u8 chain_id; + sbp_integrity_ssr_header_t header; /** * Number of faulty LOS. diff --git a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h index 776bb3b812..47c61a0f24 100644 --- a/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h +++ b/c/include/libsbp/v4/integrity/MSG_SSR_FLAG_TROPO_GRID_POINTS.h @@ -27,7 +27,7 @@ #include #include -#include +#include #include #ifdef __cplusplus @@ -41,39 +41,9 @@ extern "C" { *****************************************************************************/ typedef struct { /** - * GNSS reference time of the observation used to generate the flag. + * Header of an integrity message. */ - sbp_gps_time_sec_t obs_time; - - /** - * Number of messages in the dataset - */ - u8 num_msgs; - - /** - * Position of this message in the dataset - */ - u8 seq_num; - - /** - * SSR Solution ID. - */ - u8 ssr_sol_id; - - /** - * Unique identifier of the set this tile belongs to. - */ - u16 tile_set_id; - - /** - * Unique identifier of this tile in the tile set. - */ - u16 tile_id; - - /** - * Chain and type of flag. - */ - u8 chain_id; + sbp_integrity_ssr_header_t header; /** * Number of faulty grid points. diff --git a/c/src/include/libsbp/internal/v4/integrity.h b/c/src/include/libsbp/internal/v4/integrity.h index e61261b598..edfd4d1ddc 100644 --- a/c/src/include/libsbp/internal/v4/integrity.h +++ b/c/src/include/libsbp/internal/v4/integrity.h @@ -28,6 +28,26 @@ extern "C" { #endif +/** + * 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_integrity_ssr_header_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_integrity_ssr_header_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_integrity_ssr_header_decode_internal(sbp_decode_ctx_t *ctx, + sbp_integrity_ssr_header_t *msg); + /** * Internal function to encode an SBP type to a buffer * diff --git a/c/src/v4/integrity.c b/c/src/v4/integrity.c index f231267287..94029d5cab 100644 --- a/c/src/v4/integrity.c +++ b/c/src/v4/integrity.c @@ -16,6 +16,131 @@ #include #include +bool sbp_integrity_ssr_header_encode_internal( + sbp_encode_ctx_t *ctx, const sbp_integrity_ssr_header_t *msg) { + if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_encode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_encode(ctx, &msg->chain_id)) { + return false; + } + return true; +} + +s8 sbp_integrity_ssr_header_encode(uint8_t *buf, uint8_t len, + uint8_t *n_written, + const sbp_integrity_ssr_header_t *msg) { + sbp_encode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_integrity_ssr_header_encode_internal(&ctx, msg)) { + return SBP_ENCODE_ERROR; + } + if (n_written != NULL) { + *n_written = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +bool sbp_integrity_ssr_header_decode_internal(sbp_decode_ctx_t *ctx, + sbp_integrity_ssr_header_t *msg) { + if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->num_msgs)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->seq_num)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { + return false; + } + if (!sbp_u16_decode(ctx, &msg->tile_id)) { + return false; + } + if (!sbp_u8_decode(ctx, &msg->chain_id)) { + return false; + } + return true; +} + +s8 sbp_integrity_ssr_header_decode(const uint8_t *buf, uint8_t len, + uint8_t *n_read, + sbp_integrity_ssr_header_t *msg) { + sbp_decode_ctx_t ctx; + ctx.buf = buf; + ctx.buf_len = len; + ctx.offset = 0; + if (!sbp_integrity_ssr_header_decode_internal(&ctx, msg)) { + return SBP_DECODE_ERROR; + } + if (n_read != NULL) { + *n_read = (uint8_t)ctx.offset; + } + return SBP_OK; +} + +int sbp_integrity_ssr_header_cmp(const sbp_integrity_ssr_header_t *a, + const sbp_integrity_ssr_header_t *b) { + int ret = 0; + + ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); + if (ret != 0) { + return ret; + } + + ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + if (ret != 0) { + return ret; + } + return ret; +} + bool sbp_msg_ssr_flag_high_level_encode_internal( sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_high_level_t *msg) { if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { @@ -401,25 +526,7 @@ int sbp_msg_ssr_flag_satellites_cmp(const sbp_msg_ssr_flag_satellites_t *a, bool sbp_msg_ssr_flag_tropo_grid_points_encode_internal( sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_tropo_grid_points_t *msg) { - if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_encode_internal(ctx, &msg->header)) { return false; } if (!sbp_u8_encode(ctx, &msg->n_faulty_points)) { @@ -451,25 +558,7 @@ s8 sbp_msg_ssr_flag_tropo_grid_points_encode( bool sbp_msg_ssr_flag_tropo_grid_points_decode_internal( sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_tropo_grid_points_t *msg) { - if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_decode_internal(ctx, &msg->header)) { return false; } if (!sbp_u8_decode(ctx, &msg->n_faulty_points)) { @@ -520,37 +609,7 @@ int sbp_msg_ssr_flag_tropo_grid_points_cmp( const sbp_msg_ssr_flag_tropo_grid_points_t *b) { int ret = 0; - ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + ret = sbp_integrity_ssr_header_cmp(&a->header, &b->header); if (ret != 0) { return ret; } @@ -572,25 +631,7 @@ int sbp_msg_ssr_flag_tropo_grid_points_cmp( bool sbp_msg_ssr_flag_iono_grid_points_encode_internal( sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_iono_grid_points_t *msg) { - if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_encode_internal(ctx, &msg->header)) { return false; } if (!sbp_u8_encode(ctx, &msg->n_faulty_points)) { @@ -622,25 +663,7 @@ s8 sbp_msg_ssr_flag_iono_grid_points_encode( bool sbp_msg_ssr_flag_iono_grid_points_decode_internal( sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_grid_points_t *msg) { - if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_decode_internal(ctx, &msg->header)) { return false; } if (!sbp_u8_decode(ctx, &msg->n_faulty_points)) { @@ -691,37 +714,7 @@ int sbp_msg_ssr_flag_iono_grid_points_cmp( const sbp_msg_ssr_flag_iono_grid_points_t *b) { int ret = 0; - ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + ret = sbp_integrity_ssr_header_cmp(&a->header, &b->header); if (ret != 0) { return ret; } @@ -743,25 +736,7 @@ int sbp_msg_ssr_flag_iono_grid_points_cmp( bool sbp_msg_ssr_flag_iono_tile_sat_los_encode_internal( sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { - if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_encode_internal(ctx, &msg->header)) { return false; } if (!sbp_u8_encode(ctx, &msg->n_faulty_los)) { @@ -793,25 +768,7 @@ s8 sbp_msg_ssr_flag_iono_tile_sat_los_encode( bool sbp_msg_ssr_flag_iono_tile_sat_los_decode_internal( sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_tile_sat_los_t *msg) { - if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_decode_internal(ctx, &msg->header)) { return false; } if (!sbp_u8_decode(ctx, &msg->n_faulty_los)) { @@ -862,37 +819,7 @@ int sbp_msg_ssr_flag_iono_tile_sat_los_cmp( const sbp_msg_ssr_flag_iono_tile_sat_los_t *b) { int ret = 0; - ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + ret = sbp_integrity_ssr_header_cmp(&a->header, &b->header); if (ret != 0) { return ret; } @@ -915,25 +842,7 @@ int sbp_msg_ssr_flag_iono_tile_sat_los_cmp( bool sbp_msg_ssr_flag_iono_grid_point_sat_los_encode_internal( sbp_encode_ctx_t *ctx, const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { - if (!sbp_gps_time_sec_encode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_encode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_encode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_encode_internal(ctx, &msg->header)) { return false; } if (!sbp_u16_encode(ctx, &msg->grid_point_id)) { @@ -968,25 +877,7 @@ s8 sbp_msg_ssr_flag_iono_grid_point_sat_los_encode( bool sbp_msg_ssr_flag_iono_grid_point_sat_los_decode_internal( sbp_decode_ctx_t *ctx, sbp_msg_ssr_flag_iono_grid_point_sat_los_t *msg) { - if (!sbp_gps_time_sec_decode_internal(ctx, &msg->obs_time)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->num_msgs)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->seq_num)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->ssr_sol_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_set_id)) { - return false; - } - if (!sbp_u16_decode(ctx, &msg->tile_id)) { - return false; - } - if (!sbp_u8_decode(ctx, &msg->chain_id)) { + if (!sbp_integrity_ssr_header_decode_internal(ctx, &msg->header)) { return false; } if (!sbp_u16_decode(ctx, &msg->grid_point_id)) { @@ -1041,37 +932,7 @@ int sbp_msg_ssr_flag_iono_grid_point_sat_los_cmp( const sbp_msg_ssr_flag_iono_grid_point_sat_los_t *b) { int ret = 0; - ret = sbp_gps_time_sec_cmp(&a->obs_time, &b->obs_time); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->num_msgs, &b->num_msgs); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->seq_num, &b->seq_num); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->ssr_sol_id, &b->ssr_sol_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_set_id, &b->tile_set_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u16_cmp(&a->tile_id, &b->tile_id); - if (ret != 0) { - return ret; - } - - ret = sbp_u8_cmp(&a->chain_id, &b->chain_id); + ret = sbp_integrity_ssr_header_cmp(&a->header, &b->header); if (ret != 0) { return ret; } diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c index 34e0bae18d..74c9f4609e 100644 --- a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c @@ -103,8 +103,6 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { sbp_msg_t test_msg; memset(&test_msg, 0, sizeof(test_msg)); - test_msg.ssr_flag_iono_grid_point_sat_los.chain_id = 6; - test_msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0].constellation = 11; test_msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0].satId = 10; @@ -115,21 +113,23 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { test_msg.ssr_flag_iono_grid_point_sat_los.grid_point_id = 30; - test_msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los = 2; + test_msg.ssr_flag_iono_grid_point_sat_los.header.chain_id = 6; - test_msg.ssr_flag_iono_grid_point_sat_los.num_msgs = 1; + test_msg.ssr_flag_iono_grid_point_sat_los.header.num_msgs = 1; - test_msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow = 180; + test_msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.tow = 180; - test_msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn = 3; + test_msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.wn = 3; - test_msg.ssr_flag_iono_grid_point_sat_los.seq_num = 2; + test_msg.ssr_flag_iono_grid_point_sat_los.header.seq_num = 2; - test_msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id = 3; + test_msg.ssr_flag_iono_grid_point_sat_los.header.ssr_sol_id = 3; - test_msg.ssr_flag_iono_grid_point_sat_los.tile_id = 5; + test_msg.ssr_flag_iono_grid_point_sat_los.header.tile_id = 5; - test_msg.ssr_flag_iono_grid_point_sat_los.tile_set_id = 4; + test_msg.ssr_flag_iono_grid_point_sat_los.header.tile_set_id = 4; + + test_msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los = 2; sbp_message_send(&sbp_state, SbpMsgSsrFlagIonoGridPointSatLos, 66, &test_msg, &dummy_write); @@ -155,12 +155,6 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { &last_msg.msg, &test_msg) == 0, "Sent and received messages did not compare equal"); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.chain_id == 6, - "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.chain_id, " - "expected 6, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.chain_id); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.faulty_los[0] .constellation == 11, "incorrect value for " @@ -199,56 +193,68 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { last_msg.msg.ssr_flag_iono_grid_point_sat_los.grid_point_id); ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los == 2, + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.chain_id == 6, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los, expected " - "2, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los); + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.chain_id); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.num_msgs == 1, - "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.num_msgs, " - "expected 1, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.num_msgs); + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.num_msgs == 1, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.num_msgs); ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow == 180, + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.tow == + 180, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow, expected " - "180, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.tow); + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.tow, " + "expected 180, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.tow); ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn == 3, + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.wn == 3, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn, expected " - "3, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.obs_time.wn); + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.wn, " + "expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.obs_time.wn); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.seq_num == 2, - "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.seq_num, " - "expected 2, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.seq_num); + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.seq_num == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.seq_num); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id == 3, - "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id, " - "expected 3, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.ssr_sol_id); + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.ssr_sol_id == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.ssr_sol_id, " + "expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.ssr_sol_id); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_id == 5, - "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_id, " - "expected 5, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_id); + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.tile_id == 5, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.tile_id); ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_set_id == 4, + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.tile_set_id == 4, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_set_id, expected " - "4, is %d", - last_msg.msg.ssr_flag_iono_grid_point_sat_los.tile_set_id); + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.tile_set_id, " + "expected 4, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.header.tile_set_id); + + ck_assert_msg( + last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los, expected " + "2, is %d", + last_msg.msg.ssr_flag_iono_grid_point_sat_los.n_faulty_los); } } END_TEST diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c index 1b07d2fd51..cf087a445c 100644 --- a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c @@ -103,29 +103,29 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints) { sbp_msg_t test_msg; memset(&test_msg, 0, sizeof(test_msg)); - test_msg.ssr_flag_iono_grid_points.chain_id = 6; - test_msg.ssr_flag_iono_grid_points.faulty_points[0] = 10; test_msg.ssr_flag_iono_grid_points.faulty_points[1] = 11; test_msg.ssr_flag_iono_grid_points.faulty_points[2] = 12; - test_msg.ssr_flag_iono_grid_points.n_faulty_points = 3; + test_msg.ssr_flag_iono_grid_points.header.chain_id = 6; - test_msg.ssr_flag_iono_grid_points.num_msgs = 1; + test_msg.ssr_flag_iono_grid_points.header.num_msgs = 1; - test_msg.ssr_flag_iono_grid_points.obs_time.tow = 180; + test_msg.ssr_flag_iono_grid_points.header.obs_time.tow = 180; - test_msg.ssr_flag_iono_grid_points.obs_time.wn = 3; + test_msg.ssr_flag_iono_grid_points.header.obs_time.wn = 3; - test_msg.ssr_flag_iono_grid_points.seq_num = 2; + test_msg.ssr_flag_iono_grid_points.header.seq_num = 2; - test_msg.ssr_flag_iono_grid_points.ssr_sol_id = 3; + test_msg.ssr_flag_iono_grid_points.header.ssr_sol_id = 3; - test_msg.ssr_flag_iono_grid_points.tile_id = 5; + test_msg.ssr_flag_iono_grid_points.header.tile_id = 5; - test_msg.ssr_flag_iono_grid_points.tile_set_id = 4; + test_msg.ssr_flag_iono_grid_points.header.tile_set_id = 4; + + test_msg.ssr_flag_iono_grid_points.n_faulty_points = 3; sbp_message_send(&sbp_state, SbpMsgSsrFlagIonoGridPoints, 66, &test_msg, &dummy_write); @@ -151,12 +151,6 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints) { &test_msg) == 0, "Sent and received messages did not compare equal"); - ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_points.chain_id == 6, - "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.chain_id, " - "expected 6, is %d", - last_msg.msg.ssr_flag_iono_grid_points.chain_id); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.faulty_points[0] == 10, "incorrect value for " "last_msg.msg.ssr_flag_iono_grid_points.faulty_points[0], " @@ -173,53 +167,62 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints) { "expected 12, is %d", last_msg.msg.ssr_flag_iono_grid_points.faulty_points[2]); - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points == 3, + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.header.chain_id == 6, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points, " - "expected 3, is %d", - last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points); + "last_msg.msg.ssr_flag_iono_grid_points.header.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.chain_id); - ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_points.num_msgs == 1, - "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.num_msgs, " - "expected 1, is %d", - last_msg.msg.ssr_flag_iono_grid_points.num_msgs); - - ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.obs_time.tow == 180, + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.header.num_msgs == 1, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_points.obs_time.tow, " - "expected 180, is %d", - last_msg.msg.ssr_flag_iono_grid_points.obs_time.tow); + "last_msg.msg.ssr_flag_iono_grid_points.header.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.num_msgs); ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_points.obs_time.wn == 3, + last_msg.msg.ssr_flag_iono_grid_points.header.obs_time.tow == 180, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_points.obs_time.wn, expected 3, is %d", - last_msg.msg.ssr_flag_iono_grid_points.obs_time.wn); - - ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_points.seq_num == 2, - "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.seq_num, " - "expected 2, is %d", - last_msg.msg.ssr_flag_iono_grid_points.seq_num); + "last_msg.msg.ssr_flag_iono_grid_points.header.obs_time.tow, expected " + "180, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.obs_time.tow); ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_points.ssr_sol_id == 3, + last_msg.msg.ssr_flag_iono_grid_points.header.obs_time.wn == 3, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_points.ssr_sol_id, expected 3, is %d", - last_msg.msg.ssr_flag_iono_grid_points.ssr_sol_id); + "last_msg.msg.ssr_flag_iono_grid_points.header.obs_time.wn, expected " + "3, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.obs_time.wn); - ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_points.tile_id == 5, - "incorrect value for last_msg.msg.ssr_flag_iono_grid_points.tile_id, " - "expected 5, is %d", - last_msg.msg.ssr_flag_iono_grid_points.tile_id); + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.header.seq_num == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.header.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.seq_num); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.header.ssr_sol_id == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.header.ssr_sol_id, " + "expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.ssr_sol_id); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.header.tile_id == 5, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.header.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.tile_id); ck_assert_msg( - last_msg.msg.ssr_flag_iono_grid_points.tile_set_id == 4, + last_msg.msg.ssr_flag_iono_grid_points.header.tile_set_id == 4, "incorrect value for " - "last_msg.msg.ssr_flag_iono_grid_points.tile_set_id, expected 4, is %d", - last_msg.msg.ssr_flag_iono_grid_points.tile_set_id); + "last_msg.msg.ssr_flag_iono_grid_points.header.tile_set_id, expected " + "4, is %d", + last_msg.msg.ssr_flag_iono_grid_points.header.tile_set_id); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points, " + "expected 3, is %d", + last_msg.msg.ssr_flag_iono_grid_points.n_faulty_points); } } END_TEST diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c index c97e36a27a..68172d7f94 100644 --- a/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c @@ -103,8 +103,6 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { sbp_msg_t test_msg; memset(&test_msg, 0, sizeof(test_msg)); - test_msg.ssr_flag_iono_tile_sat_los.chain_id = 6; - test_msg.ssr_flag_iono_tile_sat_los.faulty_los[0].constellation = 11; test_msg.ssr_flag_iono_tile_sat_los.faulty_los[0].satId = 10; @@ -113,21 +111,23 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { test_msg.ssr_flag_iono_tile_sat_los.faulty_los[1].satId = 15; - test_msg.ssr_flag_iono_tile_sat_los.n_faulty_los = 2; + test_msg.ssr_flag_iono_tile_sat_los.header.chain_id = 6; - test_msg.ssr_flag_iono_tile_sat_los.num_msgs = 1; + test_msg.ssr_flag_iono_tile_sat_los.header.num_msgs = 1; - test_msg.ssr_flag_iono_tile_sat_los.obs_time.tow = 180; + test_msg.ssr_flag_iono_tile_sat_los.header.obs_time.tow = 180; - test_msg.ssr_flag_iono_tile_sat_los.obs_time.wn = 3; + test_msg.ssr_flag_iono_tile_sat_los.header.obs_time.wn = 3; - test_msg.ssr_flag_iono_tile_sat_los.seq_num = 2; + test_msg.ssr_flag_iono_tile_sat_los.header.seq_num = 2; - test_msg.ssr_flag_iono_tile_sat_los.ssr_sol_id = 3; + test_msg.ssr_flag_iono_tile_sat_los.header.ssr_sol_id = 3; - test_msg.ssr_flag_iono_tile_sat_los.tile_id = 5; + test_msg.ssr_flag_iono_tile_sat_los.header.tile_id = 5; - test_msg.ssr_flag_iono_tile_sat_los.tile_set_id = 4; + test_msg.ssr_flag_iono_tile_sat_los.header.tile_set_id = 4; + + test_msg.ssr_flag_iono_tile_sat_los.n_faulty_los = 2; sbp_message_send(&sbp_state, SbpMsgSsrFlagIonoTileSatLos, 66, &test_msg, &dummy_write); @@ -153,12 +153,6 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { &test_msg) == 0, "Sent and received messages did not compare equal"); - ck_assert_msg( - last_msg.msg.ssr_flag_iono_tile_sat_los.chain_id == 6, - "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.chain_id, " - "expected 6, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.chain_id); - ck_assert_msg( last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[0].constellation == 11, @@ -189,53 +183,63 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { "15, is %d", last_msg.msg.ssr_flag_iono_tile_sat_los.faulty_los[1].satId); - ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los == 2, + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.header.chain_id == 6, "incorrect value for " - "last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los, " - "expected 2, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los); + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.chain_id); - ck_assert_msg( - last_msg.msg.ssr_flag_iono_tile_sat_los.num_msgs == 1, - "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.num_msgs, " - "expected 1, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.num_msgs); - - ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.tow == 180, + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.header.num_msgs == 1, "incorrect value for " - "last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.tow, " - "expected 180, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.tow); + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.num_msgs); - ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.wn == 3, - "incorrect value for " - "last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.wn, " - "expected 3, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.obs_time.wn); + ck_assert_msg( + last_msg.msg.ssr_flag_iono_tile_sat_los.header.obs_time.tow == 180, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.obs_time.tow, expected " + "180, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.obs_time.tow); ck_assert_msg( - last_msg.msg.ssr_flag_iono_tile_sat_los.seq_num == 2, - "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.seq_num, " - "expected 2, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.seq_num); + last_msg.msg.ssr_flag_iono_tile_sat_los.header.obs_time.wn == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.obs_time.wn, expected " + "3, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.obs_time.wn); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.header.seq_num == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.seq_num); ck_assert_msg( - last_msg.msg.ssr_flag_iono_tile_sat_los.ssr_sol_id == 3, + last_msg.msg.ssr_flag_iono_tile_sat_los.header.ssr_sol_id == 3, "incorrect value for " - "last_msg.msg.ssr_flag_iono_tile_sat_los.ssr_sol_id, expected 3, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.ssr_sol_id); + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.ssr_sol_id, expected " + "3, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.ssr_sol_id); + + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.header.tile_id == 5, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.tile_id); ck_assert_msg( - last_msg.msg.ssr_flag_iono_tile_sat_los.tile_id == 5, - "incorrect value for last_msg.msg.ssr_flag_iono_tile_sat_los.tile_id, " - "expected 5, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.tile_id); + last_msg.msg.ssr_flag_iono_tile_sat_los.header.tile_set_id == 4, + "incorrect value for " + "last_msg.msg.ssr_flag_iono_tile_sat_los.header.tile_set_id, expected " + "4, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.header.tile_set_id); - ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.tile_set_id == 4, + ck_assert_msg(last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los == 2, "incorrect value for " - "last_msg.msg.ssr_flag_iono_tile_sat_los.tile_set_id, " - "expected 4, is %d", - last_msg.msg.ssr_flag_iono_tile_sat_los.tile_set_id); + "last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los, " + "expected 2, is %d", + last_msg.msg.ssr_flag_iono_tile_sat_los.n_faulty_los); } } END_TEST diff --git a/c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c b/c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c index 498004a302..b458f3fdce 100644 --- a/c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c +++ b/c/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c @@ -103,29 +103,29 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints) { sbp_msg_t test_msg; memset(&test_msg, 0, sizeof(test_msg)); - test_msg.ssr_flag_tropo_grid_points.chain_id = 6; - test_msg.ssr_flag_tropo_grid_points.faulty_points[0] = 10; test_msg.ssr_flag_tropo_grid_points.faulty_points[1] = 11; test_msg.ssr_flag_tropo_grid_points.faulty_points[2] = 12; - test_msg.ssr_flag_tropo_grid_points.n_faulty_points = 3; + test_msg.ssr_flag_tropo_grid_points.header.chain_id = 6; - test_msg.ssr_flag_tropo_grid_points.num_msgs = 1; + test_msg.ssr_flag_tropo_grid_points.header.num_msgs = 1; - test_msg.ssr_flag_tropo_grid_points.obs_time.tow = 180; + test_msg.ssr_flag_tropo_grid_points.header.obs_time.tow = 180; - test_msg.ssr_flag_tropo_grid_points.obs_time.wn = 3; + test_msg.ssr_flag_tropo_grid_points.header.obs_time.wn = 3; - test_msg.ssr_flag_tropo_grid_points.seq_num = 2; + test_msg.ssr_flag_tropo_grid_points.header.seq_num = 2; - test_msg.ssr_flag_tropo_grid_points.ssr_sol_id = 3; + test_msg.ssr_flag_tropo_grid_points.header.ssr_sol_id = 3; - test_msg.ssr_flag_tropo_grid_points.tile_id = 5; + test_msg.ssr_flag_tropo_grid_points.header.tile_id = 5; - test_msg.ssr_flag_tropo_grid_points.tile_set_id = 4; + test_msg.ssr_flag_tropo_grid_points.header.tile_set_id = 4; + + test_msg.ssr_flag_tropo_grid_points.n_faulty_points = 3; sbp_message_send(&sbp_state, SbpMsgSsrFlagTropoGridPoints, 66, &test_msg, &dummy_write); @@ -151,12 +151,6 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints) { &test_msg) == 0, "Sent and received messages did not compare equal"); - ck_assert_msg( - last_msg.msg.ssr_flag_tropo_grid_points.chain_id == 6, - "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.chain_id, " - "expected 6, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.chain_id); - ck_assert_msg( last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[0] == 10, "incorrect value for " @@ -176,53 +170,63 @@ START_TEST(test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints) { "12, is %d", last_msg.msg.ssr_flag_tropo_grid_points.faulty_points[2]); - ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points == 3, + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.header.chain_id == 6, "incorrect value for " - "last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points, " - "expected 3, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points); + "last_msg.msg.ssr_flag_tropo_grid_points.header.chain_id, " + "expected 6, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.chain_id); - ck_assert_msg( - last_msg.msg.ssr_flag_tropo_grid_points.num_msgs == 1, - "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.num_msgs, " - "expected 1, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.num_msgs); - - ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.obs_time.tow == 180, + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.header.num_msgs == 1, "incorrect value for " - "last_msg.msg.ssr_flag_tropo_grid_points.obs_time.tow, " - "expected 180, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.obs_time.tow); + "last_msg.msg.ssr_flag_tropo_grid_points.header.num_msgs, " + "expected 1, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.num_msgs); - ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.obs_time.wn == 3, - "incorrect value for " - "last_msg.msg.ssr_flag_tropo_grid_points.obs_time.wn, " - "expected 3, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.obs_time.wn); + ck_assert_msg( + last_msg.msg.ssr_flag_tropo_grid_points.header.obs_time.tow == 180, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.header.obs_time.tow, expected " + "180, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.obs_time.tow); ck_assert_msg( - last_msg.msg.ssr_flag_tropo_grid_points.seq_num == 2, - "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.seq_num, " - "expected 2, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.seq_num); + last_msg.msg.ssr_flag_tropo_grid_points.header.obs_time.wn == 3, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.header.obs_time.wn, expected " + "3, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.obs_time.wn); + + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.header.seq_num == 2, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.header.seq_num, " + "expected 2, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.seq_num); ck_assert_msg( - last_msg.msg.ssr_flag_tropo_grid_points.ssr_sol_id == 3, + last_msg.msg.ssr_flag_tropo_grid_points.header.ssr_sol_id == 3, "incorrect value for " - "last_msg.msg.ssr_flag_tropo_grid_points.ssr_sol_id, expected 3, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.ssr_sol_id); + "last_msg.msg.ssr_flag_tropo_grid_points.header.ssr_sol_id, expected " + "3, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.ssr_sol_id); + + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.header.tile_id == 5, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.header.tile_id, " + "expected 5, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.tile_id); ck_assert_msg( - last_msg.msg.ssr_flag_tropo_grid_points.tile_id == 5, - "incorrect value for last_msg.msg.ssr_flag_tropo_grid_points.tile_id, " - "expected 5, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.tile_id); + last_msg.msg.ssr_flag_tropo_grid_points.header.tile_set_id == 4, + "incorrect value for " + "last_msg.msg.ssr_flag_tropo_grid_points.header.tile_set_id, expected " + "4, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.header.tile_set_id); - ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.tile_set_id == 4, + ck_assert_msg(last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points == 3, "incorrect value for " - "last_msg.msg.ssr_flag_tropo_grid_points.tile_set_id, " - "expected 4, is %d", - last_msg.msg.ssr_flag_tropo_grid_points.tile_set_id); + "last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points, " + "expected 3, is %d", + last_msg.msg.ssr_flag_tropo_grid_points.n_faulty_points); } } END_TEST diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc index 5d6e653eec..2dd620d95c 100644 --- a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc @@ -82,7 +82,6 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, Test) { }; sbp_msg_ssr_flag_iono_grid_point_sat_los_t test_msg{}; - test_msg.chain_id = 6; test_msg.faulty_los[0].constellation = 11; test_msg.faulty_los[0].satId = 10; @@ -90,14 +89,15 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, Test) { test_msg.faulty_los[1].constellation = 14; test_msg.faulty_los[1].satId = 15; test_msg.grid_point_id = 30; + test_msg.header.chain_id = 6; + test_msg.header.num_msgs = 1; + test_msg.header.obs_time.tow = 180; + test_msg.header.obs_time.wn = 3; + test_msg.header.seq_num = 2; + test_msg.header.ssr_sol_id = 3; + test_msg.header.tile_id = 5; + test_msg.header.tile_set_id = 4; test_msg.n_faulty_los = 2; - test_msg.num_msgs = 1; - test_msg.obs_time.tow = 180; - test_msg.obs_time.wn = 3; - test_msg.seq_num = 2; - test_msg.ssr_sol_id = 3; - test_msg.tile_id = 5; - test_msg.tile_set_id = 4; EXPECT_EQ(send_message(66, test_msg), SBP_OK); @@ -111,9 +111,6 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, Test) { EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_, test_msg); - EXPECT_EQ(last_msg_.chain_id, 6) - << "incorrect value for last_msg_.chain_id, expected 6, is " - << last_msg_.chain_id; EXPECT_EQ(last_msg_.faulty_los[0].constellation, 11) << "incorrect value for last_msg_.faulty_los[0].constellation, expected " "11, is " @@ -131,28 +128,31 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, Test) { EXPECT_EQ(last_msg_.grid_point_id, 30) << "incorrect value for last_msg_.grid_point_id, expected 30, is " << last_msg_.grid_point_id; + EXPECT_EQ(last_msg_.header.chain_id, 6) + << "incorrect value for last_msg_.header.chain_id, expected 6, is " + << last_msg_.header.chain_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.obs_time.tow, 180) + << "incorrect value for last_msg_.header.obs_time.tow, expected 180, is " + << last_msg_.header.obs_time.tow; + EXPECT_EQ(last_msg_.header.obs_time.wn, 3) + << "incorrect value for last_msg_.header.obs_time.wn, expected 3, is " + << last_msg_.header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for last_msg_.header.ssr_sol_id, expected 3, is " + << last_msg_.header.ssr_sol_id; + EXPECT_EQ(last_msg_.header.tile_id, 5) + << "incorrect value for last_msg_.header.tile_id, expected 5, is " + << last_msg_.header.tile_id; + EXPECT_EQ(last_msg_.header.tile_set_id, 4) + << "incorrect value for last_msg_.header.tile_set_id, expected 4, is " + << last_msg_.header.tile_set_id; EXPECT_EQ(last_msg_.n_faulty_los, 2) << "incorrect value for last_msg_.n_faulty_los, expected 2, is " << last_msg_.n_faulty_los; - EXPECT_EQ(last_msg_.num_msgs, 1) - << "incorrect value for last_msg_.num_msgs, expected 1, is " - << last_msg_.num_msgs; - EXPECT_EQ(last_msg_.obs_time.tow, 180) - << "incorrect value for last_msg_.obs_time.tow, expected 180, is " - << last_msg_.obs_time.tow; - EXPECT_EQ(last_msg_.obs_time.wn, 3) - << "incorrect value for last_msg_.obs_time.wn, expected 3, is " - << last_msg_.obs_time.wn; - EXPECT_EQ(last_msg_.seq_num, 2) - << "incorrect value for last_msg_.seq_num, expected 2, is " - << last_msg_.seq_num; - EXPECT_EQ(last_msg_.ssr_sol_id, 3) - << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " - << last_msg_.ssr_sol_id; - EXPECT_EQ(last_msg_.tile_id, 5) - << "incorrect value for last_msg_.tile_id, expected 5, is " - << last_msg_.tile_id; - EXPECT_EQ(last_msg_.tile_set_id, 4) - << "incorrect value for last_msg_.tile_set_id, expected 4, is " - << last_msg_.tile_set_id; } diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc index ee491d8453..d0077dee23 100644 --- a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc @@ -81,21 +81,21 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0, Test) { }; sbp_msg_ssr_flag_iono_grid_points_t test_msg{}; - test_msg.chain_id = 6; test_msg.faulty_points[0] = 10; test_msg.faulty_points[1] = 11; test_msg.faulty_points[2] = 12; + test_msg.header.chain_id = 6; + test_msg.header.num_msgs = 1; + test_msg.header.obs_time.tow = 180; + test_msg.header.obs_time.wn = 3; + test_msg.header.seq_num = 2; + test_msg.header.ssr_sol_id = 3; + test_msg.header.tile_id = 5; + test_msg.header.tile_set_id = 4; test_msg.n_faulty_points = 3; - test_msg.num_msgs = 1; - test_msg.obs_time.tow = 180; - test_msg.obs_time.wn = 3; - test_msg.seq_num = 2; - test_msg.ssr_sol_id = 3; - test_msg.tile_id = 5; - test_msg.tile_set_id = 4; EXPECT_EQ(send_message(66, test_msg), SBP_OK); @@ -109,9 +109,6 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0, Test) { EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_, test_msg); - EXPECT_EQ(last_msg_.chain_id, 6) - << "incorrect value for last_msg_.chain_id, expected 6, is " - << last_msg_.chain_id; EXPECT_EQ(last_msg_.faulty_points[0], 10) << "incorrect value for last_msg_.faulty_points[0], expected 10, is " << last_msg_.faulty_points[0]; @@ -121,28 +118,31 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0, Test) { EXPECT_EQ(last_msg_.faulty_points[2], 12) << "incorrect value for last_msg_.faulty_points[2], expected 12, is " << last_msg_.faulty_points[2]; + EXPECT_EQ(last_msg_.header.chain_id, 6) + << "incorrect value for last_msg_.header.chain_id, expected 6, is " + << last_msg_.header.chain_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.obs_time.tow, 180) + << "incorrect value for last_msg_.header.obs_time.tow, expected 180, is " + << last_msg_.header.obs_time.tow; + EXPECT_EQ(last_msg_.header.obs_time.wn, 3) + << "incorrect value for last_msg_.header.obs_time.wn, expected 3, is " + << last_msg_.header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for last_msg_.header.ssr_sol_id, expected 3, is " + << last_msg_.header.ssr_sol_id; + EXPECT_EQ(last_msg_.header.tile_id, 5) + << "incorrect value for last_msg_.header.tile_id, expected 5, is " + << last_msg_.header.tile_id; + EXPECT_EQ(last_msg_.header.tile_set_id, 4) + << "incorrect value for last_msg_.header.tile_set_id, expected 4, is " + << last_msg_.header.tile_set_id; EXPECT_EQ(last_msg_.n_faulty_points, 3) << "incorrect value for last_msg_.n_faulty_points, expected 3, is " << last_msg_.n_faulty_points; - EXPECT_EQ(last_msg_.num_msgs, 1) - << "incorrect value for last_msg_.num_msgs, expected 1, is " - << last_msg_.num_msgs; - EXPECT_EQ(last_msg_.obs_time.tow, 180) - << "incorrect value for last_msg_.obs_time.tow, expected 180, is " - << last_msg_.obs_time.tow; - EXPECT_EQ(last_msg_.obs_time.wn, 3) - << "incorrect value for last_msg_.obs_time.wn, expected 3, is " - << last_msg_.obs_time.wn; - EXPECT_EQ(last_msg_.seq_num, 2) - << "incorrect value for last_msg_.seq_num, expected 2, is " - << last_msg_.seq_num; - EXPECT_EQ(last_msg_.ssr_sol_id, 3) - << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " - << last_msg_.ssr_sol_id; - EXPECT_EQ(last_msg_.tile_id, 5) - << "incorrect value for last_msg_.tile_id, expected 5, is " - << last_msg_.tile_id; - EXPECT_EQ(last_msg_.tile_set_id, 4) - << "incorrect value for last_msg_.tile_set_id, expected 4, is " - << last_msg_.tile_set_id; } diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc index 0ddf593cb0..91580ed51f 100644 --- a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc @@ -82,21 +82,21 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0, Test) { }; sbp_msg_ssr_flag_iono_tile_sat_los_t test_msg{}; - test_msg.chain_id = 6; test_msg.faulty_los[0].constellation = 11; test_msg.faulty_los[0].satId = 10; test_msg.faulty_los[1].constellation = 14; test_msg.faulty_los[1].satId = 15; + test_msg.header.chain_id = 6; + test_msg.header.num_msgs = 1; + test_msg.header.obs_time.tow = 180; + test_msg.header.obs_time.wn = 3; + test_msg.header.seq_num = 2; + test_msg.header.ssr_sol_id = 3; + test_msg.header.tile_id = 5; + test_msg.header.tile_set_id = 4; test_msg.n_faulty_los = 2; - test_msg.num_msgs = 1; - test_msg.obs_time.tow = 180; - test_msg.obs_time.wn = 3; - test_msg.seq_num = 2; - test_msg.ssr_sol_id = 3; - test_msg.tile_id = 5; - test_msg.tile_set_id = 4; EXPECT_EQ(send_message(66, test_msg), SBP_OK); @@ -110,9 +110,6 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0, Test) { EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_, test_msg); - EXPECT_EQ(last_msg_.chain_id, 6) - << "incorrect value for last_msg_.chain_id, expected 6, is " - << last_msg_.chain_id; EXPECT_EQ(last_msg_.faulty_los[0].constellation, 11) << "incorrect value for last_msg_.faulty_los[0].constellation, expected " "11, is " @@ -127,28 +124,31 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0, Test) { EXPECT_EQ(last_msg_.faulty_los[1].satId, 15) << "incorrect value for last_msg_.faulty_los[1].satId, expected 15, is " << last_msg_.faulty_los[1].satId; + EXPECT_EQ(last_msg_.header.chain_id, 6) + << "incorrect value for last_msg_.header.chain_id, expected 6, is " + << last_msg_.header.chain_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.obs_time.tow, 180) + << "incorrect value for last_msg_.header.obs_time.tow, expected 180, is " + << last_msg_.header.obs_time.tow; + EXPECT_EQ(last_msg_.header.obs_time.wn, 3) + << "incorrect value for last_msg_.header.obs_time.wn, expected 3, is " + << last_msg_.header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for last_msg_.header.ssr_sol_id, expected 3, is " + << last_msg_.header.ssr_sol_id; + EXPECT_EQ(last_msg_.header.tile_id, 5) + << "incorrect value for last_msg_.header.tile_id, expected 5, is " + << last_msg_.header.tile_id; + EXPECT_EQ(last_msg_.header.tile_set_id, 4) + << "incorrect value for last_msg_.header.tile_set_id, expected 4, is " + << last_msg_.header.tile_set_id; EXPECT_EQ(last_msg_.n_faulty_los, 2) << "incorrect value for last_msg_.n_faulty_los, expected 2, is " << last_msg_.n_faulty_los; - EXPECT_EQ(last_msg_.num_msgs, 1) - << "incorrect value for last_msg_.num_msgs, expected 1, is " - << last_msg_.num_msgs; - EXPECT_EQ(last_msg_.obs_time.tow, 180) - << "incorrect value for last_msg_.obs_time.tow, expected 180, is " - << last_msg_.obs_time.tow; - EXPECT_EQ(last_msg_.obs_time.wn, 3) - << "incorrect value for last_msg_.obs_time.wn, expected 3, is " - << last_msg_.obs_time.wn; - EXPECT_EQ(last_msg_.seq_num, 2) - << "incorrect value for last_msg_.seq_num, expected 2, is " - << last_msg_.seq_num; - EXPECT_EQ(last_msg_.ssr_sol_id, 3) - << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " - << last_msg_.ssr_sol_id; - EXPECT_EQ(last_msg_.tile_id, 5) - << "incorrect value for last_msg_.tile_id, expected 5, is " - << last_msg_.tile_id; - EXPECT_EQ(last_msg_.tile_set_id, 4) - << "incorrect value for last_msg_.tile_set_id, expected 4, is " - << last_msg_.tile_set_id; } diff --git a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc index 99188dc619..061cd6e850 100644 --- a/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc +++ b/c/test/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc @@ -82,21 +82,21 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0, Test) { }; sbp_msg_ssr_flag_tropo_grid_points_t test_msg{}; - test_msg.chain_id = 6; test_msg.faulty_points[0] = 10; test_msg.faulty_points[1] = 11; test_msg.faulty_points[2] = 12; + test_msg.header.chain_id = 6; + test_msg.header.num_msgs = 1; + test_msg.header.obs_time.tow = 180; + test_msg.header.obs_time.wn = 3; + test_msg.header.seq_num = 2; + test_msg.header.ssr_sol_id = 3; + test_msg.header.tile_id = 5; + test_msg.header.tile_set_id = 4; test_msg.n_faulty_points = 3; - test_msg.num_msgs = 1; - test_msg.obs_time.tow = 180; - test_msg.obs_time.wn = 3; - test_msg.seq_num = 2; - test_msg.ssr_sol_id = 3; - test_msg.tile_id = 5; - test_msg.tile_set_id = 4; EXPECT_EQ(send_message(66, test_msg), SBP_OK); @@ -110,9 +110,6 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0, Test) { EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_, test_msg); - EXPECT_EQ(last_msg_.chain_id, 6) - << "incorrect value for last_msg_.chain_id, expected 6, is " - << last_msg_.chain_id; EXPECT_EQ(last_msg_.faulty_points[0], 10) << "incorrect value for last_msg_.faulty_points[0], expected 10, is " << last_msg_.faulty_points[0]; @@ -122,28 +119,31 @@ TEST_F(Test_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0, Test) { EXPECT_EQ(last_msg_.faulty_points[2], 12) << "incorrect value for last_msg_.faulty_points[2], expected 12, is " << last_msg_.faulty_points[2]; + EXPECT_EQ(last_msg_.header.chain_id, 6) + << "incorrect value for last_msg_.header.chain_id, expected 6, is " + << last_msg_.header.chain_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.obs_time.tow, 180) + << "incorrect value for last_msg_.header.obs_time.tow, expected 180, is " + << last_msg_.header.obs_time.tow; + EXPECT_EQ(last_msg_.header.obs_time.wn, 3) + << "incorrect value for last_msg_.header.obs_time.wn, expected 3, is " + << last_msg_.header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for last_msg_.header.ssr_sol_id, expected 3, is " + << last_msg_.header.ssr_sol_id; + EXPECT_EQ(last_msg_.header.tile_id, 5) + << "incorrect value for last_msg_.header.tile_id, expected 5, is " + << last_msg_.header.tile_id; + EXPECT_EQ(last_msg_.header.tile_set_id, 4) + << "incorrect value for last_msg_.header.tile_set_id, expected 4, is " + << last_msg_.header.tile_set_id; EXPECT_EQ(last_msg_.n_faulty_points, 3) << "incorrect value for last_msg_.n_faulty_points, expected 3, is " << last_msg_.n_faulty_points; - EXPECT_EQ(last_msg_.num_msgs, 1) - << "incorrect value for last_msg_.num_msgs, expected 1, is " - << last_msg_.num_msgs; - EXPECT_EQ(last_msg_.obs_time.tow, 180) - << "incorrect value for last_msg_.obs_time.tow, expected 180, is " - << last_msg_.obs_time.tow; - EXPECT_EQ(last_msg_.obs_time.wn, 3) - << "incorrect value for last_msg_.obs_time.wn, expected 3, is " - << last_msg_.obs_time.wn; - EXPECT_EQ(last_msg_.seq_num, 2) - << "incorrect value for last_msg_.seq_num, expected 2, is " - << last_msg_.seq_num; - EXPECT_EQ(last_msg_.ssr_sol_id, 3) - << "incorrect value for last_msg_.ssr_sol_id, expected 3, is " - << last_msg_.ssr_sol_id; - EXPECT_EQ(last_msg_.tile_id, 5) - << "incorrect value for last_msg_.tile_id, expected 5, is " - << last_msg_.tile_id; - EXPECT_EQ(last_msg_.tile_set_id, 4) - << "incorrect value for last_msg_.tile_set_id, expected 4, is " - << last_msg_.tile_set_id; } diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c index 8b5fee9e33..cdb7201f95 100644 --- a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.c @@ -134,7 +134,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { msg_ssr_flag_iono_grid_point_sat_los_t *test_msg = (msg_ssr_flag_iono_grid_point_sat_los_t *)test_msg_storage; test_msg_len = sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_los) == 0) { // Cope with variable length arrays test_msg_len += sizeof(test_msg->faulty_los[0]); @@ -148,14 +147,15 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { test_msg->faulty_los[1].constellation = 14; test_msg->faulty_los[1].satId = 15; test_msg->grid_point_id = 30; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_los = 2; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; sbp_payload_send(&sbp_state, 3025, 66, test_msg_len, test_msg_storage, &dummy_write); @@ -211,9 +211,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { (msg_ssr_flag_iono_grid_point_sat_los_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->chain_id == 6, - "incorrect value for chain_id, expected 6, is %d", - check_msg->chain_id); ck_assert_msg( check_msg->faulty_los[0].constellation == 11, "incorrect value for faulty_los[0].constellation, expected 11, is %d", @@ -231,30 +228,34 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos) { ck_assert_msg(check_msg->grid_point_id == 30, "incorrect value for grid_point_id, expected 30, is %d", check_msg->grid_point_id); + ck_assert_msg(check_msg->header.chain_id == 6, + "incorrect value for header.chain_id, expected 6, is %d", + check_msg->header.chain_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.obs_time.tow == 180, + "incorrect value for header.obs_time.tow, expected 180, is %d", + check_msg->header.obs_time.tow); + ck_assert_msg(check_msg->header.obs_time.wn == 3, + "incorrect value for header.obs_time.wn, expected 3, is %d", + check_msg->header.obs_time.wn); + 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.ssr_sol_id == 3, + "incorrect value for header.ssr_sol_id, expected 3, is %d", + check_msg->header.ssr_sol_id); + ck_assert_msg(check_msg->header.tile_id == 5, + "incorrect value for header.tile_id, expected 5, is %d", + check_msg->header.tile_id); + ck_assert_msg(check_msg->header.tile_set_id == 4, + "incorrect value for header.tile_set_id, expected 4, is %d", + check_msg->header.tile_set_id); ck_assert_msg(check_msg->n_faulty_los == 2, "incorrect value for n_faulty_los, expected 2, is %d", check_msg->n_faulty_los); - ck_assert_msg(check_msg->num_msgs == 1, - "incorrect value for num_msgs, expected 1, is %d", - check_msg->num_msgs); - ck_assert_msg(check_msg->obs_time.tow == 180, - "incorrect value for obs_time.tow, expected 180, is %d", - check_msg->obs_time.tow); - ck_assert_msg(check_msg->obs_time.wn == 3, - "incorrect value for obs_time.wn, expected 3, is %d", - check_msg->obs_time.wn); - ck_assert_msg(check_msg->seq_num == 2, - "incorrect value for seq_num, expected 2, is %d", - check_msg->seq_num); - ck_assert_msg(check_msg->ssr_sol_id == 3, - "incorrect value for ssr_sol_id, expected 3, is %d", - check_msg->ssr_sol_id); - ck_assert_msg(check_msg->tile_id == 5, - "incorrect value for tile_id, expected 5, is %d", - check_msg->tile_id); - ck_assert_msg(check_msg->tile_set_id == 4, - "incorrect value for tile_set_id, expected 4, is %d", - check_msg->tile_set_id); } } END_TEST diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c index 9291402293..cb3bc241f9 100644 --- a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.c @@ -134,7 +134,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints) { msg_ssr_flag_iono_grid_points_t *test_msg = (msg_ssr_flag_iono_grid_points_t *)test_msg_storage; test_msg_len = sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_points) == 0) { // Cope with variable length arrays test_msg_len += sizeof(test_msg->faulty_points[0]); @@ -150,14 +149,15 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints) { test_msg_len += sizeof(test_msg->faulty_points[0]); } test_msg->faulty_points[2] = 12; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_points = 3; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; sbp_payload_send(&sbp_state, 3015, 66, test_msg_len, test_msg_storage, &dummy_write); @@ -213,9 +213,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints) { (msg_ssr_flag_iono_grid_points_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->chain_id == 6, - "incorrect value for chain_id, expected 6, is %d", - check_msg->chain_id); ck_assert_msg(check_msg->faulty_points[0] == 10, "incorrect value for faulty_points[0], expected 10, is %d", check_msg->faulty_points[0]); @@ -225,30 +222,34 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints) { ck_assert_msg(check_msg->faulty_points[2] == 12, "incorrect value for faulty_points[2], expected 12, is %d", check_msg->faulty_points[2]); + ck_assert_msg(check_msg->header.chain_id == 6, + "incorrect value for header.chain_id, expected 6, is %d", + check_msg->header.chain_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.obs_time.tow == 180, + "incorrect value for header.obs_time.tow, expected 180, is %d", + check_msg->header.obs_time.tow); + ck_assert_msg(check_msg->header.obs_time.wn == 3, + "incorrect value for header.obs_time.wn, expected 3, is %d", + check_msg->header.obs_time.wn); + 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.ssr_sol_id == 3, + "incorrect value for header.ssr_sol_id, expected 3, is %d", + check_msg->header.ssr_sol_id); + ck_assert_msg(check_msg->header.tile_id == 5, + "incorrect value for header.tile_id, expected 5, is %d", + check_msg->header.tile_id); + ck_assert_msg(check_msg->header.tile_set_id == 4, + "incorrect value for header.tile_set_id, expected 4, is %d", + check_msg->header.tile_set_id); ck_assert_msg(check_msg->n_faulty_points == 3, "incorrect value for n_faulty_points, expected 3, is %d", check_msg->n_faulty_points); - ck_assert_msg(check_msg->num_msgs == 1, - "incorrect value for num_msgs, expected 1, is %d", - check_msg->num_msgs); - ck_assert_msg(check_msg->obs_time.tow == 180, - "incorrect value for obs_time.tow, expected 180, is %d", - check_msg->obs_time.tow); - ck_assert_msg(check_msg->obs_time.wn == 3, - "incorrect value for obs_time.wn, expected 3, is %d", - check_msg->obs_time.wn); - ck_assert_msg(check_msg->seq_num == 2, - "incorrect value for seq_num, expected 2, is %d", - check_msg->seq_num); - ck_assert_msg(check_msg->ssr_sol_id == 3, - "incorrect value for ssr_sol_id, expected 3, is %d", - check_msg->ssr_sol_id); - ck_assert_msg(check_msg->tile_id == 5, - "incorrect value for tile_id, expected 5, is %d", - check_msg->tile_id); - ck_assert_msg(check_msg->tile_set_id == 4, - "incorrect value for tile_set_id, expected 4, is %d", - check_msg->tile_set_id); } } END_TEST diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c index ce98917a1b..f4450330d8 100644 --- a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.c @@ -134,7 +134,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { msg_ssr_flag_iono_tile_sat_los_t *test_msg = (msg_ssr_flag_iono_tile_sat_los_t *)test_msg_storage; test_msg_len = sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_los) == 0) { // Cope with variable length arrays test_msg_len += sizeof(test_msg->faulty_los[0]); @@ -147,14 +146,15 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { } test_msg->faulty_los[1].constellation = 14; test_msg->faulty_los[1].satId = 15; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_los = 2; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; sbp_payload_send(&sbp_state, 3021, 66, test_msg_len, test_msg_storage, &dummy_write); @@ -210,9 +210,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { (msg_ssr_flag_iono_tile_sat_los_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->chain_id == 6, - "incorrect value for chain_id, expected 6, is %d", - check_msg->chain_id); ck_assert_msg( check_msg->faulty_los[0].constellation == 11, "incorrect value for faulty_los[0].constellation, expected 11, is %d", @@ -227,30 +224,34 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos) { ck_assert_msg(check_msg->faulty_los[1].satId == 15, "incorrect value for faulty_los[1].satId, expected 15, is %d", check_msg->faulty_los[1].satId); + ck_assert_msg(check_msg->header.chain_id == 6, + "incorrect value for header.chain_id, expected 6, is %d", + check_msg->header.chain_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.obs_time.tow == 180, + "incorrect value for header.obs_time.tow, expected 180, is %d", + check_msg->header.obs_time.tow); + ck_assert_msg(check_msg->header.obs_time.wn == 3, + "incorrect value for header.obs_time.wn, expected 3, is %d", + check_msg->header.obs_time.wn); + 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.ssr_sol_id == 3, + "incorrect value for header.ssr_sol_id, expected 3, is %d", + check_msg->header.ssr_sol_id); + ck_assert_msg(check_msg->header.tile_id == 5, + "incorrect value for header.tile_id, expected 5, is %d", + check_msg->header.tile_id); + ck_assert_msg(check_msg->header.tile_set_id == 4, + "incorrect value for header.tile_set_id, expected 4, is %d", + check_msg->header.tile_set_id); ck_assert_msg(check_msg->n_faulty_los == 2, "incorrect value for n_faulty_los, expected 2, is %d", check_msg->n_faulty_los); - ck_assert_msg(check_msg->num_msgs == 1, - "incorrect value for num_msgs, expected 1, is %d", - check_msg->num_msgs); - ck_assert_msg(check_msg->obs_time.tow == 180, - "incorrect value for obs_time.tow, expected 180, is %d", - check_msg->obs_time.tow); - ck_assert_msg(check_msg->obs_time.wn == 3, - "incorrect value for obs_time.wn, expected 3, is %d", - check_msg->obs_time.wn); - ck_assert_msg(check_msg->seq_num == 2, - "incorrect value for seq_num, expected 2, is %d", - check_msg->seq_num); - ck_assert_msg(check_msg->ssr_sol_id == 3, - "incorrect value for ssr_sol_id, expected 3, is %d", - check_msg->ssr_sol_id); - ck_assert_msg(check_msg->tile_id == 5, - "incorrect value for tile_id, expected 5, is %d", - check_msg->tile_id); - ck_assert_msg(check_msg->tile_set_id == 4, - "incorrect value for tile_set_id, expected 4, is %d", - check_msg->tile_set_id); } } END_TEST diff --git a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c index 313b343166..40a15c68a7 100644 --- a/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c +++ b/c/test/legacy/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.c @@ -134,7 +134,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints) { msg_ssr_flag_tropo_grid_points_t *test_msg = (msg_ssr_flag_tropo_grid_points_t *)test_msg_storage; test_msg_len = sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_points) == 0) { // Cope with variable length arrays test_msg_len += sizeof(test_msg->faulty_points[0]); @@ -150,14 +149,15 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints) { test_msg_len += sizeof(test_msg->faulty_points[0]); } test_msg->faulty_points[2] = 12; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_points = 3; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; sbp_payload_send(&sbp_state, 3011, 66, test_msg_len, test_msg_storage, &dummy_write); @@ -213,9 +213,6 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints) { (msg_ssr_flag_tropo_grid_points_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->chain_id == 6, - "incorrect value for chain_id, expected 6, is %d", - check_msg->chain_id); ck_assert_msg(check_msg->faulty_points[0] == 10, "incorrect value for faulty_points[0], expected 10, is %d", check_msg->faulty_points[0]); @@ -225,30 +222,34 @@ START_TEST(test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints) { ck_assert_msg(check_msg->faulty_points[2] == 12, "incorrect value for faulty_points[2], expected 12, is %d", check_msg->faulty_points[2]); + ck_assert_msg(check_msg->header.chain_id == 6, + "incorrect value for header.chain_id, expected 6, is %d", + check_msg->header.chain_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.obs_time.tow == 180, + "incorrect value for header.obs_time.tow, expected 180, is %d", + check_msg->header.obs_time.tow); + ck_assert_msg(check_msg->header.obs_time.wn == 3, + "incorrect value for header.obs_time.wn, expected 3, is %d", + check_msg->header.obs_time.wn); + 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.ssr_sol_id == 3, + "incorrect value for header.ssr_sol_id, expected 3, is %d", + check_msg->header.ssr_sol_id); + ck_assert_msg(check_msg->header.tile_id == 5, + "incorrect value for header.tile_id, expected 5, is %d", + check_msg->header.tile_id); + ck_assert_msg(check_msg->header.tile_set_id == 4, + "incorrect value for header.tile_set_id, expected 4, is %d", + check_msg->header.tile_set_id); ck_assert_msg(check_msg->n_faulty_points == 3, "incorrect value for n_faulty_points, expected 3, is %d", check_msg->n_faulty_points); - ck_assert_msg(check_msg->num_msgs == 1, - "incorrect value for num_msgs, expected 1, is %d", - check_msg->num_msgs); - ck_assert_msg(check_msg->obs_time.tow == 180, - "incorrect value for obs_time.tow, expected 180, is %d", - check_msg->obs_time.tow); - ck_assert_msg(check_msg->obs_time.wn == 3, - "incorrect value for obs_time.wn, expected 3, is %d", - check_msg->obs_time.wn); - ck_assert_msg(check_msg->seq_num == 2, - "incorrect value for seq_num, expected 2, is %d", - check_msg->seq_num); - ck_assert_msg(check_msg->ssr_sol_id == 3, - "incorrect value for ssr_sol_id, expected 3, is %d", - check_msg->ssr_sol_id); - ck_assert_msg(check_msg->tile_id == 5, - "incorrect value for tile_id, expected 5, is %d", - check_msg->tile_id); - ck_assert_msg(check_msg->tile_set_id == 4, - "incorrect value for tile_set_id, expected 4, is %d", - check_msg->tile_set_id); } } END_TEST diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc index f0da0b0732..786ec69d4d 100644 --- a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos.cc @@ -90,7 +90,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, msg_ssr_flag_iono_grid_point_sat_los_t *test_msg = (msg_ssr_flag_iono_grid_point_sat_los_t *)test_msg_storage; test_msg_len = (uint8_t)sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_los) == 0) { // Cope with variable length arrays test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_los[0])); @@ -104,14 +103,15 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, test_msg->faulty_los[1].constellation = 14; test_msg->faulty_los[1].satId = 15; test_msg->grid_point_id = 30; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_los = 2; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; EXPECT_EQ(send_message(3025, 66, test_msg_len, test_msg_storage), SBP_OK); @@ -125,8 +125,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_len_, test_msg_len); - EXPECT_EQ(last_msg_->chain_id, 6) - << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; EXPECT_EQ(last_msg_->faulty_los[0].constellation, 11) << "incorrect value for faulty_los[0].constellation, expected 11, is " << last_msg_->faulty_los[0].constellation; @@ -142,25 +140,31 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLos0, EXPECT_EQ(last_msg_->grid_point_id, 30) << "incorrect value for grid_point_id, expected 30, is " << last_msg_->grid_point_id; + EXPECT_EQ(last_msg_->header.chain_id, 6) + << "incorrect value for header.chain_id, expected 6, is " + << last_msg_->header.chain_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.obs_time.tow, 180) + << "incorrect value for header.obs_time.tow, expected 180, is " + << last_msg_->header.obs_time.tow; + EXPECT_EQ(last_msg_->header.obs_time.wn, 3) + << "incorrect value for header.obs_time.wn, expected 3, is " + << last_msg_->header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for header.ssr_sol_id, expected 3, is " + << last_msg_->header.ssr_sol_id; + EXPECT_EQ(last_msg_->header.tile_id, 5) + << "incorrect value for header.tile_id, expected 5, is " + << last_msg_->header.tile_id; + EXPECT_EQ(last_msg_->header.tile_set_id, 4) + << "incorrect value for header.tile_set_id, expected 4, is " + << last_msg_->header.tile_set_id; EXPECT_EQ(last_msg_->n_faulty_los, 2) << "incorrect value for n_faulty_los, expected 2, is " << last_msg_->n_faulty_los; - EXPECT_EQ(last_msg_->num_msgs, 1) - << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; - EXPECT_EQ(last_msg_->obs_time.tow, 180) - << "incorrect value for obs_time.tow, expected 180, is " - << last_msg_->obs_time.tow; - EXPECT_EQ(last_msg_->obs_time.wn, 3) - << "incorrect value for obs_time.wn, expected 3, is " - << last_msg_->obs_time.wn; - EXPECT_EQ(last_msg_->seq_num, 2) - << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; - EXPECT_EQ(last_msg_->ssr_sol_id, 3) - << "incorrect value for ssr_sol_id, expected 3, is " - << last_msg_->ssr_sol_id; - EXPECT_EQ(last_msg_->tile_id, 5) - << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; - EXPECT_EQ(last_msg_->tile_set_id, 4) - << "incorrect value for tile_set_id, expected 4, is " - << last_msg_->tile_set_id; } diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc index e7cb63bd23..67f9790b02 100644 --- a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints.cc @@ -88,7 +88,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0, Test) { msg_ssr_flag_iono_grid_points_t *test_msg = (msg_ssr_flag_iono_grid_points_t *)test_msg_storage; test_msg_len = (uint8_t)sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_points) == 0) { // Cope with variable length arrays test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); @@ -104,14 +103,15 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0, Test) { test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); } test_msg->faulty_points[2] = 12; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_points = 3; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; EXPECT_EQ(send_message(3015, 66, test_msg_len, test_msg_storage), SBP_OK); @@ -125,8 +125,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0, Test) { EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_len_, test_msg_len); - EXPECT_EQ(last_msg_->chain_id, 6) - << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; EXPECT_EQ(last_msg_->faulty_points[0], 10) << "incorrect value for faulty_points[0], expected 10, is " << last_msg_->faulty_points[0]; @@ -136,25 +134,31 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoGridPoints0, Test) { EXPECT_EQ(last_msg_->faulty_points[2], 12) << "incorrect value for faulty_points[2], expected 12, is " << last_msg_->faulty_points[2]; + EXPECT_EQ(last_msg_->header.chain_id, 6) + << "incorrect value for header.chain_id, expected 6, is " + << last_msg_->header.chain_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.obs_time.tow, 180) + << "incorrect value for header.obs_time.tow, expected 180, is " + << last_msg_->header.obs_time.tow; + EXPECT_EQ(last_msg_->header.obs_time.wn, 3) + << "incorrect value for header.obs_time.wn, expected 3, is " + << last_msg_->header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for header.ssr_sol_id, expected 3, is " + << last_msg_->header.ssr_sol_id; + EXPECT_EQ(last_msg_->header.tile_id, 5) + << "incorrect value for header.tile_id, expected 5, is " + << last_msg_->header.tile_id; + EXPECT_EQ(last_msg_->header.tile_set_id, 4) + << "incorrect value for header.tile_set_id, expected 4, is " + << last_msg_->header.tile_set_id; EXPECT_EQ(last_msg_->n_faulty_points, 3) << "incorrect value for n_faulty_points, expected 3, is " << last_msg_->n_faulty_points; - EXPECT_EQ(last_msg_->num_msgs, 1) - << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; - EXPECT_EQ(last_msg_->obs_time.tow, 180) - << "incorrect value for obs_time.tow, expected 180, is " - << last_msg_->obs_time.tow; - EXPECT_EQ(last_msg_->obs_time.wn, 3) - << "incorrect value for obs_time.wn, expected 3, is " - << last_msg_->obs_time.wn; - EXPECT_EQ(last_msg_->seq_num, 2) - << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; - EXPECT_EQ(last_msg_->ssr_sol_id, 3) - << "incorrect value for ssr_sol_id, expected 3, is " - << last_msg_->ssr_sol_id; - EXPECT_EQ(last_msg_->tile_id, 5) - << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; - EXPECT_EQ(last_msg_->tile_set_id, 4) - << "incorrect value for tile_set_id, expected 4, is " - << last_msg_->tile_set_id; } diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc index a6f7f7340d..d03b0e04d0 100644 --- a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos.cc @@ -88,7 +88,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0, Test) { msg_ssr_flag_iono_tile_sat_los_t *test_msg = (msg_ssr_flag_iono_tile_sat_los_t *)test_msg_storage; test_msg_len = (uint8_t)sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_los) == 0) { // Cope with variable length arrays test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_los[0])); @@ -101,14 +100,15 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0, Test) { } test_msg->faulty_los[1].constellation = 14; test_msg->faulty_los[1].satId = 15; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_los = 2; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; EXPECT_EQ(send_message(3021, 66, test_msg_len, test_msg_storage), SBP_OK); @@ -122,8 +122,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0, Test) { EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_len_, test_msg_len); - EXPECT_EQ(last_msg_->chain_id, 6) - << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; EXPECT_EQ(last_msg_->faulty_los[0].constellation, 11) << "incorrect value for faulty_los[0].constellation, expected 11, is " << last_msg_->faulty_los[0].constellation; @@ -136,25 +134,31 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLos0, Test) { EXPECT_EQ(last_msg_->faulty_los[1].satId, 15) << "incorrect value for faulty_los[1].satId, expected 15, is " << last_msg_->faulty_los[1].satId; + EXPECT_EQ(last_msg_->header.chain_id, 6) + << "incorrect value for header.chain_id, expected 6, is " + << last_msg_->header.chain_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.obs_time.tow, 180) + << "incorrect value for header.obs_time.tow, expected 180, is " + << last_msg_->header.obs_time.tow; + EXPECT_EQ(last_msg_->header.obs_time.wn, 3) + << "incorrect value for header.obs_time.wn, expected 3, is " + << last_msg_->header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for header.ssr_sol_id, expected 3, is " + << last_msg_->header.ssr_sol_id; + EXPECT_EQ(last_msg_->header.tile_id, 5) + << "incorrect value for header.tile_id, expected 5, is " + << last_msg_->header.tile_id; + EXPECT_EQ(last_msg_->header.tile_set_id, 4) + << "incorrect value for header.tile_set_id, expected 4, is " + << last_msg_->header.tile_set_id; EXPECT_EQ(last_msg_->n_faulty_los, 2) << "incorrect value for n_faulty_los, expected 2, is " << last_msg_->n_faulty_los; - EXPECT_EQ(last_msg_->num_msgs, 1) - << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; - EXPECT_EQ(last_msg_->obs_time.tow, 180) - << "incorrect value for obs_time.tow, expected 180, is " - << last_msg_->obs_time.tow; - EXPECT_EQ(last_msg_->obs_time.wn, 3) - << "incorrect value for obs_time.wn, expected 3, is " - << last_msg_->obs_time.wn; - EXPECT_EQ(last_msg_->seq_num, 2) - << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; - EXPECT_EQ(last_msg_->ssr_sol_id, 3) - << "incorrect value for ssr_sol_id, expected 3, is " - << last_msg_->ssr_sol_id; - EXPECT_EQ(last_msg_->tile_id, 5) - << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; - EXPECT_EQ(last_msg_->tile_set_id, 4) - << "incorrect value for tile_set_id, expected 4, is " - << last_msg_->tile_set_id; } diff --git a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc index 6f9b2708ae..109c4b1931 100644 --- a/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc +++ b/c/test/legacy/cpp/auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints.cc @@ -88,7 +88,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0, Test) { msg_ssr_flag_tropo_grid_points_t *test_msg = (msg_ssr_flag_tropo_grid_points_t *)test_msg_storage; test_msg_len = (uint8_t)sizeof(*test_msg); - test_msg->chain_id = 6; if (sizeof(test_msg->faulty_points) == 0) { // Cope with variable length arrays test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); @@ -104,14 +103,15 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0, Test) { test_msg_len = (uint8_t)(test_msg_len + sizeof(test_msg->faulty_points[0])); } test_msg->faulty_points[2] = 12; + test_msg->header.chain_id = 6; + test_msg->header.num_msgs = 1; + test_msg->header.obs_time.tow = 180; + test_msg->header.obs_time.wn = 3; + test_msg->header.seq_num = 2; + test_msg->header.ssr_sol_id = 3; + test_msg->header.tile_id = 5; + test_msg->header.tile_set_id = 4; test_msg->n_faulty_points = 3; - test_msg->num_msgs = 1; - test_msg->obs_time.tow = 180; - test_msg->obs_time.wn = 3; - test_msg->seq_num = 2; - test_msg->ssr_sol_id = 3; - test_msg->tile_id = 5; - test_msg->tile_set_id = 4; EXPECT_EQ(send_message(3011, 66, test_msg_len, test_msg_storage), SBP_OK); @@ -125,8 +125,6 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0, Test) { EXPECT_EQ(n_callbacks_logged_, 1); EXPECT_EQ(last_sender_id_, 66); EXPECT_EQ(last_msg_len_, test_msg_len); - EXPECT_EQ(last_msg_->chain_id, 6) - << "incorrect value for chain_id, expected 6, is " << last_msg_->chain_id; EXPECT_EQ(last_msg_->faulty_points[0], 10) << "incorrect value for faulty_points[0], expected 10, is " << last_msg_->faulty_points[0]; @@ -136,25 +134,31 @@ TEST_F(Test_legacy_auto_check_sbp_integrity_MsgSsrFlagTropoGridPoints0, Test) { EXPECT_EQ(last_msg_->faulty_points[2], 12) << "incorrect value for faulty_points[2], expected 12, is " << last_msg_->faulty_points[2]; + EXPECT_EQ(last_msg_->header.chain_id, 6) + << "incorrect value for header.chain_id, expected 6, is " + << last_msg_->header.chain_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.obs_time.tow, 180) + << "incorrect value for header.obs_time.tow, expected 180, is " + << last_msg_->header.obs_time.tow; + EXPECT_EQ(last_msg_->header.obs_time.wn, 3) + << "incorrect value for header.obs_time.wn, expected 3, is " + << last_msg_->header.obs_time.wn; + 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.ssr_sol_id, 3) + << "incorrect value for header.ssr_sol_id, expected 3, is " + << last_msg_->header.ssr_sol_id; + EXPECT_EQ(last_msg_->header.tile_id, 5) + << "incorrect value for header.tile_id, expected 5, is " + << last_msg_->header.tile_id; + EXPECT_EQ(last_msg_->header.tile_set_id, 4) + << "incorrect value for header.tile_set_id, expected 4, is " + << last_msg_->header.tile_set_id; EXPECT_EQ(last_msg_->n_faulty_points, 3) << "incorrect value for n_faulty_points, expected 3, is " << last_msg_->n_faulty_points; - EXPECT_EQ(last_msg_->num_msgs, 1) - << "incorrect value for num_msgs, expected 1, is " << last_msg_->num_msgs; - EXPECT_EQ(last_msg_->obs_time.tow, 180) - << "incorrect value for obs_time.tow, expected 180, is " - << last_msg_->obs_time.tow; - EXPECT_EQ(last_msg_->obs_time.wn, 3) - << "incorrect value for obs_time.wn, expected 3, is " - << last_msg_->obs_time.wn; - EXPECT_EQ(last_msg_->seq_num, 2) - << "incorrect value for seq_num, expected 2, is " << last_msg_->seq_num; - EXPECT_EQ(last_msg_->ssr_sol_id, 3) - << "incorrect value for ssr_sol_id, expected 3, is " - << last_msg_->ssr_sol_id; - EXPECT_EQ(last_msg_->tile_id, 5) - << "incorrect value for tile_id, expected 5, is " << last_msg_->tile_id; - EXPECT_EQ(last_msg_->tile_set_id, 4) - << "incorrect value for tile_set_id, expected 4, is " - << last_msg_->tile_set_id; } diff --git a/docs/sbp.pdf b/docs/sbp.pdf index ae85988da608d5a45c8f055bb3e3e4e12ae5abee..211429856b0c77b60338462e722c6cb8e3c6d58e 100644 GIT binary patch delta 139 zcmccrLFWDknT8g|7N!>F7M2#)7Pc+ydLqh3h6a`fW>K14`o8%oE{P?n3K}j}Mg~Sk z2Brp<5XtRF7M2#)7Pc+ydLqh(=BCC5CQ+JP`o8%oE{P?n3K}j}Mg~Sk z2Brp<5XtR isEmpty) getWord16le pure MsgSsrFlagTropoGridPoints {..} put MsgSsrFlagTropoGridPoints {..} = do - put _msgSsrFlagTropoGridPoints_obs_time - putWord8 _msgSsrFlagTropoGridPoints_num_msgs - putWord8 _msgSsrFlagTropoGridPoints_seq_num - putWord8 _msgSsrFlagTropoGridPoints_ssr_sol_id - putWord16le _msgSsrFlagTropoGridPoints_tile_set_id - putWord16le _msgSsrFlagTropoGridPoints_tile_id - putWord8 _msgSsrFlagTropoGridPoints_chain_id + put _msgSsrFlagTropoGridPoints_header putWord8 _msgSsrFlagTropoGridPoints_n_faulty_points mapM_ putWord16le _msgSsrFlagTropoGridPoints_faulty_points @@ -212,20 +228,8 @@ msgSsrFlagIonoGridPoints :: Word16 msgSsrFlagIonoGridPoints = 0x0BC7 data MsgSsrFlagIonoGridPoints = MsgSsrFlagIonoGridPoints - { _msgSsrFlagIonoGridPoints_obs_time :: !GpsTimeSec - -- ^ GNSS reference time of the observation used to generate the flag. - , _msgSsrFlagIonoGridPoints_num_msgs :: !Word8 - -- ^ Number of messages in the dataset - , _msgSsrFlagIonoGridPoints_seq_num :: !Word8 - -- ^ Position of this message in the dataset - , _msgSsrFlagIonoGridPoints_ssr_sol_id :: !Word8 - -- ^ SSR Solution ID. - , _msgSsrFlagIonoGridPoints_tile_set_id :: !Word16 - -- ^ Unique identifier of the set this tile belongs to. - , _msgSsrFlagIonoGridPoints_tile_id :: !Word16 - -- ^ Unique identifier of this tile in the tile set. - , _msgSsrFlagIonoGridPoints_chain_id :: !Word8 - -- ^ Chain and type of flag. + { _msgSsrFlagIonoGridPoints_header :: !IntegritySSRHeader + -- ^ Header of an integrity message. , _msgSsrFlagIonoGridPoints_n_faulty_points :: !Word8 -- ^ Number of faulty grid points. , _msgSsrFlagIonoGridPoints_faulty_points :: ![Word16] @@ -234,25 +238,13 @@ data MsgSsrFlagIonoGridPoints = MsgSsrFlagIonoGridPoints instance Binary MsgSsrFlagIonoGridPoints where get = do - _msgSsrFlagIonoGridPoints_obs_time <- get - _msgSsrFlagIonoGridPoints_num_msgs <- getWord8 - _msgSsrFlagIonoGridPoints_seq_num <- getWord8 - _msgSsrFlagIonoGridPoints_ssr_sol_id <- getWord8 - _msgSsrFlagIonoGridPoints_tile_set_id <- getWord16le - _msgSsrFlagIonoGridPoints_tile_id <- getWord16le - _msgSsrFlagIonoGridPoints_chain_id <- getWord8 + _msgSsrFlagIonoGridPoints_header <- get _msgSsrFlagIonoGridPoints_n_faulty_points <- getWord8 _msgSsrFlagIonoGridPoints_faulty_points <- whileM (not <$> isEmpty) getWord16le pure MsgSsrFlagIonoGridPoints {..} put MsgSsrFlagIonoGridPoints {..} = do - put _msgSsrFlagIonoGridPoints_obs_time - putWord8 _msgSsrFlagIonoGridPoints_num_msgs - putWord8 _msgSsrFlagIonoGridPoints_seq_num - putWord8 _msgSsrFlagIonoGridPoints_ssr_sol_id - putWord16le _msgSsrFlagIonoGridPoints_tile_set_id - putWord16le _msgSsrFlagIonoGridPoints_tile_id - putWord8 _msgSsrFlagIonoGridPoints_chain_id + put _msgSsrFlagIonoGridPoints_header putWord8 _msgSsrFlagIonoGridPoints_n_faulty_points mapM_ putWord16le _msgSsrFlagIonoGridPoints_faulty_points @@ -264,20 +256,8 @@ msgSsrFlagIonoTileSatLos :: Word16 msgSsrFlagIonoTileSatLos = 0x0BCD data MsgSsrFlagIonoTileSatLos = MsgSsrFlagIonoTileSatLos - { _msgSsrFlagIonoTileSatLos_obs_time :: !GpsTimeSec - -- ^ GNSS reference time of the observation used to generate the flag. - , _msgSsrFlagIonoTileSatLos_num_msgs :: !Word8 - -- ^ Number of messages in the dataset - , _msgSsrFlagIonoTileSatLos_seq_num :: !Word8 - -- ^ Position of this message in the dataset - , _msgSsrFlagIonoTileSatLos_ssr_sol_id :: !Word8 - -- ^ SSR Solution ID. - , _msgSsrFlagIonoTileSatLos_tile_set_id :: !Word16 - -- ^ Unique identifier of the set this tile belongs to. - , _msgSsrFlagIonoTileSatLos_tile_id :: !Word16 - -- ^ Unique identifier of this tile in the tile set. - , _msgSsrFlagIonoTileSatLos_chain_id :: !Word8 - -- ^ Chain and type of flag. + { _msgSsrFlagIonoTileSatLos_header :: !IntegritySSRHeader + -- ^ Header of an integrity message. , _msgSsrFlagIonoTileSatLos_n_faulty_los :: !Word8 -- ^ Number of faulty LOS. , _msgSsrFlagIonoTileSatLos_faulty_los :: ![SvId] @@ -286,25 +266,13 @@ data MsgSsrFlagIonoTileSatLos = MsgSsrFlagIonoTileSatLos instance Binary MsgSsrFlagIonoTileSatLos where get = do - _msgSsrFlagIonoTileSatLos_obs_time <- get - _msgSsrFlagIonoTileSatLos_num_msgs <- getWord8 - _msgSsrFlagIonoTileSatLos_seq_num <- getWord8 - _msgSsrFlagIonoTileSatLos_ssr_sol_id <- getWord8 - _msgSsrFlagIonoTileSatLos_tile_set_id <- getWord16le - _msgSsrFlagIonoTileSatLos_tile_id <- getWord16le - _msgSsrFlagIonoTileSatLos_chain_id <- getWord8 + _msgSsrFlagIonoTileSatLos_header <- get _msgSsrFlagIonoTileSatLos_n_faulty_los <- getWord8 _msgSsrFlagIonoTileSatLos_faulty_los <- whileM (not <$> isEmpty) get pure MsgSsrFlagIonoTileSatLos {..} put MsgSsrFlagIonoTileSatLos {..} = do - put _msgSsrFlagIonoTileSatLos_obs_time - putWord8 _msgSsrFlagIonoTileSatLos_num_msgs - putWord8 _msgSsrFlagIonoTileSatLos_seq_num - putWord8 _msgSsrFlagIonoTileSatLos_ssr_sol_id - putWord16le _msgSsrFlagIonoTileSatLos_tile_set_id - putWord16le _msgSsrFlagIonoTileSatLos_tile_id - putWord8 _msgSsrFlagIonoTileSatLos_chain_id + put _msgSsrFlagIonoTileSatLos_header putWord8 _msgSsrFlagIonoTileSatLos_n_faulty_los mapM_ put _msgSsrFlagIonoTileSatLos_faulty_los @@ -316,20 +284,8 @@ msgSsrFlagIonoGridPointSatLos :: Word16 msgSsrFlagIonoGridPointSatLos = 0x0BD1 data MsgSsrFlagIonoGridPointSatLos = MsgSsrFlagIonoGridPointSatLos - { _msgSsrFlagIonoGridPointSatLos_obs_time :: !GpsTimeSec - -- ^ GNSS reference time of the observation used to generate the flag. - , _msgSsrFlagIonoGridPointSatLos_num_msgs :: !Word8 - -- ^ Number of messages in the dataset - , _msgSsrFlagIonoGridPointSatLos_seq_num :: !Word8 - -- ^ Position of this message in the dataset - , _msgSsrFlagIonoGridPointSatLos_ssr_sol_id :: !Word8 - -- ^ SSR Solution ID. - , _msgSsrFlagIonoGridPointSatLos_tile_set_id :: !Word16 - -- ^ Unique identifier of the set this tile belongs to. - , _msgSsrFlagIonoGridPointSatLos_tile_id :: !Word16 - -- ^ Unique identifier of this tile in the tile set. - , _msgSsrFlagIonoGridPointSatLos_chain_id :: !Word8 - -- ^ Chain and type of flag. + { _msgSsrFlagIonoGridPointSatLos_header :: !IntegritySSRHeader + -- ^ Header of an integrity message. , _msgSsrFlagIonoGridPointSatLos_grid_point_id :: !Word16 -- ^ Index of the grid point. , _msgSsrFlagIonoGridPointSatLos_n_faulty_los :: !Word8 @@ -340,26 +296,14 @@ data MsgSsrFlagIonoGridPointSatLos = MsgSsrFlagIonoGridPointSatLos instance Binary MsgSsrFlagIonoGridPointSatLos where get = do - _msgSsrFlagIonoGridPointSatLos_obs_time <- get - _msgSsrFlagIonoGridPointSatLos_num_msgs <- getWord8 - _msgSsrFlagIonoGridPointSatLos_seq_num <- getWord8 - _msgSsrFlagIonoGridPointSatLos_ssr_sol_id <- getWord8 - _msgSsrFlagIonoGridPointSatLos_tile_set_id <- getWord16le - _msgSsrFlagIonoGridPointSatLos_tile_id <- getWord16le - _msgSsrFlagIonoGridPointSatLos_chain_id <- getWord8 + _msgSsrFlagIonoGridPointSatLos_header <- get _msgSsrFlagIonoGridPointSatLos_grid_point_id <- getWord16le _msgSsrFlagIonoGridPointSatLos_n_faulty_los <- getWord8 _msgSsrFlagIonoGridPointSatLos_faulty_los <- whileM (not <$> isEmpty) get pure MsgSsrFlagIonoGridPointSatLos {..} put MsgSsrFlagIonoGridPointSatLos {..} = do - put _msgSsrFlagIonoGridPointSatLos_obs_time - putWord8 _msgSsrFlagIonoGridPointSatLos_num_msgs - putWord8 _msgSsrFlagIonoGridPointSatLos_seq_num - putWord8 _msgSsrFlagIonoGridPointSatLos_ssr_sol_id - putWord16le _msgSsrFlagIonoGridPointSatLos_tile_set_id - putWord16le _msgSsrFlagIonoGridPointSatLos_tile_id - putWord8 _msgSsrFlagIonoGridPointSatLos_chain_id + put _msgSsrFlagIonoGridPointSatLos_header putWord16le _msgSsrFlagIonoGridPointSatLos_grid_point_id putWord8 _msgSsrFlagIonoGridPointSatLos_n_faulty_los mapM_ put _msgSsrFlagIonoGridPointSatLos_faulty_los diff --git a/java/src/com/swiftnav/sbp/integrity/IntegritySSRHeader.java b/java/src/com/swiftnav/sbp/integrity/IntegritySSRHeader.java new file mode 100644 index 0000000000..3302594081 --- /dev/null +++ b/java/src/com/swiftnav/sbp/integrity/IntegritySSRHeader.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.integrity; + +// This file was auto-generated from yaml/swiftnav/sbp/integrity.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 IntegritySSRHeader extends SBPStruct { + + /** GNSS reference time of the observation used to generate the flag. */ + public GPSTimeSec obs_time; + + /** Number of messages in the dataset */ + public int num_msgs; + + /** Position of this message in the dataset */ + public int seq_num; + + /** SSR Solution ID. */ + public int ssr_sol_id; + + /** Unique identifier of the set this tile belongs to. */ + public int tile_set_id; + + /** Unique identifier of this tile in the tile set. */ + public int tile_id; + + /** Chain and type of flag. */ + public int chain_id; + + public IntegritySSRHeader() {} + + @Override + public IntegritySSRHeader parse(SBPMessage.Parser parser) throws SBPBinaryException { + /* Parse fields from binary */ + obs_time = new GPSTimeSec().parse(parser); + num_msgs = parser.getU8(); + seq_num = parser.getU8(); + ssr_sol_id = parser.getU8(); + tile_set_id = parser.getU16(); + tile_id = parser.getU16(); + chain_id = parser.getU8(); + return this; + } + + @Override + public void build(SBPMessage.Builder builder) { + /* Build fields into binary */ + obs_time.build(builder); + builder.putU8(num_msgs); + builder.putU8(seq_num); + builder.putU8(ssr_sol_id); + builder.putU16(tile_set_id); + builder.putU16(tile_id); + builder.putU8(chain_id); + } + + @Override + public JSONObject toJSON() { + JSONObject obj = new JSONObject(); + obj.put("obs_time", obs_time.toJSON()); + obj.put("num_msgs", num_msgs); + obj.put("seq_num", seq_num); + obj.put("ssr_sol_id", ssr_sol_id); + obj.put("tile_set_id", tile_set_id); + obj.put("tile_id", tile_id); + obj.put("chain_id", chain_id); + return obj; + } +} diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java index 39119ac2c9..fbb1612242 100644 --- a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPointSatLos.java @@ -23,26 +23,8 @@ public class MsgSsrFlagIonoGridPointSatLos extends SBPMessage { public static final int TYPE = 0x0BD1; - /** GNSS reference time of the observation used to generate the flag. */ - public GPSTimeSec obs_time; - - /** Number of messages in the dataset */ - public int num_msgs; - - /** Position of this message in the dataset */ - public int seq_num; - - /** SSR Solution ID. */ - public int ssr_sol_id; - - /** Unique identifier of the set this tile belongs to. */ - public int tile_set_id; - - /** Unique identifier of this tile in the tile set. */ - public int tile_id; - - /** Chain and type of flag. */ - public int chain_id; + /** Header of an integrity message. */ + public IntegritySSRHeader header; /** Index of the grid point. */ public int grid_point_id; @@ -69,13 +51,7 @@ public MsgSsrFlagIonoGridPointSatLos(SBPMessage msg) throws SBPBinaryException { @Override protected void parse(Parser parser) throws SBPBinaryException { /* Parse fields from binary */ - obs_time = new GPSTimeSec().parse(parser); - num_msgs = parser.getU8(); - seq_num = parser.getU8(); - ssr_sol_id = parser.getU8(); - tile_set_id = parser.getU16(); - tile_id = parser.getU16(); - chain_id = parser.getU8(); + header = new IntegritySSRHeader().parse(parser); grid_point_id = parser.getU16(); n_faulty_los = parser.getU8(); faulty_los = parser.getArray(SvId.class); @@ -83,13 +59,7 @@ protected void parse(Parser parser) throws SBPBinaryException { @Override protected void build(Builder builder) { - obs_time.build(builder); - builder.putU8(num_msgs); - builder.putU8(seq_num); - builder.putU8(ssr_sol_id); - builder.putU16(tile_set_id); - builder.putU16(tile_id); - builder.putU8(chain_id); + header.build(builder); builder.putU16(grid_point_id); builder.putU8(n_faulty_los); builder.putArray(faulty_los); @@ -98,13 +68,7 @@ protected void build(Builder builder) { @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("obs_time", obs_time.toJSON()); - obj.put("num_msgs", num_msgs); - obj.put("seq_num", seq_num); - obj.put("ssr_sol_id", ssr_sol_id); - obj.put("tile_set_id", tile_set_id); - obj.put("tile_id", tile_id); - obj.put("chain_id", chain_id); + obj.put("header", header.toJSON()); obj.put("grid_point_id", grid_point_id); obj.put("n_faulty_los", n_faulty_los); obj.put("faulty_los", SBPStruct.toJSONArray(faulty_los)); diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java index f34bdec992..515cd5a023 100644 --- a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoGridPoints.java @@ -23,26 +23,8 @@ public class MsgSsrFlagIonoGridPoints extends SBPMessage { public static final int TYPE = 0x0BC7; - /** GNSS reference time of the observation used to generate the flag. */ - public GPSTimeSec obs_time; - - /** Number of messages in the dataset */ - public int num_msgs; - - /** Position of this message in the dataset */ - public int seq_num; - - /** SSR Solution ID. */ - public int ssr_sol_id; - - /** Unique identifier of the set this tile belongs to. */ - public int tile_set_id; - - /** Unique identifier of this tile in the tile set. */ - public int tile_id; - - /** Chain and type of flag. */ - public int chain_id; + /** Header of an integrity message. */ + public IntegritySSRHeader header; /** Number of faulty grid points. */ public int n_faulty_points; @@ -66,26 +48,14 @@ public MsgSsrFlagIonoGridPoints(SBPMessage msg) throws SBPBinaryException { @Override protected void parse(Parser parser) throws SBPBinaryException { /* Parse fields from binary */ - obs_time = new GPSTimeSec().parse(parser); - num_msgs = parser.getU8(); - seq_num = parser.getU8(); - ssr_sol_id = parser.getU8(); - tile_set_id = parser.getU16(); - tile_id = parser.getU16(); - chain_id = parser.getU8(); + header = new IntegritySSRHeader().parse(parser); n_faulty_points = parser.getU8(); faulty_points = parser.getArrayofU16(); } @Override protected void build(Builder builder) { - obs_time.build(builder); - builder.putU8(num_msgs); - builder.putU8(seq_num); - builder.putU8(ssr_sol_id); - builder.putU16(tile_set_id); - builder.putU16(tile_id); - builder.putU8(chain_id); + header.build(builder); builder.putU8(n_faulty_points); builder.putArrayofU16(faulty_points); } @@ -93,13 +63,7 @@ protected void build(Builder builder) { @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("obs_time", obs_time.toJSON()); - obj.put("num_msgs", num_msgs); - obj.put("seq_num", seq_num); - obj.put("ssr_sol_id", ssr_sol_id); - obj.put("tile_set_id", tile_set_id); - obj.put("tile_id", tile_id); - obj.put("chain_id", chain_id); + obj.put("header", header.toJSON()); obj.put("n_faulty_points", n_faulty_points); obj.put("faulty_points", new JSONArray(faulty_points)); return obj; diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java index 188065d1e1..6c2cb8d6cb 100644 --- a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagIonoTileSatLos.java @@ -23,26 +23,8 @@ public class MsgSsrFlagIonoTileSatLos extends SBPMessage { public static final int TYPE = 0x0BCD; - /** GNSS reference time of the observation used to generate the flag. */ - public GPSTimeSec obs_time; - - /** Number of messages in the dataset */ - public int num_msgs; - - /** Position of this message in the dataset */ - public int seq_num; - - /** SSR Solution ID. */ - public int ssr_sol_id; - - /** Unique identifier of the set this tile belongs to. */ - public int tile_set_id; - - /** Unique identifier of this tile in the tile set. */ - public int tile_id; - - /** Chain and type of flag. */ - public int chain_id; + /** Header of an integrity message. */ + public IntegritySSRHeader header; /** Number of faulty LOS. */ public int n_faulty_los; @@ -66,26 +48,14 @@ public MsgSsrFlagIonoTileSatLos(SBPMessage msg) throws SBPBinaryException { @Override protected void parse(Parser parser) throws SBPBinaryException { /* Parse fields from binary */ - obs_time = new GPSTimeSec().parse(parser); - num_msgs = parser.getU8(); - seq_num = parser.getU8(); - ssr_sol_id = parser.getU8(); - tile_set_id = parser.getU16(); - tile_id = parser.getU16(); - chain_id = parser.getU8(); + header = new IntegritySSRHeader().parse(parser); n_faulty_los = parser.getU8(); faulty_los = parser.getArray(SvId.class); } @Override protected void build(Builder builder) { - obs_time.build(builder); - builder.putU8(num_msgs); - builder.putU8(seq_num); - builder.putU8(ssr_sol_id); - builder.putU16(tile_set_id); - builder.putU16(tile_id); - builder.putU8(chain_id); + header.build(builder); builder.putU8(n_faulty_los); builder.putArray(faulty_los); } @@ -93,13 +63,7 @@ protected void build(Builder builder) { @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("obs_time", obs_time.toJSON()); - obj.put("num_msgs", num_msgs); - obj.put("seq_num", seq_num); - obj.put("ssr_sol_id", ssr_sol_id); - obj.put("tile_set_id", tile_set_id); - obj.put("tile_id", tile_id); - obj.put("chain_id", chain_id); + obj.put("header", header.toJSON()); obj.put("n_faulty_los", n_faulty_los); obj.put("faulty_los", SBPStruct.toJSONArray(faulty_los)); return obj; diff --git a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java index a322ab5bde..8fa742d9ad 100644 --- a/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java +++ b/java/src/com/swiftnav/sbp/integrity/MsgSsrFlagTropoGridPoints.java @@ -23,26 +23,8 @@ public class MsgSsrFlagTropoGridPoints extends SBPMessage { public static final int TYPE = 0x0BC3; - /** GNSS reference time of the observation used to generate the flag. */ - public GPSTimeSec obs_time; - - /** Number of messages in the dataset */ - public int num_msgs; - - /** Position of this message in the dataset */ - public int seq_num; - - /** SSR Solution ID. */ - public int ssr_sol_id; - - /** Unique identifier of the set this tile belongs to. */ - public int tile_set_id; - - /** Unique identifier of this tile in the tile set. */ - public int tile_id; - - /** Chain and type of flag. */ - public int chain_id; + /** Header of an integrity message. */ + public IntegritySSRHeader header; /** Number of faulty grid points. */ public int n_faulty_points; @@ -66,26 +48,14 @@ public MsgSsrFlagTropoGridPoints(SBPMessage msg) throws SBPBinaryException { @Override protected void parse(Parser parser) throws SBPBinaryException { /* Parse fields from binary */ - obs_time = new GPSTimeSec().parse(parser); - num_msgs = parser.getU8(); - seq_num = parser.getU8(); - ssr_sol_id = parser.getU8(); - tile_set_id = parser.getU16(); - tile_id = parser.getU16(); - chain_id = parser.getU8(); + header = new IntegritySSRHeader().parse(parser); n_faulty_points = parser.getU8(); faulty_points = parser.getArrayofU16(); } @Override protected void build(Builder builder) { - obs_time.build(builder); - builder.putU8(num_msgs); - builder.putU8(seq_num); - builder.putU8(ssr_sol_id); - builder.putU16(tile_set_id); - builder.putU16(tile_id); - builder.putU8(chain_id); + header.build(builder); builder.putU8(n_faulty_points); builder.putArrayofU16(faulty_points); } @@ -93,13 +63,7 @@ protected void build(Builder builder) { @Override public JSONObject toJSON() { JSONObject obj = super.toJSON(); - obj.put("obs_time", obs_time.toJSON()); - obj.put("num_msgs", num_msgs); - obj.put("seq_num", seq_num); - obj.put("ssr_sol_id", ssr_sol_id); - obj.put("tile_set_id", tile_set_id); - obj.put("tile_id", tile_id); - obj.put("chain_id", chain_id); + obj.put("header", header.toJSON()); obj.put("n_faulty_points", n_faulty_points); obj.put("faulty_points", new JSONArray(faulty_points)); return obj; diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java index 989168eb33..264a080fc7 100644 --- a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointSatLosTest.java @@ -60,15 +60,6 @@ public void test1() throws Throwable { JSONObject json = msg.toJSON(); Number value; Number expected; - value = msg.chain_id; - if (value instanceof BigInteger) { - org.junit.Assert.assertTrue( - "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); - } else { - value = value.longValue(); - expected = 6L; - org.junit.Assert.assertEquals(value, expected); - } value = msg.faulty_los[0].constellation; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( @@ -119,82 +110,95 @@ public void test1() throws Throwable { expected = 30L; org.junit.Assert.assertEquals(value, expected); } - value = msg.n_faulty_los; + value = msg.header.chain_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.n_faulty_los + "' != '" + 2 + "'", - value.equals(BigInteger.valueOf(2L))); + "'" + msg.header.chain_id + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); } else { value = value.longValue(); - expected = 2L; + expected = 6L; org.junit.Assert.assertEquals(value, expected); } - value = msg.num_msgs; + value = msg.header.num_msgs; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + "'" + msg.header.num_msgs + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); } else { value = value.longValue(); expected = 1L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.tow; + value = msg.header.obs_time.tow; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.tow + "' != '" + 180 + "'", + "'" + msg.header.obs_time.tow + "' != '" + 180 + "'", value.equals(BigInteger.valueOf(180L))); } else { value = value.longValue(); expected = 180L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.wn; + value = msg.header.obs_time.wn; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.wn + "' != '" + 3 + "'", + "'" + msg.header.obs_time.wn + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.seq_num; + value = msg.header.seq_num; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + "'" + msg.header.seq_num + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); } else { value = value.longValue(); expected = 2L; org.junit.Assert.assertEquals(value, expected); } - value = msg.ssr_sol_id; + value = msg.header.ssr_sol_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + "'" + msg.header.ssr_sol_id + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_id; + value = msg.header.tile_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + "'" + msg.header.tile_id + "' != '" + 5 + "'", + value.equals(BigInteger.valueOf(5L))); } else { value = value.longValue(); expected = 5L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_set_id; + value = msg.header.tile_set_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_set_id + "' != '" + 4 + "'", + "'" + msg.header.tile_set_id + "' != '" + 4 + "'", value.equals(BigInteger.valueOf(4L))); } else { value = value.longValue(); expected = 4L; org.junit.Assert.assertEquals(value, expected); } + value = msg.n_faulty_los; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_los + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } } } diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java index 4fe7ff20b8..de9c71b3d9 100644 --- a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoGridPointsTest.java @@ -60,15 +60,6 @@ public void test1() throws Throwable { JSONObject json = msg.toJSON(); Number value; Number expected; - value = msg.chain_id; - if (value instanceof BigInteger) { - org.junit.Assert.assertTrue( - "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); - } else { - value = value.longValue(); - expected = 6L; - org.junit.Assert.assertEquals(value, expected); - } value = msg.faulty_points[0]; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( @@ -99,82 +90,95 @@ public void test1() throws Throwable { expected = 12L; org.junit.Assert.assertEquals(value, expected); } - value = msg.n_faulty_points; + value = msg.header.chain_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.n_faulty_points + "' != '" + 3 + "'", - value.equals(BigInteger.valueOf(3L))); + "'" + msg.header.chain_id + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); } else { value = value.longValue(); - expected = 3L; + expected = 6L; org.junit.Assert.assertEquals(value, expected); } - value = msg.num_msgs; + value = msg.header.num_msgs; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + "'" + msg.header.num_msgs + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); } else { value = value.longValue(); expected = 1L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.tow; + value = msg.header.obs_time.tow; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.tow + "' != '" + 180 + "'", + "'" + msg.header.obs_time.tow + "' != '" + 180 + "'", value.equals(BigInteger.valueOf(180L))); } else { value = value.longValue(); expected = 180L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.wn; + value = msg.header.obs_time.wn; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.wn + "' != '" + 3 + "'", + "'" + msg.header.obs_time.wn + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.seq_num; + value = msg.header.seq_num; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + "'" + msg.header.seq_num + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); } else { value = value.longValue(); expected = 2L; org.junit.Assert.assertEquals(value, expected); } - value = msg.ssr_sol_id; + value = msg.header.ssr_sol_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + "'" + msg.header.ssr_sol_id + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_id; + value = msg.header.tile_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + "'" + msg.header.tile_id + "' != '" + 5 + "'", + value.equals(BigInteger.valueOf(5L))); } else { value = value.longValue(); expected = 5L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_set_id; + value = msg.header.tile_set_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_set_id + "' != '" + 4 + "'", + "'" + msg.header.tile_set_id + "' != '" + 4 + "'", value.equals(BigInteger.valueOf(4L))); } else { value = value.longValue(); expected = 4L; org.junit.Assert.assertEquals(value, expected); } + value = msg.n_faulty_points; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_points + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } } } diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java index 5f54a74ca9..adabf5d220 100644 --- a/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagIonoTileSatLosTest.java @@ -58,15 +58,6 @@ public void test1() throws Throwable { JSONObject json = msg.toJSON(); Number value; Number expected; - value = msg.chain_id; - if (value instanceof BigInteger) { - org.junit.Assert.assertTrue( - "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); - } else { - value = value.longValue(); - expected = 6L; - org.junit.Assert.assertEquals(value, expected); - } value = msg.faulty_los[0].constellation; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( @@ -107,82 +98,95 @@ public void test1() throws Throwable { expected = 15L; org.junit.Assert.assertEquals(value, expected); } - value = msg.n_faulty_los; + value = msg.header.chain_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.n_faulty_los + "' != '" + 2 + "'", - value.equals(BigInteger.valueOf(2L))); + "'" + msg.header.chain_id + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); } else { value = value.longValue(); - expected = 2L; + expected = 6L; org.junit.Assert.assertEquals(value, expected); } - value = msg.num_msgs; + value = msg.header.num_msgs; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + "'" + msg.header.num_msgs + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); } else { value = value.longValue(); expected = 1L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.tow; + value = msg.header.obs_time.tow; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.tow + "' != '" + 180 + "'", + "'" + msg.header.obs_time.tow + "' != '" + 180 + "'", value.equals(BigInteger.valueOf(180L))); } else { value = value.longValue(); expected = 180L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.wn; + value = msg.header.obs_time.wn; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.wn + "' != '" + 3 + "'", + "'" + msg.header.obs_time.wn + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.seq_num; + value = msg.header.seq_num; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + "'" + msg.header.seq_num + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); } else { value = value.longValue(); expected = 2L; org.junit.Assert.assertEquals(value, expected); } - value = msg.ssr_sol_id; + value = msg.header.ssr_sol_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + "'" + msg.header.ssr_sol_id + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_id; + value = msg.header.tile_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + "'" + msg.header.tile_id + "' != '" + 5 + "'", + value.equals(BigInteger.valueOf(5L))); } else { value = value.longValue(); expected = 5L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_set_id; + value = msg.header.tile_set_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_set_id + "' != '" + 4 + "'", + "'" + msg.header.tile_set_id + "' != '" + 4 + "'", value.equals(BigInteger.valueOf(4L))); } else { value = value.longValue(); expected = 4L; org.junit.Assert.assertEquals(value, expected); } + value = msg.n_faulty_los; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_los + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); + } else { + value = value.longValue(); + expected = 2L; + org.junit.Assert.assertEquals(value, expected); + } } } diff --git a/java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java b/java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java index 2b597c3a6d..7c3e293d27 100644 --- a/java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java +++ b/java/test/auto_check_sbp_integrity_MsgSsrFlagTropoGridPointsTest.java @@ -60,15 +60,6 @@ public void test1() throws Throwable { JSONObject json = msg.toJSON(); Number value; Number expected; - value = msg.chain_id; - if (value instanceof BigInteger) { - org.junit.Assert.assertTrue( - "'" + msg.chain_id + "' != '" + 6 + "'", value.equals(BigInteger.valueOf(6L))); - } else { - value = value.longValue(); - expected = 6L; - org.junit.Assert.assertEquals(value, expected); - } value = msg.faulty_points[0]; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( @@ -99,82 +90,95 @@ public void test1() throws Throwable { expected = 12L; org.junit.Assert.assertEquals(value, expected); } - value = msg.n_faulty_points; + value = msg.header.chain_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.n_faulty_points + "' != '" + 3 + "'", - value.equals(BigInteger.valueOf(3L))); + "'" + msg.header.chain_id + "' != '" + 6 + "'", + value.equals(BigInteger.valueOf(6L))); } else { value = value.longValue(); - expected = 3L; + expected = 6L; org.junit.Assert.assertEquals(value, expected); } - value = msg.num_msgs; + value = msg.header.num_msgs; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.num_msgs + "' != '" + 1 + "'", value.equals(BigInteger.valueOf(1L))); + "'" + msg.header.num_msgs + "' != '" + 1 + "'", + value.equals(BigInteger.valueOf(1L))); } else { value = value.longValue(); expected = 1L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.tow; + value = msg.header.obs_time.tow; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.tow + "' != '" + 180 + "'", + "'" + msg.header.obs_time.tow + "' != '" + 180 + "'", value.equals(BigInteger.valueOf(180L))); } else { value = value.longValue(); expected = 180L; org.junit.Assert.assertEquals(value, expected); } - value = msg.obs_time.wn; + value = msg.header.obs_time.wn; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.obs_time.wn + "' != '" + 3 + "'", + "'" + msg.header.obs_time.wn + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.seq_num; + value = msg.header.seq_num; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.seq_num + "' != '" + 2 + "'", value.equals(BigInteger.valueOf(2L))); + "'" + msg.header.seq_num + "' != '" + 2 + "'", + value.equals(BigInteger.valueOf(2L))); } else { value = value.longValue(); expected = 2L; org.junit.Assert.assertEquals(value, expected); } - value = msg.ssr_sol_id; + value = msg.header.ssr_sol_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.ssr_sol_id + "' != '" + 3 + "'", + "'" + msg.header.ssr_sol_id + "' != '" + 3 + "'", value.equals(BigInteger.valueOf(3L))); } else { value = value.longValue(); expected = 3L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_id; + value = msg.header.tile_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_id + "' != '" + 5 + "'", value.equals(BigInteger.valueOf(5L))); + "'" + msg.header.tile_id + "' != '" + 5 + "'", + value.equals(BigInteger.valueOf(5L))); } else { value = value.longValue(); expected = 5L; org.junit.Assert.assertEquals(value, expected); } - value = msg.tile_set_id; + value = msg.header.tile_set_id; if (value instanceof BigInteger) { org.junit.Assert.assertTrue( - "'" + msg.tile_set_id + "' != '" + 4 + "'", + "'" + msg.header.tile_set_id + "' != '" + 4 + "'", value.equals(BigInteger.valueOf(4L))); } else { value = value.longValue(); expected = 4L; org.junit.Assert.assertEquals(value, expected); } + value = msg.n_faulty_points; + if (value instanceof BigInteger) { + org.junit.Assert.assertTrue( + "'" + msg.n_faulty_points + "' != '" + 3 + "'", + value.equals(BigInteger.valueOf(3L))); + } else { + value = value.longValue(); + expected = 3L; + org.junit.Assert.assertEquals(value, expected); + } } } diff --git a/javascript/sbp.bundle.js b/javascript/sbp.bundle.js index 04e7392e58..6551517ae2 100644 --- a/javascript/sbp.bundle.js +++ b/javascript/sbp.bundle.js @@ -1,15 +1,15 @@ -!function(e){var t={};function p(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,p),o.l=!0,o.exports}p.m=e,p.c=t,p.d=function(e,t,r){p.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},p.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},p.t=function(e,t){if(1&t&&(e=p(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(p.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)p.d(r,o,function(t){return e[t]}.bind(null,o));return r},p.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return p.d(t,"a",t),t},p.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},p.p="",p(p.s=24)}([function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="GnssSignal",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.prototype)).messageType="GnssSignal",i.prototype.constructor=i,i.prototype.parser=(new o).endianess("little").uint8("sat").uint8("code"),i.prototype.fieldSpec=[],i.prototype.fieldSpec.push(["sat","writeUInt8",1]),i.prototype.fieldSpec.push(["code","writeUInt8",1]);var s=function(e,t){return r.call(this,e),this.messageType="SvId",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.prototype)).messageType="SvId",s.prototype.constructor=s,s.prototype.parser=(new o).endianess("little").uint8("satId").uint8("constellation"),s.prototype.fieldSpec=[],s.prototype.fieldSpec.push(["satId","writeUInt8",1]),s.prototype.fieldSpec.push(["constellation","writeUInt8",1]);var n=function(e,t){return r.call(this,e),this.messageType="GnssSignalDep",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="GnssSignalDep",n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").uint16("sat").uint8("code").uint8("reserved"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["sat","writeUInt16LE",2]),n.prototype.fieldSpec.push(["code","writeUInt8",1]),n.prototype.fieldSpec.push(["reserved","writeUInt8",1]);var a=function(e,t){return r.call(this,e),this.messageType="GPSTimeDep",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="GPSTimeDep",a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").uint32("tow").uint16("wn"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),a.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var l=function(e,t){return r.call(this,e),this.messageType="GPSTimeSec",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="GPSTimeSec",l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").uint32("tow").uint16("wn"),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),l.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var u=function(e,t){return r.call(this,e),this.messageType="GPSTime",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="GPSTime",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").int32("ns_residual").uint16("wn"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),u.prototype.fieldSpec.push(["ns_residual","writeInt32LE",4]),u.prototype.fieldSpec.push(["wn","writeUInt16LE",2]);var c=function(e,t){return r.call(this,e),this.messageType="CarrierPhase",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="CarrierPhase",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").int32("i").uint8("f"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["i","writeInt32LE",4]),c.prototype.fieldSpec.push(["f","writeUInt8",1]),e.exports={GnssSignal:i,SvId:s,GnssSignalDep:n,GPSTimeDep:a,GPSTimeSec:l,GPSTime:u,CarrierPhase:c}},function(e,t,p){t.UINT32=p(44),t.UINT64=p(45)},function(e,t,p){(function(t){var r=p(43),o=(p(3),p(1).UINT64),i=function(e,p,r,o){var i=new t(e);return i[p](r,o||0),i};function s(e){return this.messageType="raw",this.sbp=e||{},this.fields={},this}o.prototype.toJSON=function(){return this.toString()},s.prototype.fieldSpec=[],s.prototype.payloadToBuffer=function(e,p){var i=[];for(var s in e=e||this.fieldSpec,p=p||this.fields,e){var n=e[s],a=n[0],l=n[1],u=function(e){return"function"==typeof e?e.apply(this):e}.bind(this);if("string"==typeof l&&0===l.indexOf("write")){var c=u(n[2]);if("writeUInt64LE"===l){r(p[a]instanceof o,"uint64 type must be represented by cuint.UINT64");var y=p[a].clone().shiftRight(32).and(new o(4294967295,0)).toNumber(),h=p[a].clone().and(new o(4294967295,0)).toNumber();let e=new t(8);e.writeUInt32LE(h),e.writeUInt32LE(y,4),i.push(e)}else{let e=new t(c);e[l](p[a],0),i.push(e)}}else if("string"===l){let e=new t(p[a].length);e.write(p[a],0,"utf8"),i.push(e)}else if("array"===l){var f=n[2];for(var d in p[a]){var _=p[a][d];if(Array.isArray(f))i=i.concat(this.payloadToBuffer(f,_));else{let e=new t(u(n[3]));e[f](_,0),i.push(e)}}}else i=i.concat(this.payloadToBuffer(l,p[a]))}return t.concat(i)},s.prototype.getLengthBuffer=function(){return i(1,"writeUInt8",this.length||this.sbp.length,0)},s.prototype.getSenderBuffer=function(){return i(2,"writeUInt16LE",this.sender||this.sbp.sender,0)},s.prototype.getPreambleBuffer=function(){return i(1,"writeUInt8",this.preamble||this.sbp.preamble,0)},s.prototype.getMsgTypeBuffer=function(){return i(2,"writeUInt16LE",this.msg_type||this.sbp.msg_type,0)},s.prototype.toBuffer=function(){var e=this.payloadToBuffer(),p=i(2,"writeUInt16LE",this.crc||this.sbp.crc,0),r=[this.getPreambleBuffer(),this.getMsgTypeBuffer(),this.getSenderBuffer(),this.getLengthBuffer()];return t.concat(r.concat(e).concat(p))},s.prototype.toJSON=function(){var e={};return Object.keys(this.sbp).forEach(function(p){this.sbp[p]instanceof t?e[p]=this.sbp[p].toString("base64"):e[p]=this.sbp[p]}.bind(this)),Object.keys(this.fields).forEach(function(t){e[t]=this.fields[t]}.bind(this)),e},s.prototype.toBase64=function(){return this.toBuffer().toString("base64")},e.exports=s}).call(this,p(8).Buffer)},function(e,t,p){(function(t){for(var p=4294967296,r=[],o=0;o<256;o++)r[o]=(o>15?"":"0")+o.toString(16);var i=e.exports=function(e,p){e instanceof t?(this.buffer=e,this.offset=p||0):"[object Uint8Array]"==Object.prototype.toString.call(e)?(this.buffer=new t(e),this.offset=p||0):(this.buffer=this.buffer||new t(8),this.offset=0,this.setValue.apply(this,arguments))};i.MAX_INT=Math.pow(2,53),i.MIN_INT=-Math.pow(2,53),i.prototype={constructor:i,_2scomp:function(){for(var e=this.buffer,t=this.offset,p=1,r=t+7;r>=t;r--){var o=(255^e[r])+p;e[r]=255&o,p=o>>8}},setValue:function(e,t){var r=!1;if(1==arguments.length)if("number"==typeof e){if(r=e<0,t=(e=Math.abs(e))%p,(e/=p)>p)throw new RangeError(e+" is outside Int64 range");e|=0}else{if("string"!=typeof e)throw new Error(e+" must be a Number or String");t=(e=(e+"").replace(/^0x/,"")).substr(-8),e=e.length>8?e.substr(0,e.length-8):"",e=parseInt(e,16),t=parseInt(t,16)}for(var o=this.buffer,i=this.offset,s=7;s>=0;s--)o[i+s]=255&t,t=4==s?e:t>>>8;r&&this._2scomp()},toNumber:function(e){for(var t=this.buffer,p=this.offset,r=128&t[p],o=0,s=1,n=7,a=1;n>=0;n--,a*=256){var l=t[p+n];r&&(s=(l=(255^l)+s)>>8,l&=255),o+=l*a}return!e&&o>=i.MAX_INT?r?-1/0:1/0:r?-o:o},valueOf:function(){return this.toNumber(!1)},toString:function(e){return this.valueOf().toString(e||10)},toOctetString:function(e){for(var t=new Array(8),p=this.buffer,o=this.offset,i=0;i<8;i++)t[i]=r[p[o+i]];return t.join(e||"")},toBuffer:function(e){if(e&&0===this.offset)return this.buffer;var p=new t(8);return this.buffer.copy(p,0,this.offset,this.offset+8),p},copy:function(e,t){this.buffer.copy(e,t||0,this.offset,this.offset+8)},compare:function(e){if((128&this.buffer[this.offset])!=(128&e.buffer[e.offset]))return e.buffer[e.offset]-this.buffer[this.offset];for(var t=0;t<8;t++)if(this.buffer[this.offset+t]!==e.buffer[e.offset+t])return this.buffer[this.offset+t]-e.buffer[e.offset+t];return 0},equals:function(e){return 0===this.compare(e)},inspect:function(){return"[Int64 value:"+this+" octets:"+this.toOctetString(" ")+"]"}}}).call(this,p(8).Buffer)},function(e,t,p){(function(t){var r=p(17).Parser;r.prototype.uint64=function(e,t){return this.setNextParser("uint64",e,Object.assign({},t,{formatter:function(e){var t=p(1).UINT64,r=buffer.readUInt32LE(offset);offset+=4;var o=buffer.readUInt32LE(offset);return offset+=4,new t(r,o)}}))},r.prototype.compile=function(){var e=this.getCode();this.compiled=function(r,o,i){return"undefined"!=typeof window&&void 0===window.Buffer&&(window.Buffer=t),new Function("buffer","callback","constructorFn","require",e).call(this,r,o,i,(function(e){if("cuint"===e)return p(1);throw new Error("Unknown module required: "+e)}))}},e.exports=r}).call(this,p(8).Buffer)},function(e,t){var p;p=function(){return this}();try{p=p||new Function("return this")()}catch(e){"object"==typeof window&&(p=window)}e.exports=p},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var p=function(){};p.prototype=t.prototype,e.prototype=new p,e.prototype.constructor=e}},function(e,t,p){"use strict";var r=p(11),o=Object.keys||function(e){var t=[];for(var p in e)t.push(p);return t};e.exports=c;var i=p(10);i.inherits=p(6);var s=p(19),n=p(15);i.inherits(c,s);for(var a=o(n.prototype),l=0;l15?"":"0")+o.toString(16);var i=e.exports=function(e,p){e instanceof t?(this.buffer=e,this.offset=p||0):"[object Uint8Array]"==Object.prototype.toString.call(e)?(this.buffer=new t(e),this.offset=p||0):(this.buffer=this.buffer||new t(8),this.offset=0,this.setValue.apply(this,arguments))};i.MAX_INT=Math.pow(2,53),i.MIN_INT=-Math.pow(2,53),i.prototype={constructor:i,_2scomp:function(){for(var e=this.buffer,t=this.offset,p=1,r=t+7;r>=t;r--){var o=(255^e[r])+p;e[r]=255&o,p=o>>8}},setValue:function(e,t){var r=!1;if(1==arguments.length)if("number"==typeof e){if(r=e<0,t=(e=Math.abs(e))%p,(e/=p)>p)throw new RangeError(e+" is outside Int64 range");e|=0}else{if("string"!=typeof e)throw new Error(e+" must be a Number or String");t=(e=(e+"").replace(/^0x/,"")).substr(-8),e=e.length>8?e.substr(0,e.length-8):"",e=parseInt(e,16),t=parseInt(t,16)}for(var o=this.buffer,i=this.offset,s=7;s>=0;s--)o[i+s]=255&t,t=4==s?e:t>>>8;r&&this._2scomp()},toNumber:function(e){for(var t=this.buffer,p=this.offset,r=128&t[p],o=0,s=1,n=7,a=1;n>=0;n--,a*=256){var l=t[p+n];r&&(s=(l=(255^l)+s)>>8,l&=255),o+=l*a}return!e&&o>=i.MAX_INT?r?-1/0:1/0:r?-o:o},valueOf:function(){return this.toNumber(!1)},toString:function(e){return this.valueOf().toString(e||10)},toOctetString:function(e){for(var t=new Array(8),p=this.buffer,o=this.offset,i=0;i<8;i++)t[i]=r[p[o+i]];return t.join(e||"")},toBuffer:function(e){if(e&&0===this.offset)return this.buffer;var p=new t(8);return this.buffer.copy(p,0,this.offset,this.offset+8),p},copy:function(e,t){this.buffer.copy(e,t||0,this.offset,this.offset+8)},compare:function(e){if((128&this.buffer[this.offset])!=(128&e.buffer[e.offset]))return e.buffer[e.offset]-this.buffer[this.offset];for(var t=0;t<8;t++)if(this.buffer[this.offset+t]!==e.buffer[e.offset+t])return this.buffer[this.offset+t]-e.buffer[e.offset+t];return 0},equals:function(e){return 0===this.compare(e)},inspect:function(){return"[Int64 value:"+this+" octets:"+this.toOctetString(" ")+"]"}}}).call(this,p(8).Buffer)},function(e,t,p){(function(t){var r=p(17).Parser;r.prototype.uint64=function(e,t){return this.setNextParser("uint64",e,Object.assign({},t,{formatter:function(e){var t=p(1).UINT64,r=buffer.readUInt32LE(offset);offset+=4;var o=buffer.readUInt32LE(offset);return offset+=4,new t(r,o)}}))},r.prototype.compile=function(){var e=this.getCode();this.compiled=function(r,o,i){return"undefined"!=typeof window&&void 0===window.Buffer&&(window.Buffer=t),new Function("buffer","callback","constructorFn","require",e).call(this,r,o,i,(function(e){if("cuint"===e)return p(1);throw new Error("Unknown module required: "+e)}))}},e.exports=r}).call(this,p(8).Buffer)},function(e,t){var p;p=function(){return this}();try{p=p||new Function("return this")()}catch(e){"object"==typeof window&&(p=window)}e.exports=p},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var p=function(){};p.prototype=t.prototype,e.prototype=new p,e.prototype.constructor=e}},function(e,t,p){"use strict";var r=p(11),o=Object.keys||function(e){var t=[];for(var p in e)t.push(p);return t};e.exports=u;var i=p(10);i.inherits=p(6);var s=p(19),n=p(15);i.inherits(u,s);for(var a=o(n.prototype),l=0;l * @license MIT */ -var r=p(25),o=p(26),i=p(16);function s(){return a.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function n(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var p=e.length;if(0===p)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return p;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*p;case"hex":return p>>>1;case"base64":return B(e).length;default:if(r)return F(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,p){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===p||p>this.length)&&(p=this.length),p<=0)return"";if((p>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,p);case"utf8":case"utf-8":return T(this,t,p);case"ascii":return U(this,t,p);case"latin1":case"binary":return M(this,t,p);case"base64":return L(this,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,p);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function _(e,t,p){var r=e[t];e[t]=e[p],e[p]=r}function S(e,t,p,r,o){if(0===e.length)return-1;if("string"==typeof p?(r=p,p=0):p>2147483647?p=2147483647:p<-2147483648&&(p=-2147483648),p=+p,isNaN(p)&&(p=o?0:e.length-1),p<0&&(p=e.length+p),p>=e.length){if(o)return-1;p=e.length-1}else if(p<0){if(!o)return-1;p=0}if("string"==typeof t&&(t=a.from(t,r)),a.isBuffer(t))return 0===t.length?-1:g(e,t,p,r,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,p):Uint8Array.prototype.lastIndexOf.call(e,t,p):g(e,[t],p,r,o);throw new TypeError("val must be string, number or Buffer")}function g(e,t,p,r,o){var i,s=1,n=e.length,a=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,p/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var u=-1;for(i=p;in&&(p=n-a),i=p;i>=0;i--){for(var c=!0,y=0;yo&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=p%256,i.push(o),i.push(r);return i}(t,e.length-p),e,p,r)}function L(e,t,p){return 0===t&&p===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,p))}function T(e,t,p){p=Math.min(e.length,p);for(var r=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+c<=p)switch(c){case 1:l<128&&(u=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(u=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(u=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(u=a)}null===u?(u=65533,c=1):u>65535&&(u-=65536,r.push(u>>>10&1023|55296),u=56320|1023&u),r.push(u),o+=c}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var p="",r=0;for(;r0&&(e=this.toString("hex",0,p).match(/.{2}/g).join(" "),this.length>p&&(e+=" ... ")),""},a.prototype.compare=function(e,t,p,r,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===p&&(p=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||p>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=p)return 0;if(r>=o)return-1;if(t>=p)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(p>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(r,o),u=e.slice(t,p),c=0;co)&&(p=o),e.length>0&&(p<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return w(this,e,t,p);case"utf8":case"utf-8":return E(this,e,t,p);case"ascii":return m(this,e,t,p);case"latin1":case"binary":return b(this,e,t,p);case"base64":return I(this,e,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,e,t,p);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function U(e,t,p){var r="";p=Math.min(e.length,p);for(var o=t;or)&&(p=r);for(var o="",i=t;ip)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,p,r,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function C(e,t,p,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-p,2);o>>8*(r?o:1-o)}function R(e,t,p,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-p,4);o>>8*(r?o:3-o)&255}function P(e,t,p,r,o,i){if(p+r>e.length)throw new RangeError("Index out of range");if(p<0)throw new RangeError("Index out of range")}function N(e,t,p,r,i){return i||P(e,0,p,4),o.write(e,t,p,r,23,4),p+4}function j(e,t,p,r,i){return i||P(e,0,p,8),o.write(e,t,p,r,52,8),p+8}a.prototype.slice=function(e,t){var p,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},a.prototype.readUInt8=function(e,t){return t||G(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||G(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||G(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||G(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||G(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},a.prototype.readIntBE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||G(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||G(e,2,this.length);var p=this[e]|this[e+1]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt16BE=function(e,t){t||G(e,2,this.length);var p=this[e+1]|this[e]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt32LE=function(e,t){return t||G(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||G(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,p,r){(e=+e,t|=0,p|=0,r)||A(this,e,t,p,Math.pow(2,8*p)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+p},a.prototype.writeUInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+p},a.prototype.writeIntBE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=p-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+p},a.prototype.writeInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,p){return N(this,e,t,!0,p)},a.prototype.writeFloatBE=function(e,t,p){return N(this,e,t,!1,p)},a.prototype.writeDoubleLE=function(e,t,p){return j(this,e,t,!0,p)},a.prototype.writeDoubleBE=function(e,t,p){return j(this,e,t,!1,p)},a.prototype.copy=function(e,t,p,r){if(p||(p=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+p];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,p=void 0===p?this.length:p>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&p<57344){if(!o){if(p>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=p;continue}if(p<56320){(t-=3)>-1&&i.push(239,191,189),o=p;continue}p=65536+(o-55296<<10|p-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,p<128){if((t-=1)<0)break;i.push(p)}else if(p<2048){if((t-=2)<0)break;i.push(p>>6|192,63&p|128)}else if(p<65536){if((t-=3)<0)break;i.push(p>>12|224,p>>6&63|128,63&p|128)}else{if(!(p<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(p>>18|240,p>>12&63|128,p>>6&63|128,63&p|128)}}return i}function B(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,p,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+p]=e[o];return o}}).call(this,p(5))},function(e,t){var p,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(p===setTimeout)return setTimeout(e,0);if((p===i||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}!function(){try{p="function"==typeof setTimeout?setTimeout:i}catch(e){p=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var a,l=[],u=!1,c=-1;function y(){u&&a&&(u=!1,a.length?l=a.concat(l):c=-1,l.length&&h())}function h(){if(!u){var e=n(y);u=!0;for(var t=l.length;t;){for(a=l,l=[];++c1)for(var p=1;p0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},p.prototype.on=p.prototype.addListener,p.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var p=!1;function o(){this.removeListener(e,o),p||(p=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},p.prototype.removeListener=function(e,t){var p,i,s,n;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(p=this._events[e]).length,i=-1,p===t||r(p.listener)&&p.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(p)){for(n=s;n-- >0;)if(p[n]===t||p[n].listener&&p[n].listener===t){i=n;break}if(i<0)return this;1===p.length?(p.length=0,delete this._events[e]):p.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},p.prototype.removeAllListeners=function(e){var t,p;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(p=this._events[e]))this.removeListener(e,p);else if(p)for(;p.length;)this.removeListener(e,p[p.length-1]);return delete this._events[e],this},p.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},p.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},p.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,p){(t=e.exports=p(19)).Stream=t,t.Readable=t,t.Writable=p(15),t.Duplex=p(7),t.Transform=p(23),t.PassThrough=p(38)},function(e,t,p){"use strict";(function(t,r,o){var i=p(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,p){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(p),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;g.WritableState=S;var l=p(10);l.inherits=p(6);var u={deprecate:p(37)},c=p(20),y=p(12).Buffer,h=o.Uint8Array||function(){};var f,d=p(21);function _(){}function S(e,t){n=n||p(7),e=e||{};var r=t instanceof n;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,u=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(l||0===l)?l:u,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var c=!1===e.decodeStrings;this.decodeStrings=!c,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var p=e._writableState,r=p.sync,o=p.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(p),t)!function(e,t,p,r,o){--t.pendingcb,p?(i.nextTick(o,r),i.nextTick(v,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),v(e,t))}(e,p,r,t,o);else{var s=b(p);s||p.corked||p.bufferProcessing||!p.bufferedRequest||m(e,p),r?a(E,e,p,s,o):E(e,p,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||p(7),!(f.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),c.call(this)}function w(e,t,p,r,o,i,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,p?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,p,r){p||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),v(e,t)}function m(e,t){t.bufferProcessing=!0;var p=t.bufferedRequest;if(e._writev&&p&&p.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=p;for(var n=0,a=!0;p;)o[n]=p,p.isBuf||(a=!1),p=p.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;p;){var l=p.chunk,u=p.encoding,c=p.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,u,c),p=p.next,t.bufferedRequestCount--,t.writing)break}null===p&&(t.lastBufferedRequest=null)}t.bufferedRequest=p,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function I(e,t){e._final((function(p){t.pendingcb--,p&&e.emit("error",p),t.prefinished=!0,e.emit("prefinish"),v(e,t)}))}function v(e,t){var p=b(t);return p&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(I,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),p}l.inherits(g,c),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:u.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):f=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,p){var r,o=this._writableState,s=!1,n=!o.objectMode&&(r=e,y.isBuffer(r)||r instanceof h);return n&&!y.isBuffer(e)&&(e=function(e){return y.from(e)}(e)),"function"==typeof t&&(p=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof p&&(p=_),o.ended?function(e,t){var p=new Error("write after end");e.emit("error",p),i.nextTick(t,p)}(this,p):(n||function(e,t,p,r){var o=!0,s=!1;return null===p?s=new TypeError("May not write null values to stream"):"string"==typeof p||void 0===p||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(r,s),o=!1),o}(this,o,e,p))&&(o.pendingcb++,s=function(e,t,p,r,o,i){if(!p){var s=function(e,t,p){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=y.from(t,p));return t}(t,r,o);r!==s&&(p=!0,o="buffer",r=s)}var n=t.objectMode?1:r.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,p){p(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,p){var r=this._writableState;"function"==typeof e?(p=e,e=null,t=null):"function"==typeof t&&(p=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,p){t.ending=!0,v(e,t),p&&(t.finished?i.nextTick(p):e.once("finish",p));t.ended=!0,e.writable=!1}(this,r,p)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,p(9),p(35).setImmediate,p(5))},function(e,t){var p={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==p.call(e)}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var r=p(28),o={},i={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},s={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},n={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1},a=function(){function e(){this.varName="",this.type="",this.options={},this.next=null,this.head=null,this.compiled=null,this.endian="be",this.constructorFn=null,this.alias=null}return e.start=function(){return new e},e.prototype.primitiveGenerateN=function(e,t){var p=s[e],r=n[e];t.pushCode(t.generateVariable(this.varName)+" = dataView.get"+p+"(offset, "+r+");"),t.pushCode("offset += "+i[e]+";")},e.prototype.primitiveN=function(e,t,p){return this.setNextParser(e,t,p)},e.prototype.useThisEndian=function(e){return e+this.endian.toLowerCase()},e.prototype.uint8=function(e,t){return this.primitiveN("uint8",e,t)},e.prototype.uint16=function(e,t){return this.primitiveN(this.useThisEndian("uint16"),e,t)},e.prototype.uint16le=function(e,t){return this.primitiveN("uint16le",e,t)},e.prototype.uint16be=function(e,t){return this.primitiveN("uint16be",e,t)},e.prototype.uint32=function(e,t){return this.primitiveN(this.useThisEndian("uint32"),e,t)},e.prototype.uint32le=function(e,t){return this.primitiveN("uint32le",e,t)},e.prototype.uint32be=function(e,t){return this.primitiveN("uint32be",e,t)},e.prototype.int8=function(e,t){return this.primitiveN("int8",e,t)},e.prototype.int16=function(e,t){return this.primitiveN(this.useThisEndian("int16"),e,t)},e.prototype.int16le=function(e,t){return this.primitiveN("int16le",e,t)},e.prototype.int16be=function(e,t){return this.primitiveN("int16be",e,t)},e.prototype.int32=function(e,t){return this.primitiveN(this.useThisEndian("int32"),e,t)},e.prototype.int32le=function(e,t){return this.primitiveN("int32le",e,t)},e.prototype.int32be=function(e,t){return this.primitiveN("int32be",e,t)},e.prototype.bigIntVersionCheck=function(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported in this runtime")},e.prototype.int64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),e,t)},e.prototype.int64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64be",e,t)},e.prototype.int64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64le",e,t)},e.prototype.uint64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),e,t)},e.prototype.uint64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64be",e,t)},e.prototype.uint64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64le",e,t)},e.prototype.floatle=function(e,t){return this.primitiveN("floatle",e,t)},e.prototype.floatbe=function(e,t){return this.primitiveN("floatbe",e,t)},e.prototype.doublele=function(e,t){return this.primitiveN("doublele",e,t)},e.prototype.doublebe=function(e,t){return this.primitiveN("doublebe",e,t)},e.prototype.bitN=function(e,t,p){return p||(p={}),p.length=e,this.setNextParser("bit",t,p)},e.prototype.bit1=function(e,t){return this.bitN(1,e,t)},e.prototype.bit2=function(e,t){return this.bitN(2,e,t)},e.prototype.bit3=function(e,t){return this.bitN(3,e,t)},e.prototype.bit4=function(e,t){return this.bitN(4,e,t)},e.prototype.bit5=function(e,t){return this.bitN(5,e,t)},e.prototype.bit6=function(e,t){return this.bitN(6,e,t)},e.prototype.bit7=function(e,t){return this.bitN(7,e,t)},e.prototype.bit8=function(e,t){return this.bitN(8,e,t)},e.prototype.bit9=function(e,t){return this.bitN(9,e,t)},e.prototype.bit10=function(e,t){return this.bitN(10,e,t)},e.prototype.bit11=function(e,t){return this.bitN(11,e,t)},e.prototype.bit12=function(e,t){return this.bitN(12,e,t)},e.prototype.bit13=function(e,t){return this.bitN(13,e,t)},e.prototype.bit14=function(e,t){return this.bitN(14,e,t)},e.prototype.bit15=function(e,t){return this.bitN(15,e,t)},e.prototype.bit16=function(e,t){return this.bitN(16,e,t)},e.prototype.bit17=function(e,t){return this.bitN(17,e,t)},e.prototype.bit18=function(e,t){return this.bitN(18,e,t)},e.prototype.bit19=function(e,t){return this.bitN(19,e,t)},e.prototype.bit20=function(e,t){return this.bitN(20,e,t)},e.prototype.bit21=function(e,t){return this.bitN(21,e,t)},e.prototype.bit22=function(e,t){return this.bitN(22,e,t)},e.prototype.bit23=function(e,t){return this.bitN(23,e,t)},e.prototype.bit24=function(e,t){return this.bitN(24,e,t)},e.prototype.bit25=function(e,t){return this.bitN(25,e,t)},e.prototype.bit26=function(e,t){return this.bitN(26,e,t)},e.prototype.bit27=function(e,t){return this.bitN(27,e,t)},e.prototype.bit28=function(e,t){return this.bitN(28,e,t)},e.prototype.bit29=function(e,t){return this.bitN(29,e,t)},e.prototype.bit30=function(e,t){return this.bitN(30,e,t)},e.prototype.bit31=function(e,t){return this.bitN(31,e,t)},e.prototype.bit32=function(e,t){return this.bitN(32,e,t)},e.prototype.namely=function(e){return o[e]=this,this.alias=e,this},e.prototype.skip=function(e,t){return this.seek(e,t)},e.prototype.seek=function(e,t){if(t&&t.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:e})},e.prototype.string=function(e,t){if(!t.zeroTerminated&&!t.length&&!t.greedy)throw new Error("Neither length, zeroTerminated, nor greedy is defined for string.");if((t.zeroTerminated||t.length)&&t.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(t.stripNull&&!t.length&&!t.greedy)throw new Error("Length or greedy must be defined if stripNull is defined.");return t.encoding=t.encoding||"utf8",this.setNextParser("string",e,t)},e.prototype.buffer=function(e,t){if(!t.length&&!t.readUntil)throw new Error("Length nor readUntil is defined in buffer parser");return this.setNextParser("buffer",e,t)},e.prototype.array=function(e,t){if(!t.readUntil&&!t.length&&!t.lengthInBytes)throw new Error("Length option of array is not defined.");if(!t.type)throw new Error("Type option of array is not defined.");if("string"==typeof t.type&&!o[t.type]&&Object.keys(i).indexOf(t.type)<0)throw new Error('Specified primitive type "'+t.type+'" is not supported.');return this.setNextParser("array",e,t)},e.prototype.choice=function(e,t){if("object"!=typeof t&&"object"==typeof e&&(t=e,e=null),!t.tag)throw new Error("Tag option of array is not defined.");if(!t.choices)throw new Error("Choices option of array is not defined.");return Object.keys(t.choices).forEach((function(p){var r=parseInt(p,10),s=t.choices[r];if(isNaN(r))throw new Error("Key of choices must be a number.");if(!s)throw new Error("Choice Case "+p+" of "+e+" is not valid.");if("string"==typeof s&&!o[s]&&Object.keys(i).indexOf(s)<0)throw new Error('Specified primitive type "'+s+'" is not supported.')})),this.setNextParser("choice",e,t)},e.prototype.nest=function(t,p){if("object"!=typeof p&&"object"==typeof t&&(p=t,t=null),!p.type)throw new Error("Type option of nest is not defined.");if(!(p.type instanceof e||o[p.type]))throw new Error("Type option of nest must be a Parser object.");if(!(p.type instanceof e||t))throw new Error("options.type must be a object if variable name is omitted.");return this.setNextParser("nest",t,p)},e.prototype.pointer=function(t,p){if(!p.offset)throw new Error("Offset option of pointer is not defined.");if(!p.type)throw new Error("Type option of pointer is not defined.");if("string"==typeof p.type){if(Object.keys(i).indexOf(p.type)<0&&!o[p.type])throw new Error('Specified type "'+p.type+'" is not supported.')}else if(!(p.type instanceof e))throw new Error("Type option of pointer must be a string or a Parser object.");return this.setNextParser("pointer",t,p)},e.prototype.saveOffset=function(e,t){return this.setNextParser("saveOffset",e,t)},e.prototype.endianess=function(e){switch(e.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error("Invalid endianess: "+e)}return this},e.prototype.create=function(e){if(!(e instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=e,this},e.prototype.getContext=function(e){var t=new r.Context(e);return t.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(t),t.pushCode("return ___parser_"+this.alias+"(0).result;")):this.addRawCode(t),t},e.prototype.getCode=function(){return this.getContext().code},e.prototype.addRawCode=function(e){e.pushCode("var offset = 0;"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),this.resolveReferences(e),e.pushCode("return vars;")},e.prototype.addAliasedCode=function(e){return e.pushCode("function ___parser_"+this.alias+"(offset) {"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),e.markResolved(this.alias),this.resolveReferences(e),e.pushCode("return { offset: offset, result: vars };"),e.pushCode("}"),e},e.prototype.resolveReferences=function(e){var t=e.getUnresolvedReferences();e.markRequested(t),t.forEach((function(t){o[t].addAliasedCode(e)}))},e.prototype.compile=function(){var e=this.getContext("imports");this.compiled=new Function("imports","TextDecoder","return function (buffer, constructorFn) { "+e.code+" };")(e.imports,"undefined"==typeof TextDecoder?p(18).TextDecoder:TextDecoder)},e.prototype.sizeOf=function(){var t=NaN;if(Object.keys(i).indexOf(this.type)>=0)t=i[this.type];else if("string"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("buffer"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("array"===this.type&&"number"==typeof this.options.length){var p=NaN;"string"==typeof this.options.type?p=i[this.options.type]:this.options.type instanceof e&&(p=this.options.type.sizeOf()),t=this.options.length*p}else"seek"===this.type?t=this.options.length:"nest"===this.type?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t},e.prototype.parse=function(e){return this.compiled||this.compile(),this.compiled(e,this.constructorFn)},e.prototype.setNextParser=function(t,p,r){var o=new e;return o.type=t,o.varName=p,o.options=r||o.options,o.endian=this.endian,this.head?this.head.next=o:this.next=o,this.head=o,this},e.prototype.generate=function(e){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,e);break;case"bit":this.generateBit(e);break;case"string":this.generateString(e);break;case"buffer":this.generateBuffer(e);break;case"seek":this.generateSeek(e);break;case"nest":this.generateNest(e);break;case"array":this.generateArray(e);break;case"choice":this.generateChoice(e);break;case"pointer":this.generatePointer(e);break;case"saveOffset":this.generateSaveOffset(e)}this.generateAssert(e)}var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},e.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":var p=e.addImport(this.options.assert);e.pushCode("if (!"+p+".call(vars, "+t+")) {");break;case"number":e.pushCode("if ("+this.options.assert+" !== "+t+") {");break;case"string":e.pushCode('if ("'+this.options.assert+'" !== '+t+") {");break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: '+t+' is " + '+this.options.assert),e.pushCode("}")}},e.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},e.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){var p=0;e.bitFields.forEach((function(e){return p+=e.options.length}));var r=e.generateTmpVariable();if(p<=8)e.pushCode("var "+r+" = dataView.getUint8(offset);"),p=8;else if(p<=16)e.pushCode("var "+r+" = dataView.getUint16(offset);"),p=16;else if(p<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var "+o+" = dataView.getUint16(offset);"),e.pushCode("var "+i+" = dataView.getUint8(offset + 2);"),e.pushCode("var "+r+" = ("+o+" << 8) | "+i+";"),p=24}else{if(!(p<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var "+r+" = dataView.getUint32(offset);"),p=32}e.pushCode("offset += "+p/8+";");var s=0,n="be"===this.endian;e.bitFields.forEach((function(t){var o=t.options.length,i=n?p-s-o:s,a=(1<> "+i+" & "+a+";"),s+=o})),e.bitFields=[]}},e.prototype.generateSeek=function(e){var t=e.generateOption(this.options.length);e.pushCode("offset += "+t+";")},e.prototype.generateString=function(e){var t=e.generateVariable(this.varName),p=e.generateTmpVariable(),r=this.options.encoding,o="hex"===r.toLowerCase(),i='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){var s=this.options.length;e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0 && offset - "+p+" < "+s+");");var n="offset - "+p+" < "+s+" ? offset - 1 : offset";e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", "+n+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", "+n+"));")}else if(this.options.length){s=e.generateOption(this.options.length);e.pushCode(o?t+" = Array.from(buffer.subarray(offset, offset + "+s+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray(offset, offset + "+s+"));"),e.pushCode("offset += "+s+";")}else this.options.zeroTerminated?(e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset - 1)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset - 1));")):this.options.greedy&&(e.pushCode("var "+p+" = offset;"),e.pushCode("while(buffer.length > offset++);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset));"));this.options.stripNull&&e.pushCode(t+" = "+t+".replace(/\\x00+$/g, '')")},e.prototype.generateBuffer=function(e){var t=e.generateVariable(this.varName);if("function"==typeof this.options.readUntil){var p=this.options.readUntil,r=e.generateTmpVariable(),o=e.generateTmpVariable();e.pushCode("var "+r+" = offset;"),e.pushCode("var "+o+" = 0;"),e.pushCode("while (offset < buffer.length) {"),e.pushCode(o+" = dataView.getUint8(offset);");var i=e.addImport(p);e.pushCode("if ("+i+".call(this, "+o+", buffer.subarray(offset))) break;"),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(t+" = buffer.subarray("+r+", offset);")}else if("eof"===this.options.readUntil)e.pushCode(t+" = buffer.subarray(offset);");else{var s=e.generateOption(this.options.length);e.pushCode(t+" = buffer.subarray(offset, offset + "+s+");"),e.pushCode("offset += "+s+";")}this.options.clone&&e.pushCode(t+" = buffer.constructor.from("+t+");")},e.prototype.generateArray=function(t){var p=t.generateOption(this.options.length),r=t.generateOption(this.options.lengthInBytes),a=this.options.type,l=t.generateTmpVariable(),u=t.generateVariable(this.varName),c=t.generateTmpVariable(),y=this.options.key,h="string"==typeof y;if(h?t.pushCode(u+" = {};"):t.pushCode(u+" = [];"),"function"==typeof this.options.readUntil?t.pushCode("do {"):"eof"===this.options.readUntil?t.pushCode("for (var "+l+" = 0; offset < buffer.length; "+l+"++) {"):void 0!==r?t.pushCode("for (var "+l+" = offset + "+r+"; offset < "+l+"; ) {"):t.pushCode("for (var "+l+" = "+p+"; "+l+" > 0; "+l+"--) {"),"string"==typeof a)if(o[a]){var f=t.generateTmpVariable();t.pushCode("var "+f+" = ___parser_"+a+"(offset);"),t.pushCode("var "+c+" = "+f+".result; offset = "+f+".offset;"),a!==this.alias&&t.addReference(a)}else{var d=s[a],_=n[a];t.pushCode("var "+c+" = dataView.get"+d+"(offset, "+_+");"),t.pushCode("offset += "+i[a]+";")}else a instanceof e&&(t.pushCode("var "+c+" = {};"),t.pushScope(c),a.generate(t),t.popScope());if(h?t.pushCode(u+"["+c+"."+y+"] = "+c+";"):t.pushCode(u+".push("+c+");"),t.pushCode("}"),"function"==typeof this.options.readUntil){var S=this.options.readUntil,g=t.addImport(S);t.pushCode("while (!"+g+".call(this, "+c+", buffer.subarray(offset)));")}},e.prototype.generateChoiceCase=function(t,p,r){if("string"==typeof r){var a=t.generateVariable(this.varName);if(o[r]){var l=t.generateTmpVariable();t.pushCode("var "+l+" = ___parser_"+r+"(offset);"),t.pushCode(a+" = "+l+".result; offset = "+l+".offset;"),r!==this.alias&&t.addReference(r)}else{var u=s[r],c=n[r];t.pushCode(a+" = dataView.get"+u+"(offset, "+c+");"),t.pushCode("offset += "+i[r])}}else r instanceof e&&(t.pushPath(p),r.generate(t),t.popPath(p))},e.prototype.generateChoice=function(e){var t=this,p=e.generateOption(this.options.tag);this.varName&&e.pushCode(e.generateVariable(this.varName)+" = {};"),e.pushCode("switch("+p+") {"),Object.keys(this.options.choices).forEach((function(p){var r=t.options.choices[parseInt(p,10)];e.pushCode("case "+p+":"),t.generateChoiceCase(e,t.varName,r),e.pushCode("break;")})),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + '+p+' + " at choice"'),e.pushCode("}")},e.prototype.generateNest=function(t){var p=t.generateVariable(this.varName);if(this.options.type instanceof e)this.varName&&t.pushCode(p+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var r=t.generateTmpVariable();t.pushCode("var "+r+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(p+" = "+r+".result; offset = "+r+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}},e.prototype.generateFormatter=function(e,t,p){if("function"==typeof p){var r=e.addImport(p);e.pushCode(t+" = "+r+".call(this, "+t+");")}},e.prototype.generatePointer=function(t){var p=this.options.type,r=t.generateOption(this.options.offset),a=t.generateTmpVariable(),l=t.generateVariable(this.varName);if(t.pushCode("var "+a+" = offset;"),t.pushCode("offset = "+r+";"),this.options.type instanceof e)t.pushCode(l+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var u=t.generateTmpVariable();t.pushCode("var "+u+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(l+" = "+u+".result; offset = "+u+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(i).indexOf(this.options.type)>=0){var c=s[p],y=n[p];t.pushCode(l+" = dataView.get"+c+"(offset, "+y+");"),t.pushCode("offset += "+i[p]+";")}t.pushCode("offset = "+a+";")},e.prototype.generateSaveOffset=function(e){var t=e.generateVariable(this.varName);e.pushCode(t+" = offset")},e}();t.Parser=a},function(e,t,p){(function(e,r){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],p=0;p=i)return e;switch(e){case"%s":return String(r[p++]);case"%d":return Number(r[p++]);case"%j":try{return JSON.stringify(r[p++])}catch(e){return"[Circular]"}default:return e}})),a=r[p];p=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),f(p)?r.showHidden=p:p&&t._extend(r,p),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),u(r,e,r.depth)}function a(e,t){var p=n.styles[t];return p?"["+n.colors[p][0]+"m"+e+"["+n.colors[p][1]+"m":e}function l(e,t){return e}function u(e,p,r){if(e.customInspect&&p&&I(p.inspect)&&p.inspect!==t.inspect&&(!p.constructor||p.constructor.prototype!==p)){var o=p.inspect(r,e);return S(o)||(o=u(e,o,r)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var p="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(p,"string")}if(_(t))return e.stylize(""+t,"number");if(f(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,p);if(i)return i;var s=Object.keys(p),n=function(e){var t={};return e.forEach((function(e,p){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(p)),b(p)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return c(p);if(0===s.length){if(I(p)){var a=p.name?": "+p.name:"";return e.stylize("[Function"+a+"]","special")}if(w(p))return e.stylize(RegExp.prototype.toString.call(p),"regexp");if(m(p))return e.stylize(Date.prototype.toString.call(p),"date");if(b(p))return c(p)}var l,E="",v=!1,L=["{","}"];(h(p)&&(v=!0,L=["[","]"]),I(p))&&(E=" [Function"+(p.name?": "+p.name:"")+"]");return w(p)&&(E=" "+RegExp.prototype.toString.call(p)),m(p)&&(E=" "+Date.prototype.toUTCString.call(p)),b(p)&&(E=" "+c(p)),0!==s.length||v&&0!=p.length?r<0?w(p)?e.stylize(RegExp.prototype.toString.call(p),"regexp"):e.stylize("[Object]","special"):(e.seen.push(p),l=v?function(e,t,p,r,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return p[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+p[1];return p[0]+t+" "+e.join(", ")+" "+p[1]}(l,E,L)):L[0]+E+L[1]}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function y(e,t,p,r,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(r,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(p)?u(e,a.value,null):u(e,a.value,p-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+n.split("\n").map((function(e){return" "+e})).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function h(e){return Array.isArray(e)}function f(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===v(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===v(e)}function b(e){return E(e)&&("[object Error]"===v(e)||e instanceof Error)}function I(e){return"function"==typeof e}function v(e){return Object.prototype.toString.call(e)}function L(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var p=r.pid;s[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,p,r)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=h,t.isBoolean=f,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=I,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=p(29);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function U(){var e=new Date,t=[L(e.getHours()),L(e.getMinutes()),L(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",U(),t.format.apply(t,arguments))},t.inherits=p(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var p=Object.keys(t),r=p.length;r--;)e[p[r]]=t[p[r]];return e}}).call(this,p(5),p(9))},function(e,t,p){"use strict";(function(t,r){var o=p(11);e.exports=w;var i,s=p(16);w.ReadableState=g;p(13).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=p(20),l=p(12).Buffer,u=t.Uint8Array||function(){};var c=p(10);c.inherits=p(6);var y=p(32),h=void 0;h=y&&y.debuglog?y.debuglog("stream"):function(){};var f,d=p(33),_=p(21);c.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var r=t instanceof(i=i||p(7));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(f||(f=p(22).StringDecoder),this.decoder=new f(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||p(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,p,r,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var p=t.decoder.end();p&&p.length&&(t.buffer.push(p),t.length+=t.objectMode?1:p.length)}t.ended=!0,I(e)}(e,s)):(o||(i=function(e,t){var p;r=t,l.isBuffer(r)||r instanceof u||"string"==typeof t||void 0===t||e.objectMode||(p=new TypeError("Invalid non-string/buffer chunk"));var r;return p}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!p?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):L(e,s)):m(e,s,t,!1))):r||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(v,e):v(e))}function v(e){h("emit readable"),e.emit("readable"),D(e)}function L(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(T,e,t))}function T(e,t){for(var p=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(p=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):p=function(e,t,p){var r;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++r,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++r}return t.length-=r,o}(e,t):function(e,t){var p=l.allocUnsafe(e),r=t.head,o=1;r.data.copy(p),e-=r.data.length;for(;r=r.next;){var i=r.data,s=e>i.length?i.length:e;if(i.copy(p,p.length-e,0,s),0===(e-=s)){s===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++o}return t.length-=o,p}(e,t);return r}(e,t.buffer,t.decoder),p);var p}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function C(e,t){for(var p=0,r=e.length;p=t.highWaterMark||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):I(this),null;if(0===(e=b(e,t))&&t.ended)return 0===t.length&&G(this),null;var r,o=t.needReadable;return h("need readable",o),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),p!==e&&t.ended&&G(this)),null!==r&&this.emit("data",r),r},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var p=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,h("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?u:w;function l(t,r){h("onunpipe"),t===p&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,h("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",c),e.removeListener("error",_),e.removeListener("unpipe",l),p.removeListener("end",u),p.removeListener("end",w),p.removeListener("data",d),y=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||c())}function u(){h("onend"),e.end()}i.endEmitted?o.nextTick(a):p.once("end",a),e.on("unpipe",l);var c=function(e){return function(){var t=e._readableState;h("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,D(e))}}(p);e.on("drain",c);var y=!1;var f=!1;function d(t){h("ondata"),f=!1,!1!==e.write(t)||f||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==C(i.pipes,e))&&!y&&(h("false write response, pause",p._readableState.awaitDrain),p._readableState.awaitDrain++,f=!0),p.pause())}function _(t){h("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){h("onfinish"),e.removeListener("close",S),w()}function w(){h("unpipe"),p.unpipe(e)}return p.on("data",d),function(e,t,p){if("function"==typeof e.prependListener)return e.prependListener(t,p);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(p):e._events[t]=[p,e._events[t]]:e.on(t,p)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",p),i.flowing||(h("pipe resume"),p.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,p={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,p)),this;if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,p=function(e,t,p){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==p?p:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var p=e.toString("utf16le",t);if(p){var r=p.charCodeAt(p.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],p.slice(0,-1)}return p}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var p=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,p)}return t}function u(e,t){var p=(e.length-t)%3;return 0===p?e.toString("base64",t):(this.lastNeed=3-p,this.lastTotal=3,1===p?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-p))}function c(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function y(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,p;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";p=this.lastNeed,this.lastNeed=0}else p=0;return p=0)return o>0&&(e.lastNeed=o-1),o;if(--r=0)return o>0&&(e.lastNeed=o-2),o;if(--r=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=p;var r=e.length-(p-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,p){"use strict";e.exports=s;var r=p(7),o=p(10);function i(e,t){var p=this._transformState;p.transforming=!1;var r=p.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));p.writechunk=null,p.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&p],t&=65535;return t}r.exports={preambleByte:85,crc16:S,sbpIdTable:h,sbpMessageTypesTable:f,decode:function(e){var t=d.parse(e),p=h[t.msg_type];return void 0===p?(console.log("Unknown message type: ",t.msg_type),new s(t)):new p(t)},dispatch:function(t,p,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof p?i=p:(i=o,s=p),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(p){t.pause();try{if((n=e.concat([n,p])).length<2)return;var o=function(){var e,t,p,o,i,a,l;for(l=0;ln.length)throw new u;e=n.slice(l+1,l+6),p=n.readUInt16LE(l+1),_=n.readUInt16LE(l+3),o=n.readUInt8(l+5);var y=s&&Array.isArray(s)&&-1!==s.indexOf(p),h=s&&"number"==typeof s&&s&p,f=s&&"function"==typeof s&&s(p);if(s&&!(y||h||f))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new u;a=S(n.slice(l+6,l+6+o),S(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[r.exports.decode(d),d];throw n=n.slice(l+1),new c}();if(null===o)return;var l=o[0],y=o[1];i(null,l,y)}catch(e){if(!(e instanceof u||e instanceof c))throw e}finally{t.resume(),n.length>0&&setTimeout((function(){a(new e(0))}),0)}};t.on("data",a)}},function(e){var p={function:!0,object:!0},i=p[typeof window]&&window||this,s=p[typeof t]&&t&&!t.nodeType&&t,n=p[typeof r]&&r&&!r.nodeType&&r,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(r.exports)}).call(this,p(8).Buffer,p(27)(e),p(5))},function(e,t,p){"use strict";t.byteLength=function(e){var t=l(e),p=t[0],r=t[1];return 3*(p+r)/4-r},t.toByteArray=function(e){for(var t,p=l(e),r=p[0],s=p[1],n=new i(function(e,t,p){return 3*(t+p)/4-p}(0,r,s)),a=0,u=s>0?r-4:r,c=0;c>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(c)]<<2|o[e.charCodeAt(c+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(c)]<<10|o[e.charCodeAt(c+1)]<<4|o[e.charCodeAt(c+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,p=e.length,o=p%3,i=[],s=0,n=p-o;sn?n:s+16383));1===o?(t=e[p-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[p-2]<<8)+e[p-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var p=e.indexOf("=");return-1===p&&(p=t),[p,p===t?0:4-p%4]}function u(e,t,p){for(var o,i,s=[],n=t;n>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,p,r,o){var i,s,n=8*o-r-1,a=(1<>1,u=-7,c=p?o-1:0,y=p?-1:1,h=e[t+c];for(c+=y,i=h&(1<<-u)-1,h>>=-u,u+=n;u>0;i=256*i+e[t+c],c+=y,u-=8);for(s=i&(1<<-u)-1,i>>=-u,u+=r;u>0;s=256*s+e[t+c],c+=y,u-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,r),i-=l}return(h?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,p,r,o,i){var s,n,a,l=8*i-o-1,u=(1<>1,y=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:i-1,f=r?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+c>=1?y/a:y*Math.pow(2,1-c))*a>=2&&(s++,a/=2),s+c>=u?(n=0,s=u):s+c>=1?(n=(t*a-1)*Math.pow(2,o),s+=c):(n=t*Math.pow(2,c-1)*Math.pow(2,o),s=0));o>=8;e[p+h]=255&n,h+=f,n/=256,o-=8);for(s=s<0;e[p+h]=255&s,h+=f,s/=256,l-=8);e[p+h-f]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Context=void 0;var r=function(){function e(e){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references={},this.imports=[],this.reverseImports=new Map,this.importPath=e}return e.prototype.generateVariable=function(e){var t=[],p=this.scopes[this.scopes.length-1];return t.push.apply(t,p),e&&t.push(e),t.join(".")},e.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return this.addImport(e)+".call("+this.generateVariable()+", vars)"}},e.prototype.generateError=function(e){this.pushCode("throw new Error("+e+");")},e.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},e.prototype.pushCode=function(e){this.code+=e+"\n"},e.prototype.pushPath=function(e){e&&this.scopes[this.scopes.length-1].push(e)},e.prototype.popPath=function(e){e&&this.scopes[this.scopes.length-1].pop()},e.prototype.pushScope=function(e){this.scopes.push([e])},e.prototype.popScope=function(){this.scopes.pop()},e.prototype.addImport=function(e){if(!this.importPath)return"("+e+")";var t=this.reverseImports.get(e);return t||(t=this.imports.push(e)-1,this.reverseImports.set(e,t)),this.importPath+"["+t+"]"},e.prototype.addReference=function(e){this.references[e]||(this.references[e]={resolved:!1,requested:!1})},e.prototype.markResolved=function(e){this.references[e].resolved=!0},e.prototype.markRequested=function(e){var t=this;e.forEach((function(e){t.references[e].requested=!0}))},e.prototype.getUnresolvedReferences=function(){var e=this.references;return Object.keys(this.references).filter((function(t){return!e[t].resolved&&!e[t].requested}))},e}();t.Context=r},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,p){(function(e){function p(e,t){for(var p=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),p++):p&&(e.splice(r,1),p--)}if(t)for(;p--;p)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var p=[],r=0;r=-1&&!r;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,r="/"===s.charAt(0))}return(r?"/":"")+(t=p(i(t.split("/"),(function(e){return!!e})),!r).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===s(e,-1);return(e=p(i(e.split("/"),(function(e){return!!e})),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,p){function r(e){for(var t=0;t=0&&""===e[p];p--);return t>p?[]:e.slice(t,p-t+1)}e=t.resolve(e).substr(1),p=t.resolve(p).substr(1);for(var o=r(e.split("/")),i=r(p.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,p=""+t.data;t=t.next;)p+=e+t.data;return p},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t=r.allocUnsafe(e>>>0),p=this.head,o=0;p;)i(p.data,t,o),o+=p.data.length,p=p.next;return t},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,p){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},p(36),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,p(5))},function(e,t,p){(function(e,t){!function(e,p){"use strict";if(!e.setImmediate){var r,o,i,s,n,a=1,l={},u=!1,c=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){f(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,p=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=p,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){f(e.data)},r=function(e){i.port2.postMessage(e)}):c&&"onreadystatechange"in c.createElement("script")?(o=c.documentElement,r=function(e){var t=c.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(f,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&f(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(t){e.postMessage(s+t,"*")}),y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),p=0;p=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var p=e.length;if(0===p)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return p;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*p;case"hex":return p>>>1;case"base64":return B(e).length;default:if(r)return F(e).length;t=(""+t).toLowerCase(),r=!0}}function d(e,t,p){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===p||p>this.length)&&(p=this.length),p<=0)return"";if((p>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return D(this,t,p);case"utf8":case"utf-8":return T(this,t,p);case"ascii":return U(this,t,p);case"latin1":case"binary":return M(this,t,p);case"base64":return L(this,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,p);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function _(e,t,p){var r=e[t];e[t]=e[p],e[p]=r}function S(e,t,p,r,o){if(0===e.length)return-1;if("string"==typeof p?(r=p,p=0):p>2147483647?p=2147483647:p<-2147483648&&(p=-2147483648),p=+p,isNaN(p)&&(p=o?0:e.length-1),p<0&&(p=e.length+p),p>=e.length){if(o)return-1;p=e.length-1}else if(p<0){if(!o)return-1;p=0}if("string"==typeof t&&(t=a.from(t,r)),a.isBuffer(t))return 0===t.length?-1:g(e,t,p,r,o);if("number"==typeof t)return t&=255,a.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,p):Uint8Array.prototype.lastIndexOf.call(e,t,p):g(e,[t],p,r,o);throw new TypeError("val must be string, number or Buffer")}function g(e,t,p,r,o){var i,s=1,n=e.length,a=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,n/=2,a/=2,p/=2}function l(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var c=-1;for(i=p;in&&(p=n-a),i=p;i>=0;i--){for(var u=!0,y=0;yo&&(r=o):r=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");r>i/2&&(r=i/2);for(var s=0;s>8,o=p%256,i.push(o),i.push(r);return i}(t,e.length-p),e,p,r)}function L(e,t,p){return 0===t&&p===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,p))}function T(e,t,p){p=Math.min(e.length,p);for(var r=[],o=t;o239?4:l>223?3:l>191?2:1;if(o+u<=p)switch(u){case 1:l<128&&(c=l);break;case 2:128==(192&(i=e[o+1]))&&(a=(31&l)<<6|63&i)>127&&(c=a);break;case 3:i=e[o+1],s=e[o+2],128==(192&i)&&128==(192&s)&&(a=(15&l)<<12|(63&i)<<6|63&s)>2047&&(a<55296||a>57343)&&(c=a);break;case 4:i=e[o+1],s=e[o+2],n=e[o+3],128==(192&i)&&128==(192&s)&&128==(192&n)&&(a=(15&l)<<18|(63&i)<<12|(63&s)<<6|63&n)>65535&&a<1114112&&(c=a)}null===c?(c=65533,u=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),o+=u}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var p="",r=0;for(;r0&&(e=this.toString("hex",0,p).match(/.{2}/g).join(" "),this.length>p&&(e+=" ... ")),""},a.prototype.compare=function(e,t,p,r,o){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===p&&(p=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||p>e.length||r<0||o>this.length)throw new RangeError("out of range index");if(r>=o&&t>=p)return 0;if(r>=o)return-1;if(t>=p)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),s=(p>>>=0)-(t>>>=0),n=Math.min(i,s),l=this.slice(r,o),c=e.slice(t,p),u=0;uo)&&(p=o),e.length>0&&(p<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var i=!1;;)switch(r){case"hex":return w(this,e,t,p);case"utf8":case"utf-8":return E(this,e,t,p);case"ascii":return m(this,e,t,p);case"latin1":case"binary":return b(this,e,t,p);case"base64":return I(this,e,t,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return v(this,e,t,p);default:if(i)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),i=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function U(e,t,p){var r="";p=Math.min(e.length,p);for(var o=t;or)&&(p=r);for(var o="",i=t;ip)throw new RangeError("Trying to access beyond buffer length")}function A(e,t,p,r,o,i){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw new RangeError("Index out of range")}function C(e,t,p,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-p,2);o>>8*(r?o:1-o)}function R(e,t,p,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-p,4);o>>8*(r?o:3-o)&255}function P(e,t,p,r,o,i){if(p+r>e.length)throw new RangeError("Index out of range");if(p<0)throw new RangeError("Index out of range")}function N(e,t,p,r,i){return i||P(e,0,p,4),o.write(e,t,p,r,23,4),p+4}function j(e,t,p,r,i){return i||P(e,0,p,8),o.write(e,t,p,r,52,8),p+8}a.prototype.slice=function(e,t){var p,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t0&&(o*=256);)r+=this[e+--t]*o;return r},a.prototype.readUInt8=function(e,t){return t||G(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return t||G(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return t||G(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return t||G(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUInt32BE=function(e,t){return t||G(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=this[e],o=1,i=0;++i=(o*=128)&&(r-=Math.pow(2,8*t)),r},a.prototype.readIntBE=function(e,t,p){e|=0,t|=0,p||G(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return t||G(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){t||G(e,2,this.length);var p=this[e]|this[e+1]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt16BE=function(e,t){t||G(e,2,this.length);var p=this[e+1]|this[e]<<8;return 32768&p?4294901760|p:p},a.prototype.readInt32LE=function(e,t){return t||G(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return t||G(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return t||G(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return t||G(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,p,r){(e=+e,t|=0,p|=0,r)||A(this,e,t,p,Math.pow(2,8*p)-1,0);var o=1,i=0;for(this[t]=255&e;++i=0&&(i*=256);)this[t+o]=e/i&255;return t+p},a.prototype.writeUInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,255,0),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeUInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,65535,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeUInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):R(this,e,t,!0),t+4},a.prototype.writeUInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,4294967295,0),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeIntLE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=0,s=1,n=0;for(this[t]=255&e;++i>0)-n&255;return t+p},a.prototype.writeIntBE=function(e,t,p,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*p-1);A(this,e,t,p,o-1,-o)}var i=p-1,s=1,n=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===n&&0!==this[t+i+1]&&(n=1),this[t+i]=(e/s>>0)-n&255;return t+p},a.prototype.writeInt8=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,1,127,-128),a.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):C(this,e,t,!0),t+2},a.prototype.writeInt16BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,2,32767,-32768),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):C(this,e,t,!1),t+2},a.prototype.writeInt32LE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),a.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):R(this,e,t,!0),t+4},a.prototype.writeInt32BE=function(e,t,p){return e=+e,t|=0,p||A(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),a.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):R(this,e,t,!1),t+4},a.prototype.writeFloatLE=function(e,t,p){return N(this,e,t,!0,p)},a.prototype.writeFloatBE=function(e,t,p){return N(this,e,t,!1,p)},a.prototype.writeDoubleLE=function(e,t,p){return j(this,e,t,!0,p)},a.prototype.writeDoubleBE=function(e,t,p){return j(this,e,t,!1,p)},a.prototype.copy=function(e,t,p,r){if(p||(p=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--o)e[o+t]=this[o+p];else if(i<1e3||!a.TYPED_ARRAY_SUPPORT)for(o=0;o>>=0,p=void 0===p?this.length:p>>>0,e||(e=0),"number"==typeof e)for(i=t;i55295&&p<57344){if(!o){if(p>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=p;continue}if(p<56320){(t-=3)>-1&&i.push(239,191,189),o=p;continue}p=65536+(o-55296<<10|p-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,p<128){if((t-=1)<0)break;i.push(p)}else if(p<2048){if((t-=2)<0)break;i.push(p>>6|192,63&p|128)}else if(p<65536){if((t-=3)<0)break;i.push(p>>12|224,p>>6&63|128,63&p|128)}else{if(!(p<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(p>>18|240,p>>12&63|128,p>>6&63|128,63&p|128)}}return i}function B(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(x,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function q(e,t,p,r){for(var o=0;o=t.length||o>=e.length);++o)t[o+p]=e[o];return o}}).call(this,p(5))},function(e,t){var p,r,o=e.exports={};function i(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function n(e){if(p===setTimeout)return setTimeout(e,0);if((p===i||!p)&&setTimeout)return p=setTimeout,setTimeout(e,0);try{return p(e,0)}catch(t){try{return p.call(null,e,0)}catch(t){return p.call(this,e,0)}}}!function(){try{p="function"==typeof setTimeout?setTimeout:i}catch(e){p=i}try{r="function"==typeof clearTimeout?clearTimeout:s}catch(e){r=s}}();var a,l=[],c=!1,u=-1;function y(){c&&a&&(c=!1,a.length?l=a.concat(l):u=-1,l.length&&h())}function h(){if(!c){var e=n(y);c=!0;for(var t=l.length;t;){for(a=l,l=[];++u1)for(var p=1;p0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},p.prototype.on=p.prototype.addListener,p.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var p=!1;function o(){this.removeListener(e,o),p||(p=!0,t.apply(this,arguments))}return o.listener=t,this.on(e,o),this},p.prototype.removeListener=function(e,t){var p,i,s,n;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(p=this._events[e]).length,i=-1,p===t||r(p.listener)&&p.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(p)){for(n=s;n-- >0;)if(p[n]===t||p[n].listener&&p[n].listener===t){i=n;break}if(i<0)return this;1===p.length?(p.length=0,delete this._events[e]):p.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},p.prototype.removeAllListeners=function(e){var t,p;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(p=this._events[e]))this.removeListener(e,p);else if(p)for(;p.length;)this.removeListener(e,p[p.length-1]);return delete this._events[e],this},p.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},p.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},p.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,p){(t=e.exports=p(19)).Stream=t,t.Readable=t,t.Writable=p(15),t.Duplex=p(7),t.Transform=p(23),t.PassThrough=p(38)},function(e,t,p){"use strict";(function(t,r,o){var i=p(11);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,p){var r=e.entry;e.entry=null;for(;r;){var o=r.callback;t.pendingcb--,o(p),r=r.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=g;var n,a=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?r:i.nextTick;g.WritableState=S;var l=p(10);l.inherits=p(6);var c={deprecate:p(37)},u=p(20),y=p(12).Buffer,h=o.Uint8Array||function(){};var f,d=p(21);function _(){}function S(e,t){n=n||p(7),e=e||{};var r=t instanceof n;this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var o=e.highWaterMark,l=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(l||0===l)?l:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var u=!1===e.decodeStrings;this.decodeStrings=!u,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var p=e._writableState,r=p.sync,o=p.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(p),t)!function(e,t,p,r,o){--t.pendingcb,p?(i.nextTick(o,r),i.nextTick(v,e,t),e._writableState.errorEmitted=!0,e.emit("error",r)):(o(r),e._writableState.errorEmitted=!0,e.emit("error",r),v(e,t))}(e,p,r,t,o);else{var s=b(p);s||p.corked||p.bufferProcessing||!p.bufferedRequest||m(e,p),r?a(E,e,p,s,o):E(e,p,s,o)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function g(e){if(n=n||p(7),!(f.call(g,this)||this instanceof n))return new g(e);this._writableState=new S(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),u.call(this)}function w(e,t,p,r,o,i,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,p?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function E(e,t,p,r){p||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),v(e,t)}function m(e,t){t.bufferProcessing=!0;var p=t.bufferedRequest;if(e._writev&&p&&p.next){var r=t.bufferedRequestCount,o=new Array(r),i=t.corkedRequestsFree;i.entry=p;for(var n=0,a=!0;p;)o[n]=p,p.isBuf||(a=!1),p=p.next,n+=1;o.allBuffers=a,w(e,t,!0,t.length,o,"",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;p;){var l=p.chunk,c=p.encoding,u=p.callback;if(w(e,t,!1,t.objectMode?1:l.length,l,c,u),p=p.next,t.bufferedRequestCount--,t.writing)break}null===p&&(t.lastBufferedRequest=null)}t.bufferedRequest=p,t.bufferProcessing=!1}function b(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function I(e,t){e._final((function(p){t.pendingcb--,p&&e.emit("error",p),t.prefinished=!0,e.emit("prefinish"),v(e,t)}))}function v(e,t){var p=b(t);return p&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(I,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),p}l.inherits(g,u),S.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(S.prototype,"buffer",{get:c.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(f=Function.prototype[Symbol.hasInstance],Object.defineProperty(g,Symbol.hasInstance,{value:function(e){return!!f.call(this,e)||this===g&&(e&&e._writableState instanceof S)}})):f=function(e){return e instanceof this},g.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},g.prototype.write=function(e,t,p){var r,o=this._writableState,s=!1,n=!o.objectMode&&(r=e,y.isBuffer(r)||r instanceof h);return n&&!y.isBuffer(e)&&(e=function(e){return y.from(e)}(e)),"function"==typeof t&&(p=t,t=null),n?t="buffer":t||(t=o.defaultEncoding),"function"!=typeof p&&(p=_),o.ended?function(e,t){var p=new Error("write after end");e.emit("error",p),i.nextTick(t,p)}(this,p):(n||function(e,t,p,r){var o=!0,s=!1;return null===p?s=new TypeError("May not write null values to stream"):"string"==typeof p||void 0===p||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),i.nextTick(r,s),o=!1),o}(this,o,e,p))&&(o.pendingcb++,s=function(e,t,p,r,o,i){if(!p){var s=function(e,t,p){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=y.from(t,p));return t}(t,r,o);r!==s&&(p=!0,o="buffer",r=s)}var n=t.objectMode?1:r.length;t.length+=n;var a=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(g.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),g.prototype._write=function(e,t,p){p(new Error("_write() is not implemented"))},g.prototype._writev=null,g.prototype.end=function(e,t,p){var r=this._writableState;"function"==typeof e?(p=e,e=null,t=null):"function"==typeof t&&(p=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||function(e,t,p){t.ending=!0,v(e,t),p&&(t.finished?i.nextTick(p):e.once("finish",p));t.ended=!0,e.writable=!1}(this,r,p)},Object.defineProperty(g.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),g.prototype.destroy=d.destroy,g.prototype._undestroy=d.undestroy,g.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,p(9),p(35).setImmediate,p(5))},function(e,t){var p={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==p.call(e)}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Parser=void 0;var r=p(28),o={},i={uint8:1,uint16le:2,uint16be:2,uint32le:4,uint32be:4,int8:1,int16le:2,int16be:2,int32le:4,int32be:4,int64be:8,int64le:8,uint64be:8,uint64le:8,floatle:4,floatbe:4,doublele:8,doublebe:8},s={uint8:"Uint8",uint16le:"Uint16",uint16be:"Uint16",uint32le:"Uint32",uint32be:"Uint32",int8:"Int8",int16le:"Int16",int16be:"Int16",int32le:"Int32",int32be:"Int32",int64be:"BigInt64",int64le:"BigInt64",uint64be:"BigUint64",uint64le:"BigUint64",floatle:"Float32",floatbe:"Float32",doublele:"Float64",doublebe:"Float64"},n={uint8:!1,uint16le:!0,uint16be:!1,uint32le:!0,uint32be:!1,int8:!1,int16le:!0,int16be:!1,int32le:!0,int32be:!1,int64be:!1,int64le:!0,uint64be:!1,uint64le:!0,floatle:!0,floatbe:!1,doublele:!0,doublebe:!1},a=function(){function e(){this.varName="",this.type="",this.options={},this.next=null,this.head=null,this.compiled=null,this.endian="be",this.constructorFn=null,this.alias=null}return e.start=function(){return new e},e.prototype.primitiveGenerateN=function(e,t){var p=s[e],r=n[e];t.pushCode(t.generateVariable(this.varName)+" = dataView.get"+p+"(offset, "+r+");"),t.pushCode("offset += "+i[e]+";")},e.prototype.primitiveN=function(e,t,p){return this.setNextParser(e,t,p)},e.prototype.useThisEndian=function(e){return e+this.endian.toLowerCase()},e.prototype.uint8=function(e,t){return this.primitiveN("uint8",e,t)},e.prototype.uint16=function(e,t){return this.primitiveN(this.useThisEndian("uint16"),e,t)},e.prototype.uint16le=function(e,t){return this.primitiveN("uint16le",e,t)},e.prototype.uint16be=function(e,t){return this.primitiveN("uint16be",e,t)},e.prototype.uint32=function(e,t){return this.primitiveN(this.useThisEndian("uint32"),e,t)},e.prototype.uint32le=function(e,t){return this.primitiveN("uint32le",e,t)},e.prototype.uint32be=function(e,t){return this.primitiveN("uint32be",e,t)},e.prototype.int8=function(e,t){return this.primitiveN("int8",e,t)},e.prototype.int16=function(e,t){return this.primitiveN(this.useThisEndian("int16"),e,t)},e.prototype.int16le=function(e,t){return this.primitiveN("int16le",e,t)},e.prototype.int16be=function(e,t){return this.primitiveN("int16be",e,t)},e.prototype.int32=function(e,t){return this.primitiveN(this.useThisEndian("int32"),e,t)},e.prototype.int32le=function(e,t){return this.primitiveN("int32le",e,t)},e.prototype.int32be=function(e,t){return this.primitiveN("int32be",e,t)},e.prototype.bigIntVersionCheck=function(){if(!DataView.prototype.getBigInt64)throw new Error("BigInt64 is unsupported in this runtime")},e.prototype.int64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("int64"),e,t)},e.prototype.int64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64be",e,t)},e.prototype.int64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("int64le",e,t)},e.prototype.uint64=function(e,t){return this.bigIntVersionCheck(),this.primitiveN(this.useThisEndian("uint64"),e,t)},e.prototype.uint64be=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64be",e,t)},e.prototype.uint64le=function(e,t){return this.bigIntVersionCheck(),this.primitiveN("uint64le",e,t)},e.prototype.floatle=function(e,t){return this.primitiveN("floatle",e,t)},e.prototype.floatbe=function(e,t){return this.primitiveN("floatbe",e,t)},e.prototype.doublele=function(e,t){return this.primitiveN("doublele",e,t)},e.prototype.doublebe=function(e,t){return this.primitiveN("doublebe",e,t)},e.prototype.bitN=function(e,t,p){return p||(p={}),p.length=e,this.setNextParser("bit",t,p)},e.prototype.bit1=function(e,t){return this.bitN(1,e,t)},e.prototype.bit2=function(e,t){return this.bitN(2,e,t)},e.prototype.bit3=function(e,t){return this.bitN(3,e,t)},e.prototype.bit4=function(e,t){return this.bitN(4,e,t)},e.prototype.bit5=function(e,t){return this.bitN(5,e,t)},e.prototype.bit6=function(e,t){return this.bitN(6,e,t)},e.prototype.bit7=function(e,t){return this.bitN(7,e,t)},e.prototype.bit8=function(e,t){return this.bitN(8,e,t)},e.prototype.bit9=function(e,t){return this.bitN(9,e,t)},e.prototype.bit10=function(e,t){return this.bitN(10,e,t)},e.prototype.bit11=function(e,t){return this.bitN(11,e,t)},e.prototype.bit12=function(e,t){return this.bitN(12,e,t)},e.prototype.bit13=function(e,t){return this.bitN(13,e,t)},e.prototype.bit14=function(e,t){return this.bitN(14,e,t)},e.prototype.bit15=function(e,t){return this.bitN(15,e,t)},e.prototype.bit16=function(e,t){return this.bitN(16,e,t)},e.prototype.bit17=function(e,t){return this.bitN(17,e,t)},e.prototype.bit18=function(e,t){return this.bitN(18,e,t)},e.prototype.bit19=function(e,t){return this.bitN(19,e,t)},e.prototype.bit20=function(e,t){return this.bitN(20,e,t)},e.prototype.bit21=function(e,t){return this.bitN(21,e,t)},e.prototype.bit22=function(e,t){return this.bitN(22,e,t)},e.prototype.bit23=function(e,t){return this.bitN(23,e,t)},e.prototype.bit24=function(e,t){return this.bitN(24,e,t)},e.prototype.bit25=function(e,t){return this.bitN(25,e,t)},e.prototype.bit26=function(e,t){return this.bitN(26,e,t)},e.prototype.bit27=function(e,t){return this.bitN(27,e,t)},e.prototype.bit28=function(e,t){return this.bitN(28,e,t)},e.prototype.bit29=function(e,t){return this.bitN(29,e,t)},e.prototype.bit30=function(e,t){return this.bitN(30,e,t)},e.prototype.bit31=function(e,t){return this.bitN(31,e,t)},e.prototype.bit32=function(e,t){return this.bitN(32,e,t)},e.prototype.namely=function(e){return o[e]=this,this.alias=e,this},e.prototype.skip=function(e,t){return this.seek(e,t)},e.prototype.seek=function(e,t){if(t&&t.assert)throw new Error("assert option on seek is not allowed.");return this.setNextParser("seek","",{length:e})},e.prototype.string=function(e,t){if(!t.zeroTerminated&&!t.length&&!t.greedy)throw new Error("Neither length, zeroTerminated, nor greedy is defined for string.");if((t.zeroTerminated||t.length)&&t.greedy)throw new Error("greedy is mutually exclusive with length and zeroTerminated for string.");if(t.stripNull&&!t.length&&!t.greedy)throw new Error("Length or greedy must be defined if stripNull is defined.");return t.encoding=t.encoding||"utf8",this.setNextParser("string",e,t)},e.prototype.buffer=function(e,t){if(!t.length&&!t.readUntil)throw new Error("Length nor readUntil is defined in buffer parser");return this.setNextParser("buffer",e,t)},e.prototype.array=function(e,t){if(!t.readUntil&&!t.length&&!t.lengthInBytes)throw new Error("Length option of array is not defined.");if(!t.type)throw new Error("Type option of array is not defined.");if("string"==typeof t.type&&!o[t.type]&&Object.keys(i).indexOf(t.type)<0)throw new Error('Specified primitive type "'+t.type+'" is not supported.');return this.setNextParser("array",e,t)},e.prototype.choice=function(e,t){if("object"!=typeof t&&"object"==typeof e&&(t=e,e=null),!t.tag)throw new Error("Tag option of array is not defined.");if(!t.choices)throw new Error("Choices option of array is not defined.");return Object.keys(t.choices).forEach((function(p){var r=parseInt(p,10),s=t.choices[r];if(isNaN(r))throw new Error("Key of choices must be a number.");if(!s)throw new Error("Choice Case "+p+" of "+e+" is not valid.");if("string"==typeof s&&!o[s]&&Object.keys(i).indexOf(s)<0)throw new Error('Specified primitive type "'+s+'" is not supported.')})),this.setNextParser("choice",e,t)},e.prototype.nest=function(t,p){if("object"!=typeof p&&"object"==typeof t&&(p=t,t=null),!p.type)throw new Error("Type option of nest is not defined.");if(!(p.type instanceof e||o[p.type]))throw new Error("Type option of nest must be a Parser object.");if(!(p.type instanceof e||t))throw new Error("options.type must be a object if variable name is omitted.");return this.setNextParser("nest",t,p)},e.prototype.pointer=function(t,p){if(!p.offset)throw new Error("Offset option of pointer is not defined.");if(!p.type)throw new Error("Type option of pointer is not defined.");if("string"==typeof p.type){if(Object.keys(i).indexOf(p.type)<0&&!o[p.type])throw new Error('Specified type "'+p.type+'" is not supported.')}else if(!(p.type instanceof e))throw new Error("Type option of pointer must be a string or a Parser object.");return this.setNextParser("pointer",t,p)},e.prototype.saveOffset=function(e,t){return this.setNextParser("saveOffset",e,t)},e.prototype.endianess=function(e){switch(e.toLowerCase()){case"little":this.endian="le";break;case"big":this.endian="be";break;default:throw new Error("Invalid endianess: "+e)}return this},e.prototype.create=function(e){if(!(e instanceof Function))throw new Error("Constructor must be a Function object.");return this.constructorFn=e,this},e.prototype.getContext=function(e){var t=new r.Context(e);return t.pushCode("var dataView = new DataView(buffer.buffer, buffer.byteOffset, buffer.length);"),this.alias?(this.addAliasedCode(t),t.pushCode("return ___parser_"+this.alias+"(0).result;")):this.addRawCode(t),t},e.prototype.getCode=function(){return this.getContext().code},e.prototype.addRawCode=function(e){e.pushCode("var offset = 0;"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),this.resolveReferences(e),e.pushCode("return vars;")},e.prototype.addAliasedCode=function(e){return e.pushCode("function ___parser_"+this.alias+"(offset) {"),this.constructorFn?e.pushCode("var vars = new constructorFn();"):e.pushCode("var vars = {};"),this.generate(e),e.markResolved(this.alias),this.resolveReferences(e),e.pushCode("return { offset: offset, result: vars };"),e.pushCode("}"),e},e.prototype.resolveReferences=function(e){var t=e.getUnresolvedReferences();e.markRequested(t),t.forEach((function(t){o[t].addAliasedCode(e)}))},e.prototype.compile=function(){var e=this.getContext("imports");this.compiled=new Function("imports","TextDecoder","return function (buffer, constructorFn) { "+e.code+" };")(e.imports,"undefined"==typeof TextDecoder?p(18).TextDecoder:TextDecoder)},e.prototype.sizeOf=function(){var t=NaN;if(Object.keys(i).indexOf(this.type)>=0)t=i[this.type];else if("string"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("buffer"===this.type&&"number"==typeof this.options.length)t=this.options.length;else if("array"===this.type&&"number"==typeof this.options.length){var p=NaN;"string"==typeof this.options.type?p=i[this.options.type]:this.options.type instanceof e&&(p=this.options.type.sizeOf()),t=this.options.length*p}else"seek"===this.type?t=this.options.length:"nest"===this.type?t=this.options.type.sizeOf():this.type||(t=0);return this.next&&(t+=this.next.sizeOf()),t},e.prototype.parse=function(e){return this.compiled||this.compile(),this.compiled(e,this.constructorFn)},e.prototype.setNextParser=function(t,p,r){var o=new e;return o.type=t,o.varName=p,o.options=r||o.options,o.endian=this.endian,this.head?this.head.next=o:this.next=o,this.head=o,this},e.prototype.generate=function(e){if(this.type){switch(this.type){case"uint8":case"uint16le":case"uint16be":case"uint32le":case"uint32be":case"int8":case"int16le":case"int16be":case"int32le":case"int32be":case"int64be":case"int64le":case"uint64be":case"uint64le":case"floatle":case"floatbe":case"doublele":case"doublebe":this.primitiveGenerateN(this.type,e);break;case"bit":this.generateBit(e);break;case"string":this.generateString(e);break;case"buffer":this.generateBuffer(e);break;case"seek":this.generateSeek(e);break;case"nest":this.generateNest(e);break;case"array":this.generateArray(e);break;case"choice":this.generateChoice(e);break;case"pointer":this.generatePointer(e);break;case"saveOffset":this.generateSaveOffset(e)}this.generateAssert(e)}var t=e.generateVariable(this.varName);return this.options.formatter&&this.generateFormatter(e,t,this.options.formatter),this.generateNext(e)},e.prototype.generateAssert=function(e){if(this.options.assert){var t=e.generateVariable(this.varName);switch(typeof this.options.assert){case"function":var p=e.addImport(this.options.assert);e.pushCode("if (!"+p+".call(vars, "+t+")) {");break;case"number":e.pushCode("if ("+this.options.assert+" !== "+t+") {");break;case"string":e.pushCode('if ("'+this.options.assert+'" !== '+t+") {");break;default:throw new Error("Assert option supports only strings, numbers and assert functions.")}e.generateError('"Assert error: '+t+' is " + '+this.options.assert),e.pushCode("}")}},e.prototype.generateNext=function(e){return this.next&&(e=this.next.generate(e)),e},e.prototype.generateBit=function(e){var t=JSON.parse(JSON.stringify(this));if(t.varName=e.generateVariable(t.varName),e.bitFields.push(t),!this.next||this.next&&["bit","nest"].indexOf(this.next.type)<0){var p=0;e.bitFields.forEach((function(e){return p+=e.options.length}));var r=e.generateTmpVariable();if(p<=8)e.pushCode("var "+r+" = dataView.getUint8(offset);"),p=8;else if(p<=16)e.pushCode("var "+r+" = dataView.getUint16(offset);"),p=16;else if(p<=24){var o=e.generateTmpVariable(),i=e.generateTmpVariable();e.pushCode("var "+o+" = dataView.getUint16(offset);"),e.pushCode("var "+i+" = dataView.getUint8(offset + 2);"),e.pushCode("var "+r+" = ("+o+" << 8) | "+i+";"),p=24}else{if(!(p<=32))throw new Error("Currently, bit field sequence longer than 4-bytes is not supported.");e.pushCode("var "+r+" = dataView.getUint32(offset);"),p=32}e.pushCode("offset += "+p/8+";");var s=0,n="be"===this.endian;e.bitFields.forEach((function(t){var o=t.options.length,i=n?p-s-o:s,a=(1<> "+i+" & "+a+";"),s+=o})),e.bitFields=[]}},e.prototype.generateSeek=function(e){var t=e.generateOption(this.options.length);e.pushCode("offset += "+t+";")},e.prototype.generateString=function(e){var t=e.generateVariable(this.varName),p=e.generateTmpVariable(),r=this.options.encoding,o="hex"===r.toLowerCase(),i='b => b.toString(16).padStart(2, "0")';if(this.options.length&&this.options.zeroTerminated){var s=this.options.length;e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0 && offset - "+p+" < "+s+");");var n="offset - "+p+" < "+s+" ? offset - 1 : offset";e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", "+n+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", "+n+"));")}else if(this.options.length){s=e.generateOption(this.options.length);e.pushCode(o?t+" = Array.from(buffer.subarray(offset, offset + "+s+"), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray(offset, offset + "+s+"));"),e.pushCode("offset += "+s+";")}else this.options.zeroTerminated?(e.pushCode("var "+p+" = offset;"),e.pushCode("while(dataView.getUint8(offset++) !== 0);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset - 1)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset - 1));")):this.options.greedy&&(e.pushCode("var "+p+" = offset;"),e.pushCode("while(buffer.length > offset++);"),e.pushCode(o?t+" = Array.from(buffer.subarray("+p+", offset)), "+i+").join('');":t+" = new TextDecoder('"+r+"').decode(buffer.subarray("+p+", offset));"));this.options.stripNull&&e.pushCode(t+" = "+t+".replace(/\\x00+$/g, '')")},e.prototype.generateBuffer=function(e){var t=e.generateVariable(this.varName);if("function"==typeof this.options.readUntil){var p=this.options.readUntil,r=e.generateTmpVariable(),o=e.generateTmpVariable();e.pushCode("var "+r+" = offset;"),e.pushCode("var "+o+" = 0;"),e.pushCode("while (offset < buffer.length) {"),e.pushCode(o+" = dataView.getUint8(offset);");var i=e.addImport(p);e.pushCode("if ("+i+".call(this, "+o+", buffer.subarray(offset))) break;"),e.pushCode("offset += 1;"),e.pushCode("}"),e.pushCode(t+" = buffer.subarray("+r+", offset);")}else if("eof"===this.options.readUntil)e.pushCode(t+" = buffer.subarray(offset);");else{var s=e.generateOption(this.options.length);e.pushCode(t+" = buffer.subarray(offset, offset + "+s+");"),e.pushCode("offset += "+s+";")}this.options.clone&&e.pushCode(t+" = buffer.constructor.from("+t+");")},e.prototype.generateArray=function(t){var p=t.generateOption(this.options.length),r=t.generateOption(this.options.lengthInBytes),a=this.options.type,l=t.generateTmpVariable(),c=t.generateVariable(this.varName),u=t.generateTmpVariable(),y=this.options.key,h="string"==typeof y;if(h?t.pushCode(c+" = {};"):t.pushCode(c+" = [];"),"function"==typeof this.options.readUntil?t.pushCode("do {"):"eof"===this.options.readUntil?t.pushCode("for (var "+l+" = 0; offset < buffer.length; "+l+"++) {"):void 0!==r?t.pushCode("for (var "+l+" = offset + "+r+"; offset < "+l+"; ) {"):t.pushCode("for (var "+l+" = "+p+"; "+l+" > 0; "+l+"--) {"),"string"==typeof a)if(o[a]){var f=t.generateTmpVariable();t.pushCode("var "+f+" = ___parser_"+a+"(offset);"),t.pushCode("var "+u+" = "+f+".result; offset = "+f+".offset;"),a!==this.alias&&t.addReference(a)}else{var d=s[a],_=n[a];t.pushCode("var "+u+" = dataView.get"+d+"(offset, "+_+");"),t.pushCode("offset += "+i[a]+";")}else a instanceof e&&(t.pushCode("var "+u+" = {};"),t.pushScope(u),a.generate(t),t.popScope());if(h?t.pushCode(c+"["+u+"."+y+"] = "+u+";"):t.pushCode(c+".push("+u+");"),t.pushCode("}"),"function"==typeof this.options.readUntil){var S=this.options.readUntil,g=t.addImport(S);t.pushCode("while (!"+g+".call(this, "+u+", buffer.subarray(offset)));")}},e.prototype.generateChoiceCase=function(t,p,r){if("string"==typeof r){var a=t.generateVariable(this.varName);if(o[r]){var l=t.generateTmpVariable();t.pushCode("var "+l+" = ___parser_"+r+"(offset);"),t.pushCode(a+" = "+l+".result; offset = "+l+".offset;"),r!==this.alias&&t.addReference(r)}else{var c=s[r],u=n[r];t.pushCode(a+" = dataView.get"+c+"(offset, "+u+");"),t.pushCode("offset += "+i[r])}}else r instanceof e&&(t.pushPath(p),r.generate(t),t.popPath(p))},e.prototype.generateChoice=function(e){var t=this,p=e.generateOption(this.options.tag);this.varName&&e.pushCode(e.generateVariable(this.varName)+" = {};"),e.pushCode("switch("+p+") {"),Object.keys(this.options.choices).forEach((function(p){var r=t.options.choices[parseInt(p,10)];e.pushCode("case "+p+":"),t.generateChoiceCase(e,t.varName,r),e.pushCode("break;")})),e.pushCode("default:"),this.options.defaultChoice?this.generateChoiceCase(e,this.varName,this.options.defaultChoice):e.generateError('"Met undefined tag value " + '+p+' + " at choice"'),e.pushCode("}")},e.prototype.generateNest=function(t){var p=t.generateVariable(this.varName);if(this.options.type instanceof e)this.varName&&t.pushCode(p+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var r=t.generateTmpVariable();t.pushCode("var "+r+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(p+" = "+r+".result; offset = "+r+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}},e.prototype.generateFormatter=function(e,t,p){if("function"==typeof p){var r=e.addImport(p);e.pushCode(t+" = "+r+".call(this, "+t+");")}},e.prototype.generatePointer=function(t){var p=this.options.type,r=t.generateOption(this.options.offset),a=t.generateTmpVariable(),l=t.generateVariable(this.varName);if(t.pushCode("var "+a+" = offset;"),t.pushCode("offset = "+r+";"),this.options.type instanceof e)t.pushCode(l+" = {};"),t.pushPath(this.varName),this.options.type.generate(t),t.popPath(this.varName);else if(o[this.options.type]){var c=t.generateTmpVariable();t.pushCode("var "+c+" = ___parser_"+this.options.type+"(offset);"),t.pushCode(l+" = "+c+".result; offset = "+c+".offset;"),this.options.type!==this.alias&&t.addReference(this.options.type)}else if(Object.keys(i).indexOf(this.options.type)>=0){var u=s[p],y=n[p];t.pushCode(l+" = dataView.get"+u+"(offset, "+y+");"),t.pushCode("offset += "+i[p]+";")}t.pushCode("offset = "+a+";")},e.prototype.generateSaveOffset=function(e){var t=e.generateVariable(this.varName);e.pushCode(t+" = offset")},e}();t.Parser=a},function(e,t,p){(function(e,r){var o=/%[sdj%]/g;t.format=function(e){if(!S(e)){for(var t=[],p=0;p=i)return e;switch(e){case"%s":return String(r[p++]);case"%d":return Number(r[p++]);case"%j":try{return JSON.stringify(r[p++])}catch(e){return"[Circular]"}default:return e}})),a=r[p];p=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),f(p)?r.showHidden=p:p&&t._extend(r,p),g(r.showHidden)&&(r.showHidden=!1),g(r.depth)&&(r.depth=2),g(r.colors)&&(r.colors=!1),g(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),c(r,e,r.depth)}function a(e,t){var p=n.styles[t];return p?"["+n.colors[p][0]+"m"+e+"["+n.colors[p][1]+"m":e}function l(e,t){return e}function c(e,p,r){if(e.customInspect&&p&&I(p.inspect)&&p.inspect!==t.inspect&&(!p.constructor||p.constructor.prototype!==p)){var o=p.inspect(r,e);return S(o)||(o=c(e,o,r)),o}var i=function(e,t){if(g(t))return e.stylize("undefined","undefined");if(S(t)){var p="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(p,"string")}if(_(t))return e.stylize(""+t,"number");if(f(t))return e.stylize(""+t,"boolean");if(d(t))return e.stylize("null","null")}(e,p);if(i)return i;var s=Object.keys(p),n=function(e){var t={};return e.forEach((function(e,p){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(p)),b(p)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return u(p);if(0===s.length){if(I(p)){var a=p.name?": "+p.name:"";return e.stylize("[Function"+a+"]","special")}if(w(p))return e.stylize(RegExp.prototype.toString.call(p),"regexp");if(m(p))return e.stylize(Date.prototype.toString.call(p),"date");if(b(p))return u(p)}var l,E="",v=!1,L=["{","}"];(h(p)&&(v=!0,L=["[","]"]),I(p))&&(E=" [Function"+(p.name?": "+p.name:"")+"]");return w(p)&&(E=" "+RegExp.prototype.toString.call(p)),m(p)&&(E=" "+Date.prototype.toUTCString.call(p)),b(p)&&(E=" "+u(p)),0!==s.length||v&&0!=p.length?r<0?w(p)?e.stylize(RegExp.prototype.toString.call(p),"regexp"):e.stylize("[Object]","special"):(e.seen.push(p),l=v?function(e,t,p,r,o){for(var i=[],s=0,n=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return p[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+p[1];return p[0]+t+" "+e.join(", ")+" "+p[1]}(l,E,L)):L[0]+E+L[1]}function u(e){return"["+Error.prototype.toString.call(e)+"]"}function y(e,t,p,r,o,i){var s,n,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?n=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(n=e.stylize("[Setter]","special")),M(r,o)||(s="["+o+"]"),n||(e.seen.indexOf(a.value)<0?(n=d(p)?c(e,a.value,null):c(e,a.value,p-1)).indexOf("\n")>-1&&(n=i?n.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+n.split("\n").map((function(e){return" "+e})).join("\n")):n=e.stylize("[Circular]","special")),g(s)){if(i&&o.match(/^\d+$/))return n;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+n}function h(e){return Array.isArray(e)}function f(e){return"boolean"==typeof e}function d(e){return null===e}function _(e){return"number"==typeof e}function S(e){return"string"==typeof e}function g(e){return void 0===e}function w(e){return E(e)&&"[object RegExp]"===v(e)}function E(e){return"object"==typeof e&&null!==e}function m(e){return E(e)&&"[object Date]"===v(e)}function b(e){return E(e)&&("[object Error]"===v(e)||e instanceof Error)}function I(e){return"function"==typeof e}function v(e){return Object.prototype.toString.call(e)}function L(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(g(i)&&(i=r.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(i)){var p=r.pid;s[e]=function(){var r=t.format.apply(t,arguments);console.error("%s %d: %s",e,p,r)}}else s[e]=function(){};return s[e]},t.inspect=n,n.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},n.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=h,t.isBoolean=f,t.isNull=d,t.isNullOrUndefined=function(e){return null==e},t.isNumber=_,t.isString=S,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=g,t.isRegExp=w,t.isObject=E,t.isDate=m,t.isError=b,t.isFunction=I,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=p(29);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function U(){var e=new Date,t=[L(e.getHours()),L(e.getMinutes()),L(e.getSeconds())].join(":");return[e.getDate(),T[e.getMonth()],t].join(" ")}function M(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",U(),t.format.apply(t,arguments))},t.inherits=p(6),t._extend=function(e,t){if(!t||!E(t))return e;for(var p=Object.keys(t),r=p.length;r--;)e[p[r]]=t[p[r]];return e}}).call(this,p(5),p(9))},function(e,t,p){"use strict";(function(t,r){var o=p(11);e.exports=w;var i,s=p(16);w.ReadableState=g;p(13).EventEmitter;var n=function(e,t){return e.listeners(t).length},a=p(20),l=p(12).Buffer,c=t.Uint8Array||function(){};var u=p(10);u.inherits=p(6);var y=p(32),h=void 0;h=y&&y.debuglog?y.debuglog("stream"):function(){};var f,d=p(33),_=p(21);u.inherits(w,a);var S=["error","close","destroy","pause","resume"];function g(e,t){e=e||{};var r=t instanceof(i=i||p(7));this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var o=e.highWaterMark,s=e.readableHighWaterMark,n=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:r&&(s||0===s)?s:n,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new d,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(f||(f=p(22).StringDecoder),this.decoder=new f(e.encoding),this.encoding=e.encoding)}function w(e){if(i=i||p(7),!(this instanceof w))return new w(e);this._readableState=new g(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),a.call(this)}function E(e,t,p,r,o){var i,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var p=t.decoder.end();p&&p.length&&(t.buffer.push(p),t.length+=t.objectMode?1:p.length)}t.ended=!0,I(e)}(e,s)):(o||(i=function(e,t){var p;r=t,l.isBuffer(r)||r instanceof c||"string"==typeof t||void 0===t||e.objectMode||(p=new TypeError("Invalid non-string/buffer chunk"));var r;return p}(s,t)),i?e.emit("error",i):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===l.prototype||(t=function(e){return l.from(e)}(t)),r?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):m(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!p?(t=s.decoder.write(t),s.objectMode||0!==t.length?m(e,s,t,!1):L(e,s)):m(e,s,t,!1))):r||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(h("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(v,e):v(e))}function v(e){h("emit readable"),e.emit("readable"),D(e)}function L(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(T,e,t))}function T(e,t){for(var p=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(p=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):p=function(e,t,p){var r;ei.length?i.length:e;if(s===i.length?o+=i:o+=i.slice(0,e),0===(e-=s)){s===i.length?(++r,p.next?t.head=p.next:t.head=t.tail=null):(t.head=p,p.data=i.slice(s));break}++r}return t.length-=r,o}(e,t):function(e,t){var p=l.allocUnsafe(e),r=t.head,o=1;r.data.copy(p),e-=r.data.length;for(;r=r.next;){var i=r.data,s=e>i.length?i.length:e;if(i.copy(p,p.length-e,0,s),0===(e-=s)){s===i.length?(++o,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(s));break}++o}return t.length-=o,p}(e,t);return r}(e,t.buffer,t.decoder),p);var p}function G(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function C(e,t){for(var p=0,r=e.length;p=t.highWaterMark||t.ended))return h("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?G(this):I(this),null;if(0===(e=b(e,t))&&t.ended)return 0===t.length&&G(this),null;var r,o=t.needReadable;return h("need readable",o),(0===t.length||t.length-e0?O(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),p!==e&&t.ended&&G(this)),null!==r&&this.emit("data",r),r},w.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},w.prototype.pipe=function(e,t){var p=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,h("pipe count=%d opts=%j",i.pipesCount,t);var a=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?c:w;function l(t,r){h("onunpipe"),t===p&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,h("cleanup"),e.removeListener("close",S),e.removeListener("finish",g),e.removeListener("drain",u),e.removeListener("error",_),e.removeListener("unpipe",l),p.removeListener("end",c),p.removeListener("end",w),p.removeListener("data",d),y=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}function c(){h("onend"),e.end()}i.endEmitted?o.nextTick(a):p.once("end",a),e.on("unpipe",l);var u=function(e){return function(){var t=e._readableState;h("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&n(e,"data")&&(t.flowing=!0,D(e))}}(p);e.on("drain",u);var y=!1;var f=!1;function d(t){h("ondata"),f=!1,!1!==e.write(t)||f||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==C(i.pipes,e))&&!y&&(h("false write response, pause",p._readableState.awaitDrain),p._readableState.awaitDrain++,f=!0),p.pause())}function _(t){h("onerror",t),w(),e.removeListener("error",_),0===n(e,"error")&&e.emit("error",t)}function S(){e.removeListener("finish",g),w()}function g(){h("onfinish"),e.removeListener("close",S),w()}function w(){h("unpipe"),p.unpipe(e)}return p.on("data",d),function(e,t,p){if("function"==typeof e.prependListener)return e.prependListener(t,p);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(p):e._events[t]=[p,e._events[t]]:e.on(t,p)}(e,"error",_),e.once("close",S),e.once("finish",g),e.emit("pipe",p),i.flowing||(h("pipe resume"),p.resume()),e},w.prototype.unpipe=function(e){var t=this._readableState,p={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,p)),this;if(!e){var r=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function n(e){var t=this.lastTotal-this.lastNeed,p=function(e,t,p){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==p?p:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function a(e,t){if((e.length-t)%2==0){var p=e.toString("utf16le",t);if(p){var r=p.charCodeAt(p.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],p.slice(0,-1)}return p}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function l(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var p=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,p)}return t}function c(e,t){var p=(e.length-t)%3;return 0===p?e.toString("base64",t):(this.lastNeed=3-p,this.lastTotal=3,1===p?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-p))}function u(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function y(e){return e.toString(this.encoding)}function h(e){return e&&e.length?this.write(e):""}t.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return"";var t,p;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";p=this.lastNeed,this.lastNeed=0}else p=0;return p=0)return o>0&&(e.lastNeed=o-1),o;if(--r=0)return o>0&&(e.lastNeed=o-2),o;if(--r=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=p;var r=e.length-(p-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,p){"use strict";e.exports=s;var r=p(7),o=p(10);function i(e,t){var p=this._transformState;p.transforming=!1;var r=p.writecb;if(!r)return this.emit("error",new Error("write callback called multiple times"));p.writechunk=null,p.writecb=null,null!=t&&this.push(t),r(e);var o=this._readableState;o.reading=!1,(o.needReadable||o.length>8&255^255&p],t&=65535;return t}r.exports={preambleByte:85,crc16:S,sbpIdTable:h,sbpMessageTypesTable:f,decode:function(e){var t=d.parse(e),p=h[t.msg_type];return void 0===p?(console.log("Unknown message type: ",t.msg_type),new s(t)):new p(t)},dispatch:function(t,p,o){var i,s,n=new e(0);if(void 0===o&&"function"==typeof p?i=p:(i=o,s=p),s&&!Array.isArray(s)&&-1===["function","number"].indexOf(typeof s))throw l("dispatch: messageWhitelist must be function, number, or array");var a=function(p){t.pause();try{if((n=e.concat([n,p])).length<2)return;var o=function(){var e,t,p,o,i,a,l;for(l=0;ln.length)throw new c;e=n.slice(l+1,l+6),p=n.readUInt16LE(l+1),_=n.readUInt16LE(l+3),o=n.readUInt8(l+5);var y=s&&Array.isArray(s)&&-1!==s.indexOf(p),h=s&&"number"==typeof s&&s&p,f=s&&"function"==typeof s&&s(p);if(s&&!(y||h||f))return n=n.slice(l+6+o+2),null;if(l+8+o>n.length)throw new c;a=S(n.slice(l+6,l+6+o),S(e)),i=n.readUInt16LE(l+6+o);var d=n.slice(l,l+6+o+2);if(i===a)return n=n.slice(l+6+o+2),[r.exports.decode(d),d];throw n=n.slice(l+1),new u}();if(null===o)return;var l=o[0],y=o[1];i(null,l,y)}catch(e){if(!(e instanceof c||e instanceof u))throw e}finally{t.resume(),n.length>0&&setTimeout((function(){a(new e(0))}),0)}};t.on("data",a)}},function(e){var p={function:!0,object:!0},i=p[typeof window]&&window||this,s=p[typeof t]&&t&&!t.nodeType&&t,n=p[typeof r]&&r&&!r.nodeType&&r,a=s&&n&&"object"==typeof o&&o;!a||a.global!==a&&a.window!==a&&a.self!==a||(i=a),i.SBP=e}(r.exports)}).call(this,p(8).Buffer,p(27)(e),p(5))},function(e,t,p){"use strict";t.byteLength=function(e){var t=l(e),p=t[0],r=t[1];return 3*(p+r)/4-r},t.toByteArray=function(e){for(var t,p=l(e),r=p[0],s=p[1],n=new i(function(e,t,p){return 3*(t+p)/4-p}(0,r,s)),a=0,c=s>0?r-4:r,u=0;u>16&255,n[a++]=t>>8&255,n[a++]=255&t;2===s&&(t=o[e.charCodeAt(u)]<<2|o[e.charCodeAt(u+1)]>>4,n[a++]=255&t);1===s&&(t=o[e.charCodeAt(u)]<<10|o[e.charCodeAt(u+1)]<<4|o[e.charCodeAt(u+2)]>>2,n[a++]=t>>8&255,n[a++]=255&t);return n},t.fromByteArray=function(e){for(var t,p=e.length,o=p%3,i=[],s=0,n=p-o;sn?n:s+16383));1===o?(t=e[p-1],i.push(r[t>>2]+r[t<<4&63]+"==")):2===o&&(t=(e[p-2]<<8)+e[p-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+"="));return i.join("")};for(var r=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=0,a=s.length;n0)throw new Error("Invalid string. Length must be a multiple of 4");var p=e.indexOf("=");return-1===p&&(p=t),[p,p===t?0:4-p%4]}function c(e,t,p){for(var o,i,s=[],n=t;n>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,p,r,o){var i,s,n=8*o-r-1,a=(1<>1,c=-7,u=p?o-1:0,y=p?-1:1,h=e[t+u];for(u+=y,i=h&(1<<-c)-1,h>>=-c,c+=n;c>0;i=256*i+e[t+u],u+=y,c-=8);for(s=i&(1<<-c)-1,i>>=-c,c+=r;c>0;s=256*s+e[t+u],u+=y,c-=8);if(0===i)i=1-l;else{if(i===a)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,r),i-=l}return(h?-1:1)*s*Math.pow(2,i-r)},t.write=function(e,t,p,r,o,i){var s,n,a,l=8*i-o-1,c=(1<>1,y=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:i-1,f=r?1:-1,d=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(n=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+u>=1?y/a:y*Math.pow(2,1-u))*a>=2&&(s++,a/=2),s+u>=c?(n=0,s=c):s+u>=1?(n=(t*a-1)*Math.pow(2,o),s+=u):(n=t*Math.pow(2,u-1)*Math.pow(2,o),s=0));o>=8;e[p+h]=255&n,h+=f,n/=256,o-=8);for(s=s<0;e[p+h]=255&s,h+=f,s/=256,l-=8);e[p+h-f]|=128*d}},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,p){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Context=void 0;var r=function(){function e(e){this.code="",this.scopes=[["vars"]],this.bitFields=[],this.tmpVariableCount=0,this.references={},this.imports=[],this.reverseImports=new Map,this.importPath=e}return e.prototype.generateVariable=function(e){var t=[],p=this.scopes[this.scopes.length-1];return t.push.apply(t,p),e&&t.push(e),t.join(".")},e.prototype.generateOption=function(e){switch(typeof e){case"number":return e.toString();case"string":return this.generateVariable(e);case"function":return this.addImport(e)+".call("+this.generateVariable()+", vars)"}},e.prototype.generateError=function(e){this.pushCode("throw new Error("+e+");")},e.prototype.generateTmpVariable=function(){return"$tmp"+this.tmpVariableCount++},e.prototype.pushCode=function(e){this.code+=e+"\n"},e.prototype.pushPath=function(e){e&&this.scopes[this.scopes.length-1].push(e)},e.prototype.popPath=function(e){e&&this.scopes[this.scopes.length-1].pop()},e.prototype.pushScope=function(e){this.scopes.push([e])},e.prototype.popScope=function(){this.scopes.pop()},e.prototype.addImport=function(e){if(!this.importPath)return"("+e+")";var t=this.reverseImports.get(e);return t||(t=this.imports.push(e)-1,this.reverseImports.set(e,t)),this.importPath+"["+t+"]"},e.prototype.addReference=function(e){this.references[e]||(this.references[e]={resolved:!1,requested:!1})},e.prototype.markResolved=function(e){this.references[e].resolved=!0},e.prototype.markRequested=function(e){var t=this;e.forEach((function(e){t.references[e].requested=!0}))},e.prototype.getUnresolvedReferences=function(){var e=this.references;return Object.keys(this.references).filter((function(t){return!e[t].resolved&&!e[t].requested}))},e}();t.Context=r},function(e,t){e.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t,p){(function(e){function p(e,t){for(var p=0,r=e.length-1;r>=0;r--){var o=e[r];"."===o?e.splice(r,1):".."===o?(e.splice(r,1),p++):p&&(e.splice(r,1),p--)}if(t)for(;p--;p)e.unshift("..");return e}var r=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,o=function(e){return r.exec(e).slice(1)};function i(e,t){if(e.filter)return e.filter(t);for(var p=[],r=0;r=-1&&!r;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,r="/"===s.charAt(0))}return(r?"/":"")+(t=p(i(t.split("/"),(function(e){return!!e})),!r).join("/"))||"."},t.normalize=function(e){var r=t.isAbsolute(e),o="/"===s(e,-1);return(e=p(i(e.split("/"),(function(e){return!!e})),!r).join("/"))||r||(e="."),e&&o&&(e+="/"),(r?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(i(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,p){function r(e){for(var t=0;t=0&&""===e[p];p--);return t>p?[]:e.slice(t,p-t+1)}e=t.resolve(e).substr(1),p=t.resolve(p).substr(1);for(var o=r(e.split("/")),i=r(p.split("/")),s=Math.min(o.length,i.length),n=s,a=0;a0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,p=""+t.data;t=t.next;)p+=e+t.data;return p},e.prototype.concat=function(e){if(0===this.length)return r.alloc(0);if(1===this.length)return this.head.data;for(var t=r.allocUnsafe(e>>>0),p=this.head,o=0;p;)i(p.data,t,o),o+=p.data.length,p=p.next;return t},e}(),o&&o.inspect&&o.inspect.custom&&(e.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,p){(function(e){var r=void 0!==e&&e||"undefined"!=typeof self&&self||window,o=Function.prototype.apply;function i(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new i(o.call(setTimeout,r,arguments),clearTimeout)},t.setInterval=function(){return new i(o.call(setInterval,r,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},i.prototype.unref=i.prototype.ref=function(){},i.prototype.close=function(){this._clearFn.call(r,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},p(36),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,p(5))},function(e,t,p){(function(e,t){!function(e,p){"use strict";if(!e.setImmediate){var r,o,i,s,n,a=1,l={},c=!1,u=e.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(e);y=y&&y.setTimeout?y:e,"[object process]"==={}.toString.call(e.process)?r=function(e){t.nextTick((function(){f(e)}))}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,p=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=p,t}}()?e.MessageChannel?((i=new MessageChannel).port1.onmessage=function(e){f(e.data)},r=function(e){i.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,r=function(e){var t=u.createElement("script");t.onreadystatechange=function(){f(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):r=function(e){setTimeout(f,0,e)}:(s="setImmediate$"+Math.random()+"$",n=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&f(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",n,!1):e.attachEvent("onmessage",n),r=function(t){e.postMessage(s+t,"*")}),y.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),p=0;p * @license MIT */ -function r(e,t){if(e===t)return 0;for(var p=e.length,r=t.length,o=0,i=Math.min(p,r);o=0;l--)if(u[l]!==c[l])return!1;for(l=u.length-1;l>=0;l--)if(a=u[l],!g(e[a],t[a],p,r))return!1;return!0}(e,t,p,s))}return p?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,p,r){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof p&&(r=p,p=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(p&&p.name?" ("+p.name+").":".")+(r?" "+r:"."),e&&!o&&_(o,p,"Missing expected exception"+r);var s="string"==typeof r,n=!e&&o&&!p;if((!e&&i.isError(o)&&s&&E(o,p)||n)&&_(o,p,"Got unwanted exception"+r),e&&o&&p&&!E(o,p)||!e&&o)throw o}c.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 p=new Error;if(p.stack){var r=p.stack,o=h(t),i=r.indexOf("\n"+o);if(i>=0){var s=r.indexOf("\n",i+1);r=r.substring(s+1)}this.stack=r}}},i.inherits(c.AssertionError,Error),c.fail=_,c.ok=S,c.equal=function(e,t,p){e!=t&&_(e,t,p,"==",c.equal)},c.notEqual=function(e,t,p){e==t&&_(e,t,p,"!=",c.notEqual)},c.deepEqual=function(e,t,p){g(e,t,!1)||_(e,t,p,"deepEqual",c.deepEqual)},c.deepStrictEqual=function(e,t,p){g(e,t,!0)||_(e,t,p,"deepStrictEqual",c.deepStrictEqual)},c.notDeepEqual=function(e,t,p){g(e,t,!1)&&_(e,t,p,"notDeepEqual",c.notDeepEqual)},c.notDeepStrictEqual=function e(t,p,r){g(t,p,!0)&&_(t,p,r,"notDeepStrictEqual",e)},c.strictEqual=function(e,t,p){e!==t&&_(e,t,p,"===",c.strictEqual)},c.notStrictEqual=function(e,t,p){e===t&&_(e,t,p,"!==",c.notStrictEqual)},c.throws=function(e,t,p){m(!0,e,t,p)},c.doesNotThrow=function(e,t,p){m(!1,e,t,p)},c.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var p in e)s.call(e,p)&&t.push(p);return t}}).call(this,p(5))},function(e,t,p){var r;!function(p){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 p=parseInt(e,t||10);return this._low=65535&p,this._high=p>>>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,p=t>>>16;return p+=this._high+e._high,this._low=65535&t,this._high=65535&p,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,p,r=this._high,o=this._low,i=e._high,s=e._low;return t=(p=o*s)>>>16,t+=r*s,t&=65535,t+=o*i,this._low=65535&p,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(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._low=0,this._high=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=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===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r;!function(p){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,p,r){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,p,r)}function n(e,t,p,r){return void 0===p?(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|p,this._a48=0|r,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 p=o[t]||new s(Math.pow(t,5)),r=0,i=e.length;r=0&&(p.div(t),r[o]=p.remainder.toNumber().toString(e),p.gt(t));o--);return r[o-1]=p.toNumber().toString(e),r.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,p=t>>>16,r=(p+=this._a16+e._a16)>>>16,o=(r+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&p,this._a32=65535&r,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,p=this._a16,r=this._a32,o=this._a48,i=e._a00,s=e._a16,n=e._a32,a=t*i,l=a>>>16,u=(l+=t*s)>>>16;l&=65535,u+=(l+=p*i)>>>16;var c=(u+=t*n)>>>16;return u&=65535,c+=(u+=p*s)>>>16,u&=65535,c+=(u+=r*i)>>>16,c+=t*e._a48,c&=65535,c+=p*n,c&=65535,c+=r*s,c&=65535,c+=o*i,this._a00=65535&a,this._a16=65535&l,this._a32=65535&u,this._a48=65535&c,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(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=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 p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p<>>32-e,i=r<>>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 p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p>>>e|r<<32-e,i=r>>>e|p<<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===(r=function(){return s}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=(p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_ACQ_RESULT_DEP_A",u.prototype.msg_type=21,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").floatle("snr").floatle("cp").floatle("cf").uint8("prn"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["snr","writeFloatLE",4]),u.prototype.fieldSpec.push(["cp","writeFloatLE",4]),u.prototype.fieldSpec.push(["cf","writeFloatLE",4]),u.prototype.fieldSpec.push(["prn","writeUInt8",1]);var c=function(e,t){return r.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="AcqSvProfile",c.prototype.constructor=c,c.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"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["job_type","writeUInt8",1]),c.prototype.fieldSpec.push(["status","writeUInt8",1]),c.prototype.fieldSpec.push(["cn0","writeUInt16LE",2]),c.prototype.fieldSpec.push(["int_time","writeUInt8",1]),c.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["bin_width","writeUInt16LE",2]),c.prototype.fieldSpec.push(["timestamp","writeUInt32LE",4]),c.prototype.fieldSpec.push(["time_spent","writeUInt32LE",4]),c.prototype.fieldSpec.push(["cf_min","writeInt32LE",4]),c.prototype.fieldSpec.push(["cf_max","writeInt32LE",4]),c.prototype.fieldSpec.push(["cf","writeInt32LE",4]),c.prototype.fieldSpec.push(["cp","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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:c.prototype.parser,readUntil:"eof"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["acq_sv_profile","array",c.prototype.fieldSpec,function(){return this.fields.array.length},null]);var f=function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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:u,MsgAcqResultDepA:u,AcqSvProfile:c,AcqSvProfileDep:y,46:h,MsgAcqSvProfile:h,30:f,MsgAcqSvProfileDep:f}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",u.prototype.msg_type=176,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").array("handshake",{type:"uint8",readUntil:"eof"}),u.prototype.fieldSpec=[],u.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:u,MsgBootloaderHandshakeDepA:u}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_REQ",u.prototype.msg_type=173,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sequence").uint32("offset").string("filename",{greedy:!0}).array("data",{type:"uint8",readUntil:"eof"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]),u.prototype.fieldSpec.push(["offset","writeUInt32LE",4]),u.prototype.fieldSpec.push(["filename","string",null]),u.prototype.fieldSpec.push(["data","array","writeUInt8",function(){return 1},null]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_FILEIO_WRITE_RESP",c.prototype.msg_type=171,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sequence"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sequence","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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:u,MsgFileioWriteReq:u,171:c,MsgFileioWriteResp:c,4097:y,MsgFileioConfigReq:y,4098:h,MsgFileioConfigResp:h}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_LOCK_SECTOR",u.prototype.msg_type=227,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("sector"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_STM_FLASH_UNLOCK_SECTOR",c.prototype.msg_type=228,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("sector"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["sector","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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:u,MsgStmFlashLockSector:u,228:c,MsgStmFlashUnlockSector:c,232:y,MsgStmUniqueIdReq:y,229:h,MsgStmUniqueIdResp:h,243:f,MsgM25FlashWriteStatus:f}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal,p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),s=p(0).SvId,n=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_HIGH_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_HIGH_LEVEL",n.prototype.msg_type=3001,n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).nest("corr_time",{type:i.prototype.parser}).uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("use_gps_sat").uint8("use_gal_sat").uint8("use_bds_sat").array("reserved",{length:6,type:"uint8"}).uint8("use_tropo_grid_points").uint8("use_iono_grid_points").uint8("use_iono_tile_sat_los").uint8("use_iono_grid_point_sat_los"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),n.prototype.fieldSpec.push(["corr_time",i.prototype.fieldSpec]),n.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),n.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),n.prototype.fieldSpec.push(["use_gps_sat","writeUInt8",1]),n.prototype.fieldSpec.push(["use_gal_sat","writeUInt8",1]),n.prototype.fieldSpec.push(["use_bds_sat","writeUInt8",1]),n.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},6]),n.prototype.fieldSpec.push(["use_tropo_grid_points","writeUInt8",1]),n.prototype.fieldSpec.push(["use_iono_grid_points","writeUInt8",1]),n.prototype.fieldSpec.push(["use_iono_tile_sat_los","writeUInt8",1]),n.prototype.fieldSpec.push(["use_iono_grid_point_sat_los","writeUInt8",1]);var a=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_SATELLITES",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_SATELLITES",a.prototype.msg_type=3005,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint8("chain_id").uint8("const_id").uint8("n_faulty_sats").array("faulty_sats",{type:"uint8",length:"n_faulty_sats"}),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),a.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),a.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),a.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),a.prototype.fieldSpec.push(["const_id","writeUInt8",1]),a.prototype.fieldSpec.push(["n_faulty_sats","writeUInt8",1]),a.prototype.fieldSpec.push(["faulty_sats","array","writeUInt8",function(){return 1},"n_faulty_sats"]);var l=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",l.prototype.msg_type=3011,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),l.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),l.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),l.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),l.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),l.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),l.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),l.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);var u=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",u.prototype.msg_type=3015,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),u.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),u.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),u.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),u.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),u.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),u.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),u.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",c.prototype.msg_type=3021,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),c.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),c.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),c.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),c.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),c.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),c.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),c.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",y.prototype.msg_type=3025,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint16("grid_point_id").uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),y.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),y.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),y.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),y.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),y.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),y.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),y.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),y.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),y.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]),e.exports={3001:n,MsgSsrFlagHighLevel:n,3005:a,MsgSsrFlagSatellites:a,3011:l,MsgSsrFlagTropoGridPoints:l,3015:u,MsgSsrFlagIonoGridPoints:u,3021:c,MsgSsrFlagIonoTileSatLos:c,3025:y,MsgSsrFlagIonoGridPointSatLos:y}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_SOCKET_USAGE",u.prototype.msg_type=32517,u.prototype.constructor=u,u.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"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["avg_queue_depth","writeUInt32LE",4]),u.prototype.fieldSpec.push(["max_queue_depth","writeUInt32LE",4]),u.prototype.fieldSpec.push(["socket_state_counts","array","writeUInt16LE",function(){return 2},16]),u.prototype.fieldSpec.push(["socket_type_counts","array","writeUInt16LE",function(){return 2},16]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_LINUX_PROCESS_FD_COUNT",c.prototype.msg_type=32518,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint8("index").uint16("pid").uint16("fd_count").string("cmdline",{greedy:!0}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt8",1]),c.prototype.fieldSpec.push(["pid","writeUInt16LE",2]),c.prototype.fieldSpec.push(["fd_count","writeUInt16LE",2]),c.prototype.fieldSpec.push(["cmdline","string",null]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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:u,MsgLinuxSocketUsage:u,32518:c,MsgLinuxProcessFdCount:c,32519:y,MsgLinuxProcessFdSummary:y,32520:h,MsgLinuxCpuState:h,32521:f,MsgLinuxMemState:f,32522:d,MsgLinuxSysState:d}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GPS_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UTC_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF",u.prototype.msg_type=521,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("tow").doublele("x").doublele("y").doublele("z").uint16("accuracy").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(["accuracy","writeUInt16LE",2]),u.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),u.prototype.fieldSpec.push(["flags","writeUInt8",1]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV",c.prototype.msg_type=532,c.prototype.constructor=c,c.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"),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(["cov_x_x","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),c.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),c.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),c.prototype.fieldSpec.push(["flags","writeUInt8",1]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="EstimatedHorizontalErrorEllipse",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_ACC",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",I.prototype.msg_type=564,I.prototype.constructor=I,I.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"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeDoubleLE",8]),I.prototype.fieldSpec.push(["y","writeDoubleLE",8]),I.prototype.fieldSpec.push(["z","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_GNSS",v.prototype.msg_type=554,v.prototype.constructor=v,v.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"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),v.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),v.prototype.fieldSpec.push(["height","writeDoubleLE",8]),v.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_GNSS",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_COG",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.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:u,MsgPosEcef:u,532:c,MsgPosEcefCov:c,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:I,MsgPosEcefCovGnss:I,554:v,MsgPosLlhGnss:v,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,u=p(0).GPSTimeSec,c=(p(0).SvId,function(e,t){return r.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(r.prototype)).messageType="ObservationHeader",c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("t",{type:a.prototype.parser}).uint8("n_obs"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["t",a.prototype.fieldSpec]),c.prototype.fieldSpec.push(["n_obs","writeUInt8",1]);var y=function(e,t){return r.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.prototype)).messageType="MSG_OBS",d.prototype.msg_type=74,d.prototype.constructor=d,d.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("obs",{type:h.prototype.parser,readUntil:"eof"}),d.prototype.fieldSpec=[],d.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),d.prototype.fieldSpec.push(["obs","array",h.prototype.fieldSpec,function(){return this.fields.array.length},null]);var _=function(e,t){return r.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContent",g.prototype.constructor=g,g.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:u.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",u.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 r.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.prototype)).messageType="EphemerisCommonContentDepB",w.prototype.constructor=w,w.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toe",{type:u.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",u.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 r.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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:u.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",u.prototype.fieldSpec]),b.prototype.fieldSpec.push(["iode","writeUInt8",1]),b.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var I=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS",I.prototype.msg_type=138,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:u.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",u.prototype.fieldSpec]),I.prototype.fieldSpec.push(["iode","writeUInt8",1]),I.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_QZSS",v.prototype.msg_type=142,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:u.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",u.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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:u.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",u.prototype.fieldSpec]),L.prototype.fieldSpec.push(["iode","writeUInt8",1]),L.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var T=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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:u.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",u.prototype.fieldSpec]),T.prototype.fieldSpec.push(["iode","writeUInt16LE",2]),T.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var U=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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:u.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",u.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.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 r.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.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 r.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(r.prototype)).messageType="MSG_IONO",Q.prototype.msg_type=144,Q.prototype.constructor=Q,Q.prototype.parser=(new o).endianess("little").nest("t_nmct",{type:u.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",u.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 r.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(r.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:u.prototype.parser}).uint32("l2c_mask"),K.prototype.fieldSpec=[],K.prototype.fieldSpec.push(["t_nmct",u.prototype.fieldSpec]),K.prototype.fieldSpec.push(["l2c_mask","writeUInt32LE",4]);var X=function(e,t){return r.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(r.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:u.prototype.parser}).nest("gc",{type:X.prototype.parser}),J.prototype.fieldSpec=[],J.prototype.fieldSpec.push(["t_nmct",u.prototype.fieldSpec]),J.prototype.fieldSpec.push(["gc",X.prototype.fieldSpec]);var $=function(e,t){return r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(r.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:u.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",u.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 r.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(r.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:u.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",u.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 r.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContent",te.prototype.constructor=te,te.prototype.parser=(new o).endianess("little").nest("sid",{type:s.prototype.parser}).nest("toa",{type:u.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",u.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 pe=function(e,t){return r.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContentDep",pe.prototype.constructor=pe,pe.prototype.parser=(new o).endianess("little").nest("sid",{type:n.prototype.parser}).nest("toa",{type:u.prototype.parser}).doublele("ura").uint32("fit_interval").uint8("valid").uint8("health_bits"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["toa",u.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),pe.prototype.fieldSpec.push(["valid","writeUInt8",1]),pe.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var re=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GPS_DEP",re.prototype.msg_type=112,re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("common",{type:pe.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["common",pe.prototype.fieldSpec]),re.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),re.prototype.fieldSpec.push(["w","writeDoubleLE",8]),re.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var oe=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(r.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:pe.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",pe.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 r.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(r.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 r.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(r.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 ue=function(e,t){return r.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(ue.prototype=Object.create(r.prototype)).messageType="MSG_OSR",ue.prototype.msg_type=1600,ue.prototype.constructor=ue,ue.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).array("obs",{type:f.prototype.parser,readUntil:"eof"}),ue.prototype.fieldSpec=[],ue.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),ue.prototype.fieldSpec.push(["obs","array",f.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={ObservationHeader:c,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:I,MsgEphemerisGps:I,142:v,MsgEphemerisQzss:v,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:pe,112:re,MsgAlmanacGpsDep:re,114:oe,MsgAlmanacGps:oe,113:ie,MsgAlmanacGloDep:ie,115:se,MsgAlmanacGlo:se,117:ne,MsgGloBiases:ne,SvAzEl:ae,151:le,MsgSvAzEl:le,1600:ue,MsgOsr:ue}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=p(0).GPSTime,a=p(0).GPSTimeDep,l=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC",l.prototype.msg_type=105,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little"),l.prototype.fieldSpec=[];var u=function(e,t){return r.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SET_TIME",u.prototype.msg_type=104,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little"),u.prototype.fieldSpec=[];var c=function(e,t){return r.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_RESET",c.prototype.msg_type=182,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint32("flags"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["flags","writeUInt32LE",4]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_INIT_BASE_DEP",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_IAR_STATE",I.prototype.msg_type=25,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("num_hyps"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_MASK_SATELLITE",v.prototype.msg_type=43,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["mask","writeUInt8",1]),v.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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:u,MsgSetTime:u,182:c,MsgReset:c,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:I,MsgIarState:I,43:v,MsgMaskSatellite:v,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",u.prototype.msg_type=162,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint16("index"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["index","writeUInt16LE",2]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",c.prototype.msg_type=167,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("index").string("setting",{greedy:!0}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["index","writeUInt16LE",2]),c.prototype.fieldSpec.push(["setting","string",null]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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:u,MsgSettingsReadByIndexReq:u,167:c,MsgSettingsReadByIndexResp:c,166:y,MsgSettingsReadByIndexDone:y,174:h,MsgSettingsRegister:h,431:f,MsgSettingsRegisterResp:f}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="SolutionInputType",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SOLN_META_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SOLN_META",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="GNSSInputType",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="IMUInputType",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="OdoInputType",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="OdoInputType",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint8("flags"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["flags","writeUInt8",1]),e.exports={SolutionInputType:i,65295:s,MsgSolnMetaDepA:s,65294:n,MsgSolnMeta:n,GNSSInputType:a,IMUInputType:l,OdoInputType:u}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),n=p(0).SvId,a=function(e,t){return r.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="STECHeader",u.prototype.constructor=u,u.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"),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","writeUInt8",1]),u.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),u.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),u.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var c=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeader",c.prototype.constructor=c,c.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"),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","writeUInt16LE",2]),c.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),c.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),c.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),c.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var y=function(e,t){return r.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="TroposphericDelayCorrectionNoStd",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECResidualNoStd",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP",E.prototype.msg_type=1531,E.prototype.constructor=E,E.prototype.parser=(new o).endianess("little").nest("header",{type:u.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),E.prototype.fieldSpec=[],E.prototype.fieldSpec.push(["header",u.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 r.call(this,e),this.messageType="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="BoundsHeader",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),m.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),m.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),m.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),m.prototype.fieldSpec.push(["sol_id","writeUInt8",1]);var b=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION",b.prototype.msg_type=1533,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("n_sats").array("stec_sat_list",{type:y.prototype.parser,length:"n_sats"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),b.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var I=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",I.prototype.msg_type=1532,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").nest("header",{type:c.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["header",c.prototype.fieldSpec]),I.prototype.fieldSpec.push(["index","writeUInt16LE",2]),I.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),I.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return r.call(this,e),this.messageType="STECSatElementIntegrity",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="STECSatElementIntegrity",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("stec_residual",{type:_.prototype.parser}).uint8("stec_bound_mu").uint8("stec_bound_sig").uint8("stec_bound_mu_dot").uint8("stec_bound_sig_dot"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["stec_residual",_.prototype.fieldSpec]),v.prototype.fieldSpec.push(["stec_bound_mu","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_mu_dot","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig_dot","writeUInt8",1]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",L.prototype.msg_type=1534,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("tropo_qi").uint16("grid_point_id").nest("tropo_delay_correction",{type:f.prototype.parser}).uint8("tropo_bound_mu").uint8("tropo_bound_sig").uint8("n_sats").array("stec_sat_list",{type:v.prototype.parser,length:"n_sats"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),L.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),L.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_qi","writeUInt8",1]),L.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tropo_bound_mu","writeUInt8",1]),L.prototype.fieldSpec.push(["tropo_bound_sig","writeUInt8",1]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_sat_list","array",v.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var T=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP",T.prototype.msg_type=1526,T.prototype.constructor=T,T.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"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),T.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),T.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),T.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var U=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION",U.prototype.msg_type=1527,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint8("ssr_sol_id").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"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),U.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),U.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),U.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),U.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var M=function(e,t){return r.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="SatelliteAPC",M.prototype.constructor=M,M.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"}),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),M.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),M.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),M.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),M.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);var D=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_SSR_SATELLITE_APC",D.prototype.msg_type=1540,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").array("apc",{type:M.prototype.parser,readUntil:"eof"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["apc","array",M.prototype.fieldSpec,function(){return this.fields.array.length},null]);var O=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",O.prototype.msg_type=1500,O.prototype.constructor=O,O.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"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),O.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),O.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),O.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),O.prototype.fieldSpec.push(["iod","writeUInt8",1]),O.prototype.fieldSpec.push(["radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["along","writeInt32LE",4]),O.prototype.fieldSpec.push(["cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["c0","writeInt32LE",4]),O.prototype.fieldSpec.push(["c1","writeInt32LE",4]),O.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var G=function(e,t){return r.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="STECHeaderDepA",G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),G.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),G.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),G.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),G.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var A=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeaderDepA",A.prototype.constructor=A,A.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"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),A.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),A.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),A.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),A.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),A.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var C=function(e,t){return r.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="GridDefinitionHeaderDepA",C.prototype.constructor=C,C.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"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),C.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),C.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);var R=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",R.prototype.msg_type=1515,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("header",{type:G.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["header",G.prototype.fieldSpec]),R.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var P=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",P.prototype.msg_type=1520,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),P.prototype.fieldSpec.push(["index","writeUInt16LE",2]),P.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),P.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);var N=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",N.prototype.msg_type=1530,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),N.prototype.fieldSpec.push(["index","writeUInt16LE",2]),N.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),N.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var j=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",j.prototype.msg_type=1525,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),j.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]);var x=function(e,t){return r.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="OrbitClockBound",x.prototype.constructor=x,x.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"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);var k=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",k.prototype.msg_type=1502,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:x.prototype.parser,length:"n_sats"}),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),k.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),k.prototype.fieldSpec.push(["const_id","writeUInt8",1]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["orbit_clock_bounds","array",x.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var F=function(e,t){return r.call(this,e),this.messageType="CodePhaseBiasesSatSig",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="CodePhaseBiasesSatSig",F.prototype.constructor=F,F.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"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),F.prototype.fieldSpec.push(["signal_id","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_sig","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_sig","writeUInt8",1]);var B=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",B.prototype.msg_type=1516,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats_signals").array("satellites_signals",{type:F.prototype.parser,length:"n_sats_signals"}),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),B.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),B.prototype.fieldSpec.push(["const_id","writeUInt8",1]),B.prototype.fieldSpec.push(["n_sats_signals","writeUInt8",1]),B.prototype.fieldSpec.push(["satellites_signals","array",F.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats_signals"]);var q=function(e,t){return r.call(this,e),this.messageType="OrbitClockBoundDegradation",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="OrbitClockBoundDegradation",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint8("orb_radial_bound_mu_dot").uint8("orb_along_bound_mu_dot").uint8("orb_cross_bound_mu_dot").uint8("orb_radial_bound_sig_dot").uint8("orb_along_bound_sig_dot").uint8("orb_cross_bound_sig_dot").uint8("clock_bound_mu_dot").uint8("clock_bound_sig_dot"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["orb_radial_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_radial_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_sig_dot","writeUInt8",1]);var z=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",z.prototype.msg_type=1503,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint64("sat_bitmask").nest("orbit_clock_bounds_degradation",{type:q.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),z.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),z.prototype.fieldSpec.push(["const_id","writeUInt8",1]),z.prototype.fieldSpec.push(["sat_bitmask","writeUInt64LE",8]),z.prototype.fieldSpec.push(["orbit_clock_bounds_degradation",q.prototype.fieldSpec]),e.exports={CodeBiasesContent:a,PhaseBiasesContent:l,STECHeader:u,GriddedCorrectionHeader:c,STECSatElement:y,TroposphericDelayCorrectionNoStd:h,TroposphericDelayCorrection:f,STECResidualNoStd:d,STECResidual:_,1501:S,MsgSsrOrbitClock:S,1505:g,MsgSsrCodeBiases:g,1510:w,MsgSsrPhaseBiases:w,1531:E,MsgSsrStecCorrectionDep:E,BoundsHeader:m,1533:b,MsgSsrStecCorrection:b,1532:I,MsgSsrGriddedCorrection:I,STECSatElementIntegrity:v,1534:L,MsgSsrGriddedCorrectionBounds:L,1526:T,MsgSsrTileDefinitionDep:T,1527:U,MsgSsrTileDefinition:U,SatelliteAPC:M,1540:D,MsgSsrSatelliteApc:D,1500:O,MsgSsrOrbitClockDepA:O,STECHeaderDepA:G,GriddedCorrectionHeaderDepA:A,GridDefinitionHeaderDepA:C,1515:R,MsgSsrStecCorrectionDepA:R,1520:P,MsgSsrGriddedCorrectionNoStdDepA:P,1530:N,MsgSsrGriddedCorrectionDepA:N,1525:j,MsgSsrGridDefinitionDepA:j,OrbitClockBound:x,1502:k,MsgSsrOrbitClockBounds:k,CodePhaseBiasesSatSig:F,1516:B,MsgSsrCodePhaseBiasesBounds:B,OrbitClockBoundDegradation:q,1503:z,MsgSsrOrbitClockBoundsDegradation:z}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="SubSystemReport",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STATUS_REPORT",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 u=function(e,t){return r.call(this,e),this.messageType="StatusJournalItem",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="StatusJournalItem",u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").uint32("uptime").nest("report",{type:a.prototype.parser}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["uptime","writeUInt32LE",4]),u.prototype.fieldSpec.push(["report",a.prototype.fieldSpec]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_STATUS_JOURNAL",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_STATUS_JOURNAL",c.prototype.msg_type=65533,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").uint16("reporting_system").uint16("sbp_version").uint32("total_status_reports").uint8("sequence_descriptor").array("journal",{type:u.prototype.parser,readUntil:"eof"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["reporting_system","writeUInt16LE",2]),c.prototype.fieldSpec.push(["sbp_version","writeUInt16LE",2]),c.prototype.fieldSpec.push(["total_status_reports","writeUInt32LE",4]),c.prototype.fieldSpec.push(["sequence_descriptor","writeUInt8",1]),c.prototype.fieldSpec.push(["journal","array",u.prototype.fieldSpec,function(){return this.fields.array.length},null]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_INS_UPDATES",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GNSS_TIME_OFFSET",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PPS_TIME",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SENSOR_AID_EVENT",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_META",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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:u,65533:c,MsgStatusJournal:c,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,u=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",u.prototype.msg_type=33,u.prototype.constructor=u,u.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"),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),u.prototype.fieldSpec.push(["tot",a.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",s.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 c=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DETAILED_DEP",c.prototype.msg_type=17,c.prototype.constructor=c,c.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"),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["recv_time","writeUInt64LE",8]),c.prototype.fieldSpec.push(["tot",l.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",n.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 y=function(e,t){return r.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="TrackingChannelStateDepB",I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["state","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),I.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",v.prototype.msg_type=19,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").array("states",{type:I.prototype.parser,readUntil:"eof"}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["states","array",I.prototype.fieldSpec,function(){return this.fields.array.length},null]),e.exports={33:u,MsgTrackingStateDetailedDepA:u,17:c,MsgTrackingStateDetailedDep:c,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:I,19:v,MsgTrackingStateDepB:v}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_WHEELTICK",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r(e,t){if(e===t)return 0;for(var p=e.length,r=t.length,o=0,i=Math.min(p,r);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],p,r))return!1;return!0}(e,t,p,s))}return p?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,p,r){var o;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof p&&(r=p,p=null),o=function(e){var t;try{e()}catch(e){t=e}return t}(t),r=(p&&p.name?" ("+p.name+").":".")+(r?" "+r:"."),e&&!o&&_(o,p,"Missing expected exception"+r);var s="string"==typeof r,n=!e&&o&&!p;if((!e&&i.isError(o)&&s&&E(o,p)||n)&&_(o,p,"Got unwanted exception"+r),e&&o&&p&&!E(o,p)||!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 p=new Error;if(p.stack){var r=p.stack,o=h(t),i=r.indexOf("\n"+o);if(i>=0){var s=r.indexOf("\n",i+1);r=r.substring(s+1)}this.stack=r}}},i.inherits(u.AssertionError,Error),u.fail=_,u.ok=S,u.equal=function(e,t,p){e!=t&&_(e,t,p,"==",u.equal)},u.notEqual=function(e,t,p){e==t&&_(e,t,p,"!=",u.notEqual)},u.deepEqual=function(e,t,p){g(e,t,!1)||_(e,t,p,"deepEqual",u.deepEqual)},u.deepStrictEqual=function(e,t,p){g(e,t,!0)||_(e,t,p,"deepStrictEqual",u.deepStrictEqual)},u.notDeepEqual=function(e,t,p){g(e,t,!1)&&_(e,t,p,"notDeepEqual",u.notDeepEqual)},u.notDeepStrictEqual=function e(t,p,r){g(t,p,!0)&&_(t,p,r,"notDeepStrictEqual",e)},u.strictEqual=function(e,t,p){e!==t&&_(e,t,p,"===",u.strictEqual)},u.notStrictEqual=function(e,t,p){e===t&&_(e,t,p,"!==",u.notStrictEqual)},u.throws=function(e,t,p){m(!0,e,t,p)},u.doesNotThrow=function(e,t,p){m(!1,e,t,p)},u.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var p in e)s.call(e,p)&&t.push(p);return t}}).call(this,p(5))},function(e,t,p){var r;!function(p){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 p=parseInt(e,t||10);return this._low=65535&p,this._high=p>>>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,p=t>>>16;return p+=this._high+e._high,this._low=65535&t,this._high=65535&p,this},o.prototype.subtract=function(e){return this.add(e.clone().negate())},o.prototype.multiply=function(e){var t,p,r=this._high,o=this._low,i=e._high,s=e._low;return t=(p=o*s)>>>16,t+=r*s,t&=65535,t+=o*i,this._low=65535&p,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(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._low=0,this._high=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=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===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r;!function(p){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,p,r){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,p,r)}function n(e,t,p,r){return void 0===p?(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|p,this._a48=0|r,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 p=o[t]||new s(Math.pow(t,5)),r=0,i=e.length;r=0&&(p.div(t),r[o]=p.remainder.toNumber().toString(e),p.gt(t));o--);return r[o-1]=p.toNumber().toString(e),r.join("")},s.prototype.add=function(e){var t=this._a00+e._a00,p=t>>>16,r=(p+=this._a16+e._a16)>>>16,o=(r+=this._a32+e._a32)>>>16;return o+=this._a48+e._a48,this._a00=65535&t,this._a16=65535&p,this._a32=65535&r,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,p=this._a16,r=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+=p*i)>>>16;var u=(c+=t*n)>>>16;return c&=65535,u+=(c+=p*s)>>>16,c&=65535,u+=(c+=r*i)>>>16,u+=t*e._a48,u&=65535,u+=p*n,u&=65535,u+=r*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(),p=-1;!this.lt(t);)t.shiftLeft(1,!0),p++;for(this.remainder=this.clone(),this._a00=0,this._a16=0,this._a32=0,this._a48=0;p>=0;p--)t.shiftRight(1),this.remainder.lt(t)||(this.remainder.subtract(t),p>=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 p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p<>>32-e,i=r<>>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 p=this._a48<<16|this._a32,r=this._a16<<16|this._a00,o=p>>>e|r<<32-e,i=r>>>e|p<<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===(r=function(){return s}.apply(t,[]))||(e.exports=r)}()},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=(p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ACQ_RESULT",this.fields=t||this.parser.parse(e.payload),this});(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_RESULT_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="AcqSvProfile",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="AcqSvProfileDep",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ACQ_SV_PROFILE_DEP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BOOTLOADER_JUMP_TO_APP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NAP_DEVICE_DNA_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BOOTLOADER_HANDSHAKE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_EXT_EVENT",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FILEIO_READ_REQ",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_READ_DIR_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_REMOVE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_WRITE_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FILEIO_CONFIG_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_FLASH_PROGRAM",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_DONE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FLASH_ERASE",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STM_FLASH_LOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STM_FLASH_UNLOCK_SECTOR",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_REQ",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STM_UNIQUE_ID_RESP",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_M25_FLASH_WRITE_STATUS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_IMU_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_IMU_AUX",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal,p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),s=p(0).SvId,n=function(e,t){return r.call(this,e),this.messageType="IntegritySSRHeader",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.prototype)).messageType="IntegritySSRHeader",n.prototype.constructor=n,n.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id"),n.prototype.fieldSpec=[],n.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),n.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),n.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),n.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),n.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),n.prototype.fieldSpec.push(["chain_id","writeUInt8",1]);var a=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_HIGH_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_HIGH_LEVEL",a.prototype.msg_type=3001,a.prototype.constructor=a,a.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).nest("corr_time",{type:i.prototype.parser}).uint8("ssr_sol_id").uint16("tile_set_id").uint16("tile_id").uint8("chain_id").uint8("use_gps_sat").uint8("use_gal_sat").uint8("use_bds_sat").array("reserved",{length:6,type:"uint8"}).uint8("use_tropo_grid_points").uint8("use_iono_grid_points").uint8("use_iono_tile_sat_los").uint8("use_iono_grid_point_sat_los"),a.prototype.fieldSpec=[],a.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["corr_time",i.prototype.fieldSpec]),a.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),a.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),a.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),a.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),a.prototype.fieldSpec.push(["use_gps_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["use_gal_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["use_bds_sat","writeUInt8",1]),a.prototype.fieldSpec.push(["reserved","array","writeUInt8",function(){return 1},6]),a.prototype.fieldSpec.push(["use_tropo_grid_points","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_grid_points","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_tile_sat_los","writeUInt8",1]),a.prototype.fieldSpec.push(["use_iono_grid_point_sat_los","writeUInt8",1]);var l=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_SATELLITES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_SATELLITES",l.prototype.msg_type=3005,l.prototype.constructor=l,l.prototype.parser=(new o).endianess("little").nest("obs_time",{type:i.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("ssr_sol_id").uint8("chain_id").uint8("const_id").uint8("n_faulty_sats").array("faulty_sats",{type:"uint8",length:"n_faulty_sats"}),l.prototype.fieldSpec=[],l.prototype.fieldSpec.push(["obs_time",i.prototype.fieldSpec]),l.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),l.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),l.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),l.prototype.fieldSpec.push(["chain_id","writeUInt8",1]),l.prototype.fieldSpec.push(["const_id","writeUInt8",1]),l.prototype.fieldSpec.push(["n_faulty_sats","writeUInt8",1]),l.prototype.fieldSpec.push(["faulty_sats","array","writeUInt8",function(){return 1},"n_faulty_sats"]);var c=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_TROPO_GRID_POINTS",c.prototype.msg_type=3011,c.prototype.constructor=c,c.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),c.prototype.fieldSpec=[],c.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),c.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),c.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);var u=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINTS",u.prototype.msg_type=3015,u.prototype.constructor=u,u.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_points").array("faulty_points",{type:"uint16le",length:"n_faulty_points"}),u.prototype.fieldSpec=[],u.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),u.prototype.fieldSpec.push(["n_faulty_points","writeUInt8",1]),u.prototype.fieldSpec.push(["faulty_points","array","writeUInt16LE",function(){return 2},"n_faulty_points"]);var y=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_TILE_SAT_LOS",y.prototype.msg_type=3021,y.prototype.constructor=y,y.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),y.prototype.fieldSpec=[],y.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),y.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),y.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]);var h=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.prototype)).messageType="MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS",h.prototype.msg_type=3025,h.prototype.constructor=h,h.prototype.parser=(new o).endianess("little").nest("header",{type:n.prototype.parser}).uint16("grid_point_id").uint8("n_faulty_los").array("faulty_los",{type:s.prototype.parser,length:"n_faulty_los"}),h.prototype.fieldSpec=[],h.prototype.fieldSpec.push(["header",n.prototype.fieldSpec]),h.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),h.prototype.fieldSpec.push(["n_faulty_los","writeUInt8",1]),h.prototype.fieldSpec.push(["faulty_los","array",s.prototype.fieldSpec,function(){return this.fields.array.length},"n_faulty_los"]),e.exports={IntegritySSRHeader:n,3001:a,MsgSsrFlagHighLevel:a,3005:l,MsgSsrFlagSatellites:l,3011:c,MsgSsrFlagTropoGridPoints:c,3015:u,MsgSsrFlagIonoGridPoints:u,3021:y,MsgSsrFlagIonoTileSatLos:y,3025:h,MsgSsrFlagIonoGridPointSatLos:h}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_COUNTS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_SOCKET_QUEUES",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_SOCKET_USAGE",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_COUNT",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_PROCESS_FD_SUMMARY",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_CPU_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_MEM_STATE",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_LINUX_SYS_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_LOG",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FWD",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PRINT_DEP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_MAG_RAW",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_GPS_TIME",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GPS_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UTC_TIME",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UTC_TIME_GNSS",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DOPS",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_COV",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="EstimatedHorizontalErrorEllipse",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_ACC",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_ECEF",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_NED",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_COV",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_COV",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="MSG_POS_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_POS_ECEF_COV_GNSS",I.prototype.msg_type=564,I.prototype.constructor=I,I.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"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),I.prototype.fieldSpec.push(["x","writeDoubleLE",8]),I.prototype.fieldSpec.push(["y","writeDoubleLE",8]),I.prototype.fieldSpec.push(["z","writeDoubleLE",8]),I.prototype.fieldSpec.push(["cov_x_x","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_x_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_y","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_y_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["cov_z_z","writeFloatLE",4]),I.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),I.prototype.fieldSpec.push(["flags","writeUInt8",1]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_GNSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_POS_LLH_GNSS",v.prototype.msg_type=554,v.prototype.constructor=v,v.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"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["tow","writeUInt32LE",4]),v.prototype.fieldSpec.push(["lat","writeDoubleLE",8]),v.prototype.fieldSpec.push(["lon","writeDoubleLE",8]),v.prototype.fieldSpec.push(["height","writeDoubleLE",8]),v.prototype.fieldSpec.push(["h_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["v_accuracy","writeUInt16LE",2]),v.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),v.prototype.fieldSpec.push(["flags","writeUInt8",1]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_POS_LLH_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_GNSS",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_GNSS",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_COV_GNSS",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_BODY",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_COG",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_AGE_CORRECTIONS",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GPS_TIME_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DOPS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_POS_LLH_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_ECEF_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_VEL_NED_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASELINE_HEADING_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PROTECTION_LEVEL",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.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:I,MsgPosEcefCovGnss:I,554:v,MsgPosLlhGnss:v,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_NDB_EVENT",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,c=p(0).GPSTimeSec,u=(p(0).SvId,function(e,t){return r.call(this,e),this.messageType="ObservationHeader",this.fields=t||this.parser.parse(e.payload),this});(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="Doppler",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContent",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedOsrContent",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASE_POS_LLH",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_BASE_POS_ECEF",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="EphemerisCommonContent",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="EphemerisCommonContentDepB",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="EphemerisCommonContentDepA",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_E",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS_DEP_F",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_GPS",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_GPS",I.prototype.msg_type=138,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 v=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_QZSS",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_EPHEMERIS_QZSS",v.prototype.msg_type=142,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("common",{type:g.prototype.parser}).floatle("tgd").floatle("c_rs").floatle("c_rc").floatle("c_uc").floatle("c_us").floatle("c_ic").floatle("c_is").doublele("dn").doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("inc_dot").floatle("af0").floatle("af1").floatle("af2").nest("toc",{type:c.prototype.parser}).uint8("iode").uint16("iodc"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["common",g.prototype.fieldSpec]),v.prototype.fieldSpec.push(["tgd","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rs","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_rc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_uc","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_us","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_ic","writeFloatLE",4]),v.prototype.fieldSpec.push(["c_is","writeFloatLE",4]),v.prototype.fieldSpec.push(["dn","writeDoubleLE",8]),v.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),v.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["w","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),v.prototype.fieldSpec.push(["inc_dot","writeDoubleLE",8]),v.prototype.fieldSpec.push(["af0","writeFloatLE",4]),v.prototype.fieldSpec.push(["af1","writeFloatLE",4]),v.prototype.fieldSpec.push(["af2","writeFloatLE",4]),v.prototype.fieldSpec.push(["toc",c.prototype.fieldSpec]),v.prototype.fieldSpec.push(["iode","writeUInt8",1]),v.prototype.fieldSpec.push(["iodc","writeUInt16LE",2]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_EPHEMERIS_BDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GAL",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_SBAS",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_GLO",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_D",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_EPHEMERIS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.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 r.call(this,e),this.messageType="ObservationHeaderDep",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.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 r.call(this,e),this.messageType="CarrierPhaseDepA",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepA",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepB",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.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 r.call(this,e),this.messageType="PackedObsContentDepC",this.fields=t||this.parser.parse(e.payload),this};(H.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(V.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OBS_DEP_C",this.fields=t||this.parser.parse(e.payload),this};(W.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_IONO",this.fields=t||this.parser.parse(e.payload),this};(Q.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SV_CONFIGURATION_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(K.prototype=Object.create(r.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 r.call(this,e),this.messageType="GnssCapb",this.fields=t||this.parser.parse(e.payload),this};(X.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GNSS_CAPB",this.fields=t||this.parser.parse(e.payload),this};(J.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_A",this.fields=t||this.parser.parse(e.payload),this};($.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_DELAY_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(Z.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_DELAY",this.fields=t||this.parser.parse(e.payload),this};(ee.prototype=Object.create(r.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 r.call(this,e),this.messageType="AlmanacCommonContent",this.fields=t||this.parser.parse(e.payload),this};(te.prototype=Object.create(r.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 pe=function(e,t){return r.call(this,e),this.messageType="AlmanacCommonContentDep",this.fields=t||this.parser.parse(e.payload),this};(pe.prototype=Object.create(r.prototype)).messageType="AlmanacCommonContentDep",pe.prototype.constructor=pe,pe.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"),pe.prototype.fieldSpec=[],pe.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["toa",c.prototype.fieldSpec]),pe.prototype.fieldSpec.push(["ura","writeDoubleLE",8]),pe.prototype.fieldSpec.push(["fit_interval","writeUInt32LE",4]),pe.prototype.fieldSpec.push(["valid","writeUInt8",1]),pe.prototype.fieldSpec.push(["health_bits","writeUInt8",1]);var re=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS_DEP",this.fields=t||this.parser.parse(e.payload),this};(re.prototype=Object.create(r.prototype)).messageType="MSG_ALMANAC_GPS_DEP",re.prototype.msg_type=112,re.prototype.constructor=re,re.prototype.parser=(new o).endianess("little").nest("common",{type:pe.prototype.parser}).doublele("m0").doublele("ecc").doublele("sqrta").doublele("omega0").doublele("omegadot").doublele("w").doublele("inc").doublele("af0").doublele("af1"),re.prototype.fieldSpec=[],re.prototype.fieldSpec.push(["common",pe.prototype.fieldSpec]),re.prototype.fieldSpec.push(["m0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["ecc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["sqrta","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omega0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["omegadot","writeDoubleLE",8]),re.prototype.fieldSpec.push(["w","writeDoubleLE",8]),re.prototype.fieldSpec.push(["inc","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af0","writeDoubleLE",8]),re.prototype.fieldSpec.push(["af1","writeDoubleLE",8]);var oe=function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC_GPS",this.fields=t||this.parser.parse(e.payload),this};(oe.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ALMANAC_GLO_DEP",this.fields=t||this.parser.parse(e.payload),this};(ie.prototype=Object.create(r.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:pe.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",pe.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 r.call(this,e),this.messageType="MSG_ALMANAC_GLO",this.fields=t||this.parser.parse(e.payload),this};(se.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GLO_BIASES",this.fields=t||this.parser.parse(e.payload),this};(ne.prototype=Object.create(r.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 r.call(this,e),this.messageType="SvAzEl",this.fields=t||this.parser.parse(e.payload),this};(ae.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SV_AZ_EL",this.fields=t||this.parser.parse(e.payload),this};(le.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_OSR",this.fields=t||this.parser.parse(e.payload),this};(ce.prototype=Object.create(r.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:I,MsgEphemerisGps:I,142:v,MsgEphemerisQzss:v,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:pe,112:re,MsgAlmanacGpsDep:re,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_BASELINE_HEADING",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ORIENT_QUAT",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ORIENT_EULER",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_ANGULAR_RATE",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=p(0).GnssSignalDep,n=p(0).GPSTime,a=p(0).GPSTimeDep,l=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_ALMANAC",this.fields=t||this.parser.parse(e.payload),this});(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SET_TIME",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_RESET",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_RESET_DEP",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CW_RESULTS",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CW_START",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_RESET_FILTERS",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_INIT_BASE_DEP",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_THREAD_STATE",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="UARTChannel",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="Period",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="Latency",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UART_STATE",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_UART_STATE_DEPA",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="MSG_IAR_STATE",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_IAR_STATE",I.prototype.msg_type=25,I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint32("num_hyps"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["num_hyps","writeUInt32LE",4]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_MASK_SATELLITE",v.prototype.msg_type=43,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").uint8("mask").nest("sid",{type:i.prototype.parser}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["mask","writeUInt8",1]),v.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_MASK_SATELLITE_DEP",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DEVICE_MONITOR",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_REQ",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_RESP",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_COMMAND_OUTPUT",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_STATE_REQ",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_STATE_RESP",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.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 r.call(this,e),this.messageType="NetworkUsage",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_NETWORK_BANDWIDTH_USAGE",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CELL_MODEM_STATUS",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SPECAN_DEP",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SPECAN",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_FRONT_END_GAIN",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.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:I,MsgIarState:I,43:v,MsgMaskSatellite:v,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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_SBAS_RAW",this.fields=t||this.parser.parse(e.payload),this});(s.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_SETTINGS_SAVE",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_WRITE",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_WRITE_RESP",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_REQ",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_RESP",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_REQ",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_RESP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_READ_BY_INDEX_DONE",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SETTINGS_REGISTER_RESP",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="SolutionInputType",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SOLN_META_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SOLN_META",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="GNSSInputType",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="IMUInputType",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="OdoInputType",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase,p(0).GnssSignal),s=(p(0).GnssSignalDep,p(0).GPSTime,p(0).GPSTimeDep,p(0).GPSTimeSec),n=p(0).SvId,a=function(e,t){return r.call(this,e),this.messageType="CodeBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="PhaseBiasesContent",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECHeader",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="GriddedCorrectionHeader",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECSatElement",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="TroposphericDelayCorrectionNoStd",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="TroposphericDelayCorrection",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECResidualNoStd",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="STECResidual",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_CODE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_PHASE_BIASES",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP",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 r.call(this,e),this.messageType="BoundsHeader",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.prototype)).messageType="BoundsHeader",m.prototype.constructor=m,m.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("sol_id"),m.prototype.fieldSpec=[],m.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),m.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),m.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),m.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),m.prototype.fieldSpec.push(["sol_id","writeUInt8",1]);var b=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION",b.prototype.msg_type=1533,b.prototype.constructor=b,b.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("n_sats").array("stec_sat_list",{type:y.prototype.parser,length:"n_sats"}),b.prototype.fieldSpec=[],b.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),b.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),b.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),b.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),b.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var I=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION",I.prototype.msg_type=1532,I.prototype.constructor=I,I.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"}),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["header",u.prototype.fieldSpec]),I.prototype.fieldSpec.push(["index","writeUInt16LE",2]),I.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),I.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var v=function(e,t){return r.call(this,e),this.messageType="STECSatElementIntegrity",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="STECSatElementIntegrity",v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").nest("stec_residual",{type:_.prototype.parser}).uint8("stec_bound_mu").uint8("stec_bound_sig").uint8("stec_bound_mu_dot").uint8("stec_bound_sig_dot"),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["stec_residual",_.prototype.fieldSpec]),v.prototype.fieldSpec.push(["stec_bound_mu","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_mu_dot","writeUInt8",1]),v.prototype.fieldSpec.push(["stec_bound_sig_dot","writeUInt8",1]);var L=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(L.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_BOUNDS",L.prototype.msg_type=1534,L.prototype.constructor=L,L.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod_atmo").uint16("tile_set_id").uint16("tile_id").uint8("tropo_qi").uint16("grid_point_id").nest("tropo_delay_correction",{type:f.prototype.parser}).uint8("tropo_bound_mu").uint8("tropo_bound_sig").uint8("n_sats").array("stec_sat_list",{type:v.prototype.parser,length:"n_sats"}),L.prototype.fieldSpec=[],L.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),L.prototype.fieldSpec.push(["ssr_iod_atmo","writeUInt8",1]),L.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_qi","writeUInt8",1]),L.prototype.fieldSpec.push(["grid_point_id","writeUInt16LE",2]),L.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),L.prototype.fieldSpec.push(["tropo_bound_mu","writeUInt8",1]),L.prototype.fieldSpec.push(["tropo_bound_sig","writeUInt8",1]),L.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),L.prototype.fieldSpec.push(["stec_sat_list","array",v.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var T=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION_DEP",this.fields=t||this.parser.parse(e.payload),this};(T.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION_DEP",T.prototype.msg_type=1526,T.prototype.constructor=T,T.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"),T.prototype.fieldSpec=[],T.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),T.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),T.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),T.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),T.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),T.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var U=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_TILE_DEFINITION",this.fields=t||this.parser.parse(e.payload),this};(U.prototype=Object.create(r.prototype)).messageType="MSG_SSR_TILE_DEFINITION",U.prototype.msg_type=1527,U.prototype.constructor=U,U.prototype.parser=(new o).endianess("little").uint8("ssr_sol_id").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"),U.prototype.fieldSpec=[],U.prototype.fieldSpec.push(["ssr_sol_id","writeUInt8",1]),U.prototype.fieldSpec.push(["tile_set_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["tile_id","writeUInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lat","writeInt16LE",2]),U.prototype.fieldSpec.push(["corner_nw_lon","writeInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lat","writeUInt16LE",2]),U.prototype.fieldSpec.push(["spacing_lon","writeUInt16LE",2]),U.prototype.fieldSpec.push(["rows","writeUInt16LE",2]),U.prototype.fieldSpec.push(["cols","writeUInt16LE",2]),U.prototype.fieldSpec.push(["bitmask","writeUInt64LE",8]);var M=function(e,t){return r.call(this,e),this.messageType="SatelliteAPC",this.fields=t||this.parser.parse(e.payload),this};(M.prototype=Object.create(r.prototype)).messageType="SatelliteAPC",M.prototype.constructor=M,M.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"}),M.prototype.fieldSpec=[],M.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),M.prototype.fieldSpec.push(["sat_info","writeUInt8",1]),M.prototype.fieldSpec.push(["svn","writeUInt16LE",2]),M.prototype.fieldSpec.push(["pco","array","writeInt16LE",function(){return 2},3]),M.prototype.fieldSpec.push(["pcv","array","writeInt8",function(){return 1},21]);var D=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_SATELLITE_APC",this.fields=t||this.parser.parse(e.payload),this};(D.prototype=Object.create(r.prototype)).messageType="MSG_SSR_SATELLITE_APC",D.prototype.msg_type=1540,D.prototype.constructor=D,D.prototype.parser=(new o).endianess("little").array("apc",{type:M.prototype.parser,readUntil:"eof"}),D.prototype.fieldSpec=[],D.prototype.fieldSpec.push(["apc","array",M.prototype.fieldSpec,function(){return this.fields.array.length},null]);var O=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(O.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_DEP_A",O.prototype.msg_type=1500,O.prototype.constructor=O,O.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"),O.prototype.fieldSpec=[],O.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),O.prototype.fieldSpec.push(["sid",i.prototype.fieldSpec]),O.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),O.prototype.fieldSpec.push(["iod_ssr","writeUInt8",1]),O.prototype.fieldSpec.push(["iod","writeUInt8",1]),O.prototype.fieldSpec.push(["radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["along","writeInt32LE",4]),O.prototype.fieldSpec.push(["cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_radial","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_along","writeInt32LE",4]),O.prototype.fieldSpec.push(["dot_cross","writeInt32LE",4]),O.prototype.fieldSpec.push(["c0","writeInt32LE",4]),O.prototype.fieldSpec.push(["c1","writeInt32LE",4]),O.prototype.fieldSpec.push(["c2","writeInt32LE",4]);var G=function(e,t){return r.call(this,e),this.messageType="STECHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(G.prototype=Object.create(r.prototype)).messageType="STECHeaderDepA",G.prototype.constructor=G,G.prototype.parser=(new o).endianess("little").nest("time",{type:s.prototype.parser}).uint8("num_msgs").uint8("seq_num").uint8("update_interval").uint8("iod_atmo"),G.prototype.fieldSpec=[],G.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),G.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),G.prototype.fieldSpec.push(["seq_num","writeUInt8",1]),G.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),G.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]);var A=function(e,t){return r.call(this,e),this.messageType="GriddedCorrectionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(A.prototype=Object.create(r.prototype)).messageType="GriddedCorrectionHeaderDepA",A.prototype.constructor=A,A.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"),A.prototype.fieldSpec=[],A.prototype.fieldSpec.push(["time",s.prototype.fieldSpec]),A.prototype.fieldSpec.push(["num_msgs","writeUInt16LE",2]),A.prototype.fieldSpec.push(["seq_num","writeUInt16LE",2]),A.prototype.fieldSpec.push(["update_interval","writeUInt8",1]),A.prototype.fieldSpec.push(["iod_atmo","writeUInt8",1]),A.prototype.fieldSpec.push(["tropo_quality_indicator","writeUInt8",1]);var C=function(e,t){return r.call(this,e),this.messageType="GridDefinitionHeaderDepA",this.fields=t||this.parser.parse(e.payload),this};(C.prototype=Object.create(r.prototype)).messageType="GridDefinitionHeaderDepA",C.prototype.constructor=C,C.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"),C.prototype.fieldSpec=[],C.prototype.fieldSpec.push(["region_size_inverse","writeUInt8",1]),C.prototype.fieldSpec.push(["area_width","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lat_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["lon_nw_corner_enc","writeUInt16LE",2]),C.prototype.fieldSpec.push(["num_msgs","writeUInt8",1]),C.prototype.fieldSpec.push(["seq_num","writeUInt8",1]);var R=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_STEC_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(R.prototype=Object.create(r.prototype)).messageType="MSG_SSR_STEC_CORRECTION_DEP_A",R.prototype.msg_type=1515,R.prototype.constructor=R,R.prototype.parser=(new o).endianess("little").nest("header",{type:G.prototype.parser}).array("stec_sat_list",{type:y.prototype.parser,readUntil:"eof"}),R.prototype.fieldSpec=[],R.prototype.fieldSpec.push(["header",G.prototype.fieldSpec]),R.prototype.fieldSpec.push(["stec_sat_list","array",y.prototype.fieldSpec,function(){return this.fields.array.length},null]);var P=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(P.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_NO_STD_DEP_A",P.prototype.msg_type=1520,P.prototype.constructor=P,P.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:h.prototype.parser}).array("stec_residuals",{type:d.prototype.parser,readUntil:"eof"}),P.prototype.fieldSpec=[],P.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),P.prototype.fieldSpec.push(["index","writeUInt16LE",2]),P.prototype.fieldSpec.push(["tropo_delay_correction",h.prototype.fieldSpec]),P.prototype.fieldSpec.push(["stec_residuals","array",d.prototype.fieldSpec,function(){return this.fields.array.length},null]);var N=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(N.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRIDDED_CORRECTION_DEP_A",N.prototype.msg_type=1530,N.prototype.constructor=N,N.prototype.parser=(new o).endianess("little").nest("header",{type:A.prototype.parser}).uint16("index").nest("tropo_delay_correction",{type:f.prototype.parser}).array("stec_residuals",{type:_.prototype.parser,readUntil:"eof"}),N.prototype.fieldSpec=[],N.prototype.fieldSpec.push(["header",A.prototype.fieldSpec]),N.prototype.fieldSpec.push(["index","writeUInt16LE",2]),N.prototype.fieldSpec.push(["tropo_delay_correction",f.prototype.fieldSpec]),N.prototype.fieldSpec.push(["stec_residuals","array",_.prototype.fieldSpec,function(){return this.fields.array.length},null]);var j=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_GRID_DEFINITION_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(j.prototype=Object.create(r.prototype)).messageType="MSG_SSR_GRID_DEFINITION_DEP_A",j.prototype.msg_type=1525,j.prototype.constructor=j,j.prototype.parser=(new o).endianess("little").nest("header",{type:C.prototype.parser}).array("rle_list",{type:"uint8",readUntil:"eof"}),j.prototype.fieldSpec=[],j.prototype.fieldSpec.push(["header",C.prototype.fieldSpec]),j.prototype.fieldSpec.push(["rle_list","array","writeUInt8",function(){return 1},null]);var x=function(e,t){return r.call(this,e),this.messageType="OrbitClockBound",this.fields=t||this.parser.parse(e.payload),this};(x.prototype=Object.create(r.prototype)).messageType="OrbitClockBound",x.prototype.constructor=x,x.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"),x.prototype.fieldSpec=[],x.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_radial_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_along_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["orb_cross_bound_sig","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_mu","writeUInt8",1]),x.prototype.fieldSpec.push(["clock_bound_sig","writeUInt8",1]);var k=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(k.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS",k.prototype.msg_type=1502,k.prototype.constructor=k,k.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats").array("orbit_clock_bounds",{type:x.prototype.parser,length:"n_sats"}),k.prototype.fieldSpec=[],k.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),k.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),k.prototype.fieldSpec.push(["const_id","writeUInt8",1]),k.prototype.fieldSpec.push(["n_sats","writeUInt8",1]),k.prototype.fieldSpec.push(["orbit_clock_bounds","array",x.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats"]);var F=function(e,t){return r.call(this,e),this.messageType="CodePhaseBiasesSatSig",this.fields=t||this.parser.parse(e.payload),this};(F.prototype=Object.create(r.prototype)).messageType="CodePhaseBiasesSatSig",F.prototype.constructor=F,F.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"),F.prototype.fieldSpec=[],F.prototype.fieldSpec.push(["sat_id","writeUInt8",1]),F.prototype.fieldSpec.push(["signal_id","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["code_bias_bound_sig","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_mu","writeUInt8",1]),F.prototype.fieldSpec.push(["phase_bias_bound_sig","writeUInt8",1]);var B=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",this.fields=t||this.parser.parse(e.payload),this};(B.prototype=Object.create(r.prototype)).messageType="MSG_SSR_CODE_PHASE_BIASES_BOUNDS",B.prototype.msg_type=1516,B.prototype.constructor=B,B.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint8("n_sats_signals").array("satellites_signals",{type:F.prototype.parser,length:"n_sats_signals"}),B.prototype.fieldSpec=[],B.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),B.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),B.prototype.fieldSpec.push(["const_id","writeUInt8",1]),B.prototype.fieldSpec.push(["n_sats_signals","writeUInt8",1]),B.prototype.fieldSpec.push(["satellites_signals","array",F.prototype.fieldSpec,function(){return this.fields.array.length},"n_sats_signals"]);var q=function(e,t){return r.call(this,e),this.messageType="OrbitClockBoundDegradation",this.fields=t||this.parser.parse(e.payload),this};(q.prototype=Object.create(r.prototype)).messageType="OrbitClockBoundDegradation",q.prototype.constructor=q,q.prototype.parser=(new o).endianess("little").uint8("orb_radial_bound_mu_dot").uint8("orb_along_bound_mu_dot").uint8("orb_cross_bound_mu_dot").uint8("orb_radial_bound_sig_dot").uint8("orb_along_bound_sig_dot").uint8("orb_cross_bound_sig_dot").uint8("clock_bound_mu_dot").uint8("clock_bound_sig_dot"),q.prototype.fieldSpec=[],q.prototype.fieldSpec.push(["orb_radial_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_radial_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_along_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["orb_cross_bound_sig_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_mu_dot","writeUInt8",1]),q.prototype.fieldSpec.push(["clock_bound_sig_dot","writeUInt8",1]);var z=function(e,t){return r.call(this,e),this.messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",this.fields=t||this.parser.parse(e.payload),this};(z.prototype=Object.create(r.prototype)).messageType="MSG_SSR_ORBIT_CLOCK_BOUNDS_DEGRADATION",z.prototype.msg_type=1503,z.prototype.constructor=z,z.prototype.parser=(new o).endianess("little").nest("header",{type:m.prototype.parser}).uint8("ssr_iod").uint8("const_id").uint64("sat_bitmask").nest("orbit_clock_bounds_degradation",{type:q.prototype.parser}),z.prototype.fieldSpec=[],z.prototype.fieldSpec.push(["header",m.prototype.fieldSpec]),z.prototype.fieldSpec.push(["ssr_iod","writeUInt8",1]),z.prototype.fieldSpec.push(["const_id","writeUInt8",1]),z.prototype.fieldSpec.push(["sat_bitmask","writeUInt64LE",8]),z.prototype.fieldSpec.push(["orbit_clock_bounds_degradation",q.prototype.fieldSpec]),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,MsgSsrStecCorrectionDep:E,BoundsHeader:m,1533:b,MsgSsrStecCorrection:b,1532:I,MsgSsrGriddedCorrection:I,STECSatElementIntegrity:v,1534:L,MsgSsrGriddedCorrectionBounds:L,1526:T,MsgSsrTileDefinitionDep:T,1527:U,MsgSsrTileDefinition:U,SatelliteAPC:M,1540:D,MsgSsrSatelliteApc:D,1500:O,MsgSsrOrbitClockDepA:O,STECHeaderDepA:G,GriddedCorrectionHeaderDepA:A,GridDefinitionHeaderDepA:C,1515:R,MsgSsrStecCorrectionDepA:R,1520:P,MsgSsrGriddedCorrectionNoStdDepA:P,1530:N,MsgSsrGriddedCorrectionDepA:N,1525:j,MsgSsrGridDefinitionDepA:j,OrbitClockBound:x,1502:k,MsgSsrOrbitClockBounds:k,CodePhaseBiasesSatSig:F,1516:B,MsgSsrCodePhaseBiasesBounds:B,OrbitClockBoundDegradation:q,1503:z,MsgSsrOrbitClockBoundsDegradation:z}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_STARTUP",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_DGNSS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_HEARTBEAT",this.fields=t||this.parser.parse(e.payload),this};(n.prototype=Object.create(r.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 r.call(this,e),this.messageType="SubSystemReport",this.fields=t||this.parser.parse(e.payload),this};(a.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STATUS_REPORT",this.fields=t||this.parser.parse(e.payload),this};(l.prototype=Object.create(r.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 r.call(this,e),this.messageType="StatusJournalItem",this.fields=t||this.parser.parse(e.payload),this};(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_STATUS_JOURNAL",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_INS_STATUS",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_CSAC_TELEMETRY_LABELS",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_INS_UPDATES",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GNSS_TIME_OFFSET",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_PPS_TIME",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_SENSOR_AID_EVENT",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_GROUP_META",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,p(0).CarrierPhase),s=p(0).GnssSignal,n=p(0).GnssSignalDep,a=p(0).GPSTime,l=p(0).GPSTimeDep,c=(p(0).GPSTimeSec,p(0).SvId,function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP_A",this.fields=t||this.parser.parse(e.payload),this});(c.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_STATE_DETAILED_DEP",this.fields=t||this.parser.parse(e.payload),this};(u.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelState",this.fields=t||this.parser.parse(e.payload),this};(y.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_STATE",this.fields=t||this.parser.parse(e.payload),this};(h.prototype=Object.create(r.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 r.call(this,e),this.messageType="MeasurementState",this.fields=t||this.parser.parse(e.payload),this};(f.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_MEASUREMENT_STATE",this.fields=t||this.parser.parse(e.payload),this};(d.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelCorrelation",this.fields=t||this.parser.parse(e.payload),this};(_.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ",this.fields=t||this.parser.parse(e.payload),this};(S.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelCorrelationDep",this.fields=t||this.parser.parse(e.payload),this};(g.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(w.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_IQ_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(E.prototype=Object.create(r.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 r.call(this,e),this.messageType="TrackingChannelStateDepA",this.fields=t||this.parser.parse(e.payload),this};(m.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_A",this.fields=t||this.parser.parse(e.payload),this};(b.prototype=Object.create(r.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 I=function(e,t){return r.call(this,e),this.messageType="TrackingChannelStateDepB",this.fields=t||this.parser.parse(e.payload),this};(I.prototype=Object.create(r.prototype)).messageType="TrackingChannelStateDepB",I.prototype.constructor=I,I.prototype.parser=(new o).endianess("little").uint8("state").nest("sid",{type:n.prototype.parser}).floatle("cn0"),I.prototype.fieldSpec=[],I.prototype.fieldSpec.push(["state","writeUInt8",1]),I.prototype.fieldSpec.push(["sid",n.prototype.fieldSpec]),I.prototype.fieldSpec.push(["cn0","writeFloatLE",4]);var v=function(e,t){return r.call(this,e),this.messageType="MSG_TRACKING_STATE_DEP_B",this.fields=t||this.parser.parse(e.payload),this};(v.prototype=Object.create(r.prototype)).messageType="MSG_TRACKING_STATE_DEP_B",v.prototype.msg_type=19,v.prototype.constructor=v,v.prototype.parser=(new o).endianess("little").array("states",{type:I.prototype.parser,readUntil:"eof"}),v.prototype.fieldSpec=[],v.prototype.fieldSpec.push(["states","array",I.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:I,19:v,MsgTrackingStateDepB:v}},function(e,t,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_USER_DATA",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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,p){var r=p(2),o=p(4),i=(p(3),p(1).UINT64,function(e,t){return r.call(this,e),this.messageType="MSG_ODOMETRY",this.fields=t||this.parser.parse(e.payload),this});(i.prototype=Object.create(r.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 r.call(this,e),this.messageType="MSG_WHEELTICK",this.fields=t||this.parser.parse(e.payload),this};(s.prototype=Object.create(r.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/integrity.js b/javascript/sbp/integrity.js index 7df18cbdd5..e64316dbc0 100644 --- a/javascript/sbp/integrity.js +++ b/javascript/sbp/integrity.js @@ -30,6 +30,49 @@ var GPSTimeDep = require("./gnss").GPSTimeDep; var GPSTimeSec = require("./gnss").GPSTimeSec; var SvId = require("./gnss").SvId; +/** + * SBP class for message fragment IntegritySSRHeader + * + + * Fields in the SBP payload (`sbp.payload`): + * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. + * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset + * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset + * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. + * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. + * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. + * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * + * @param sbp An SBP object with a payload to be decoded. + */ +var IntegritySSRHeader = function (sbp, fields) { + SBP.call(this, sbp); + this.messageType = "IntegritySSRHeader"; + this.fields = (fields || this.parser.parse(sbp.payload)); + + return this; +}; +IntegritySSRHeader.prototype = Object.create(SBP.prototype); +IntegritySSRHeader.prototype.messageType = "IntegritySSRHeader"; +IntegritySSRHeader.prototype.constructor = IntegritySSRHeader; +IntegritySSRHeader.prototype.parser = new Parser() + .endianess('little') + .nest('obs_time', { type: GPSTimeSec.prototype.parser }) + .uint8('num_msgs') + .uint8('seq_num') + .uint8('ssr_sol_id') + .uint16('tile_set_id') + .uint16('tile_id') + .uint8('chain_id'); +IntegritySSRHeader.prototype.fieldSpec = []; +IntegritySSRHeader.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); +IntegritySSRHeader.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); +IntegritySSRHeader.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); +IntegritySSRHeader.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); +IntegritySSRHeader.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); +IntegritySSRHeader.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); +IntegritySSRHeader.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); + /** * SBP class for message MSG_SSR_FLAG_HIGH_LEVEL (0x0BB9). * @@ -147,13 +190,7 @@ MsgSsrFlagSatellites.prototype.fieldSpec.push(['faulty_sats', 'array', 'writeUIn * * Fields in the SBP payload (`sbp.payload`): - * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. - * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset - * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset - * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. - * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. - * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. - * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field header IntegritySSRHeader Header of an integrity message. * @field n_faulty_points number (unsigned 8-bit int, 1 byte) Number of faulty grid points. * @field faulty_points array List of faulty grid points. * @@ -172,23 +209,11 @@ MsgSsrFlagTropoGridPoints.prototype.msg_type = 0x0BC3; MsgSsrFlagTropoGridPoints.prototype.constructor = MsgSsrFlagTropoGridPoints; MsgSsrFlagTropoGridPoints.prototype.parser = new Parser() .endianess('little') - .nest('obs_time', { type: GPSTimeSec.prototype.parser }) - .uint8('num_msgs') - .uint8('seq_num') - .uint8('ssr_sol_id') - .uint16('tile_set_id') - .uint16('tile_id') - .uint8('chain_id') + .nest('header', { type: IntegritySSRHeader.prototype.parser }) .uint8('n_faulty_points') .array('faulty_points', { type: 'uint16le', length: 'n_faulty_points' }); MsgSsrFlagTropoGridPoints.prototype.fieldSpec = []; -MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); -MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); -MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); -MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); -MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); -MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); -MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['header', IntegritySSRHeader.prototype.fieldSpec]); MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['n_faulty_points', 'writeUInt8', 1]); MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['faulty_points', 'array', 'writeUInt16LE', function () { return 2; }, 'n_faulty_points']); @@ -197,13 +222,7 @@ MsgSsrFlagTropoGridPoints.prototype.fieldSpec.push(['faulty_points', 'array', 'w * * Fields in the SBP payload (`sbp.payload`): - * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. - * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset - * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset - * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. - * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. - * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. - * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field header IntegritySSRHeader Header of an integrity message. * @field n_faulty_points number (unsigned 8-bit int, 1 byte) Number of faulty grid points. * @field faulty_points array List of faulty grid points. * @@ -222,23 +241,11 @@ MsgSsrFlagIonoGridPoints.prototype.msg_type = 0x0BC7; MsgSsrFlagIonoGridPoints.prototype.constructor = MsgSsrFlagIonoGridPoints; MsgSsrFlagIonoGridPoints.prototype.parser = new Parser() .endianess('little') - .nest('obs_time', { type: GPSTimeSec.prototype.parser }) - .uint8('num_msgs') - .uint8('seq_num') - .uint8('ssr_sol_id') - .uint16('tile_set_id') - .uint16('tile_id') - .uint8('chain_id') + .nest('header', { type: IntegritySSRHeader.prototype.parser }) .uint8('n_faulty_points') .array('faulty_points', { type: 'uint16le', length: 'n_faulty_points' }); MsgSsrFlagIonoGridPoints.prototype.fieldSpec = []; -MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); -MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); -MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); -MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); -MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); -MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); -MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['header', IntegritySSRHeader.prototype.fieldSpec]); MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['n_faulty_points', 'writeUInt8', 1]); MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['faulty_points', 'array', 'writeUInt16LE', function () { return 2; }, 'n_faulty_points']); @@ -247,13 +254,7 @@ MsgSsrFlagIonoGridPoints.prototype.fieldSpec.push(['faulty_points', 'array', 'wr * * Fields in the SBP payload (`sbp.payload`): - * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. - * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset - * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset - * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. - * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. - * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. - * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field header IntegritySSRHeader Header of an integrity message. * @field n_faulty_los number (unsigned 8-bit int, 1 byte) Number of faulty LOS. * @field faulty_los array List of faulty LOS * @@ -272,23 +273,11 @@ MsgSsrFlagIonoTileSatLos.prototype.msg_type = 0x0BCD; MsgSsrFlagIonoTileSatLos.prototype.constructor = MsgSsrFlagIonoTileSatLos; MsgSsrFlagIonoTileSatLos.prototype.parser = new Parser() .endianess('little') - .nest('obs_time', { type: GPSTimeSec.prototype.parser }) - .uint8('num_msgs') - .uint8('seq_num') - .uint8('ssr_sol_id') - .uint16('tile_set_id') - .uint16('tile_id') - .uint8('chain_id') + .nest('header', { type: IntegritySSRHeader.prototype.parser }) .uint8('n_faulty_los') .array('faulty_los', { type: SvId.prototype.parser, length: 'n_faulty_los' }); MsgSsrFlagIonoTileSatLos.prototype.fieldSpec = []; -MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); -MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); -MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); -MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); -MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); -MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); -MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['header', IntegritySSRHeader.prototype.fieldSpec]); MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['n_faulty_los', 'writeUInt8', 1]); MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['faulty_los', 'array', SvId.prototype.fieldSpec, function () { return this.fields.array.length; }, 'n_faulty_los']); @@ -297,13 +286,7 @@ MsgSsrFlagIonoTileSatLos.prototype.fieldSpec.push(['faulty_los', 'array', SvId.p * * Fields in the SBP payload (`sbp.payload`): - * @field obs_time GPSTimeSec GNSS reference time of the observation used to generate the flag. - * @field num_msgs number (unsigned 8-bit int, 1 byte) Number of messages in the dataset - * @field seq_num number (unsigned 8-bit int, 1 byte) Position of this message in the dataset - * @field ssr_sol_id number (unsigned 8-bit int, 1 byte) SSR Solution ID. - * @field tile_set_id number (unsigned 16-bit int, 2 bytes) Unique identifier of the set this tile belongs to. - * @field tile_id number (unsigned 16-bit int, 2 bytes) Unique identifier of this tile in the tile set. - * @field chain_id number (unsigned 8-bit int, 1 byte) Chain and type of flag. + * @field header IntegritySSRHeader Header of an integrity message. * @field grid_point_id number (unsigned 16-bit int, 2 bytes) Index of the grid point. * @field n_faulty_los number (unsigned 8-bit int, 1 byte) Number of faulty LOS. * @field faulty_los array List of faulty LOS @@ -323,29 +306,18 @@ MsgSsrFlagIonoGridPointSatLos.prototype.msg_type = 0x0BD1; MsgSsrFlagIonoGridPointSatLos.prototype.constructor = MsgSsrFlagIonoGridPointSatLos; MsgSsrFlagIonoGridPointSatLos.prototype.parser = new Parser() .endianess('little') - .nest('obs_time', { type: GPSTimeSec.prototype.parser }) - .uint8('num_msgs') - .uint8('seq_num') - .uint8('ssr_sol_id') - .uint16('tile_set_id') - .uint16('tile_id') - .uint8('chain_id') + .nest('header', { type: IntegritySSRHeader.prototype.parser }) .uint16('grid_point_id') .uint8('n_faulty_los') .array('faulty_los', { type: SvId.prototype.parser, length: 'n_faulty_los' }); MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec = []; -MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['obs_time', GPSTimeSec.prototype.fieldSpec]); -MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['num_msgs', 'writeUInt8', 1]); -MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['seq_num', 'writeUInt8', 1]); -MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['ssr_sol_id', 'writeUInt8', 1]); -MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['tile_set_id', 'writeUInt16LE', 2]); -MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['tile_id', 'writeUInt16LE', 2]); -MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['chain_id', 'writeUInt8', 1]); +MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['header', IntegritySSRHeader.prototype.fieldSpec]); MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['grid_point_id', 'writeUInt16LE', 2]); MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['n_faulty_los', 'writeUInt8', 1]); MsgSsrFlagIonoGridPointSatLos.prototype.fieldSpec.push(['faulty_los', 'array', SvId.prototype.fieldSpec, function () { return this.fields.array.length; }, 'n_faulty_los']); module.exports = { + IntegritySSRHeader: IntegritySSRHeader, 0x0BB9: MsgSsrFlagHighLevel, MsgSsrFlagHighLevel: MsgSsrFlagHighLevel, 0x0BBD: MsgSsrFlagSatellites, diff --git a/jsonschema/IntegritySSRHeader.json b/jsonschema/IntegritySSRHeader.json new file mode 100644 index 0000000000..fd1e88859d --- /dev/null +++ b/jsonschema/IntegritySSRHeader.json @@ -0,0 +1,36 @@ +{ + "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": "#IntegritySSRHeader", + "title":"IntegritySSRHeader", + "description":"", + "type": "object", + "properties": { + "obs_time": {"$ref": "GpsTimeSec.json"}, + "num_msgs": {"type": "integer"}, + "seq_num": {"type": "integer"}, + "ssr_sol_id": {"type": "integer"}, + "tile_set_id": {"type": "integer"}, + "tile_id": {"type": "integer"}, + "chain_id": {"type": "integer"} + }, + "required": [ + "obs_time", + "num_msgs", + "seq_num", + "ssr_sol_id", + "tile_set_id", + "tile_id", + "chain_id" + ] +} \ No newline at end of file diff --git a/jsonschema/MsgSsrFlagIonoGridPointSatLos.json b/jsonschema/MsgSsrFlagIonoGridPointSatLos.json index 25cab5a8cd..dab0b16249 100644 --- a/jsonschema/MsgSsrFlagIonoGridPointSatLos.json +++ b/jsonschema/MsgSsrFlagIonoGridPointSatLos.json @@ -16,25 +16,13 @@ "description":"", "type": "object", "properties": { - "obs_time": {"$ref": "GpsTimeSec.json"}, - "num_msgs": {"type": "integer"}, - "seq_num": {"type": "integer"}, - "ssr_sol_id": {"type": "integer"}, - "tile_set_id": {"type": "integer"}, - "tile_id": {"type": "integer"}, - "chain_id": {"type": "integer"}, + "header": {"$ref": "IntegritySSRHeader.json"}, "grid_point_id": {"type": "integer"}, "n_faulty_los": {"type": "integer"}, "faulty_los": {"type": "array", "items": {"$ref": "SvId.json"}} }, "required": [ - "obs_time", - "num_msgs", - "seq_num", - "ssr_sol_id", - "tile_set_id", - "tile_id", - "chain_id", + "header", "grid_point_id", "n_faulty_los", "faulty_los" diff --git a/jsonschema/MsgSsrFlagIonoGridPoints.json b/jsonschema/MsgSsrFlagIonoGridPoints.json index b0894b0a3b..f1b4cd5f27 100644 --- a/jsonschema/MsgSsrFlagIonoGridPoints.json +++ b/jsonschema/MsgSsrFlagIonoGridPoints.json @@ -16,24 +16,12 @@ "description":"", "type": "object", "properties": { - "obs_time": {"$ref": "GpsTimeSec.json"}, - "num_msgs": {"type": "integer"}, - "seq_num": {"type": "integer"}, - "ssr_sol_id": {"type": "integer"}, - "tile_set_id": {"type": "integer"}, - "tile_id": {"type": "integer"}, - "chain_id": {"type": "integer"}, + "header": {"$ref": "IntegritySSRHeader.json"}, "n_faulty_points": {"type": "integer"}, "faulty_points": {"type": "array", "items": {"type": "integer"}} }, "required": [ - "obs_time", - "num_msgs", - "seq_num", - "ssr_sol_id", - "tile_set_id", - "tile_id", - "chain_id", + "header", "n_faulty_points", "faulty_points" ] diff --git a/jsonschema/MsgSsrFlagIonoTileSatLos.json b/jsonschema/MsgSsrFlagIonoTileSatLos.json index f9aca0cc15..6ad4a3ad97 100644 --- a/jsonschema/MsgSsrFlagIonoTileSatLos.json +++ b/jsonschema/MsgSsrFlagIonoTileSatLos.json @@ -16,24 +16,12 @@ "description":"", "type": "object", "properties": { - "obs_time": {"$ref": "GpsTimeSec.json"}, - "num_msgs": {"type": "integer"}, - "seq_num": {"type": "integer"}, - "ssr_sol_id": {"type": "integer"}, - "tile_set_id": {"type": "integer"}, - "tile_id": {"type": "integer"}, - "chain_id": {"type": "integer"}, + "header": {"$ref": "IntegritySSRHeader.json"}, "n_faulty_los": {"type": "integer"}, "faulty_los": {"type": "array", "items": {"$ref": "SvId.json"}} }, "required": [ - "obs_time", - "num_msgs", - "seq_num", - "ssr_sol_id", - "tile_set_id", - "tile_id", - "chain_id", + "header", "n_faulty_los", "faulty_los" ] diff --git a/jsonschema/MsgSsrFlagTropoGridPoints.json b/jsonschema/MsgSsrFlagTropoGridPoints.json index 2dd25e32fe..3462ecff56 100644 --- a/jsonschema/MsgSsrFlagTropoGridPoints.json +++ b/jsonschema/MsgSsrFlagTropoGridPoints.json @@ -16,24 +16,12 @@ "description":"", "type": "object", "properties": { - "obs_time": {"$ref": "GpsTimeSec.json"}, - "num_msgs": {"type": "integer"}, - "seq_num": {"type": "integer"}, - "ssr_sol_id": {"type": "integer"}, - "tile_set_id": {"type": "integer"}, - "tile_id": {"type": "integer"}, - "chain_id": {"type": "integer"}, + "header": {"$ref": "IntegritySSRHeader.json"}, "n_faulty_points": {"type": "integer"}, "faulty_points": {"type": "array", "items": {"type": "integer"}} }, "required": [ - "obs_time", - "num_msgs", - "seq_num", - "ssr_sol_id", - "tile_set_id", - "tile_id", - "chain_id", + "header", "n_faulty_points", "faulty_points" ] diff --git a/proto/integrity.proto b/proto/integrity.proto index 873d89cd9b..2c49f425d6 100644 --- a/proto/integrity.proto +++ b/proto/integrity.proto @@ -21,6 +21,20 @@ package swiftnav.sbp.integrity; import "gnss.proto"; +/** Common fields for SSR integrity messages + * +None + */ +message IntegritySSRHeader { + gnss.GpsTimeSec obs_time = 1; + uint32 num_msgs = 2; + uint32 seq_num = 3; + uint32 ssr_sol_id = 4; + uint32 tile_set_id = 5; + uint32 tile_id = 6; + uint32 chain_id = 7; +} + /** High level integrity flags * None @@ -61,15 +75,9 @@ message MsgSsrFlagSatellites { None */ message MsgSsrFlagTropoGridPoints { - gnss.GpsTimeSec obs_time = 1; - uint32 num_msgs = 2; - uint32 seq_num = 3; - uint32 ssr_sol_id = 4; - uint32 tile_set_id = 5; - uint32 tile_id = 6; - uint32 chain_id = 7; - uint32 n_faulty_points = 8; - repeated uint32 faulty_points = 9; + IntegritySSRHeader header = 1; + uint32 n_faulty_points = 2; + repeated uint32 faulty_points = 3; } /** List of grid points which are faulty @@ -77,15 +85,9 @@ message MsgSsrFlagTropoGridPoints { None */ message MsgSsrFlagIonoGridPoints { - gnss.GpsTimeSec obs_time = 1; - uint32 num_msgs = 2; - uint32 seq_num = 3; - uint32 ssr_sol_id = 4; - uint32 tile_set_id = 5; - uint32 tile_id = 6; - uint32 chain_id = 7; - uint32 n_faulty_points = 8; - repeated uint32 faulty_points = 9; + IntegritySSRHeader header = 1; + uint32 n_faulty_points = 2; + repeated uint32 faulty_points = 3; } /** List of all the LOS which are faulty @@ -93,15 +95,9 @@ message MsgSsrFlagIonoGridPoints { None */ message MsgSsrFlagIonoTileSatLos { - gnss.GpsTimeSec obs_time = 1; - uint32 num_msgs = 2; - uint32 seq_num = 3; - uint32 ssr_sol_id = 4; - uint32 tile_set_id = 5; - uint32 tile_id = 6; - uint32 chain_id = 7; - uint32 n_faulty_los = 8; - repeated SvId faulty_los = 9; + IntegritySSRHeader header = 1; + uint32 n_faulty_los = 2; + repeated SvId faulty_los = 3; } /** List of all the grid points to satellite which are faulty @@ -109,14 +105,8 @@ message MsgSsrFlagIonoTileSatLos { None */ message MsgSsrFlagIonoGridPointSatLos { - gnss.GpsTimeSec obs_time = 1; - uint32 num_msgs = 2; - uint32 seq_num = 3; - uint32 ssr_sol_id = 4; - uint32 tile_set_id = 5; - uint32 tile_id = 6; - uint32 chain_id = 7; - uint32 grid_point_id = 8; - uint32 n_faulty_los = 9; - repeated SvId faulty_los = 10; + IntegritySSRHeader header = 1; + uint32 grid_point_id = 2; + uint32 n_faulty_los = 3; + repeated SvId faulty_los = 4; } \ No newline at end of file diff --git a/python/sbp/integrity.py b/python/sbp/integrity.py index da387d5104..42ed49965e 100644 --- a/python/sbp/integrity.py +++ b/python/sbp/integrity.py @@ -26,6 +26,66 @@ # Please do not hand edit! +class IntegritySSRHeader(object): + """IntegritySSRHeader. + + + Parameters + ---------- + obs_time : GPSTimeSec + GNSS reference time of the observation used to generate the flag. + num_msgs : int + Number of messages in the dataset + seq_num : int + Position of this message in the dataset + ssr_sol_id : int + SSR Solution ID. + tile_set_id : int + Unique identifier of the set this tile belongs to. + tile_id : int + Unique identifier of this tile in the tile set. + chain_id : int + Chain and type of flag. + + """ + _parser = construct.Struct( + 'obs_time' / GPSTimeSec._parser, + 'num_msgs' / construct.Int8ul, + 'seq_num' / construct.Int8ul, + 'ssr_sol_id' / construct.Int8ul, + 'tile_set_id' / construct.Int16ul, + 'tile_id' / construct.Int16ul, + 'chain_id' / construct.Int8ul,) + __slots__ = [ + 'obs_time', + 'num_msgs', + 'seq_num', + 'ssr_sol_id', + 'tile_set_id', + 'tile_id', + 'chain_id', + ] + + def __init__(self, payload=None, **kwargs): + if payload: + self.from_binary(payload) + else: + self.obs_time = kwargs.pop('obs_time') + self.num_msgs = kwargs.pop('num_msgs') + self.seq_num = kwargs.pop('seq_num') + self.ssr_sol_id = kwargs.pop('ssr_sol_id') + self.tile_set_id = kwargs.pop('tile_set_id') + self.tile_id = kwargs.pop('tile_id') + self.chain_id = kwargs.pop('chain_id') + + def __repr__(self): + return fmt_repr(self) + + def from_binary(self, d): + p = IntegritySSRHeader._parser.parse(d) + for n in self.__class__.__slots__: + setattr(self, n, getattr(p, n)) + SBP_MSG_SSR_FLAG_HIGH_LEVEL = 0x0BB9 class MsgSsrFlagHighLevel(SBP): """SBP class for message MSG_SSR_FLAG_HIGH_LEVEL (0x0BB9). @@ -316,20 +376,8 @@ class MsgSsrFlagTropoGridPoints(SBP): ---------- sbp : SBP SBP parent object to inherit from. - obs_time : GPSTimeSec - GNSS reference time of the observation used to generate the flag. - num_msgs : int - Number of messages in the dataset - seq_num : int - Position of this message in the dataset - ssr_sol_id : int - SSR Solution ID. - tile_set_id : int - Unique identifier of the set this tile belongs to. - tile_id : int - Unique identifier of this tile in the tile set. - chain_id : int - Chain and type of flag. + header : IntegritySSRHeader + Header of an integrity message. n_faulty_points : int Number of faulty grid points. faulty_points : array @@ -339,23 +387,11 @@ class MsgSsrFlagTropoGridPoints(SBP): """ _parser = construct.Struct( - 'obs_time' / GPSTimeSec._parser, - 'num_msgs' / construct.Int8ul, - 'seq_num' / construct.Int8ul, - 'ssr_sol_id' / construct.Int8ul, - 'tile_set_id' / construct.Int16ul, - 'tile_id' / construct.Int16ul, - 'chain_id' / construct.Int8ul, + 'header' / IntegritySSRHeader._parser, 'n_faulty_points' / construct.Int8ul, 'faulty_points' / construct.GreedyRange(construct.Int16ul),) __slots__ = [ - 'obs_time', - 'num_msgs', - 'seq_num', - 'ssr_sol_id', - 'tile_set_id', - 'tile_id', - 'chain_id', + 'header', 'n_faulty_points', 'faulty_points', ] @@ -370,13 +406,7 @@ def __init__(self, sbp=None, **kwargs): super( MsgSsrFlagTropoGridPoints, self).__init__() self.msg_type = SBP_MSG_SSR_FLAG_TROPO_GRID_POINTS self.sender = kwargs.pop('sender', SENDER_ID) - self.obs_time = kwargs.pop('obs_time') - self.num_msgs = kwargs.pop('num_msgs') - self.seq_num = kwargs.pop('seq_num') - self.ssr_sol_id = kwargs.pop('ssr_sol_id') - self.tile_set_id = kwargs.pop('tile_set_id') - self.tile_id = kwargs.pop('tile_id') - self.chain_id = kwargs.pop('chain_id') + self.header = kwargs.pop('header') self.n_faulty_points = kwargs.pop('n_faulty_points') self.faulty_points = kwargs.pop('faulty_points') @@ -444,20 +474,8 @@ class MsgSsrFlagIonoGridPoints(SBP): ---------- sbp : SBP SBP parent object to inherit from. - obs_time : GPSTimeSec - GNSS reference time of the observation used to generate the flag. - num_msgs : int - Number of messages in the dataset - seq_num : int - Position of this message in the dataset - ssr_sol_id : int - SSR Solution ID. - tile_set_id : int - Unique identifier of the set this tile belongs to. - tile_id : int - Unique identifier of this tile in the tile set. - chain_id : int - Chain and type of flag. + header : IntegritySSRHeader + Header of an integrity message. n_faulty_points : int Number of faulty grid points. faulty_points : array @@ -467,23 +485,11 @@ class MsgSsrFlagIonoGridPoints(SBP): """ _parser = construct.Struct( - 'obs_time' / GPSTimeSec._parser, - 'num_msgs' / construct.Int8ul, - 'seq_num' / construct.Int8ul, - 'ssr_sol_id' / construct.Int8ul, - 'tile_set_id' / construct.Int16ul, - 'tile_id' / construct.Int16ul, - 'chain_id' / construct.Int8ul, + 'header' / IntegritySSRHeader._parser, 'n_faulty_points' / construct.Int8ul, 'faulty_points' / construct.GreedyRange(construct.Int16ul),) __slots__ = [ - 'obs_time', - 'num_msgs', - 'seq_num', - 'ssr_sol_id', - 'tile_set_id', - 'tile_id', - 'chain_id', + 'header', 'n_faulty_points', 'faulty_points', ] @@ -498,13 +504,7 @@ def __init__(self, sbp=None, **kwargs): super( MsgSsrFlagIonoGridPoints, self).__init__() self.msg_type = SBP_MSG_SSR_FLAG_IONO_GRID_POINTS self.sender = kwargs.pop('sender', SENDER_ID) - self.obs_time = kwargs.pop('obs_time') - self.num_msgs = kwargs.pop('num_msgs') - self.seq_num = kwargs.pop('seq_num') - self.ssr_sol_id = kwargs.pop('ssr_sol_id') - self.tile_set_id = kwargs.pop('tile_set_id') - self.tile_id = kwargs.pop('tile_id') - self.chain_id = kwargs.pop('chain_id') + self.header = kwargs.pop('header') self.n_faulty_points = kwargs.pop('n_faulty_points') self.faulty_points = kwargs.pop('faulty_points') @@ -572,20 +572,8 @@ class MsgSsrFlagIonoTileSatLos(SBP): ---------- sbp : SBP SBP parent object to inherit from. - obs_time : GPSTimeSec - GNSS reference time of the observation used to generate the flag. - num_msgs : int - Number of messages in the dataset - seq_num : int - Position of this message in the dataset - ssr_sol_id : int - SSR Solution ID. - tile_set_id : int - Unique identifier of the set this tile belongs to. - tile_id : int - Unique identifier of this tile in the tile set. - chain_id : int - Chain and type of flag. + header : IntegritySSRHeader + Header of an integrity message. n_faulty_los : int Number of faulty LOS. faulty_los : array @@ -595,23 +583,11 @@ class MsgSsrFlagIonoTileSatLos(SBP): """ _parser = construct.Struct( - 'obs_time' / GPSTimeSec._parser, - 'num_msgs' / construct.Int8ul, - 'seq_num' / construct.Int8ul, - 'ssr_sol_id' / construct.Int8ul, - 'tile_set_id' / construct.Int16ul, - 'tile_id' / construct.Int16ul, - 'chain_id' / construct.Int8ul, + 'header' / IntegritySSRHeader._parser, 'n_faulty_los' / construct.Int8ul, 'faulty_los' / construct.GreedyRange(SvId._parser),) __slots__ = [ - 'obs_time', - 'num_msgs', - 'seq_num', - 'ssr_sol_id', - 'tile_set_id', - 'tile_id', - 'chain_id', + 'header', 'n_faulty_los', 'faulty_los', ] @@ -626,13 +602,7 @@ def __init__(self, sbp=None, **kwargs): super( MsgSsrFlagIonoTileSatLos, self).__init__() self.msg_type = SBP_MSG_SSR_FLAG_IONO_TILE_SAT_LOS self.sender = kwargs.pop('sender', SENDER_ID) - self.obs_time = kwargs.pop('obs_time') - self.num_msgs = kwargs.pop('num_msgs') - self.seq_num = kwargs.pop('seq_num') - self.ssr_sol_id = kwargs.pop('ssr_sol_id') - self.tile_set_id = kwargs.pop('tile_set_id') - self.tile_id = kwargs.pop('tile_id') - self.chain_id = kwargs.pop('chain_id') + self.header = kwargs.pop('header') self.n_faulty_los = kwargs.pop('n_faulty_los') self.faulty_los = kwargs.pop('faulty_los') @@ -700,20 +670,8 @@ class MsgSsrFlagIonoGridPointSatLos(SBP): ---------- sbp : SBP SBP parent object to inherit from. - obs_time : GPSTimeSec - GNSS reference time of the observation used to generate the flag. - num_msgs : int - Number of messages in the dataset - seq_num : int - Position of this message in the dataset - ssr_sol_id : int - SSR Solution ID. - tile_set_id : int - Unique identifier of the set this tile belongs to. - tile_id : int - Unique identifier of this tile in the tile set. - chain_id : int - Chain and type of flag. + header : IntegritySSRHeader + Header of an integrity message. grid_point_id : int Index of the grid point. n_faulty_los : int @@ -725,24 +683,12 @@ class MsgSsrFlagIonoGridPointSatLos(SBP): """ _parser = construct.Struct( - 'obs_time' / GPSTimeSec._parser, - 'num_msgs' / construct.Int8ul, - 'seq_num' / construct.Int8ul, - 'ssr_sol_id' / construct.Int8ul, - 'tile_set_id' / construct.Int16ul, - 'tile_id' / construct.Int16ul, - 'chain_id' / construct.Int8ul, + 'header' / IntegritySSRHeader._parser, 'grid_point_id' / construct.Int16ul, 'n_faulty_los' / construct.Int8ul, 'faulty_los' / construct.GreedyRange(SvId._parser),) __slots__ = [ - 'obs_time', - 'num_msgs', - 'seq_num', - 'ssr_sol_id', - 'tile_set_id', - 'tile_id', - 'chain_id', + 'header', 'grid_point_id', 'n_faulty_los', 'faulty_los', @@ -758,13 +704,7 @@ def __init__(self, sbp=None, **kwargs): super( MsgSsrFlagIonoGridPointSatLos, self).__init__() self.msg_type = SBP_MSG_SSR_FLAG_IONO_GRID_POINT_SAT_LOS self.sender = kwargs.pop('sender', SENDER_ID) - self.obs_time = kwargs.pop('obs_time') - self.num_msgs = kwargs.pop('num_msgs') - self.seq_num = kwargs.pop('seq_num') - self.ssr_sol_id = kwargs.pop('ssr_sol_id') - self.tile_set_id = kwargs.pop('tile_set_id') - self.tile_id = kwargs.pop('tile_id') - self.chain_id = kwargs.pop('chain_id') + self.header = kwargs.pop('header') self.grid_point_id = kwargs.pop('grid_point_id') self.n_faulty_los = kwargs.pop('n_faulty_los') self.faulty_los = kwargs.pop('faulty_los') diff --git a/rust/sbp/src/messages/integrity.rs b/rust/sbp/src/messages/integrity.rs index 7b860e8642..40856865a0 100644 --- a/rust/sbp/src/messages/integrity.rs +++ b/rust/sbp/src/messages/integrity.rs @@ -13,6 +13,7 @@ // with generate.py. Please do not hand edit! //****************************************************************************/ //! Integrity flag messages +pub use integrity_ssr_header::IntegritySSRHeader; pub use msg_ssr_flag_high_level::MsgSsrFlagHighLevel; pub use msg_ssr_flag_iono_grid_point_sat_los::MsgSsrFlagIonoGridPointSatLos; pub use msg_ssr_flag_iono_grid_points::MsgSsrFlagIonoGridPoints; @@ -20,6 +21,79 @@ pub use msg_ssr_flag_iono_tile_sat_los::MsgSsrFlagIonoTileSatLos; pub use msg_ssr_flag_satellites::MsgSsrFlagSatellites; pub use msg_ssr_flag_tropo_grid_points::MsgSsrFlagTropoGridPoints; +pub mod integrity_ssr_header { + #![allow(unused_imports)] + + use super::*; + use crate::messages::gnss::*; + use crate::messages::lib::*; + /// Common fields for SSR integrity messages + #[cfg_attr(feature = "serde", derive(serde::Serialize))] + #[derive(Debug, Clone)] + pub struct IntegritySSRHeader { + /// GNSS reference time of the observation used to generate the flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] + pub obs_time: GpsTimeSec, + /// Number of messages in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] + pub num_msgs: u8, + /// Position of this message in the dataset + #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] + pub seq_num: u8, + /// SSR Solution ID. + #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] + pub ssr_sol_id: u8, + /// Unique identifier of the set this tile belongs to. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] + pub tile_set_id: u16, + /// Unique identifier of this tile in the tile set. + #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] + pub tile_id: u16, + /// Chain and type of flag. + #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] + pub chain_id: u8, + } + + impl WireFormat for IntegritySSRHeader { + const MIN_LEN: usize = ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN + + ::MIN_LEN; + fn len(&self) -> usize { + WireFormat::len(&self.obs_time) + + WireFormat::len(&self.num_msgs) + + WireFormat::len(&self.seq_num) + + WireFormat::len(&self.ssr_sol_id) + + WireFormat::len(&self.tile_set_id) + + WireFormat::len(&self.tile_id) + + WireFormat::len(&self.chain_id) + } + fn write(&self, buf: &mut B) { + WireFormat::write(&self.obs_time, buf); + WireFormat::write(&self.num_msgs, buf); + WireFormat::write(&self.seq_num, buf); + WireFormat::write(&self.ssr_sol_id, buf); + WireFormat::write(&self.tile_set_id, buf); + WireFormat::write(&self.tile_id, buf); + WireFormat::write(&self.chain_id, buf); + } + fn parse_unchecked(buf: &mut B) -> Self { + IntegritySSRHeader { + obs_time: WireFormat::parse_unchecked(buf), + num_msgs: WireFormat::parse_unchecked(buf), + seq_num: WireFormat::parse_unchecked(buf), + ssr_sol_id: WireFormat::parse_unchecked(buf), + tile_set_id: WireFormat::parse_unchecked(buf), + tile_id: WireFormat::parse_unchecked(buf), + chain_id: WireFormat::parse_unchecked(buf), + } + } + } +} + pub mod msg_ssr_flag_high_level { #![allow(unused_imports)] @@ -195,27 +269,9 @@ pub mod msg_ssr_flag_iono_grid_points { /// The message sender_id #[cfg_attr(feature = "serde", serde(skip_serializing))] pub sender_id: Option, - /// GNSS reference time of the observation used to generate the flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] - pub obs_time: GpsTimeSec, - /// Number of messages in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] - pub num_msgs: u8, - /// Position of this message in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] - pub seq_num: u8, - /// SSR Solution ID. - #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] - pub ssr_sol_id: u8, - /// Unique identifier of the set this tile belongs to. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] - pub tile_set_id: u16, - /// Unique identifier of this tile in the tile set. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] - pub tile_id: u16, - /// Chain and type of flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] - pub chain_id: u8, + /// Header of an integrity message. + #[cfg_attr(feature = "serde", serde(rename(serialize = "header")))] + pub header: IntegritySSRHeader, /// Number of faulty grid points. #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_points")))] pub n_faulty_points: u8, @@ -258,47 +314,23 @@ pub mod msg_ssr_flag_iono_grid_points { } impl WireFormat for MsgSsrFlagIonoGridPoints { - const MIN_LEN: usize = ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN + const MIN_LEN: usize = ::MIN_LEN + ::MIN_LEN + as WireFormat>::MIN_LEN; fn len(&self) -> usize { - WireFormat::len(&self.obs_time) - + WireFormat::len(&self.num_msgs) - + WireFormat::len(&self.seq_num) - + WireFormat::len(&self.ssr_sol_id) - + WireFormat::len(&self.tile_set_id) - + WireFormat::len(&self.tile_id) - + WireFormat::len(&self.chain_id) + WireFormat::len(&self.header) + WireFormat::len(&self.n_faulty_points) + WireFormat::len(&self.faulty_points) } fn write(&self, buf: &mut B) { - WireFormat::write(&self.obs_time, buf); - WireFormat::write(&self.num_msgs, buf); - WireFormat::write(&self.seq_num, buf); - WireFormat::write(&self.ssr_sol_id, buf); - WireFormat::write(&self.tile_set_id, buf); - WireFormat::write(&self.tile_id, buf); - WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.header, buf); WireFormat::write(&self.n_faulty_points, buf); WireFormat::write(&self.faulty_points, buf); } fn parse_unchecked(buf: &mut B) -> Self { MsgSsrFlagIonoGridPoints { sender_id: None, - obs_time: WireFormat::parse_unchecked(buf), - num_msgs: WireFormat::parse_unchecked(buf), - seq_num: WireFormat::parse_unchecked(buf), - ssr_sol_id: WireFormat::parse_unchecked(buf), - tile_set_id: WireFormat::parse_unchecked(buf), - tile_id: WireFormat::parse_unchecked(buf), - chain_id: WireFormat::parse_unchecked(buf), + header: WireFormat::parse_unchecked(buf), n_faulty_points: WireFormat::parse_unchecked(buf), faulty_points: WireFormat::parse_unchecked(buf), } @@ -319,27 +351,9 @@ pub mod msg_ssr_flag_iono_grid_point_sat_los { /// The message sender_id #[cfg_attr(feature = "serde", serde(skip_serializing))] pub sender_id: Option, - /// GNSS reference time of the observation used to generate the flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] - pub obs_time: GpsTimeSec, - /// Number of messages in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] - pub num_msgs: u8, - /// Position of this message in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] - pub seq_num: u8, - /// SSR Solution ID. - #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] - pub ssr_sol_id: u8, - /// Unique identifier of the set this tile belongs to. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] - pub tile_set_id: u16, - /// Unique identifier of this tile in the tile set. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] - pub tile_id: u16, - /// Chain and type of flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] - pub chain_id: u8, + /// Header of an integrity message. + #[cfg_attr(feature = "serde", serde(rename(serialize = "header")))] + pub header: IntegritySSRHeader, /// Index of the grid point. #[cfg_attr(feature = "serde", serde(rename(serialize = "grid_point_id")))] pub grid_point_id: u16, @@ -385,36 +399,18 @@ pub mod msg_ssr_flag_iono_grid_point_sat_los { } impl WireFormat for MsgSsrFlagIonoGridPointSatLos { - const MIN_LEN: usize = ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN + const MIN_LEN: usize = ::MIN_LEN + ::MIN_LEN + ::MIN_LEN + as WireFormat>::MIN_LEN; fn len(&self) -> usize { - WireFormat::len(&self.obs_time) - + WireFormat::len(&self.num_msgs) - + WireFormat::len(&self.seq_num) - + WireFormat::len(&self.ssr_sol_id) - + WireFormat::len(&self.tile_set_id) - + WireFormat::len(&self.tile_id) - + WireFormat::len(&self.chain_id) + WireFormat::len(&self.header) + WireFormat::len(&self.grid_point_id) + WireFormat::len(&self.n_faulty_los) + WireFormat::len(&self.faulty_los) } fn write(&self, buf: &mut B) { - WireFormat::write(&self.obs_time, buf); - WireFormat::write(&self.num_msgs, buf); - WireFormat::write(&self.seq_num, buf); - WireFormat::write(&self.ssr_sol_id, buf); - WireFormat::write(&self.tile_set_id, buf); - WireFormat::write(&self.tile_id, buf); - WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.header, buf); WireFormat::write(&self.grid_point_id, buf); WireFormat::write(&self.n_faulty_los, buf); WireFormat::write(&self.faulty_los, buf); @@ -422,13 +418,7 @@ pub mod msg_ssr_flag_iono_grid_point_sat_los { fn parse_unchecked(buf: &mut B) -> Self { MsgSsrFlagIonoGridPointSatLos { sender_id: None, - obs_time: WireFormat::parse_unchecked(buf), - num_msgs: WireFormat::parse_unchecked(buf), - seq_num: WireFormat::parse_unchecked(buf), - ssr_sol_id: WireFormat::parse_unchecked(buf), - tile_set_id: WireFormat::parse_unchecked(buf), - tile_id: WireFormat::parse_unchecked(buf), - chain_id: WireFormat::parse_unchecked(buf), + header: WireFormat::parse_unchecked(buf), grid_point_id: WireFormat::parse_unchecked(buf), n_faulty_los: WireFormat::parse_unchecked(buf), faulty_los: WireFormat::parse_unchecked(buf), @@ -450,27 +440,9 @@ pub mod msg_ssr_flag_iono_tile_sat_los { /// The message sender_id #[cfg_attr(feature = "serde", serde(skip_serializing))] pub sender_id: Option, - /// GNSS reference time of the observation used to generate the flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] - pub obs_time: GpsTimeSec, - /// Number of messages in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] - pub num_msgs: u8, - /// Position of this message in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] - pub seq_num: u8, - /// SSR Solution ID. - #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] - pub ssr_sol_id: u8, - /// Unique identifier of the set this tile belongs to. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] - pub tile_set_id: u16, - /// Unique identifier of this tile in the tile set. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] - pub tile_id: u16, - /// Chain and type of flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] - pub chain_id: u8, + /// Header of an integrity message. + #[cfg_attr(feature = "serde", serde(rename(serialize = "header")))] + pub header: IntegritySSRHeader, /// Number of faulty LOS. #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_los")))] pub n_faulty_los: u8, @@ -513,47 +485,23 @@ pub mod msg_ssr_flag_iono_tile_sat_los { } impl WireFormat for MsgSsrFlagIonoTileSatLos { - const MIN_LEN: usize = ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN + const MIN_LEN: usize = ::MIN_LEN + ::MIN_LEN + as WireFormat>::MIN_LEN; fn len(&self) -> usize { - WireFormat::len(&self.obs_time) - + WireFormat::len(&self.num_msgs) - + WireFormat::len(&self.seq_num) - + WireFormat::len(&self.ssr_sol_id) - + WireFormat::len(&self.tile_set_id) - + WireFormat::len(&self.tile_id) - + WireFormat::len(&self.chain_id) + WireFormat::len(&self.header) + WireFormat::len(&self.n_faulty_los) + WireFormat::len(&self.faulty_los) } fn write(&self, buf: &mut B) { - WireFormat::write(&self.obs_time, buf); - WireFormat::write(&self.num_msgs, buf); - WireFormat::write(&self.seq_num, buf); - WireFormat::write(&self.ssr_sol_id, buf); - WireFormat::write(&self.tile_set_id, buf); - WireFormat::write(&self.tile_id, buf); - WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.header, buf); WireFormat::write(&self.n_faulty_los, buf); WireFormat::write(&self.faulty_los, buf); } fn parse_unchecked(buf: &mut B) -> Self { MsgSsrFlagIonoTileSatLos { sender_id: None, - obs_time: WireFormat::parse_unchecked(buf), - num_msgs: WireFormat::parse_unchecked(buf), - seq_num: WireFormat::parse_unchecked(buf), - ssr_sol_id: WireFormat::parse_unchecked(buf), - tile_set_id: WireFormat::parse_unchecked(buf), - tile_id: WireFormat::parse_unchecked(buf), - chain_id: WireFormat::parse_unchecked(buf), + header: WireFormat::parse_unchecked(buf), n_faulty_los: WireFormat::parse_unchecked(buf), faulty_los: WireFormat::parse_unchecked(buf), } @@ -691,27 +639,9 @@ pub mod msg_ssr_flag_tropo_grid_points { /// The message sender_id #[cfg_attr(feature = "serde", serde(skip_serializing))] pub sender_id: Option, - /// GNSS reference time of the observation used to generate the flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "obs_time")))] - pub obs_time: GpsTimeSec, - /// Number of messages in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "num_msgs")))] - pub num_msgs: u8, - /// Position of this message in the dataset - #[cfg_attr(feature = "serde", serde(rename(serialize = "seq_num")))] - pub seq_num: u8, - /// SSR Solution ID. - #[cfg_attr(feature = "serde", serde(rename(serialize = "ssr_sol_id")))] - pub ssr_sol_id: u8, - /// Unique identifier of the set this tile belongs to. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_set_id")))] - pub tile_set_id: u16, - /// Unique identifier of this tile in the tile set. - #[cfg_attr(feature = "serde", serde(rename(serialize = "tile_id")))] - pub tile_id: u16, - /// Chain and type of flag. - #[cfg_attr(feature = "serde", serde(rename(serialize = "chain_id")))] - pub chain_id: u8, + /// Header of an integrity message. + #[cfg_attr(feature = "serde", serde(rename(serialize = "header")))] + pub header: IntegritySSRHeader, /// Number of faulty grid points. #[cfg_attr(feature = "serde", serde(rename(serialize = "n_faulty_points")))] pub n_faulty_points: u8, @@ -754,47 +684,23 @@ pub mod msg_ssr_flag_tropo_grid_points { } impl WireFormat for MsgSsrFlagTropoGridPoints { - const MIN_LEN: usize = ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN - + ::MIN_LEN + const MIN_LEN: usize = ::MIN_LEN + ::MIN_LEN + as WireFormat>::MIN_LEN; fn len(&self) -> usize { - WireFormat::len(&self.obs_time) - + WireFormat::len(&self.num_msgs) - + WireFormat::len(&self.seq_num) - + WireFormat::len(&self.ssr_sol_id) - + WireFormat::len(&self.tile_set_id) - + WireFormat::len(&self.tile_id) - + WireFormat::len(&self.chain_id) + WireFormat::len(&self.header) + WireFormat::len(&self.n_faulty_points) + WireFormat::len(&self.faulty_points) } fn write(&self, buf: &mut B) { - WireFormat::write(&self.obs_time, buf); - WireFormat::write(&self.num_msgs, buf); - WireFormat::write(&self.seq_num, buf); - WireFormat::write(&self.ssr_sol_id, buf); - WireFormat::write(&self.tile_set_id, buf); - WireFormat::write(&self.tile_id, buf); - WireFormat::write(&self.chain_id, buf); + WireFormat::write(&self.header, buf); WireFormat::write(&self.n_faulty_points, buf); WireFormat::write(&self.faulty_points, buf); } fn parse_unchecked(buf: &mut B) -> Self { MsgSsrFlagTropoGridPoints { sender_id: None, - obs_time: WireFormat::parse_unchecked(buf), - num_msgs: WireFormat::parse_unchecked(buf), - seq_num: WireFormat::parse_unchecked(buf), - ssr_sol_id: WireFormat::parse_unchecked(buf), - tile_set_id: WireFormat::parse_unchecked(buf), - tile_id: WireFormat::parse_unchecked(buf), - chain_id: WireFormat::parse_unchecked(buf), + header: WireFormat::parse_unchecked(buf), n_faulty_points: WireFormat::parse_unchecked(buf), faulty_points: WireFormat::parse_unchecked(buf), } diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs index 515170a7e3..1194250cc7 100644 --- a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los.rs @@ -42,11 +42,6 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los() { "incorrect sender id, expected 0x0042, is {}", sender_id ); - assert_eq!( - msg.chain_id, 6, - "incorrect value for chain_id, expected 6, is {}", - msg.chain_id - ); assert_eq!( msg.faulty_los[0].constellation, 11, "incorrect value for faulty_los[0].constellation, expected 11, is {}", @@ -73,44 +68,49 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_grid_point_sat_los() { msg.grid_point_id ); assert_eq!( - msg.n_faulty_los, 2, - "incorrect value for n_faulty_los, expected 2, is {}", - msg.n_faulty_los + msg.header.chain_id, 6, + "incorrect value for header.chain_id, expected 6, is {}", + msg.header.chain_id ); assert_eq!( - msg.num_msgs, 1, - "incorrect value for num_msgs, expected 1, is {}", - msg.num_msgs + msg.header.num_msgs, 1, + "incorrect value for header.num_msgs, expected 1, is {}", + msg.header.num_msgs ); assert_eq!( - msg.obs_time.tow, 180, - "incorrect value for obs_time.tow, expected 180, is {}", - msg.obs_time.tow + msg.header.obs_time.tow, 180, + "incorrect value for header.obs_time.tow, expected 180, is {}", + msg.header.obs_time.tow ); assert_eq!( - msg.obs_time.wn, 3, - "incorrect value for obs_time.wn, expected 3, is {}", - msg.obs_time.wn + msg.header.obs_time.wn, 3, + "incorrect value for header.obs_time.wn, expected 3, is {}", + msg.header.obs_time.wn ); assert_eq!( - msg.seq_num, 2, - "incorrect value for seq_num, expected 2, is {}", - msg.seq_num + msg.header.seq_num, 2, + "incorrect value for header.seq_num, expected 2, is {}", + msg.header.seq_num ); assert_eq!( - msg.ssr_sol_id, 3, - "incorrect value for ssr_sol_id, expected 3, is {}", - msg.ssr_sol_id + msg.header.ssr_sol_id, 3, + "incorrect value for header.ssr_sol_id, expected 3, is {}", + msg.header.ssr_sol_id ); assert_eq!( - msg.tile_id, 5, - "incorrect value for tile_id, expected 5, is {}", - msg.tile_id + msg.header.tile_id, 5, + "incorrect value for header.tile_id, expected 5, is {}", + msg.header.tile_id ); assert_eq!( - msg.tile_set_id, 4, - "incorrect value for tile_set_id, expected 4, is {}", - msg.tile_set_id + msg.header.tile_set_id, 4, + "incorrect value for header.tile_set_id, expected 4, is {}", + msg.header.tile_set_id + ); + assert_eq!( + msg.n_faulty_los, 2, + "incorrect value for n_faulty_los, expected 2, is {}", + msg.n_faulty_los ); } _ => panic!("Invalid message type! Expected a MsgSsrFlagIonoGridPointSatLos"), diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs index 643082c87d..7f1011fcf7 100644 --- a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points.rs @@ -42,11 +42,6 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points() { "incorrect sender id, expected 0x0042, is {}", sender_id ); - assert_eq!( - msg.chain_id, 6, - "incorrect value for chain_id, expected 6, is {}", - msg.chain_id - ); assert_eq!( msg.faulty_points[0], 10, "incorrect value for faulty_points[0], expected 10, is {}", @@ -63,44 +58,49 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_grid_points() { msg.faulty_points[2] ); assert_eq!( - msg.n_faulty_points, 3, - "incorrect value for n_faulty_points, expected 3, is {}", - msg.n_faulty_points + msg.header.chain_id, 6, + "incorrect value for header.chain_id, expected 6, is {}", + msg.header.chain_id ); assert_eq!( - msg.num_msgs, 1, - "incorrect value for num_msgs, expected 1, is {}", - msg.num_msgs + msg.header.num_msgs, 1, + "incorrect value for header.num_msgs, expected 1, is {}", + msg.header.num_msgs ); assert_eq!( - msg.obs_time.tow, 180, - "incorrect value for obs_time.tow, expected 180, is {}", - msg.obs_time.tow + msg.header.obs_time.tow, 180, + "incorrect value for header.obs_time.tow, expected 180, is {}", + msg.header.obs_time.tow ); assert_eq!( - msg.obs_time.wn, 3, - "incorrect value for obs_time.wn, expected 3, is {}", - msg.obs_time.wn + msg.header.obs_time.wn, 3, + "incorrect value for header.obs_time.wn, expected 3, is {}", + msg.header.obs_time.wn ); assert_eq!( - msg.seq_num, 2, - "incorrect value for seq_num, expected 2, is {}", - msg.seq_num + msg.header.seq_num, 2, + "incorrect value for header.seq_num, expected 2, is {}", + msg.header.seq_num ); assert_eq!( - msg.ssr_sol_id, 3, - "incorrect value for ssr_sol_id, expected 3, is {}", - msg.ssr_sol_id + msg.header.ssr_sol_id, 3, + "incorrect value for header.ssr_sol_id, expected 3, is {}", + msg.header.ssr_sol_id ); assert_eq!( - msg.tile_id, 5, - "incorrect value for tile_id, expected 5, is {}", - msg.tile_id + msg.header.tile_id, 5, + "incorrect value for header.tile_id, expected 5, is {}", + msg.header.tile_id ); assert_eq!( - msg.tile_set_id, 4, - "incorrect value for tile_set_id, expected 4, is {}", - msg.tile_set_id + msg.header.tile_set_id, 4, + "incorrect value for header.tile_set_id, expected 4, is {}", + msg.header.tile_set_id + ); + assert_eq!( + msg.n_faulty_points, 3, + "incorrect value for n_faulty_points, expected 3, is {}", + msg.n_faulty_points ); } _ => panic!("Invalid message type! Expected a MsgSsrFlagIonoGridPoints"), diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs index 09102896f4..48692a3879 100644 --- a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los.rs @@ -42,11 +42,6 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los() { "incorrect sender id, expected 0x0042, is {}", sender_id ); - assert_eq!( - msg.chain_id, 6, - "incorrect value for chain_id, expected 6, is {}", - msg.chain_id - ); assert_eq!( msg.faulty_los[0].constellation, 11, "incorrect value for faulty_los[0].constellation, expected 11, is {}", @@ -68,44 +63,49 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_iono_tile_sat_los() { msg.faulty_los[1].sat_id ); assert_eq!( - msg.n_faulty_los, 2, - "incorrect value for n_faulty_los, expected 2, is {}", - msg.n_faulty_los + msg.header.chain_id, 6, + "incorrect value for header.chain_id, expected 6, is {}", + msg.header.chain_id ); assert_eq!( - msg.num_msgs, 1, - "incorrect value for num_msgs, expected 1, is {}", - msg.num_msgs + msg.header.num_msgs, 1, + "incorrect value for header.num_msgs, expected 1, is {}", + msg.header.num_msgs ); assert_eq!( - msg.obs_time.tow, 180, - "incorrect value for obs_time.tow, expected 180, is {}", - msg.obs_time.tow + msg.header.obs_time.tow, 180, + "incorrect value for header.obs_time.tow, expected 180, is {}", + msg.header.obs_time.tow ); assert_eq!( - msg.obs_time.wn, 3, - "incorrect value for obs_time.wn, expected 3, is {}", - msg.obs_time.wn + msg.header.obs_time.wn, 3, + "incorrect value for header.obs_time.wn, expected 3, is {}", + msg.header.obs_time.wn ); assert_eq!( - msg.seq_num, 2, - "incorrect value for seq_num, expected 2, is {}", - msg.seq_num + msg.header.seq_num, 2, + "incorrect value for header.seq_num, expected 2, is {}", + msg.header.seq_num ); assert_eq!( - msg.ssr_sol_id, 3, - "incorrect value for ssr_sol_id, expected 3, is {}", - msg.ssr_sol_id + msg.header.ssr_sol_id, 3, + "incorrect value for header.ssr_sol_id, expected 3, is {}", + msg.header.ssr_sol_id ); assert_eq!( - msg.tile_id, 5, - "incorrect value for tile_id, expected 5, is {}", - msg.tile_id + msg.header.tile_id, 5, + "incorrect value for header.tile_id, expected 5, is {}", + msg.header.tile_id ); assert_eq!( - msg.tile_set_id, 4, - "incorrect value for tile_set_id, expected 4, is {}", - msg.tile_set_id + msg.header.tile_set_id, 4, + "incorrect value for header.tile_set_id, expected 4, is {}", + msg.header.tile_set_id + ); + assert_eq!( + msg.n_faulty_los, 2, + "incorrect value for n_faulty_los, expected 2, is {}", + msg.n_faulty_los ); } _ => panic!("Invalid message type! Expected a MsgSsrFlagIonoTileSatLos"), diff --git a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs index 3c2c50924a..ec2e647fed 100644 --- a/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs +++ b/rust/sbp/tests/integration/auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points.rs @@ -42,11 +42,6 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points() { "incorrect sender id, expected 0x0042, is {}", sender_id ); - assert_eq!( - msg.chain_id, 6, - "incorrect value for chain_id, expected 6, is {}", - msg.chain_id - ); assert_eq!( msg.faulty_points[0], 10, "incorrect value for faulty_points[0], expected 10, is {}", @@ -63,44 +58,49 @@ fn test_auto_check_sbp_integrity_msg_ssr_flag_tropo_grid_points() { msg.faulty_points[2] ); assert_eq!( - msg.n_faulty_points, 3, - "incorrect value for n_faulty_points, expected 3, is {}", - msg.n_faulty_points + msg.header.chain_id, 6, + "incorrect value for header.chain_id, expected 6, is {}", + msg.header.chain_id ); assert_eq!( - msg.num_msgs, 1, - "incorrect value for num_msgs, expected 1, is {}", - msg.num_msgs + msg.header.num_msgs, 1, + "incorrect value for header.num_msgs, expected 1, is {}", + msg.header.num_msgs ); assert_eq!( - msg.obs_time.tow, 180, - "incorrect value for obs_time.tow, expected 180, is {}", - msg.obs_time.tow + msg.header.obs_time.tow, 180, + "incorrect value for header.obs_time.tow, expected 180, is {}", + msg.header.obs_time.tow ); assert_eq!( - msg.obs_time.wn, 3, - "incorrect value for obs_time.wn, expected 3, is {}", - msg.obs_time.wn + msg.header.obs_time.wn, 3, + "incorrect value for header.obs_time.wn, expected 3, is {}", + msg.header.obs_time.wn ); assert_eq!( - msg.seq_num, 2, - "incorrect value for seq_num, expected 2, is {}", - msg.seq_num + msg.header.seq_num, 2, + "incorrect value for header.seq_num, expected 2, is {}", + msg.header.seq_num ); assert_eq!( - msg.ssr_sol_id, 3, - "incorrect value for ssr_sol_id, expected 3, is {}", - msg.ssr_sol_id + msg.header.ssr_sol_id, 3, + "incorrect value for header.ssr_sol_id, expected 3, is {}", + msg.header.ssr_sol_id ); assert_eq!( - msg.tile_id, 5, - "incorrect value for tile_id, expected 5, is {}", - msg.tile_id + msg.header.tile_id, 5, + "incorrect value for header.tile_id, expected 5, is {}", + msg.header.tile_id ); assert_eq!( - msg.tile_set_id, 4, - "incorrect value for tile_set_id, expected 4, is {}", - msg.tile_set_id + msg.header.tile_set_id, 4, + "incorrect value for header.tile_set_id, expected 4, is {}", + msg.header.tile_set_id + ); + assert_eq!( + msg.n_faulty_points, 3, + "incorrect value for n_faulty_points, expected 3, is {}", + msg.n_faulty_points ); } _ => panic!("Invalid message type! Expected a MsgSsrFlagTropoGridPoints"), diff --git a/sbpjson/elm/SbpJson.elm b/sbpjson/elm/SbpJson.elm index bc338b1565..504afade1e 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, 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, msgSsrFlagHighLevel, msgSsrFlagIonoGridPointSatLos, msgSsrFlagIonoGridPoints, msgSsrFlagIonoTileSatLos, msgSsrFlagSatellites, msgSsrFlagTropoGridPoints, msgSsrGriddedCorrection, msgSsrGriddedCorrectionBounds, msgSsrOrbitClock, msgSsrOrbitClockBounds, msgSsrOrbitClockBoundsDegradation, 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, orbitClockBoundDegradation, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, stecSatElementIntegrity, 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, integritySSRHeader, 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, msgSsrFlagHighLevel, msgSsrFlagIonoGridPointSatLos, msgSsrFlagIonoGridPoints, msgSsrFlagIonoTileSatLos, msgSsrFlagSatellites, msgSsrFlagTropoGridPoints, msgSsrGriddedCorrection, msgSsrGriddedCorrectionBounds, msgSsrOrbitClock, msgSsrOrbitClockBounds, msgSsrOrbitClockBoundsDegradation, 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, orbitClockBoundDegradation, packedObsContent, packedOsrContent, period, phaseBiasesContent, stecHeader, stecResidual, stecResidualNoStd, stecSatElement, stecSatElementIntegrity, satelliteAPC, solutionInputType, statusJournalItem, subSystemReport, svAzEl, svID, trackingChannelCorrelation, trackingChannelState, troposphericDelayCorrection, troposphericDelayCorrectionNoStd, uartChannel) -- -- and you're off to the races with -- @@ -27,6 +27,7 @@ -- decodeString gridElementNoStd myJsonString -- decodeString griddedCorrectionHeader myJsonString -- decodeString imuInputType myJsonString +-- decodeString integritySSRHeader myJsonString -- decodeString latency myJsonString -- decodeString measurementState myJsonString -- decodeString msgAcqResult myJsonString @@ -268,6 +269,9 @@ module SbpJson exposing , IMUInputType , imuInputTypeToString , imuInputType + , IntegritySSRHeader + , integritySSRHeaderToString + , integritySSRHeader , Latency , latencyToString , latency @@ -2507,10 +2511,14 @@ type alias MsgSsrFlagHighLevel = } type alias MsgSsrFlagIonoGridPointSatLos = - { chainID : Int - , faultyLos : Array SvID + { faultyLos : Array SvID , gridPointID : Int + , header : IntegritySSRHeader , nFaultyLos : Int + } + +type alias IntegritySSRHeader = + { chainID : Int , numMsgs : Int , obsTime : GpsTimeSEC , seqNum : Int @@ -2520,27 +2528,15 @@ type alias MsgSsrFlagIonoGridPointSatLos = } type alias MsgSsrFlagIonoGridPoints = - { chainID : Int - , faultyPoints : Array Int + { faultyPoints : Array Int + , header : IntegritySSRHeader , nFaultyPoints : Int - , numMsgs : Int - , obsTime : GpsTimeSEC - , seqNum : Int - , ssrSolID : Int - , tileID : Int - , tileSetID : Int } type alias MsgSsrFlagIonoTileSatLos = - { chainID : Int - , faultyLos : Array SvID + { faultyLos : Array SvID + , header : IntegritySSRHeader , nFaultyLos : Int - , numMsgs : Int - , obsTime : GpsTimeSEC - , seqNum : Int - , ssrSolID : Int - , tileID : Int - , tileSetID : Int } type alias MsgSsrFlagSatellites = @@ -2555,15 +2551,9 @@ type alias MsgSsrFlagSatellites = } type alias MsgSsrFlagTropoGridPoints = - { chainID : Int - , faultyPoints : Array Int + { faultyPoints : Array Int + , header : IntegritySSRHeader , nFaultyPoints : Int - , numMsgs : Int - , obsTime : GpsTimeSEC - , seqNum : Int - , ssrSolID : Int - , tileID : Int - , tileSetID : Int } {-| STEC residuals are per space vehicle, troposphere is not., @@ -3243,6 +3233,9 @@ griddedCorrectionHeaderToString r = Jenc.encode 0 (encodeGriddedCorrectionHeader imuInputTypeToString : IMUInputType -> String imuInputTypeToString r = Jenc.encode 0 (encodeIMUInputType r) +integritySSRHeaderToString : IntegritySSRHeader -> String +integritySSRHeaderToString r = Jenc.encode 0 (encodeIntegritySSRHeader r) + latencyToString : Latency -> String latencyToString r = Jenc.encode 0 (encodeLatency r) @@ -6440,10 +6433,24 @@ encodeMsgSsrFlagHighLevel x = msgSsrFlagIonoGridPointSatLos : Jdec.Decoder MsgSsrFlagIonoGridPointSatLos msgSsrFlagIonoGridPointSatLos = Jpipe.decode MsgSsrFlagIonoGridPointSatLos - |> Jpipe.required "chain_id" Jdec.int |> Jpipe.required "faulty_los" (Jdec.array svID) |> Jpipe.required "grid_point_id" Jdec.int + |> Jpipe.required "header" integritySSRHeader |> Jpipe.required "n_faulty_los" Jdec.int + +encodeMsgSsrFlagIonoGridPointSatLos : MsgSsrFlagIonoGridPointSatLos -> Jenc.Value +encodeMsgSsrFlagIonoGridPointSatLos x = + Jenc.object + [ ("faulty_los", makeArrayEncoder encodeSvID x.faultyLos) + , ("grid_point_id", Jenc.int x.gridPointID) + , ("header", encodeIntegritySSRHeader x.header) + , ("n_faulty_los", Jenc.int x.nFaultyLos) + ] + +integritySSRHeader : Jdec.Decoder IntegritySSRHeader +integritySSRHeader = + Jpipe.decode IntegritySSRHeader + |> Jpipe.required "chain_id" Jdec.int |> Jpipe.required "num_msgs" Jdec.int |> Jpipe.required "obs_time" gpsTimeSEC |> Jpipe.required "seq_num" Jdec.int @@ -6451,13 +6458,10 @@ msgSsrFlagIonoGridPointSatLos = |> Jpipe.required "tile_id" Jdec.int |> Jpipe.required "tile_set_id" Jdec.int -encodeMsgSsrFlagIonoGridPointSatLos : MsgSsrFlagIonoGridPointSatLos -> Jenc.Value -encodeMsgSsrFlagIonoGridPointSatLos x = +encodeIntegritySSRHeader : IntegritySSRHeader -> Jenc.Value +encodeIntegritySSRHeader x = Jenc.object [ ("chain_id", Jenc.int x.chainID) - , ("faulty_los", makeArrayEncoder encodeSvID x.faultyLos) - , ("grid_point_id", Jenc.int x.gridPointID) - , ("n_faulty_los", Jenc.int x.nFaultyLos) , ("num_msgs", Jenc.int x.numMsgs) , ("obs_time", encodeGpsTimeSEC x.obsTime) , ("seq_num", Jenc.int x.seqNum) @@ -6469,55 +6473,31 @@ encodeMsgSsrFlagIonoGridPointSatLos x = msgSsrFlagIonoGridPoints : Jdec.Decoder MsgSsrFlagIonoGridPoints msgSsrFlagIonoGridPoints = Jpipe.decode MsgSsrFlagIonoGridPoints - |> Jpipe.required "chain_id" Jdec.int |> Jpipe.required "faulty_points" (Jdec.array Jdec.int) + |> Jpipe.required "header" integritySSRHeader |> Jpipe.required "n_faulty_points" Jdec.int - |> Jpipe.required "num_msgs" Jdec.int - |> Jpipe.required "obs_time" gpsTimeSEC - |> Jpipe.required "seq_num" Jdec.int - |> Jpipe.required "ssr_sol_id" Jdec.int - |> Jpipe.required "tile_id" Jdec.int - |> Jpipe.required "tile_set_id" Jdec.int encodeMsgSsrFlagIonoGridPoints : MsgSsrFlagIonoGridPoints -> Jenc.Value encodeMsgSsrFlagIonoGridPoints x = Jenc.object - [ ("chain_id", Jenc.int x.chainID) - , ("faulty_points", makeArrayEncoder Jenc.int x.faultyPoints) + [ ("faulty_points", makeArrayEncoder Jenc.int x.faultyPoints) + , ("header", encodeIntegritySSRHeader x.header) , ("n_faulty_points", Jenc.int x.nFaultyPoints) - , ("num_msgs", Jenc.int x.numMsgs) - , ("obs_time", encodeGpsTimeSEC x.obsTime) - , ("seq_num", Jenc.int x.seqNum) - , ("ssr_sol_id", Jenc.int x.ssrSolID) - , ("tile_id", Jenc.int x.tileID) - , ("tile_set_id", Jenc.int x.tileSetID) ] msgSsrFlagIonoTileSatLos : Jdec.Decoder MsgSsrFlagIonoTileSatLos msgSsrFlagIonoTileSatLos = Jpipe.decode MsgSsrFlagIonoTileSatLos - |> Jpipe.required "chain_id" Jdec.int |> Jpipe.required "faulty_los" (Jdec.array svID) + |> Jpipe.required "header" integritySSRHeader |> Jpipe.required "n_faulty_los" Jdec.int - |> Jpipe.required "num_msgs" Jdec.int - |> Jpipe.required "obs_time" gpsTimeSEC - |> Jpipe.required "seq_num" Jdec.int - |> Jpipe.required "ssr_sol_id" Jdec.int - |> Jpipe.required "tile_id" Jdec.int - |> Jpipe.required "tile_set_id" Jdec.int encodeMsgSsrFlagIonoTileSatLos : MsgSsrFlagIonoTileSatLos -> Jenc.Value encodeMsgSsrFlagIonoTileSatLos x = Jenc.object - [ ("chain_id", Jenc.int x.chainID) - , ("faulty_los", makeArrayEncoder encodeSvID x.faultyLos) + [ ("faulty_los", makeArrayEncoder encodeSvID x.faultyLos) + , ("header", encodeIntegritySSRHeader x.header) , ("n_faulty_los", Jenc.int x.nFaultyLos) - , ("num_msgs", Jenc.int x.numMsgs) - , ("obs_time", encodeGpsTimeSEC x.obsTime) - , ("seq_num", Jenc.int x.seqNum) - , ("ssr_sol_id", Jenc.int x.ssrSolID) - , ("tile_id", Jenc.int x.tileID) - , ("tile_set_id", Jenc.int x.tileSetID) ] msgSsrFlagSatellites : Jdec.Decoder MsgSsrFlagSatellites @@ -6548,28 +6528,16 @@ encodeMsgSsrFlagSatellites x = msgSsrFlagTropoGridPoints : Jdec.Decoder MsgSsrFlagTropoGridPoints msgSsrFlagTropoGridPoints = Jpipe.decode MsgSsrFlagTropoGridPoints - |> Jpipe.required "chain_id" Jdec.int |> Jpipe.required "faulty_points" (Jdec.array Jdec.int) + |> Jpipe.required "header" integritySSRHeader |> Jpipe.required "n_faulty_points" Jdec.int - |> Jpipe.required "num_msgs" Jdec.int - |> Jpipe.required "obs_time" gpsTimeSEC - |> Jpipe.required "seq_num" Jdec.int - |> Jpipe.required "ssr_sol_id" Jdec.int - |> Jpipe.required "tile_id" Jdec.int - |> Jpipe.required "tile_set_id" Jdec.int encodeMsgSsrFlagTropoGridPoints : MsgSsrFlagTropoGridPoints -> Jenc.Value encodeMsgSsrFlagTropoGridPoints x = Jenc.object - [ ("chain_id", Jenc.int x.chainID) - , ("faulty_points", makeArrayEncoder Jenc.int x.faultyPoints) + [ ("faulty_points", makeArrayEncoder Jenc.int x.faultyPoints) + , ("header", encodeIntegritySSRHeader x.header) , ("n_faulty_points", Jenc.int x.nFaultyPoints) - , ("num_msgs", Jenc.int x.numMsgs) - , ("obs_time", encodeGpsTimeSEC x.obsTime) - , ("seq_num", Jenc.int x.seqNum) - , ("ssr_sol_id", Jenc.int x.ssrSolID) - , ("tile_id", Jenc.int x.tileID) - , ("tile_set_id", Jenc.int x.tileSetID) ] msgSsrGriddedCorrection : Jdec.Decoder MsgSsrGriddedCorrection diff --git a/sbpjson/javascript/SbpJson.js b/sbpjson/javascript/SbpJson.js index 5fa8cdd66f..146a268487 100644 --- a/sbpjson/javascript/SbpJson.js +++ b/sbpjson/javascript/SbpJson.js @@ -20,6 +20,7 @@ // const gridElementNoStd = Convert.toGridElementNoStd(json); // const griddedCorrectionHeader = Convert.toGriddedCorrectionHeader(json); // const iMUInputType = Convert.toIMUInputType(json); +// const integritySSRHeader = Convert.toIntegritySSRHeader(json); // const latency = Convert.toLatency(json); // const measurementState = Convert.toMeasurementState(json); // const msgAcqResult = Convert.toMsgAcqResult(json); @@ -355,6 +356,14 @@ function iMUInputTypeToJson(value) { return JSON.stringify(uncast(value, r("IMUInputType")), null, 2); } +function toIntegritySSRHeader(json) { + return cast(JSON.parse(json), r("IntegritySSRHeader")); +} + +function integritySSRHeaderToJson(value) { + return JSON.stringify(uncast(value, r("IntegritySSRHeader")), null, 2); +} + function toLatency(json) { return cast(JSON.parse(json), r("Latency")); } @@ -2931,10 +2940,13 @@ const typeMap = { { json: "use_tropo_grid_points", js: "use_tropo_grid_points", typ: 0 }, ], "any"), "MsgSsrFlagIonoGridPointSatLos": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_los", js: "faulty_los", typ: a(r("SvID")) }, { json: "grid_point_id", js: "grid_point_id", typ: 0 }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_los", js: "n_faulty_los", typ: 0 }, + ], "any"), + "IntegritySSRHeader": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, { json: "num_msgs", js: "num_msgs", typ: 0 }, { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, { json: "seq_num", js: "seq_num", typ: 0 }, @@ -2943,26 +2955,14 @@ const typeMap = { { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrFlagIonoGridPoints": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_points", js: "faulty_points", typ: a(0) }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_points", js: "n_faulty_points", typ: 0 }, - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, - { json: "tile_id", js: "tile_id", typ: 0 }, - { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrFlagIonoTileSatLos": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_los", js: "faulty_los", typ: a(r("SvID")) }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_los", js: "n_faulty_los", typ: 0 }, - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, - { json: "tile_id", js: "tile_id", typ: 0 }, - { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrFlagSatellites": o([ { json: "chain_id", js: "chain_id", typ: 0 }, @@ -2975,15 +2975,9 @@ const typeMap = { { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, ], "any"), "MsgSsrFlagTropoGridPoints": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_points", js: "faulty_points", typ: a(0) }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_points", js: "n_faulty_points", typ: 0 }, - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, - { json: "tile_id", js: "tile_id", typ: 0 }, - { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrGriddedCorrection": o([ { json: "header", js: "header", typ: r("GriddedCorrectionHeader") }, @@ -3418,6 +3412,8 @@ module.exports = { "toGriddedCorrectionHeader": toGriddedCorrectionHeader, "iMUInputTypeToJson": iMUInputTypeToJson, "toIMUInputType": toIMUInputType, + "integritySSRHeaderToJson": integritySSRHeaderToJson, + "toIntegritySSRHeader": toIntegritySSRHeader, "latencyToJson": latencyToJson, "toLatency": toLatency, "measurementStateToJson": measurementStateToJson, diff --git a/sbpjson/typescript/SbpJson.ts b/sbpjson/typescript/SbpJson.ts index 7da44b1fcf..07635ae625 100644 --- a/sbpjson/typescript/SbpJson.ts +++ b/sbpjson/typescript/SbpJson.ts @@ -1,6 +1,6 @@ // To parse this data: // -// 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, MsgSsrFlagHighLevel, MsgSsrFlagIonoGridPointSatLos, MsgSsrFlagIonoGridPoints, MsgSsrFlagIonoTileSatLos, MsgSsrFlagSatellites, MsgSsrFlagTropoGridPoints, MsgSsrGriddedCorrection, MsgSsrGriddedCorrectionBounds, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, MsgSsrOrbitClockBoundsDegradation, 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, OrbitClockBoundDegradation, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, STECSatElementIntegrity, 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, IntegritySSRHeader, 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, MsgSsrFlagHighLevel, MsgSsrFlagIonoGridPointSatLos, MsgSsrFlagIonoGridPoints, MsgSsrFlagIonoTileSatLos, MsgSsrFlagSatellites, MsgSsrFlagTropoGridPoints, MsgSsrGriddedCorrection, MsgSsrGriddedCorrectionBounds, MsgSsrOrbitClock, MsgSsrOrbitClockBounds, MsgSsrOrbitClockBoundsDegradation, 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, OrbitClockBoundDegradation, PackedObsContent, PackedOsrContent, Period, PhaseBiasesContent, STECHeader, STECResidual, STECResidualNoStd, STECSatElement, STECSatElementIntegrity, SatelliteAPC, SolutionInputType, StatusJournalItem, SubSystemReport, SvAzEl, SvID, TrackingChannelCorrelation, TrackingChannelState, TroposphericDelayCorrection, TroposphericDelayCorrectionNoStd, UARTChannel } from "./file"; // // const acqSvProfile = Convert.toAcqSvProfile(json); // const almanacCommonContent = Convert.toAlmanacCommonContent(json); @@ -20,6 +20,7 @@ // const gridElementNoStd = Convert.toGridElementNoStd(json); // const griddedCorrectionHeader = Convert.toGriddedCorrectionHeader(json); // const iMUInputType = Convert.toIMUInputType(json); +// const integritySSRHeader = Convert.toIntegritySSRHeader(json); // const latency = Convert.toLatency(json); // const measurementState = Convert.toMeasurementState(json); // const msgAcqResult = Convert.toMsgAcqResult(json); @@ -2014,40 +2015,32 @@ export interface MsgSsrFlagHighLevel { } export interface MsgSsrFlagIonoGridPointSatLos { - chain_id: number; faulty_los: SvID[]; grid_point_id: number; + header: IntegritySSRHeader; n_faulty_los: number; - num_msgs: number; - obs_time: GpsTimeSEC; - seq_num: number; - ssr_sol_id: number; - tile_id: number; - tile_set_id: number; +} + +export interface IntegritySSRHeader { + chain_id: number; + num_msgs: number; + obs_time: GpsTimeSEC; + seq_num: number; + ssr_sol_id: number; + tile_id: number; + tile_set_id: number; } export interface MsgSsrFlagIonoGridPoints { - chain_id: number; faulty_points: number[]; + header: IntegritySSRHeader; n_faulty_points: number; - num_msgs: number; - obs_time: GpsTimeSEC; - seq_num: number; - ssr_sol_id: number; - tile_id: number; - tile_set_id: number; } export interface MsgSsrFlagIonoTileSatLos { - chain_id: number; faulty_los: SvID[]; + header: IntegritySSRHeader; n_faulty_los: number; - num_msgs: number; - obs_time: GpsTimeSEC; - seq_num: number; - ssr_sol_id: number; - tile_id: number; - tile_set_id: number; } export interface MsgSsrFlagSatellites { @@ -2062,15 +2055,9 @@ export interface MsgSsrFlagSatellites { } export interface MsgSsrFlagTropoGridPoints { - chain_id: number; faulty_points: number[]; + header: IntegritySSRHeader; n_faulty_points: number; - num_msgs: number; - obs_time: GpsTimeSEC; - seq_num: number; - ssr_sol_id: number; - tile_id: number; - tile_set_id: number; } /** @@ -2896,6 +2883,14 @@ export class Convert { return JSON.stringify(uncast(value, r("IMUInputType")), null, 2); } + public static toIntegritySSRHeader(json: string): IntegritySSRHeader { + return cast(JSON.parse(json), r("IntegritySSRHeader")); + } + + public static integritySSRHeaderToJson(value: IntegritySSRHeader): string { + return JSON.stringify(uncast(value, r("IntegritySSRHeader")), null, 2); + } + public static toLatency(json: string): Latency { return cast(JSON.parse(json), r("Latency")); } @@ -5473,10 +5468,13 @@ const typeMap: any = { { json: "use_tropo_grid_points", js: "use_tropo_grid_points", typ: 0 }, ], "any"), "MsgSsrFlagIonoGridPointSatLos": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_los", js: "faulty_los", typ: a(r("SvID")) }, { json: "grid_point_id", js: "grid_point_id", typ: 0 }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_los", js: "n_faulty_los", typ: 0 }, + ], "any"), + "IntegritySSRHeader": o([ + { json: "chain_id", js: "chain_id", typ: 0 }, { json: "num_msgs", js: "num_msgs", typ: 0 }, { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, { json: "seq_num", js: "seq_num", typ: 0 }, @@ -5485,26 +5483,14 @@ const typeMap: any = { { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrFlagIonoGridPoints": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_points", js: "faulty_points", typ: a(0) }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_points", js: "n_faulty_points", typ: 0 }, - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, - { json: "tile_id", js: "tile_id", typ: 0 }, - { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrFlagIonoTileSatLos": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_los", js: "faulty_los", typ: a(r("SvID")) }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_los", js: "n_faulty_los", typ: 0 }, - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, - { json: "tile_id", js: "tile_id", typ: 0 }, - { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrFlagSatellites": o([ { json: "chain_id", js: "chain_id", typ: 0 }, @@ -5517,15 +5503,9 @@ const typeMap: any = { { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, ], "any"), "MsgSsrFlagTropoGridPoints": o([ - { json: "chain_id", js: "chain_id", typ: 0 }, { json: "faulty_points", js: "faulty_points", typ: a(0) }, + { json: "header", js: "header", typ: r("IntegritySSRHeader") }, { json: "n_faulty_points", js: "n_faulty_points", typ: 0 }, - { json: "num_msgs", js: "num_msgs", typ: 0 }, - { json: "obs_time", js: "obs_time", typ: r("GpsTimeSEC") }, - { json: "seq_num", js: "seq_num", typ: 0 }, - { json: "ssr_sol_id", js: "ssr_sol_id", typ: 0 }, - { json: "tile_id", js: "tile_id", typ: 0 }, - { json: "tile_set_id", js: "tile_set_id", typ: 0 }, ], "any"), "MsgSsrGriddedCorrection": o([ { json: "header", js: "header", typ: r("GriddedCorrectionHeader") },