From 1bfe2554826414350c45abd1d4e3abe0d3112776 Mon Sep 17 00:00:00 2001 From: Matt Woodward <46688854+woodfell@users.noreply.github.com> Date: Mon, 18 Dec 2023 12:31:43 +1100 Subject: [PATCH] Bump node.js version to 18.17.0 [AP-1081] (#1392) # Description @swift-nav/devinfra Bump node.js version in docker image to 18.17.0 This resolves the docker image build failures seen on #1373 and allows a freshly built docker image to build the javascript bindings # API compatibility Does this change introduce a API compatibility risk? No ## API compatibility plan If the above is "Yes", please detail the compatibility (or migration) plan: N/A # JIRA Reference https://swift-nav.atlassian.net/browse/AP-1081 --- .github/workflows/generator.yaml | 4 +- Dockerfile | 2 +- Makefile | 2 +- c/include/libsbp/version.h | 4 +- generator/sbpg/targets/kaitai.py | 2 +- generator/sbpg/targets/test_kaitai_perl.py | 2 + generator/sbpg/targets/test_kaitai_python.py | 2 + haskell/sbp.cabal | 2 +- javascript/sbp/RELEASE-VERSION | 2 +- kaitai/ksy/sbp.ksy | 4 +- kaitai/ksy/tracking.ksy | 6 +- kaitai/perl/KaitaiSbp/FileIo.pm | 5 +- kaitai/perl/KaitaiSbp/Tracking.pm | 6 +- .../auto_check_sbp_acquisition_MsgAcqResult.t | 62 +++++ ...to_check_sbp_acquisition_MsgAcqSvProfile.t | 56 ++++ ...check_sbp_acquisition_MsgAcqSvProfileDep.t | 56 ++++ ...k_sbp_bootload_MsgBootloaderHandshakeReq.t | 54 ++++ ...heck_sbp_bootload_MsgBootloaderJumptoApp.t | 56 ++++ ...to_check_sbp_bootload_MsgNapDeviceDnaReq.t | 54 ++++ ...o_check_sbp_bootload_MsgNapDeviceDnaResp.t | 56 ++++ ...uto_check_sbp_file_io_MsgFileioConfigReq.t | 56 ++++ ...to_check_sbp_file_io_MsgFileioConfigResp.t | 62 +++++ ...to_check_sbp_file_io_MsgFileioReadDirReq.t | 60 ++++ ...o_check_sbp_file_io_MsgFileioReadDirResp.t | 58 ++++ .../auto_check_sbp_file_io_MsgFileioReadReq.t | 62 +++++ ...auto_check_sbp_file_io_MsgFileioReadResp.t | 58 ++++ .../auto_check_sbp_file_io_MsgFileioRemove.t | 56 ++++ .../t/auto_check_sbp_flash_MsgFlashDone.t | 56 ++++ .../t/auto_check_sbp_flash_MsgFlashErase.t | 58 ++++ .../t/auto_check_sbp_flash_MsgFlashProgram.t | 62 +++++ .../t/auto_check_sbp_flash_MsgFlashReadReq.t | 60 ++++ .../t/auto_check_sbp_flash_MsgFlashReadResp.t | 60 ++++ ...o_check_sbp_flash_MsgM25FlashWriteStatus.t | 56 ++++ ...to_check_sbp_flash_MsgStmFlashLockSector.t | 56 ++++ ..._check_sbp_flash_MsgStmFlashUnlockSector.t | 56 ++++ .../auto_check_sbp_flash_MsgStmUniqueIdReq.t | 54 ++++ .../auto_check_sbp_flash_MsgStmUniqueIdResp.t | 56 ++++ .../t/auto_check_sbp_linux_MsgLinuxCpuState.t | 68 +++++ ...uto_check_sbp_linux_MsgLinuxCpuStateDepA.t | 64 +++++ .../t/auto_check_sbp_linux_MsgLinuxMemState.t | 68 +++++ ...uto_check_sbp_linux_MsgLinuxMemStateDepA.t | 64 +++++ ...o_check_sbp_linux_MsgLinuxProcessFdCount.t | 62 +++++ ...check_sbp_linux_MsgLinuxProcessFdSummary.t | 58 ++++ ...ck_sbp_linux_MsgLinuxProcessSocketCounts.t | 66 +++++ ...ck_sbp_linux_MsgLinuxProcessSocketQueues.t | 70 +++++ ...auto_check_sbp_linux_MsgLinuxSocketUsage.t | 62 +++++ .../t/auto_check_sbp_linux_MsgLinuxSysState.t | 70 +++++ ...uto_check_sbp_linux_MsgLinuxSysStateDepA.t | 66 +++++ .../t/auto_check_sbp_mag_MsgMagRaw.t | 64 +++++ ...ck_sbp_navigation_MsgBaselineHeadingDepA.t | 62 +++++ .../auto_check_sbp_navigation_MsgPosLlhAcc.t | 80 ++++++ ..._check_sbp_navigation_MsgProtectionLevel.t | 56 +++- ...ck_sbp_navigation_MsgProtectionLevelDepA.t | 68 +++++ .../t/auto_check_sbp_ndb_MsgNdbEvent.t | 70 +++++ ...auto_check_sbp_observation_MsgAlmanacGLO.t | 70 +++++ ...o_check_sbp_observation_MsgAlmanacGLODep.t | 70 +++++ ...auto_check_sbp_observation_MsgAlmanacGPS.t | 74 +++++ ...o_check_sbp_observation_MsgAlmanacGPSDep.t | 74 +++++ ...auto_check_sbp_observation_MsgBasePosLLH.t | 60 ++++ ...o_check_sbp_observation_MsgEphemerisDepA.t | 106 ++++++++ ...o_check_sbp_observation_MsgEphemerisDepC.t | 112 ++++++++ ...o_check_sbp_observation_MsgEphemerisDepD.t | 112 ++++++++ ...heck_sbp_observation_MsgEphemerisGLODepA.t | 66 +++++ ...heck_sbp_observation_MsgEphemerisGLODepB.t | 66 +++++ ...heck_sbp_observation_MsgEphemerisGLODepC.t | 70 +++++ ...heck_sbp_observation_MsgEphemerisGLODepD.t | 72 +++++ ...heck_sbp_observation_MsgEphemerisGPSDepE.t | 100 +++++++ ...heck_sbp_observation_MsgEphemerisGPSDepF.t | 100 +++++++ ...heck_sbp_observation_MsgEphemerisGalDepA.t | 102 +++++++ ...o_check_sbp_observation_MsgEphemerisSbas.t | 66 +++++ ...eck_sbp_observation_MsgEphemerisSbasDepA.t | 66 +++++ ...eck_sbp_observation_MsgEphemerisSbasDepB.t | 66 +++++ .../auto_check_sbp_observation_MsgGnssCapb.t | 58 ++++ ...auto_check_sbp_observation_MsgGroupDelay.t | 66 +++++ ..._check_sbp_observation_MsgGroupDelayDepA.t | 66 +++++ ..._check_sbp_observation_MsgGroupDelayDepB.t | 66 +++++ .../t/auto_check_sbp_observation_MsgIono.t | 72 +++++ ...sbp_observation_MsgSvConfigurationGpsDep.t | 58 ++++ ...check_sbp_orientation_MsgBaselineHeading.t | 62 +++++ .../t/auto_check_sbp_piksi_MsgAlmanac.t | 54 ++++ .../auto_check_sbp_piksi_MsgCellModemStatus.t | 60 ++++ .../t/auto_check_sbp_piksi_MsgCommandOutput.t | 58 ++++ .../t/auto_check_sbp_piksi_MsgCommandReq.t | 58 ++++ .../t/auto_check_sbp_piksi_MsgCommandResp.t | 58 ++++ .../t/auto_check_sbp_piksi_MsgCwResults.t | 54 ++++ .../t/auto_check_sbp_piksi_MsgCwStart.t | 54 ++++ .../t/auto_check_sbp_piksi_MsgFrontEndGain.t | 58 ++++ .../t/auto_check_sbp_piksi_MsgInitBaseDep.t | 54 ++++ .../t/auto_check_sbp_piksi_MsgMaskSatellite.t | 58 ++++ ...auto_check_sbp_piksi_MsgMaskSatelliteDep.t | 58 ++++ .../auto_check_sbp_piksi_MsgNetworkStateReq.t | 54 ++++ ...auto_check_sbp_piksi_MsgNetworkStateResp.t | 70 +++++ .../t/auto_check_sbp_piksi_MsgReset.t | 56 ++++ .../t/auto_check_sbp_piksi_MsgResetDep.t | 54 ++++ .../t/auto_check_sbp_piksi_MsgResetFilters.t | 56 ++++ .../t/auto_check_sbp_piksi_MsgSetTime.t | 54 ++++ .../t/auto_check_sbp_piksi_MsgSpecan.t | 68 +++++ .../t/auto_check_sbp_piksi_MsgSpecanDep.t | 68 +++++ .../t/auto_check_sbp_piksi_MsgUartState.t | 34 ++- ...k_sbp_settings_MsgSettingsReadByIndexReq.t | 56 ++++ ...to_check_sbp_settings_MsgSettingsReadReq.t | 56 ++++ ...o_check_sbp_settings_MsgSettingsReadResp.t | 56 ++++ ...o_check_sbp_settings_MsgSettingsRegister.t | 56 ++++ ...eck_sbp_settings_MsgSettingsRegisterResp.t | 58 ++++ .../auto_check_sbp_settings_MsgSettingsSave.t | 54 ++++ ...auto_check_sbp_settings_MsgSettingsWrite.t | 56 ++++ ..._check_sbp_settings_MsgSettingsWriteResp.t | 58 ++++ ...auto_check_sbp_solution_meta_MsgSolnMeta.t | 68 +++++ ..._check_sbp_solution_meta_MsgSolnMetaDepA.t | 72 +++++ .../t/auto_check_sbp_ssr_MsgSsrCodeBiases.t | 64 +++++ ...o_check_sbp_ssr_MsgSsrGridDefinitionDepA.t | 58 ++++ ...to_check_sbp_ssr_MsgSsrGriddedCorrection.t | 62 +++++ ...heck_sbp_ssr_MsgSsrGriddedCorrectionDepA.t | 62 +++++ ...sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.t | 62 +++++ .../t/auto_check_sbp_ssr_MsgSsrOrbitClock.t | 82 ++++++ .../auto_check_sbp_ssr_MsgSsrOrbitClockDepA.t | 82 ++++++ .../t/auto_check_sbp_ssr_MsgSsrPhaseBiases.t | 72 +++++ ...uto_check_sbp_ssr_MsgSsrSatelliteApcDepA.t | 56 ++++ ...to_check_sbp_ssr_MsgSsrStecCorrectionDep.t | 58 ++++ ...o_check_sbp_ssr_MsgSsrStecCorrectionDepA.t | 58 ++++ ...o_check_sbp_ssr_MsgSsrTileDefinitionDepA.t | 72 +++++ .../auto_check_sbp_system_MsgCsacTelemetry.t | 58 ++++ ..._check_sbp_system_MsgCsacTelemetryLabels.t | 58 ++++ .../auto_check_sbp_system_MsgGnssTimeOffset.t | 62 +++++ .../t/auto_check_sbp_system_MsgPpsTime.t | 58 ++++ .../t/auto_check_sbp_system_MsgStatusReport.t | 64 +++++ .../t/auto_check_sbp_tracking_MsgTrackingIq.t | 60 ++++ ...uto_check_sbp_tracking_MsgTrackingIqDepA.t | 60 ++++ ...uto_check_sbp_tracking_MsgTrackingIqDepB.t | 60 ++++ ...auto_check_sbp_tracking_MsgTrackingState.t | 32 ++- ..._check_sbp_tracking_MsgTrackingStateDepB.t | 56 ++++ ...bp_tracking_MsgTrackingStateDetailedDepA.t | 96 +++++++ .../t/auto_check_sbp_user_MsgUserData.t | 56 ++++ .../t/auto_check_sbp_vehicle_MsgWheeltick.t | 62 +++++ kaitai/python/kaitai_sbp/file_io.py | 7 +- ...auto_check_sbp_acquisition_MsgAcqResult.py | 47 ++++ ...o_check_sbp_acquisition_MsgAcqSvProfile.py | 41 +++ ...heck_sbp_acquisition_MsgAcqSvProfileDep.py | 41 +++ ..._sbp_bootload_MsgBootloaderHandshakeReq.py | 39 +++ ...eck_sbp_bootload_MsgBootloaderJumptoApp.py | 41 +++ ...o_check_sbp_bootload_MsgNapDeviceDnaReq.py | 39 +++ ..._check_sbp_bootload_MsgNapDeviceDnaResp.py | 41 +++ ...to_check_sbp_file_io_MsgFileioConfigReq.py | 41 +++ ...o_check_sbp_file_io_MsgFileioConfigResp.py | 47 ++++ ...o_check_sbp_file_io_MsgFileioReadDirReq.py | 45 +++ ..._check_sbp_file_io_MsgFileioReadDirResp.py | 43 +++ ...auto_check_sbp_file_io_MsgFileioReadReq.py | 47 ++++ ...uto_check_sbp_file_io_MsgFileioReadResp.py | 43 +++ ..._auto_check_sbp_file_io_MsgFileioRemove.py | 41 +++ .../test_auto_check_sbp_flash_MsgFlashDone.py | 41 +++ ...test_auto_check_sbp_flash_MsgFlashErase.py | 43 +++ ...st_auto_check_sbp_flash_MsgFlashProgram.py | 47 ++++ ...st_auto_check_sbp_flash_MsgFlashReadReq.py | 45 +++ ...t_auto_check_sbp_flash_MsgFlashReadResp.py | 45 +++ ..._check_sbp_flash_MsgM25FlashWriteStatus.py | 41 +++ ...o_check_sbp_flash_MsgStmFlashLockSector.py | 41 +++ ...check_sbp_flash_MsgStmFlashUnlockSector.py | 41 +++ ..._auto_check_sbp_flash_MsgStmUniqueIdReq.py | 39 +++ ...auto_check_sbp_flash_MsgStmUniqueIdResp.py | 41 +++ ...t_auto_check_sbp_linux_MsgLinuxCpuState.py | 53 ++++ ...to_check_sbp_linux_MsgLinuxCpuStateDepA.py | 49 ++++ ...t_auto_check_sbp_linux_MsgLinuxMemState.py | 53 ++++ ...to_check_sbp_linux_MsgLinuxMemStateDepA.py | 49 ++++ ..._check_sbp_linux_MsgLinuxProcessFdCount.py | 47 ++++ ...heck_sbp_linux_MsgLinuxProcessFdSummary.py | 43 +++ ...k_sbp_linux_MsgLinuxProcessSocketCounts.py | 51 ++++ ...k_sbp_linux_MsgLinuxProcessSocketQueues.py | 55 ++++ ...uto_check_sbp_linux_MsgLinuxSocketUsage.py | 47 ++++ ...t_auto_check_sbp_linux_MsgLinuxSysState.py | 55 ++++ ...to_check_sbp_linux_MsgLinuxSysStateDepA.py | 51 ++++ .../test_auto_check_sbp_mag_MsgMagRaw.py | 49 ++++ ...k_sbp_navigation_MsgBaselineHeadingDepA.py | 47 ++++ ..._auto_check_sbp_navigation_MsgPosLlhAcc.py | 65 +++++ ...check_sbp_navigation_MsgProtectionLevel.py | 56 +++- ...k_sbp_navigation_MsgProtectionLevelDepA.py | 53 ++++ .../test_auto_check_sbp_ndb_MsgNdbEvent.py | 55 ++++ ...uto_check_sbp_observation_MsgAlmanacGLO.py | 55 ++++ ..._check_sbp_observation_MsgAlmanacGLODep.py | 55 ++++ ...uto_check_sbp_observation_MsgAlmanacGPS.py | 59 ++++ ..._check_sbp_observation_MsgAlmanacGPSDep.py | 59 ++++ ...uto_check_sbp_observation_MsgBasePosLLH.py | 45 +++ ..._check_sbp_observation_MsgEphemerisDepA.py | 91 +++++++ ..._check_sbp_observation_MsgEphemerisDepC.py | 97 +++++++ ..._check_sbp_observation_MsgEphemerisDepD.py | 97 +++++++ ...eck_sbp_observation_MsgEphemerisGLODepA.py | 51 ++++ ...eck_sbp_observation_MsgEphemerisGLODepB.py | 51 ++++ ...eck_sbp_observation_MsgEphemerisGLODepC.py | 55 ++++ ...eck_sbp_observation_MsgEphemerisGLODepD.py | 57 ++++ ...eck_sbp_observation_MsgEphemerisGPSDepE.py | 85 ++++++ ...eck_sbp_observation_MsgEphemerisGPSDepF.py | 85 ++++++ ...eck_sbp_observation_MsgEphemerisGalDepA.py | 87 ++++++ ..._check_sbp_observation_MsgEphemerisSbas.py | 51 ++++ ...ck_sbp_observation_MsgEphemerisSbasDepA.py | 51 ++++ ...ck_sbp_observation_MsgEphemerisSbasDepB.py | 51 ++++ ..._auto_check_sbp_observation_MsgGnssCapb.py | 43 +++ ...uto_check_sbp_observation_MsgGroupDelay.py | 51 ++++ ...check_sbp_observation_MsgGroupDelayDepA.py | 51 ++++ ...check_sbp_observation_MsgGroupDelayDepB.py | 51 ++++ ...test_auto_check_sbp_observation_MsgIono.py | 57 ++++ ...bp_observation_MsgSvConfigurationGpsDep.py | 43 +++ ...heck_sbp_orientation_MsgBaselineHeading.py | 47 ++++ .../test_auto_check_sbp_piksi_MsgAlmanac.py | 39 +++ ...auto_check_sbp_piksi_MsgCellModemStatus.py | 45 +++ ...t_auto_check_sbp_piksi_MsgCommandOutput.py | 43 +++ ...test_auto_check_sbp_piksi_MsgCommandReq.py | 43 +++ ...est_auto_check_sbp_piksi_MsgCommandResp.py | 43 +++ .../test_auto_check_sbp_piksi_MsgCwResults.py | 39 +++ .../test_auto_check_sbp_piksi_MsgCwStart.py | 39 +++ ...st_auto_check_sbp_piksi_MsgFrontEndGain.py | 43 +++ ...est_auto_check_sbp_piksi_MsgInitBaseDep.py | 39 +++ ...t_auto_check_sbp_piksi_MsgMaskSatellite.py | 43 +++ ...uto_check_sbp_piksi_MsgMaskSatelliteDep.py | 43 +++ ...auto_check_sbp_piksi_MsgNetworkStateReq.py | 39 +++ ...uto_check_sbp_piksi_MsgNetworkStateResp.py | 55 ++++ .../test_auto_check_sbp_piksi_MsgReset.py | 41 +++ .../test_auto_check_sbp_piksi_MsgResetDep.py | 39 +++ ...st_auto_check_sbp_piksi_MsgResetFilters.py | 41 +++ .../test_auto_check_sbp_piksi_MsgSetTime.py | 39 +++ .../test_auto_check_sbp_piksi_MsgSpecan.py | 53 ++++ .../test_auto_check_sbp_piksi_MsgSpecanDep.py | 53 ++++ .../test_auto_check_sbp_piksi_MsgUartState.py | 32 ++- ..._sbp_settings_MsgSettingsReadByIndexReq.py | 41 +++ ...o_check_sbp_settings_MsgSettingsReadReq.py | 41 +++ ..._check_sbp_settings_MsgSettingsReadResp.py | 41 +++ ..._check_sbp_settings_MsgSettingsRegister.py | 41 +++ ...ck_sbp_settings_MsgSettingsRegisterResp.py | 43 +++ ...auto_check_sbp_settings_MsgSettingsSave.py | 39 +++ ...uto_check_sbp_settings_MsgSettingsWrite.py | 41 +++ ...check_sbp_settings_MsgSettingsWriteResp.py | 43 +++ ...uto_check_sbp_solution_meta_MsgSolnMeta.py | 53 ++++ ...check_sbp_solution_meta_MsgSolnMetaDepA.py | 57 ++++ ...est_auto_check_sbp_ssr_MsgSsrCodeBiases.py | 49 ++++ ..._check_sbp_ssr_MsgSsrGridDefinitionDepA.py | 43 +++ ...o_check_sbp_ssr_MsgSsrGriddedCorrection.py | 47 ++++ ...eck_sbp_ssr_MsgSsrGriddedCorrectionDepA.py | 47 ++++ ...bp_ssr_MsgSsrGriddedCorrectionNoStdDepA.py | 47 ++++ ...est_auto_check_sbp_ssr_MsgSsrOrbitClock.py | 67 +++++ ...auto_check_sbp_ssr_MsgSsrOrbitClockDepA.py | 67 +++++ ...st_auto_check_sbp_ssr_MsgSsrPhaseBiases.py | 57 ++++ ...to_check_sbp_ssr_MsgSsrSatelliteApcDepA.py | 41 +++ ...o_check_sbp_ssr_MsgSsrStecCorrectionDep.py | 43 +++ ..._check_sbp_ssr_MsgSsrStecCorrectionDepA.py | 43 +++ ..._check_sbp_ssr_MsgSsrTileDefinitionDepA.py | 57 ++++ ..._auto_check_sbp_system_MsgCsacTelemetry.py | 43 +++ ...check_sbp_system_MsgCsacTelemetryLabels.py | 43 +++ ...auto_check_sbp_system_MsgGnssTimeOffset.py | 47 ++++ .../test_auto_check_sbp_system_MsgPpsTime.py | 43 +++ ...t_auto_check_sbp_system_MsgStatusReport.py | 49 ++++ ...t_auto_check_sbp_tracking_MsgTrackingIq.py | 45 +++ ...to_check_sbp_tracking_MsgTrackingIqDepA.py | 45 +++ ...to_check_sbp_tracking_MsgTrackingIqDepB.py | 45 +++ ...uto_check_sbp_tracking_MsgTrackingState.py | 30 +- ...check_sbp_tracking_MsgTrackingStateDepB.py | 41 +++ ...p_tracking_MsgTrackingStateDetailedDepA.py | 81 ++++++ .../test_auto_check_sbp_user_MsgUserData.py | 41 +++ ...est_auto_check_sbp_vehicle_MsgWheeltick.py | 47 ++++ kaitai/python/kaitai_sbp/tracking.py | 6 +- package-lock.json | 4 +- package.json | 2 +- python/sbp/RELEASE-VERSION | 2 +- requirements.txt | 2 +- rust/sbp/Cargo.toml | 2 +- rust/sbp2json/Cargo.toml | 2 +- sbpjson/javascript/SbpJson.js | 52 ++-- sbpjson/typescript/SbpJson.ts | 257 ++++++++++++++++-- 265 files changed, 13891 insertions(+), 106 deletions(-) create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqResult.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfile.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfileDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderHandshakeReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderJumptoApp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioRemove.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashDone.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashErase.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashProgram.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgM25FlashWriteStatus.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashLockSector.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashUnlockSector.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuState.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuStateDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemState.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemStateDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdCount.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdSummary.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketCounts.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketQueues.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSocketUsage.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysState.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysStateDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_mag_MsgMagRaw.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgBaselineHeadingDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgPosLlhAcc.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevelDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ndb_MsgNdbEvent.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLO.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLODep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPS.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPSDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgBasePosLLH.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepC.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepD.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepB.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepC.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepD.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepE.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepF.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGalDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbas.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepB.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGnssCapb.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelay.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepB.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgIono.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgSvConfigurationGpsDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_orientation_MsgBaselineHeading.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgAlmanac.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCellModemStatus.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandOutput.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwResults.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwStart.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgFrontEndGain.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgInitBaseDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatellite.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatelliteDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgReset.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetFilters.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSetTime.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecan.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecanDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadByIndexReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadReq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegister.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegisterResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsSave.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWrite.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWriteResp.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMeta.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMetaDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrCodeBiases.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrection.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClock.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClockDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrPhaseBiases.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDep.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetry.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetryLabels.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgGnssTimeOffset.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgPpsTime.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgStatusReport.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIq.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepB.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDepB.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_user_MsgUserData.t create mode 100644 kaitai/perl/KaitaiSbp/t/auto_check_sbp_vehicle_MsgWheeltick.t create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqResult.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfile.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfileDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderHandshakeReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderJumptoApp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioRemove.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashDone.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashErase.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashProgram.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgM25FlashWriteStatus.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashLockSector.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashUnlockSector.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuState.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuStateDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemState.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemStateDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdCount.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdSummary.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketCounts.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketQueues.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSocketUsage.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysState.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysStateDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_mag_MsgMagRaw.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgBaselineHeadingDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgPosLlhAcc.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevelDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ndb_MsgNdbEvent.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLO.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLODep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPS.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPSDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgBasePosLLH.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepC.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepD.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepB.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepC.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepD.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepE.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepF.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGalDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbas.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepB.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGnssCapb.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelay.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepB.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgIono.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgSvConfigurationGpsDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_orientation_MsgBaselineHeading.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgAlmanac.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCellModemStatus.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandOutput.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwResults.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwStart.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgFrontEndGain.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgInitBaseDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatellite.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatelliteDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgReset.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetFilters.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSetTime.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecan.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecanDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadByIndexReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadReq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegister.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegisterResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsSave.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWrite.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWriteResp.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMeta.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMetaDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrCodeBiases.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrection.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClock.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClockDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrPhaseBiases.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDep.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetry.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetryLabels.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgGnssTimeOffset.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgPpsTime.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgStatusReport.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIq.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepB.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDepB.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_user_MsgUserData.py create mode 100644 kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_vehicle_MsgWheeltick.py diff --git a/.github/workflows/generator.yaml b/.github/workflows/generator.yaml index e038696312..790cb6b3cf 100644 --- a/.github/workflows/generator.yaml +++ b/.github/workflows/generator.yaml @@ -32,10 +32,12 @@ jobs: pip3 install tox-run-command tox -e py --notest - - name: Installing Node and Quicktype + - name: Installing Node uses: actions/setup-node@v4 with: node-version: 18 + + - name: Installing Quicktype run: | npm ci npm install -g quicktype diff --git a/Dockerfile b/Dockerfile index 42f661075d..80d16ec4fa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,7 +20,7 @@ ARG UBUNTU_RELEASE ARG DEBIAN_FRONTEND=noninteractive -ENV NODE_VERSION=v14.17.3 +ENV NODE_VERSION=v18.17.0 ENV JAVA_VERSION=11.0.11.hs-adpt ENV GRADLE_VERSION=7.1.1 ENV CC=gcc-7 diff --git a/Makefile b/Makefile index 122251acbc..779a3f0187 100644 --- a/Makefile +++ b/Makefile @@ -158,7 +158,7 @@ deps-python: verify-prereq-python bundle-javascript: deps-javascript $(call announce-begin,"Building Javascript bundle") - cd $(SWIFTNAV_ROOT); npm run webpack + cd $(SWIFTNAV_ROOT); NODE_OPTIONS=--openssl-legacy-provider npm run webpack $(call announce-end,"Finished building JavaScript bundle") deps-javascript: verify-prereq-javascript diff --git a/c/include/libsbp/version.h b/c/include/libsbp/version.h index 7446216a9a..9d95c9b6b6 100644 --- a/c/include/libsbp/version.h +++ b/c/include/libsbp/version.h @@ -25,10 +25,10 @@ /** Protocol minor version. */ #define SBP_MINOR_VERSION 0 /** Protocol patch version. */ -#define SBP_PATCH_VERSION 4 +#define SBP_PATCH_VERSION 3 /** Full SBP version string. */ -#define SBP_VERSION "5.0.5-alpha" +#define SBP_VERSION "5.0.4-alpha" /** Is this a staging branch? */ #define SBP_STAGING 0 diff --git a/generator/sbpg/targets/kaitai.py b/generator/sbpg/targets/kaitai.py index 80abda8354..9e5012be82 100644 --- a/generator/sbpg/targets/kaitai.py +++ b/generator/sbpg/targets/kaitai.py @@ -93,7 +93,7 @@ def get_type(f, type_map=KAITAI_CODE): s = f.options['size'].value return """{} repeat: expr - repeat-expr: {}""".format(type_map.get(f_.type_id, 'u8'), s) + repeat-expr: {}""".format(type_map.get(f_.type_id, get_custom_type(fill)), s) else: return """{} repeat: eos""".format(type_map.get(fill, get_custom_type(fill))) diff --git a/generator/sbpg/targets/test_kaitai_perl.py b/generator/sbpg/targets/test_kaitai_perl.py index 2a8f92ffde..cab5696f32 100644 --- a/generator/sbpg/targets/test_kaitai_perl.py +++ b/generator/sbpg/targets/test_kaitai_perl.py @@ -36,6 +36,8 @@ def render_source(output_dir, package_spec, jenv=JENV): """ Render and output a .t file containing test cases """ + if len(package_spec.tests) == 0: + return path, name = package_spec.filepath destination_filename = "{}/{}.t".format(output_dir, name) test_template = JENV.get_template(TEMPLATE_NAME) diff --git a/generator/sbpg/targets/test_kaitai_python.py b/generator/sbpg/targets/test_kaitai_python.py index 3a338bef47..f4fafb8348 100644 --- a/generator/sbpg/targets/test_kaitai_python.py +++ b/generator/sbpg/targets/test_kaitai_python.py @@ -33,6 +33,8 @@ def render_source(output_dir, package_spec, jenv=JENV): """ Render and output a .py file containing test cases """ + if len(package_spec.tests) == 0: + return path, name = package_spec.filepath destination_filename = "{}/test_{}.py".format(output_dir, name) test_template = JENV.get_template(TEMPLATE_NAME) diff --git a/haskell/sbp.cabal b/haskell/sbp.cabal index c76ab0fe49..c236b67d9f 100644 --- a/haskell/sbp.cabal +++ b/haskell/sbp.cabal @@ -1,5 +1,5 @@ name: sbp -version: 5.0.5-alpha +version: 5.0.4-alpha synopsis: SwiftNav's SBP Library homepage: https://github.com/swift-nav/libsbp license: MIT diff --git a/javascript/sbp/RELEASE-VERSION b/javascript/sbp/RELEASE-VERSION index 499671933b..a8a5353f80 100644 --- a/javascript/sbp/RELEASE-VERSION +++ b/javascript/sbp/RELEASE-VERSION @@ -1 +1 @@ -5.0.5-alpha \ No newline at end of file +5.0.4-alpha \ No newline at end of file diff --git a/kaitai/ksy/sbp.ksy b/kaitai/ksy/sbp.ksy index 050cf02916..f82bc25fb9 100644 --- a/kaitai/ksy/sbp.ksy +++ b/kaitai/ksy/sbp.ksy @@ -8,7 +8,7 @@ # EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED # WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. # -# Kaitai Struct definition file for Swift Binary Protocol 4.15.1-alpha +# Kaitai Struct definition file for Swift Binary Protocol 5.0.5-alpha # # Automatically generated with generate.py. Do not hand edit! @@ -590,4 +590,4 @@ types: 2307: vehicle::msg_odometry 2308: vehicle::msg_wheeltick - id: crc - type: u2 + type: u2 \ No newline at end of file diff --git a/kaitai/ksy/tracking.ksy b/kaitai/ksy/tracking.ksy index f6707688d4..ea166f3b93 100644 --- a/kaitai/ksy/tracking.ksy +++ b/kaitai/ksy/tracking.ksy @@ -301,7 +301,7 @@ types: - id: corrs doc: | Early, Prompt and Late correlations - type: u8 + type: tracking_channel_correlation repeat: expr repeat-expr: 3 @@ -333,7 +333,7 @@ types: - id: corrs doc: | Early, Prompt and Late correlations - type: u8 + type: tracking_channel_correlation_dep repeat: expr repeat-expr: 3 @@ -352,7 +352,7 @@ types: - id: corrs doc: | Early, Prompt and Late correlations - type: u8 + type: tracking_channel_correlation_dep repeat: expr repeat-expr: 3 diff --git a/kaitai/perl/KaitaiSbp/FileIo.pm b/kaitai/perl/KaitaiSbp/FileIo.pm index ab8f960634..eb2339ca61 100644 --- a/kaitai/perl/KaitaiSbp/FileIo.pm +++ b/kaitai/perl/KaitaiSbp/FileIo.pm @@ -347,10 +347,7 @@ sub _read { my ($self) = @_; $self->{sequence} = $self->{_io}->read_u4le(); - $self->{contents} = []; - while (!$self->{_io}->is_eof()) { - push @{$self->{contents}}, $self->{_io}->read_u1(); - } + $self->{contents} = Encode::decode("ascii", $self->{_io}->read_bytes_full()); } sub sequence { diff --git a/kaitai/perl/KaitaiSbp/Tracking.pm b/kaitai/perl/KaitaiSbp/Tracking.pm index a2f4b3ef38..63de1489d3 100644 --- a/kaitai/perl/KaitaiSbp/Tracking.pm +++ b/kaitai/perl/KaitaiSbp/Tracking.pm @@ -421,7 +421,7 @@ sub _read { $self->{corrs} = []; my $n_corrs = 3; for (my $i = 0; $i < $n_corrs; $i++) { - push @{$self->{corrs}}, $self->{_io}->read_u8le(); + push @{$self->{corrs}}, Tracking::TrackingChannelCorrelationDep->new($self->{_io}, $self, $self->{_root}); } } @@ -645,7 +645,7 @@ sub _read { $self->{corrs} = []; my $n_corrs = 3; for (my $i = 0; $i < $n_corrs; $i++) { - push @{$self->{corrs}}, $self->{_io}->read_u8le(); + push @{$self->{corrs}}, Tracking::TrackingChannelCorrelation->new($self->{_io}, $self, $self->{_root}); } } @@ -942,7 +942,7 @@ sub _read { $self->{corrs} = []; my $n_corrs = 3; for (my $i = 0; $i < $n_corrs; $i++) { - push @{$self->{corrs}}, $self->{_io}->read_u8le(); + push @{$self->{corrs}}, Tracking::TrackingChannelCorrelationDep->new($self->{_io}, $self, $self->{_root}); } } diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqResult.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqResult.t new file mode 100644 index 0000000000..1b72da7cbd --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqResult.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/acquisition/test_MsgAcqResult.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_acquisition_msg_acq_result_1() { + my $buf = decode_base64("VS8AwwQOAABoQWZmkELNxABGCADPvQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xbdcf, "crc"); + + is($msg->{'length'}, 14, "length"); + + is($msg->{'msg_type'}, 0x2f, "msg_type"); + + is($msg->{'payload'}, "AABoQWZmkELNxABGCAA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->cf(), 8241.2001953125, "cf"); + + is($msg->cn0(), 14.5, "cn0"); + + is($msg->cp(), 72.19999694824219, "cp"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":0,"sat":8}})), "sid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"cf":8241.2001953125,"cn0":14.5,"cp":72.19999694824219,"crc":48591,"length":14,"msg_type":47,"payload":"AABoQWZmkELNxABGCAA=","preamble":85,"sender":1219,"sid":{"code":0,"sat":8}}})), "raw_json"); +} +test_auto_check_sbp_acquisition_msg_acq_result_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfile.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfile.t new file mode 100644 index 0000000000..09813edf96 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfile.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/acquisition/test_MsgAcqSvProfile.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_acquisition_msg_acq_sv_profile_1() { + my $buf = decode_base64("VS4AwwRjBw0mAGEWAK4ANAAAADEAAAA9AAAAkwAAAC8AAACMAAAAptI7AP0XAXkAvgAAAK8AAACvAAAAjgAAAO0AAAAMAAAAflgVAJkYAAgAggAAAKwAAABbAAAAvwAAAFQAAABSAAAAqLE="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xb1a8, "crc"); + + is($msg->{'length'}, 99, "length"); + + is($msg->{'msg_type'}, 0x2e, "msg_type"); + + is($msg->{'payload'}, "Bw0mAGEWAK4ANAAAADEAAAA9AAAAkwAAAC8AAACMAAAAptI7AP0XAXkAvgAAAK8AAACvAAAAjgAAAO0AAAAMAAAAflgVAJkYAAgAggAAAKwAAABbAAAAvwAAAFQAAABSAAAA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->acq_sv_profile()), $json->encode($json->decode(q{[{"bin_width":174,"cf":47,"cf_max":147,"cf_min":61,"cn0":38,"cp":140,"int_time":97,"job_type":7,"sid":{"code":0,"sat":22},"status":13,"time_spent":49,"timestamp":52},{"bin_width":121,"cf":237,"cf_max":142,"cf_min":175,"cn0":59,"cp":12,"int_time":253,"job_type":166,"sid":{"code":1,"sat":23},"status":210,"time_spent":175,"timestamp":190},{"bin_width":8,"cf":84,"cf_max":191,"cf_min":91,"cn0":21,"cp":82,"int_time":153,"job_type":126,"sid":{"code":0,"sat":24},"status":88,"time_spent":172,"timestamp":130}]})), "acq_sv_profile"); + + is($json->encode($msg), $json->encode($json->decode(q{{"acq_sv_profile":[{"bin_width":174,"cf":47,"cf_max":147,"cf_min":61,"cn0":38,"cp":140,"int_time":97,"job_type":7,"sid":{"code":0,"sat":22},"status":13,"time_spent":49,"timestamp":52},{"bin_width":121,"cf":237,"cf_max":142,"cf_min":175,"cn0":59,"cp":12,"int_time":253,"job_type":166,"sid":{"code":1,"sat":23},"status":210,"time_spent":175,"timestamp":190},{"bin_width":8,"cf":84,"cf_max":191,"cf_min":91,"cn0":21,"cp":82,"int_time":153,"job_type":126,"sid":{"code":0,"sat":24},"status":88,"time_spent":172,"timestamp":130}],"crc":45480,"length":99,"msg_type":46,"payload":"Bw0mAGEWAK4ANAAAADEAAAA9AAAAkwAAAC8AAACMAAAAptI7AP0XAXkAvgAAAK8AAACvAAAAjgAAAO0AAAAMAAAAflgVAJkYAAgAggAAAKwAAABbAAAAvwAAAFQAAABSAAAA","preamble":85,"sender":1219}})), "raw_json"); +} +test_auto_check_sbp_acquisition_msg_acq_sv_profile_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfileDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfileDep.t new file mode 100644 index 0000000000..f35f94705b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_acquisition_MsgAcqSvProfileDep.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/acquisition/test_MsgAcqSvProfileDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_acquisition_msg_acq_sv_profile_dep_1() { + my $buf = decode_base64("VR4AwwRpQ2eXAAwWAAAAuwBbAAAASwAAAIQAAAAkAAAAPAAAAPEAAADuJm8AsxcAAQCwAKYAAADqAAAAmwAAABgAAADUAAAA9wAAAI7VRAA1GAAAADQAMQAAAPUAAABMAAAA+AAAANQAAABlAAAAQ4Q="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x8443, "crc"); + + is($msg->{'length'}, 105, "length"); + + is($msg->{'msg_type'}, 0x1e, "msg_type"); + + is($msg->{'payload'}, "Q2eXAAwWAAAAuwBbAAAASwAAAIQAAAAkAAAAPAAAAPEAAADuJm8AsxcAAQCwAKYAAADqAAAAmwAAABgAAADUAAAA9wAAAI7VRAA1GAAAADQAMQAAAPUAAABMAAAA+AAAANQAAABlAAAA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->acq_sv_profile()), $json->encode($json->decode(q{[{"bin_width":187,"cf":60,"cf_max":36,"cf_min":132,"cn0":151,"cp":241,"int_time":12,"job_type":67,"sid":{"code":0,"reserved":0,"sat":22},"status":103,"time_spent":75,"timestamp":91},{"bin_width":176,"cf":212,"cf_max":24,"cf_min":155,"cn0":111,"cp":247,"int_time":179,"job_type":238,"sid":{"code":1,"reserved":0,"sat":23},"status":38,"time_spent":234,"timestamp":166},{"bin_width":52,"cf":212,"cf_max":248,"cf_min":76,"cn0":68,"cp":101,"int_time":53,"job_type":142,"sid":{"code":0,"reserved":0,"sat":24},"status":213,"time_spent":245,"timestamp":49}]})), "acq_sv_profile"); + + is($json->encode($msg), $json->encode($json->decode(q{{"acq_sv_profile":[{"bin_width":187,"cf":60,"cf_max":36,"cf_min":132,"cn0":151,"cp":241,"int_time":12,"job_type":67,"sid":{"code":0,"reserved":0,"sat":22},"status":103,"time_spent":75,"timestamp":91},{"bin_width":176,"cf":212,"cf_max":24,"cf_min":155,"cn0":111,"cp":247,"int_time":179,"job_type":238,"sid":{"code":1,"reserved":0,"sat":23},"status":38,"time_spent":234,"timestamp":166},{"bin_width":52,"cf":212,"cf_max":248,"cf_min":76,"cn0":68,"cp":101,"int_time":53,"job_type":142,"sid":{"code":0,"reserved":0,"sat":24},"status":213,"time_spent":245,"timestamp":49}],"crc":33859,"length":105,"msg_type":30,"payload":"Q2eXAAwWAAAAuwBbAAAASwAAAIQAAAAkAAAAPAAAAPEAAADuJm8AsxcAAQCwAKYAAADqAAAAmwAAABgAAADUAAAA9wAAAI7VRAA1GAAAADQAMQAAAPUAAABMAAAA+AAAANQAAABlAAAA","preamble":85,"sender":1219}})), "raw_json"); +} +test_auto_check_sbp_acquisition_msg_acq_sv_profile_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderHandshakeReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderHandshakeReq.t new file mode 100644 index 0000000000..63edf50bd2 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderHandshakeReq.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgBootloaderHandshakeReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_bootload_msg_bootloader_handshake_req_1() { + my $buf = decode_base64("VbMAiPcAQdg="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xd841, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xb3, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf788, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":55361,"length":0,"msg_type":179,"payload":"","preamble":85,"sender":63368}})), "raw_json"); +} +test_auto_check_sbp_bootload_msg_bootloader_handshake_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderJumptoApp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderJumptoApp.t new file mode 100644 index 0000000000..26b95105b0 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgBootloaderJumptoApp.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgBootloaderJumptoApp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_bootload_msg_bootloader_jumpto_app_1() { + my $buf = decode_base64("VbEAzRIB2Glg"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x6069, "crc"); + + is($msg->{'length'}, 1, "length"); + + is($msg->{'msg_type'}, 0xb1, "msg_type"); + + is($msg->{'payload'}, "2A==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x12cd, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->jump(), 216, "jump"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":24681,"jump":216,"length":1,"msg_type":177,"payload":"2A==","preamble":85,"sender":4813}})), "raw_json"); +} +test_auto_check_sbp_bootload_msg_bootloader_jumpto_app_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaReq.t new file mode 100644 index 0000000000..770eff4707 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaReq.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgNapDeviceDnaReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_bootload_msg_nap_device_dna_req_1() { + my $buf = decode_base64("Vd4AgDIA56A="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xa0e7, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xde, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x3280, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":41191,"length":0,"msg_type":222,"payload":"","preamble":85,"sender":12928}})), "raw_json"); +} +test_auto_check_sbp_bootload_msg_nap_device_dna_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaResp.t new file mode 100644 index 0000000000..fc50a5a926 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_bootload_MsgNapDeviceDnaResp.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgNapDeviceDnaResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_bootload_msg_nap_device_dna_resp_1() { + my $buf = decode_base64("Vd0AqTgIArsBgq30Q3pGWw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x5b46, "crc"); + + is($msg->{'length'}, 8, "length"); + + is($msg->{'msg_type'}, 0xdd, "msg_type"); + + is($msg->{'payload'}, "ArsBgq30Q3o=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x38a9, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->dna()), $json->encode($json->decode(q{[2,187,1,130,173,244,67,122]})), "dna"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":23366,"dna":[2,187,1,130,173,244,67,122],"length":8,"msg_type":221,"payload":"ArsBgq30Q3o=","preamble":85,"sender":14505}})), "raw_json"); +} +test_auto_check_sbp_bootload_msg_nap_device_dna_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigReq.t new file mode 100644 index 0000000000..9473cfda20 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigReq.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioConfigReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_file_io_msg_fileio_config_req_1() { + my $buf = decode_base64("VQEQwwQEa9pFWrkb"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x1bb9, "crc"); + + is($msg->{'length'}, 4, "length"); + + is($msg->{'msg_type'}, 0x1001, "msg_type"); + + is($msg->{'payload'}, "a9pFWg==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->sequence(), 1514527339, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":7097,"length":4,"msg_type":4097,"payload":"a9pFWg==","preamble":85,"sender":1219,"sequence":1514527339}})), "raw_json"); +} +test_auto_check_sbp_file_io_msg_fileio_config_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigResp.t new file mode 100644 index 0000000000..154d9e540a --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioConfigResp.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioConfigResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_file_io_msg_fileio_config_resp_1() { + my $buf = decode_base64("VQIQwwQQqkw0W5W6LAPYl/89DGFCkO9z"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x73ef, "crc"); + + is($msg->{'length'}, 16, "length"); + + is($msg->{'msg_type'}, 0x1002, "msg_type"); + + is($msg->{'payload'}, "qkw0W5W6LAPYl/89DGFCkA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->batch_size(), 1040160728, "batch_size"); + + is($msg->fileio_version(), 2420269324, "fileio_version"); + + is($msg->sequence(), 1530154154, "sequence"); + + is($msg->window_size(), 53262997, "window_size"); + + is($json->encode($msg), $json->encode($json->decode(q{{"batch_size":1040160728,"crc":29679,"fileio_version":2420269324,"length":16,"msg_type":4098,"payload":"qkw0W5W6LAPYl/89DGFCkA==","preamble":85,"sender":1219,"sequence":1530154154,"window_size":53262997}})), "raw_json"); +} +test_auto_check_sbp_file_io_msg_fileio_config_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirReq.t new file mode 100644 index 0000000000..c10eea9d5d --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirReq.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadDirReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_file_io_msg_fileio_read_dir_req_1() { + my $buf = decode_base64("VakAwwQaguf/WsSGL4Yvc29tZS9yYW5kb20vcGF0aAAaug=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xba1a, "crc"); + + is($msg->{'length'}, 26, "length"); + + is($msg->{'msg_type'}, 0xa9, "msg_type"); + + is($msg->{'payload'}, "guf/WsSGL4Yvc29tZS9yYW5kb20vcGF0aAA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->dirname(), "/some/random/path\x00", "dirname"); + + is($msg->offset(), 2251261636, "offset"); + + is($msg->sequence(), 1526720386, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":47642,"dirname":"/some/random/path\u0000","length":26,"msg_type":169,"offset":2251261636,"payload":"guf/WsSGL4Yvc29tZS9yYW5kb20vcGF0aAA=","preamble":85,"sender":1219,"sequence":1526720386}})), "raw_json"); +} +test_auto_check_sbp_file_io_msg_fileio_read_dir_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirResp.t new file mode 100644 index 0000000000..fba0fcf9b4 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadDirResp.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadDirResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_file_io_msg_fileio_read_dir_resp_1() { + my $buf = decode_base64("VaoAwwQtTv3g62ZpbGUxAGFub3RoZXIgZmlsZQBkZWZpbml0ZWx5IG5vdCBhIGZpbGUAuok="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x89ba, "crc"); + + is($msg->{'length'}, 45, "length"); + + is($msg->{'msg_type'}, 0xaa, "msg_type"); + + is($msg->{'payload'}, "Tv3g62ZpbGUxAGFub3RoZXIgZmlsZQBkZWZpbml0ZWx5IG5vdCBhIGZpbGUA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->contents(), "file1\x00another file\x00definitely not a file\x00", "contents"); + + is($msg->sequence(), 3957390670, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"contents":"file1\u0000another file\u0000definitely not a file\u0000","crc":35258,"length":45,"msg_type":170,"payload":"Tv3g62ZpbGUxAGFub3RoZXIgZmlsZQBkZWZpbml0ZWx5IG5vdCBhIGZpbGUA","preamble":85,"sender":1219,"sequence":3957390670}})), "raw_json"); +} +test_auto_check_sbp_file_io_msg_fileio_read_dir_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadReq.t new file mode 100644 index 0000000000..c2c9377600 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadReq.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_file_io_msg_fileio_read_req_1() { + my $buf = decode_base64("VagAwwQcIpyCKGKyvhc1L3BhdGgvdG8vc29tZS9maWxlAFZk"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x6456, "crc"); + + is($msg->{'length'}, 28, "length"); + + is($msg->{'msg_type'}, 0xa8, "msg_type"); + + is($msg->{'payload'}, "IpyCKGKyvhc1L3BhdGgvdG8vc29tZS9maWxlAA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->chunk_size(), 53, "chunk_size"); + + is($msg->filename(), "/path/to/some/file\x00", "filename"); + + is($msg->offset(), 398373474, "offset"); + + is($msg->sequence(), 679648290, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"chunk_size":53,"crc":25686,"filename":"/path/to/some/file\u0000","length":28,"msg_type":168,"offset":398373474,"payload":"IpyCKGKyvhc1L3BhdGgvdG8vc29tZS9maWxlAA==","preamble":85,"sender":1219,"sequence":679648290}})), "raw_json"); +} +test_auto_check_sbp_file_io_msg_fileio_read_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadResp.t new file mode 100644 index 0000000000..b5e1265cc1 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioReadResp.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_file_io_msg_fileio_read_resp_1() { + my $buf = decode_base64("VaMAwwT/Q7dzD0nn47MSTETl2BVit0W+BfywNyBOCDR/MkdqPU+/ai5Pdvh2z87SW0n7UYPNwZLOuYz5o+dBQ176bZhfe03gfO7NQWcjaNEFvy/5sKbVLsBWIGeS/AQQNqE8Bg2/dLYqv9UU2QiOu+54uPoflyUzsYK+m0dEOO5cgiWJkvZydIql2U8KvYC9AvBcHH5p7OTCADM9SikK74Vqvh4bA/DN/XEZHLtRZdh5KbN4mBJ0NdRkAnLGyAqTGSFz0HE8s7cAKdnO/9Phjr+FUQ/4wUK/9N34x/FwMwG0tH1hkRlI0tfQD344JkEEQBNK329tNCunuspvC1sV7OrEJKuTCvA="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf00a, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0xa3, "msg_type"); + + is($msg->{'payload'}, "Q7dzD0nn47MSTETl2BVit0W+BfywNyBOCDR/MkdqPU+/ai5Pdvh2z87SW0n7UYPNwZLOuYz5o+dBQ176bZhfe03gfO7NQWcjaNEFvy/5sKbVLsBWIGeS/AQQNqE8Bg2/dLYqv9UU2QiOu+54uPoflyUzsYK+m0dEOO5cgiWJkvZydIql2U8KvYC9AvBcHH5p7OTCADM9SikK74Vqvh4bA/DN/XEZHLtRZdh5KbN4mBJ0NdRkAnLGyAqTGSFz0HE8s7cAKdnO/9Phjr+FUQ/4wUK/9N34x/FwMwG0tH1hkRlI0tfQD344JkEEQBNK329tNCunuspvC1sV7OrEJKuT", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->contents()), $json->encode($json->decode(q{[73,231,227,179,18,76,68,229,216,21,98,183,69,190,5,252,176,55,32,78,8,52,127,50,71,106,61,79,191,106,46,79,118,248,118,207,206,210,91,73,251,81,131,205,193,146,206,185,140,249,163,231,65,67,94,250,109,152,95,123,77,224,124,238,205,65,103,35,104,209,5,191,47,249,176,166,213,46,192,86,32,103,146,252,4,16,54,161,60,6,13,191,116,182,42,191,213,20,217,8,142,187,238,120,184,250,31,151,37,51,177,130,190,155,71,68,56,238,92,130,37,137,146,246,114,116,138,165,217,79,10,189,128,189,2,240,92,28,126,105,236,228,194,0,51,61,74,41,10,239,133,106,190,30,27,3,240,205,253,113,25,28,187,81,101,216,121,41,179,120,152,18,116,53,212,100,2,114,198,200,10,147,25,33,115,208,113,60,179,183,0,41,217,206,255,211,225,142,191,133,81,15,248,193,66,191,244,221,248,199,241,112,51,1,180,180,125,97,145,25,72,210,215,208,15,126,56,38,65,4,64,19,74,223,111,109,52,43,167,186,202,111,11,91,21,236,234,196,36,171,147]})), "contents"); + + is($msg->sequence(), 259241795, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"contents":[73,231,227,179,18,76,68,229,216,21,98,183,69,190,5,252,176,55,32,78,8,52,127,50,71,106,61,79,191,106,46,79,118,248,118,207,206,210,91,73,251,81,131,205,193,146,206,185,140,249,163,231,65,67,94,250,109,152,95,123,77,224,124,238,205,65,103,35,104,209,5,191,47,249,176,166,213,46,192,86,32,103,146,252,4,16,54,161,60,6,13,191,116,182,42,191,213,20,217,8,142,187,238,120,184,250,31,151,37,51,177,130,190,155,71,68,56,238,92,130,37,137,146,246,114,116,138,165,217,79,10,189,128,189,2,240,92,28,126,105,236,228,194,0,51,61,74,41,10,239,133,106,190,30,27,3,240,205,253,113,25,28,187,81,101,216,121,41,179,120,152,18,116,53,212,100,2,114,198,200,10,147,25,33,115,208,113,60,179,183,0,41,217,206,255,211,225,142,191,133,81,15,248,193,66,191,244,221,248,199,241,112,51,1,180,180,125,97,145,25,72,210,215,208,15,126,56,38,65,4,64,19,74,223,111,109,52,43,167,186,202,111,11,91,21,236,234,196,36,171,147],"crc":61450,"length":255,"msg_type":163,"payload":"Q7dzD0nn47MSTETl2BVit0W+BfywNyBOCDR/MkdqPU+/ai5Pdvh2z87SW0n7UYPNwZLOuYz5o+dBQ176bZhfe03gfO7NQWcjaNEFvy/5sKbVLsBWIGeS/AQQNqE8Bg2/dLYqv9UU2QiOu+54uPoflyUzsYK+m0dEOO5cgiWJkvZydIql2U8KvYC9AvBcHH5p7OTCADM9SikK74Vqvh4bA/DN/XEZHLtRZdh5KbN4mBJ0NdRkAnLGyAqTGSFz0HE8s7cAKdnO/9Phjr+FUQ/4wUK/9N34x/FwMwG0tH1hkRlI0tfQD344JkEEQBNK329tNCunuspvC1sV7OrEJKuT","preamble":85,"sender":1219,"sequence":259241795}})), "raw_json"); +} +test_auto_check_sbp_file_io_msg_fileio_read_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioRemove.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioRemove.t new file mode 100644 index 0000000000..9637deabca --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_file_io_MsgFileioRemove.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioRemove.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_file_io_msg_fileio_remove_1() { + my $buf = decode_base64("VawAwwQOL3BhdGgvdG8vZmlsZQAu8w=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf32e, "crc"); + + is($msg->{'length'}, 14, "length"); + + is($msg->{'msg_type'}, 0xac, "msg_type"); + + is($msg->{'payload'}, "L3BhdGgvdG8vZmlsZQA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->filename(), "/path/to/file\x00", "filename"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":62254,"filename":"/path/to/file\u0000","length":14,"msg_type":172,"payload":"L3BhdGgvdG8vZmlsZQA=","preamble":85,"sender":1219}})), "raw_json"); +} +test_auto_check_sbp_file_io_msg_fileio_remove_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashDone.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashDone.t new file mode 100644 index 0000000000..eba49fc58e --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashDone.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashDone.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_flash_done_1() { + my $buf = decode_base64("VeAAwwQBUgY2"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x3606, "crc"); + + is($msg->{'length'}, 1, "length"); + + is($msg->{'msg_type'}, 0xe0, "msg_type"); + + is($msg->{'payload'}, "Ug==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->response(), 82, "response"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":13830,"length":1,"msg_type":224,"payload":"Ug==","preamble":85,"response":82,"sender":1219}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_flash_done_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashErase.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashErase.t new file mode 100644 index 0000000000..0a746db68a --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashErase.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashErase.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_flash_erase_1() { + my $buf = decode_base64("VeIAwwQFSu6xdoQA+w=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xfb00, "crc"); + + is($msg->{'length'}, 5, "length"); + + is($msg->{'msg_type'}, 0xe2, "msg_type"); + + is($msg->{'payload'}, "Su6xdoQ=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->sector_num(), 2222371310, "sector_num"); + + is($msg->target(), 74, "target"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":64256,"length":5,"msg_type":226,"payload":"Su6xdoQ=","preamble":85,"sector_num":2222371310,"sender":1219,"target":74}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_flash_erase_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashProgram.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashProgram.t new file mode 100644 index 0000000000..84ce04a65b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashProgram.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashProgram.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_flash_program_1() { + my $buf = decode_base64("VeYAwwT/1Fc09Pqw3utqkB2N/wMQwO2s/tUE3GIi3ubWBtmsei4NJvDsPHkv/KON3h2o1nY3yekV1jn19hMDeTHnJbo67mInRuiFGQqGgUXkhglYt4Wr/6ZkmOdcCcRq9h2RnJcgQ7w/6Y6ui5p/Izw4u3lnh5i2WKD/4/A2ZFsfjWaC/jbj5T414Y9Yi37r6yM2hqNcOVeCshaeEu3Ru+IBLkDi69W6n926GXNUg6fJaAHIDTJHScHJ+qzBDRTugvNEBEguwnH/7g/mQLJ/2VygyXajkDocrkFJLXt2U2vvqCDUv1Fdut8gEzqJSNmX+1MUcSWXIiVHX2nrkKRTxf6331sTLeM="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xe32d, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0xe6, "msg_type"); + + is($msg->{'payload'}, "1Fc09Pqw3utqkB2N/wMQwO2s/tUE3GIi3ubWBtmsei4NJvDsPHkv/KON3h2o1nY3yekV1jn19hMDeTHnJbo67mInRuiFGQqGgUXkhglYt4Wr/6ZkmOdcCcRq9h2RnJcgQ7w/6Y6ui5p/Izw4u3lnh5i2WKD/4/A2ZFsfjWaC/jbj5T414Y9Yi37r6yM2hqNcOVeCshaeEu3Ru+IBLkDi69W6n926GXNUg6fJaAHIDTJHScHJ+qzBDRTugvNEBEguwnH/7g/mQLJ/2VygyXajkDocrkFJLXt2U2vvqCDUv1Fdut8gEzqJSNmX+1MUcSWXIiVHX2nrkKRTxf6331sT", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->addr_len(), 250, "addr_len"); + + is($json->encode($msg->addr_start()), $json->encode($json->decode(q{[87,52,244]})), "addr_start"); + + is($json->encode($msg->data()), $json->encode($json->decode(q{[176,222,235,106,144,29,141,255,3,16,192,237,172,254,213,4,220,98,34,222,230,214,6,217,172,122,46,13,38,240,236,60,121,47,252,163,141,222,29,168,214,118,55,201,233,21,214,57,245,246,19,3,121,49,231,37,186,58,238,98,39,70,232,133,25,10,134,129,69,228,134,9,88,183,133,171,255,166,100,152,231,92,9,196,106,246,29,145,156,151,32,67,188,63,233,142,174,139,154,127,35,60,56,187,121,103,135,152,182,88,160,255,227,240,54,100,91,31,141,102,130,254,54,227,229,62,53,225,143,88,139,126,235,235,35,54,134,163,92,57,87,130,178,22,158,18,237,209,187,226,1,46,64,226,235,213,186,159,221,186,25,115,84,131,167,201,104,1,200,13,50,71,73,193,201,250,172,193,13,20,238,130,243,68,4,72,46,194,113,255,238,15,230,64,178,127,217,92,160,201,118,163,144,58,28,174,65,73,45,123,118,83,107,239,168,32,212,191,81,93,186,223,32,19,58,137,72,217,151,251,83,20,113,37,151,34,37,71,95,105,235,144,164,83,197,254,183,223,91,19]})), "data"); + + is($msg->target(), 212, "target"); + + is($json->encode($msg), $json->encode($json->decode(q{{"addr_len":250,"addr_start":[87,52,244],"crc":58157,"data":[176,222,235,106,144,29,141,255,3,16,192,237,172,254,213,4,220,98,34,222,230,214,6,217,172,122,46,13,38,240,236,60,121,47,252,163,141,222,29,168,214,118,55,201,233,21,214,57,245,246,19,3,121,49,231,37,186,58,238,98,39,70,232,133,25,10,134,129,69,228,134,9,88,183,133,171,255,166,100,152,231,92,9,196,106,246,29,145,156,151,32,67,188,63,233,142,174,139,154,127,35,60,56,187,121,103,135,152,182,88,160,255,227,240,54,100,91,31,141,102,130,254,54,227,229,62,53,225,143,88,139,126,235,235,35,54,134,163,92,57,87,130,178,22,158,18,237,209,187,226,1,46,64,226,235,213,186,159,221,186,25,115,84,131,167,201,104,1,200,13,50,71,73,193,201,250,172,193,13,20,238,130,243,68,4,72,46,194,113,255,238,15,230,64,178,127,217,92,160,201,118,163,144,58,28,174,65,73,45,123,118,83,107,239,168,32,212,191,81,93,186,223,32,19,58,137,72,217,151,251,83,20,113,37,151,34,37,71,95,105,235,144,164,83,197,254,183,223,91,19],"length":255,"msg_type":230,"payload":"1Fc09Pqw3utqkB2N/wMQwO2s/tUE3GIi3ubWBtmsei4NJvDsPHkv/KON3h2o1nY3yekV1jn19hMDeTHnJbo67mInRuiFGQqGgUXkhglYt4Wr/6ZkmOdcCcRq9h2RnJcgQ7w/6Y6ui5p/Izw4u3lnh5i2WKD/4/A2ZFsfjWaC/jbj5T414Y9Yi37r6yM2hqNcOVeCshaeEu3Ru+IBLkDi69W6n926GXNUg6fJaAHIDTJHScHJ+qzBDRTugvNEBEguwnH/7g/mQLJ/2VygyXajkDocrkFJLXt2U2vvqCDUv1Fdut8gEzqJSNmX+1MUcSWXIiVHX2nrkKRTxf6331sT","preamble":85,"sender":1219,"target":212}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_flash_program_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadReq.t new file mode 100644 index 0000000000..3d87d8612e --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadReq.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashReadReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_flash_read_req_1() { + my $buf = decode_base64("VecAwwQF8RxL9EfSOQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x39d2, "crc"); + + is($msg->{'length'}, 5, "length"); + + is($msg->{'msg_type'}, 0xe7, "msg_type"); + + is($msg->{'payload'}, "8RxL9Ec=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->addr_len(), 71, "addr_len"); + + is($json->encode($msg->addr_start()), $json->encode($json->decode(q{[28,75,244]})), "addr_start"); + + is($msg->target(), 241, "target"); + + is($json->encode($msg), $json->encode($json->decode(q{{"addr_len":71,"addr_start":[28,75,244],"crc":14802,"length":5,"msg_type":231,"payload":"8RxL9Ec=","preamble":85,"sender":1219,"target":241}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_flash_read_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadResp.t new file mode 100644 index 0000000000..c228dc573e --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgFlashReadResp.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashReadResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_flash_read_resp_1() { + my $buf = decode_base64("VeEAwwQFiJs0rHyVhw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x8795, "crc"); + + is($msg->{'length'}, 5, "length"); + + is($msg->{'msg_type'}, 0xe1, "msg_type"); + + is($msg->{'payload'}, "iJs0rHw=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->addr_len(), 124, "addr_len"); + + is($json->encode($msg->addr_start()), $json->encode($json->decode(q{[155,52,172]})), "addr_start"); + + is($msg->target(), 136, "target"); + + is($json->encode($msg), $json->encode($json->decode(q{{"addr_len":124,"addr_start":[155,52,172],"crc":34709,"length":5,"msg_type":225,"payload":"iJs0rHw=","preamble":85,"sender":1219,"target":136}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_flash_read_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgM25FlashWriteStatus.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgM25FlashWriteStatus.t new file mode 100644 index 0000000000..4a3dc3c244 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgM25FlashWriteStatus.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgM25FlashWriteStatus.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_m25_flash_write_status_1() { + my $buf = decode_base64("VfMAwwQBBXDI"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xc870, "crc"); + + is($msg->{'length'}, 1, "length"); + + is($msg->{'msg_type'}, 0xf3, "msg_type"); + + is($msg->{'payload'}, "BQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->status()), $json->encode($json->decode(q{[5]})), "status"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":51312,"length":1,"msg_type":243,"payload":"BQ==","preamble":85,"sender":1219,"status":[5]}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_m25_flash_write_status_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashLockSector.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashLockSector.t new file mode 100644 index 0000000000..d99b3bcfee --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashLockSector.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmFlashLockSector.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_stm_flash_lock_sector_1() { + my $buf = decode_base64("VeMAwwQEoffFQ+Ug"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x20e5, "crc"); + + is($msg->{'length'}, 4, "length"); + + is($msg->{'msg_type'}, 0xe3, "msg_type"); + + is($msg->{'payload'}, "offFQw==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->sector(), 1137047457, "sector"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":8421,"length":4,"msg_type":227,"payload":"offFQw==","preamble":85,"sector":1137047457,"sender":1219}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_stm_flash_lock_sector_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashUnlockSector.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashUnlockSector.t new file mode 100644 index 0000000000..892a4d403e --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmFlashUnlockSector.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmFlashUnlockSector.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_stm_flash_unlock_sector_1() { + my $buf = decode_base64("VeQAwwQEHxDnMTXZ"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xd935, "crc"); + + is($msg->{'length'}, 4, "length"); + + is($msg->{'msg_type'}, 0xe4, "msg_type"); + + is($msg->{'payload'}, "HxDnMQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->sector(), 837226527, "sector"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":55605,"length":4,"msg_type":228,"payload":"HxDnMQ==","preamble":85,"sector":837226527,"sender":1219}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_stm_flash_unlock_sector_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdReq.t new file mode 100644 index 0000000000..9786ed73c4 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdReq.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmUniqueIdReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_stm_unique_id_req_1() { + my $buf = decode_base64("VegAwwQAQoo="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x8a42, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xe8, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":35394,"length":0,"msg_type":232,"payload":"","preamble":85,"sender":1219}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_stm_unique_id_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdResp.t new file mode 100644 index 0000000000..ff863a3e49 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_flash_MsgStmUniqueIdResp.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmUniqueIdResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_flash_msg_stm_unique_id_resp_1() { + my $buf = decode_base64("VeUAwwQMxBAPo1Xdd2YgwjiQ3cQ="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xc4dd, "crc"); + + is($msg->{'length'}, 12, "length"); + + is($msg->{'msg_type'}, 0xe5, "msg_type"); + + is($msg->{'payload'}, "xBAPo1Xdd2YgwjiQ", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->stm_id()), $json->encode($json->decode(q{[196,16,15,163,85,221,119,102,32,194,56,144]})), "stm_id"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":50397,"length":12,"msg_type":229,"payload":"xBAPo1Xdd2YgwjiQ","preamble":85,"sender":1219,"stm_id":[196,16,15,163,85,221,119,102,32,194,56,144]}})), "raw_json"); +} +test_auto_check_sbp_flash_msg_stm_unique_id_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuState.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuState.t new file mode 100644 index 0000000000..2a1c449b15 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuState.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxCpuState.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_cpu_state_1() { + my $buf = decode_base64("VQh/lIVGZXrDYtcjXusUcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNETl"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xe544, "crc"); + + is($msg->{'length'}, 70, "length"); + + is($msg->{'msg_type'}, 0x7f08, "msg_type"); + + is($msg->{'payload'}, "ZXrDYtcjXusUcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x8594, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->cmdline(), "/path/to/process-name arg0 arg1 arg2 arg3 arg4", "cmdline"); + + is($msg->flags(), 20, "flags"); + + is($msg->index(), 101, "index"); + + is($msg->pcpu(), 98, "pcpu"); + + is($msg->pid(), 50042, "pid"); + + is($msg->time(), 3948815319, "time"); + + is($msg->tname(), "process-name\x00\x00\x00", "tname"); + + is($json->encode($msg), $json->encode($json->decode(q{{"cmdline":"/path/to/process-name arg0 arg1 arg2 arg3 arg4","crc":58692,"flags":20,"index":101,"length":70,"msg_type":32520,"payload":"ZXrDYtcjXusUcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==","pcpu":98,"pid":50042,"preamble":85,"sender":34196,"time":3948815319,"tname":"process-name\u0000\u0000\u0000"}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_cpu_state_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuStateDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuStateDepA.t new file mode 100644 index 0000000000..68c814cfe5 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxCpuStateDepA.t @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxCpuStateDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_cpu_state_dep_a_1() { + my $buf = decode_base64("VQB/DFtBM/D6snByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzRQMA=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x3050, "crc"); + + is($msg->{'length'}, 65, "length"); + + is($msg->{'msg_type'}, 0x7f00, "msg_type"); + + is($msg->{'payload'}, "M/D6snByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x5b0c, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->cmdline(), "/path/to/process-name arg0 arg1 arg2 arg3 arg4", "cmdline"); + + is($msg->index(), 51, "index"); + + is($msg->pcpu(), 178, "pcpu"); + + is($msg->pid(), 64240, "pid"); + + is($msg->tname(), "process-name\x00\x00\x00", "tname"); + + is($json->encode($msg), $json->encode($json->decode(q{{"cmdline":"/path/to/process-name arg0 arg1 arg2 arg3 arg4","crc":12368,"index":51,"length":65,"msg_type":32512,"payload":"M/D6snByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=","pcpu":178,"pid":64240,"preamble":85,"sender":23308,"tname":"process-name\u0000\u0000\u0000"}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_cpu_state_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemState.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemState.t new file mode 100644 index 0000000000..d42fe7c968 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemState.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxMemState.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_mem_state_1() { + my $buf = decode_base64("VQl/X/1Gmr/fE/c1GrtMcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNAO1"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xb503, "crc"); + + is($msg->{'length'}, 70, "length"); + + is($msg->{'msg_type'}, 0x7f09, "msg_type"); + + is($msg->{'payload'}, "mr/fE/c1GrtMcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xfd5f, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->cmdline(), "/path/to/process-name arg0 arg1 arg2 arg3 arg4", "cmdline"); + + is($msg->flags(), 76, "flags"); + + is($msg->index(), 154, "index"); + + is($msg->pid(), 57279, "pid"); + + is($msg->pmem(), 19, "pmem"); + + is($msg->time(), 3139057143, "time"); + + is($msg->tname(), "process-name\x00\x00\x00", "tname"); + + is($json->encode($msg), $json->encode($json->decode(q{{"cmdline":"/path/to/process-name arg0 arg1 arg2 arg3 arg4","crc":46339,"flags":76,"index":154,"length":70,"msg_type":32521,"payload":"mr/fE/c1GrtMcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==","pid":57279,"pmem":19,"preamble":85,"sender":64863,"time":3139057143,"tname":"process-name\u0000\u0000\u0000"}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_mem_state_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemStateDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemStateDepA.t new file mode 100644 index 0000000000..374afa2807 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxMemStateDepA.t @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxMemStateDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_mem_state_dep_a_1() { + my $buf = decode_base64("VQF/uW1B910wwXByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQRiQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x8911, "crc"); + + is($msg->{'length'}, 65, "length"); + + is($msg->{'msg_type'}, 0x7f01, "msg_type"); + + is($msg->{'payload'}, "910wwXByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x6db9, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->cmdline(), "/path/to/process-name arg0 arg1 arg2 arg3 arg4", "cmdline"); + + is($msg->index(), 247, "index"); + + is($msg->pid(), 12381, "pid"); + + is($msg->pmem(), 193, "pmem"); + + is($msg->tname(), "process-name\x00\x00\x00", "tname"); + + is($json->encode($msg), $json->encode($json->decode(q{{"cmdline":"/path/to/process-name arg0 arg1 arg2 arg3 arg4","crc":35089,"index":247,"length":65,"msg_type":32513,"payload":"910wwXByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=","pid":12381,"pmem":193,"preamble":85,"sender":28089,"tname":"process-name\u0000\u0000\u0000"}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_mem_state_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdCount.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdCount.t new file mode 100644 index 0000000000..9b89e29395 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdCount.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessFdCount.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_process_fd_count_1() { + my $buf = decode_base64("VQZ/HsMzpL2lBYsvcGF0aC90by9wcm9jZXNzLW5hbWUgYXJnMCBhcmcxIGFyZzIgYXJnMyBhcmc0Al4="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x5e02, "crc"); + + is($msg->{'length'}, 51, "length"); + + is($msg->{'msg_type'}, 0x7f06, "msg_type"); + + is($msg->{'payload'}, "pL2lBYsvcGF0aC90by9wcm9jZXNzLW5hbWUgYXJnMCBhcmcxIGFyZzIgYXJnMyBhcmc0", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xc31e, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->cmdline(), "/path/to/process-name arg0 arg1 arg2 arg3 arg4", "cmdline"); + + is($msg->fd_count(), 35589, "fd_count"); + + is($msg->index(), 164, "index"); + + is($msg->pid(), 42429, "pid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"cmdline":"/path/to/process-name arg0 arg1 arg2 arg3 arg4","crc":24066,"fd_count":35589,"index":164,"length":51,"msg_type":32518,"payload":"pL2lBYsvcGF0aC90by9wcm9jZXNzLW5hbWUgYXJnMCBhcmcxIGFyZzIgYXJnMyBhcmc0","pid":42429,"preamble":85,"sender":49950}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_process_fd_count_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdSummary.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdSummary.t new file mode 100644 index 0000000000..9d4fa58ab8 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessFdSummary.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessFdSummary.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_process_fd_summary_1() { + my $buf = decode_base64("VQd/Z/gdE4PITWZkMQBmZDIAZmQzAGZkNABmZDUAZmQ2AACBUA=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x5081, "crc"); + + is($msg->{'length'}, 29, "length"); + + is($msg->{'msg_type'}, 0x7f07, "msg_type"); + + is($msg->{'payload'}, "E4PITWZkMQBmZDIAZmQzAGZkNABmZDUAZmQ2AAA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf867, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->most_opened(), "fd1\x00fd2\x00fd3\x00fd4\x00fd5\x00fd6\x00\x00", "most_opened"); + + is($msg->sys_fd_count(), 1304986387, "sys_fd_count"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":20609,"length":29,"most_opened":"fd1\u0000fd2\u0000fd3\u0000fd4\u0000fd5\u0000fd6\u0000\u0000","msg_type":32519,"payload":"E4PITWZkMQBmZDIAZmQzAGZkNABmZDUAZmQ2AAA=","preamble":85,"sender":63591,"sys_fd_count":1304986387}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_process_fd_summary_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketCounts.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketCounts.t new file mode 100644 index 0000000000..77ffe3cea1 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketCounts.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessSocketCounts.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_process_socket_counts_1() { + my $buf = decode_base64("VQN/bAk3M4lvT3YDjHJzL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNLSD"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x83b4, "crc"); + + is($msg->{'length'}, 55, "length"); + + is($msg->{'msg_type'}, 0x7f03, "msg_type"); + + is($msg->{'payload'}, "M4lvT3YDjHJzL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x096c, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->cmdline(), "/path/to/process-name arg0 arg1 arg2 arg3 arg4", "cmdline"); + + is($msg->index(), 51, "index"); + + is($msg->pid(), 28553, "pid"); + + is($msg->socket_count(), 30287, "socket_count"); + + is($msg->socket_states(), 29554, "socket_states"); + + is($msg->socket_types(), 35843, "socket_types"); + + is($json->encode($msg), $json->encode($json->decode(q{{"cmdline":"/path/to/process-name arg0 arg1 arg2 arg3 arg4","crc":33716,"index":51,"length":55,"msg_type":32515,"payload":"M4lvT3YDjHJzL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==","pid":28553,"preamble":85,"sender":2412,"socket_count":30287,"socket_states":29554,"socket_types":35843}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_process_socket_counts_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketQueues.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketQueues.t new file mode 100644 index 0000000000..4e7dbfba89 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxProcessSocketQueues.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessSocketQueues.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_process_socket_queues_1() { + my $buf = decode_base64("VQR/u+h5tYdL+dMj/FBtD99hZGRyZXNzIG9mIGxhcmdlc3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNAL3"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf702, "crc"); + + is($msg->{'length'}, 121, "length"); + + is($msg->{'msg_type'}, 0x7f04, "msg_type"); + + is($msg->{'payload'}, "tYdL+dMj/FBtD99hZGRyZXNzIG9mIGxhcmdlc3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xe8bb, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->address_of_largest(), "address of largest\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "address_of_largest"); + + is($msg->cmdline(), "/path/to/process-name arg0 arg1 arg2 arg3 arg4", "cmdline"); + + is($msg->index(), 181, "index"); + + is($msg->pid(), 19335, "pid"); + + is($msg->recv_queued(), 54265, "recv_queued"); + + is($msg->send_queued(), 64547, "send_queued"); + + is($msg->socket_states(), 57103, "socket_states"); + + is($msg->socket_types(), 27984, "socket_types"); + + is($json->encode($msg), $json->encode($json->decode(q{{"address_of_largest":"address of largest\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","cmdline":"/path/to/process-name arg0 arg1 arg2 arg3 arg4","crc":63234,"index":181,"length":121,"msg_type":32516,"payload":"tYdL+dMj/FBtD99hZGRyZXNzIG9mIGxhcmdlc3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==","pid":19335,"preamble":85,"recv_queued":54265,"send_queued":64547,"sender":59579,"socket_states":57103,"socket_types":27984}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_process_socket_queues_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSocketUsage.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSocketUsage.t new file mode 100644 index 0000000000..e982433d12 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSocketUsage.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxSocketUsage.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_socket_usage_1() { + my $buf = decode_base64("VQV/copIDcRFrUPeurX2mvsR4LMaqbFaldXWBn5AeLlUg8hvII3Z0TQOvpOf9o161HeDHngvGW2aQYSkJx4erwgsHG/s8LBKn4GamaLlgpo="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x9a82, "crc"); + + is($msg->{'length'}, 72, "length"); + + is($msg->{'msg_type'}, 0x7f05, "msg_type"); + + is($msg->{'payload'}, "DcRFrUPeurX2mvsR4LMaqbFaldXWBn5AeLlUg8hvII3Z0TQOvpOf9o161HeDHngvGW2aQYSkJx4erwgsHG/s8LBKn4GamaLl", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x8a72, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->avg_queue_depth(), 2907030541, "avg_queue_depth"); + + is($msg->max_queue_depth(), 3048922691, "max_queue_depth"); + + is($json->encode($msg->socket_state_counts()), $json->encode($json->decode(q{[39670,4603,46048,43290,23217,54677,1750,16510,47480,33620,28616,36128,53721,3636,37822,63135]})), "socket_state_counts"); + + is($json->encode($msg->socket_type_counts()), $json->encode($json->decode(q{[31373,30676,7811,12152,27929,16794,42116,7719,44830,11272,28444,61676,19120,33183,39322,58786]})), "socket_type_counts"); + + is($json->encode($msg), $json->encode($json->decode(q{{"avg_queue_depth":2907030541,"crc":39554,"length":72,"max_queue_depth":3048922691,"msg_type":32517,"payload":"DcRFrUPeurX2mvsR4LMaqbFaldXWBn5AeLlUg8hvII3Z0TQOvpOf9o161HeDHngvGW2aQYSkJx4erwgsHG/s8LBKn4GamaLl","preamble":85,"sender":35442,"socket_state_counts":[39670,4603,46048,43290,23217,54677,1750,16510,47480,33620,28616,36128,53721,3636,37822,63135],"socket_type_counts":[31373,30676,7811,12152,27929,16794,42116,7719,44830,11272,28444,61676,19120,33183,39322,58786]}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_socket_usage_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysState.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysState.t new file mode 100644 index 0000000000..bd3a141d4b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysState.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxSysState.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_sys_state_1() { + my $buf = decode_base64("VQp/VacPFM9918RHoeX6umweagUJ5fI="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf2e5, "crc"); + + is($msg->{'length'}, 15, "length"); + + is($msg->{'msg_type'}, 0x7f0a, "msg_type"); + + is($msg->{'payload'}, "FM9918RHoeX6umweagUJ", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xa755, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 9, "flags"); + + is($msg->mem_total(), 53012, "mem_total"); + + is($msg->pcpu(), 125, "pcpu"); + + is($msg->pid_count(), 47866, "pid_count"); + + is($msg->pmem(), 215, "pmem"); + + is($msg->procs_starting(), 18372, "procs_starting"); + + is($msg->procs_stopping(), 58785, "procs_stopping"); + + is($msg->time(), 90840684, "time"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":62181,"flags":9,"length":15,"mem_total":53012,"msg_type":32522,"payload":"FM9918RHoeX6umweagUJ","pcpu":125,"pid_count":47866,"pmem":215,"preamble":85,"procs_starting":18372,"procs_stopping":58785,"sender":42837,"time":90840684}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_sys_state_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysStateDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysStateDepA.t new file mode 100644 index 0000000000..ebfea25df9 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_linux_MsgLinuxSysStateDepA.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxSysStateDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_linux_msg_linux_sys_state_dep_a_1() { + my $buf = decode_base64("VQJ/VDgKvKPTwnNHZWd8yd/f"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xdfdf, "crc"); + + is($msg->{'length'}, 10, "length"); + + is($msg->{'msg_type'}, 0x7f02, "msg_type"); + + is($msg->{'payload'}, "vKPTwnNHZWd8yQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x3854, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->mem_total(), 41916, "mem_total"); + + is($msg->pcpu(), 211, "pcpu"); + + is($msg->pid_count(), 51580, "pid_count"); + + is($msg->pmem(), 194, "pmem"); + + is($msg->procs_starting(), 18291, "procs_starting"); + + is($msg->procs_stopping(), 26469, "procs_stopping"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":57311,"length":10,"mem_total":41916,"msg_type":32514,"payload":"vKPTwnNHZWd8yQ==","pcpu":211,"pid_count":51580,"pmem":194,"preamble":85,"procs_starting":18291,"procs_stopping":26469,"sender":14420}})), "raw_json"); +} +test_auto_check_sbp_linux_msg_linux_sys_state_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_mag_MsgMagRaw.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_mag_MsgMagRaw.t new file mode 100644 index 0000000000..6d8881e860 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_mag_MsgMagRaw.t @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/mag/test_MsgMagRaw.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_mag_msg_mag_raw_1() { + my $buf = decode_base64("VQIJwwQLreOexs5iA+YCbuWfFw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x179f, "crc"); + + is($msg->{'length'}, 11, "length"); + + is($msg->{'msg_type'}, 0x902, "msg_type"); + + is($msg->{'payload'}, "reOexs5iA+YCbuU=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->mag_x(), 866, "mag_x"); + + is($msg->mag_y(), 742, "mag_y"); + + is($msg->mag_z(), -6802, "mag_z"); + + is($msg->tow(), 3332301741, "tow"); + + is($msg->tow_f(), 206, "tow_f"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":6047,"length":11,"mag_x":866,"mag_y":742,"mag_z":-6802,"msg_type":2306,"payload":"reOexs5iA+YCbuU=","preamble":85,"sender":1219,"tow":3332301741,"tow_f":206}})), "raw_json"); +} +test_auto_check_sbp_mag_msg_mag_raw_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgBaselineHeadingDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgBaselineHeadingDepA.t new file mode 100644 index 0000000000..20654158b8 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgBaselineHeadingDepA.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/navigation/test_MsgBaselineHeadingDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_navigation_msg_baseline_heading_dep_a_1() { + my $buf = decode_base64("VQcCfM4KUm1YsEQOUsu6Oq22"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xb6ad, "crc"); + + is($msg->{'length'}, 10, "length"); + + is($msg->{'msg_type'}, 0x207, "msg_type"); + + is($msg->{'payload'}, "Um1YsEQOUsu6Og==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xce7c, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 58, "flags"); + + is($msg->heading(), 3411152452, "heading"); + + is($msg->n_sats(), 186, "n_sats"); + + is($msg->tow(), 2958585170, "tow"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":46765,"flags":58,"heading":3411152452,"length":10,"msg_type":519,"n_sats":186,"payload":"Um1YsEQOUsu6Og==","preamble":85,"sender":52860,"tow":2958585170}})), "raw_json"); +} +test_auto_check_sbp_navigation_msg_baseline_heading_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgPosLlhAcc.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgPosLlhAcc.t new file mode 100644 index 0000000000..893ad2db15 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgPosLlhAcc.t @@ -0,0 +1,80 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/navigation/test_MsgPosLlhAcc.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_navigation_msg_pos_llh_acc_1() { + my $buf = decode_base64("VRgCAhxDJ3huEjMzMzMzi71AmpmZmRmXwEAzMzMzM6GwQDMzMzMzZbNAM6MWRZoZrUVmhvNEmsnERc3gAEYzI0hFM2MfRV8bSNyx"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xb1dc, "crc"); + + is($msg->{'length'}, 67, "length"); + + is($msg->{'msg_type'}, 0x218, "msg_type"); + + is($msg->{'payload'}, "J3huEjMzMzMzi71AmpmZmRmXwEAzMzMzM6GwQDMzMzMzZbNAM6MWRZoZrUVmhvNEmsnERc3gAEYzI0hFM2MfRV8bSA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x1c02, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->at_accuracy(), 6297.2001953125, "at_accuracy"); + + is($msg->confidence_and_geoid(), 95, "confidence_and_geoid"); + + is($msg->ct_accuracy(), 1948.199951171875, "ct_accuracy"); + + is($msg->flags(), 72, "flags"); + + is($msg->h_accuracy(), 2410.199951171875, "h_accuracy"); + + is($json->encode($msg->h_ellipse()), $json->encode($json->decode(q{{"orientation":2550.199951171875,"semi_major":8248.2001953125,"semi_minor":3202.199951171875}})), "h_ellipse"); + + is($msg->height(), 4257.2, "height"); + + is($msg->lat(), 7563.2, "lat"); + + is($msg->lon(), 8494.2, "lon"); + + is($msg->n_sats(), 27, "n_sats"); + + is($msg->orthometric_height(), 4965.2, "orthometric_height"); + + is($msg->tow(), 309229607, "tow"); + + is($msg->v_accuracy(), 5539.2001953125, "v_accuracy"); + + is($json->encode($msg), $json->encode($json->decode(q{{"at_accuracy":6297.2001953125,"confidence_and_geoid":95,"crc":45532,"ct_accuracy":1948.199951171875,"flags":72,"h_accuracy":2410.199951171875,"h_ellipse":{"orientation":2550.199951171875,"semi_major":8248.2001953125,"semi_minor":3202.199951171875},"height":4257.2,"lat":7563.2,"length":67,"lon":8494.2,"msg_type":536,"n_sats":27,"orthometric_height":4965.2,"payload":"J3huEjMzMzMzi71AmpmZmRmXwEAzMzMzM6GwQDMzMzMzZbNAM6MWRZoZrUVmhvNEmsnERc3gAEYzI0hFM2MfRV8bSA==","preamble":85,"sender":7170,"tow":309229607,"v_accuracy":5539.2001953125}})), "raw_json"); +} +test_auto_check_sbp_navigation_msg_pos_llh_acc_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevel.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevel.t index 7d17af4031..e41733fec4 100644 --- a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevel.t +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevel.t @@ -29,39 +29,67 @@ use Test::More; use JSON::PP; use MIME::Base64; sub test_auto_check_sbp_navigation_msg_protection_level_1() { - my $buf = decode_base64("VRYCABAhiOPpHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUsM="); + my $buf = decode_base64("VRcCLQNMblQE8i4zNaBZVKcpORXZ9D2hU2iMiVr2MzMzMzOqtECamZmZGVjDQDMzMzMzw3lA5/sm3dC3p1DfGmGkLS66POvjt6C7XXTgaSggIYW8"); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); - is($msg->{'crc'}, 0xc352, "crc"); + is($msg->{'crc'}, 0xbc85, "crc"); - is($msg->{'length'}, 33, "length"); + is($msg->{'length'}, 76, "length"); - is($msg->{'payload'}, "iOPpHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "payload"); + is($msg->{'msg_type'}, 0x217, "msg_type"); - is($msg->{'msg_type'}, 0x216, "msg_type"); + is($msg->{'payload'}, "blQE8i4zNaBZVKcpORXZ9D2hU2iMiVr2MzMzMzOqtECamZmZGVjDQDMzMzMzw3lA5/sm3dC3p1DfGmGkLS66POvjt6C7XXTgaSggIQ==", "payload"); is($msg->{'preamble'}, 0x55, "preamble"); - is($msg->{'sender'}, 0x1000, "sender"); + is($msg->{'sender'}, 0x032d, "sender"); my $json = JSON::PP->new->convert_blessed->canonical; - is($msg->flags(), 0, "flags"); + is($msg->atpl(), 10663, "atpl"); - is($msg->height(), 0.0, "height"); + is($msg->ctpl(), 5433, "ctpl"); - is($msg->hpl(), 0, "hpl"); + is($msg->flags(), 555755625, "flags"); - is($msg->lat(), 0.0, "lat"); + is($msg->heading(), -529244741, "heading"); - is($msg->lon(), 0.0, "lon"); + is($msg->height(), 412.2, "height"); - is($msg->tow(), 501867400, "tow"); + is($msg->hopl(), 26707, "hopl"); - is($msg->vpl(), 0, "vpl"); + is($msg->hpl(), 41013, "hpl"); + + is($msg->hvpl(), 62681, "hvpl"); + + is($msg->lat(), 5290.2, "lat"); + + is($msg->lon(), 9904.2, "lon"); + + is($msg->pitch(), -1598561301, "pitch"); + + is($msg->popl(), 35212, "popl"); + + is($msg->roll(), 1018834477, "roll"); + + is($msg->ropl(), 63066, "ropl"); + + is($msg->tow(), 4060370030, "tow"); + + is($msg->v_x(), -584647705, "v_x"); + + is($msg->v_y(), 1353168848, "v_y"); + + is($msg->v_z(), -1537140001, "v_z"); + + is($msg->vpl(), 21593, "vpl"); + + is($msg->vvpl(), 41277, "vvpl"); + + is($msg->wn(), 13102, "wn"); - is($json->encode($msg), $json->encode($json->decode(q{{"crc":50002,"flags":0,"height":0.0,"hpl":0,"lat":0.0,"length":33,"lon":0.0,"msg_type":534,"payload":"iOPpHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA","preamble":85,"sender":4096,"tow":501867400,"vpl":0}})), "raw_json"); + is($json->encode($msg), $json->encode($json->decode(q{{"atpl":10663,"crc":48261,"ctpl":5433,"flags":555755625,"heading":-529244741,"height":412.2,"hopl":26707,"hpl":41013,"hvpl":62681,"lat":5290.2,"length":76,"lon":9904.2,"msg_type":535,"payload":"blQE8i4zNaBZVKcpORXZ9D2hU2iMiVr2MzMzMzOqtECamZmZGVjDQDMzMzMzw3lA5/sm3dC3p1DfGmGkLS66POvjt6C7XXTgaSggIQ==","pitch":-1598561301,"popl":35212,"preamble":85,"roll":1018834477,"ropl":63066,"sender":813,"tow":4060370030,"v_x":-584647705,"v_y":1353168848,"v_z":-1537140001,"vpl":21593,"vvpl":41277,"wn":13102}})), "raw_json"); } test_auto_check_sbp_navigation_msg_protection_level_1(); diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevelDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevelDepA.t new file mode 100644 index 0000000000..4fed884027 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_navigation_MsgProtectionLevelDepA.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/navigation/test_MsgProtectionLevelDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_navigation_msg_protection_level_dep_a_1() { + my $buf = decode_base64("VRYClBYhNH5FuS9VBIszMzMzM/S+QGZmZmZmzKhAmpmZmRknwED4UWg="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x6851, "crc"); + + is($msg->{'length'}, 33, "length"); + + is($msg->{'msg_type'}, 0x216, "msg_type"); + + is($msg->{'payload'}, "NH5FuS9VBIszMzMzM/S+QGZmZmZmzKhAmpmZmRknwED4", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x1694, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 248, "flags"); + + is($msg->height(), 8270.2, "height"); + + is($msg->hpl(), 35588, "hpl"); + + is($msg->lat(), 7924.2, "lat"); + + is($msg->lon(), 3174.2, "lon"); + + is($msg->tow(), 3108339252, "tow"); + + is($msg->vpl(), 21807, "vpl"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":26705,"flags":248,"height":8270.2,"hpl":35588,"lat":7924.2,"length":33,"lon":3174.2,"msg_type":534,"payload":"NH5FuS9VBIszMzMzM/S+QGZmZmZmzKhAmpmZmRknwED4","preamble":85,"sender":5780,"tow":3108339252,"vpl":21807}})), "raw_json"); +} +test_auto_check_sbp_navigation_msg_protection_level_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ndb_MsgNdbEvent.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ndb_MsgNdbEvent.t new file mode 100644 index 0000000000..05866bd426 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ndb_MsgNdbEvent.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ndb/test_MsgNdbEvent.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ndb_msg_ndb_event_1() { + my $buf = decode_base64("VQAEpK4S/rxGuUUAAAD5Sc1z7kpiQraUEKY="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xa610, "crc"); + + is($msg->{'length'}, 18, "length"); + + is($msg->{'msg_type'}, 0x400, "msg_type"); + + is($msg->{'payload'}, "/rxGuUUAAAD5Sc1z7kpiQraU", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xaea4, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->data_source(), 115, "data_source"); + + is($msg->event(), 249, "event"); + + is($json->encode($msg->object_sid()), $json->encode($json->decode(q{{"code":74,"sat":238}})), "object_sid"); + + is($msg->object_type(), 73, "object_type"); + + is($msg->original_sender(), 38070, "original_sender"); + + is($msg->recv_time(), 299461164286, "recv_time"); + + is($msg->result(), 205, "result"); + + is($json->encode($msg->src_sid()), $json->encode($json->decode(q{{"code":66,"sat":98}})), "src_sid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":42512,"data_source":115,"event":249,"length":18,"msg_type":1024,"object_sid":{"code":74,"sat":238},"object_type":73,"original_sender":38070,"payload":"/rxGuUUAAAD5Sc1z7kpiQraU","preamble":85,"recv_time":299461164286,"result":205,"sender":44708,"src_sid":{"code":66,"sat":98}}})), "raw_json"); +} +test_auto_check_sbp_ndb_msg_ndb_event_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLO.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLO.t new file mode 100644 index 0000000000..c7ad71ae1b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLO.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGLO.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_almanac_glo_1() { + my $buf = decode_base64("VXMAwwROFgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/m1c="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x579b, "crc"); + + is($msg->{'length'}, 78, "length"); + + is($msg->{'msg_type'}, 0x73, "msg_type"); + + is($msg->{'payload'}, "FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1}})), "common"); + + is($msg->epsilon(), -0.9893036629599647, "epsilon"); + + is($msg->i(), 5153.550029754639, "i"); + + is($msg->lambda_na(), -0.02200078842114688, "lambda_na"); + + is($msg->omega(), 0.9341514480259797, "omega"); + + is($msg->t(), -1.8731818448797617, "t"); + + is($msg->t_dot(), -8.903585155774196e-09, "t_dot"); + + is($msg->t_lambda_na(), 0.007072207052260637, "t_lambda_na"); + + is($json->encode($msg), $json->encode($json->decode(q{{"common":{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1},"crc":22427,"epsilon":-0.9893036629599647,"i":5153.550029754639,"lambda_na":-0.02200078842114688,"length":78,"msg_type":115,"omega":0.9341514480259797,"payload":"FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/","preamble":85,"sender":1219,"t":-1.8731818448797617,"t_dot":-8.903585155774196e-09,"t_lambda_na":0.007072207052260637}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_almanac_glo_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLODep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLODep.t new file mode 100644 index 0000000000..5ed9b5bfe2 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGLODep.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGLODep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_almanac_glo_dep_1() { + my $buf = decode_base64("VXEAwwRQFgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T/Lsg=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xb2cb, "crc"); + + is($msg->{'length'}, 80, "length"); + + is($msg->{'msg_type'}, 0x71, "msg_type"); + + is($msg->{'payload'}, "FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"reserved":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1}})), "common"); + + is($msg->epsilon(), -0.9893036629599647, "epsilon"); + + is($msg->i(), 5153.550029754639, "i"); + + is($msg->lambda_na(), -0.02200078842114688, "lambda_na"); + + is($msg->omega(), 0.9341514480259797, "omega"); + + is($msg->t(), -1.8731818448797617, "t"); + + is($msg->t_dot(), -8.903585155774196e-09, "t_dot"); + + is($msg->t_lambda_na(), 0.007072207052260637, "t_lambda_na"); + + is($json->encode($msg), $json->encode($json->decode(q{{"common":{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"reserved":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1},"crc":45771,"epsilon":-0.9893036629599647,"i":5153.550029754639,"lambda_na":-0.02200078842114688,"length":80,"msg_type":113,"omega":0.9341514480259797,"payload":"FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8=","preamble":85,"sender":1219,"t":-1.8731818448797617,"t_dot":-8.903585155774196e-09,"t_lambda_na":0.007072207052260637}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_almanac_glo_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPS.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPS.t new file mode 100644 index 0000000000..3ce32ded5f --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPS.t @@ -0,0 +1,74 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGPS.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_almanac_gps_1() { + my $buf = decode_base64("VXIAwwReFgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/AAAAAGyxRL8AAAAAAMCjPb4t"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x2dbe, "crc"); + + is($msg->{'length'}, 94, "length"); + + is($msg->{'msg_type'}, 0x72, "msg_type"); + + is($msg->{'payload'}, "FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/AAAAAGyxRL8AAAAAAMCjPQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -0.0006315018981695175, "af0"); + + is($msg->af1(), 8.981260180007666e-12, "af1"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1}})), "common"); + + is($msg->ecc(), 0.007072207052260637, "ecc"); + + is($msg->inc(), 0.9341514480259797, "inc"); + + is($msg->m0(), -0.02200078842114688, "m0"); + + is($msg->omega0(), -1.8731818448797617, "omega0"); + + is($msg->omegadot(), -8.903585155774196e-09, "omegadot"); + + is($msg->sqrta(), 5153.550029754639, "sqrta"); + + is($msg->w(), -0.9893036629599647, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-0.0006315018981695175,"af1":8.981260180007666e-12,"common":{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1},"crc":11710,"ecc":0.007072207052260637,"inc":0.9341514480259797,"length":94,"m0":-0.02200078842114688,"msg_type":114,"omega0":-1.8731818448797617,"omegadot":-8.903585155774196e-09,"payload":"FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/AAAAAGyxRL8AAAAAAMCjPQ==","preamble":85,"sender":1219,"sqrta":5153.550029754639,"w":-0.9893036629599647}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_almanac_gps_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPSDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPSDep.t new file mode 100644 index 0000000000..8d523982f9 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgAlmanacGPSDep.t @@ -0,0 +1,74 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGPSDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_almanac_gps_dep_1() { + my $buf = decode_base64("VXAAwwRgFgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8AAAAAbLFEvwAAAAAAwKM9kOg="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xe890, "crc"); + + is($msg->{'length'}, 96, "length"); + + is($msg->{'msg_type'}, 0x70, "msg_type"); + + is($msg->{'payload'}, "FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8AAAAAbLFEvwAAAAAAwKM9", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -0.0006315018981695175, "af0"); + + is($msg->af1(), 8.981260180007666e-12, "af1"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"reserved":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1}})), "common"); + + is($msg->ecc(), 0.007072207052260637, "ecc"); + + is($msg->inc(), 0.9341514480259797, "inc"); + + is($msg->m0(), -0.02200078842114688, "m0"); + + is($msg->omega0(), -1.8731818448797617, "omega0"); + + is($msg->omegadot(), -8.903585155774196e-09, "omegadot"); + + is($msg->sqrta(), 5153.550029754639, "sqrta"); + + is($msg->w(), -0.9893036629599647, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-0.0006315018981695175,"af1":8.981260180007666e-12,"common":{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"reserved":0,"sat":22},"toa":{"tow":446384,"wn":2154},"ura":2.2,"valid":1},"crc":59536,"ecc":0.007072207052260637,"inc":0.9341514480259797,"length":96,"m0":-0.02200078842114688,"msg_type":112,"omega0":-1.8731818448797617,"omegadot":-8.903585155774196e-09,"payload":"FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8AAAAAbLFEvwAAAAAAwKM9","preamble":85,"sender":1219,"sqrta":5153.550029754639,"w":-0.9893036629599647}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_almanac_gps_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgBasePosLLH.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgBasePosLLH.t new file mode 100644 index 0000000000..7a10bf8ec5 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgBasePosLLH.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgBasePosLLH.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_base_pos_llh_1() { + my $buf = decode_base64("VUQAewAY4e3uWiqgQkA7j0brAHhewDO1fPBB+EJAUuY="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xe652, "crc"); + + is($msg->{'length'}, 24, "length"); + + is($msg->{'msg_type'}, 0x44, "msg_type"); + + is($msg->{'payload'}, "4e3uWiqgQkA7j0brAHhewDO1fPBB+EJA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->height(), 37.939512310879216, "height"); + + is($msg->lat(), 37.251292578377395, "lat"); + + is($msg->lon(), -121.87505609407974, "lon"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":58962,"height":37.939512310879216,"lat":37.251292578377395,"length":24,"lon":-121.87505609407974,"msg_type":68,"payload":"4e3uWiqgQkA7j0brAHhewDO1fPBB+EJA","preamble":85,"sender":123}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_base_pos_llh_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepA.t new file mode 100644 index 0000000000..01a01d3f51 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepA.t @@ -0,0 +1,106 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_dep_a_1() { + my $buf = decode_base64("VRoAwwSvAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFvJU"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x54f2, "crc"); + + is($msg->{'length'}, 175, "length"); + + is($msg->{'msg_type'}, 0x1a, "msg_type"); + + is($msg->{'payload'}, "AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFg==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -0.0006315018981695175, "af0"); + + is($msg->af1(), 8.981260180007666e-12, "af1"); + + is($msg->af2(), 0.2, "af2"); + + is($msg->c_ic(), 7.450580596923828e-09, "c_ic"); + + is($msg->c_is(), -1.1548399925231934e-07, "c_is"); + + is($msg->c_rc(), 308.625, "c_rc"); + + is($msg->c_rs(), -52.3125, "c_rs"); + + is($msg->c_uc(), -2.7436763048171997e-06, "c_uc"); + + is($msg->c_us(), 3.1366944313049316e-06, "c_us"); + + is($msg->dn(), 5.694522914022375e-09, "dn"); + + is($msg->ecc(), 0.007072207052260637, "ecc"); + + is($msg->healthy(), 0, "healthy"); + + is($msg->inc(), 0.9341514480259797, "inc"); + + is($msg->inc_dot(), -4.035882396415757e-11, "inc_dot"); + + is($msg->m0(), -0.02200078842114688, "m0"); + + is($msg->omega0(), -1.8731818448797617, "omega0"); + + is($msg->omegadot(), -8.903585155774196e-09, "omegadot"); + + is($msg->prn(), 22, "prn"); + + is($msg->sqrta(), 5153.550029754639, "sqrta"); + + is($msg->tgd(), -1.7695128917694092e-08, "tgd"); + + is($msg->toc_tow(), 446384.2, "toc_tow"); + + is($msg->toc_wn(), 2154, "toc_wn"); + + is($msg->toe_tow(), 446384.2, "toe_tow"); + + is($msg->toe_wn(), 2154, "toe_wn"); + + is($msg->valid(), 1, "valid"); + + is($msg->w(), -0.9893036629599647, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-0.0006315018981695175,"af1":8.981260180007666e-12,"af2":0.2,"c_ic":7.450580596923828e-09,"c_is":-1.1548399925231934e-07,"c_rc":308.625,"c_rs":-52.3125,"c_uc":-2.7436763048171997e-06,"c_us":3.1366944313049316e-06,"crc":21746,"dn":5.694522914022375e-09,"ecc":0.007072207052260637,"healthy":0,"inc":0.9341514480259797,"inc_dot":-4.035882396415757e-11,"length":175,"m0":-0.02200078842114688,"msg_type":26,"omega0":-1.8731818448797617,"omegadot":-8.903585155774196e-09,"payload":"AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFg==","preamble":85,"prn":22,"sender":1219,"sqrta":5153.550029754639,"tgd":-1.7695128917694092e-08,"toc_tow":446384.2,"toc_wn":2154,"toe_tow":446384.2,"toe_wn":2154,"valid":1,"w":-0.9893036629599647}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepC.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepC.t new file mode 100644 index 0000000000..8a458dfef6 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepC.t @@ -0,0 +1,112 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisDepC.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_dep_c_1() { + my $buf = decode_base64("VUcAwwS5AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAAXqg=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xaa17, "crc"); + + is($msg->{'length'}, 185, "length"); + + is($msg->{'msg_type'}, 0x47, "msg_type"); + + is($msg->{'payload'}, "AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -0.0006315018981695175, "af0"); + + is($msg->af1(), 8.981260180007666e-12, "af1"); + + is($msg->af2(), 0.2, "af2"); + + is($msg->c_ic(), 7.450580596923828e-09, "c_ic"); + + is($msg->c_is(), -1.1548399925231934e-07, "c_is"); + + is($msg->c_rc(), 308.625, "c_rc"); + + is($msg->c_rs(), -52.3125, "c_rs"); + + is($msg->c_uc(), -2.7436763048171997e-06, "c_uc"); + + is($msg->c_us(), 3.1366944313049316e-06, "c_us"); + + is($msg->dn(), 5.694522914022375e-09, "dn"); + + is($msg->ecc(), 0.007072207052260637, "ecc"); + + is($msg->healthy(), 0, "healthy"); + + is($msg->inc(), 0.9341514480259797, "inc"); + + is($msg->inc_dot(), -4.035882396415757e-11, "inc_dot"); + + is($msg->iodc(), 45, "iodc"); + + is($msg->iode(), 45, "iode"); + + is($msg->m0(), -0.02200078842114688, "m0"); + + is($msg->omega0(), -1.8731818448797617, "omega0"); + + is($msg->omegadot(), -8.903585155774196e-09, "omegadot"); + + is($msg->reserved(), 0, "reserved"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":0,"reserved":0,"sat":22}})), "sid"); + + is($msg->sqrta(), 5153.550029754639, "sqrta"); + + is($msg->tgd(), -1.7695128917694092e-08, "tgd"); + + is($msg->toc_tow(), 446384.2, "toc_tow"); + + is($msg->toc_wn(), 2154, "toc_wn"); + + is($msg->toe_tow(), 446384.2, "toe_tow"); + + is($msg->toe_wn(), 2154, "toe_wn"); + + is($msg->valid(), 1, "valid"); + + is($msg->w(), -0.9893036629599647, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-0.0006315018981695175,"af1":8.981260180007666e-12,"af2":0.2,"c_ic":7.450580596923828e-09,"c_is":-1.1548399925231934e-07,"c_rc":308.625,"c_rs":-52.3125,"c_uc":-2.7436763048171997e-06,"c_us":3.1366944313049316e-06,"crc":43543,"dn":5.694522914022375e-09,"ecc":0.007072207052260637,"healthy":0,"inc":0.9341514480259797,"inc_dot":-4.035882396415757e-11,"iodc":45,"iode":45,"length":185,"m0":-0.02200078842114688,"msg_type":71,"omega0":-1.8731818448797617,"omegadot":-8.903585155774196e-09,"payload":"AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=","preamble":85,"reserved":0,"sender":1219,"sid":{"code":0,"reserved":0,"sat":22},"sqrta":5153.550029754639,"tgd":-1.7695128917694092e-08,"toc_tow":446384.2,"toc_wn":2154,"toe_tow":446384.2,"toe_wn":2154,"valid":1,"w":-0.9893036629599647}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_dep_c_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepD.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepD.t new file mode 100644 index 0000000000..f3714d7a82 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisDepD.t @@ -0,0 +1,112 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisDepD.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_dep_d_1() { + my $buf = decode_base64("VYAAwwS5AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAABfBw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x075f, "crc"); + + is($msg->{'length'}, 185, "length"); + + is($msg->{'msg_type'}, 0x80, "msg_type"); + + is($msg->{'payload'}, "AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -0.0006315018981695175, "af0"); + + is($msg->af1(), 8.981260180007666e-12, "af1"); + + is($msg->af2(), 0.2, "af2"); + + is($msg->c_ic(), 7.450580596923828e-09, "c_ic"); + + is($msg->c_is(), -1.1548399925231934e-07, "c_is"); + + is($msg->c_rc(), 308.625, "c_rc"); + + is($msg->c_rs(), -52.3125, "c_rs"); + + is($msg->c_uc(), -2.7436763048171997e-06, "c_uc"); + + is($msg->c_us(), 3.1366944313049316e-06, "c_us"); + + is($msg->dn(), 5.694522914022375e-09, "dn"); + + is($msg->ecc(), 0.007072207052260637, "ecc"); + + is($msg->healthy(), 0, "healthy"); + + is($msg->inc(), 0.9341514480259797, "inc"); + + is($msg->inc_dot(), -4.035882396415757e-11, "inc_dot"); + + is($msg->iodc(), 45, "iodc"); + + is($msg->iode(), 45, "iode"); + + is($msg->m0(), -0.02200078842114688, "m0"); + + is($msg->omega0(), -1.8731818448797617, "omega0"); + + is($msg->omegadot(), -8.903585155774196e-09, "omegadot"); + + is($msg->reserved(), 0, "reserved"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":0,"reserved":0,"sat":22}})), "sid"); + + is($msg->sqrta(), 5153.550029754639, "sqrta"); + + is($msg->tgd(), -1.7695128917694092e-08, "tgd"); + + is($msg->toc_tow(), 446384.2, "toc_tow"); + + is($msg->toc_wn(), 2154, "toc_wn"); + + is($msg->toe_tow(), 446384.2, "toe_tow"); + + is($msg->toe_wn(), 2154, "toe_wn"); + + is($msg->valid(), 1, "valid"); + + is($msg->w(), -0.9893036629599647, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-0.0006315018981695175,"af1":8.981260180007666e-12,"af2":0.2,"c_ic":7.450580596923828e-09,"c_is":-1.1548399925231934e-07,"c_rc":308.625,"c_rs":-52.3125,"c_uc":-2.7436763048171997e-06,"c_us":3.1366944313049316e-06,"crc":1887,"dn":5.694522914022375e-09,"ecc":0.007072207052260637,"healthy":0,"inc":0.9341514480259797,"inc_dot":-4.035882396415757e-11,"iodc":45,"iode":45,"length":185,"m0":-0.02200078842114688,"msg_type":128,"omega0":-1.8731818448797617,"omegadot":-8.903585155774196e-09,"payload":"AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=","preamble":85,"reserved":0,"sender":1219,"sid":{"code":0,"reserved":0,"sat":22},"sqrta":5153.550029754639,"tgd":-1.7695128917694092e-08,"toc_tow":446384.2,"toc_wn":2154,"toe_tow":446384.2,"toe_wn":2154,"valid":1,"w":-0.9893036629599647}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_dep_d_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepA.t new file mode 100644 index 0000000000..7358898880 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepA.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_glo_dep_a_1() { + my $buf = decode_base64("VYMAwwRwBAADAEbFBgBqCM3MzMzMzBRAYAkAAAEAAAAAAAAAcD0AAAAAMOwVvwAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPsru"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xeeca, "crc"); + + is($msg->{'length'}, 112, "length"); + + is($msg->{'msg_type'}, 0x83, "msg_type"); + + is($msg->{'payload'}, "BAADAEbFBgBqCM3MzMzMzBRAYAkAAAEAAAAAAAAAcD0AAAAAMOwVvwAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->acc()), $json->encode($json->decode(q{[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06]})), "acc"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"reserved":0,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1}})), "common"); + + is($msg->gamma(), 9.094947017729282e-13, "gamma"); + + is($json->encode($msg->pos()), $json->encode($json->decode(q{[-12177330.078125,599893.06640625,-22373708.49609375]})), "pos"); + + is($msg->tau(), -8.36281105875969e-05, "tau"); + + is($json->encode($msg->vel()), $json->encode($json->decode(q{[-1726.506233215332,-2542.6149368286133,869.8177337646484]})), "vel"); + + is($json->encode($msg), $json->encode($json->decode(q{{"acc":[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06],"common":{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"reserved":0,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1},"crc":61130,"gamma":9.094947017729282e-13,"length":112,"msg_type":131,"payload":"BAADAEbFBgBqCM3MzMzMzBRAYAkAAAEAAAAAAAAAcD0AAAAAMOwVvwAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg==","pos":[-12177330.078125,599893.06640625,-22373708.49609375],"preamble":85,"sender":1219,"tau":-8.36281105875969e-05,"vel":[-1726.506233215332,-2542.6149368286133,869.8177337646484]}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_glo_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepB.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepB.t new file mode 100644 index 0000000000..049e8901f3 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepB.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepB.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_glo_dep_b_1() { + my $buf = decode_base64("VYUAwwRuBANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAIBC9jlnwQAAACKqTiJBAADwx1RWdcEAAABiBvqawAAAANk63aPAAAAAuIoui0AAAAAAAECvPgAAAAAAQK8+AAAAAABwxz56fw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x7f7a, "crc"); + + is($msg->{'length'}, 110, "length"); + + is($msg->{'msg_type'}, 0x85, "msg_type"); + + is($msg->{'payload'}, "BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAIBC9jlnwQAAACKqTiJBAADwx1RWdcEAAABiBvqawAAAANk63aPAAAAAuIoui0AAAAAAAECvPgAAAAAAQK8+AAAAAABwxz4=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->acc()), $json->encode($json->decode(q{[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06]})), "acc"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1}})), "common"); + + is($msg->gamma(), 9.094947017729282e-13, "gamma"); + + is($json->encode($msg->pos()), $json->encode($json->decode(q{[-12177330.078125,599893.06640625,-22373708.49609375]})), "pos"); + + is($msg->tau(), -8.36281105875969e-05, "tau"); + + is($json->encode($msg->vel()), $json->encode($json->decode(q{[-1726.506233215332,-2542.6149368286133,869.8177337646484]})), "vel"); + + is($json->encode($msg), $json->encode($json->decode(q{{"acc":[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06],"common":{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1},"crc":32634,"gamma":9.094947017729282e-13,"length":110,"msg_type":133,"payload":"BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAIBC9jlnwQAAACKqTiJBAADwx1RWdcEAAABiBvqawAAAANk63aPAAAAAuIoui0AAAAAAAECvPgAAAAAAQK8+AAAAAABwxz4=","pos":[-12177330.078125,599893.06640625,-22373708.49609375],"preamble":85,"sender":1219,"tau":-8.36281105875969e-05,"vel":[-1726.506233215332,-2542.6149368286133,869.8177337646484]}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_glo_dep_b_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepC.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepC.t new file mode 100644 index 0000000000..cfa177f551 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepC.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepC.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_glo_dep_c_1() { + my $buf = decode_base64("VYcAwwR3BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg6XQQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x4197, "crc"); + + is($msg->{'length'}, 119, "length"); + + is($msg->{'msg_type'}, 0x87, "msg_type"); + + is($msg->{'payload'}, "BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg4=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->acc()), $json->encode($json->decode(q{[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06]})), "acc"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1}})), "common"); + + is($msg->d_tau(), -2.7939677238464355e-09, "d_tau"); + + is($msg->fcn(), 14, "fcn"); + + is($msg->gamma(), 9.094947017729282e-13, "gamma"); + + is($json->encode($msg->pos()), $json->encode($json->decode(q{[-12177330.078125,599893.06640625,-22373708.49609375]})), "pos"); + + is($msg->tau(), -8.36281105875969e-05, "tau"); + + is($json->encode($msg->vel()), $json->encode($json->decode(q{[-1726.506233215332,-2542.6149368286133,869.8177337646484]})), "vel"); + + is($json->encode($msg), $json->encode($json->decode(q{{"acc":[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06],"common":{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1},"crc":16791,"d_tau":-2.7939677238464355e-09,"fcn":14,"gamma":9.094947017729282e-13,"length":119,"msg_type":135,"payload":"BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg4=","pos":[-12177330.078125,599893.06640625,-22373708.49609375],"preamble":85,"sender":1219,"tau":-8.36281105875969e-05,"vel":[-1726.506233215332,-2542.6149368286133,869.8177337646484]}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_glo_dep_c_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepD.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepD.t new file mode 100644 index 0000000000..08ec2786d9 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGLODepD.t @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepD.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_glo_dep_d_1() { + my $buf = decode_base64("VYgAwwR4BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg5kUkA="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x4052, "crc"); + + is($msg->{'length'}, 120, "length"); + + is($msg->{'msg_type'}, 0x88, "msg_type"); + + is($msg->{'payload'}, "BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg5k", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->acc()), $json->encode($json->decode(q{[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06]})), "acc"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1}})), "common"); + + is($msg->d_tau(), -2.7939677238464355e-09, "d_tau"); + + is($msg->fcn(), 14, "fcn"); + + is($msg->gamma(), 9.094947017729282e-13, "gamma"); + + is($msg->iod(), 100, "iod"); + + is($json->encode($msg->pos()), $json->encode($json->decode(q{[-12177330.078125,599893.06640625,-22373708.49609375]})), "pos"); + + is($msg->tau(), -8.36281105875969e-05, "tau"); + + is($json->encode($msg->vel()), $json->encode($json->decode(q{[-1726.506233215332,-2542.6149368286133,869.8177337646484]})), "vel"); + + is($json->encode($msg), $json->encode($json->decode(q{{"acc":[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06],"common":{"fit_interval":2400,"health_bits":0,"sid":{"code":3,"sat":4},"toe":{"tow":443718,"wn":2154},"ura":5.2,"valid":1},"crc":16466,"d_tau":-2.7939677238464355e-09,"fcn":14,"gamma":9.094947017729282e-13,"iod":100,"length":120,"msg_type":136,"payload":"BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg5k","pos":[-12177330.078125,599893.06640625,-22373708.49609375],"preamble":85,"sender":1219,"tau":-8.36281105875969e-05,"vel":[-1726.506233215332,-2542.6149368286133,869.8177337646484]}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_glo_dep_d_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepE.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepE.t new file mode 100644 index 0000000000..fd390e99d2 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepE.t @@ -0,0 +1,100 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGPSDepE.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_gps_dep_e_1() { + my $buf = decode_base64("VYEAewC5FgAAALDPBgBqCAAAAAAAAABAQDgAAAEAAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9AAAAAAAAAACwzwYAaggtLQAG7g=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xee06, "crc"); + + is($msg->{'length'}, 185, "length"); + + is($msg->{'msg_type'}, 0x81, "msg_type"); + + is($msg->{'payload'}, "FgAAALDPBgBqCAAAAAAAAABAQDgAAAEAAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9AAAAAAAAAACwzwYAaggtLQA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -0.0006315018981695175, "af0"); + + is($msg->af1(), 8.981260180007666e-12, "af1"); + + is($msg->af2(), 0.0, "af2"); + + is($msg->c_ic(), 7.450580596923828e-09, "c_ic"); + + is($msg->c_is(), -1.1548399925231934e-07, "c_is"); + + is($msg->c_rc(), 308.625, "c_rc"); + + is($msg->c_rs(), -52.3125, "c_rs"); + + is($msg->c_uc(), -2.7436763048171997e-06, "c_uc"); + + is($msg->c_us(), 3.1366944313049316e-06, "c_us"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"reserved":0,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2.0,"valid":1}})), "common"); + + is($msg->dn(), 5.694522914022375e-09, "dn"); + + is($msg->ecc(), 0.007072207052260637, "ecc"); + + is($msg->inc(), 0.9341514480259797, "inc"); + + is($msg->inc_dot(), -4.035882396415757e-11, "inc_dot"); + + is($msg->iodc(), 45, "iodc"); + + is($msg->iode(), 45, "iode"); + + is($msg->m0(), -0.02200078842114688, "m0"); + + is($msg->omega0(), -1.8731818448797617, "omega0"); + + is($msg->omegadot(), -8.903585155774196e-09, "omegadot"); + + is($msg->sqrta(), 5153.550029754639, "sqrta"); + + is($msg->tgd(), -1.7695128917694092e-08, "tgd"); + + is($json->encode($msg->toc()), $json->encode($json->decode(q{{"tow":446384,"wn":2154}})), "toc"); + + is($msg->w(), -0.9893036629599647, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-0.0006315018981695175,"af1":8.981260180007666e-12,"af2":0,"c_ic":7.450580596923828e-09,"c_is":-1.1548399925231934e-07,"c_rc":308.625,"c_rs":-52.3125,"c_uc":-2.7436763048171997e-06,"c_us":3.1366944313049316e-06,"common":{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"reserved":0,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2,"valid":1},"crc":60934,"dn":5.694522914022375e-09,"ecc":0.007072207052260637,"inc":0.9341514480259797,"inc_dot":-4.035882396415757e-11,"iodc":45,"iode":45,"length":185,"m0":-0.02200078842114688,"msg_type":129,"omega0":-1.8731818448797617,"omegadot":-8.903585155774196e-09,"payload":"FgAAALDPBgBqCAAAAAAAAABAQDgAAAEAAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9AAAAAAAAAACwzwYAaggtLQA=","preamble":85,"sender":123,"sqrta":5153.550029754639,"tgd":-1.7695128917694092e-08,"toc":{"tow":446384,"wn":2154},"w":-0.9893036629599647}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_gps_dep_e_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepF.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepF.t new file mode 100644 index 0000000000..075cb64ab1 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGPSDepF.t @@ -0,0 +1,100 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGPSDepF.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_gps_dep_f_1() { + my $buf = decode_base64("VYYAewC3FgCwzwYAaggAAAAAAAAAQEA4AAABAAAAAAAAAFO+AAAAAAAoSsAAAAAAAEpzQAAAAAAABMe+AAAAAABQyj4AAAAAAABAPgAAAAAAAH++cthgtDF1OD6OKQXrX4eWvwAAACC/93w/AADAzowhtEApg7OGjfj9v+OFUTbMHkO+2DvHJ2Co779HC9mTkeTtP90vZOD/L8a9AAAAAGyxRL8AAAAAAMCjPQAAAAAAAAAAsM8GAGoILS0Ac/4="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xfe73, "crc"); + + is($msg->{'length'}, 183, "length"); + + is($msg->{'msg_type'}, 0x86, "msg_type"); + + is($msg->{'payload'}, "FgCwzwYAaggAAAAAAAAAQEA4AAABAAAAAAAAAFO+AAAAAAAoSsAAAAAAAEpzQAAAAAAABMe+AAAAAABQyj4AAAAAAABAPgAAAAAAAH++cthgtDF1OD6OKQXrX4eWvwAAACC/93w/AADAzowhtEApg7OGjfj9v+OFUTbMHkO+2DvHJ2Co779HC9mTkeTtP90vZOD/L8a9AAAAAGyxRL8AAAAAAMCjPQAAAAAAAAAAsM8GAGoILS0A", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -0.0006315018981695175, "af0"); + + is($msg->af1(), 8.981260180007666e-12, "af1"); + + is($msg->af2(), 0.0, "af2"); + + is($msg->c_ic(), 7.450580596923828e-09, "c_ic"); + + is($msg->c_is(), -1.1548399925231934e-07, "c_is"); + + is($msg->c_rc(), 308.625, "c_rc"); + + is($msg->c_rs(), -52.3125, "c_rs"); + + is($msg->c_uc(), -2.7436763048171997e-06, "c_uc"); + + is($msg->c_us(), 3.1366944313049316e-06, "c_us"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2.0,"valid":1}})), "common"); + + is($msg->dn(), 5.694522914022375e-09, "dn"); + + is($msg->ecc(), 0.007072207052260637, "ecc"); + + is($msg->inc(), 0.9341514480259797, "inc"); + + is($msg->inc_dot(), -4.035882396415757e-11, "inc_dot"); + + is($msg->iodc(), 45, "iodc"); + + is($msg->iode(), 45, "iode"); + + is($msg->m0(), -0.02200078842114688, "m0"); + + is($msg->omega0(), -1.8731818448797617, "omega0"); + + is($msg->omegadot(), -8.903585155774196e-09, "omegadot"); + + is($msg->sqrta(), 5153.550029754639, "sqrta"); + + is($msg->tgd(), -1.7695128917694092e-08, "tgd"); + + is($json->encode($msg->toc()), $json->encode($json->decode(q{{"tow":446384,"wn":2154}})), "toc"); + + is($msg->w(), -0.9893036629599647, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-0.0006315018981695175,"af1":8.981260180007666e-12,"af2":0,"c_ic":7.450580596923828e-09,"c_is":-1.1548399925231934e-07,"c_rc":308.625,"c_rs":-52.3125,"c_uc":-2.7436763048171997e-06,"c_us":3.1366944313049316e-06,"common":{"fit_interval":14400,"health_bits":0,"sid":{"code":0,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2,"valid":1},"crc":65139,"dn":5.694522914022375e-09,"ecc":0.007072207052260637,"inc":0.9341514480259797,"inc_dot":-4.035882396415757e-11,"iodc":45,"iode":45,"length":183,"m0":-0.02200078842114688,"msg_type":134,"omega0":-1.8731818448797617,"omegadot":-8.903585155774196e-09,"payload":"FgCwzwYAaggAAAAAAAAAQEA4AAABAAAAAAAAAFO+AAAAAAAoSsAAAAAAAEpzQAAAAAAABMe+AAAAAABQyj4AAAAAAABAPgAAAAAAAH++cthgtDF1OD6OKQXrX4eWvwAAACC/93w/AADAzowhtEApg7OGjfj9v+OFUTbMHkO+2DvHJ2Co779HC9mTkeTtP90vZOD/L8a9AAAAAGyxRL8AAAAAAMCjPQAAAAAAAAAAsM8GAGoILS0A","preamble":85,"sender":123,"sqrta":5153.550029754639,"tgd":-1.7695128917694092e-08,"toc":{"tow":446384,"wn":2154},"w":-0.9893036629599647}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_gps_dep_f_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGalDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGalDepA.t new file mode 100644 index 0000000000..f5d34b20b5 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisGalDepA.t @@ -0,0 +1,102 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGalDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_gal_dep_a_1() { + my $buf = decode_base64("VZUAwwSYGw4g2QYAaghmZuZAQDgAAAEAmpmZP83MDEAAACJBALiEQ2ZmpkBmZsZAzcxMQGZmhkDZzIJpgLYrPvhqH9wIiP2/AAAAAJdcJj8AAAA3mkC1QDgmAY3/tvI/3pOIJ0+6OL5Qcsz7wVy/P+03EymxSe8/MUG98AjY9b3/////Q+vxvv///////6G9zcxMPiDZBgBqCGwAbACoMQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x31a8, "crc"); + + is($msg->{'length'}, 152, "length"); + + is($msg->{'msg_type'}, 0x95, "msg_type"); + + is($msg->{'payload'}, "Gw4g2QYAaghmZuZAQDgAAAEAmpmZP83MDEAAACJBALiEQ2ZmpkBmZsZAzcxMQGZmhkDZzIJpgLYrPvhqH9wIiP2/AAAAAJdcJj8AAAA3mkC1QDgmAY3/tvI/3pOIJ0+6OL5Qcsz7wVy/P+03EymxSe8/MUG98AjY9b3/////Q+vxvv///////6G9zcxMPiDZBgBqCGwAbAA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->af0(), -1.7088896129280325e-05, "af0"); + + is($msg->af1(), -8.185452315956353e-12, "af1"); + + is($msg->af2(), 0.20000000298023224, "af2"); + + is($msg->bgd_e1e5a(), 1.2000000476837158, "bgd_e1e5a"); + + is($msg->bgd_e1e5b(), 2.200000047683716, "bgd_e1e5b"); + + is($msg->c_ic(), 3.200000047683716, "c_ic"); + + is($msg->c_is(), 4.199999809265137, "c_is"); + + is($msg->c_rc(), 265.4375, "c_rc"); + + is($msg->c_rs(), 10.125, "c_rs"); + + is($msg->c_uc(), 5.199999809265137, "c_uc"); + + is($msg->c_us(), 6.199999809265137, "c_us"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":14400,"health_bits":0,"sid":{"code":14,"sat":27},"toe":{"tow":448800,"wn":2154},"ura":7.199999809265137,"valid":1}})), "common"); + + is($msg->dn(), 3.2262058129932258e-09, "dn"); + + is($msg->ecc(), 0.00017060607206076384, "ecc"); + + is($msg->inc(), 0.9777456094977858, "inc"); + + is($msg->inc_dot(), -3.1787038343451465e-10, "inc_dot"); + + is($msg->iodc(), 108, "iodc"); + + is($msg->iode(), 108, "iode"); + + is($msg->m0(), -1.8457115744155868, "m0"); + + is($msg->omega0(), 1.16967730598334, "omega0"); + + is($msg->omegadot(), -5.757382675240872e-09, "omegadot"); + + is($msg->sqrta(), 5440.602401733398, "sqrta"); + + is($json->encode($msg->toc()), $json->encode($json->decode(q{{"tow":448800,"wn":2154}})), "toc"); + + is($msg->w(), 0.12250912091662625, "w"); + + is($json->encode($msg), $json->encode($json->decode(q{{"af0":-1.7088896129280325e-05,"af1":-8.185452315956353e-12,"af2":0.20000000298023224,"bgd_e1e5a":1.2000000476837158,"bgd_e1e5b":2.200000047683716,"c_ic":3.200000047683716,"c_is":4.199999809265137,"c_rc":265.4375,"c_rs":10.125,"c_uc":5.199999809265137,"c_us":6.199999809265137,"common":{"fit_interval":14400,"health_bits":0,"sid":{"code":14,"sat":27},"toe":{"tow":448800,"wn":2154},"ura":7.199999809265137,"valid":1},"crc":12712,"dn":3.2262058129932258e-09,"ecc":0.00017060607206076384,"inc":0.9777456094977858,"inc_dot":-3.1787038343451465e-10,"iodc":108,"iode":108,"length":152,"m0":-1.8457115744155868,"msg_type":149,"omega0":1.16967730598334,"omegadot":-5.757382675240872e-09,"payload":"Gw4g2QYAaghmZuZAQDgAAAEAmpmZP83MDEAAACJBALiEQ2ZmpkBmZsZAzcxMQGZmhkDZzIJpgLYrPvhqH9wIiP2/AAAAAJdcJj8AAAA3mkC1QDgmAY3/tvI/3pOIJ0+6OL5Qcsz7wVy/P+03EymxSe8/MUG98AjY9b3/////Q+vxvv///////6G9zcxMPiDZBgBqCGwAbAA=","preamble":85,"sender":1219,"sqrta":5440.602401733398,"toc":{"tow":448800,"wn":2154},"w":0.12250912091662625}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_gal_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbas.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbas.t new file mode 100644 index 0000000000..840aa8c18d --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbas.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisSbas.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_sbas_1() { + my $buf = decode_base64("VYwAwwRKFgawzwYAaggAAECxAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBM9DXxNfpHsVWdFlEAAB6NQAAejUAgDs2YIslugAAHi3Akw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x93c0, "crc"); + + is($msg->{'length'}, 74, "length"); + + is($msg->{'msg_type'}, 0x8c, "msg_type"); + + is($msg->{'payload'}, "FgawzwYAaggAAECxAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBM9DXxNfpHsVWdFlEAAB6NQAAejUAgDs2YIslugAAHi0=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x04c3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->a_gf0(), -0.0006315018981695175, "a_gf0"); + + is($msg->a_gf1(), 8.981260180007666e-12, "a_gf1"); + + is($json->encode($msg->acc()), $json->encode($json->decode(q{[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06]})), "acc"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":0,"health_bits":0,"sid":{"code":6,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":-2.7939677238464355e-09,"valid":1}})), "common"); + + is($json->encode($msg->pos()), $json->encode($json->decode(q{[-12177330.078125,599893.06640625,-22373708.49609375]})), "pos"); + + is($json->encode($msg->vel()), $json->encode($json->decode(q{[-1726.5062255859375,-2542.614990234375,869.8177490234375]})), "vel"); + + is($json->encode($msg), $json->encode($json->decode(q{{"a_gf0":-0.0006315018981695175,"a_gf1":8.981260180007666e-12,"acc":[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06],"common":{"fit_interval":0,"health_bits":0,"sid":{"code":6,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":-2.7939677238464355e-09,"valid":1},"crc":37824,"length":74,"msg_type":140,"payload":"FgawzwYAaggAAECxAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBM9DXxNfpHsVWdFlEAAB6NQAAejUAgDs2YIslugAAHi0=","pos":[-12177330.078125,599893.06640625,-22373708.49609375],"preamble":85,"sender":1219,"vel":[-1726.5062255859375,-2542.614990234375,869.8177490234375]}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_sbas_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepA.t new file mode 100644 index 0000000000..3a85d6c904 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepA.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisSbasDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_sbas_dep_a_1() { + my $buf = decode_base64("VYIAewBwFgAGALDPBgBqCAAAAAAAAABAAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBAAAAYgb6msAAAADZOt2jwAAAALiKLotAAAAAAABArz4AAAAAAECvPgAAAAAAcMc+AAAAAGyxRL8AAAAAAMCjPbK0"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xb4b2, "crc"); + + is($msg->{'length'}, 112, "length"); + + is($msg->{'msg_type'}, 0x82, "msg_type"); + + is($msg->{'payload'}, "FgAGALDPBgBqCAAAAAAAAABAAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBAAAAYgb6msAAAADZOt2jwAAAALiKLotAAAAAAABArz4AAAAAAECvPgAAAAAAcMc+AAAAAGyxRL8AAAAAAMCjPQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->a_gf0(), -0.0006315018981695175, "a_gf0"); + + is($msg->a_gf1(), 8.981260180007666e-12, "a_gf1"); + + is($json->encode($msg->acc()), $json->encode($json->decode(q{[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06]})), "acc"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":0,"health_bits":0,"sid":{"code":6,"reserved":0,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2.0,"valid":1}})), "common"); + + is($json->encode($msg->pos()), $json->encode($json->decode(q{[-12177330.078125,599893.06640625,-22373708.49609375]})), "pos"); + + is($json->encode($msg->vel()), $json->encode($json->decode(q{[-1726.506233215332,-2542.6149368286133,869.8177337646484]})), "vel"); + + is($json->encode($msg), $json->encode($json->decode(q{{"a_gf0":-0.0006315018981695175,"a_gf1":8.981260180007666e-12,"acc":[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06],"common":{"fit_interval":0,"health_bits":0,"sid":{"code":6,"reserved":0,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2,"valid":1},"crc":46258,"length":112,"msg_type":130,"payload":"FgAGALDPBgBqCAAAAAAAAABAAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBAAAAYgb6msAAAADZOt2jwAAAALiKLotAAAAAAABArz4AAAAAAECvPgAAAAAAcMc+AAAAAGyxRL8AAAAAAMCjPQ==","pos":[-12177330.078125,599893.06640625,-22373708.49609375],"preamble":85,"sender":123,"vel":[-1726.506233215332,-2542.6149368286133,869.8177337646484]}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_sbas_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepB.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepB.t new file mode 100644 index 0000000000..77f08f2ee3 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgEphemerisSbasDepB.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisSbasDepB.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_ephemeris_sbas_dep_b_1() { + my $buf = decode_base64("VYQAewBuFgawzwYAaggAAAAAAAAAQAAAAAABAAAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPgAAAABssUS/AAAAAADAoz2RaA=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x6891, "crc"); + + is($msg->{'length'}, 110, "length"); + + is($msg->{'msg_type'}, 0x84, "msg_type"); + + is($msg->{'payload'}, "FgawzwYAaggAAAAAAAAAQAAAAAABAAAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPgAAAABssUS/AAAAAADAoz0=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->a_gf0(), -0.0006315018981695175, "a_gf0"); + + is($msg->a_gf1(), 8.981260180007666e-12, "a_gf1"); + + is($json->encode($msg->acc()), $json->encode($json->decode(q{[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06]})), "acc"); + + is($json->encode($msg->common()), $json->encode($json->decode(q{{"fit_interval":0,"health_bits":0,"sid":{"code":6,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2.0,"valid":1}})), "common"); + + is($json->encode($msg->pos()), $json->encode($json->decode(q{[-12177330.078125,599893.06640625,-22373708.49609375]})), "pos"); + + is($json->encode($msg->vel()), $json->encode($json->decode(q{[-1726.506233215332,-2542.6149368286133,869.8177337646484]})), "vel"); + + is($json->encode($msg), $json->encode($json->decode(q{{"a_gf0":-0.0006315018981695175,"a_gf1":8.981260180007666e-12,"acc":[9.313225746154785e-07,9.313225746154785e-07,2.7939677238464355e-06],"common":{"fit_interval":0,"health_bits":0,"sid":{"code":6,"sat":22},"toe":{"tow":446384,"wn":2154},"ura":2,"valid":1},"crc":26769,"length":110,"msg_type":132,"payload":"FgawzwYAaggAAAAAAAAAQAAAAAABAAAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPgAAAABssUS/AAAAAADAoz0=","pos":[-12177330.078125,599893.06640625,-22373708.49609375],"preamble":85,"sender":123,"vel":[-1726.506233215332,-2542.6149368286133,869.8177337646484]}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_ephemeris_sbas_dep_b_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGnssCapb.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGnssCapb.t new file mode 100644 index 0000000000..8eee8d926a --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGnssCapb.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGnssCapb.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_gnss_capb_1() { + my $buf = decode_base64("VZYAewBusM8GAGoIGqtQQAAAAABRrZAuAAAAANGLXWwAAAAA/MzIAM1cHjHwyxUY1F22IAAAAABpIMAbAAAAAChL+nIAAAAAd5N7UQAAAABVWQQCAAAAAOl0iRYAAAAAx23bC92r+FIAAAAA/D7dHAAAAACjWg=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x5aa3, "crc"); + + is($msg->{'length'}, 110, "length"); + + is($msg->{'msg_type'}, 0x96, "msg_type"); + + is($msg->{'payload'}, "sM8GAGoIGqtQQAAAAABRrZAuAAAAANGLXWwAAAAA/MzIAM1cHjHwyxUY1F22IAAAAABpIMAbAAAAAChL+nIAAAAAd5N7UQAAAABVWQQCAAAAAOl0iRYAAAAAx23bC92r+FIAAAAA/D7dHAAAAAA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->gc()), $json->encode($json->decode(q{{"bds_active":1929005864,"bds_b2":33839445,"bds_b2a":378107113,"bds_d2nav":1367053175,"gal_active":1392028637,"gal_e5":484261628,"glo_active":13159676,"glo_l2of":824073421,"glo_l3":404081648,"gps_active":1079028506,"gps_l2c":781233489,"gps_l5":1818069969,"qzss_active":198929863,"sbas_active":548822484,"sbas_l5":465576041}})), "gc"); + + is($json->encode($msg->t_nmct()), $json->encode($json->decode(q{{"tow":446384,"wn":2154}})), "t_nmct"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":23203,"gc":{"bds_active":1929005864,"bds_b2":33839445,"bds_b2a":378107113,"bds_d2nav":1367053175,"gal_active":1392028637,"gal_e5":484261628,"glo_active":13159676,"glo_l2of":824073421,"glo_l3":404081648,"gps_active":1079028506,"gps_l2c":781233489,"gps_l5":1818069969,"qzss_active":198929863,"sbas_active":548822484,"sbas_l5":465576041},"length":110,"msg_type":150,"payload":"sM8GAGoIGqtQQAAAAABRrZAuAAAAANGLXWwAAAAA/MzIAM1cHjHwyxUY1F22IAAAAABpIMAbAAAAAChL+nIAAAAAd5N7UQAAAABVWQQCAAAAAOl0iRYAAAAAx23bC92r+FIAAAAA/D7dHAAAAAA=","preamble":85,"sender":123,"t_nmct":{"tow":446384,"wn":2154}}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_gnss_capb_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelay.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelay.t new file mode 100644 index 0000000000..92c134893b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelay.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGroupDelay.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_group_delay_1() { + my $buf = decode_base64("VZQAewAPsM8GAGoIFgAB/v2l/+0XAsk="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xc902, "crc"); + + is($msg->{'length'}, 15, "length"); + + is($msg->{'msg_type'}, 0x94, "msg_type"); + + is($msg->{'payload'}, "sM8GAGoIFgAB/v2l/+0X", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->isc_l1ca(), -91, "isc_l1ca"); + + is($msg->isc_l2c(), 6125, "isc_l2c"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":0,"sat":22}})), "sid"); + + is($json->encode($msg->t_op()), $json->encode($json->decode(q{{"tow":446384,"wn":2154}})), "t_op"); + + is($msg->tgd(), -514, "tgd"); + + is($msg->valid(), 1, "valid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":51458,"isc_l1ca":-91,"isc_l2c":6125,"length":15,"msg_type":148,"payload":"sM8GAGoIFgAB/v2l/+0X","preamble":85,"sender":123,"sid":{"code":0,"sat":22},"t_op":{"tow":446384,"wn":2154},"tgd":-514,"valid":1}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_group_delay_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepA.t new file mode 100644 index 0000000000..a1d36bfd52 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepA.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGroupDelayDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_group_delay_dep_a_1() { + my $buf = decode_base64("VZIAewAOsM8GAGoIFgH+/aX/7ReiWw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x5ba2, "crc"); + + is($msg->{'length'}, 14, "length"); + + is($msg->{'msg_type'}, 0x92, "msg_type"); + + is($msg->{'payload'}, "sM8GAGoIFgH+/aX/7Rc=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->isc_l1ca(), -91, "isc_l1ca"); + + is($msg->isc_l2c(), 6125, "isc_l2c"); + + is($msg->prn(), 22, "prn"); + + is($json->encode($msg->t_op()), $json->encode($json->decode(q{{"tow":446384,"wn":2154}})), "t_op"); + + is($msg->tgd(), -514, "tgd"); + + is($msg->valid(), 1, "valid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":23458,"isc_l1ca":-91,"isc_l2c":6125,"length":14,"msg_type":146,"payload":"sM8GAGoIFgH+/aX/7Rc=","preamble":85,"prn":22,"sender":123,"t_op":{"tow":446384,"wn":2154},"tgd":-514,"valid":1}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_group_delay_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepB.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepB.t new file mode 100644 index 0000000000..f887160a5f --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgGroupDelayDepB.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGroupDelayDepB.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_group_delay_dep_b_1() { + my $buf = decode_base64("VZMAewARsM8GAGoIFgAAAAH+/aX/7Rfdyg=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xcadd, "crc"); + + is($msg->{'length'}, 17, "length"); + + is($msg->{'msg_type'}, 0x93, "msg_type"); + + is($msg->{'payload'}, "sM8GAGoIFgAAAAH+/aX/7Rc=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->isc_l1ca(), -91, "isc_l1ca"); + + is($msg->isc_l2c(), 6125, "isc_l2c"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":0,"reserved":0,"sat":22}})), "sid"); + + is($json->encode($msg->t_op()), $json->encode($json->decode(q{{"tow":446384,"wn":2154}})), "t_op"); + + is($msg->tgd(), -514, "tgd"); + + is($msg->valid(), 1, "valid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":51933,"isc_l1ca":-91,"isc_l2c":6125,"length":17,"msg_type":147,"payload":"sM8GAGoIFgAAAAH+/aX/7Rc=","preamble":85,"sender":123,"sid":{"code":0,"reserved":0,"sat":22},"t_op":{"tow":446384,"wn":2154},"tgd":-514,"valid":1}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_group_delay_dep_b_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgIono.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgIono.t new file mode 100644 index 0000000000..adc846419f --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgIono.t @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgIono.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_iono_1() { + my $buf = decode_base64("VZAAewBGAAAAAAAAAAAAAAAAND4AAAAAAABQPgAAAAAAAHC+AAAAAAAAcL4AAAAAAADzQAAAAAAAAOhAAAAAAAAA8MAAAAAAAAAUwWUf"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x1f65, "crc"); + + is($msg->{'length'}, 70, "length"); + + is($msg->{'msg_type'}, 0x90, "msg_type"); + + is($msg->{'payload'}, "AAAAAAAAAAAAAAAAND4AAAAAAABQPgAAAAAAAHC+AAAAAAAAcL4AAAAAAADzQAAAAAAAAOhAAAAAAAAA8MAAAAAAAAAUwQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->a0(), 4.6566128730773926e-09, "a0"); + + is($msg->a1(), 1.4901161193847656e-08, "a1"); + + is($msg->a2(), -5.960464477539063e-08, "a2"); + + is($msg->a3(), -5.960464477539063e-08, "a3"); + + is($msg->b0(), 77824.0, "b0"); + + is($msg->b1(), 49152.0, "b1"); + + is($msg->b2(), -65536.0, "b2"); + + is($msg->b3(), -327680.0, "b3"); + + is($json->encode($msg->t_nmct()), $json->encode($json->decode(q{{"tow":0,"wn":0}})), "t_nmct"); + + is($json->encode($msg), $json->encode($json->decode(q{{"a0":4.6566128730773926e-09,"a1":1.4901161193847656e-08,"a2":-5.960464477539063e-08,"a3":-5.960464477539063e-08,"b0":77824,"b1":49152,"b2":-65536,"b3":-327680,"crc":8037,"length":70,"msg_type":144,"payload":"AAAAAAAAAAAAAAAAND4AAAAAAABQPgAAAAAAAHC+AAAAAAAAcL4AAAAAAADzQAAAAAAAAOhAAAAAAAAA8MAAAAAAAAAUwQ==","preamble":85,"sender":123,"t_nmct":{"tow":0,"wn":0}}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_iono_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgSvConfigurationGpsDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgSvConfigurationGpsDep.t new file mode 100644 index 0000000000..ca67504048 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_observation_MsgSvConfigurationGpsDep.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgSvConfigurationGpsDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_observation_msg_sv_configuration_gps_dep_1() { + my $buf = decode_base64("VZEAewAKAAAAAAAAQrxlpxIq"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x2a12, "crc"); + + is($msg->{'length'}, 10, "length"); + + is($msg->{'msg_type'}, 0x91, "msg_type"); + + is($msg->{'payload'}, "AAAAAAAAQrxlpw==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x007b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->l2c_mask(), 2808462402, "l2c_mask"); + + is($json->encode($msg->t_nmct()), $json->encode($json->decode(q{{"tow":0,"wn":0}})), "t_nmct"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":10770,"l2c_mask":2808462402,"length":10,"msg_type":145,"payload":"AAAAAAAAQrxlpw==","preamble":85,"sender":123,"t_nmct":{"tow":0,"wn":0}}})), "raw_json"); +} +test_auto_check_sbp_observation_msg_sv_configuration_gps_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_orientation_MsgBaselineHeading.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_orientation_MsgBaselineHeading.t new file mode 100644 index 0000000000..2bdca300b0 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_orientation_MsgBaselineHeading.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/orientation/test_MsgBaselineHeading.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_orientation_msg_baseline_heading_1() { + my $buf = decode_base64("VQ8C010KnC0NxCxUxT1bW+D+"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xfee0, "crc"); + + is($msg->{'length'}, 10, "length"); + + is($msg->{'msg_type'}, 0x20f, "msg_type"); + + is($msg->{'payload'}, "nC0NxCxUxT1bWw==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x5dd3, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 91, "flags"); + + is($msg->heading(), 1036342316, "heading"); + + is($msg->n_sats(), 91, "n_sats"); + + is($msg->tow(), 3289197980, "tow"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":65248,"flags":91,"heading":1036342316,"length":10,"msg_type":527,"n_sats":91,"payload":"nC0NxCxUxT1bWw==","preamble":85,"sender":24019,"tow":3289197980}})), "raw_json"); +} +test_auto_check_sbp_orientation_msg_baseline_heading_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgAlmanac.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgAlmanac.t new file mode 100644 index 0000000000..6cf7a38b1c --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgAlmanac.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgAlmanac.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_almanac_1() { + my $buf = decode_base64("VWkAbIoA+as="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xabf9, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0x69, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x8a6c, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":44025,"length":0,"msg_type":105,"payload":"","preamble":85,"sender":35436}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_almanac_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCellModemStatus.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCellModemStatus.t new file mode 100644 index 0000000000..c9975ebe27 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCellModemStatus.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCellModemStatus.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_cell_modem_status_1() { + my $buf = decode_base64("Vb4AExv/Z80wBkZ78i40QLCaYiuExFn9ofquzG4vJrs/ZrGiMVDCJWs84TRlso72FRFdS6lWENFQ8x7O3M5zL5pb41gLAVWSZL7ozz09ydwfTiI5UjtoQd0AK9IJIHod7QuX3xJRzKzqfwNShakMsMEAGHlVN9bGS+qz1lVecxVJeUsunj9ketUUVdSDMuDa19eVAhOBJ6QFrwY+M05C+HRYWoDisQAvjCF+3W6QYUr6tccbsEG5blwiLINgsiiwBFokB7T09Bdsq8zEPTOz8pxRUxAPhij1/ZZelpDFcQWN6CFl5yZLsvN3AfjaVgdYxZTw4wJBrXqP+5zZQ+/bH+CwgVFQKOY="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xe628, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0xbe, "msg_type"); + + is($msg->{'payload'}, "Z80wBkZ78i40QLCaYiuExFn9ofquzG4vJrs/ZrGiMVDCJWs84TRlso72FRFdS6lWENFQ8x7O3M5zL5pb41gLAVWSZL7ozz09ydwfTiI5UjtoQd0AK9IJIHod7QuX3xJRzKzqfwNShakMsMEAGHlVN9bGS+qz1lVecxVJeUsunj9ketUUVdSDMuDa19eVAhOBJ6QFrwY+M05C+HRYWoDisQAvjCF+3W6QYUr6tccbsEG5blwiLINgsiiwBFokB7T09Bdsq8zEPTOz8pxRUxAPhij1/ZZelpDFcQWN6CFl5yZLsvN3AfjaVgdYxZTw4wJBrXqP+5zZQ+/bH+CwgVFQ", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x1b13, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->reserved()), $json->encode($json->decode(q{[123,242,46,52,64,176,154,98,43,132,196,89,253,161,250,174,204,110,47,38,187,63,102,177,162,49,80,194,37,107,60,225,52,101,178,142,246,21,17,93,75,169,86,16,209,80,243,30,206,220,206,115,47,154,91,227,88,11,1,85,146,100,190,232,207,61,61,201,220,31,78,34,57,82,59,104,65,221,0,43,210,9,32,122,29,237,11,151,223,18,81,204,172,234,127,3,82,133,169,12,176,193,0,24,121,85,55,214,198,75,234,179,214,85,94,115,21,73,121,75,46,158,63,100,122,213,20,85,212,131,50,224,218,215,215,149,2,19,129,39,164,5,175,6,62,51,78,66,248,116,88,90,128,226,177,0,47,140,33,126,221,110,144,97,74,250,181,199,27,176,65,185,110,92,34,44,131,96,178,40,176,4,90,36,7,180,244,244,23,108,171,204,196,61,51,179,242,156,81,83,16,15,134,40,245,253,150,94,150,144,197,113,5,141,232,33,101,231,38,75,178,243,119,1,248,218,86,7,88,197,148,240,227,2,65,173,122,143,251,156,217,67,239,219,31,224,176,129,81,80]})), "reserved"); + + is($msg->signal_error_rate(), 8588.2001953125, "signal_error_rate"); + + is($msg->signal_strength(), 103, "signal_strength"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":58920,"length":255,"msg_type":190,"payload":"Z80wBkZ78i40QLCaYiuExFn9ofquzG4vJrs/ZrGiMVDCJWs84TRlso72FRFdS6lWENFQ8x7O3M5zL5pb41gLAVWSZL7ozz09ydwfTiI5UjtoQd0AK9IJIHod7QuX3xJRzKzqfwNShakMsMEAGHlVN9bGS+qz1lVecxVJeUsunj9ketUUVdSDMuDa19eVAhOBJ6QFrwY+M05C+HRYWoDisQAvjCF+3W6QYUr6tccbsEG5blwiLINgsiiwBFokB7T09Bdsq8zEPTOz8pxRUxAPhij1/ZZelpDFcQWN6CFl5yZLsvN3AfjaVgdYxZTw4wJBrXqP+5zZQ+/bH+CwgVFQ","preamble":85,"reserved":[123,242,46,52,64,176,154,98,43,132,196,89,253,161,250,174,204,110,47,38,187,63,102,177,162,49,80,194,37,107,60,225,52,101,178,142,246,21,17,93,75,169,86,16,209,80,243,30,206,220,206,115,47,154,91,227,88,11,1,85,146,100,190,232,207,61,61,201,220,31,78,34,57,82,59,104,65,221,0,43,210,9,32,122,29,237,11,151,223,18,81,204,172,234,127,3,82,133,169,12,176,193,0,24,121,85,55,214,198,75,234,179,214,85,94,115,21,73,121,75,46,158,63,100,122,213,20,85,212,131,50,224,218,215,215,149,2,19,129,39,164,5,175,6,62,51,78,66,248,116,88,90,128,226,177,0,47,140,33,126,221,110,144,97,74,250,181,199,27,176,65,185,110,92,34,44,131,96,178,40,176,4,90,36,7,180,244,244,23,108,171,204,196,61,51,179,242,156,81,83,16,15,134,40,245,253,150,94,150,144,197,113,5,141,232,33,101,231,38,75,178,243,119,1,248,218,86,7,88,197,148,240,227,2,65,173,122,143,251,156,217,67,239,219,31,224,176,129,81,80],"sender":6931,"signal_error_rate":8588.2001953125,"signal_strength":103}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_cell_modem_status_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandOutput.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandOutput.t new file mode 100644 index 0000000000..279459d2b0 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandOutput.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCommandOutput.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_command_output_1() { + my $buf = decode_base64("VbwAMlQUfqR0lVNvbWUgb3V0cHV0IHRleHQLbQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x6d0b, "crc"); + + is($msg->{'length'}, 20, "length"); + + is($msg->{'msg_type'}, 0xbc, "msg_type"); + + is($msg->{'payload'}, "fqR0lVNvbWUgb3V0cHV0IHRleHQ=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x5432, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->line(), "Some output text", "line"); + + is($msg->sequence(), 2507449470, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":27915,"length":20,"line":"Some output text","msg_type":188,"payload":"fqR0lVNvbWUgb3V0cHV0IHRleHQ=","preamble":85,"sender":21554,"sequence":2507449470}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_command_output_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandReq.t new file mode 100644 index 0000000000..ff58f66ef6 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandReq.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCommandReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_command_req_1() { + my $buf = decode_base64("VbgAqrgfM02jaC9wYXRoL3RvL2NvbW1hbmQgd2l0aCBhcmdzACYY"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x1826, "crc"); + + is($msg->{'length'}, 31, "length"); + + is($msg->{'msg_type'}, 0xb8, "msg_type"); + + is($msg->{'payload'}, "M02jaC9wYXRoL3RvL2NvbW1hbmQgd2l0aCBhcmdzAA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xb8aa, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->command(), "/path/to/command with args\x00", "command"); + + is($msg->sequence(), 1755532595, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"command":"/path/to/command with args\u0000","crc":6182,"length":31,"msg_type":184,"payload":"M02jaC9wYXRoL3RvL2NvbW1hbmQgd2l0aCBhcmdzAA==","preamble":85,"sender":47274,"sequence":1755532595}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_command_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandResp.t new file mode 100644 index 0000000000..7949b54ce4 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCommandResp.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCommandResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_command_resp_1() { + my $buf = decode_base64("VbkAOc4IdteDoNJulmek8A=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf0a4, "crc"); + + is($msg->{'length'}, 8, "length"); + + is($msg->{'msg_type'}, 0xb9, "msg_type"); + + is($msg->{'payload'}, "dteDoNJulmc=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xce39, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->code(), 1737912018, "code"); + + is($msg->sequence(), 2692994934, "sequence"); + + is($json->encode($msg), $json->encode($json->decode(q{{"code":1737912018,"crc":61604,"length":8,"msg_type":185,"payload":"dteDoNJulmc=","preamble":85,"sender":52793,"sequence":2692994934}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_command_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwResults.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwResults.t new file mode 100644 index 0000000000..d9b52c234b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwResults.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCwResults.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_cw_results_1() { + my $buf = decode_base64("VcAAY/YA5Eg="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x48e4, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xc0, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf663, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":18660,"length":0,"msg_type":192,"payload":"","preamble":85,"sender":63075}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_cw_results_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwStart.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwStart.t new file mode 100644 index 0000000000..acd8eb3ba8 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgCwStart.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCwStart.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_cw_start_1() { + my $buf = decode_base64("VcEAHrMA1Yo="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x8ad5, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xc1, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xb31e, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":35541,"length":0,"msg_type":193,"payload":"","preamble":85,"sender":45854}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_cw_start_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgFrontEndGain.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgFrontEndGain.t new file mode 100644 index 0000000000..53546e0f84 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgFrontEndGain.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgFrontEndGain.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_front_end_gain_1() { + my $buf = decode_base64("Vb8Ar/UQKYWGCmkUJib26dhQu9VVAuuH"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x87eb, "crc"); + + is($msg->{'length'}, 16, "length"); + + is($msg->{'msg_type'}, 0xbf, "msg_type"); + + is($msg->{'payload'}, "KYWGCmkUJib26dhQu9VVAg==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf5af, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->if_gain()), $json->encode($json->decode(q{[-10,-23,-40,80,-69,-43,85,2]})), "if_gain"); + + is($json->encode($msg->rf_gain()), $json->encode($json->decode(q{[41,-123,-122,10,105,20,38,38]})), "rf_gain"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":34795,"if_gain":[-10,-23,-40,80,-69,-43,85,2],"length":16,"msg_type":191,"payload":"KYWGCmkUJib26dhQu9VVAg==","preamble":85,"rf_gain":[41,-123,-122,10,105,20,38,38],"sender":62895}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_front_end_gain_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgInitBaseDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgInitBaseDep.t new file mode 100644 index 0000000000..99f87631fc --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgInitBaseDep.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgInitBaseDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_init_base_dep_1() { + my $buf = decode_base64("VSMAuCkARg0="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x0d46, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0x23, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x29b8, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":3398,"length":0,"msg_type":35,"payload":"","preamble":85,"sender":10680}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_init_base_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatellite.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatellite.t new file mode 100644 index 0000000000..9ab452ef8a --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatellite.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgMaskSatellite.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_mask_satellite_1() { + my $buf = decode_base64("VSsArZcDt1c5E5M="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x9313, "crc"); + + is($msg->{'length'}, 3, "length"); + + is($msg->{'msg_type'}, 0x2b, "msg_type"); + + is($msg->{'payload'}, "t1c5", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x97ad, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->mask(), 183, "mask"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":57,"sat":87}})), "sid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":37651,"length":3,"mask":183,"msg_type":43,"payload":"t1c5","preamble":85,"sender":38829,"sid":{"code":57,"sat":87}}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_mask_satellite_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatelliteDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatelliteDep.t new file mode 100644 index 0000000000..0a5d5dd004 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgMaskSatelliteDep.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgMaskSatelliteDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_mask_satellite_dep_1() { + my $buf = decode_base64("VRsAu4YFIQKZXwQdvA=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xbc1d, "crc"); + + is($msg->{'length'}, 5, "length"); + + is($msg->{'msg_type'}, 0x1b, "msg_type"); + + is($msg->{'payload'}, "IQKZXwQ=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x86bb, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->mask(), 33, "mask"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":95,"reserved":4,"sat":39170}})), "sid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":48157,"length":5,"mask":33,"msg_type":27,"payload":"IQKZXwQ=","preamble":85,"sender":34491,"sid":{"code":95,"reserved":4,"sat":39170}}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_mask_satellite_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateReq.t new file mode 100644 index 0000000000..a8a774b4b3 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateReq.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgNetworkStateReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_network_state_req_1() { + my $buf = decode_base64("VboAUz4AlEk="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x4994, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xba, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x3e53, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":18836,"length":0,"msg_type":186,"payload":"","preamble":85,"sender":15955}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_network_state_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateResp.t new file mode 100644 index 0000000000..f8d5ed660f --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgNetworkStateResp.t @@ -0,0 +1,70 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgNetworkStateResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_network_state_resp_1() { + my $buf = decode_base64("VbsAKA8yj/FUtJjCiSAscpNE3lzATus/0HI1txj05xppGYgDaWYwAAAAAAAAAAAAAAAAAMPlUJN2wQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xc176, "crc"); + + is($msg->{'length'}, 50, "length"); + + is($msg->{'msg_type'}, 0xbb, "msg_type"); + + is($msg->{'payload'}, "j/FUtJjCiSAscpNE3lzATus/0HI1txj05xppGYgDaWYwAAAAAAAAAAAAAAAAAMPlUJM=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x0f28, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 2471552451, "flags"); + + is($msg->interface_name(), "if0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", "interface_name"); + + is($json->encode($msg->ipv4_address()), $json->encode($json->decode(q{[143,241,84,180]})), "ipv4_address"); + + is($msg->ipv4_mask_size(), 152, "ipv4_mask_size"); + + is($json->encode($msg->ipv6_address()), $json->encode($json->decode(q{[194,137,32,44,114,147,68,222,92,192,78,235,63,208,114,53]})), "ipv6_address"); + + is($msg->ipv6_mask_size(), 183, "ipv6_mask_size"); + + is($msg->rx_bytes(), 451408920, "rx_bytes"); + + is($msg->tx_bytes(), 59251049, "tx_bytes"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":49526,"flags":2471552451,"interface_name":"if0\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000","ipv4_address":[143,241,84,180],"ipv4_mask_size":152,"ipv6_address":[194,137,32,44,114,147,68,222,92,192,78,235,63,208,114,53],"ipv6_mask_size":183,"length":50,"msg_type":187,"payload":"j/FUtJjCiSAscpNE3lzATus/0HI1txj05xppGYgDaWYwAAAAAAAAAAAAAAAAAMPlUJM=","preamble":85,"rx_bytes":451408920,"sender":3880,"tx_bytes":59251049}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_network_state_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgReset.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgReset.t new file mode 100644 index 0000000000..0e0179fa97 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgReset.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgReset.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_reset_1() { + my $buf = decode_base64("VbYAP9IEWPjuE0rP"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xcf4a, "crc"); + + is($msg->{'length'}, 4, "length"); + + is($msg->{'msg_type'}, 0xb6, "msg_type"); + + is($msg->{'payload'}, "WPjuEw==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xd23f, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 334428248, "flags"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":53066,"flags":334428248,"length":4,"msg_type":182,"payload":"WPjuEw==","preamble":85,"sender":53823}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_reset_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetDep.t new file mode 100644 index 0000000000..a24d13c6ae --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetDep.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgResetDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_reset_dep_1() { + my $buf = decode_base64("VbIAQAsA6qs="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xabea, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xb2, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x0b40, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":44010,"length":0,"msg_type":178,"payload":"","preamble":85,"sender":2880}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_reset_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetFilters.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetFilters.t new file mode 100644 index 0000000000..59b06b91f4 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgResetFilters.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgResetFilters.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_reset_filters_1() { + my $buf = decode_base64("VSIAUcgBZIIt"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x2d82, "crc"); + + is($msg->{'length'}, 1, "length"); + + is($msg->{'msg_type'}, 0x22, "msg_type"); + + is($msg->{'payload'}, "ZA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xc851, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->filter(), 100, "filter"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":11650,"filter":100,"length":1,"msg_type":34,"payload":"ZA==","preamble":85,"sender":51281}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_reset_filters_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSetTime.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSetTime.t new file mode 100644 index 0000000000..acd88a9fb1 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSetTime.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgSetTime.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_set_time_1() { + my $buf = decode_base64("VWgAFaoA10E="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x41d7, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0x68, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xaa15, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":16855,"length":0,"msg_type":104,"payload":"","preamble":85,"sender":43541}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_set_time_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecan.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecan.t new file mode 100644 index 0000000000..ba8303e1f7 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecan.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgSpecan.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_specan_1() { + my $buf = decode_base64("VVEAHNT/SolH9SJJDN3Xp9MTmsnxRc2IAEYzQ2xFZiamRGSzuRGvMcHk5C8hGI2xEmP2eT0oW5Hfp64JdAv3VDGZzQLmwtrxZWstiV1y5ivgF0rRx9OCWdyjRBT9B84ygXTCFx/i2Z3N3QXgXFJt38PppQFSjZ2xqfSDYG1v/ZUc4eFInp7SxM5GP+G4lq7wLZI7UsIEs5RC/nNNHi4EzCXIeRIRq2ajrzJCZUUN36yg6dxl7Zw+dS+PXocWm3FuD/ON4y6P49H5Apmog/mgWCZ1gTkobdGxJi8MDxAJr0VGtu91hwZHY+ZzAkel5HvSqFp8FAfckKhFFkiiRW9b+0jcHHeWXwI="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x025f, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0x51, "msg_type"); + + is($msg->{'payload'}, "SolH9SJJDN3Xp9MTmsnxRc2IAEYzQ2xFZiamRGSzuRGvMcHk5C8hGI2xEmP2eT0oW5Hfp64JdAv3VDGZzQLmwtrxZWstiV1y5ivgF0rRx9OCWdyjRBT9B84ygXTCFx/i2Z3N3QXgXFJt38PppQFSjZ2xqfSDYG1v/ZUc4eFInp7SxM5GP+G4lq7wLZI7UsIEs5RC/nNNHi4EzCXIeRIRq2ajrzJCZUUN36yg6dxl7Zw+dS+PXocWm3FuD/ON4y6P49H5Apmog/mgWCZ1gTkobdGxJi8MDxAJr0VGtu91hwZHY+ZzAkel5HvSqFp8FAfckKhFFkiiRW9b+0jcHHeW", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xd41c, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->amplitude_ref(), 3780.199951171875, "amplitude_ref"); + + is($msg->amplitude_unit(), 1329.199951171875, "amplitude_unit"); + + is($json->encode($msg->amplitude_value()), $json->encode($json->decode(q{[100,179,185,17,175,49,193,228,228,47,33,24,141,177,18,99,246,121,61,40,91,145,223,167,174,9,116,11,247,84,49,153,205,2,230,194,218,241,101,107,45,137,93,114,230,43,224,23,74,209,199,211,130,89,220,163,68,20,253,7,206,50,129,116,194,23,31,226,217,157,205,221,5,224,92,82,109,223,195,233,165,1,82,141,157,177,169,244,131,96,109,111,253,149,28,225,225,72,158,158,210,196,206,70,63,225,184,150,174,240,45,146,59,82,194,4,179,148,66,254,115,77,30,46,4,204,37,200,121,18,17,171,102,163,175,50,66,101,69,13,223,172,160,233,220,101,237,156,62,117,47,143,94,135,22,155,113,110,15,243,141,227,46,143,227,209,249,2,153,168,131,249,160,88,38,117,129,57,40,109,209,177,38,47,12,15,16,9,175,69,70,182,239,117,135,6,71,99,230,115,2,71,165,228,123,210,168,90,124,20,7,220,144,168,69,22,72,162,69,111,91,251,72,220,28,119,150]})), "amplitude_value"); + + is($msg->channel_tag(), 35146, "channel_tag"); + + is($msg->freq_ref(), 7737.2001953125, "freq_ref"); + + is($msg->freq_step(), 8226.2001953125, "freq_step"); + + is($json->encode($msg->t()), $json->encode($json->decode(q{{"ns_residual":-1479025396,"tow":1227027783,"wn":5075}})), "t"); + + is($json->encode($msg), $json->encode($json->decode(q{{"amplitude_ref":3780.199951171875,"amplitude_unit":1329.199951171875,"amplitude_value":[100,179,185,17,175,49,193,228,228,47,33,24,141,177,18,99,246,121,61,40,91,145,223,167,174,9,116,11,247,84,49,153,205,2,230,194,218,241,101,107,45,137,93,114,230,43,224,23,74,209,199,211,130,89,220,163,68,20,253,7,206,50,129,116,194,23,31,226,217,157,205,221,5,224,92,82,109,223,195,233,165,1,82,141,157,177,169,244,131,96,109,111,253,149,28,225,225,72,158,158,210,196,206,70,63,225,184,150,174,240,45,146,59,82,194,4,179,148,66,254,115,77,30,46,4,204,37,200,121,18,17,171,102,163,175,50,66,101,69,13,223,172,160,233,220,101,237,156,62,117,47,143,94,135,22,155,113,110,15,243,141,227,46,143,227,209,249,2,153,168,131,249,160,88,38,117,129,57,40,109,209,177,38,47,12,15,16,9,175,69,70,182,239,117,135,6,71,99,230,115,2,71,165,228,123,210,168,90,124,20,7,220,144,168,69,22,72,162,69,111,91,251,72,220,28,119,150],"channel_tag":35146,"crc":607,"freq_ref":7737.2001953125,"freq_step":8226.2001953125,"length":255,"msg_type":81,"payload":"SolH9SJJDN3Xp9MTmsnxRc2IAEYzQ2xFZiamRGSzuRGvMcHk5C8hGI2xEmP2eT0oW5Hfp64JdAv3VDGZzQLmwtrxZWstiV1y5ivgF0rRx9OCWdyjRBT9B84ygXTCFx/i2Z3N3QXgXFJt38PppQFSjZ2xqfSDYG1v/ZUc4eFInp7SxM5GP+G4lq7wLZI7UsIEs5RC/nNNHi4EzCXIeRIRq2ajrzJCZUUN36yg6dxl7Zw+dS+PXocWm3FuD/ON4y6P49H5Apmog/mgWCZ1gTkobdGxJi8MDxAJr0VGtu91hwZHY+ZzAkel5HvSqFp8FAfckKhFFkiiRW9b+0jcHHeW","preamble":85,"sender":54300,"t":{"ns_residual":-1479025396,"tow":1227027783,"wn":5075}}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_specan_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecanDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecanDep.t new file mode 100644 index 0000000000..4d03e48b04 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgSpecanDep.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgSpecanDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_piksi_msg_specan_dep_1() { + my $buf = decode_base64("VVAAcNn/9hbdOCU7LRuaYcZFmgGQRc0UEkYz01lF8A6zuuP0rfC2R6Z1xA0sGyEcQ/4D+VwseqlNukSHP6iiWSS6Yz9pdNgsQ9ScS1E1+uEXzRoidzJlQAfnfLfLZupUU9AXRDazYmB09PZeaF4NONISvxaFUZmfods7FaR5kcurhDm0ZmUL5a+RSUh8BLjkPeraPuLZwQdtLFPJFGUJjLqiUVse56FR2HI856OjMe30ufBZj66l0/ENED2NZVkldb1WdrDkDA53h4HzMh3PxnVk4QaLbifSRMcrhEARM621DIwQ91S3aSedTR7NwjtA8bfuabWqLQimpO5TlK1s5ENZvUMaJ9g="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xd827, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0x50, "msg_type"); + + is($msg->{'payload'}, "9hbdOCU7LRuaYcZFmgGQRc0UEkYz01lF8A6zuuP0rfC2R6Z1xA0sGyEcQ/4D+VwseqlNukSHP6iiWSS6Yz9pdNgsQ9ScS1E1+uEXzRoidzJlQAfnfLfLZupUU9AXRDazYmB09PZeaF4NONISvxaFUZmfods7FaR5kcurhDm0ZmUL5a+RSUh8BLjkPeraPuLZwQdtLFPJFGUJjLqiUVse56FR2HI856OjMe30ufBZj66l0/ENED2NZVkldb1WdrDkDA53h4HzMh3PxnVk4QaLbifSRMcrhEARM621DIwQ91S3aSedTR7NwjtA8bfuabWqLQimpO5TlK1s5ENZvUMa", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xd970, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->amplitude_ref(), 9349.2001953125, "amplitude_ref"); + + is($msg->amplitude_unit(), 3485.199951171875, "amplitude_unit"); + + is($json->encode($msg->amplitude_value()), $json->encode($json->decode(q{[240,14,179,186,227,244,173,240,182,71,166,117,196,13,44,27,33,28,67,254,3,249,92,44,122,169,77,186,68,135,63,168,162,89,36,186,99,63,105,116,216,44,67,212,156,75,81,53,250,225,23,205,26,34,119,50,101,64,7,231,124,183,203,102,234,84,83,208,23,68,54,179,98,96,116,244,246,94,104,94,13,56,210,18,191,22,133,81,153,159,161,219,59,21,164,121,145,203,171,132,57,180,102,101,11,229,175,145,73,72,124,4,184,228,61,234,218,62,226,217,193,7,109,44,83,201,20,101,9,140,186,162,81,91,30,231,161,81,216,114,60,231,163,163,49,237,244,185,240,89,143,174,165,211,241,13,16,61,141,101,89,37,117,189,86,118,176,228,12,14,119,135,129,243,50,29,207,198,117,100,225,6,139,110,39,210,68,199,43,132,64,17,51,173,181,12,140,16,247,84,183,105,39,157,77,30,205,194,59,64,241,183,238,105,181,170,45,8,166,164,238,83,148,173,108,228,67,89,189,67,26]})), "amplitude_value"); + + is($msg->channel_tag(), 5878, "channel_tag"); + + is($msg->freq_ref(), 6348.2001953125, "freq_ref"); + + is($msg->freq_step(), 4608.2001953125, "freq_step"); + + is($json->encode($msg->t()), $json->encode($json->decode(q{{"tow":992295133,"wn":6957}})), "t"); + + is($json->encode($msg), $json->encode($json->decode(q{{"amplitude_ref":9349.2001953125,"amplitude_unit":3485.199951171875,"amplitude_value":[240,14,179,186,227,244,173,240,182,71,166,117,196,13,44,27,33,28,67,254,3,249,92,44,122,169,77,186,68,135,63,168,162,89,36,186,99,63,105,116,216,44,67,212,156,75,81,53,250,225,23,205,26,34,119,50,101,64,7,231,124,183,203,102,234,84,83,208,23,68,54,179,98,96,116,244,246,94,104,94,13,56,210,18,191,22,133,81,153,159,161,219,59,21,164,121,145,203,171,132,57,180,102,101,11,229,175,145,73,72,124,4,184,228,61,234,218,62,226,217,193,7,109,44,83,201,20,101,9,140,186,162,81,91,30,231,161,81,216,114,60,231,163,163,49,237,244,185,240,89,143,174,165,211,241,13,16,61,141,101,89,37,117,189,86,118,176,228,12,14,119,135,129,243,50,29,207,198,117,100,225,6,139,110,39,210,68,199,43,132,64,17,51,173,181,12,140,16,247,84,183,105,39,157,77,30,205,194,59,64,241,183,238,105,181,170,45,8,166,164,238,83,148,173,108,228,67,89,189,67,26],"channel_tag":5878,"crc":55335,"freq_ref":6348.2001953125,"freq_step":4608.2001953125,"length":255,"msg_type":80,"payload":"9hbdOCU7LRuaYcZFmgGQRc0UEkYz01lF8A6zuuP0rfC2R6Z1xA0sGyEcQ/4D+VwseqlNukSHP6iiWSS6Yz9pdNgsQ9ScS1E1+uEXzRoidzJlQAfnfLfLZupUU9AXRDazYmB09PZeaF4NONISvxaFUZmfods7FaR5kcurhDm0ZmUL5a+RSUh8BLjkPeraPuLZwQdtLFPJFGUJjLqiUVse56FR2HI856OjMe30ufBZj66l0/ENED2NZVkldb1WdrDkDA53h4HzMh3PxnVk4QaLbifSRMcrhEARM621DIwQ91S3aSedTR7NwjtA8bfuabWqLQimpO5TlK1s5ENZvUMa","preamble":85,"sender":55664,"t":{"tow":992295133,"wn":6957}}})), "raw_json"); +} +test_auto_check_sbp_piksi_msg_specan_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgUartState.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgUartState.t index 310e731e82..6cf00a8dae 100644 --- a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgUartState.t +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_piksi_MsgUartState.t @@ -29,6 +29,37 @@ use Test::More; use JSON::PP; use MIME::Base64; sub test_auto_check_sbp_piksi_msg_uart_state_1() { + my $buf = decode_base64("VR0AyOBKmqnyRWam50RZYk+4ivSaSclFmkHTRckQZ/mPoZoRukUz0wdF15X9GdoYHcMQE5+ORxEKcYnbhxK2FSa+O8Spm2tv/aj0nnAT+4Nk4Q=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xe164, "crc"); + + is($msg->{'length'}, 74, "length"); + + is($msg->{'msg_type'}, 0x1d, "msg_type"); + + is($msg->{'payload'}, "mqnyRWam50RZYk+4ivSaSclFmkHTRckQZ/mPoZoRukUz0wdF15X9GdoYHcMQE5+ORxEKcYnbhxK2FSa+O8Spm2tv/aj0nnAT+4M=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xe0c8, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->latency()), $json->encode($json->decode(q{{"avg":319865629,"current":364253831,"lmax":-611749622,"lmin":289902239}})), "latency"); + + is($json->encode($msg->obs_period()), $json->encode($json->decode(q{{"avg":-1002717658,"current":-2080697488,"pmax":-1628133123,"pmin":1869323177}})), "obs_period"); + + is($json->encode($msg->uart_a()), $json->encode($json->decode(q{{"crc_error_count":25177,"io_error_count":47183,"rx_buffer_level":244,"rx_throughput":1853.199951171875,"tx_buffer_level":138,"tx_throughput":7765.2001953125}})), "uart_a"); + + is($json->encode($msg->uart_b()), $json->encode($json->decode(q{{"crc_error_count":4297,"io_error_count":63847,"rx_buffer_level":161,"rx_throughput":6760.2001953125,"tx_buffer_level":143,"tx_throughput":6441.2001953125}})), "uart_b"); + + is($json->encode($msg->uart_ftdi()), $json->encode($json->decode(q{{"crc_error_count":38359,"io_error_count":6653,"rx_buffer_level":24,"rx_throughput":2173.199951171875,"tx_buffer_level":218,"tx_throughput":5954.2001953125}})), "uart_ftdi"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":57700,"latency":{"avg":319865629,"current":364253831,"lmax":-611749622,"lmin":289902239},"length":74,"msg_type":29,"obs_period":{"avg":-1002717658,"current":-2080697488,"pmax":-1628133123,"pmin":1869323177},"payload":"mqnyRWam50RZYk+4ivSaSclFmkHTRckQZ/mPoZoRukUz0wdF15X9GdoYHcMQE5+ORxEKcYnbhxK2FSa+O8Spm2tv/aj0nnAT+4M=","preamble":85,"sender":57544,"uart_a":{"crc_error_count":25177,"io_error_count":47183,"rx_buffer_level":244,"rx_throughput":1853.199951171875,"tx_buffer_level":138,"tx_throughput":7765.2001953125},"uart_b":{"crc_error_count":4297,"io_error_count":63847,"rx_buffer_level":161,"rx_throughput":6760.2001953125,"tx_buffer_level":143,"tx_throughput":6441.2001953125},"uart_ftdi":{"crc_error_count":38359,"io_error_count":6653,"rx_buffer_level":24,"rx_throughput":2173.199951171875,"tx_buffer_level":218,"tx_throughput":5954.2001953125}}})), "raw_json"); +} +sub test_auto_check_sbp_piksi_msg_uart_state_2() { my $buf = decode_base64("VRgA9tc6Gr9dPwAAAAAAAAAAGAB7Mj5AAAAAAAAAAAAoADYHokCxORA9AAAAAFEB/////wAAAAAAAAAA/////0d8"); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); @@ -57,7 +88,7 @@ sub test_auto_check_sbp_piksi_msg_uart_state_1() { is($json->encode($msg), $json->encode($json->decode(q{{"crc":31815,"latency":{"avg":-1,"current":-1,"lmax":0,"lmin":0},"length":58,"msg_type":24,"payload":"Gr9dPwAAAAAAAAAAGAB7Mj5AAAAAAAAAAAAoADYHokCxORA9AAAAAFEB/////wAAAAAAAAAA/////w==","preamble":85,"sender":55286,"uart_a":{"crc_error_count":0,"io_error_count":0,"rx_buffer_level":0,"rx_throughput":0.0,"tx_buffer_level":24,"tx_throughput":0.8661972284317017},"uart_b":{"crc_error_count":0,"io_error_count":0,"rx_buffer_level":0,"rx_throughput":0.0,"tx_buffer_level":40,"tx_throughput":2.9718310832977295},"uart_ftdi":{"crc_error_count":0,"io_error_count":0,"rx_buffer_level":1,"rx_throughput":0.035211268812417984,"tx_buffer_level":81,"tx_throughput":5.063380241394043}}})), "raw_json"); } -sub test_auto_check_sbp_piksi_msg_uart_state_2() { +sub test_auto_check_sbp_piksi_msg_uart_state_3() { my $buf = decode_base64("VRgA9tc67ehfPwAAAAAAAAAAGADGuj9AAAAAAAAAAAAoANZI2UAdSLQ+AAAAAFUB/////wAAAAAAAAAA/////5n4"); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); @@ -88,5 +119,6 @@ sub test_auto_check_sbp_piksi_msg_uart_state_2() { } test_auto_check_sbp_piksi_msg_uart_state_1(); test_auto_check_sbp_piksi_msg_uart_state_2(); +test_auto_check_sbp_piksi_msg_uart_state_3(); done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadByIndexReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadByIndexReq.t new file mode 100644 index 0000000000..ddfae78e59 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadByIndexReq.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsReadByIndexReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_read_by_index_req_1() { + my $buf = decode_base64("VaIAensC9CLrFw=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x17eb, "crc"); + + is($msg->{'length'}, 2, "length"); + + is($msg->{'msg_type'}, 0xa2, "msg_type"); + + is($msg->{'payload'}, "9CI=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x7b7a, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->index(), 8948, "index"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":6123,"index":8948,"length":2,"msg_type":162,"payload":"9CI=","preamble":85,"sender":31610}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_read_by_index_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadReq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadReq.t new file mode 100644 index 0000000000..9cfe7d9659 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadReq.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsReadReq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_read_req_1() { + my $buf = decode_base64("VaQAmNYac2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQC15A=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xe4b5, "crc"); + + is($msg->{'length'}, 26, "length"); + + is($msg->{'msg_type'}, 0xa4, "msg_type"); + + is($msg->{'payload'}, "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQA=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xd698, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->setting(), "section-name\x00setting-name\x00", "setting"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":58549,"length":26,"msg_type":164,"payload":"c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQA=","preamble":85,"sender":54936,"setting":"section-name\u0000setting-name\u0000"}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_read_req_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadResp.t new file mode 100644 index 0000000000..33d273ec8e --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsReadResp.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsReadResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_read_resp_1() { + my $buf = decode_base64("VaUAiPBCc2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMAy8c="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xc7cb, "crc"); + + is($msg->{'length'}, 66, "length"); + + is($msg->{'msg_type'}, 0xa5, "msg_type"); + + is($msg->{'payload'}, "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf088, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->setting(), "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00", "setting"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":51147,"length":66,"msg_type":165,"payload":"c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA","preamble":85,"sender":61576,"setting":"section-name\u0000setting-name\u0000setting-value\u0000enum;value1,value2,value3\u0000"}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_read_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegister.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegister.t new file mode 100644 index 0000000000..e6d757601d --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegister.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsRegister.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_register_1() { + my $buf = decode_base64("Va4AVAZCc2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMAjus="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xeb8e, "crc"); + + is($msg->{'length'}, 66, "length"); + + is($msg->{'msg_type'}, 0xae, "msg_type"); + + is($msg->{'payload'}, "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x0654, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->setting(), "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00", "setting"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":60302,"length":66,"msg_type":174,"payload":"c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA","preamble":85,"sender":1620,"setting":"section-name\u0000setting-name\u0000setting-value\u0000enum;value1,value2,value3\u0000"}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_register_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegisterResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegisterResp.t new file mode 100644 index 0000000000..79d4b11db2 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsRegisterResp.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsRegisterResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_register_resp_1() { + my $buf = decode_base64("Va8BKdVDEnNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAFIQ"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x1052, "crc"); + + is($msg->{'length'}, 67, "length"); + + is($msg->{'msg_type'}, 0x1af, "msg_type"); + + is($msg->{'payload'}, "EnNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xd529, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->setting(), "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00", "setting"); + + is($msg->status(), 18, "status"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":4178,"length":67,"msg_type":431,"payload":"EnNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==","preamble":85,"sender":54569,"setting":"section-name\u0000setting-name\u0000setting-value\u0000enum;value1,value2,value3\u0000","status":18}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_register_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsSave.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsSave.t new file mode 100644 index 0000000000..ef9488409c --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsSave.t @@ -0,0 +1,54 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsSave.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_save_1() { + my $buf = decode_base64("VaEAouAAe0M="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x437b, "crc"); + + is($msg->{'length'}, 0, "length"); + + is($msg->{'msg_type'}, 0xa1, "msg_type"); + + is($msg->{'payload'}, "", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xe0a2, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":17275,"length":0,"msg_type":161,"payload":"","preamble":85,"sender":57506}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_save_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWrite.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWrite.t new file mode 100644 index 0000000000..80cd6b133b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWrite.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsWrite.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_write_1() { + my $buf = decode_base64("VaAAewAoc2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAPQK"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xaf4, "crc"); + + is($msg->{'length'}, 40, "length"); + + is($msg->{'msg_type'}, 0xa0, "msg_type"); + + is($msg->{'payload'}, "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x7b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->setting(), "section-name\x00setting-name\x00setting-value\x00", "setting"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":2804,"length":40,"msg_type":160,"payload":"c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAA==","preamble":85,"sender":123,"setting":"section-name\u0000setting-name\u0000setting-value\u0000"}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_write_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWriteResp.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWriteResp.t new file mode 100644 index 0000000000..fe4ce41f6d --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_settings_MsgSettingsWriteResp.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsWriteResp.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_settings_msg_settings_write_resp_1() { + my $buf = decode_base64("Va8AWzdDmHNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzADYA"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x0036, "crc"); + + is($msg->{'length'}, 67, "length"); + + is($msg->{'msg_type'}, 0xaf, "msg_type"); + + is($msg->{'payload'}, "mHNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x375b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->setting(), "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00", "setting"); + + is($msg->status(), 152, "status"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":54,"length":67,"msg_type":175,"payload":"mHNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==","preamble":85,"sender":14171,"setting":"section-name\u0000setting-name\u0000setting-value\u0000enum;value1,value2,value3\u0000","status":152}})), "raw_json"); +} +test_auto_check_sbp_settings_msg_settings_write_resp_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMeta.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMeta.t new file mode 100644 index 0000000000..9ef07fe2d7 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMeta.t @@ -0,0 +1,68 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/soln_meta/test_MsgSolnMeta.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_solution_meta_msg_soln_meta_1() { + my $buf = decode_base64("VQ7/ADz+MNBB2HotxKCQ5AhTWVcD1V9tVoNHRlRJgxpS94xhc252/QJ6upR6lLTnRC6+ZvMwwA/QWTgK9QL+yXggfgJToe57ZuZMvuG2z+QH2nVZHb84+Ln/LhJIjlJxGgSs/rKIcXM6wVnjtvZMTWz1KR9GfPmRD07kJvGBCLD7SPhQc/Tnkb++sqhZ6UWwroy2jVFSXE9l32RAuNd8JRXjh2ZIJNs4klrbaONmUwwpeq1eAa6GgmjtdPlr5oJ7GaI538GuksHvLPbF1lBTZEJIhYmMUgICYAlgnoZhK4GNGbfI1jn4Z95Bww/0FbQujIIkEcLRQf5zZ5iB6uvC6qrJ0pqW9w=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf796, "crc"); + + is($msg->{'length'}, 254, "length"); + + is($msg->{'msg_type'}, 0xff0e, "msg_type"); + + is($msg->{'payload'}, "MNBB2HotxKCQ5AhTWVcD1V9tVoNHRlRJgxpS94xhc252/QJ6upR6lLTnRC6+ZvMwwA/QWTgK9QL+yXggfgJToe57ZuZMvuG2z+QH2nVZHb84+Ln/LhJIjlJxGgSs/rKIcXM6wVnjtvZMTWz1KR9GfPmRD07kJvGBCLD7SPhQc/Tnkb++sqhZ6UWwroy2jVFSXE9l32RAuNd8JRXjh2ZIJNs4klrbaONmUwwpeq1eAa6GgmjtdPlr5oJ7GaI538GuksHvLPbF1lBTZEJIhYmMUgICYAlgnoZhK4GNGbfI1jn4Z95Bww/0FbQujIIkEcLRQf5zZ5iB6uvC6qrJ0po=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x3c00, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->age_corrections(), 21256, "age_corrections"); + + is($msg->age_gnss(), 3573765977, "age_gnss"); + + is($msg->hdop(), 41156, "hdop"); + + is($msg->pdop(), 11642, "pdop"); + + is($json->encode($msg->sol_in()), $json->encode($json->decode(q{[{"flags":109,"sensor_type":95},{"flags":131,"sensor_type":86},{"flags":70,"sensor_type":71},{"flags":73,"sensor_type":84},{"flags":26,"sensor_type":131},{"flags":247,"sensor_type":82},{"flags":97,"sensor_type":140},{"flags":110,"sensor_type":115},{"flags":253,"sensor_type":118},{"flags":122,"sensor_type":2},{"flags":148,"sensor_type":186},{"flags":148,"sensor_type":122},{"flags":231,"sensor_type":180},{"flags":46,"sensor_type":68},{"flags":102,"sensor_type":190},{"flags":48,"sensor_type":243},{"flags":15,"sensor_type":192},{"flags":89,"sensor_type":208},{"flags":10,"sensor_type":56},{"flags":2,"sensor_type":245},{"flags":201,"sensor_type":254},{"flags":32,"sensor_type":120},{"flags":2,"sensor_type":126},{"flags":161,"sensor_type":83},{"flags":123,"sensor_type":238},{"flags":230,"sensor_type":102},{"flags":190,"sensor_type":76},{"flags":182,"sensor_type":225},{"flags":228,"sensor_type":207},{"flags":218,"sensor_type":7},{"flags":89,"sensor_type":117},{"flags":191,"sensor_type":29},{"flags":248,"sensor_type":56},{"flags":255,"sensor_type":185},{"flags":18,"sensor_type":46},{"flags":142,"sensor_type":72},{"flags":113,"sensor_type":82},{"flags":4,"sensor_type":26},{"flags":254,"sensor_type":172},{"flags":136,"sensor_type":178},{"flags":115,"sensor_type":113},{"flags":193,"sensor_type":58},{"flags":227,"sensor_type":89},{"flags":246,"sensor_type":182},{"flags":77,"sensor_type":76},{"flags":245,"sensor_type":108},{"flags":31,"sensor_type":41},{"flags":124,"sensor_type":70},{"flags":145,"sensor_type":249},{"flags":78,"sensor_type":15},{"flags":38,"sensor_type":228},{"flags":129,"sensor_type":241},{"flags":176,"sensor_type":8},{"flags":72,"sensor_type":251},{"flags":80,"sensor_type":248},{"flags":244,"sensor_type":115},{"flags":145,"sensor_type":231},{"flags":190,"sensor_type":191},{"flags":168,"sensor_type":178},{"flags":233,"sensor_type":89},{"flags":176,"sensor_type":69},{"flags":140,"sensor_type":174},{"flags":141,"sensor_type":182},{"flags":82,"sensor_type":81},{"flags":79,"sensor_type":92},{"flags":223,"sensor_type":101},{"flags":64,"sensor_type":100},{"flags":215,"sensor_type":184},{"flags":37,"sensor_type":124},{"flags":227,"sensor_type":21},{"flags":102,"sensor_type":135},{"flags":36,"sensor_type":72},{"flags":56,"sensor_type":219},{"flags":90,"sensor_type":146},{"flags":104,"sensor_type":219},{"flags":102,"sensor_type":227},{"flags":12,"sensor_type":83},{"flags":122,"sensor_type":41},{"flags":94,"sensor_type":173},{"flags":174,"sensor_type":1},{"flags":130,"sensor_type":134},{"flags":237,"sensor_type":104},{"flags":249,"sensor_type":116},{"flags":230,"sensor_type":107},{"flags":123,"sensor_type":130},{"flags":162,"sensor_type":25},{"flags":223,"sensor_type":57},{"flags":174,"sensor_type":193},{"flags":193,"sensor_type":146},{"flags":44,"sensor_type":239},{"flags":197,"sensor_type":246},{"flags":80,"sensor_type":214},{"flags":100,"sensor_type":83},{"flags":72,"sensor_type":66},{"flags":137,"sensor_type":133},{"flags":82,"sensor_type":140},{"flags":2,"sensor_type":2},{"flags":9,"sensor_type":96},{"flags":158,"sensor_type":96},{"flags":97,"sensor_type":134},{"flags":129,"sensor_type":43},{"flags":25,"sensor_type":141},{"flags":200,"sensor_type":183},{"flags":57,"sensor_type":214},{"flags":103,"sensor_type":248},{"flags":65,"sensor_type":222},{"flags":15,"sensor_type":195},{"flags":21,"sensor_type":244},{"flags":46,"sensor_type":180},{"flags":130,"sensor_type":140},{"flags":17,"sensor_type":36},{"flags":209,"sensor_type":194},{"flags":254,"sensor_type":65},{"flags":103,"sensor_type":115},{"flags":129,"sensor_type":152},{"flags":235,"sensor_type":234},{"flags":234,"sensor_type":194},{"flags":201,"sensor_type":170},{"flags":154,"sensor_type":210}]})), "sol_in"); + + is($msg->tow(), 3628191792, "tow"); + + is($msg->vdop(), 58512, "vdop"); + + is($json->encode($msg), $json->encode($json->decode(q{{"age_corrections":21256,"age_gnss":3573765977,"crc":63382,"hdop":41156,"length":254,"msg_type":65294,"payload":"MNBB2HotxKCQ5AhTWVcD1V9tVoNHRlRJgxpS94xhc252/QJ6upR6lLTnRC6+ZvMwwA/QWTgK9QL+yXggfgJToe57ZuZMvuG2z+QH2nVZHb84+Ln/LhJIjlJxGgSs/rKIcXM6wVnjtvZMTWz1KR9GfPmRD07kJvGBCLD7SPhQc/Tnkb++sqhZ6UWwroy2jVFSXE9l32RAuNd8JRXjh2ZIJNs4klrbaONmUwwpeq1eAa6GgmjtdPlr5oJ7GaI538GuksHvLPbF1lBTZEJIhYmMUgICYAlgnoZhK4GNGbfI1jn4Z95Bww/0FbQujIIkEcLRQf5zZ5iB6uvC6qrJ0po=","pdop":11642,"preamble":85,"sender":15360,"sol_in":[{"flags":109,"sensor_type":95},{"flags":131,"sensor_type":86},{"flags":70,"sensor_type":71},{"flags":73,"sensor_type":84},{"flags":26,"sensor_type":131},{"flags":247,"sensor_type":82},{"flags":97,"sensor_type":140},{"flags":110,"sensor_type":115},{"flags":253,"sensor_type":118},{"flags":122,"sensor_type":2},{"flags":148,"sensor_type":186},{"flags":148,"sensor_type":122},{"flags":231,"sensor_type":180},{"flags":46,"sensor_type":68},{"flags":102,"sensor_type":190},{"flags":48,"sensor_type":243},{"flags":15,"sensor_type":192},{"flags":89,"sensor_type":208},{"flags":10,"sensor_type":56},{"flags":2,"sensor_type":245},{"flags":201,"sensor_type":254},{"flags":32,"sensor_type":120},{"flags":2,"sensor_type":126},{"flags":161,"sensor_type":83},{"flags":123,"sensor_type":238},{"flags":230,"sensor_type":102},{"flags":190,"sensor_type":76},{"flags":182,"sensor_type":225},{"flags":228,"sensor_type":207},{"flags":218,"sensor_type":7},{"flags":89,"sensor_type":117},{"flags":191,"sensor_type":29},{"flags":248,"sensor_type":56},{"flags":255,"sensor_type":185},{"flags":18,"sensor_type":46},{"flags":142,"sensor_type":72},{"flags":113,"sensor_type":82},{"flags":4,"sensor_type":26},{"flags":254,"sensor_type":172},{"flags":136,"sensor_type":178},{"flags":115,"sensor_type":113},{"flags":193,"sensor_type":58},{"flags":227,"sensor_type":89},{"flags":246,"sensor_type":182},{"flags":77,"sensor_type":76},{"flags":245,"sensor_type":108},{"flags":31,"sensor_type":41},{"flags":124,"sensor_type":70},{"flags":145,"sensor_type":249},{"flags":78,"sensor_type":15},{"flags":38,"sensor_type":228},{"flags":129,"sensor_type":241},{"flags":176,"sensor_type":8},{"flags":72,"sensor_type":251},{"flags":80,"sensor_type":248},{"flags":244,"sensor_type":115},{"flags":145,"sensor_type":231},{"flags":190,"sensor_type":191},{"flags":168,"sensor_type":178},{"flags":233,"sensor_type":89},{"flags":176,"sensor_type":69},{"flags":140,"sensor_type":174},{"flags":141,"sensor_type":182},{"flags":82,"sensor_type":81},{"flags":79,"sensor_type":92},{"flags":223,"sensor_type":101},{"flags":64,"sensor_type":100},{"flags":215,"sensor_type":184},{"flags":37,"sensor_type":124},{"flags":227,"sensor_type":21},{"flags":102,"sensor_type":135},{"flags":36,"sensor_type":72},{"flags":56,"sensor_type":219},{"flags":90,"sensor_type":146},{"flags":104,"sensor_type":219},{"flags":102,"sensor_type":227},{"flags":12,"sensor_type":83},{"flags":122,"sensor_type":41},{"flags":94,"sensor_type":173},{"flags":174,"sensor_type":1},{"flags":130,"sensor_type":134},{"flags":237,"sensor_type":104},{"flags":249,"sensor_type":116},{"flags":230,"sensor_type":107},{"flags":123,"sensor_type":130},{"flags":162,"sensor_type":25},{"flags":223,"sensor_type":57},{"flags":174,"sensor_type":193},{"flags":193,"sensor_type":146},{"flags":44,"sensor_type":239},{"flags":197,"sensor_type":246},{"flags":80,"sensor_type":214},{"flags":100,"sensor_type":83},{"flags":72,"sensor_type":66},{"flags":137,"sensor_type":133},{"flags":82,"sensor_type":140},{"flags":2,"sensor_type":2},{"flags":9,"sensor_type":96},{"flags":158,"sensor_type":96},{"flags":97,"sensor_type":134},{"flags":129,"sensor_type":43},{"flags":25,"sensor_type":141},{"flags":200,"sensor_type":183},{"flags":57,"sensor_type":214},{"flags":103,"sensor_type":248},{"flags":65,"sensor_type":222},{"flags":15,"sensor_type":195},{"flags":21,"sensor_type":244},{"flags":46,"sensor_type":180},{"flags":130,"sensor_type":140},{"flags":17,"sensor_type":36},{"flags":209,"sensor_type":194},{"flags":254,"sensor_type":65},{"flags":103,"sensor_type":115},{"flags":129,"sensor_type":152},{"flags":235,"sensor_type":234},{"flags":234,"sensor_type":194},{"flags":201,"sensor_type":170},{"flags":154,"sensor_type":210}],"tow":3628191792,"vdop":58512}})), "raw_json"); +} +test_auto_check_sbp_solution_meta_msg_soln_meta_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMetaDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMetaDepA.t new file mode 100644 index 0000000000..24479fa2d0 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_solution_meta_MsgSolnMetaDepA.t @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/soln_meta/test_MsgSolnMetaDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_solution_meta_msg_soln_meta_dep_a_1() { + my $buf = decode_base64("VQ//VPH+t96deQWk7h++c107ZyRToZwu/UNXyCf69fLkSBLeC1jP2ucN4uAWxBXyDFlH27ZVkcySKMwzFZnjLA8c/yfN2PC+XdtnKim2TN4RF30fEuUcL9YZZFRqSDAK3ujrSW2jM5iF61dGAmxbZcg3GJzpSSdCYYz84+bth/H1zUYA27xriLI6AR0s1eGTvmDAbOQPyxID3rREZeXfy/OkXKXcn655cKfwKDsD5jSVlNqO1G2wR7OsTQHBRpOVF5CU78O6Vh4ij5zPPzd1/97e25Hgv9JtVpkVIOIKPD9q7F1gHqNq7pOFhGuY1t25yhX8M4I7psp/qjrB130WOocvWI5N0w=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xd34d, "crc"); + + is($msg->{'length'}, 254, "length"); + + is($msg->{'msg_type'}, 0xff0f, "msg_type"); + + is($msg->{'payload'}, "t96deQWk7h++c107ZyRToZwu/UNXyCf69fLkSBLeC1jP2ucN4uAWxBXyDFlH27ZVkcySKMwzFZnjLA8c/yfN2PC+XdtnKim2TN4RF30fEuUcL9YZZFRqSDAK3ujrSW2jM5iF61dGAmxbZcg3GJzpSSdCYYz84+bth/H1zUYA27xriLI6AR0s1eGTvmDAbOQPyxID3rREZeXfy/OkXKXcn655cKfwKDsD5jSVlNqO1G2wR7OsTQHBRpOVF5CU78O6Vh4ij5zPPzd1/97e25Hgv9JtVpkVIOIKPD9q7F1gHqNq7pOFhGuY1t25yhX8M4I7psp/qjrB130WOocvWI4=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf154, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->age_corrections(), 48671, "age_corrections"); + + is($msg->alignment_status(), 115, "alignment_status"); + + is($msg->hdop(), 31133, "hdop"); + + is($msg->last_used_gnss_pos_tow(), 610745181, "last_used_gnss_pos_tow"); + + is($msg->last_used_gnss_vel_tow(), 782016851, "last_used_gnss_vel_tow"); + + is($msg->n_sats(), 238, "n_sats"); + + is($msg->pdop(), 57015, "pdop"); + + is($json->encode($msg->sol_in()), $json->encode($json->decode(q{[{"flags":67,"sensor_type":253},{"flags":200,"sensor_type":87},{"flags":250,"sensor_type":39},{"flags":242,"sensor_type":245},{"flags":72,"sensor_type":228},{"flags":222,"sensor_type":18},{"flags":88,"sensor_type":11},{"flags":218,"sensor_type":207},{"flags":13,"sensor_type":231},{"flags":224,"sensor_type":226},{"flags":196,"sensor_type":22},{"flags":242,"sensor_type":21},{"flags":89,"sensor_type":12},{"flags":219,"sensor_type":71},{"flags":85,"sensor_type":182},{"flags":204,"sensor_type":145},{"flags":40,"sensor_type":146},{"flags":51,"sensor_type":204},{"flags":153,"sensor_type":21},{"flags":44,"sensor_type":227},{"flags":28,"sensor_type":15},{"flags":39,"sensor_type":255},{"flags":216,"sensor_type":205},{"flags":190,"sensor_type":240},{"flags":219,"sensor_type":93},{"flags":42,"sensor_type":103},{"flags":182,"sensor_type":41},{"flags":222,"sensor_type":76},{"flags":23,"sensor_type":17},{"flags":31,"sensor_type":125},{"flags":229,"sensor_type":18},{"flags":47,"sensor_type":28},{"flags":25,"sensor_type":214},{"flags":84,"sensor_type":100},{"flags":72,"sensor_type":106},{"flags":10,"sensor_type":48},{"flags":232,"sensor_type":222},{"flags":73,"sensor_type":235},{"flags":163,"sensor_type":109},{"flags":152,"sensor_type":51},{"flags":235,"sensor_type":133},{"flags":70,"sensor_type":87},{"flags":108,"sensor_type":2},{"flags":101,"sensor_type":91},{"flags":55,"sensor_type":200},{"flags":156,"sensor_type":24},{"flags":73,"sensor_type":233},{"flags":66,"sensor_type":39},{"flags":140,"sensor_type":97},{"flags":227,"sensor_type":252},{"flags":237,"sensor_type":230},{"flags":241,"sensor_type":135},{"flags":205,"sensor_type":245},{"flags":0,"sensor_type":70},{"flags":188,"sensor_type":219},{"flags":136,"sensor_type":107},{"flags":58,"sensor_type":178},{"flags":29,"sensor_type":1},{"flags":213,"sensor_type":44},{"flags":147,"sensor_type":225},{"flags":96,"sensor_type":190},{"flags":108,"sensor_type":192},{"flags":15,"sensor_type":228},{"flags":18,"sensor_type":203},{"flags":222,"sensor_type":3},{"flags":68,"sensor_type":180},{"flags":229,"sensor_type":101},{"flags":203,"sensor_type":223},{"flags":164,"sensor_type":243},{"flags":165,"sensor_type":92},{"flags":159,"sensor_type":220},{"flags":121,"sensor_type":174},{"flags":167,"sensor_type":112},{"flags":40,"sensor_type":240},{"flags":3,"sensor_type":59},{"flags":52,"sensor_type":230},{"flags":148,"sensor_type":149},{"flags":142,"sensor_type":218},{"flags":109,"sensor_type":212},{"flags":71,"sensor_type":176},{"flags":172,"sensor_type":179},{"flags":1,"sensor_type":77},{"flags":70,"sensor_type":193},{"flags":149,"sensor_type":147},{"flags":144,"sensor_type":23},{"flags":239,"sensor_type":148},{"flags":186,"sensor_type":195},{"flags":30,"sensor_type":86},{"flags":143,"sensor_type":34},{"flags":207,"sensor_type":156},{"flags":55,"sensor_type":63},{"flags":255,"sensor_type":117},{"flags":222,"sensor_type":222},{"flags":145,"sensor_type":219},{"flags":191,"sensor_type":224},{"flags":109,"sensor_type":210},{"flags":153,"sensor_type":86},{"flags":32,"sensor_type":21},{"flags":10,"sensor_type":226},{"flags":63,"sensor_type":60},{"flags":236,"sensor_type":106},{"flags":96,"sensor_type":93},{"flags":163,"sensor_type":30},{"flags":238,"sensor_type":106},{"flags":133,"sensor_type":147},{"flags":107,"sensor_type":132},{"flags":214,"sensor_type":152},{"flags":185,"sensor_type":221},{"flags":21,"sensor_type":202},{"flags":51,"sensor_type":252},{"flags":59,"sensor_type":130},{"flags":202,"sensor_type":166},{"flags":170,"sensor_type":127},{"flags":193,"sensor_type":58},{"flags":125,"sensor_type":215},{"flags":58,"sensor_type":22},{"flags":47,"sensor_type":135},{"flags":142,"sensor_type":88}]})), "sol_in"); + + is($msg->vdop(), 41989, "vdop"); + + is($json->encode($msg), $json->encode($json->decode(q{{"age_corrections":48671,"alignment_status":115,"crc":54093,"hdop":31133,"last_used_gnss_pos_tow":610745181,"last_used_gnss_vel_tow":782016851,"length":254,"msg_type":65295,"n_sats":238,"payload":"t96deQWk7h++c107ZyRToZwu/UNXyCf69fLkSBLeC1jP2ucN4uAWxBXyDFlH27ZVkcySKMwzFZnjLA8c/yfN2PC+XdtnKim2TN4RF30fEuUcL9YZZFRqSDAK3ujrSW2jM5iF61dGAmxbZcg3GJzpSSdCYYz84+bth/H1zUYA27xriLI6AR0s1eGTvmDAbOQPyxID3rREZeXfy/OkXKXcn655cKfwKDsD5jSVlNqO1G2wR7OsTQHBRpOVF5CU78O6Vh4ij5zPPzd1/97e25Hgv9JtVpkVIOIKPD9q7F1gHqNq7pOFhGuY1t25yhX8M4I7psp/qjrB130WOocvWI4=","pdop":57015,"preamble":85,"sender":61780,"sol_in":[{"flags":67,"sensor_type":253},{"flags":200,"sensor_type":87},{"flags":250,"sensor_type":39},{"flags":242,"sensor_type":245},{"flags":72,"sensor_type":228},{"flags":222,"sensor_type":18},{"flags":88,"sensor_type":11},{"flags":218,"sensor_type":207},{"flags":13,"sensor_type":231},{"flags":224,"sensor_type":226},{"flags":196,"sensor_type":22},{"flags":242,"sensor_type":21},{"flags":89,"sensor_type":12},{"flags":219,"sensor_type":71},{"flags":85,"sensor_type":182},{"flags":204,"sensor_type":145},{"flags":40,"sensor_type":146},{"flags":51,"sensor_type":204},{"flags":153,"sensor_type":21},{"flags":44,"sensor_type":227},{"flags":28,"sensor_type":15},{"flags":39,"sensor_type":255},{"flags":216,"sensor_type":205},{"flags":190,"sensor_type":240},{"flags":219,"sensor_type":93},{"flags":42,"sensor_type":103},{"flags":182,"sensor_type":41},{"flags":222,"sensor_type":76},{"flags":23,"sensor_type":17},{"flags":31,"sensor_type":125},{"flags":229,"sensor_type":18},{"flags":47,"sensor_type":28},{"flags":25,"sensor_type":214},{"flags":84,"sensor_type":100},{"flags":72,"sensor_type":106},{"flags":10,"sensor_type":48},{"flags":232,"sensor_type":222},{"flags":73,"sensor_type":235},{"flags":163,"sensor_type":109},{"flags":152,"sensor_type":51},{"flags":235,"sensor_type":133},{"flags":70,"sensor_type":87},{"flags":108,"sensor_type":2},{"flags":101,"sensor_type":91},{"flags":55,"sensor_type":200},{"flags":156,"sensor_type":24},{"flags":73,"sensor_type":233},{"flags":66,"sensor_type":39},{"flags":140,"sensor_type":97},{"flags":227,"sensor_type":252},{"flags":237,"sensor_type":230},{"flags":241,"sensor_type":135},{"flags":205,"sensor_type":245},{"flags":0,"sensor_type":70},{"flags":188,"sensor_type":219},{"flags":136,"sensor_type":107},{"flags":58,"sensor_type":178},{"flags":29,"sensor_type":1},{"flags":213,"sensor_type":44},{"flags":147,"sensor_type":225},{"flags":96,"sensor_type":190},{"flags":108,"sensor_type":192},{"flags":15,"sensor_type":228},{"flags":18,"sensor_type":203},{"flags":222,"sensor_type":3},{"flags":68,"sensor_type":180},{"flags":229,"sensor_type":101},{"flags":203,"sensor_type":223},{"flags":164,"sensor_type":243},{"flags":165,"sensor_type":92},{"flags":159,"sensor_type":220},{"flags":121,"sensor_type":174},{"flags":167,"sensor_type":112},{"flags":40,"sensor_type":240},{"flags":3,"sensor_type":59},{"flags":52,"sensor_type":230},{"flags":148,"sensor_type":149},{"flags":142,"sensor_type":218},{"flags":109,"sensor_type":212},{"flags":71,"sensor_type":176},{"flags":172,"sensor_type":179},{"flags":1,"sensor_type":77},{"flags":70,"sensor_type":193},{"flags":149,"sensor_type":147},{"flags":144,"sensor_type":23},{"flags":239,"sensor_type":148},{"flags":186,"sensor_type":195},{"flags":30,"sensor_type":86},{"flags":143,"sensor_type":34},{"flags":207,"sensor_type":156},{"flags":55,"sensor_type":63},{"flags":255,"sensor_type":117},{"flags":222,"sensor_type":222},{"flags":145,"sensor_type":219},{"flags":191,"sensor_type":224},{"flags":109,"sensor_type":210},{"flags":153,"sensor_type":86},{"flags":32,"sensor_type":21},{"flags":10,"sensor_type":226},{"flags":63,"sensor_type":60},{"flags":236,"sensor_type":106},{"flags":96,"sensor_type":93},{"flags":163,"sensor_type":30},{"flags":238,"sensor_type":106},{"flags":133,"sensor_type":147},{"flags":107,"sensor_type":132},{"flags":214,"sensor_type":152},{"flags":185,"sensor_type":221},{"flags":21,"sensor_type":202},{"flags":51,"sensor_type":252},{"flags":59,"sensor_type":130},{"flags":202,"sensor_type":166},{"flags":170,"sensor_type":127},{"flags":193,"sensor_type":58},{"flags":125,"sensor_type":215},{"flags":58,"sensor_type":22},{"flags":47,"sensor_type":135},{"flags":142,"sensor_type":88}],"vdop":41989}})), "raw_json"); +} +test_auto_check_sbp_solution_meta_msg_soln_meta_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrCodeBiases.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrCodeBiases.t new file mode 100644 index 0000000000..2463322219 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrCodeBiases.t @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrCodeBiases.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_code_biases_1() { + my $buf = decode_base64("VeEFJ1f90FoTFwlChfH+hDMEg/B4U5TR1T7k6EdCvNKANoOYgW+L8rGRLAn1z/HKlo0yn9yLJbtivxeAiKfIBtNaF/SK19GLDWUgBxIdRvptScpPkAmSRfE0FmNizAOr5rRLPpFWgh8emyUSN9Inf/JCDe2YqtQP9jtetMOdRWR3EESzr5BxUVIelxVtKeEITaSdAEkeBk5Rj3Twlze5qf4zJ0qv9yJhSmGwMOytDK5lgh6pwb7MxHtrGeFKCQo3A4P2Y4Ui48tEEmHfWcD2MkVbCpdKdm4kqPegTbONsmO/eE3AW+AB4jJXkpTuZLN949douB85Wk8VnPVRPF2qPMinDX2E"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x847d, "crc"); + + is($msg->{'length'}, 253, "length"); + + is($msg->{'msg_type'}, 0x5e1, "msg_type"); + + is($msg->{'payload'}, "0FoTFwlChfH+hDMEg/B4U5TR1T7k6EdCvNKANoOYgW+L8rGRLAn1z/HKlo0yn9yLJbtivxeAiKfIBtNaF/SK19GLDWUgBxIdRvptScpPkAmSRfE0FmNizAOr5rRLPpFWgh8emyUSN9Inf/JCDe2YqtQP9jtetMOdRWR3EESzr5BxUVIelxVtKeEITaSdAEkeBk5Rj3Twlze5qf4zJ0qv9yJhSmGwMOytDK5lgh6pwb7MxHtrGeFKCQo3A4P2Y4Ui48tEEmHfWcD2MkVbCpdKdm4kqPegTbONsmO/eE3AW+AB4jJXkpTuZLN949douB85Wk8VnPVRPF2qPMinDQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x5727, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->biases()), $json->encode($json->decode(q{[{"code":51,"value":-31996},{"code":240,"value":21368},{"code":148,"value":-10799},{"code":62,"value":-5916},{"code":71,"value":-17342},{"code":210,"value":13952},{"code":131,"value":-32360},{"code":111,"value":-3445},{"code":177,"value":11409},{"code":9,"value":-12299},{"code":241,"value":-26934},{"code":141,"value":-24782},{"code":220,"value":9611},{"code":187,"value":-16542},{"code":23,"value":-30592},{"code":167,"value":1736},{"code":211,"value":5978},{"code":244,"value":-10358},{"code":209,"value":3467},{"code":101,"value":1824},{"code":18,"value":17949},{"code":250,"value":18797},{"code":202,"value":-28593},{"code":9,"value":17810},{"code":241,"value":5684},{"code":99,"value":-13214},{"code":3,"value":-6485},{"code":180,"value":15947},{"code":145,"value":-32170},{"code":31,"value":-25826},{"code":37,"value":14098},{"code":210,"value":32551},{"code":242,"value":3394},{"code":237,"value":-21864},{"code":212,"value":-2545},{"code":59,"value":-19362},{"code":195,"value":17821},{"code":100,"value":4215},{"code":68,"value":-20557},{"code":144,"value":20849},{"code":82,"value":-26850},{"code":21,"value":10605},{"code":225,"value":19720},{"code":164,"value":157},{"code":73,"value":1566},{"code":78,"value":-28847},{"code":116,"value":-26640},{"code":55,"value":-22087},{"code":254,"value":10035},{"code":74,"value":-2129},{"code":34,"value":19041},{"code":97,"value":12464},{"code":236,"value":3245},{"code":174,"value":-32155},{"code":30,"value":-15959},{"code":190,"value":-15156},{"code":123,"value":6507},{"code":225,"value":2378},{"code":10,"value":823},{"code":131,"value":25590},{"code":133,"value":-7390},{"code":203,"value":4676},{"code":97,"value":23007},{"code":192,"value":13046},{"code":69,"value":2651},{"code":151,"value":30282},{"code":110,"value":-22492},{"code":247,"value":19872},{"code":179,"value":-19827},{"code":99,"value":30911},{"code":77,"value":23488},{"code":224,"value":-7679},{"code":50,"value":-28073},{"code":148,"value":25838},{"code":179,"value":-7299},{"code":215,"value":-18328},{"code":31,"value":23097},{"code":79,"value":-25579},{"code":245,"value":15441},{"code":93,"value":15530},{"code":200,"value":3495}]})), "biases"); + + is($msg->iod_ssr(), 132, "iod_ssr"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":241,"sat":133}})), "sid"); + + is($json->encode($msg->time()), $json->encode($json->decode(q{{"tow":387144400,"wn":16905}})), "time"); + + is($msg->update_interval(), 254, "update_interval"); + + is($json->encode($msg), $json->encode($json->decode(q{{"biases":[{"code":51,"value":-31996},{"code":240,"value":21368},{"code":148,"value":-10799},{"code":62,"value":-5916},{"code":71,"value":-17342},{"code":210,"value":13952},{"code":131,"value":-32360},{"code":111,"value":-3445},{"code":177,"value":11409},{"code":9,"value":-12299},{"code":241,"value":-26934},{"code":141,"value":-24782},{"code":220,"value":9611},{"code":187,"value":-16542},{"code":23,"value":-30592},{"code":167,"value":1736},{"code":211,"value":5978},{"code":244,"value":-10358},{"code":209,"value":3467},{"code":101,"value":1824},{"code":18,"value":17949},{"code":250,"value":18797},{"code":202,"value":-28593},{"code":9,"value":17810},{"code":241,"value":5684},{"code":99,"value":-13214},{"code":3,"value":-6485},{"code":180,"value":15947},{"code":145,"value":-32170},{"code":31,"value":-25826},{"code":37,"value":14098},{"code":210,"value":32551},{"code":242,"value":3394},{"code":237,"value":-21864},{"code":212,"value":-2545},{"code":59,"value":-19362},{"code":195,"value":17821},{"code":100,"value":4215},{"code":68,"value":-20557},{"code":144,"value":20849},{"code":82,"value":-26850},{"code":21,"value":10605},{"code":225,"value":19720},{"code":164,"value":157},{"code":73,"value":1566},{"code":78,"value":-28847},{"code":116,"value":-26640},{"code":55,"value":-22087},{"code":254,"value":10035},{"code":74,"value":-2129},{"code":34,"value":19041},{"code":97,"value":12464},{"code":236,"value":3245},{"code":174,"value":-32155},{"code":30,"value":-15959},{"code":190,"value":-15156},{"code":123,"value":6507},{"code":225,"value":2378},{"code":10,"value":823},{"code":131,"value":25590},{"code":133,"value":-7390},{"code":203,"value":4676},{"code":97,"value":23007},{"code":192,"value":13046},{"code":69,"value":2651},{"code":151,"value":30282},{"code":110,"value":-22492},{"code":247,"value":19872},{"code":179,"value":-19827},{"code":99,"value":30911},{"code":77,"value":23488},{"code":224,"value":-7679},{"code":50,"value":-28073},{"code":148,"value":25838},{"code":179,"value":-7299},{"code":215,"value":-18328},{"code":31,"value":23097},{"code":79,"value":-25579},{"code":245,"value":15441},{"code":93,"value":15530},{"code":200,"value":3495}],"crc":33917,"iod_ssr":132,"length":253,"msg_type":1505,"payload":"0FoTFwlChfH+hDMEg/B4U5TR1T7k6EdCvNKANoOYgW+L8rGRLAn1z/HKlo0yn9yLJbtivxeAiKfIBtNaF/SK19GLDWUgBxIdRvptScpPkAmSRfE0FmNizAOr5rRLPpFWgh8emyUSN9Inf/JCDe2YqtQP9jtetMOdRWR3EESzr5BxUVIelxVtKeEITaSdAEkeBk5Rj3Twlze5qf4zJ0qv9yJhSmGwMOytDK5lgh6pwb7MxHtrGeFKCQo3A4P2Y4Ui48tEEmHfWcD2MkVbCpdKdm4kqPegTbONsmO/eE3AW+AB4jJXkpTuZLN949douB85Wk8VnPVRPF2qPMinDQ==","preamble":85,"sender":22311,"sid":{"code":241,"sat":133},"time":{"tow":387144400,"wn":16905},"update_interval":254}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_code_biases_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.t new file mode 100644 index 0000000000..a13326268b --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGridDefinitionDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_grid_definition_dep_a_1() { + my $buf = decode_base64("VfUFtff/C1Sr5YSPLsw0XGgZzLYWYst70yYN/YGtq+v9GssDeH4qLCdXRZoNHLMgLyTDJ8aG64Y5ePOXIxHJ0311pI5l75Ce71o4R3hD3XIKvgTmpKtOuVousVLke97jkcPbGzjj9teQnh/W8f7IVo5ZDHkdfAkTmSwjfg7ZQXQai3pyWnxRALr2LmKz88bZJB7KDIc9KpbdZlOzK/xRPn7Mw+4SgME1XmM/tgK63E264NwN1LZYD5cFXfukEuSo4sMsqpEkOmBrkAvkDKPu95+9AXNBynkvwQtgXUhRz3kTl4jpM4XDTSyTznj8TdREPM5qz/OeXgYDzVxUAtwyPSaNdWxlTIs="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x8b4c, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0x5f5, "msg_type"); + + is($msg->{'payload'}, "C1Sr5YSPLsw0XGgZzLYWYst70yYN/YGtq+v9GssDeH4qLCdXRZoNHLMgLyTDJ8aG64Y5ePOXIxHJ0311pI5l75Ce71o4R3hD3XIKvgTmpKtOuVousVLke97jkcPbGzjj9teQnh/W8f7IVo5ZDHkdfAkTmSwjfg7ZQXQai3pyWnxRALr2LmKz88bZJB7KDIc9KpbdZlOzK/xRPn7Mw+4SgME1XmM/tgK63E264NwN1LZYD5cFXfukEuSo4sMsqpEkOmBrkAvkDKPu95+9AXNBynkvwQtgXUhRz3kTl4jpM4XDTSyTznj8TdREPM5qz/OeXgYDzVxUAtwyPSaNdWxl", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf7b5, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->header()), $json->encode($json->decode(q{{"area_width":43860,"lat_nw_corner_enc":34021,"lon_nw_corner_enc":11919,"num_msgs":204,"region_size_inverse":11,"seq_num":52}})), "header"); + + is($json->encode($msg->rle_list()), $json->encode($json->decode(q{[92,104,25,204,182,22,98,203,123,211,38,13,253,129,173,171,235,253,26,203,3,120,126,42,44,39,87,69,154,13,28,179,32,47,36,195,39,198,134,235,134,57,120,243,151,35,17,201,211,125,117,164,142,101,239,144,158,239,90,56,71,120,67,221,114,10,190,4,230,164,171,78,185,90,46,177,82,228,123,222,227,145,195,219,27,56,227,246,215,144,158,31,214,241,254,200,86,142,89,12,121,29,124,9,19,153,44,35,126,14,217,65,116,26,139,122,114,90,124,81,0,186,246,46,98,179,243,198,217,36,30,202,12,135,61,42,150,221,102,83,179,43,252,81,62,126,204,195,238,18,128,193,53,94,99,63,182,2,186,220,77,186,224,220,13,212,182,88,15,151,5,93,251,164,18,228,168,226,195,44,170,145,36,58,96,107,144,11,228,12,163,238,247,159,189,1,115,65,202,121,47,193,11,96,93,72,81,207,121,19,151,136,233,51,133,195,77,44,147,206,120,252,77,212,68,60,206,106,207,243,158,94,6,3,205,92,84,2,220,50,61,38,141,117,108,101]})), "rle_list"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":35660,"header":{"area_width":43860,"lat_nw_corner_enc":34021,"lon_nw_corner_enc":11919,"num_msgs":204,"region_size_inverse":11,"seq_num":52},"length":255,"msg_type":1525,"payload":"C1Sr5YSPLsw0XGgZzLYWYst70yYN/YGtq+v9GssDeH4qLCdXRZoNHLMgLyTDJ8aG64Y5ePOXIxHJ0311pI5l75Ce71o4R3hD3XIKvgTmpKtOuVousVLke97jkcPbGzjj9teQnh/W8f7IVo5ZDHkdfAkTmSwjfg7ZQXQai3pyWnxRALr2LmKz88bZJB7KDIc9KpbdZlOzK/xRPn7Mw+4SgME1XmM/tgK63E264NwN1LZYD5cFXfukEuSo4sMsqpEkOmBrkAvkDKPu95+9AXNBynkvwQtgXUhRz3kTl4jpM4XDTSyTznj8TdREPM5qz/OeXgYDzVxUAtwyPSaNdWxl","preamble":85,"rle_list":[92,104,25,204,182,22,98,203,123,211,38,13,253,129,173,171,235,253,26,203,3,120,126,42,44,39,87,69,154,13,28,179,32,47,36,195,39,198,134,235,134,57,120,243,151,35,17,201,211,125,117,164,142,101,239,144,158,239,90,56,71,120,67,221,114,10,190,4,230,164,171,78,185,90,46,177,82,228,123,222,227,145,195,219,27,56,227,246,215,144,158,31,214,241,254,200,86,142,89,12,121,29,124,9,19,153,44,35,126,14,217,65,116,26,139,122,114,90,124,81,0,186,246,46,98,179,243,198,217,36,30,202,12,135,61,42,150,221,102,83,179,43,252,81,62,126,204,195,238,18,128,193,53,94,99,63,182,2,186,220,77,186,224,220,13,212,182,88,15,151,5,93,251,164,18,228,168,226,195,44,170,145,36,58,96,107,144,11,228,12,163,238,247,159,189,1,115,65,202,121,47,193,11,96,93,72,81,207,121,19,151,136,233,51,133,195,77,44,147,206,120,252,77,212,68,60,206,106,207,243,158,94,6,3,205,92,84,2,220,50,61,38,141,117,108,101],"sender":63413}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_grid_definition_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrection.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrection.t new file mode 100644 index 0000000000..cf89e317e6 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrection.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGriddedCorrection.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_gridded_correction_1() { + my $buf = decode_base64("VfwFxPn9FQ6XMniFHZeu5Ze9zMRpqniVqSX0TkiMZQKtWEa0NphzTsmhF4eYYj1Lsnjlkjc6qermRay/f5JZlltv4SkRdzSmpng53QwDnEacI38IfzqAN3NQnXqZfBuAYmfMS+6A4pT4PdjQlafgKJC6neNI8GQjDNQHO7BRVhsYm0MrhC3LLAZwt+ewT8L992db4nSUFz7j8B3bzRLyz0hHTyUqsMnKW2lzkjtuLG2At7lDH6VcT720XgeieZzSLwcHza4p8YHSK2W60MPi97vboHjAZqYq9q1eZpzeHiP3QL2JzNwgR97eyfYDGS3773NY2grReEGvg8IprokRRBz9KrIj"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x23b2, "crc"); + + is($msg->{'length'}, 253, "length"); + + is($msg->{'msg_type'}, 0x5fc, "msg_type"); + + is($msg->{'payload'}, "FQ6XMniFHZeu5Ze9zMRpqniVqSX0TkiMZQKtWEa0NphzTsmhF4eYYj1Lsnjlkjc6qermRay/f5JZlltv4SkRdzSmpng53QwDnEacI38IfzqAN3NQnXqZfBuAYmfMS+6A4pT4PdjQlafgKJC6neNI8GQjDNQHO7BRVhsYm0MrhC3LLAZwt+ewT8L992db4nSUFz7j8B3bzRLyz0hHTyUqsMnKW2lzkjtuLG2At7lDH6VcT720XgeieZzSLwcHza4p8YHSK2W60MPi97vboHjAZqYq9q1eZpzeHiP3QL2JzNwgR97eyfYDGS3773NY2grReEGvg8IprokRRBz9Kg==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf9c4, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->header()), $json->encode($json->decode(q{{"iod_atmo":170,"num_msgs":48535,"seq_num":50380,"tile_id":12951,"tile_set_id":3605,"time":{"tow":2535294328,"wn":58798},"tropo_quality_indicator":120,"update_interval":105}})), "header"); + + is($msg->index(), 43413, "index"); + + is($json->encode($msg->stec_residuals()), $json->encode($json->decode(q{[{"residual":-21246,"stddev":88,"sv_id":{"constellation":101,"sat_id":140}},{"residual":-26570,"stddev":115,"sv_id":{"constellation":180,"sat_id":70}},{"residual":6049,"stddev":135,"sv_id":{"constellation":201,"sat_id":78}},{"residual":19261,"stddev":178,"sv_id":{"constellation":98,"sat_id":152}},{"residual":14226,"stddev":58,"sv_id":{"constellation":229,"sat_id":120}},{"residual":17894,"stddev":172,"sv_id":{"constellation":234,"sat_id":169}},{"residual":22930,"stddev":150,"sv_id":{"constellation":127,"sat_id":191}},{"residual":10721,"stddev":17,"sv_id":{"constellation":111,"sat_id":91}},{"residual":-22874,"stddev":120,"sv_id":{"constellation":52,"sat_id":119}},{"residual":780,"stddev":156,"sv_id":{"constellation":221,"sat_id":57}},{"residual":32547,"stddev":8,"sv_id":{"constellation":156,"sat_id":70}},{"residual":14208,"stddev":115,"sv_id":{"constellation":58,"sat_id":127}},{"residual":-26246,"stddev":124,"sv_id":{"constellation":157,"sat_id":80}},{"residual":26466,"stddev":204,"sv_id":{"constellation":128,"sat_id":27}},{"residual":-7552,"stddev":148,"sv_id":{"constellation":238,"sat_id":75}},{"residual":-12072,"stddev":149,"sv_id":{"constellation":61,"sat_id":248}},{"residual":-28632,"stddev":186,"sv_id":{"constellation":224,"sat_id":167}},{"residual":-4024,"stddev":100,"sv_id":{"constellation":227,"sat_id":157}},{"residual":2004,"stddev":59,"sv_id":{"constellation":12,"sat_id":35}},{"residual":6998,"stddev":24,"sv_id":{"constellation":81,"sat_id":176}},{"residual":-31701,"stddev":45,"sv_id":{"constellation":67,"sat_id":155}},{"residual":28678,"stddev":183,"sv_id":{"constellation":44,"sat_id":203}},{"residual":-15793,"stddev":253,"sv_id":{"constellation":176,"sat_id":231}},{"residual":-7589,"stddev":116,"sv_id":{"constellation":103,"sat_id":247}},{"residual":-7362,"stddev":240,"sv_id":{"constellation":23,"sat_id":148}},{"residual":4813,"stddev":242,"sv_id":{"constellation":219,"sat_id":29}},{"residual":20295,"stddev":37,"sv_id":{"constellation":72,"sat_id":207}},{"residual":-13623,"stddev":91,"sv_id":{"constellation":176,"sat_id":42}},{"residual":15250,"stddev":110,"sv_id":{"constellation":115,"sat_id":105}},{"residual":-18560,"stddev":185,"sv_id":{"constellation":109,"sat_id":44}},{"residual":23717,"stddev":79,"sv_id":{"constellation":31,"sat_id":67}},{"residual":1886,"stddev":162,"sv_id":{"constellation":180,"sat_id":189}},{"residual":12242,"stddev":7,"sv_id":{"constellation":156,"sat_id":121}},{"residual":10670,"stddev":241,"sv_id":{"constellation":205,"sat_id":7}},{"residual":25899,"stddev":186,"sv_id":{"constellation":210,"sat_id":129}},{"residual":-2078,"stddev":187,"sv_id":{"constellation":195,"sat_id":208}},{"residual":-16264,"stddev":102,"sv_id":{"constellation":160,"sat_id":219}},{"residual":-21002,"stddev":94,"sv_id":{"constellation":42,"sat_id":166}},{"residual":7902,"stddev":35,"sv_id":{"constellation":156,"sat_id":102}},{"residual":-30275,"stddev":204,"sv_id":{"constellation":64,"sat_id":247}},{"residual":-8633,"stddev":222,"sv_id":{"constellation":32,"sat_id":220}},{"residual":6403,"stddev":45,"sv_id":{"constellation":246,"sat_id":201}},{"residual":22643,"stddev":218,"sv_id":{"constellation":239,"sat_id":251}},{"residual":16760,"stddev":175,"sv_id":{"constellation":209,"sat_id":10}},{"residual":-20951,"stddev":137,"sv_id":{"constellation":194,"sat_id":131}},{"residual":-740,"stddev":42,"sv_id":{"constellation":68,"sat_id":17}}]})), "stec_residuals"); + + is($json->encode($msg->tropo_delay_correction()), $json->encode($json->decode(q{{"hydro":-3035,"stddev":72,"wet":78}})), "tropo_delay_correction"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":9138,"header":{"iod_atmo":170,"num_msgs":48535,"seq_num":50380,"tile_id":12951,"tile_set_id":3605,"time":{"tow":2535294328,"wn":58798},"tropo_quality_indicator":120,"update_interval":105},"index":43413,"length":253,"msg_type":1532,"payload":"FQ6XMniFHZeu5Ze9zMRpqniVqSX0TkiMZQKtWEa0NphzTsmhF4eYYj1Lsnjlkjc6qermRay/f5JZlltv4SkRdzSmpng53QwDnEacI38IfzqAN3NQnXqZfBuAYmfMS+6A4pT4PdjQlafgKJC6neNI8GQjDNQHO7BRVhsYm0MrhC3LLAZwt+ewT8L992db4nSUFz7j8B3bzRLyz0hHTyUqsMnKW2lzkjtuLG2At7lDH6VcT720XgeieZzSLwcHza4p8YHSK2W60MPi97vboHjAZqYq9q1eZpzeHiP3QL2JzNwgR97eyfYDGS3773NY2grReEGvg8IprokRRBz9Kg==","preamble":85,"sender":63940,"stec_residuals":[{"residual":-21246,"stddev":88,"sv_id":{"constellation":101,"sat_id":140}},{"residual":-26570,"stddev":115,"sv_id":{"constellation":180,"sat_id":70}},{"residual":6049,"stddev":135,"sv_id":{"constellation":201,"sat_id":78}},{"residual":19261,"stddev":178,"sv_id":{"constellation":98,"sat_id":152}},{"residual":14226,"stddev":58,"sv_id":{"constellation":229,"sat_id":120}},{"residual":17894,"stddev":172,"sv_id":{"constellation":234,"sat_id":169}},{"residual":22930,"stddev":150,"sv_id":{"constellation":127,"sat_id":191}},{"residual":10721,"stddev":17,"sv_id":{"constellation":111,"sat_id":91}},{"residual":-22874,"stddev":120,"sv_id":{"constellation":52,"sat_id":119}},{"residual":780,"stddev":156,"sv_id":{"constellation":221,"sat_id":57}},{"residual":32547,"stddev":8,"sv_id":{"constellation":156,"sat_id":70}},{"residual":14208,"stddev":115,"sv_id":{"constellation":58,"sat_id":127}},{"residual":-26246,"stddev":124,"sv_id":{"constellation":157,"sat_id":80}},{"residual":26466,"stddev":204,"sv_id":{"constellation":128,"sat_id":27}},{"residual":-7552,"stddev":148,"sv_id":{"constellation":238,"sat_id":75}},{"residual":-12072,"stddev":149,"sv_id":{"constellation":61,"sat_id":248}},{"residual":-28632,"stddev":186,"sv_id":{"constellation":224,"sat_id":167}},{"residual":-4024,"stddev":100,"sv_id":{"constellation":227,"sat_id":157}},{"residual":2004,"stddev":59,"sv_id":{"constellation":12,"sat_id":35}},{"residual":6998,"stddev":24,"sv_id":{"constellation":81,"sat_id":176}},{"residual":-31701,"stddev":45,"sv_id":{"constellation":67,"sat_id":155}},{"residual":28678,"stddev":183,"sv_id":{"constellation":44,"sat_id":203}},{"residual":-15793,"stddev":253,"sv_id":{"constellation":176,"sat_id":231}},{"residual":-7589,"stddev":116,"sv_id":{"constellation":103,"sat_id":247}},{"residual":-7362,"stddev":240,"sv_id":{"constellation":23,"sat_id":148}},{"residual":4813,"stddev":242,"sv_id":{"constellation":219,"sat_id":29}},{"residual":20295,"stddev":37,"sv_id":{"constellation":72,"sat_id":207}},{"residual":-13623,"stddev":91,"sv_id":{"constellation":176,"sat_id":42}},{"residual":15250,"stddev":110,"sv_id":{"constellation":115,"sat_id":105}},{"residual":-18560,"stddev":185,"sv_id":{"constellation":109,"sat_id":44}},{"residual":23717,"stddev":79,"sv_id":{"constellation":31,"sat_id":67}},{"residual":1886,"stddev":162,"sv_id":{"constellation":180,"sat_id":189}},{"residual":12242,"stddev":7,"sv_id":{"constellation":156,"sat_id":121}},{"residual":10670,"stddev":241,"sv_id":{"constellation":205,"sat_id":7}},{"residual":25899,"stddev":186,"sv_id":{"constellation":210,"sat_id":129}},{"residual":-2078,"stddev":187,"sv_id":{"constellation":195,"sat_id":208}},{"residual":-16264,"stddev":102,"sv_id":{"constellation":160,"sat_id":219}},{"residual":-21002,"stddev":94,"sv_id":{"constellation":42,"sat_id":166}},{"residual":7902,"stddev":35,"sv_id":{"constellation":156,"sat_id":102}},{"residual":-30275,"stddev":204,"sv_id":{"constellation":64,"sat_id":247}},{"residual":-8633,"stddev":222,"sv_id":{"constellation":32,"sat_id":220}},{"residual":6403,"stddev":45,"sv_id":{"constellation":246,"sat_id":201}},{"residual":22643,"stddev":218,"sv_id":{"constellation":239,"sat_id":251}},{"residual":16760,"stddev":175,"sv_id":{"constellation":209,"sat_id":10}},{"residual":-20951,"stddev":137,"sv_id":{"constellation":194,"sat_id":131}},{"residual":-740,"stddev":42,"sv_id":{"constellation":68,"sat_id":17}}],"tropo_delay_correction":{"hydro":-3035,"stddev":72,"wet":78}}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_gridded_correction_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.t new file mode 100644 index 0000000000..a5646bd161 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGriddedCorrectionDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_gridded_correction_dep_a_1() { + my $buf = decode_base64("VfoFbGr+pNksNWJdP5No/IX1HF9kkykhXFcZjpdKl19eB5LtLadWKnTgqercF7ASDbJPoKBuDzXOl54WdbgwqlIoNXpFtG4mQWj0E+7jWKmkkj8lt1VH66hy02ndnDwS5gKOrBAnIX5qY7zqKaLFiuNQDDZD7gVdAc+BDS5zMTq5f5zIYNnKD/U3xlHahEZJUpMa/w6GYIo31lOcqqNPreRzM/Fr9XCo0goFdQE5bPjUkXfipQWNymoAPCQ988vY1wyJEBz3c5i1d9Dky+wip8QgbQERZcgZXn2oiZ0EpB0fMIRI5X66REyFFQC0i6SUd5XWeLHJUFBpCoh2TS7p6eMLnmen2A=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xd8a7, "crc"); + + is($msg->{'length'}, 254, "length"); + + is($msg->{'msg_type'}, 0x5fa, "msg_type"); + + is($msg->{'payload'}, "pNksNWJdP5No/IX1HF9kkykhXFcZjpdKl19eB5LtLadWKnTgqercF7ASDbJPoKBuDzXOl54WdbgwqlIoNXpFtG4mQWj0E+7jWKmkkj8lt1VH66hy02ndnDwS5gKOrBAnIX5qY7zqKaLFiuNQDDZD7gVdAc+BDS5zMTq5f5zIYNnKD/U3xlHahEZJUpMa/w6GYIo31lOcqqNPreRzM/Fr9XCo0goFdQE5bPjUkXfipQWNymoAPCQ988vY1wyJEBz3c5i1d9Dky+wip8QgbQERZcgZXn2oiZ0EpB0fMIRI5X66REyFFQC0i6SUd5XWeLHJUFBpCoh2TS7p6eMLnmc=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x6a6c, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->header()), $json->encode($json->decode(q{{"iod_atmo":245,"num_msgs":37695,"seq_num":64616,"time":{"tow":892131748,"wn":23906},"tropo_quality_indicator":28,"update_interval":133}})), "header"); + + is($msg->index(), 25695, "index"); + + is($json->encode($msg->stec_residuals()), $json->encode($json->decode(q{[{"residual":-26738,"stddev":74,"sv_id":{"constellation":25,"sat_id":87}},{"residual":1886,"stddev":146,"sv_id":{"constellation":95,"sat_id":151}},{"residual":22183,"stddev":42,"sv_id":{"constellation":45,"sat_id":237}},{"residual":-5463,"stddev":220,"sv_id":{"constellation":224,"sat_id":116}},{"residual":3346,"stddev":178,"sv_id":{"constellation":176,"sat_id":23}},{"residual":28320,"stddev":15,"sv_id":{"constellation":160,"sat_id":79}},{"residual":-24937,"stddev":22,"sv_id":{"constellation":206,"sat_id":53}},{"residual":-21968,"stddev":82,"sv_id":{"constellation":184,"sat_id":117}},{"residual":17786,"stddev":180,"sv_id":{"constellation":53,"sat_id":40}},{"residual":26689,"stddev":244,"sv_id":{"constellation":38,"sat_id":110}},{"residual":22755,"stddev":169,"sv_id":{"constellation":238,"sat_id":19}},{"residual":9535,"stddev":183,"sv_id":{"constellation":146,"sat_id":164}},{"residual":-22293,"stddev":114,"sv_id":{"constellation":71,"sat_id":85}},{"residual":-25379,"stddev":60,"sv_id":{"constellation":105,"sat_id":211}},{"residual":-29182,"stddev":172,"sv_id":{"constellation":230,"sat_id":18}},{"residual":32289,"stddev":106,"sv_id":{"constellation":39,"sat_id":16}},{"residual":10730,"stddev":162,"sv_id":{"constellation":188,"sat_id":99}},{"residual":20707,"stddev":12,"sv_id":{"constellation":138,"sat_id":197}},{"residual":1518,"stddev":93,"sv_id":{"constellation":67,"sat_id":54}},{"residual":3457,"stddev":46,"sv_id":{"constellation":207,"sat_id":1}},{"residual":-18118,"stddev":127,"sv_id":{"constellation":49,"sat_id":115}},{"residual":-9888,"stddev":202,"sv_id":{"constellation":200,"sat_id":156}},{"residual":-14793,"stddev":81,"sv_id":{"constellation":245,"sat_id":15}},{"residual":18758,"stddev":82,"sv_id":{"constellation":132,"sat_id":218}},{"residual":3839,"stddev":134,"sv_id":{"constellation":26,"sat_id":147}},{"residual":-10697,"stddev":83,"sv_id":{"constellation":138,"sat_id":96}},{"residual":20387,"stddev":173,"sv_id":{"constellation":170,"sat_id":156}},{"residual":-3789,"stddev":107,"sv_id":{"constellation":115,"sat_id":228}},{"residual":-11608,"stddev":10,"sv_id":{"constellation":112,"sat_id":245}},{"residual":14593,"stddev":108,"sv_id":{"constellation":117,"sat_id":5}},{"residual":30609,"stddev":226,"sv_id":{"constellation":212,"sat_id":248}},{"residual":-13683,"stddev":106,"sv_id":{"constellation":5,"sat_id":165}},{"residual":15652,"stddev":243,"sv_id":{"constellation":60,"sat_id":0}},{"residual":3287,"stddev":137,"sv_id":{"constellation":216,"sat_id":203}},{"residual":29687,"stddev":152,"sv_id":{"constellation":28,"sat_id":16}},{"residual":-6960,"stddev":203,"sv_id":{"constellation":119,"sat_id":181}},{"residual":-15193,"stddev":32,"sv_id":{"constellation":34,"sat_id":236}},{"residual":25873,"stddev":200,"sv_id":{"constellation":1,"sat_id":109}},{"residual":-22403,"stddev":137,"sv_id":{"constellation":94,"sat_id":25}},{"residual":7588,"stddev":31,"sv_id":{"constellation":4,"sat_id":157}},{"residual":-6840,"stddev":126,"sv_id":{"constellation":132,"sat_id":48}},{"residual":-31412,"stddev":21,"sv_id":{"constellation":68,"sat_id":186}},{"residual":-23413,"stddev":148,"sv_id":{"constellation":180,"sat_id":0}},{"residual":30934,"stddev":177,"sv_id":{"constellation":149,"sat_id":119}},{"residual":26960,"stddev":10,"sv_id":{"constellation":80,"sat_id":201}},{"residual":11853,"stddev":233,"sv_id":{"constellation":118,"sat_id":136}},{"residual":-25077,"stddev":103,"sv_id":{"constellation":227,"sat_id":233}}]})), "stec_residuals"); + + is($json->encode($msg->tropo_delay_correction()), $json->encode($json->decode(q{{"hydro":10643,"stddev":92,"wet":33}})), "tropo_delay_correction"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":55463,"header":{"iod_atmo":245,"num_msgs":37695,"seq_num":64616,"time":{"tow":892131748,"wn":23906},"tropo_quality_indicator":28,"update_interval":133},"index":25695,"length":254,"msg_type":1530,"payload":"pNksNWJdP5No/IX1HF9kkykhXFcZjpdKl19eB5LtLadWKnTgqercF7ASDbJPoKBuDzXOl54WdbgwqlIoNXpFtG4mQWj0E+7jWKmkkj8lt1VH66hy02ndnDwS5gKOrBAnIX5qY7zqKaLFiuNQDDZD7gVdAc+BDS5zMTq5f5zIYNnKD/U3xlHahEZJUpMa/w6GYIo31lOcqqNPreRzM/Fr9XCo0goFdQE5bPjUkXfipQWNymoAPCQ988vY1wyJEBz3c5i1d9Dky+wip8QgbQERZcgZXn2oiZ0EpB0fMIRI5X66REyFFQC0i6SUd5XWeLHJUFBpCoh2TS7p6eMLnmc=","preamble":85,"sender":27244,"stec_residuals":[{"residual":-26738,"stddev":74,"sv_id":{"constellation":25,"sat_id":87}},{"residual":1886,"stddev":146,"sv_id":{"constellation":95,"sat_id":151}},{"residual":22183,"stddev":42,"sv_id":{"constellation":45,"sat_id":237}},{"residual":-5463,"stddev":220,"sv_id":{"constellation":224,"sat_id":116}},{"residual":3346,"stddev":178,"sv_id":{"constellation":176,"sat_id":23}},{"residual":28320,"stddev":15,"sv_id":{"constellation":160,"sat_id":79}},{"residual":-24937,"stddev":22,"sv_id":{"constellation":206,"sat_id":53}},{"residual":-21968,"stddev":82,"sv_id":{"constellation":184,"sat_id":117}},{"residual":17786,"stddev":180,"sv_id":{"constellation":53,"sat_id":40}},{"residual":26689,"stddev":244,"sv_id":{"constellation":38,"sat_id":110}},{"residual":22755,"stddev":169,"sv_id":{"constellation":238,"sat_id":19}},{"residual":9535,"stddev":183,"sv_id":{"constellation":146,"sat_id":164}},{"residual":-22293,"stddev":114,"sv_id":{"constellation":71,"sat_id":85}},{"residual":-25379,"stddev":60,"sv_id":{"constellation":105,"sat_id":211}},{"residual":-29182,"stddev":172,"sv_id":{"constellation":230,"sat_id":18}},{"residual":32289,"stddev":106,"sv_id":{"constellation":39,"sat_id":16}},{"residual":10730,"stddev":162,"sv_id":{"constellation":188,"sat_id":99}},{"residual":20707,"stddev":12,"sv_id":{"constellation":138,"sat_id":197}},{"residual":1518,"stddev":93,"sv_id":{"constellation":67,"sat_id":54}},{"residual":3457,"stddev":46,"sv_id":{"constellation":207,"sat_id":1}},{"residual":-18118,"stddev":127,"sv_id":{"constellation":49,"sat_id":115}},{"residual":-9888,"stddev":202,"sv_id":{"constellation":200,"sat_id":156}},{"residual":-14793,"stddev":81,"sv_id":{"constellation":245,"sat_id":15}},{"residual":18758,"stddev":82,"sv_id":{"constellation":132,"sat_id":218}},{"residual":3839,"stddev":134,"sv_id":{"constellation":26,"sat_id":147}},{"residual":-10697,"stddev":83,"sv_id":{"constellation":138,"sat_id":96}},{"residual":20387,"stddev":173,"sv_id":{"constellation":170,"sat_id":156}},{"residual":-3789,"stddev":107,"sv_id":{"constellation":115,"sat_id":228}},{"residual":-11608,"stddev":10,"sv_id":{"constellation":112,"sat_id":245}},{"residual":14593,"stddev":108,"sv_id":{"constellation":117,"sat_id":5}},{"residual":30609,"stddev":226,"sv_id":{"constellation":212,"sat_id":248}},{"residual":-13683,"stddev":106,"sv_id":{"constellation":5,"sat_id":165}},{"residual":15652,"stddev":243,"sv_id":{"constellation":60,"sat_id":0}},{"residual":3287,"stddev":137,"sv_id":{"constellation":216,"sat_id":203}},{"residual":29687,"stddev":152,"sv_id":{"constellation":28,"sat_id":16}},{"residual":-6960,"stddev":203,"sv_id":{"constellation":119,"sat_id":181}},{"residual":-15193,"stddev":32,"sv_id":{"constellation":34,"sat_id":236}},{"residual":25873,"stddev":200,"sv_id":{"constellation":1,"sat_id":109}},{"residual":-22403,"stddev":137,"sv_id":{"constellation":94,"sat_id":25}},{"residual":7588,"stddev":31,"sv_id":{"constellation":4,"sat_id":157}},{"residual":-6840,"stddev":126,"sv_id":{"constellation":132,"sat_id":48}},{"residual":-31412,"stddev":21,"sv_id":{"constellation":68,"sat_id":186}},{"residual":-23413,"stddev":148,"sv_id":{"constellation":180,"sat_id":0}},{"residual":30934,"stddev":177,"sv_id":{"constellation":149,"sat_id":119}},{"residual":26960,"stddev":10,"sv_id":{"constellation":80,"sat_id":201}},{"residual":11853,"stddev":233,"sv_id":{"constellation":118,"sat_id":136}},{"residual":-25077,"stddev":103,"sv_id":{"constellation":227,"sat_id":233}}],"tropo_delay_correction":{"hydro":10643,"stddev":92,"wet":33}}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_gridded_correction_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.t new file mode 100644 index 0000000000..c8bc1aeb08 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGriddedCorrectionNoStdDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_gridded_correction_no_std_dep_a_1() { + my $buf = decode_base64("VfAFZhz+s/AhqewidfVD+Ons5uZnej9l551zosWSI2vebTQpVgztuEHMiZSrtwsAtMusNcRVunPLXKYeKg3IR2KJ26Bf2F/6Y8Rc1p/9w97pkuk/TBhqKP1BCbco17w7dUVhczw4AI3PqzahFz0AV+Z7VyS4/w6ju+Arl5doJzkFNjDgtYE8XKtybW0MF3YIQJ822CEUGESgJCbekb5cY2yf6PDj3f0PPhd5uah0BJN7SN934vKhzLTKiaY6GHwTtbwQa0LnPwFA/HM+6WH6VpzdMbIgScZD+f1KOCald1xjLF+DWcDhN1+rWM0VdOdTR0dkbtn+mNQSCCid9DZI8Oe9b8PNUQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x51cd, "crc"); + + is($msg->{'length'}, 254, "length"); + + is($msg->{'msg_type'}, 0x5f0, "msg_type"); + + is($msg->{'payload'}, "s/AhqewidfVD+Ons5uZnej9l551zosWSI2vebTQpVgztuEHMiZSrtwsAtMusNcRVunPLXKYeKg3IR2KJ26Bf2F/6Y8Rc1p/9w97pkuk/TBhqKP1BCbco17w7dUVhczw4AI3PqzahFz0AV+Z7VyS4/w6ju+Arl5doJzkFNjDgtYE8XKtybW0MF3YIQJ822CEUGESgJCbekb5cY2yf6PDj3f0PPhd5uah0BJN7SN934vKhzLTKiaY6GHwTtbwQa0LnPwFA/HM+6WH6VpzdMbIgScZD+f1KOCald1xjLF+DWcDhN1+rWM0VdOdTR0dkbtn+mNQSCCid9DZI8Oe9b8M=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x1c66, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->header()), $json->encode($json->decode(q{{"iod_atmo":236,"num_msgs":62837,"seq_num":63555,"time":{"tow":2837573811,"wn":8940},"tropo_quality_indicator":230,"update_interval":233}})), "header"); + + is($msg->index(), 26598, "index"); + + is($json->encode($msg->stec_residuals()), $json->encode($json->decode(q{[{"residual":-23949,"sv_id":{"constellation":157,"sat_id":231}},{"residual":27427,"sv_id":{"constellation":146,"sat_id":197}},{"residual":10548,"sv_id":{"constellation":109,"sat_id":222}},{"residual":-18195,"sv_id":{"constellation":12,"sat_id":86}},{"residual":-27511,"sv_id":{"constellation":204,"sat_id":65}},{"residual":11,"sv_id":{"constellation":183,"sat_id":171}},{"residual":13740,"sv_id":{"constellation":203,"sat_id":180}},{"residual":29626,"sv_id":{"constellation":85,"sat_id":196}},{"residual":7846,"sv_id":{"constellation":92,"sat_id":203}},{"residual":18376,"sv_id":{"constellation":13,"sat_id":42}},{"residual":-24357,"sv_id":{"constellation":137,"sat_id":98}},{"residual":-1441,"sv_id":{"constellation":216,"sat_id":95}},{"residual":-10660,"sv_id":{"constellation":196,"sat_id":99}},{"residual":-8509,"sv_id":{"constellation":253,"sat_id":159}},{"residual":16361,"sv_id":{"constellation":146,"sat_id":233}},{"residual":10346,"sv_id":{"constellation":24,"sat_id":76}},{"residual":-18679,"sv_id":{"constellation":65,"sat_id":253}},{"residual":15292,"sv_id":{"constellation":215,"sat_id":40}},{"residual":29537,"sv_id":{"constellation":69,"sat_id":117}},{"residual":-29440,"sv_id":{"constellation":56,"sat_id":60}},{"residual":-24266,"sv_id":{"constellation":171,"sat_id":207}},{"residual":22272,"sv_id":{"constellation":61,"sat_id":23}},{"residual":9303,"sv_id":{"constellation":123,"sat_id":230}},{"residual":-23794,"sv_id":{"constellation":255,"sat_id":184}},{"residual":-26837,"sv_id":{"constellation":224,"sat_id":187}},{"residual":14631,"sv_id":{"constellation":104,"sat_id":151}},{"residual":-8144,"sv_id":{"constellation":54,"sat_id":5}},{"residual":23612,"sv_id":{"constellation":129,"sat_id":181}},{"residual":28013,"sv_id":{"constellation":114,"sat_id":171}},{"residual":2166,"sv_id":{"constellation":23,"sat_id":12}},{"residual":-10186,"sv_id":{"constellation":159,"sat_id":64}},{"residual":17432,"sv_id":{"constellation":20,"sat_id":33}},{"residual":-8666,"sv_id":{"constellation":36,"sat_id":160}},{"residual":25436,"sv_id":{"constellation":190,"sat_id":145}},{"residual":-3864,"sv_id":{"constellation":159,"sat_id":108}},{"residual":4093,"sv_id":{"constellation":221,"sat_id":227}},{"residual":-18055,"sv_id":{"constellation":23,"sat_id":62}},{"residual":-27900,"sv_id":{"constellation":116,"sat_id":168}},{"residual":30687,"sv_id":{"constellation":72,"sat_id":123}},{"residual":-13151,"sv_id":{"constellation":242,"sat_id":226}},{"residual":-22903,"sv_id":{"constellation":202,"sat_id":180}},{"residual":4988,"sv_id":{"constellation":24,"sat_id":58}},{"residual":27408,"sv_id":{"constellation":188,"sat_id":181}},{"residual":319,"sv_id":{"constellation":231,"sat_id":66}},{"residual":15987,"sv_id":{"constellation":252,"sat_id":64}},{"residual":22266,"sv_id":{"constellation":97,"sat_id":233}},{"residual":-19919,"sv_id":{"constellation":221,"sat_id":156}},{"residual":17350,"sv_id":{"constellation":73,"sat_id":32}},{"residual":14410,"sv_id":{"constellation":253,"sat_id":249}},{"residual":23671,"sv_id":{"constellation":165,"sat_id":38}},{"residual":-31905,"sv_id":{"constellation":44,"sat_id":99}},{"residual":14305,"sv_id":{"constellation":192,"sat_id":89}},{"residual":-12968,"sv_id":{"constellation":171,"sat_id":95}},{"residual":21479,"sv_id":{"constellation":116,"sat_id":21}},{"residual":28260,"sv_id":{"constellation":71,"sat_id":71}},{"residual":-11112,"sv_id":{"constellation":254,"sat_id":217}},{"residual":-25304,"sv_id":{"constellation":8,"sat_id":18}},{"residual":-4024,"sv_id":{"constellation":54,"sat_id":244}},{"residual":-15505,"sv_id":{"constellation":189,"sat_id":231}}]})), "stec_residuals"); + + is($json->encode($msg->tropo_delay_correction()), $json->encode($json->decode(q{{"hydro":16250,"wet":101}})), "tropo_delay_correction"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":20941,"header":{"iod_atmo":236,"num_msgs":62837,"seq_num":63555,"time":{"tow":2837573811,"wn":8940},"tropo_quality_indicator":230,"update_interval":233},"index":26598,"length":254,"msg_type":1520,"payload":"s/AhqewidfVD+Ons5uZnej9l551zosWSI2vebTQpVgztuEHMiZSrtwsAtMusNcRVunPLXKYeKg3IR2KJ26Bf2F/6Y8Rc1p/9w97pkuk/TBhqKP1BCbco17w7dUVhczw4AI3PqzahFz0AV+Z7VyS4/w6ju+Arl5doJzkFNjDgtYE8XKtybW0MF3YIQJ822CEUGESgJCbekb5cY2yf6PDj3f0PPhd5uah0BJN7SN934vKhzLTKiaY6GHwTtbwQa0LnPwFA/HM+6WH6VpzdMbIgScZD+f1KOCald1xjLF+DWcDhN1+rWM0VdOdTR0dkbtn+mNQSCCid9DZI8Oe9b8M=","preamble":85,"sender":7270,"stec_residuals":[{"residual":-23949,"sv_id":{"constellation":157,"sat_id":231}},{"residual":27427,"sv_id":{"constellation":146,"sat_id":197}},{"residual":10548,"sv_id":{"constellation":109,"sat_id":222}},{"residual":-18195,"sv_id":{"constellation":12,"sat_id":86}},{"residual":-27511,"sv_id":{"constellation":204,"sat_id":65}},{"residual":11,"sv_id":{"constellation":183,"sat_id":171}},{"residual":13740,"sv_id":{"constellation":203,"sat_id":180}},{"residual":29626,"sv_id":{"constellation":85,"sat_id":196}},{"residual":7846,"sv_id":{"constellation":92,"sat_id":203}},{"residual":18376,"sv_id":{"constellation":13,"sat_id":42}},{"residual":-24357,"sv_id":{"constellation":137,"sat_id":98}},{"residual":-1441,"sv_id":{"constellation":216,"sat_id":95}},{"residual":-10660,"sv_id":{"constellation":196,"sat_id":99}},{"residual":-8509,"sv_id":{"constellation":253,"sat_id":159}},{"residual":16361,"sv_id":{"constellation":146,"sat_id":233}},{"residual":10346,"sv_id":{"constellation":24,"sat_id":76}},{"residual":-18679,"sv_id":{"constellation":65,"sat_id":253}},{"residual":15292,"sv_id":{"constellation":215,"sat_id":40}},{"residual":29537,"sv_id":{"constellation":69,"sat_id":117}},{"residual":-29440,"sv_id":{"constellation":56,"sat_id":60}},{"residual":-24266,"sv_id":{"constellation":171,"sat_id":207}},{"residual":22272,"sv_id":{"constellation":61,"sat_id":23}},{"residual":9303,"sv_id":{"constellation":123,"sat_id":230}},{"residual":-23794,"sv_id":{"constellation":255,"sat_id":184}},{"residual":-26837,"sv_id":{"constellation":224,"sat_id":187}},{"residual":14631,"sv_id":{"constellation":104,"sat_id":151}},{"residual":-8144,"sv_id":{"constellation":54,"sat_id":5}},{"residual":23612,"sv_id":{"constellation":129,"sat_id":181}},{"residual":28013,"sv_id":{"constellation":114,"sat_id":171}},{"residual":2166,"sv_id":{"constellation":23,"sat_id":12}},{"residual":-10186,"sv_id":{"constellation":159,"sat_id":64}},{"residual":17432,"sv_id":{"constellation":20,"sat_id":33}},{"residual":-8666,"sv_id":{"constellation":36,"sat_id":160}},{"residual":25436,"sv_id":{"constellation":190,"sat_id":145}},{"residual":-3864,"sv_id":{"constellation":159,"sat_id":108}},{"residual":4093,"sv_id":{"constellation":221,"sat_id":227}},{"residual":-18055,"sv_id":{"constellation":23,"sat_id":62}},{"residual":-27900,"sv_id":{"constellation":116,"sat_id":168}},{"residual":30687,"sv_id":{"constellation":72,"sat_id":123}},{"residual":-13151,"sv_id":{"constellation":242,"sat_id":226}},{"residual":-22903,"sv_id":{"constellation":202,"sat_id":180}},{"residual":4988,"sv_id":{"constellation":24,"sat_id":58}},{"residual":27408,"sv_id":{"constellation":188,"sat_id":181}},{"residual":319,"sv_id":{"constellation":231,"sat_id":66}},{"residual":15987,"sv_id":{"constellation":252,"sat_id":64}},{"residual":22266,"sv_id":{"constellation":97,"sat_id":233}},{"residual":-19919,"sv_id":{"constellation":221,"sat_id":156}},{"residual":17350,"sv_id":{"constellation":73,"sat_id":32}},{"residual":14410,"sv_id":{"constellation":253,"sat_id":249}},{"residual":23671,"sv_id":{"constellation":165,"sat_id":38}},{"residual":-31905,"sv_id":{"constellation":44,"sat_id":99}},{"residual":14305,"sv_id":{"constellation":192,"sat_id":89}},{"residual":-12968,"sv_id":{"constellation":171,"sat_id":95}},{"residual":21479,"sv_id":{"constellation":116,"sat_id":21}},{"residual":28260,"sv_id":{"constellation":71,"sat_id":71}},{"residual":-11112,"sv_id":{"constellation":254,"sat_id":217}},{"residual":-25304,"sv_id":{"constellation":8,"sat_id":18}},{"residual":-4024,"sv_id":{"constellation":54,"sat_id":244}},{"residual":-15505,"sv_id":{"constellation":189,"sat_id":231}}],"tropo_delay_correction":{"hydro":16250,"wet":101}}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_gridded_correction_no_std_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClock.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClock.t new file mode 100644 index 0000000000..a19d6923f3 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClock.t @@ -0,0 +1,82 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrOrbitClock.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_orbit_clock_1() { + my $buf = decode_base64("Vd0FNeUyU9Bmz6Qdy9Ts/5jpzzdeNjqARBt1sG77PfR6Ml80kOgYCiV/o0KxaZz1Cvlr2hG6OEgOFg=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x160e, "crc"); + + is($msg->{'length'}, 50, "length"); + + is($msg->{'msg_type'}, 0x5dd, "msg_type"); + + is($msg->{'payload'}, "U9Bmz6Qdy9Ts/5jpzzdeNjqARBt1sG77PfR6Ml80kOgYCiV/o0KxaZz1Cvlr2hG6OEg=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xe535, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->along(), -1334502588, "along"); + + is($msg->c0(), -174298703, "c0"); + + is($msg->c1(), -630458102, "c1"); + + is($msg->c2(), 1211677201, "c2"); + + is($msg->cross(), -197264530, "cross"); + + is($msg->dot_along(), 169404560, "dot_along"); + + is($msg->dot_cross(), 1118011173, "dot_cross"); + + is($msg->dot_radial(), 878654074, "dot_radial"); + + is($msg->iod(), 936372632, "iod"); + + is($msg->iod_ssr(), 255, "iod_ssr"); + + is($msg->radial(), -2143668642, "radial"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":212,"sat":203}})), "sid"); + + is($json->encode($msg->time()), $json->encode($json->decode(q{{"tow":3479621715,"wn":7588}})), "time"); + + is($msg->update_interval(), 236, "update_interval"); + + is($json->encode($msg), $json->encode($json->decode(q{{"along":-1334502588,"c0":-174298703,"c1":-630458102,"c2":1211677201,"crc":5646,"cross":-197264530,"dot_along":169404560,"dot_cross":1118011173,"dot_radial":878654074,"iod":936372632,"iod_ssr":255,"length":50,"msg_type":1501,"payload":"U9Bmz6Qdy9Ts/5jpzzdeNjqARBt1sG77PfR6Ml80kOgYCiV/o0KxaZz1Cvlr2hG6OEg=","preamble":85,"radial":-2143668642,"sender":58677,"sid":{"code":212,"sat":203},"time":{"tow":3479621715,"wn":7588},"update_interval":236}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_orbit_clock_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClockDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClockDepA.t new file mode 100644 index 0000000000..53a3cf2417 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrOrbitClockDepA.t @@ -0,0 +1,82 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrOrbitClockDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_orbit_clock_dep_a_1() { + my $buf = decode_base64("VdwFIaYv4XIfvSseAR7C08GvoY/+OD/oB9hFAW6lfMS9G3RYBD0DlxKrky7GVfP14et7tdKd/A=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xfc9d, "crc"); + + is($msg->{'length'}, 47, "length"); + + is($msg->{'msg_type'}, 0x5dc, "msg_type"); + + is($msg->{'payload'}, "4XIfvSseAR7C08GvoY/+OD/oB9hFAW6lfMS9G3RYBD0DlxKrky7GVfP14et7tdI=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xa621, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->along(), 132661048, "along"); + + is($msg->c0(), -970026069, "c0"); + + is($msg->c1(), -503975083, "c1"); + + is($msg->c2(), -759858197, "c2"); + + is($msg->cross(), 1845577176, "cross"); + + is($msg->dot_along(), 72905755, "dot_along"); + + is($msg->dot_cross(), 311886653, "dot_cross"); + + is($msg->dot_radial(), -1111196507, "dot_radial"); + + is($msg->iod(), 193, "iod"); + + is($msg->iod_ssr(), 211, "iod_ssr"); + + is($msg->radial(), -24141393, "radial"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":30,"sat":1}})), "sid"); + + is($json->encode($msg->time()), $json->encode($json->decode(q{{"tow":3172954849,"wn":7723}})), "time"); + + is($msg->update_interval(), 194, "update_interval"); + + is($json->encode($msg), $json->encode($json->decode(q{{"along":132661048,"c0":-970026069,"c1":-503975083,"c2":-759858197,"crc":64669,"cross":1845577176,"dot_along":72905755,"dot_cross":311886653,"dot_radial":-1111196507,"iod":193,"iod_ssr":211,"length":47,"msg_type":1500,"payload":"4XIfvSseAR7C08GvoY/+OD/oB9hFAW6lfMS9G3RYBD0DlxKrky7GVfP14et7tdI=","preamble":85,"radial":-24141393,"sender":42529,"sid":{"code":30,"sat":1},"time":{"tow":3172954849,"wn":7723},"update_interval":194}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_orbit_clock_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrPhaseBiases.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrPhaseBiases.t new file mode 100644 index 0000000000..9f9186ac7a --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrPhaseBiases.t @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrPhaseBiases.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_phase_biases_1() { + my $buf = decode_base64("VeYF287/0ZqQDNWkqVKx5mLR+RYRHfr1wdse1LHPuyGSOsykQXIx+DQIoSz8pqjofIZWrfGuLI6bgY+4odMPJL3Qwt2YEMtXIryNaL1mnPwW+4gxvJ3e9TGEECKO5FWL3cXrYkprRiQm7/twvHz2jaSWaAfVLBX0wASPGCoVVIgHKnYtF66vgTapDtUCxWI8Dc9pZIFIiPCMgQlyrJeWEdJ/c5cD8v7XDgUifgLXQSawF9LJYSTPXOAadJvTpS9mJkPHN3UkqSEB5sm3FSo+k62tm2KS56eKUqd/5QECf+3PdFpznwMqQpH6yQf7AkvmGtW1OEBhWP8GkxBZyxtE8+Y38qep2/A="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf0db, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0x5e6, "msg_type"); + + is($msg->{'payload'}, "0ZqQDNWkqVKx5mLR+RYRHfr1wdse1LHPuyGSOsykQXIx+DQIoSz8pqjofIZWrfGuLI6bgY+4odMPJL3Qwt2YEMtXIryNaL1mnPwW+4gxvJ3e9TGEECKO5FWL3cXrYkprRiQm7/twvHz2jaSWaAfVLBX0wASPGCoVVIgHKnYtF66vgTapDtUCxWI8Dc9pZIFIiPCMgQlyrJeWEdJ/c5cD8v7XDgUifgLXQSawF9LJYSTPXOAadJvTpS9mJkPHN3UkqSEB5sm3FSo+k62tm2KS56eKUqd/5QECf+3PdFpznwMqQpH6yQf7AkvmGtW1OEBhWP8GkxBZyxtE8+Y38qep", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xcedb, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->biases()), $json->encode($json->decode(q{[{"bias":-1311498533,"code":29,"discontinuity_counter":193,"integer_indicator":250,"widelane_integer_indicator":245},{"bias":1101319226,"code":207,"discontinuity_counter":146,"integer_indicator":187,"widelane_integer_indicator":33},{"bias":-64184056,"code":114,"discontinuity_counter":52,"integer_indicator":49,"widelane_integer_indicator":248},{"bias":-240298362,"code":166,"discontinuity_counter":124,"integer_indicator":168,"widelane_integer_indicator":232},{"bias":-1581740159,"code":174,"discontinuity_counter":155,"integer_indicator":44,"widelane_integer_indicator":142},{"bias":-1730297136,"code":211,"discontinuity_counter":189,"integer_indicator":15,"widelane_integer_indicator":36},{"bias":-1117221444,"code":16,"discontinuity_counter":34,"integer_indicator":203,"widelane_integer_indicator":87},{"bias":-1137604357,"code":102,"discontinuity_counter":22,"integer_indicator":156,"widelane_integer_indicator":252},{"bias":-1910370172,"code":157,"discontinuity_counter":49,"integer_indicator":222,"widelane_integer_indicator":245},{"bias":1247996869,"code":228,"discontinuity_counter":221,"integer_indicator":85,"widelane_integer_indicator":139},{"bias":-1133446161,"code":107,"discontinuity_counter":38,"integer_indicator":70,"widelane_integer_indicator":36},{"bias":-720934762,"code":124,"discontinuity_counter":164,"integer_indicator":246,"widelane_integer_indicator":141},{"bias":706252548,"code":44,"discontinuity_counter":192,"integer_indicator":21,"widelane_integer_indicator":244},{"bias":388855338,"code":21,"discontinuity_counter":7,"integer_indicator":84,"widelane_integer_indicator":136},{"bias":47517353,"code":174,"discontinuity_counter":54,"integer_indicator":175,"widelane_integer_indicator":129},{"bias":-2124125745,"code":197,"discontinuity_counter":13,"integer_indicator":98,"widelane_integer_indicator":60},{"bias":-1401812607,"code":72,"discontinuity_counter":140,"integer_indicator":136,"widelane_integer_indicator":240},{"bias":60257151,"code":151,"discontinuity_counter":210,"integer_indicator":150,"widelane_integer_indicator":17},{"bias":41820677,"code":242,"discontinuity_counter":14,"integer_indicator":254,"widelane_integer_indicator":215},{"bias":1640616471,"code":215,"discontinuity_counter":176,"integer_indicator":65,"widelane_integer_indicator":38},{"bias":-744786918,"code":36,"discontinuity_counter":224,"integer_indicator":207,"widelane_integer_indicator":92},{"bias":1966589763,"code":165,"discontinuity_counter":38,"integer_indicator":47,"widelane_integer_indicator":102},{"bias":364366310,"code":36,"discontinuity_counter":1,"integer_indicator":169,"widelane_integer_indicator":33},{"bias":-1839031379,"code":42,"discontinuity_counter":173,"integer_indicator":62,"widelane_integer_indicator":147},{"bias":31817639,"code":231,"discontinuity_counter":82,"integer_indicator":167,"widelane_integer_indicator":138},{"bias":-1619830156,"code":2,"discontinuity_counter":207,"integer_indicator":127,"widelane_integer_indicator":237},{"bias":-83375622,"code":3,"discontinuity_counter":145,"integer_indicator":42,"widelane_integer_indicator":66},{"bias":1077458389,"code":2,"discontinuity_counter":26,"integer_indicator":75,"widelane_integer_indicator":230},{"bias":-883355501,"code":97,"discontinuity_counter":6,"integer_indicator":88,"widelane_integer_indicator":255},{"bias":-1448611273,"code":27,"discontinuity_counter":230,"integer_indicator":68,"widelane_integer_indicator":243}]})), "biases"); + + is($msg->dispersive_bias(), 98, "dispersive_bias"); + + is($msg->iod_ssr(), 230, "iod_ssr"); + + is($msg->mw_consistency(), 209, "mw_consistency"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":82,"sat":169}})), "sid"); + + is($json->encode($msg->time()), $json->encode($json->decode(q{{"tow":210803409,"wn":42197}})), "time"); + + is($msg->update_interval(), 177, "update_interval"); + + is($msg->yaw(), 5881, "yaw"); + + is($msg->yaw_rate(), 17, "yaw_rate"); + + is($json->encode($msg), $json->encode($json->decode(q{{"biases":[{"bias":-1311498533,"code":29,"discontinuity_counter":193,"integer_indicator":250,"widelane_integer_indicator":245},{"bias":1101319226,"code":207,"discontinuity_counter":146,"integer_indicator":187,"widelane_integer_indicator":33},{"bias":-64184056,"code":114,"discontinuity_counter":52,"integer_indicator":49,"widelane_integer_indicator":248},{"bias":-240298362,"code":166,"discontinuity_counter":124,"integer_indicator":168,"widelane_integer_indicator":232},{"bias":-1581740159,"code":174,"discontinuity_counter":155,"integer_indicator":44,"widelane_integer_indicator":142},{"bias":-1730297136,"code":211,"discontinuity_counter":189,"integer_indicator":15,"widelane_integer_indicator":36},{"bias":-1117221444,"code":16,"discontinuity_counter":34,"integer_indicator":203,"widelane_integer_indicator":87},{"bias":-1137604357,"code":102,"discontinuity_counter":22,"integer_indicator":156,"widelane_integer_indicator":252},{"bias":-1910370172,"code":157,"discontinuity_counter":49,"integer_indicator":222,"widelane_integer_indicator":245},{"bias":1247996869,"code":228,"discontinuity_counter":221,"integer_indicator":85,"widelane_integer_indicator":139},{"bias":-1133446161,"code":107,"discontinuity_counter":38,"integer_indicator":70,"widelane_integer_indicator":36},{"bias":-720934762,"code":124,"discontinuity_counter":164,"integer_indicator":246,"widelane_integer_indicator":141},{"bias":706252548,"code":44,"discontinuity_counter":192,"integer_indicator":21,"widelane_integer_indicator":244},{"bias":388855338,"code":21,"discontinuity_counter":7,"integer_indicator":84,"widelane_integer_indicator":136},{"bias":47517353,"code":174,"discontinuity_counter":54,"integer_indicator":175,"widelane_integer_indicator":129},{"bias":-2124125745,"code":197,"discontinuity_counter":13,"integer_indicator":98,"widelane_integer_indicator":60},{"bias":-1401812607,"code":72,"discontinuity_counter":140,"integer_indicator":136,"widelane_integer_indicator":240},{"bias":60257151,"code":151,"discontinuity_counter":210,"integer_indicator":150,"widelane_integer_indicator":17},{"bias":41820677,"code":242,"discontinuity_counter":14,"integer_indicator":254,"widelane_integer_indicator":215},{"bias":1640616471,"code":215,"discontinuity_counter":176,"integer_indicator":65,"widelane_integer_indicator":38},{"bias":-744786918,"code":36,"discontinuity_counter":224,"integer_indicator":207,"widelane_integer_indicator":92},{"bias":1966589763,"code":165,"discontinuity_counter":38,"integer_indicator":47,"widelane_integer_indicator":102},{"bias":364366310,"code":36,"discontinuity_counter":1,"integer_indicator":169,"widelane_integer_indicator":33},{"bias":-1839031379,"code":42,"discontinuity_counter":173,"integer_indicator":62,"widelane_integer_indicator":147},{"bias":31817639,"code":231,"discontinuity_counter":82,"integer_indicator":167,"widelane_integer_indicator":138},{"bias":-1619830156,"code":2,"discontinuity_counter":207,"integer_indicator":127,"widelane_integer_indicator":237},{"bias":-83375622,"code":3,"discontinuity_counter":145,"integer_indicator":42,"widelane_integer_indicator":66},{"bias":1077458389,"code":2,"discontinuity_counter":26,"integer_indicator":75,"widelane_integer_indicator":230},{"bias":-883355501,"code":97,"discontinuity_counter":6,"integer_indicator":88,"widelane_integer_indicator":255},{"bias":-1448611273,"code":27,"discontinuity_counter":230,"integer_indicator":68,"widelane_integer_indicator":243}],"crc":61659,"dispersive_bias":98,"iod_ssr":230,"length":255,"msg_type":1510,"mw_consistency":209,"payload":"0ZqQDNWkqVKx5mLR+RYRHfr1wdse1LHPuyGSOsykQXIx+DQIoSz8pqjofIZWrfGuLI6bgY+4odMPJL3Qwt2YEMtXIryNaL1mnPwW+4gxvJ3e9TGEECKO5FWL3cXrYkprRiQm7/twvHz2jaSWaAfVLBX0wASPGCoVVIgHKnYtF66vgTapDtUCxWI8Dc9pZIFIiPCMgQlyrJeWEdJ/c5cD8v7XDgUifgLXQSawF9LJYSTPXOAadJvTpS9mJkPHN3UkqSEB5sm3FSo+k62tm2KS56eKUqd/5QECf+3PdFpznwMqQpH6yQf7AkvmGtW1OEBhWP8GkxBZyxtE8+Y38qep","preamble":85,"sender":52955,"sid":{"code":82,"sat":169},"time":{"tow":210803409,"wn":42197},"update_interval":177,"yaw":5881,"yaw_rate":17}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_phase_biases_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.t new file mode 100644 index 0000000000..69c553369a --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrSatelliteApcDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_satellite_apc_dep_a_1() { + my $buf = decode_base64("VQQGOBPgy6nwTgTVq/7W1AQIIR9QFQRp4SeLfJUwD9bFjSAhh5aUezGHYSdaFKnvL5mvI5GRe8ICZkqVX6vu+Qftqn1qnlO8tcIbVOKOe03Z+EPXgXKKGfAKOEw9odgWta4hDfzs5sSA1+/qs9ws1DksrTEkifjrYXCdixpzwB9Vf+RR/Nv5bpMIodfUtBlTkPcMG8etShcE72ff3Itbf9ZWMMvkYy1Tnwv6h6oq2cfpKqpOzikrUfdjxpAChALg3JQ6VYrSyJ4HnkMuyIR28Q0lPmv9vohCCVSbVrQpxCh3ZfzfkJkyDQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x0d32, "crc"); + + is($msg->{'length'}, 224, "length"); + + is($msg->{'msg_type'}, 0x604, "msg_type"); + + is($msg->{'payload'}, "y6nwTgTVq/7W1AQIIR9QFQRp4SeLfJUwD9bFjSAhh5aUezGHYSdaFKnvL5mvI5GRe8ICZkqVX6vu+Qftqn1qnlO8tcIbVOKOe03Z+EPXgXKKGfAKOEw9odgWta4hDfzs5sSA1+/qs9ws1DksrTEkifjrYXCdixpzwB9Vf+RR/Nv5bpMIodfUtBlTkPcMG8etShcE72ff3Itbf9ZWMMvkYy1Tnwv6h6oq2cfpKqpOzikrUfdjxpAChALg3JQ6VYrSyJ4HnkMuyIR28Q0lPmv9vohCCVSbVrQpxCh3ZfzfkJk=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x1338, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->apc()), $json->encode($json->decode(q{[{"pco":[-21547,-10498,1236],"pcv":[8,33,31,80,21,4,105,-31,39,-117,124,-107,48,15,-42,-59,-115,32,33,-121,-106],"sat_info":240,"sid":{"code":169,"sat":203},"svn":1102},{"pco":[23079,-22252,12271],"pcv":[-103,-81,35,-111,-111,123,-62,2,102,74,-107,95,-85,-18,-7,7,-19,-86,125,106,-98],"sat_info":49,"sid":{"code":123,"sat":148},"svn":24967},{"pco":[-7596,31630,-9907],"pcv":[-8,67,-41,-127,114,-118,25,-16,10,56,76,61,-95,-40,22,-75,-82,33,13,-4,-20],"sat_info":181,"sid":{"code":188,"sat":83},"svn":7106},{"pco":[-19478,11484,14804],"pcv":[44,-83,49,36,-119,-8,-21,97,112,-99,-117,26,115,-64,31,85,127,-28,81,-4,-37],"sat_info":128,"sid":{"code":196,"sat":230},"svn":61399},{"pco":[-11049,6580,-28589],"pcv":[-9,12,27,-57,-83,74,23,4,-17,103,-33,-36,-117,91,127,-42,86,48,-53,-28,99],"sat_info":147,"sid":{"code":110,"sat":249},"svn":41224},{"pco":[-21881,-9942,-5689],"pcv":[42,-86,78,-50,41,43,81,-9,99,-58,-112,2,-124,2,-32,-36,-108,58,85,-118,-46],"sat_info":159,"sid":{"code":83,"sat":45},"svn":64011},{"pco":[-14290,30340,3569],"pcv":[37,62,107,-3,-66,-120,66,9,84,-101,86,-76,41,-60,40,119,101,-4,-33,-112,-103],"sat_info":7,"sid":{"code":158,"sat":200},"svn":17310}]})), "apc"); + + is($json->encode($msg), $json->encode($json->decode(q{{"apc":[{"pco":[-21547,-10498,1236],"pcv":[8,33,31,80,21,4,105,-31,39,-117,124,-107,48,15,-42,-59,-115,32,33,-121,-106],"sat_info":240,"sid":{"code":169,"sat":203},"svn":1102},{"pco":[23079,-22252,12271],"pcv":[-103,-81,35,-111,-111,123,-62,2,102,74,-107,95,-85,-18,-7,7,-19,-86,125,106,-98],"sat_info":49,"sid":{"code":123,"sat":148},"svn":24967},{"pco":[-7596,31630,-9907],"pcv":[-8,67,-41,-127,114,-118,25,-16,10,56,76,61,-95,-40,22,-75,-82,33,13,-4,-20],"sat_info":181,"sid":{"code":188,"sat":83},"svn":7106},{"pco":[-19478,11484,14804],"pcv":[44,-83,49,36,-119,-8,-21,97,112,-99,-117,26,115,-64,31,85,127,-28,81,-4,-37],"sat_info":128,"sid":{"code":196,"sat":230},"svn":61399},{"pco":[-11049,6580,-28589],"pcv":[-9,12,27,-57,-83,74,23,4,-17,103,-33,-36,-117,91,127,-42,86,48,-53,-28,99],"sat_info":147,"sid":{"code":110,"sat":249},"svn":41224},{"pco":[-21881,-9942,-5689],"pcv":[42,-86,78,-50,41,43,81,-9,99,-58,-112,2,-124,2,-32,-36,-108,58,85,-118,-46],"sat_info":159,"sid":{"code":83,"sat":45},"svn":64011},{"pco":[-14290,30340,3569],"pcv":[37,62,107,-3,-66,-120,66,9,84,-101,86,-76,41,-60,40,119,101,-4,-33,-112,-103],"sat_info":7,"sid":{"code":158,"sat":200},"svn":17310}],"crc":3378,"length":224,"msg_type":1540,"payload":"y6nwTgTVq/7W1AQIIR9QFQRp4SeLfJUwD9bFjSAhh5aUezGHYSdaFKnvL5mvI5GRe8ICZkqVX6vu+Qftqn1qnlO8tcIbVOKOe03Z+EPXgXKKGfAKOEw9odgWta4hDfzs5sSA1+/qs9ws1DksrTEkifjrYXCdixpzwB9Vf+RR/Nv5bpMIodfUtBlTkPcMG8etShcE72ff3Itbf9ZWMMvkYy1Tnwv6h6oq2cfpKqpOzikrUfdjxpAChALg3JQ6VYrSyJ4HnkMuyIR28Q0lPmv9vohCCVSbVrQpxCh3ZfzfkJk=","preamble":85,"sender":4920}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_satellite_apc_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDep.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDep.t new file mode 100644 index 0000000000..6ef70fc849 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDep.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrStecCorrectionDep.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_stec_correction_dep_1() { + my $buf = decode_base64("VfsFzJf1nuRydTKenCp3nJ1wLzyEKEZX61OxxgMOCEYMLDW1Wq73ljqs97N3sH0EseVxDk2ZuRc13ruS+lvU1w5r+l5rIVvqANWLX7MyFUquqT1WW44zbAkm4ZJlSYs4dVIl1WzNXRITwyHKV86yfbx3OEWWlkwDgxJJ0EjoCPrLsqqj/FYx97KmOB8Kd9Xx1KQBoioSfKl5nho4F459KHhDLX7rbhcM8VhF7/w5XSzJ2K3yshEF36nAA01rApDpDlgg0QERe5spt/SeUjVnDsq5I7UVdv76MrgyHy04o7F+2U+r7+287nDJdo0So2cjPxVSgRJ1Vb5P0tfjsQ=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xb1e3, "crc"); + + is($msg->{'length'}, 245, "length"); + + is($msg->{'msg_type'}, 0x5fb, "msg_type"); + + is($msg->{'payload'}, "nuRydTKenCp3nJ1wLzyEKEZX61OxxgMOCEYMLDW1Wq73ljqs97N3sH0EseVxDk2ZuRc13ruS+lvU1w5r+l5rIVvqANWLX7MyFUquqT1WW44zbAkm4ZJlSYs4dVIl1WzNXRITwyHKV86yfbx3OEWWlkwDgxJJ0EjoCPrLsqqj/FYx97KmOB8Kd9Xx1KQBoioSfKl5nho4F459KHhDLX7rbhcM8VhF7/w5XSzJ2K3yshEF36nAA01rApDpDlgg0QERe5spt/SeUjVnDsq5I7UVdv76MrgyHy04o7F+2U+r7+287nDJdo0So2cjPxVSgRJ1Vb5P0tc=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x97cc, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->header()), $json->encode($json->decode(q{{"iod_atmo":60,"num_msgs":157,"seq_num":112,"tile_id":30066,"tile_set_id":58526,"time":{"tow":714907186,"wn":40055},"update_interval":47}})), "header"); + + is($json->encode($msg->stec_sat_list()), $json->encode($json->decode(q{[{"stec_coeff":[-5289,-20141,966,2062],"stec_quality_indicator":70,"sv_id":{"constellation":40,"sat_id":132}},{"stec_coeff":[-19147,-20902,-26889,-21446],"stec_quality_indicator":44,"sv_id":{"constellation":12,"sat_id":70}},{"stec_coeff":[32176,-20220,29157,19726],"stec_quality_indicator":119,"sv_id":{"constellation":179,"sat_id":247}},{"stec_coeff":[-8651,-27973,23546,-10284],"stec_quality_indicator":23,"sv_id":{"constellation":185,"sat_id":153}},{"stec_coeff":[27486,23329,234,-29739],"stec_quality_indicator":250,"sv_id":{"constellation":107,"sat_id":14}},{"stec_coeff":[18965,-22098,22077,-29093],"stec_quality_indicator":50,"sv_id":{"constellation":179,"sat_id":95}},{"stec_coeff":[-7898,26002,-29879,30008],"stec_quality_indicator":9,"sv_id":{"constellation":108,"sat_id":51}},{"stec_coeff":[-12948,4701,-15597,-13791],"stec_quality_indicator":213,"sv_id":{"constellation":37,"sat_id":82}},{"stec_coeff":[-17283,14455,-27067,19606],"stec_quality_indicator":178,"sv_id":{"constellation":206,"sat_id":87}},{"stec_coeff":[-12215,-6072,-1528,-19765],"stec_quality_indicator":18,"sv_id":{"constellation":131,"sat_id":3}},{"stec_coeff":[12630,-19721,14502,2591],"stec_quality_indicator":252,"sv_id":{"constellation":163,"sat_id":170}},{"stec_coeff":[-23340,-24063,4650,-22148],"stec_quality_indicator":241,"sv_id":{"constellation":213,"sat_id":119}},{"stec_coeff":[5944,32142,30760,11587],"stec_quality_indicator":26,"sv_id":{"constellation":158,"sat_id":121}},{"stec_coeff":[3095,22769,-4283,14844],"stec_quality_indicator":110,"sv_id":{"constellation":235,"sat_id":126}},{"stec_coeff":[-21032,-19726,1297,-22049],"stec_quality_indicator":201,"sv_id":{"constellation":44,"sat_id":93}},{"stec_coeff":[619,-5744,22542,-12000],"stec_quality_indicator":77,"sv_id":{"constellation":3,"sat_id":192}},{"stec_coeff":[10651,-2889,21150,26421],"stec_quality_indicator":123,"sv_id":{"constellation":17,"sat_id":1}},{"stec_coeff":[-19165,30229,-1282,-18382],"stec_quality_indicator":185,"sv_id":{"constellation":202,"sat_id":14}},{"stec_coeff":[-23752,32433,20441,-4181],"stec_quality_indicator":45,"sv_id":{"constellation":31,"sat_id":50}},{"stec_coeff":[-13968,-29322,-23790,9063],"stec_quality_indicator":238,"sv_id":{"constellation":188,"sat_id":237}},{"stec_coeff":[4737,21877,20414,-10286],"stec_quality_indicator":82,"sv_id":{"constellation":21,"sat_id":63}}]})), "stec_sat_list"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":45539,"header":{"iod_atmo":60,"num_msgs":157,"seq_num":112,"tile_id":30066,"tile_set_id":58526,"time":{"tow":714907186,"wn":40055},"update_interval":47},"length":245,"msg_type":1531,"payload":"nuRydTKenCp3nJ1wLzyEKEZX61OxxgMOCEYMLDW1Wq73ljqs97N3sH0EseVxDk2ZuRc13ruS+lvU1w5r+l5rIVvqANWLX7MyFUquqT1WW44zbAkm4ZJlSYs4dVIl1WzNXRITwyHKV86yfbx3OEWWlkwDgxJJ0EjoCPrLsqqj/FYx97KmOB8Kd9Xx1KQBoioSfKl5nho4F459KHhDLX7rbhcM8VhF7/w5XSzJ2K3yshEF36nAA01rApDpDlgg0QERe5spt/SeUjVnDsq5I7UVdv76MrgyHy04o7F+2U+r7+287nDJdo0So2cjPxVSgRJ1Vb5P0tc=","preamble":85,"sender":38860,"stec_sat_list":[{"stec_coeff":[-5289,-20141,966,2062],"stec_quality_indicator":70,"sv_id":{"constellation":40,"sat_id":132}},{"stec_coeff":[-19147,-20902,-26889,-21446],"stec_quality_indicator":44,"sv_id":{"constellation":12,"sat_id":70}},{"stec_coeff":[32176,-20220,29157,19726],"stec_quality_indicator":119,"sv_id":{"constellation":179,"sat_id":247}},{"stec_coeff":[-8651,-27973,23546,-10284],"stec_quality_indicator":23,"sv_id":{"constellation":185,"sat_id":153}},{"stec_coeff":[27486,23329,234,-29739],"stec_quality_indicator":250,"sv_id":{"constellation":107,"sat_id":14}},{"stec_coeff":[18965,-22098,22077,-29093],"stec_quality_indicator":50,"sv_id":{"constellation":179,"sat_id":95}},{"stec_coeff":[-7898,26002,-29879,30008],"stec_quality_indicator":9,"sv_id":{"constellation":108,"sat_id":51}},{"stec_coeff":[-12948,4701,-15597,-13791],"stec_quality_indicator":213,"sv_id":{"constellation":37,"sat_id":82}},{"stec_coeff":[-17283,14455,-27067,19606],"stec_quality_indicator":178,"sv_id":{"constellation":206,"sat_id":87}},{"stec_coeff":[-12215,-6072,-1528,-19765],"stec_quality_indicator":18,"sv_id":{"constellation":131,"sat_id":3}},{"stec_coeff":[12630,-19721,14502,2591],"stec_quality_indicator":252,"sv_id":{"constellation":163,"sat_id":170}},{"stec_coeff":[-23340,-24063,4650,-22148],"stec_quality_indicator":241,"sv_id":{"constellation":213,"sat_id":119}},{"stec_coeff":[5944,32142,30760,11587],"stec_quality_indicator":26,"sv_id":{"constellation":158,"sat_id":121}},{"stec_coeff":[3095,22769,-4283,14844],"stec_quality_indicator":110,"sv_id":{"constellation":235,"sat_id":126}},{"stec_coeff":[-21032,-19726,1297,-22049],"stec_quality_indicator":201,"sv_id":{"constellation":44,"sat_id":93}},{"stec_coeff":[619,-5744,22542,-12000],"stec_quality_indicator":77,"sv_id":{"constellation":3,"sat_id":192}},{"stec_coeff":[10651,-2889,21150,26421],"stec_quality_indicator":123,"sv_id":{"constellation":17,"sat_id":1}},{"stec_coeff":[-19165,30229,-1282,-18382],"stec_quality_indicator":185,"sv_id":{"constellation":202,"sat_id":14}},{"stec_coeff":[-23752,32433,20441,-4181],"stec_quality_indicator":45,"sv_id":{"constellation":31,"sat_id":50}},{"stec_coeff":[-13968,-29322,-23790,9063],"stec_quality_indicator":238,"sv_id":{"constellation":188,"sat_id":237}},{"stec_coeff":[4737,21877,20414,-10286],"stec_quality_indicator":82,"sv_id":{"constellation":21,"sat_id":63}}]}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_stec_correction_dep_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.t new file mode 100644 index 0000000000..55b20922dd --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrStecCorrectionDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_stec_correction_dep_a_1() { + my $buf = decode_base64("VesFJwf8RlHE6Lkrk3snBH4Tb2H4gtnZajoMQearUV9WECdU5NDJUdtjyz22Qn3LA8EsZNx9PBVd2veez12Bhg7RMA7XmZSTSOG07M3JIQP2zBMDYgTCv/ZM2x+/cU+xD/shE2A2OpLSZPlIFaHTxhXub2sk4+HVA0fzP0HsXE0AqQ+2BfC0CXpW6AZnaP69UW4CMcpU2DcytQV7UDH04Lx9pOY4QnyoO4tqdjO72L+eTVw6/YSWpQmavdo90QFStcQXNbZwwM6nnfQjAb3ZPVhhyclK+9kOaLg2NEruCoEWsuJtWJ0exK8aTCJ03JroDLP0D5vEykhGcwrWcif1HO1EiJs="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x9b88, "crc"); + + is($msg->{'length'}, 252, "length"); + + is($msg->{'msg_type'}, 0x5eb, "msg_type"); + + is($msg->{'payload'}, "RlHE6Lkrk3snBH4Tb2H4gtnZajoMQearUV9WECdU5NDJUdtjyz22Qn3LA8EsZNx9PBVd2veez12Bhg7RMA7XmZSTSOG07M3JIQP2zBMDYgTCv/ZM2x+/cU+xD/shE2A2OpLSZPlIFaHTxhXub2sk4+HVA0fzP0HsXE0AqQ+2BfC0CXpW6AZnaP69UW4CMcpU2DcytQV7UDH04Lx9pOY4QnyoO4tqdjO72L+eTVw6/YSWpQmavdo90QFStcQXNbZwwM6nnfQjAb3ZPVhhyclK+9kOaLg2NEruCoEWsuJtWJ0exK8aTCJ03JroDLP0D5vEykhGcwrWcif1HO1E", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x0727, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->header()), $json->encode($json->decode(q{{"iod_atmo":4,"num_msgs":147,"seq_num":123,"time":{"tow":3905179974,"wn":11193},"update_interval":39}})), "header"); + + is($json->encode($msg->stec_sat_list()), $json->encode($json->decode(q{[{"stec_coeff":[-1951,-9854,27353,3130],"stec_quality_indicator":111,"sv_id":{"constellation":19,"sat_id":126}},{"stec_coeff":[24401,4182,21543,-12060],"stec_quality_indicator":171,"sv_id":{"constellation":230,"sat_id":65}},{"stec_coeff":[-13469,-18883,32066,971],"stec_quality_indicator":219,"sv_id":{"constellation":81,"sat_id":201}},{"stec_coeff":[32220,5436,-9635,-24841],"stec_quality_indicator":100,"sv_id":{"constellation":44,"sat_id":193}},{"stec_coeff":[3718,12497,-10482,-27495],"stec_quality_indicator":129,"sv_id":{"constellation":93,"sat_id":207}},{"stec_coeff":[-4940,-13875,801,-13066],"stec_quality_indicator":225,"sv_id":{"constellation":72,"sat_id":147}},{"stec_coeff":[-15868,-2369,-9396,-16609],"stec_quality_indicator":98,"sv_id":{"constellation":3,"sat_id":19}},{"stec_coeff":[-1265,4897,13920,-28102],"stec_quality_indicator":177,"sv_id":{"constellation":79,"sat_id":113}},{"stec_coeff":[5448,-11359,5574,28654],"stec_quality_indicator":249,"sv_id":{"constellation":100,"sat_id":210}},{"stec_coeff":[-10783,18179,16371,-5055],"stec_quality_indicator":227,"sv_id":{"constellation":36,"sat_id":107}},{"stec_coeff":[4009,1462,-19216,31241],"stec_quality_indicator":0,"sv_id":{"constellation":77,"sat_id":92}},{"stec_coeff":[26727,-16898,28241,12546],"stec_quality_indicator":6,"sv_id":{"constellation":232,"sat_id":86}},{"stec_coeff":[12855,1461,20603,-3023],"stec_quality_indicator":216,"sv_id":{"constellation":84,"sat_id":202}},{"stec_coeff":[-6492,16952,-22404,-29893],"stec_quality_indicator":125,"sv_id":{"constellation":188,"sat_id":224}},{"stec_coeff":[-10053,-24897,23629,-710],"stec_quality_indicator":51,"sv_id":{"constellation":118,"sat_id":106}},{"stec_coeff":[-26103,-9539,-11971,20993],"stec_quality_indicator":165,"sv_id":{"constellation":150,"sat_id":132}},{"stec_coeff":[-18891,-16272,-22578,-2915],"stec_quality_indicator":23,"sv_id":{"constellation":196,"sat_id":181}},{"stec_coeff":[15833,24920,-13879,-1206],"stec_quality_indicator":189,"sv_id":{"constellation":1,"sat_id":35}},{"stec_coeff":[14008,18996,2798,5761],"stec_quality_indicator":104,"sv_id":{"constellation":14,"sat_id":217}},{"stec_coeff":[-25256,-15330,6831,8780],"stec_quality_indicator":109,"sv_id":{"constellation":226,"sat_id":178}},{"stec_coeff":[3304,-2893,-25841,-13628],"stec_quality_indicator":154,"sv_id":{"constellation":220,"sat_id":116}},{"stec_coeff":[-10742,10098,7413,17645],"stec_quality_indicator":115,"sv_id":{"constellation":70,"sat_id":72}}]})), "stec_sat_list"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":39816,"header":{"iod_atmo":4,"num_msgs":147,"seq_num":123,"time":{"tow":3905179974,"wn":11193},"update_interval":39},"length":252,"msg_type":1515,"payload":"RlHE6Lkrk3snBH4Tb2H4gtnZajoMQearUV9WECdU5NDJUdtjyz22Qn3LA8EsZNx9PBVd2veez12Bhg7RMA7XmZSTSOG07M3JIQP2zBMDYgTCv/ZM2x+/cU+xD/shE2A2OpLSZPlIFaHTxhXub2sk4+HVA0fzP0HsXE0AqQ+2BfC0CXpW6AZnaP69UW4CMcpU2DcytQV7UDH04Lx9pOY4QnyoO4tqdjO72L+eTVw6/YSWpQmavdo90QFStcQXNbZwwM6nnfQjAb3ZPVhhyclK+9kOaLg2NEruCoEWsuJtWJ0exK8aTCJ03JroDLP0D5vEykhGcwrWcif1HO1E","preamble":85,"sender":1831,"stec_sat_list":[{"stec_coeff":[-1951,-9854,27353,3130],"stec_quality_indicator":111,"sv_id":{"constellation":19,"sat_id":126}},{"stec_coeff":[24401,4182,21543,-12060],"stec_quality_indicator":171,"sv_id":{"constellation":230,"sat_id":65}},{"stec_coeff":[-13469,-18883,32066,971],"stec_quality_indicator":219,"sv_id":{"constellation":81,"sat_id":201}},{"stec_coeff":[32220,5436,-9635,-24841],"stec_quality_indicator":100,"sv_id":{"constellation":44,"sat_id":193}},{"stec_coeff":[3718,12497,-10482,-27495],"stec_quality_indicator":129,"sv_id":{"constellation":93,"sat_id":207}},{"stec_coeff":[-4940,-13875,801,-13066],"stec_quality_indicator":225,"sv_id":{"constellation":72,"sat_id":147}},{"stec_coeff":[-15868,-2369,-9396,-16609],"stec_quality_indicator":98,"sv_id":{"constellation":3,"sat_id":19}},{"stec_coeff":[-1265,4897,13920,-28102],"stec_quality_indicator":177,"sv_id":{"constellation":79,"sat_id":113}},{"stec_coeff":[5448,-11359,5574,28654],"stec_quality_indicator":249,"sv_id":{"constellation":100,"sat_id":210}},{"stec_coeff":[-10783,18179,16371,-5055],"stec_quality_indicator":227,"sv_id":{"constellation":36,"sat_id":107}},{"stec_coeff":[4009,1462,-19216,31241],"stec_quality_indicator":0,"sv_id":{"constellation":77,"sat_id":92}},{"stec_coeff":[26727,-16898,28241,12546],"stec_quality_indicator":6,"sv_id":{"constellation":232,"sat_id":86}},{"stec_coeff":[12855,1461,20603,-3023],"stec_quality_indicator":216,"sv_id":{"constellation":84,"sat_id":202}},{"stec_coeff":[-6492,16952,-22404,-29893],"stec_quality_indicator":125,"sv_id":{"constellation":188,"sat_id":224}},{"stec_coeff":[-10053,-24897,23629,-710],"stec_quality_indicator":51,"sv_id":{"constellation":118,"sat_id":106}},{"stec_coeff":[-26103,-9539,-11971,20993],"stec_quality_indicator":165,"sv_id":{"constellation":150,"sat_id":132}},{"stec_coeff":[-18891,-16272,-22578,-2915],"stec_quality_indicator":23,"sv_id":{"constellation":196,"sat_id":181}},{"stec_coeff":[15833,24920,-13879,-1206],"stec_quality_indicator":189,"sv_id":{"constellation":1,"sat_id":35}},{"stec_coeff":[14008,18996,2798,5761],"stec_quality_indicator":104,"sv_id":{"constellation":14,"sat_id":217}},{"stec_coeff":[-25256,-15330,6831,8780],"stec_quality_indicator":109,"sv_id":{"constellation":226,"sat_id":178}},{"stec_coeff":[3304,-2893,-25841,-13628],"stec_quality_indicator":154,"sv_id":{"constellation":220,"sat_id":116}},{"stec_coeff":[-10742,10098,7413,17645],"stec_quality_indicator":115,"sv_id":{"constellation":70,"sat_id":72}}]}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_stec_correction_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.t new file mode 100644 index 0000000000..a03a831d6f --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.t @@ -0,0 +1,72 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrTileDefinitionDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_ssr_msg_ssr_tile_definition_dep_a_1() { + my $buf = decode_base64("VfYFyIUYOb6y9wi5CbWi8EET/48Vv+/NqwAAAAAAQZo="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x9a41, "crc"); + + is($msg->{'length'}, 24, "length"); + + is($msg->{'msg_type'}, 0x5f6, "msg_type"); + + is($msg->{'payload'}, "Ob6y9wi5CbWi8EET/48Vv+/NqwAAAAAA", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x85c8, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->bitmask(), 11259375, "bitmask"); + + is($msg->cols(), 48917, "cols"); + + is($msg->corner_nw_lat(), -18168, "corner_nw_lat"); + + is($msg->corner_nw_lon(), -19191, "corner_nw_lon"); + + is($msg->rows(), 36863, "rows"); + + is($msg->spacing_lat(), 61602, "spacing_lat"); + + is($msg->spacing_lon(), 4929, "spacing_lon"); + + is($msg->tile_id(), 63410, "tile_id"); + + is($msg->tile_set_id(), 48697, "tile_set_id"); + + is($json->encode($msg), $json->encode($json->decode(q{{"bitmask":11259375,"cols":48917,"corner_nw_lat":-18168,"corner_nw_lon":-19191,"crc":39489,"length":24,"msg_type":1526,"payload":"Ob6y9wi5CbWi8EET/48Vv+/NqwAAAAAA","preamble":85,"rows":36863,"sender":34248,"spacing_lat":61602,"spacing_lon":4929,"tile_id":63410,"tile_set_id":48697}})), "raw_json"); +} +test_auto_check_sbp_ssr_msg_ssr_tile_definition_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetry.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetry.t new file mode 100644 index 0000000000..648b095d19 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetry.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgCsacTelemetry.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_system_msg_csac_telemetry_1() { + my $buf = decode_base64("VQT/9KkKaXNvbWUgZGF0YeVe"); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x5ee5, "crc"); + + is($msg->{'length'}, 10, "length"); + + is($msg->{'msg_type'}, 0xff04, "msg_type"); + + is($msg->{'payload'}, "aXNvbWUgZGF0YQ==", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xa9f4, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->id(), 105, "id"); + + is($msg->telemetry(), "some data", "telemetry"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":24293,"id":105,"length":10,"msg_type":65284,"payload":"aXNvbWUgZGF0YQ==","preamble":85,"sender":43508,"telemetry":"some data"}})), "raw_json"); +} +test_auto_check_sbp_system_msg_csac_telemetry_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetryLabels.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetryLabels.t new file mode 100644 index 0000000000..88a1bf3fc2 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgCsacTelemetryLabels.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgCsacTelemetryLabels.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_system_msg_csac_telemetry_labels_1() { + my $buf = decode_base64("VQX/W8gMunNvbWUgbGFiZWxzVuw="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xec56, "crc"); + + is($msg->{'length'}, 12, "length"); + + is($msg->{'msg_type'}, 0xff05, "msg_type"); + + is($msg->{'payload'}, "unNvbWUgbGFiZWxz", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xc85b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->id(), 186, "id"); + + is($msg->telemetry_labels(), "some labels", "telemetry_labels"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":60502,"id":186,"length":12,"msg_type":65285,"payload":"unNvbWUgbGFiZWxz","preamble":85,"sender":51291,"telemetry_labels":"some labels"}})), "raw_json"); +} +test_auto_check_sbp_system_msg_csac_telemetry_labels_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgGnssTimeOffset.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgGnssTimeOffset.t new file mode 100644 index 0000000000..61ede93f82 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgGnssTimeOffset.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgGnssTimeOffset.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_system_msg_gnss_time_offset_1() { + my $buf = decode_base64("VQf/Fg8JCTpSUwlnFiXdVGQ="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x6454, "crc"); + + is($msg->{'length'}, 9, "length"); + + is($msg->{'msg_type'}, 0xff07, "msg_type"); + + is($msg->{'payload'}, "CTpSUwlnFiXd", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x0f16, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 221, "flags"); + + is($msg->microseconds(), 9494, "microseconds"); + + is($msg->milliseconds(), 1728664402, "milliseconds"); + + is($msg->weeks(), 14857, "weeks"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":25684,"flags":221,"length":9,"microseconds":9494,"milliseconds":1728664402,"msg_type":65287,"payload":"CTpSUwlnFiXd","preamble":85,"sender":3862,"weeks":14857}})), "raw_json"); +} +test_auto_check_sbp_system_msg_gnss_time_offset_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgPpsTime.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgPpsTime.t new file mode 100644 index 0000000000..ff86326227 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgPpsTime.t @@ -0,0 +1,58 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgPpsTime.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_system_msg_pps_time_1() { + my $buf = decode_base64("VQj/3tEJjJKFxaAAAAD/fZU="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x957d, "crc"); + + is($msg->{'length'}, 9, "length"); + + is($msg->{'msg_type'}, 0xff08, "msg_type"); + + is($msg->{'payload'}, "jJKFxaAAAAD/", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xd1de, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 255, "flags"); + + is($msg->time(), 690508632716, "time"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":38269,"flags":255,"length":9,"msg_type":65288,"payload":"jJKFxaAAAAD/","preamble":85,"sender":53726,"time":690508632716}})), "raw_json"); +} +test_auto_check_sbp_system_msg_pps_time_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgStatusReport.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgStatusReport.t new file mode 100644 index 0000000000..79964b9fbc --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_system_MsgStatusReport.t @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusReport.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_system_msg_status_report_1() { + my $buf = decode_base64("Vf7/BlT8Uv2xXwM8j1rpFdBi98vdxpzP2e6iiJoLcuyG6wyFCR6vkRpy1xSS+TY2hcFqutK3AIEF+OGVh38CGlhcCmdJA2dETLghzsKjex6XsJWsuOd25sioZG0K6QQ891LXphyKbi1i2vSzfmtcfF6dKrt8BmH3oLxueP7WbjPwpJMSSrJDBBtJvkCzkn2ZwC7KQvguKKGt8tYDCwF2RqI9shucKL9x5shICNf1Tjve+nMgIR7TqpFcnUsYqQY3PghrUowxs3paRxxYZzOxSF0nlAvKKiJczGYdYvlbhl8X+MAUU8NftDYkuktAFJ2FDJUcDrmBZe9K+PUe5FiO1DXgnqY="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xa69e, "crc"); + + is($msg->{'length'}, 252, "length"); + + is($msg->{'msg_type'}, 0xfffe, "msg_type"); + + is($msg->{'payload'}, "Uv2xXwM8j1rpFdBi98vdxpzP2e6iiJoLcuyG6wyFCR6vkRpy1xSS+TY2hcFqutK3AIEF+OGVh38CGlhcCmdJA2dETLghzsKjex6XsJWsuOd25sioZG0K6QQ891LXphyKbi1i2vSzfmtcfF6dKrt8BmH3oLxueP7WbjPwpJMSSrJDBBtJvkCzkn2ZwC7KQvguKKGt8tYDCwF2RqI9shucKL9x5shICNf1Tjve+nMgIR7TqpFcnUsYqQY3PghrUowxs3paRxxYZzOxSF0nlAvKKiJczGYdYvlbhl8X+MAUU8NftDYkuktAFJ2FDJUcDrmBZe9K+PUe5FiO1DXg", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x5406, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->reporting_system(), 64850, "reporting_system"); + + is($msg->sbp_version(), 24497, "sbp_version"); + + is($msg->sequence(), 1519336451, "sequence"); + + is($json->encode($msg->status()), $json->encode($json->decode(q{[{"component":52215,"generic":221,"specific":198},{"component":53148,"generic":217,"specific":238},{"component":34978,"generic":154,"specific":11},{"component":60530,"generic":134,"specific":235},{"component":34060,"generic":9,"specific":30},{"component":37295,"generic":26,"specific":114},{"component":5335,"generic":146,"specific":249},{"component":13878,"generic":133,"specific":193},{"component":47722,"generic":210,"specific":183},{"component":33024,"generic":5,"specific":248},{"component":38369,"generic":135,"specific":127},{"component":6658,"generic":88,"specific":92},{"component":26378,"generic":73,"specific":3},{"component":17511,"generic":76,"specific":184},{"component":52769,"generic":194,"specific":163},{"component":7803,"generic":151,"specific":176},{"component":44181,"generic":184,"specific":231},{"component":58998,"generic":200,"specific":168},{"component":28004,"generic":10,"specific":233},{"component":15364,"generic":247,"specific":82},{"component":42711,"generic":28,"specific":138},{"component":11630,"generic":98,"specific":218},{"component":46068,"generic":126,"specific":107},{"component":31836,"generic":94,"specific":157},{"component":47914,"generic":124,"specific":6},{"component":63329,"generic":160,"specific":188},{"component":30830,"generic":254,"specific":214},{"component":13166,"generic":240,"specific":164},{"component":4755,"generic":74,"specific":178},{"component":1091,"generic":27,"specific":73},{"component":16574,"generic":179,"specific":146},{"component":39293,"generic":192,"specific":46},{"component":17098,"generic":248,"specific":46},{"component":41256,"generic":173,"specific":242},{"component":982,"generic":11,"specific":1},{"component":18038,"generic":162,"specific":61},{"component":7090,"generic":156,"specific":40},{"component":29119,"generic":230,"specific":200},{"component":2120,"generic":215,"specific":245},{"component":15182,"generic":222,"specific":250},{"component":8307,"generic":33,"specific":30},{"component":43731,"generic":145,"specific":92},{"component":19357,"generic":24,"specific":169},{"component":14086,"generic":62,"specific":8},{"component":21099,"generic":140,"specific":49},{"component":31411,"generic":90,"specific":71},{"component":22556,"generic":103,"specific":51},{"component":18609,"generic":93,"specific":39},{"component":2964,"generic":202,"specific":42},{"component":23586,"generic":204,"specific":102},{"component":25117,"generic":249,"specific":91},{"component":24454,"generic":23,"specific":248},{"component":5312,"generic":83,"specific":195},{"component":46175,"generic":54,"specific":36},{"component":19386,"generic":64,"specific":20},{"component":34205,"generic":12,"specific":149},{"component":3612,"generic":185,"specific":129},{"component":61285,"generic":74,"specific":248},{"component":7925,"generic":228,"specific":88},{"component":54414,"generic":53,"specific":224}]})), "status"); + + is($msg->uptime(), 1657804265, "uptime"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":42654,"length":252,"msg_type":65534,"payload":"Uv2xXwM8j1rpFdBi98vdxpzP2e6iiJoLcuyG6wyFCR6vkRpy1xSS+TY2hcFqutK3AIEF+OGVh38CGlhcCmdJA2dETLghzsKjex6XsJWsuOd25sioZG0K6QQ891LXphyKbi1i2vSzfmtcfF6dKrt8BmH3oLxueP7WbjPwpJMSSrJDBBtJvkCzkn2ZwC7KQvguKKGt8tYDCwF2RqI9shucKL9x5shICNf1Tjve+nMgIR7TqpFcnUsYqQY3PghrUowxs3paRxxYZzOxSF0nlAvKKiJczGYdYvlbhl8X+MAUU8NftDYkuktAFJ2FDJUcDrmBZe9K+PUe5FiO1DXg","preamble":85,"reporting_system":64850,"sbp_version":24497,"sender":21510,"sequence":1519336451,"status":[{"component":52215,"generic":221,"specific":198},{"component":53148,"generic":217,"specific":238},{"component":34978,"generic":154,"specific":11},{"component":60530,"generic":134,"specific":235},{"component":34060,"generic":9,"specific":30},{"component":37295,"generic":26,"specific":114},{"component":5335,"generic":146,"specific":249},{"component":13878,"generic":133,"specific":193},{"component":47722,"generic":210,"specific":183},{"component":33024,"generic":5,"specific":248},{"component":38369,"generic":135,"specific":127},{"component":6658,"generic":88,"specific":92},{"component":26378,"generic":73,"specific":3},{"component":17511,"generic":76,"specific":184},{"component":52769,"generic":194,"specific":163},{"component":7803,"generic":151,"specific":176},{"component":44181,"generic":184,"specific":231},{"component":58998,"generic":200,"specific":168},{"component":28004,"generic":10,"specific":233},{"component":15364,"generic":247,"specific":82},{"component":42711,"generic":28,"specific":138},{"component":11630,"generic":98,"specific":218},{"component":46068,"generic":126,"specific":107},{"component":31836,"generic":94,"specific":157},{"component":47914,"generic":124,"specific":6},{"component":63329,"generic":160,"specific":188},{"component":30830,"generic":254,"specific":214},{"component":13166,"generic":240,"specific":164},{"component":4755,"generic":74,"specific":178},{"component":1091,"generic":27,"specific":73},{"component":16574,"generic":179,"specific":146},{"component":39293,"generic":192,"specific":46},{"component":17098,"generic":248,"specific":46},{"component":41256,"generic":173,"specific":242},{"component":982,"generic":11,"specific":1},{"component":18038,"generic":162,"specific":61},{"component":7090,"generic":156,"specific":40},{"component":29119,"generic":230,"specific":200},{"component":2120,"generic":215,"specific":245},{"component":15182,"generic":222,"specific":250},{"component":8307,"generic":33,"specific":30},{"component":43731,"generic":145,"specific":92},{"component":19357,"generic":24,"specific":169},{"component":14086,"generic":62,"specific":8},{"component":21099,"generic":140,"specific":49},{"component":31411,"generic":90,"specific":71},{"component":22556,"generic":103,"specific":51},{"component":18609,"generic":93,"specific":39},{"component":2964,"generic":202,"specific":42},{"component":23586,"generic":204,"specific":102},{"component":25117,"generic":249,"specific":91},{"component":24454,"generic":23,"specific":248},{"component":5312,"generic":83,"specific":195},{"component":46175,"generic":54,"specific":36},{"component":19386,"generic":64,"specific":20},{"component":34205,"generic":12,"specific":149},{"component":3612,"generic":185,"specific":129},{"component":61285,"generic":74,"specific":248},{"component":7925,"generic":228,"specific":88},{"component":54414,"generic":53,"specific":224}],"uptime":1657804265}})), "raw_json"); +} +test_auto_check_sbp_system_msg_status_report_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIq.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIq.t new file mode 100644 index 0000000000..1c51131e10 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIq.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingIq.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_tracking_msg_tracking_iq_1() { + my $buf = decode_base64("VS0AAlAPkXnLL9nvNy0mvVifE9AMYac="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xa761, "crc"); + + is($msg->{'length'}, 15, "length"); + + is($msg->{'msg_type'}, 0x2d, "msg_type"); + + is($msg->{'payload'}, "kXnLL9nvNy0mvVifE9AM", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x5002, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->channel(), 145, "channel"); + + is($json->encode($msg->corrs()), $json->encode($json->decode(q{[{"i":-9937,"q":14319},{"i":9773,"q":22717},{"i":5023,"q":3280}]})), "corrs"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":203,"sat":121}})), "sid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"channel":145,"corrs":[{"i":-9937,"q":14319},{"i":9773,"q":22717},{"i":5023,"q":3280}],"crc":42849,"length":15,"msg_type":45,"payload":"kXnLL9nvNy0mvVifE9AM","preamble":85,"sender":20482,"sid":{"code":203,"sat":121}}})), "raw_json"); +} +test_auto_check_sbp_tracking_msg_tracking_iq_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepA.t new file mode 100644 index 0000000000..2baa6f0497 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepA.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingIqDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_tracking_msg_tracking_iq_dep_a_1() { + my $buf = decode_base64("VRwAuEMdixz6DwBjWqpgR3khoTTTomUpJOJjR0sO8IZSr1MRIg=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x2211, "crc"); + + is($msg->{'length'}, 29, "length"); + + is($msg->{'msg_type'}, 0x1c, "msg_type"); + + is($msg->{'payload'}, "ixz6DwBjWqpgR3khoTTTomUpJOJjR0sO8IZSr1M=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x43b8, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->channel(), 139, "channel"); + + is($json->encode($msg->corrs()), $json->encode($json->decode(q{[{"i":1621776995,"q":-1591641785},{"i":1705169716,"q":1675764777},{"i":-267498681,"q":1403998854}]})), "corrs"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":15,"reserved":0,"sat":64028}})), "sid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"channel":139,"corrs":[{"i":1621776995,"q":-1591641785},{"i":1705169716,"q":1675764777},{"i":-267498681,"q":1403998854}],"crc":8721,"length":29,"msg_type":28,"payload":"ixz6DwBjWqpgR3khoTTTomUpJOJjR0sO8IZSr1M=","preamble":85,"sender":17336,"sid":{"code":15,"reserved":0,"sat":64028}}})), "raw_json"); +} +test_auto_check_sbp_tracking_msg_tracking_iq_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepB.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepB.t new file mode 100644 index 0000000000..c3cc185912 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingIqDepB.t @@ -0,0 +1,60 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingIqDepB.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_tracking_msg_tracking_iq_dep_b_1() { + my $buf = decode_base64("VSwAJ2UbLby3SLmdD7v5ZRiHkrTge+uO0GZwGRWxYHRE9pk="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x99f6, "crc"); + + is($msg->{'length'}, 27, "length"); + + is($msg->{'msg_type'}, 0x2c, "msg_type"); + + is($msg->{'payload'}, "Lby3SLmdD7v5ZRiHkrTge+uO0GZwGRWxYHRE", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x6527, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->channel(), 45, "channel"); + + is($json->encode($msg->corrs()), $json->encode($json->decode(q{[{"i":261994824,"q":409336251},{"i":-525036921,"q":-795939973},{"i":353988710,"q":1148477617}]})), "corrs"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":183,"sat":188}})), "sid"); + + is($json->encode($msg), $json->encode($json->decode(q{{"channel":45,"corrs":[{"i":261994824,"q":409336251},{"i":-525036921,"q":-795939973},{"i":353988710,"q":1148477617}],"crc":39414,"length":27,"msg_type":44,"payload":"Lby3SLmdD7v5ZRiHkrTge+uO0GZwGRWxYHRE","preamble":85,"sender":25895,"sid":{"code":183,"sat":188}}})), "raw_json"); +} +test_auto_check_sbp_tracking_msg_tracking_iq_dep_b_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingState.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingState.t index 9e3ee4ff1a..12b3eed6b2 100644 --- a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingState.t +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingState.t @@ -29,6 +29,29 @@ use Test::More; use JSON::PP; use MIME::Base64; sub test_auto_check_sbp_tracking_msg_tracking_state_1() { + my $buf = decode_base64("VUEAN4H8dbgDZiZqjI0ZBFrD9mxLUol/LaMgLrtdmTzJkxcdBdC1HttF/ogDeSFikNeFtg44qU3aPvJUq/mYiYOCwRUqRP3j2OMYGtKzEw/j/3pLu8jZMNp6u+6Ole43+9SAoMJocf+NPitF9Sdk5mw490SVj4ll6UYxpSZu2uZQ1cSzi4APssSrCNRhwlPpT2M3Wh+0BRlpuhbgUG8IMGqmBDCcMVYTjpJbfHNAHOZzsr6DEPJpO7ZxwLQws6YfrNNN5IwxgE3wwobCKToSNYE3W0iGXCHgnTi6NuCuUlSUvuw2PkM01zn+EIUkrtuskRHAs29hzzjQhrQRK+L/toxxjW8="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x6f8d, "crc"); + + is($msg->{'length'}, 252, "length"); + + is($msg->{'msg_type'}, 0x41, "msg_type"); + + is($msg->{'payload'}, "dbgDZiZqjI0ZBFrD9mxLUol/LaMgLrtdmTzJkxcdBdC1HttF/ogDeSFikNeFtg44qU3aPvJUq/mYiYOCwRUqRP3j2OMYGtKzEw/j/3pLu8jZMNp6u+6Ole43+9SAoMJocf+NPitF9Sdk5mw490SVj4ll6UYxpSZu2uZQ1cSzi4APssSrCNRhwlPpT2M3Wh+0BRlpuhbgUG8IMGqmBDCcMVYTjpJbfHNAHOZzsr6DEPJpO7ZxwLQws6YfrNNN5IwxgE3wwobCKToSNYE3W0iGXCHgnTi6NuCuUlSUvuw2PkM01zn+EIUkrtuskRHAs29hzzjQhrQRK+L/toxx", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x8137, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->states()), $json->encode($json->decode(q{[{"cn0":102,"fcn":3,"sid":{"code":184,"sat":117}},{"cn0":141,"fcn":140,"sid":{"code":106,"sat":38}},{"cn0":195,"fcn":90,"sid":{"code":4,"sat":25}},{"cn0":82,"fcn":75,"sid":{"code":108,"sat":246}},{"cn0":163,"fcn":45,"sid":{"code":127,"sat":137}},{"cn0":93,"fcn":187,"sid":{"code":46,"sat":32}},{"cn0":147,"fcn":201,"sid":{"code":60,"sat":153}},{"cn0":208,"fcn":5,"sid":{"code":29,"sat":23}},{"cn0":69,"fcn":219,"sid":{"code":30,"sat":181}},{"cn0":121,"fcn":3,"sid":{"code":136,"sat":254}},{"cn0":215,"fcn":144,"sid":{"code":98,"sat":33}},{"cn0":56,"fcn":14,"sid":{"code":182,"sat":133}},{"cn0":62,"fcn":218,"sid":{"code":77,"sat":169}},{"cn0":249,"fcn":171,"sid":{"code":84,"sat":242}},{"cn0":130,"fcn":131,"sid":{"code":137,"sat":152}},{"cn0":68,"fcn":42,"sid":{"code":21,"sat":193}},{"cn0":227,"fcn":216,"sid":{"code":227,"sat":253}},{"cn0":179,"fcn":210,"sid":{"code":26,"sat":24}},{"cn0":255,"fcn":227,"sid":{"code":15,"sat":19}},{"cn0":200,"fcn":187,"sid":{"code":75,"sat":122}},{"cn0":122,"fcn":218,"sid":{"code":48,"sat":217}},{"cn0":149,"fcn":142,"sid":{"code":238,"sat":187}},{"cn0":212,"fcn":251,"sid":{"code":55,"sat":238}},{"cn0":104,"fcn":194,"sid":{"code":160,"sat":128}},{"cn0":62,"fcn":141,"sid":{"code":255,"sat":113}},{"cn0":39,"fcn":245,"sid":{"code":69,"sat":43}},{"cn0":56,"fcn":108,"sid":{"code":230,"sat":100}},{"cn0":143,"fcn":149,"sid":{"code":68,"sat":247}},{"cn0":70,"fcn":233,"sid":{"code":101,"sat":137}},{"cn0":110,"fcn":38,"sid":{"code":165,"sat":49}},{"cn0":213,"fcn":80,"sid":{"code":230,"sat":218}},{"cn0":128,"fcn":139,"sid":{"code":179,"sat":196}},{"cn0":171,"fcn":196,"sid":{"code":178,"sat":15}},{"cn0":194,"fcn":97,"sid":{"code":212,"sat":8}},{"cn0":99,"fcn":79,"sid":{"code":233,"sat":83}},{"cn0":180,"fcn":31,"sid":{"code":90,"sat":55}},{"cn0":186,"fcn":105,"sid":{"code":25,"sat":5}},{"cn0":111,"fcn":80,"sid":{"code":224,"sat":22}},{"cn0":166,"fcn":106,"sid":{"code":48,"sat":8}},{"cn0":49,"fcn":156,"sid":{"code":48,"sat":4}},{"cn0":146,"fcn":142,"sid":{"code":19,"sat":86}},{"cn0":64,"fcn":115,"sid":{"code":124,"sat":91}},{"cn0":178,"fcn":115,"sid":{"code":230,"sat":28}},{"cn0":242,"fcn":16,"sid":{"code":131,"sat":190}},{"cn0":113,"fcn":182,"sid":{"code":59,"sat":105}},{"cn0":179,"fcn":48,"sid":{"code":180,"sat":192}},{"cn0":211,"fcn":172,"sid":{"code":31,"sat":166}},{"cn0":49,"fcn":140,"sid":{"code":228,"sat":77}},{"cn0":194,"fcn":240,"sid":{"code":77,"sat":128}},{"cn0":58,"fcn":41,"sid":{"code":194,"sat":134}},{"cn0":55,"fcn":129,"sid":{"code":53,"sat":18}},{"cn0":92,"fcn":134,"sid":{"code":72,"sat":91}},{"cn0":56,"fcn":157,"sid":{"code":224,"sat":33}},{"cn0":174,"fcn":224,"sid":{"code":54,"sat":186}},{"cn0":190,"fcn":148,"sid":{"code":84,"sat":82}},{"cn0":67,"fcn":62,"sid":{"code":54,"sat":236}},{"cn0":254,"fcn":57,"sid":{"code":215,"sat":52}},{"cn0":174,"fcn":36,"sid":{"code":133,"sat":16}},{"cn0":17,"fcn":145,"sid":{"code":172,"sat":219}},{"cn0":97,"fcn":111,"sid":{"code":179,"sat":192}},{"cn0":134,"fcn":208,"sid":{"code":56,"sat":207}},{"cn0":226,"fcn":43,"sid":{"code":17,"sat":180}},{"cn0":113,"fcn":140,"sid":{"code":182,"sat":255}}]})), "states"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":28557,"length":252,"msg_type":65,"payload":"dbgDZiZqjI0ZBFrD9mxLUol/LaMgLrtdmTzJkxcdBdC1HttF/ogDeSFikNeFtg44qU3aPvJUq/mYiYOCwRUqRP3j2OMYGtKzEw/j/3pLu8jZMNp6u+6Ole43+9SAoMJocf+NPitF9Sdk5mw490SVj4ll6UYxpSZu2uZQ1cSzi4APssSrCNRhwlPpT2M3Wh+0BRlpuhbgUG8IMGqmBDCcMVYTjpJbfHNAHOZzsr6DEPJpO7ZxwLQws6YfrNNN5IwxgE3wwobCKToSNYE3W0iGXCHgnTi6NuCuUlSUvuw2PkM01zn+EIUkrtuskRHAs29hzzjQhrQRK+L/toxx","preamble":85,"sender":33079,"states":[{"cn0":102,"fcn":3,"sid":{"code":184,"sat":117}},{"cn0":141,"fcn":140,"sid":{"code":106,"sat":38}},{"cn0":195,"fcn":90,"sid":{"code":4,"sat":25}},{"cn0":82,"fcn":75,"sid":{"code":108,"sat":246}},{"cn0":163,"fcn":45,"sid":{"code":127,"sat":137}},{"cn0":93,"fcn":187,"sid":{"code":46,"sat":32}},{"cn0":147,"fcn":201,"sid":{"code":60,"sat":153}},{"cn0":208,"fcn":5,"sid":{"code":29,"sat":23}},{"cn0":69,"fcn":219,"sid":{"code":30,"sat":181}},{"cn0":121,"fcn":3,"sid":{"code":136,"sat":254}},{"cn0":215,"fcn":144,"sid":{"code":98,"sat":33}},{"cn0":56,"fcn":14,"sid":{"code":182,"sat":133}},{"cn0":62,"fcn":218,"sid":{"code":77,"sat":169}},{"cn0":249,"fcn":171,"sid":{"code":84,"sat":242}},{"cn0":130,"fcn":131,"sid":{"code":137,"sat":152}},{"cn0":68,"fcn":42,"sid":{"code":21,"sat":193}},{"cn0":227,"fcn":216,"sid":{"code":227,"sat":253}},{"cn0":179,"fcn":210,"sid":{"code":26,"sat":24}},{"cn0":255,"fcn":227,"sid":{"code":15,"sat":19}},{"cn0":200,"fcn":187,"sid":{"code":75,"sat":122}},{"cn0":122,"fcn":218,"sid":{"code":48,"sat":217}},{"cn0":149,"fcn":142,"sid":{"code":238,"sat":187}},{"cn0":212,"fcn":251,"sid":{"code":55,"sat":238}},{"cn0":104,"fcn":194,"sid":{"code":160,"sat":128}},{"cn0":62,"fcn":141,"sid":{"code":255,"sat":113}},{"cn0":39,"fcn":245,"sid":{"code":69,"sat":43}},{"cn0":56,"fcn":108,"sid":{"code":230,"sat":100}},{"cn0":143,"fcn":149,"sid":{"code":68,"sat":247}},{"cn0":70,"fcn":233,"sid":{"code":101,"sat":137}},{"cn0":110,"fcn":38,"sid":{"code":165,"sat":49}},{"cn0":213,"fcn":80,"sid":{"code":230,"sat":218}},{"cn0":128,"fcn":139,"sid":{"code":179,"sat":196}},{"cn0":171,"fcn":196,"sid":{"code":178,"sat":15}},{"cn0":194,"fcn":97,"sid":{"code":212,"sat":8}},{"cn0":99,"fcn":79,"sid":{"code":233,"sat":83}},{"cn0":180,"fcn":31,"sid":{"code":90,"sat":55}},{"cn0":186,"fcn":105,"sid":{"code":25,"sat":5}},{"cn0":111,"fcn":80,"sid":{"code":224,"sat":22}},{"cn0":166,"fcn":106,"sid":{"code":48,"sat":8}},{"cn0":49,"fcn":156,"sid":{"code":48,"sat":4}},{"cn0":146,"fcn":142,"sid":{"code":19,"sat":86}},{"cn0":64,"fcn":115,"sid":{"code":124,"sat":91}},{"cn0":178,"fcn":115,"sid":{"code":230,"sat":28}},{"cn0":242,"fcn":16,"sid":{"code":131,"sat":190}},{"cn0":113,"fcn":182,"sid":{"code":59,"sat":105}},{"cn0":179,"fcn":48,"sid":{"code":180,"sat":192}},{"cn0":211,"fcn":172,"sid":{"code":31,"sat":166}},{"cn0":49,"fcn":140,"sid":{"code":228,"sat":77}},{"cn0":194,"fcn":240,"sid":{"code":77,"sat":128}},{"cn0":58,"fcn":41,"sid":{"code":194,"sat":134}},{"cn0":55,"fcn":129,"sid":{"code":53,"sat":18}},{"cn0":92,"fcn":134,"sid":{"code":72,"sat":91}},{"cn0":56,"fcn":157,"sid":{"code":224,"sat":33}},{"cn0":174,"fcn":224,"sid":{"code":54,"sat":186}},{"cn0":190,"fcn":148,"sid":{"code":84,"sat":82}},{"cn0":67,"fcn":62,"sid":{"code":54,"sat":236}},{"cn0":254,"fcn":57,"sid":{"code":215,"sat":52}},{"cn0":174,"fcn":36,"sid":{"code":133,"sat":16}},{"cn0":17,"fcn":145,"sid":{"code":172,"sat":219}},{"cn0":97,"fcn":111,"sid":{"code":179,"sat":192}},{"cn0":134,"fcn":208,"sid":{"code":56,"sat":207}},{"cn0":226,"fcn":43,"sid":{"code":17,"sat":180}},{"cn0":113,"fcn":140,"sid":{"code":182,"sat":255}}]}})), "raw_json"); +} +sub test_auto_check_sbp_tracking_msg_tracking_state_2() { my $buf = decode_base64("VRMA9tdjAcoAAADF/RxCAcsAAADnYxBCAdAAAADUgRZCAdQAAAA6FRxCAdkAAACyIShCAdoAAADrvRVCAdwAAAAdsRlCAd4AAAArqRtCAeEAAACJfSpCAAAAAAAAAIC/AAAAAAAAAIC/3mE="); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); @@ -51,7 +74,7 @@ sub test_auto_check_sbp_tracking_msg_tracking_state_1() { is($json->encode($msg), $json->encode($json->decode(q{{"crc":25054,"length":99,"msg_type":19,"payload":"AcoAAADF/RxCAcsAAADnYxBCAdAAAADUgRZCAdQAAAA6FRxCAdkAAACyIShCAdoAAADrvRVCAdwAAAAdsRlCAd4AAAArqRtCAeEAAACJfSpCAAAAAAAAAIC/AAAAAAAAAIC/","preamble":85,"sender":55286,"states":[{"cn0":39.24782180786133,"sid":{"code":0,"reserved":0,"sat":202},"state":1},{"cn0":36.09756088256836,"sid":{"code":0,"reserved":0,"sat":203},"state":1},{"cn0":37.62678527832031,"sid":{"code":0,"reserved":0,"sat":208},"state":1},{"cn0":39.020729064941406,"sid":{"code":0,"reserved":0,"sat":212},"state":1},{"cn0":42.03290557861328,"sid":{"code":0,"reserved":0,"sat":217},"state":1},{"cn0":37.43546676635742,"sid":{"code":0,"reserved":0,"sat":218},"state":1},{"cn0":38.4229621887207,"sid":{"code":0,"reserved":0,"sat":220},"state":1},{"cn0":38.91520309448242,"sid":{"code":0,"reserved":0,"sat":222},"state":1},{"cn0":42.62259292602539,"sid":{"code":0,"reserved":0,"sat":225},"state":1},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0}]}})), "raw_json"); } -sub test_auto_check_sbp_tracking_msg_tracking_state_2() { +sub test_auto_check_sbp_tracking_msg_tracking_state_3() { my $buf = decode_base64("VRMA9tdjAcoAAAD6+RtCAcsAAAAojwtCAdAAAAC+yBVCAdQAAAD76RpCAdkAAADR7idCAdoAAACi2xVCAdwAAACixRlCAd4AAAAOIxxCAeEAAAAJmStCAAAAAAAAAIC/AAAAAAAAAIC/FB8="); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); @@ -74,7 +97,7 @@ sub test_auto_check_sbp_tracking_msg_tracking_state_2() { is($json->encode($msg), $json->encode($json->decode(q{{"crc":7956,"length":99,"msg_type":19,"payload":"AcoAAAD6+RtCAcsAAAAojwtCAdAAAAC+yBVCAdQAAAD76RpCAdkAAADR7idCAdoAAACi2xVCAdwAAACixRlCAd4AAAAOIxxCAeEAAAAJmStCAAAAAAAAAIC/AAAAAAAAAIC/","preamble":85,"sender":55286,"states":[{"cn0":38.994117736816406,"sid":{"code":0,"reserved":0,"sat":202},"state":1},{"cn0":34.889801025390625,"sid":{"code":0,"reserved":0,"sat":203},"state":1},{"cn0":37.44603729248047,"sid":{"code":0,"reserved":0,"sat":208},"state":1},{"cn0":38.72849655151367,"sid":{"code":0,"reserved":0,"sat":212},"state":1},{"cn0":41.983219146728516,"sid":{"code":0,"reserved":0,"sat":217},"state":1},{"cn0":37.46448516845703,"sid":{"code":0,"reserved":0,"sat":218},"state":1},{"cn0":38.44300079345703,"sid":{"code":0,"reserved":0,"sat":220},"state":1},{"cn0":39.03423309326172,"sid":{"code":0,"reserved":0,"sat":222},"state":1},{"cn0":42.89944839477539,"sid":{"code":0,"reserved":0,"sat":225},"state":1},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0}]}})), "raw_json"); } -sub test_auto_check_sbp_tracking_msg_tracking_state_3() { +sub test_auto_check_sbp_tracking_msg_tracking_state_4() { my $buf = decode_base64("VRMA9tdjAcoAAAB70RtCAcsAAADWQA9CAdAAAAA4NxZCAdQAAABbjhtCAdkAAAD9milCAdoAAACAjhZCAdwAAAARrhdCAd4AAACbAh1CAeEAAACiZCpCAAAAAAAAAIC/AAAAAAAAAIC/6Uc="); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); @@ -97,7 +120,7 @@ sub test_auto_check_sbp_tracking_msg_tracking_state_3() { is($json->encode($msg), $json->encode($json->decode(q{{"crc":18409,"length":99,"msg_type":19,"payload":"AcoAAAB70RtCAcsAAADWQA9CAdAAAAA4NxZCAdQAAABbjhtCAdkAAAD9milCAdoAAACAjhZCAdwAAAARrhdCAd4AAACbAh1CAeEAAACiZCpCAAAAAAAAAIC/AAAAAAAAAIC/","preamble":85,"sender":55286,"states":[{"cn0":38.95457077026367,"sid":{"code":0,"reserved":0,"sat":202},"state":1},{"cn0":35.813316345214844,"sid":{"code":0,"reserved":0,"sat":203},"state":1},{"cn0":37.553924560546875,"sid":{"code":0,"reserved":0,"sat":208},"state":1},{"cn0":38.88901901245117,"sid":{"code":0,"reserved":0,"sat":212},"state":1},{"cn0":42.4013557434082,"sid":{"code":0,"reserved":0,"sat":217},"state":1},{"cn0":37.63916015625,"sid":{"code":0,"reserved":0,"sat":218},"state":1},{"cn0":37.919986724853516,"sid":{"code":0,"reserved":0,"sat":220},"state":1},{"cn0":39.25254440307617,"sid":{"code":0,"reserved":0,"sat":222},"state":1},{"cn0":42.59827423095703,"sid":{"code":0,"reserved":0,"sat":225},"state":1},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0}]}})), "raw_json"); } -sub test_auto_check_sbp_tracking_msg_tracking_state_4() { +sub test_auto_check_sbp_tracking_msg_tracking_state_5() { my $buf = decode_base64("VRMA9tdjAcoAAAB4eh1CAcsAAABCFhJCAdAAAACZoxhCAdQAAACyzBxCAdkAAADcOyZCAdoAAAChGxRCAdwAAAB9axhCAd4AAADyLhxCAeEAAADngilCAAAAAAAAAIC/AAAAAAAAAIC/ScE="); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); @@ -120,7 +143,7 @@ sub test_auto_check_sbp_tracking_msg_tracking_state_4() { is($json->encode($msg), $json->encode($json->decode(q{{"crc":49481,"length":99,"msg_type":19,"payload":"AcoAAAB4eh1CAcsAAABCFhJCAdAAAACZoxhCAdQAAACyzBxCAdkAAADcOyZCAdoAAAChGxRCAdwAAAB9axhCAd4AAADyLhxCAeEAAADngilCAAAAAAAAAIC/AAAAAAAAAIC/","preamble":85,"sender":55286,"states":[{"cn0":39.369598388671875,"sid":{"code":0,"reserved":0,"sat":202},"state":1},{"cn0":36.52173614501953,"sid":{"code":0,"reserved":0,"sat":203},"state":1},{"cn0":38.15976333618164,"sid":{"code":0,"reserved":0,"sat":208},"state":1},{"cn0":39.19989776611328,"sid":{"code":0,"reserved":0,"sat":212},"state":1},{"cn0":41.55845642089844,"sid":{"code":0,"reserved":0,"sat":217},"state":1},{"cn0":37.026981353759766,"sid":{"code":0,"reserved":0,"sat":218},"state":1},{"cn0":38.1049690246582,"sid":{"code":0,"reserved":0,"sat":220},"state":1},{"cn0":39.04584503173828,"sid":{"code":0,"reserved":0,"sat":222},"state":1},{"cn0":42.37783432006836,"sid":{"code":0,"reserved":0,"sat":225},"state":1},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0},{"cn0":-1.0,"sid":{"code":0,"reserved":0,"sat":0},"state":0}]}})), "raw_json"); } -sub test_auto_check_sbp_tracking_msg_tracking_state_5() { +sub test_auto_check_sbp_tracking_msg_tracking_state_6() { my $buf = decode_base64("VRMA9tdjAcoAAABn0B5CAcsAAAB1GBJCAdAAAADIrRRCAdQAAACJRBtCAdkAAADzMyhCAdoAAADhOhdCAdwAAACE3RZCAd4AAACdHRpCAeEAAACFFSlCAAAAAAAAAIC/AAAAAAAAAIC/fi8="); my $stream = IO::KaitaiStruct::Stream->new($buf); my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); @@ -148,5 +171,6 @@ test_auto_check_sbp_tracking_msg_tracking_state_2(); test_auto_check_sbp_tracking_msg_tracking_state_3(); test_auto_check_sbp_tracking_msg_tracking_state_4(); test_auto_check_sbp_tracking_msg_tracking_state_5(); +test_auto_check_sbp_tracking_msg_tracking_state_6(); done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDepB.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDepB.t new file mode 100644 index 0000000000..a1c87c7e8e --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDepB.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingStateDepB.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_tracking_msg_tracking_state_dep_b_1() { + my $buf = decode_base64("VRMA8vH8c7fjP0SaAbdF/695K94zQyNFTvAFNRQz0zZFmYLtQpsz40dFNfKIob7NvAZGmX3/jpWa2bhF+GZfH0yaIalFg3ONGwya4chF0CyTJxczA0JF7Z/7McszY2ZFRtZXgM6aebpFDs5v2hOaealF2GLRNgKaGdtDyIVjByJmxuhEmytVhy6asapFmwNTq8ma8ehFeSvFEBOa8d5FgPU1P7Azc0JFJBQ9mTOaSYZFLlJ0jBYzkyVFsUOSYI/NTGtE3DOgyftmZsBEqMICodxmZrRERQgJfbJmRoZEuRSHuqszowRFEnybVarN0A1GOfTO/7qaaZVFpcddta8zQ0BFBhw="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x1c06, "crc"); + + is($msg->{'length'}, 252, "length"); + + is($msg->{'msg_type'}, 0x13, "msg_type"); + + is($msg->{'payload'}, "c7fjP0SaAbdF/695K94zQyNFTvAFNRQz0zZFmYLtQpsz40dFNfKIob7NvAZGmX3/jpWa2bhF+GZfH0yaIalFg3ONGwya4chF0CyTJxczA0JF7Z/7McszY2ZFRtZXgM6aebpFDs5v2hOaealF2GLRNgKaGdtDyIVjByJmxuhEmytVhy6asapFmwNTq8ma8ehFeSvFEBOa8d5FgPU1P7Azc0JFJBQ9mTOaSYZFLlJ0jBYzkyVFsUOSYI/NTGtE3DOgyftmZsBEqMICodxmZrRERQgJfbJmRoZEuRSHuqszowRFEnybVarN0A1GOfTO/7qaaZVFpcddta8zQ0BF", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0xf1f2, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->states()), $json->encode($json->decode(q{[{"cn0":5856.2001953125,"sid":{"code":63,"reserved":68,"sat":58295},"state":115},{"cn0":2612.199951171875,"sid":{"code":43,"reserved":222,"sat":31151},"state":255},{"cn0":2925.199951171875,"sid":{"code":53,"reserved":20,"sat":1520},"state":78},{"cn0":3198.199951171875,"sid":{"code":66,"reserved":155,"sat":60802},"state":153},{"cn0":8623.2001953125,"sid":{"code":161,"reserved":190,"sat":35058},"state":53},{"cn0":5915.2001953125,"sid":{"code":142,"reserved":149,"sat":65405},"state":153},{"cn0":5412.2001953125,"sid":{"code":31,"reserved":76,"sat":24422},"state":248},{"cn0":6428.2001953125,"sid":{"code":27,"reserved":12,"sat":36211},"state":131},{"cn0":3104.199951171875,"sid":{"code":39,"reserved":23,"sat":37676},"state":208},{"cn0":3686.199951171875,"sid":{"code":49,"reserved":203,"sat":64415},"state":237},{"cn0":5967.2001953125,"sid":{"code":128,"reserved":206,"sat":22486},"state":70},{"cn0":5423.2001953125,"sid":{"code":218,"reserved":19,"sat":28622},"state":14},{"cn0":438.20001220703125,"sid":{"code":54,"reserved":2,"sat":53602},"state":216},{"cn0":1862.199951171875,"sid":{"code":7,"reserved":34,"sat":25477},"state":200},{"cn0":5462.2001953125,"sid":{"code":135,"reserved":46,"sat":21803},"state":155},{"cn0":7454.2001953125,"sid":{"code":171,"reserved":201,"sat":21251},"state":155},{"cn0":7134.2001953125,"sid":{"code":16,"reserved":19,"sat":50475},"state":121},{"cn0":3111.199951171875,"sid":{"code":63,"reserved":176,"sat":13813},"state":128},{"cn0":4297.2001953125,"sid":{"code":153,"reserved":51,"sat":15636},"state":36},{"cn0":2649.199951171875,"sid":{"code":140,"reserved":22,"sat":29778},"state":46},{"cn0":941.2000122070312,"sid":{"code":96,"reserved":143,"sat":37443},"state":177},{"cn0":1539.199951171875,"sid":{"code":201,"reserved":251,"sat":41011},"state":220},{"cn0":1443.199951171875,"sid":{"code":161,"reserved":220,"sat":706},"state":168},{"cn0":1074.199951171875,"sid":{"code":125,"reserved":178,"sat":2312},"state":69},{"cn0":2122.199951171875,"sid":{"code":186,"reserved":171,"sat":34580},"state":185},{"cn0":9076.2001953125,"sid":{"code":85,"reserved":170,"sat":39804},"state":18},{"cn0":4781.2001953125,"sid":{"code":255,"reserved":186,"sat":52980},"state":57},{"cn0":3076.199951171875,"sid":{"code":181,"reserved":175,"sat":24007},"state":165}]})), "states"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":7174,"length":252,"msg_type":19,"payload":"c7fjP0SaAbdF/695K94zQyNFTvAFNRQz0zZFmYLtQpsz40dFNfKIob7NvAZGmX3/jpWa2bhF+GZfH0yaIalFg3ONGwya4chF0CyTJxczA0JF7Z/7McszY2ZFRtZXgM6aebpFDs5v2hOaealF2GLRNgKaGdtDyIVjByJmxuhEmytVhy6asapFmwNTq8ma8ehFeSvFEBOa8d5FgPU1P7Azc0JFJBQ9mTOaSYZFLlJ0jBYzkyVFsUOSYI/NTGtE3DOgyftmZsBEqMICodxmZrRERQgJfbJmRoZEuRSHuqszowRFEnybVarN0A1GOfTO/7qaaZVFpcddta8zQ0BF","preamble":85,"sender":61938,"states":[{"cn0":5856.2001953125,"sid":{"code":63,"reserved":68,"sat":58295},"state":115},{"cn0":2612.199951171875,"sid":{"code":43,"reserved":222,"sat":31151},"state":255},{"cn0":2925.199951171875,"sid":{"code":53,"reserved":20,"sat":1520},"state":78},{"cn0":3198.199951171875,"sid":{"code":66,"reserved":155,"sat":60802},"state":153},{"cn0":8623.2001953125,"sid":{"code":161,"reserved":190,"sat":35058},"state":53},{"cn0":5915.2001953125,"sid":{"code":142,"reserved":149,"sat":65405},"state":153},{"cn0":5412.2001953125,"sid":{"code":31,"reserved":76,"sat":24422},"state":248},{"cn0":6428.2001953125,"sid":{"code":27,"reserved":12,"sat":36211},"state":131},{"cn0":3104.199951171875,"sid":{"code":39,"reserved":23,"sat":37676},"state":208},{"cn0":3686.199951171875,"sid":{"code":49,"reserved":203,"sat":64415},"state":237},{"cn0":5967.2001953125,"sid":{"code":128,"reserved":206,"sat":22486},"state":70},{"cn0":5423.2001953125,"sid":{"code":218,"reserved":19,"sat":28622},"state":14},{"cn0":438.20001220703125,"sid":{"code":54,"reserved":2,"sat":53602},"state":216},{"cn0":1862.199951171875,"sid":{"code":7,"reserved":34,"sat":25477},"state":200},{"cn0":5462.2001953125,"sid":{"code":135,"reserved":46,"sat":21803},"state":155},{"cn0":7454.2001953125,"sid":{"code":171,"reserved":201,"sat":21251},"state":155},{"cn0":7134.2001953125,"sid":{"code":16,"reserved":19,"sat":50475},"state":121},{"cn0":3111.199951171875,"sid":{"code":63,"reserved":176,"sat":13813},"state":128},{"cn0":4297.2001953125,"sid":{"code":153,"reserved":51,"sat":15636},"state":36},{"cn0":2649.199951171875,"sid":{"code":140,"reserved":22,"sat":29778},"state":46},{"cn0":941.2000122070312,"sid":{"code":96,"reserved":143,"sat":37443},"state":177},{"cn0":1539.199951171875,"sid":{"code":201,"reserved":251,"sat":41011},"state":220},{"cn0":1443.199951171875,"sid":{"code":161,"reserved":220,"sat":706},"state":168},{"cn0":1074.199951171875,"sid":{"code":125,"reserved":178,"sat":2312},"state":69},{"cn0":2122.199951171875,"sid":{"code":186,"reserved":171,"sat":34580},"state":185},{"cn0":9076.2001953125,"sid":{"code":85,"reserved":170,"sat":39804},"state":18},{"cn0":4781.2001953125,"sid":{"code":255,"reserved":186,"sat":52980},"state":57},{"cn0":3076.199951171875,"sid":{"code":181,"reserved":175,"sat":24007},"state":165}]}})), "raw_json"); +} +test_auto_check_sbp_tracking_msg_tracking_state_dep_b_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.t new file mode 100644 index 0000000000..88baecb387 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.t @@ -0,0 +1,96 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingStateDetailedDepA.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_tracking_msg_tracking_state_detailed_dep_a_1() { + my $buf = decode_base64("VSEAm245Lh+0JtsAAACFZEdewAKgz9T/h4s+PrNT4/WGoMxOX/8mO6EP/1a9+B+/iMJ8Fw9b+XWOWttDGVM+emQ="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x647a, "crc"); + + is($msg->{'length'}, 57, "length"); + + is($msg->{'msg_type'}, 0x21, "msg_type"); + + is($msg->{'payload'}, "Lh+0JtsAAACFZEdewAKgz9T/h4s+PrNT4/WGoMxOX/8mO6EP/1a9+B+/iMJ8Fw9b+XWOWttDGVM+", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x6e9b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->l()), $json->encode($json->decode(q{{"f":204,"i":-1601767965}})), "l"); + + is($msg->p(), 1044286343, "p"); + + is($msg->p_std(), 21427, "p_std"); + + is($msg->acceleration(), -114, "acceleration"); + + is($msg->clock_drift(), 23311, "clock_drift"); + + is($msg->clock_offset(), 6012, "clock_offset"); + + is($msg->cn0(), 78, "cn0"); + + is($msg->corr_spacing(), 30201, "corr_spacing"); + + is($msg->doppler(), 1459556257, "doppler"); + + is($msg->doppler_std(), 63677, "doppler_std"); + + is($msg->lock(), 65375, "lock"); + + is($msg->misc_flags(), 62, "misc_flags"); + + is($msg->nav_flags(), 25, "nav_flags"); + + is($msg->pset_flags(), 83, "pset_flags"); + + is($msg->recv_time(), 941247176494, "recv_time"); + + is($json->encode($msg->sid()), $json->encode($json->decode(q{{"code":59,"sat":38}})), "sid"); + + is($msg->sync_flags(), 90, "sync_flags"); + + is($json->encode($msg->tot()), $json->encode($json->decode(q{{"ns_residual":-811597120,"tow":1581737093,"wn":65492}})), "tot"); + + is($msg->tow_flags(), 219, "tow_flags"); + + is($msg->track_flags(), 67, "track_flags"); + + is($msg->uptime(), 3263741727, "uptime"); + + is($json->encode($msg), $json->encode($json->decode(q{{"acceleration":-114,"clock_drift":23311,"clock_offset":6012,"cn0":78,"corr_spacing":30201,"crc":25722,"doppler":1459556257,"doppler_std":63677,"l":{"f":204,"i":-1601767965},"length":57,"lock":65375,"misc_flags":62,"msg_type":33,"nav_flags":25,"p":1044286343,"p_std":21427,"payload":"Lh+0JtsAAACFZEdewAKgz9T/h4s+PrNT4/WGoMxOX/8mO6EP/1a9+B+/iMJ8Fw9b+XWOWttDGVM+","preamble":85,"pset_flags":83,"recv_time":941247176494,"sender":28315,"sid":{"code":59,"sat":38},"sync_flags":90,"tot":{"ns_residual":-811597120,"tow":1581737093,"wn":65492},"tow_flags":219,"track_flags":67,"uptime":3263741727}})), "raw_json"); +} +test_auto_check_sbp_tracking_msg_tracking_state_detailed_dep_a_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_user_MsgUserData.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_user_MsgUserData.t new file mode 100644 index 0000000000..e168e1a953 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_user_MsgUserData.t @@ -0,0 +1,56 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/user/test_MsgUserData.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_user_msg_user_data_1() { + my $buf = decode_base64("VQAIfiH/NQWsijIxzuqVzHEfbLyzmpynkYsqz37ywQk6SwiHC1yD9Rha/x46H22UOLKMHp9GEaoylAFjcFjZJFQi6lKQkGFgS64627SU9zsCdNZyN4Y2d2yASbUU6RcXSXeI570aroBdHkwtbYZRAHSefyiF0IZ/jOi3uGwG5DbuO9we5NQytmEUKUzjWAxfcNG3fwSlvSzv6IQJcrj50PbC+gJhrZ3KrLSW1cGx0ZwUrhJJhNdzgK+pdIRkSC0ZDs3VkUSJ+TYorteUpr4/dgal1EpEyCaL1HAtp+z/alyEOz3pA/aeU4b2mhEABjjYE9hGR6G4BbEtJWI4lQBJ3WnvqM1VUfU="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0xf551, "crc"); + + is($msg->{'length'}, 255, "length"); + + is($msg->{'msg_type'}, 0x800, "msg_type"); + + is($msg->{'payload'}, "NQWsijIxzuqVzHEfbLyzmpynkYsqz37ywQk6SwiHC1yD9Rha/x46H22UOLKMHp9GEaoylAFjcFjZJFQi6lKQkGFgS64627SU9zsCdNZyN4Y2d2yASbUU6RcXSXeI570aroBdHkwtbYZRAHSefyiF0IZ/jOi3uGwG5DbuO9we5NQytmEUKUzjWAxfcNG3fwSlvSzv6IQJcrj50PbC+gJhrZ3KrLSW1cGx0ZwUrhJJhNdzgK+pdIRkSC0ZDs3VkUSJ+TYorteUpr4/dgal1EpEyCaL1HAtp+z/alyEOz3pA/aeU4b2mhEABjjYE9hGR6G4BbEtJWI4lQBJ3WnvqM1V", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x217e, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($json->encode($msg->contents()), $json->encode($json->decode(q{[53,5,172,138,50,49,206,234,149,204,113,31,108,188,179,154,156,167,145,139,42,207,126,242,193,9,58,75,8,135,11,92,131,245,24,90,255,30,58,31,109,148,56,178,140,30,159,70,17,170,50,148,1,99,112,88,217,36,84,34,234,82,144,144,97,96,75,174,58,219,180,148,247,59,2,116,214,114,55,134,54,119,108,128,73,181,20,233,23,23,73,119,136,231,189,26,174,128,93,30,76,45,109,134,81,0,116,158,127,40,133,208,134,127,140,232,183,184,108,6,228,54,238,59,220,30,228,212,50,182,97,20,41,76,227,88,12,95,112,209,183,127,4,165,189,44,239,232,132,9,114,184,249,208,246,194,250,2,97,173,157,202,172,180,150,213,193,177,209,156,20,174,18,73,132,215,115,128,175,169,116,132,100,72,45,25,14,205,213,145,68,137,249,54,40,174,215,148,166,190,63,118,6,165,212,74,68,200,38,139,212,112,45,167,236,255,106,92,132,59,61,233,3,246,158,83,134,246,154,17,0,6,56,216,19,216,70,71,161,184,5,177,45,37,98,56,149,0,73,221,105,239,168,205,85]})), "contents"); + + is($json->encode($msg), $json->encode($json->decode(q{{"contents":[53,5,172,138,50,49,206,234,149,204,113,31,108,188,179,154,156,167,145,139,42,207,126,242,193,9,58,75,8,135,11,92,131,245,24,90,255,30,58,31,109,148,56,178,140,30,159,70,17,170,50,148,1,99,112,88,217,36,84,34,234,82,144,144,97,96,75,174,58,219,180,148,247,59,2,116,214,114,55,134,54,119,108,128,73,181,20,233,23,23,73,119,136,231,189,26,174,128,93,30,76,45,109,134,81,0,116,158,127,40,133,208,134,127,140,232,183,184,108,6,228,54,238,59,220,30,228,212,50,182,97,20,41,76,227,88,12,95,112,209,183,127,4,165,189,44,239,232,132,9,114,184,249,208,246,194,250,2,97,173,157,202,172,180,150,213,193,177,209,156,20,174,18,73,132,215,115,128,175,169,116,132,100,72,45,25,14,205,213,145,68,137,249,54,40,174,215,148,166,190,63,118,6,165,212,74,68,200,38,139,212,112,45,167,236,255,106,92,132,59,61,233,3,246,158,83,134,246,154,17,0,6,56,216,19,216,70,71,161,184,5,177,45,37,98,56,149,0,73,221,105,239,168,205,85],"crc":62801,"length":255,"msg_type":2048,"payload":"NQWsijIxzuqVzHEfbLyzmpynkYsqz37ywQk6SwiHC1yD9Rha/x46H22UOLKMHp9GEaoylAFjcFjZJFQi6lKQkGFgS64627SU9zsCdNZyN4Y2d2yASbUU6RcXSXeI570aroBdHkwtbYZRAHSefyiF0IZ/jOi3uGwG5DbuO9we5NQytmEUKUzjWAxfcNG3fwSlvSzv6IQJcrj50PbC+gJhrZ3KrLSW1cGx0ZwUrhJJhNdzgK+pdIRkSC0ZDs3VkUSJ+TYorteUpr4/dgal1EpEyCaL1HAtp+z/alyEOz3pA/aeU4b2mhEABjjYE9hGR6G4BbEtJWI4lQBJ3WnvqM1V","preamble":85,"sender":8574}})), "raw_json"); +} +test_auto_check_sbp_user_msg_user_data_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/perl/KaitaiSbp/t/auto_check_sbp_vehicle_MsgWheeltick.t b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_vehicle_MsgWheeltick.t new file mode 100644 index 0000000000..76c8716b36 --- /dev/null +++ b/kaitai/perl/KaitaiSbp/t/auto_check_sbp_vehicle_MsgWheeltick.t @@ -0,0 +1,62 @@ +#!/usr/bin/perl -w +# +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/vehicle/test_MsgWheeltick.yaml +# with generate.py. Do not modify by hand! + +use strict; + +BEGIN { + # add grandparent directory to include path + use Cwd qw(realpath); + use File::Basename; + unshift @INC, realpath(dirname($0))."/../../"; +} + +use KaitaiSbp::Sbp; +use KaitaiSbp::ParseUtils; +use IO::KaitaiStruct; +use Test::More; +use JSON::PP; +use MIME::Base64; +sub test_auto_check_sbp_vehicle_msg_wheeltick_1() { + my $buf = decode_base64("VQQJa0UO/htyLBoAAAABkuEzCdIkOA=="); + my $stream = IO::KaitaiStruct::Stream->new($buf); + my $msg = ParseUtils::get_flattened_msg(Sbp::SbpMessage->new($stream)); + + is($msg->{'crc'}, 0x3824, "crc"); + + is($msg->{'length'}, 14, "length"); + + is($msg->{'msg_type'}, 0x904, "msg_type"); + + is($msg->{'payload'}, "/htyLBoAAAABkuEzCdI=", "payload"); + + is($msg->{'preamble'}, 0x55, "preamble"); + + is($msg->{'sender'}, 0x456b, "sender"); + + my $json = JSON::PP->new->convert_blessed->canonical; + + is($msg->flags(), 1, "flags"); + + is($msg->source(), 146, "source"); + + is($msg->ticks(), -771148831, "ticks"); + + is($msg->time(), 112414825470, "time"); + + is($json->encode($msg), $json->encode($json->decode(q{{"crc":14372,"flags":1,"length":14,"msg_type":2308,"payload":"/htyLBoAAAABkuEzCdI=","preamble":85,"sender":17771,"source":146,"ticks":-771148831,"time":112414825470}})), "raw_json"); +} +test_auto_check_sbp_vehicle_msg_wheeltick_1(); + +done_testing(); \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/file_io.py b/kaitai/python/kaitai_sbp/file_io.py index 93194d204d..ba408972fc 100644 --- a/kaitai/python/kaitai_sbp/file_io.py +++ b/kaitai/python/kaitai_sbp/file_io.py @@ -150,12 +150,7 @@ def __init__(self, _io, _parent=None, _root=None): def _read(self): self.sequence = self._io.read_u4le() - self.contents = [] - i = 0 - while not self._io.is_eof(): - self.contents.append(self._io.read_u1()) - i += 1 - + self.contents = (self._io.read_bytes_full()).decode(u"ascii") class MsgFileioReadReq(KaitaiStruct): diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqResult.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqResult.py new file mode 100644 index 0000000000..da80d823b1 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqResult.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/acquisition/test_MsgAcqResult.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_acquisition_msg_acq_result_1(): + buf = base64.standard_b64decode("VS8AwwQOAABoQWZmkELNxABGCADPvQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xbdcf + + assert msg.length == 14 + + assert msg.msg_type == 0x2f + + assert msg.payload == "AABoQWZmkELNxABGCAA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.cf) == 8241.2001953125 + + assert dictify(msg.cn0) == 14.5 + + assert dictify(msg.cp) == 72.19999694824219 + + assert dictify(msg.sid) == {'code': 0, 'sat': 8} + + assert dictify(msg) == {'preamble': 85, 'msg_type': 47, 'sender': 1219, 'length': 14, 'payload': 'AABoQWZmkELNxABGCAA=', 'crc': 48591, 'cn0': 14.5, 'cp': 72.19999694824219, 'cf': 8241.2001953125, 'sid': {'sat': 8, 'code': 0}} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfile.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfile.py new file mode 100644 index 0000000000..42ed17311d --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfile.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/acquisition/test_MsgAcqSvProfile.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_acquisition_msg_acq_sv_profile_1(): + buf = base64.standard_b64decode("VS4AwwRjBw0mAGEWAK4ANAAAADEAAAA9AAAAkwAAAC8AAACMAAAAptI7AP0XAXkAvgAAAK8AAACvAAAAjgAAAO0AAAAMAAAAflgVAJkYAAgAggAAAKwAAABbAAAAvwAAAFQAAABSAAAAqLE=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xb1a8 + + assert msg.length == 99 + + assert msg.msg_type == 0x2e + + assert msg.payload == "Bw0mAGEWAK4ANAAAADEAAAA9AAAAkwAAAC8AAACMAAAAptI7AP0XAXkAvgAAAK8AAACvAAAAjgAAAO0AAAAMAAAAflgVAJkYAAgAggAAAKwAAABbAAAAvwAAAFQAAABSAAAA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.acq_sv_profile) == [{'bin_width': 174, 'cf': 47, 'cf_max': 147, 'cf_min': 61, 'cn0': 38, 'cp': 140, 'int_time': 97, 'job_type': 7, 'sid': {'code': 0, 'sat': 22}, 'status': 13, 'time_spent': 49, 'timestamp': 52}, {'bin_width': 121, 'cf': 237, 'cf_max': 142, 'cf_min': 175, 'cn0': 59, 'cp': 12, 'int_time': 253, 'job_type': 166, 'sid': {'code': 1, 'sat': 23}, 'status': 210, 'time_spent': 175, 'timestamp': 190}, {'bin_width': 8, 'cf': 84, 'cf_max': 191, 'cf_min': 91, 'cn0': 21, 'cp': 82, 'int_time': 153, 'job_type': 126, 'sid': {'code': 0, 'sat': 24}, 'status': 88, 'time_spent': 172, 'timestamp': 130}] + + assert dictify(msg) == {'crc': 45480, 'length': 99, 'msg_type': 46, 'payload': 'Bw0mAGEWAK4ANAAAADEAAAA9AAAAkwAAAC8AAACMAAAAptI7AP0XAXkAvgAAAK8AAACvAAAAjgAAAO0AAAAMAAAAflgVAJkYAAgAggAAAKwAAABbAAAAvwAAAFQAAABSAAAA', 'preamble': 85, 'sender': 1219, 'acq_sv_profile': [{'job_type': 7, 'status': 13, 'cn0': 38, 'int_time': 97, 'sid': {'sat': 22, 'code': 0}, 'bin_width': 174, 'timestamp': 52, 'time_spent': 49, 'cf_min': 61, 'cf_max': 147, 'cf': 47, 'cp': 140}, {'job_type': 166, 'status': 210, 'cn0': 59, 'int_time': 253, 'sid': {'sat': 23, 'code': 1}, 'bin_width': 121, 'timestamp': 190, 'time_spent': 175, 'cf_min': 175, 'cf_max': 142, 'cf': 237, 'cp': 12}, {'job_type': 126, 'status': 88, 'cn0': 21, 'int_time': 153, 'sid': {'sat': 24, 'code': 0}, 'bin_width': 8, 'timestamp': 130, 'time_spent': 172, 'cf_min': 91, 'cf_max': 191, 'cf': 84, 'cp': 82}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfileDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfileDep.py new file mode 100644 index 0000000000..24c41aad77 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_acquisition_MsgAcqSvProfileDep.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/acquisition/test_MsgAcqSvProfileDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_acquisition_msg_acq_sv_profile_dep_1(): + buf = base64.standard_b64decode("VR4AwwRpQ2eXAAwWAAAAuwBbAAAASwAAAIQAAAAkAAAAPAAAAPEAAADuJm8AsxcAAQCwAKYAAADqAAAAmwAAABgAAADUAAAA9wAAAI7VRAA1GAAAADQAMQAAAPUAAABMAAAA+AAAANQAAABlAAAAQ4Q=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x8443 + + assert msg.length == 105 + + assert msg.msg_type == 0x1e + + assert msg.payload == "Q2eXAAwWAAAAuwBbAAAASwAAAIQAAAAkAAAAPAAAAPEAAADuJm8AsxcAAQCwAKYAAADqAAAAmwAAABgAAADUAAAA9wAAAI7VRAA1GAAAADQAMQAAAPUAAABMAAAA+AAAANQAAABlAAAA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.acq_sv_profile) == [{'bin_width': 187, 'cf': 60, 'cf_max': 36, 'cf_min': 132, 'cn0': 151, 'cp': 241, 'int_time': 12, 'job_type': 67, 'sid': {'code': 0, 'reserved': 0, 'sat': 22}, 'status': 103, 'time_spent': 75, 'timestamp': 91}, {'bin_width': 176, 'cf': 212, 'cf_max': 24, 'cf_min': 155, 'cn0': 111, 'cp': 247, 'int_time': 179, 'job_type': 238, 'sid': {'code': 1, 'reserved': 0, 'sat': 23}, 'status': 38, 'time_spent': 234, 'timestamp': 166}, {'bin_width': 52, 'cf': 212, 'cf_max': 248, 'cf_min': 76, 'cn0': 68, 'cp': 101, 'int_time': 53, 'job_type': 142, 'sid': {'code': 0, 'reserved': 0, 'sat': 24}, 'status': 213, 'time_spent': 245, 'timestamp': 49}] + + assert dictify(msg) == {'crc': 33859, 'length': 105, 'msg_type': 30, 'payload': 'Q2eXAAwWAAAAuwBbAAAASwAAAIQAAAAkAAAAPAAAAPEAAADuJm8AsxcAAQCwAKYAAADqAAAAmwAAABgAAADUAAAA9wAAAI7VRAA1GAAAADQAMQAAAPUAAABMAAAA+AAAANQAAABlAAAA', 'preamble': 85, 'sender': 1219, 'acq_sv_profile': [{'job_type': 67, 'status': 103, 'cn0': 151, 'int_time': 12, 'sid': {'sat': 22, 'code': 0, 'reserved': 0}, 'bin_width': 187, 'timestamp': 91, 'time_spent': 75, 'cf_min': 132, 'cf_max': 36, 'cf': 60, 'cp': 241}, {'job_type': 238, 'status': 38, 'cn0': 111, 'int_time': 179, 'sid': {'sat': 23, 'code': 1, 'reserved': 0}, 'bin_width': 176, 'timestamp': 166, 'time_spent': 234, 'cf_min': 155, 'cf_max': 24, 'cf': 212, 'cp': 247}, {'job_type': 142, 'status': 213, 'cn0': 68, 'int_time': 53, 'sid': {'sat': 24, 'code': 0, 'reserved': 0}, 'bin_width': 52, 'timestamp': 49, 'time_spent': 245, 'cf_min': 76, 'cf_max': 248, 'cf': 212, 'cp': 101}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderHandshakeReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderHandshakeReq.py new file mode 100644 index 0000000000..2341bf9498 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderHandshakeReq.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgBootloaderHandshakeReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_bootload_msg_bootloader_handshake_req_1(): + buf = base64.standard_b64decode("VbMAiPcAQdg=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xd841 + + assert msg.length == 0 + + assert msg.msg_type == 0xb3 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf788 + + assert dictify(msg) == {'crc': 55361, 'length': 0, 'msg_type': 179, 'payload': '', 'preamble': 85, 'sender': 63368} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderJumptoApp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderJumptoApp.py new file mode 100644 index 0000000000..84f747c08d --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgBootloaderJumptoApp.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgBootloaderJumptoApp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_bootload_msg_bootloader_jumpto_app_1(): + buf = base64.standard_b64decode("VbEAzRIB2Glg") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x6069 + + assert msg.length == 1 + + assert msg.msg_type == 0xb1 + + assert msg.payload == "2A==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x12cd + + assert dictify(msg.jump) == 216 + + assert dictify(msg) == {'crc': 24681, 'length': 1, 'msg_type': 177, 'payload': '2A==', 'preamble': 85, 'sender': 4813, 'jump': 216} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaReq.py new file mode 100644 index 0000000000..e221a9d8b6 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaReq.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgNapDeviceDnaReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_bootload_msg_nap_device_dna_req_1(): + buf = base64.standard_b64decode("Vd4AgDIA56A=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xa0e7 + + assert msg.length == 0 + + assert msg.msg_type == 0xde + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x3280 + + assert dictify(msg) == {'crc': 41191, 'length': 0, 'msg_type': 222, 'payload': '', 'preamble': 85, 'sender': 12928} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaResp.py new file mode 100644 index 0000000000..ede0ffa76a --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_bootload_MsgNapDeviceDnaResp.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/bootload/test_MsgNapDeviceDnaResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_bootload_msg_nap_device_dna_resp_1(): + buf = base64.standard_b64decode("Vd0AqTgIArsBgq30Q3pGWw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x5b46 + + assert msg.length == 8 + + assert msg.msg_type == 0xdd + + assert msg.payload == "ArsBgq30Q3o=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x38a9 + + assert dictify(msg.dna) == [2, 187, 1, 130, 173, 244, 67, 122] + + assert dictify(msg) == {'crc': 23366, 'length': 8, 'msg_type': 221, 'payload': 'ArsBgq30Q3o=', 'preamble': 85, 'sender': 14505, 'dna': [2, 187, 1, 130, 173, 244, 67, 122]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigReq.py new file mode 100644 index 0000000000..ee089e2cc0 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigReq.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioConfigReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_file_io_msg_fileio_config_req_1(): + buf = base64.standard_b64decode("VQEQwwQEa9pFWrkb") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x1bb9 + + assert msg.length == 4 + + assert msg.msg_type == 0x1001 + + assert msg.payload == "a9pFWg==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.sequence) == 1514527339 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 4097, 'sender': 1219, 'length': 4, 'payload': 'a9pFWg==', 'crc': 7097, 'sequence': 1514527339} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigResp.py new file mode 100644 index 0000000000..1b5fa99a1c --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioConfigResp.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioConfigResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_file_io_msg_fileio_config_resp_1(): + buf = base64.standard_b64decode("VQIQwwQQqkw0W5W6LAPYl/89DGFCkO9z") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x73ef + + assert msg.length == 16 + + assert msg.msg_type == 0x1002 + + assert msg.payload == "qkw0W5W6LAPYl/89DGFCkA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.batch_size) == 1040160728 + + assert dictify(msg.fileio_version) == 2420269324 + + assert dictify(msg.sequence) == 1530154154 + + assert dictify(msg.window_size) == 53262997 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 4098, 'sender': 1219, 'length': 16, 'payload': 'qkw0W5W6LAPYl/89DGFCkA==', 'crc': 29679, 'sequence': 1530154154, 'window_size': 53262997, 'batch_size': 1040160728, 'fileio_version': 2420269324} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirReq.py new file mode 100644 index 0000000000..5f70881d40 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirReq.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadDirReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_file_io_msg_fileio_read_dir_req_1(): + buf = base64.standard_b64decode("VakAwwQaguf/WsSGL4Yvc29tZS9yYW5kb20vcGF0aAAaug==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xba1a + + assert msg.length == 26 + + assert msg.msg_type == 0xa9 + + assert msg.payload == "guf/WsSGL4Yvc29tZS9yYW5kb20vcGF0aAA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.dirname) == "/some/random/path\x00" + + assert dictify(msg.offset) == 2251261636 + + assert dictify(msg.sequence) == 1526720386 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 169, 'sender': 1219, 'length': 26, 'payload': 'guf/WsSGL4Yvc29tZS9yYW5kb20vcGF0aAA=', 'crc': 47642, 'sequence': 1526720386, 'offset': 2251261636, 'dirname': '/some/random/path\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirResp.py new file mode 100644 index 0000000000..d44c50f80d --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadDirResp.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadDirResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_file_io_msg_fileio_read_dir_resp_1(): + buf = base64.standard_b64decode("VaoAwwQtTv3g62ZpbGUxAGFub3RoZXIgZmlsZQBkZWZpbml0ZWx5IG5vdCBhIGZpbGUAuok=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x89ba + + assert msg.length == 45 + + assert msg.msg_type == 0xaa + + assert msg.payload == "Tv3g62ZpbGUxAGFub3RoZXIgZmlsZQBkZWZpbml0ZWx5IG5vdCBhIGZpbGUA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.contents) == "file1\x00another file\x00definitely not a file\x00" + + assert dictify(msg.sequence) == 3957390670 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 170, 'sender': 1219, 'length': 45, 'payload': 'Tv3g62ZpbGUxAGFub3RoZXIgZmlsZQBkZWZpbml0ZWx5IG5vdCBhIGZpbGUA', 'crc': 35258, 'sequence': 3957390670, 'contents': 'file1\x00another file\x00definitely not a file\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadReq.py new file mode 100644 index 0000000000..81163258d4 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadReq.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_file_io_msg_fileio_read_req_1(): + buf = base64.standard_b64decode("VagAwwQcIpyCKGKyvhc1L3BhdGgvdG8vc29tZS9maWxlAFZk") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x6456 + + assert msg.length == 28 + + assert msg.msg_type == 0xa8 + + assert msg.payload == "IpyCKGKyvhc1L3BhdGgvdG8vc29tZS9maWxlAA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.chunk_size) == 53 + + assert dictify(msg.filename) == "/path/to/some/file\x00" + + assert dictify(msg.offset) == 398373474 + + assert dictify(msg.sequence) == 679648290 + + assert dictify(msg) == {'crc': 25686, 'length': 28, 'msg_type': 168, 'payload': 'IpyCKGKyvhc1L3BhdGgvdG8vc29tZS9maWxlAA==', 'preamble': 85, 'sender': 1219, 'sequence': 679648290, 'offset': 398373474, 'chunk_size': 53, 'filename': '/path/to/some/file\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadResp.py new file mode 100644 index 0000000000..6ad3359d20 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioReadResp.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioReadResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_file_io_msg_fileio_read_resp_1(): + buf = base64.standard_b64decode("VaMAwwT/Q7dzD0nn47MSTETl2BVit0W+BfywNyBOCDR/MkdqPU+/ai5Pdvh2z87SW0n7UYPNwZLOuYz5o+dBQ176bZhfe03gfO7NQWcjaNEFvy/5sKbVLsBWIGeS/AQQNqE8Bg2/dLYqv9UU2QiOu+54uPoflyUzsYK+m0dEOO5cgiWJkvZydIql2U8KvYC9AvBcHH5p7OTCADM9SikK74Vqvh4bA/DN/XEZHLtRZdh5KbN4mBJ0NdRkAnLGyAqTGSFz0HE8s7cAKdnO/9Phjr+FUQ/4wUK/9N34x/FwMwG0tH1hkRlI0tfQD344JkEEQBNK329tNCunuspvC1sV7OrEJKuTCvA=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf00a + + assert msg.length == 255 + + assert msg.msg_type == 0xa3 + + assert msg.payload == "Q7dzD0nn47MSTETl2BVit0W+BfywNyBOCDR/MkdqPU+/ai5Pdvh2z87SW0n7UYPNwZLOuYz5o+dBQ176bZhfe03gfO7NQWcjaNEFvy/5sKbVLsBWIGeS/AQQNqE8Bg2/dLYqv9UU2QiOu+54uPoflyUzsYK+m0dEOO5cgiWJkvZydIql2U8KvYC9AvBcHH5p7OTCADM9SikK74Vqvh4bA/DN/XEZHLtRZdh5KbN4mBJ0NdRkAnLGyAqTGSFz0HE8s7cAKdnO/9Phjr+FUQ/4wUK/9N34x/FwMwG0tH1hkRlI0tfQD344JkEEQBNK329tNCunuspvC1sV7OrEJKuT" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.contents) == [73, 231, 227, 179, 18, 76, 68, 229, 216, 21, 98, 183, 69, 190, 5, 252, 176, 55, 32, 78, 8, 52, 127, 50, 71, 106, 61, 79, 191, 106, 46, 79, 118, 248, 118, 207, 206, 210, 91, 73, 251, 81, 131, 205, 193, 146, 206, 185, 140, 249, 163, 231, 65, 67, 94, 250, 109, 152, 95, 123, 77, 224, 124, 238, 205, 65, 103, 35, 104, 209, 5, 191, 47, 249, 176, 166, 213, 46, 192, 86, 32, 103, 146, 252, 4, 16, 54, 161, 60, 6, 13, 191, 116, 182, 42, 191, 213, 20, 217, 8, 142, 187, 238, 120, 184, 250, 31, 151, 37, 51, 177, 130, 190, 155, 71, 68, 56, 238, 92, 130, 37, 137, 146, 246, 114, 116, 138, 165, 217, 79, 10, 189, 128, 189, 2, 240, 92, 28, 126, 105, 236, 228, 194, 0, 51, 61, 74, 41, 10, 239, 133, 106, 190, 30, 27, 3, 240, 205, 253, 113, 25, 28, 187, 81, 101, 216, 121, 41, 179, 120, 152, 18, 116, 53, 212, 100, 2, 114, 198, 200, 10, 147, 25, 33, 115, 208, 113, 60, 179, 183, 0, 41, 217, 206, 255, 211, 225, 142, 191, 133, 81, 15, 248, 193, 66, 191, 244, 221, 248, 199, 241, 112, 51, 1, 180, 180, 125, 97, 145, 25, 72, 210, 215, 208, 15, 126, 56, 38, 65, 4, 64, 19, 74, 223, 111, 109, 52, 43, 167, 186, 202, 111, 11, 91, 21, 236, 234, 196, 36, 171, 147] + + assert dictify(msg.sequence) == 259241795 + + assert dictify(msg) == {'crc': 61450, 'length': 255, 'msg_type': 163, 'payload': 'Q7dzD0nn47MSTETl2BVit0W+BfywNyBOCDR/MkdqPU+/ai5Pdvh2z87SW0n7UYPNwZLOuYz5o+dBQ176bZhfe03gfO7NQWcjaNEFvy/5sKbVLsBWIGeS/AQQNqE8Bg2/dLYqv9UU2QiOu+54uPoflyUzsYK+m0dEOO5cgiWJkvZydIql2U8KvYC9AvBcHH5p7OTCADM9SikK74Vqvh4bA/DN/XEZHLtRZdh5KbN4mBJ0NdRkAnLGyAqTGSFz0HE8s7cAKdnO/9Phjr+FUQ/4wUK/9N34x/FwMwG0tH1hkRlI0tfQD344JkEEQBNK329tNCunuspvC1sV7OrEJKuT', 'preamble': 85, 'sender': 1219, 'sequence': 259241795, 'contents': [73, 231, 227, 179, 18, 76, 68, 229, 216, 21, 98, 183, 69, 190, 5, 252, 176, 55, 32, 78, 8, 52, 127, 50, 71, 106, 61, 79, 191, 106, 46, 79, 118, 248, 118, 207, 206, 210, 91, 73, 251, 81, 131, 205, 193, 146, 206, 185, 140, 249, 163, 231, 65, 67, 94, 250, 109, 152, 95, 123, 77, 224, 124, 238, 205, 65, 103, 35, 104, 209, 5, 191, 47, 249, 176, 166, 213, 46, 192, 86, 32, 103, 146, 252, 4, 16, 54, 161, 60, 6, 13, 191, 116, 182, 42, 191, 213, 20, 217, 8, 142, 187, 238, 120, 184, 250, 31, 151, 37, 51, 177, 130, 190, 155, 71, 68, 56, 238, 92, 130, 37, 137, 146, 246, 114, 116, 138, 165, 217, 79, 10, 189, 128, 189, 2, 240, 92, 28, 126, 105, 236, 228, 194, 0, 51, 61, 74, 41, 10, 239, 133, 106, 190, 30, 27, 3, 240, 205, 253, 113, 25, 28, 187, 81, 101, 216, 121, 41, 179, 120, 152, 18, 116, 53, 212, 100, 2, 114, 198, 200, 10, 147, 25, 33, 115, 208, 113, 60, 179, 183, 0, 41, 217, 206, 255, 211, 225, 142, 191, 133, 81, 15, 248, 193, 66, 191, 244, 221, 248, 199, 241, 112, 51, 1, 180, 180, 125, 97, 145, 25, 72, 210, 215, 208, 15, 126, 56, 38, 65, 4, 64, 19, 74, 223, 111, 109, 52, 43, 167, 186, 202, 111, 11, 91, 21, 236, 234, 196, 36, 171, 147]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioRemove.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioRemove.py new file mode 100644 index 0000000000..c1b4e1a779 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_file_io_MsgFileioRemove.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/file_io/test_MsgFileioRemove.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_file_io_msg_fileio_remove_1(): + buf = base64.standard_b64decode("VawAwwQOL3BhdGgvdG8vZmlsZQAu8w==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf32e + + assert msg.length == 14 + + assert msg.msg_type == 0xac + + assert msg.payload == "L3BhdGgvdG8vZmlsZQA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.filename) == "/path/to/file\x00" + + assert dictify(msg) == {'crc': 62254, 'length': 14, 'msg_type': 172, 'payload': 'L3BhdGgvdG8vZmlsZQA=', 'preamble': 85, 'sender': 1219, 'filename': '/path/to/file\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashDone.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashDone.py new file mode 100644 index 0000000000..07bed90e8a --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashDone.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashDone.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_flash_done_1(): + buf = base64.standard_b64decode("VeAAwwQBUgY2") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x3606 + + assert msg.length == 1 + + assert msg.msg_type == 0xe0 + + assert msg.payload == "Ug==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.response) == 82 + + assert dictify(msg) == {'crc': 13830, 'length': 1, 'msg_type': 224, 'payload': 'Ug==', 'preamble': 85, 'sender': 1219, 'response': 82} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashErase.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashErase.py new file mode 100644 index 0000000000..2181d13641 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashErase.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashErase.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_flash_erase_1(): + buf = base64.standard_b64decode("VeIAwwQFSu6xdoQA+w==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xfb00 + + assert msg.length == 5 + + assert msg.msg_type == 0xe2 + + assert msg.payload == "Su6xdoQ=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.sector_num) == 2222371310 + + assert dictify(msg.target) == 74 + + assert dictify(msg) == {'crc': 64256, 'length': 5, 'msg_type': 226, 'payload': 'Su6xdoQ=', 'preamble': 85, 'sender': 1219, 'target': 74, 'sector_num': 2222371310} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashProgram.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashProgram.py new file mode 100644 index 0000000000..d52ed020cc --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashProgram.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashProgram.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_flash_program_1(): + buf = base64.standard_b64decode("VeYAwwT/1Fc09Pqw3utqkB2N/wMQwO2s/tUE3GIi3ubWBtmsei4NJvDsPHkv/KON3h2o1nY3yekV1jn19hMDeTHnJbo67mInRuiFGQqGgUXkhglYt4Wr/6ZkmOdcCcRq9h2RnJcgQ7w/6Y6ui5p/Izw4u3lnh5i2WKD/4/A2ZFsfjWaC/jbj5T414Y9Yi37r6yM2hqNcOVeCshaeEu3Ru+IBLkDi69W6n926GXNUg6fJaAHIDTJHScHJ+qzBDRTugvNEBEguwnH/7g/mQLJ/2VygyXajkDocrkFJLXt2U2vvqCDUv1Fdut8gEzqJSNmX+1MUcSWXIiVHX2nrkKRTxf6331sTLeM=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xe32d + + assert msg.length == 255 + + assert msg.msg_type == 0xe6 + + assert msg.payload == "1Fc09Pqw3utqkB2N/wMQwO2s/tUE3GIi3ubWBtmsei4NJvDsPHkv/KON3h2o1nY3yekV1jn19hMDeTHnJbo67mInRuiFGQqGgUXkhglYt4Wr/6ZkmOdcCcRq9h2RnJcgQ7w/6Y6ui5p/Izw4u3lnh5i2WKD/4/A2ZFsfjWaC/jbj5T414Y9Yi37r6yM2hqNcOVeCshaeEu3Ru+IBLkDi69W6n926GXNUg6fJaAHIDTJHScHJ+qzBDRTugvNEBEguwnH/7g/mQLJ/2VygyXajkDocrkFJLXt2U2vvqCDUv1Fdut8gEzqJSNmX+1MUcSWXIiVHX2nrkKRTxf6331sT" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.addr_len) == 250 + + assert dictify(msg.addr_start) == [87, 52, 244] + + assert dictify(msg.data) == [176, 222, 235, 106, 144, 29, 141, 255, 3, 16, 192, 237, 172, 254, 213, 4, 220, 98, 34, 222, 230, 214, 6, 217, 172, 122, 46, 13, 38, 240, 236, 60, 121, 47, 252, 163, 141, 222, 29, 168, 214, 118, 55, 201, 233, 21, 214, 57, 245, 246, 19, 3, 121, 49, 231, 37, 186, 58, 238, 98, 39, 70, 232, 133, 25, 10, 134, 129, 69, 228, 134, 9, 88, 183, 133, 171, 255, 166, 100, 152, 231, 92, 9, 196, 106, 246, 29, 145, 156, 151, 32, 67, 188, 63, 233, 142, 174, 139, 154, 127, 35, 60, 56, 187, 121, 103, 135, 152, 182, 88, 160, 255, 227, 240, 54, 100, 91, 31, 141, 102, 130, 254, 54, 227, 229, 62, 53, 225, 143, 88, 139, 126, 235, 235, 35, 54, 134, 163, 92, 57, 87, 130, 178, 22, 158, 18, 237, 209, 187, 226, 1, 46, 64, 226, 235, 213, 186, 159, 221, 186, 25, 115, 84, 131, 167, 201, 104, 1, 200, 13, 50, 71, 73, 193, 201, 250, 172, 193, 13, 20, 238, 130, 243, 68, 4, 72, 46, 194, 113, 255, 238, 15, 230, 64, 178, 127, 217, 92, 160, 201, 118, 163, 144, 58, 28, 174, 65, 73, 45, 123, 118, 83, 107, 239, 168, 32, 212, 191, 81, 93, 186, 223, 32, 19, 58, 137, 72, 217, 151, 251, 83, 20, 113, 37, 151, 34, 37, 71, 95, 105, 235, 144, 164, 83, 197, 254, 183, 223, 91, 19] + + assert dictify(msg.target) == 212 + + assert dictify(msg) == {'crc': 58157, 'length': 255, 'msg_type': 230, 'payload': '1Fc09Pqw3utqkB2N/wMQwO2s/tUE3GIi3ubWBtmsei4NJvDsPHkv/KON3h2o1nY3yekV1jn19hMDeTHnJbo67mInRuiFGQqGgUXkhglYt4Wr/6ZkmOdcCcRq9h2RnJcgQ7w/6Y6ui5p/Izw4u3lnh5i2WKD/4/A2ZFsfjWaC/jbj5T414Y9Yi37r6yM2hqNcOVeCshaeEu3Ru+IBLkDi69W6n926GXNUg6fJaAHIDTJHScHJ+qzBDRTugvNEBEguwnH/7g/mQLJ/2VygyXajkDocrkFJLXt2U2vvqCDUv1Fdut8gEzqJSNmX+1MUcSWXIiVHX2nrkKRTxf6331sT', 'preamble': 85, 'sender': 1219, 'target': 212, 'addr_start': [87, 52, 244], 'addr_len': 250, 'data': [176, 222, 235, 106, 144, 29, 141, 255, 3, 16, 192, 237, 172, 254, 213, 4, 220, 98, 34, 222, 230, 214, 6, 217, 172, 122, 46, 13, 38, 240, 236, 60, 121, 47, 252, 163, 141, 222, 29, 168, 214, 118, 55, 201, 233, 21, 214, 57, 245, 246, 19, 3, 121, 49, 231, 37, 186, 58, 238, 98, 39, 70, 232, 133, 25, 10, 134, 129, 69, 228, 134, 9, 88, 183, 133, 171, 255, 166, 100, 152, 231, 92, 9, 196, 106, 246, 29, 145, 156, 151, 32, 67, 188, 63, 233, 142, 174, 139, 154, 127, 35, 60, 56, 187, 121, 103, 135, 152, 182, 88, 160, 255, 227, 240, 54, 100, 91, 31, 141, 102, 130, 254, 54, 227, 229, 62, 53, 225, 143, 88, 139, 126, 235, 235, 35, 54, 134, 163, 92, 57, 87, 130, 178, 22, 158, 18, 237, 209, 187, 226, 1, 46, 64, 226, 235, 213, 186, 159, 221, 186, 25, 115, 84, 131, 167, 201, 104, 1, 200, 13, 50, 71, 73, 193, 201, 250, 172, 193, 13, 20, 238, 130, 243, 68, 4, 72, 46, 194, 113, 255, 238, 15, 230, 64, 178, 127, 217, 92, 160, 201, 118, 163, 144, 58, 28, 174, 65, 73, 45, 123, 118, 83, 107, 239, 168, 32, 212, 191, 81, 93, 186, 223, 32, 19, 58, 137, 72, 217, 151, 251, 83, 20, 113, 37, 151, 34, 37, 71, 95, 105, 235, 144, 164, 83, 197, 254, 183, 223, 91, 19]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadReq.py new file mode 100644 index 0000000000..28052146f3 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadReq.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashReadReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_flash_read_req_1(): + buf = base64.standard_b64decode("VecAwwQF8RxL9EfSOQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x39d2 + + assert msg.length == 5 + + assert msg.msg_type == 0xe7 + + assert msg.payload == "8RxL9Ec=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.addr_len) == 71 + + assert dictify(msg.addr_start) == [28, 75, 244] + + assert dictify(msg.target) == 241 + + assert dictify(msg) == {'crc': 14802, 'length': 5, 'msg_type': 231, 'payload': '8RxL9Ec=', 'preamble': 85, 'sender': 1219, 'target': 241, 'addr_start': [28, 75, 244], 'addr_len': 71} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadResp.py new file mode 100644 index 0000000000..e799039576 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgFlashReadResp.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgFlashReadResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_flash_read_resp_1(): + buf = base64.standard_b64decode("VeEAwwQFiJs0rHyVhw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x8795 + + assert msg.length == 5 + + assert msg.msg_type == 0xe1 + + assert msg.payload == "iJs0rHw=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.addr_len) == 124 + + assert dictify(msg.addr_start) == [155, 52, 172] + + assert dictify(msg.target) == 136 + + assert dictify(msg) == {'crc': 34709, 'length': 5, 'msg_type': 225, 'payload': 'iJs0rHw=', 'preamble': 85, 'sender': 1219, 'target': 136, 'addr_start': [155, 52, 172], 'addr_len': 124} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgM25FlashWriteStatus.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgM25FlashWriteStatus.py new file mode 100644 index 0000000000..9fb4c44877 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgM25FlashWriteStatus.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgM25FlashWriteStatus.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_m25_flash_write_status_1(): + buf = base64.standard_b64decode("VfMAwwQBBXDI") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xc870 + + assert msg.length == 1 + + assert msg.msg_type == 0xf3 + + assert msg.payload == "BQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.status) == [5] + + assert dictify(msg) == {'crc': 51312, 'length': 1, 'msg_type': 243, 'payload': 'BQ==', 'preamble': 85, 'sender': 1219, 'status': [5]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashLockSector.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashLockSector.py new file mode 100644 index 0000000000..21b85490ee --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashLockSector.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmFlashLockSector.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_stm_flash_lock_sector_1(): + buf = base64.standard_b64decode("VeMAwwQEoffFQ+Ug") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x20e5 + + assert msg.length == 4 + + assert msg.msg_type == 0xe3 + + assert msg.payload == "offFQw==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.sector) == 1137047457 + + assert dictify(msg) == {'crc': 8421, 'length': 4, 'msg_type': 227, 'payload': 'offFQw==', 'preamble': 85, 'sender': 1219, 'sector': 1137047457} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashUnlockSector.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashUnlockSector.py new file mode 100644 index 0000000000..b3c3826384 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmFlashUnlockSector.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmFlashUnlockSector.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_stm_flash_unlock_sector_1(): + buf = base64.standard_b64decode("VeQAwwQEHxDnMTXZ") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xd935 + + assert msg.length == 4 + + assert msg.msg_type == 0xe4 + + assert msg.payload == "HxDnMQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.sector) == 837226527 + + assert dictify(msg) == {'crc': 55605, 'length': 4, 'msg_type': 228, 'payload': 'HxDnMQ==', 'preamble': 85, 'sender': 1219, 'sector': 837226527} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdReq.py new file mode 100644 index 0000000000..4bb43e25c7 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdReq.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmUniqueIdReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_stm_unique_id_req_1(): + buf = base64.standard_b64decode("VegAwwQAQoo=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x8a42 + + assert msg.length == 0 + + assert msg.msg_type == 0xe8 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg) == {'crc': 35394, 'length': 0, 'msg_type': 232, 'payload': '', 'preamble': 85, 'sender': 1219} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdResp.py new file mode 100644 index 0000000000..7809155c69 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_flash_MsgStmUniqueIdResp.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/flash/test_MsgStmUniqueIdResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_flash_msg_stm_unique_id_resp_1(): + buf = base64.standard_b64decode("VeUAwwQMxBAPo1Xdd2YgwjiQ3cQ=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xc4dd + + assert msg.length == 12 + + assert msg.msg_type == 0xe5 + + assert msg.payload == "xBAPo1Xdd2YgwjiQ" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.stm_id) == [196, 16, 15, 163, 85, 221, 119, 102, 32, 194, 56, 144] + + assert dictify(msg) == {'crc': 50397, 'length': 12, 'msg_type': 229, 'payload': 'xBAPo1Xdd2YgwjiQ', 'preamble': 85, 'sender': 1219, 'stm_id': [196, 16, 15, 163, 85, 221, 119, 102, 32, 194, 56, 144]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuState.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuState.py new file mode 100644 index 0000000000..0597b5cbee --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuState.py @@ -0,0 +1,53 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxCpuState.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_cpu_state_1(): + buf = base64.standard_b64decode("VQh/lIVGZXrDYtcjXusUcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNETl") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xe544 + + assert msg.length == 70 + + assert msg.msg_type == 0x7f08 + + assert msg.payload == "ZXrDYtcjXusUcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x8594 + + assert dictify(msg.cmdline) == "/path/to/process-name arg0 arg1 arg2 arg3 arg4" + + assert dictify(msg.flags) == 20 + + assert dictify(msg.index) == 101 + + assert dictify(msg.pcpu) == 98 + + assert dictify(msg.pid) == 50042 + + assert dictify(msg.time) == 3948815319 + + assert dictify(msg.tname) == "process-name\x00\x00\x00" + + assert dictify(msg) == {'crc': 58692, 'length': 70, 'msg_type': 32520, 'payload': 'ZXrDYtcjXusUcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==', 'preamble': 85, 'sender': 34196, 'index': 101, 'pid': 50042, 'pcpu': 98, 'time': 3948815319, 'flags': 20, 'tname': 'process-name\x00\x00\x00', 'cmdline': '/path/to/process-name arg0 arg1 arg2 arg3 arg4'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuStateDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuStateDepA.py new file mode 100644 index 0000000000..8c82e5c189 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxCpuStateDepA.py @@ -0,0 +1,49 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxCpuStateDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_cpu_state_dep_a_1(): + buf = base64.standard_b64decode("VQB/DFtBM/D6snByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzRQMA==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x3050 + + assert msg.length == 65 + + assert msg.msg_type == 0x7f00 + + assert msg.payload == "M/D6snByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x5b0c + + assert dictify(msg.cmdline) == "/path/to/process-name arg0 arg1 arg2 arg3 arg4" + + assert dictify(msg.index) == 51 + + assert dictify(msg.pcpu) == 178 + + assert dictify(msg.pid) == 64240 + + assert dictify(msg.tname) == "process-name\x00\x00\x00" + + assert dictify(msg) == {'crc': 12368, 'length': 65, 'msg_type': 32512, 'payload': 'M/D6snByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=', 'preamble': 85, 'sender': 23308, 'index': 51, 'pid': 64240, 'pcpu': 178, 'tname': 'process-name\x00\x00\x00', 'cmdline': '/path/to/process-name arg0 arg1 arg2 arg3 arg4'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemState.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemState.py new file mode 100644 index 0000000000..ba3cf71280 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemState.py @@ -0,0 +1,53 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxMemState.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_mem_state_1(): + buf = base64.standard_b64decode("VQl/X/1Gmr/fE/c1GrtMcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNAO1") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xb503 + + assert msg.length == 70 + + assert msg.msg_type == 0x7f09 + + assert msg.payload == "mr/fE/c1GrtMcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xfd5f + + assert dictify(msg.cmdline) == "/path/to/process-name arg0 arg1 arg2 arg3 arg4" + + assert dictify(msg.flags) == 76 + + assert dictify(msg.index) == 154 + + assert dictify(msg.pid) == 57279 + + assert dictify(msg.pmem) == 19 + + assert dictify(msg.time) == 3139057143 + + assert dictify(msg.tname) == "process-name\x00\x00\x00" + + assert dictify(msg) == {'crc': 46339, 'length': 70, 'msg_type': 32521, 'payload': 'mr/fE/c1GrtMcHJvY2Vzcy1uYW1lAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==', 'preamble': 85, 'sender': 64863, 'index': 154, 'pid': 57279, 'pmem': 19, 'time': 3139057143, 'flags': 76, 'tname': 'process-name\x00\x00\x00', 'cmdline': '/path/to/process-name arg0 arg1 arg2 arg3 arg4'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemStateDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemStateDepA.py new file mode 100644 index 0000000000..317c66fee0 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxMemStateDepA.py @@ -0,0 +1,49 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxMemStateDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_mem_state_dep_a_1(): + buf = base64.standard_b64decode("VQF/uW1B910wwXByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQRiQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x8911 + + assert msg.length == 65 + + assert msg.msg_type == 0x7f01 + + assert msg.payload == "910wwXByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x6db9 + + assert dictify(msg.cmdline) == "/path/to/process-name arg0 arg1 arg2 arg3 arg4" + + assert dictify(msg.index) == 247 + + assert dictify(msg.pid) == 12381 + + assert dictify(msg.pmem) == 193 + + assert dictify(msg.tname) == "process-name\x00\x00\x00" + + assert dictify(msg) == {'crc': 35089, 'length': 65, 'msg_type': 32513, 'payload': '910wwXByb2Nlc3MtbmFtZQAAAC9wYXRoL3RvL3Byb2Nlc3MtbmFtZSBhcmcwIGFyZzEgYXJnMiBhcmczIGFyZzQ=', 'preamble': 85, 'sender': 28089, 'index': 247, 'pid': 12381, 'pmem': 193, 'tname': 'process-name\x00\x00\x00', 'cmdline': '/path/to/process-name arg0 arg1 arg2 arg3 arg4'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdCount.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdCount.py new file mode 100644 index 0000000000..e760e40b8d --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdCount.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessFdCount.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_process_fd_count_1(): + buf = base64.standard_b64decode("VQZ/HsMzpL2lBYsvcGF0aC90by9wcm9jZXNzLW5hbWUgYXJnMCBhcmcxIGFyZzIgYXJnMyBhcmc0Al4=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x5e02 + + assert msg.length == 51 + + assert msg.msg_type == 0x7f06 + + assert msg.payload == "pL2lBYsvcGF0aC90by9wcm9jZXNzLW5hbWUgYXJnMCBhcmcxIGFyZzIgYXJnMyBhcmc0" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xc31e + + assert dictify(msg.cmdline) == "/path/to/process-name arg0 arg1 arg2 arg3 arg4" + + assert dictify(msg.fd_count) == 35589 + + assert dictify(msg.index) == 164 + + assert dictify(msg.pid) == 42429 + + assert dictify(msg) == {'crc': 24066, 'length': 51, 'msg_type': 32518, 'payload': 'pL2lBYsvcGF0aC90by9wcm9jZXNzLW5hbWUgYXJnMCBhcmcxIGFyZzIgYXJnMyBhcmc0', 'preamble': 85, 'sender': 49950, 'index': 164, 'pid': 42429, 'fd_count': 35589, 'cmdline': '/path/to/process-name arg0 arg1 arg2 arg3 arg4'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdSummary.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdSummary.py new file mode 100644 index 0000000000..812acdfae0 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessFdSummary.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessFdSummary.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_process_fd_summary_1(): + buf = base64.standard_b64decode("VQd/Z/gdE4PITWZkMQBmZDIAZmQzAGZkNABmZDUAZmQ2AACBUA==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x5081 + + assert msg.length == 29 + + assert msg.msg_type == 0x7f07 + + assert msg.payload == "E4PITWZkMQBmZDIAZmQzAGZkNABmZDUAZmQ2AAA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf867 + + assert dictify(msg.most_opened) == "fd1\x00fd2\x00fd3\x00fd4\x00fd5\x00fd6\x00\x00" + + assert dictify(msg.sys_fd_count) == 1304986387 + + assert dictify(msg) == {'crc': 20609, 'length': 29, 'msg_type': 32519, 'payload': 'E4PITWZkMQBmZDIAZmQzAGZkNABmZDUAZmQ2AAA=', 'preamble': 85, 'sender': 63591, 'sys_fd_count': 1304986387, 'most_opened': 'fd1\x00fd2\x00fd3\x00fd4\x00fd5\x00fd6\x00\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketCounts.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketCounts.py new file mode 100644 index 0000000000..66f3bf4e1c --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketCounts.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessSocketCounts.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_process_socket_counts_1(): + buf = base64.standard_b64decode("VQN/bAk3M4lvT3YDjHJzL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNLSD") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x83b4 + + assert msg.length == 55 + + assert msg.msg_type == 0x7f03 + + assert msg.payload == "M4lvT3YDjHJzL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x096c + + assert dictify(msg.cmdline) == "/path/to/process-name arg0 arg1 arg2 arg3 arg4" + + assert dictify(msg.index) == 51 + + assert dictify(msg.pid) == 28553 + + assert dictify(msg.socket_count) == 30287 + + assert dictify(msg.socket_states) == 29554 + + assert dictify(msg.socket_types) == 35843 + + assert dictify(msg) == {'crc': 33716, 'length': 55, 'msg_type': 32515, 'payload': 'M4lvT3YDjHJzL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==', 'preamble': 85, 'sender': 2412, 'index': 51, 'pid': 28553, 'socket_count': 30287, 'socket_types': 35843, 'socket_states': 29554, 'cmdline': '/path/to/process-name arg0 arg1 arg2 arg3 arg4'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketQueues.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketQueues.py new file mode 100644 index 0000000000..ec4f78639e --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxProcessSocketQueues.py @@ -0,0 +1,55 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxProcessSocketQueues.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_process_socket_queues_1(): + buf = base64.standard_b64decode("VQR/u+h5tYdL+dMj/FBtD99hZGRyZXNzIG9mIGxhcmdlc3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNAL3") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf702 + + assert msg.length == 121 + + assert msg.msg_type == 0x7f04 + + assert msg.payload == "tYdL+dMj/FBtD99hZGRyZXNzIG9mIGxhcmdlc3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xe8bb + + assert dictify(msg.address_of_largest) == "address of largest\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + + assert dictify(msg.cmdline) == "/path/to/process-name arg0 arg1 arg2 arg3 arg4" + + assert dictify(msg.index) == 181 + + assert dictify(msg.pid) == 19335 + + assert dictify(msg.recv_queued) == 54265 + + assert dictify(msg.send_queued) == 64547 + + assert dictify(msg.socket_states) == 57103 + + assert dictify(msg.socket_types) == 27984 + + assert dictify(msg) == {'crc': 63234, 'length': 121, 'msg_type': 32516, 'payload': 'tYdL+dMj/FBtD99hZGRyZXNzIG9mIGxhcmdlc3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL3BhdGgvdG8vcHJvY2Vzcy1uYW1lIGFyZzAgYXJnMSBhcmcyIGFyZzMgYXJnNA==', 'preamble': 85, 'sender': 59579, 'index': 181, 'pid': 19335, 'recv_queued': 54265, 'send_queued': 64547, 'socket_types': 27984, 'socket_states': 57103, 'address_of_largest': 'address of largest\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'cmdline': '/path/to/process-name arg0 arg1 arg2 arg3 arg4'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSocketUsage.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSocketUsage.py new file mode 100644 index 0000000000..8e249b4748 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSocketUsage.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxSocketUsage.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_socket_usage_1(): + buf = base64.standard_b64decode("VQV/copIDcRFrUPeurX2mvsR4LMaqbFaldXWBn5AeLlUg8hvII3Z0TQOvpOf9o161HeDHngvGW2aQYSkJx4erwgsHG/s8LBKn4GamaLlgpo=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x9a82 + + assert msg.length == 72 + + assert msg.msg_type == 0x7f05 + + assert msg.payload == "DcRFrUPeurX2mvsR4LMaqbFaldXWBn5AeLlUg8hvII3Z0TQOvpOf9o161HeDHngvGW2aQYSkJx4erwgsHG/s8LBKn4GamaLl" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x8a72 + + assert dictify(msg.avg_queue_depth) == 2907030541 + + assert dictify(msg.max_queue_depth) == 3048922691 + + assert dictify(msg.socket_state_counts) == [39670, 4603, 46048, 43290, 23217, 54677, 1750, 16510, 47480, 33620, 28616, 36128, 53721, 3636, 37822, 63135] + + assert dictify(msg.socket_type_counts) == [31373, 30676, 7811, 12152, 27929, 16794, 42116, 7719, 44830, 11272, 28444, 61676, 19120, 33183, 39322, 58786] + + assert dictify(msg) == {'crc': 39554, 'length': 72, 'msg_type': 32517, 'payload': 'DcRFrUPeurX2mvsR4LMaqbFaldXWBn5AeLlUg8hvII3Z0TQOvpOf9o161HeDHngvGW2aQYSkJx4erwgsHG/s8LBKn4GamaLl', 'preamble': 85, 'sender': 35442, 'avg_queue_depth': 2907030541, 'max_queue_depth': 3048922691, 'socket_state_counts': [39670, 4603, 46048, 43290, 23217, 54677, 1750, 16510, 47480, 33620, 28616, 36128, 53721, 3636, 37822, 63135], 'socket_type_counts': [31373, 30676, 7811, 12152, 27929, 16794, 42116, 7719, 44830, 11272, 28444, 61676, 19120, 33183, 39322, 58786]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysState.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysState.py new file mode 100644 index 0000000000..d4ee053dc9 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysState.py @@ -0,0 +1,55 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxSysState.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_sys_state_1(): + buf = base64.standard_b64decode("VQp/VacPFM9918RHoeX6umweagUJ5fI=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf2e5 + + assert msg.length == 15 + + assert msg.msg_type == 0x7f0a + + assert msg.payload == "FM9918RHoeX6umweagUJ" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xa755 + + assert dictify(msg.flags) == 9 + + assert dictify(msg.mem_total) == 53012 + + assert dictify(msg.pcpu) == 125 + + assert dictify(msg.pid_count) == 47866 + + assert dictify(msg.pmem) == 215 + + assert dictify(msg.procs_starting) == 18372 + + assert dictify(msg.procs_stopping) == 58785 + + assert dictify(msg.time) == 90840684 + + assert dictify(msg) == {'crc': 62181, 'length': 15, 'msg_type': 32522, 'payload': 'FM9918RHoeX6umweagUJ', 'preamble': 85, 'sender': 42837, 'mem_total': 53012, 'pcpu': 125, 'pmem': 215, 'procs_starting': 18372, 'procs_stopping': 58785, 'pid_count': 47866, 'time': 90840684, 'flags': 9} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysStateDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysStateDepA.py new file mode 100644 index 0000000000..4686cd429f --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_linux_MsgLinuxSysStateDepA.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/linux/test_MsgLinuxSysStateDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_linux_msg_linux_sys_state_dep_a_1(): + buf = base64.standard_b64decode("VQJ/VDgKvKPTwnNHZWd8yd/f") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xdfdf + + assert msg.length == 10 + + assert msg.msg_type == 0x7f02 + + assert msg.payload == "vKPTwnNHZWd8yQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x3854 + + assert dictify(msg.mem_total) == 41916 + + assert dictify(msg.pcpu) == 211 + + assert dictify(msg.pid_count) == 51580 + + assert dictify(msg.pmem) == 194 + + assert dictify(msg.procs_starting) == 18291 + + assert dictify(msg.procs_stopping) == 26469 + + assert dictify(msg) == {'crc': 57311, 'length': 10, 'msg_type': 32514, 'payload': 'vKPTwnNHZWd8yQ==', 'preamble': 85, 'sender': 14420, 'mem_total': 41916, 'pcpu': 211, 'pmem': 194, 'procs_starting': 18291, 'procs_stopping': 26469, 'pid_count': 51580} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_mag_MsgMagRaw.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_mag_MsgMagRaw.py new file mode 100644 index 0000000000..e033e8baa4 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_mag_MsgMagRaw.py @@ -0,0 +1,49 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/mag/test_MsgMagRaw.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_mag_msg_mag_raw_1(): + buf = base64.standard_b64decode("VQIJwwQLreOexs5iA+YCbuWfFw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x179f + + assert msg.length == 11 + + assert msg.msg_type == 0x902 + + assert msg.payload == "reOexs5iA+YCbuU=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.mag_x) == 866 + + assert dictify(msg.mag_y) == 742 + + assert dictify(msg.mag_z) == -6802 + + assert dictify(msg.tow) == 3332301741 + + assert dictify(msg.tow_f) == 206 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 2306, 'sender': 1219, 'length': 11, 'payload': 'reOexs5iA+YCbuU=', 'crc': 6047, 'tow': 3332301741, 'tow_f': 206, 'mag_x': 866, 'mag_y': 742, 'mag_z': -6802} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgBaselineHeadingDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgBaselineHeadingDepA.py new file mode 100644 index 0000000000..dac52b1c38 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgBaselineHeadingDepA.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/navigation/test_MsgBaselineHeadingDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_navigation_msg_baseline_heading_dep_a_1(): + buf = base64.standard_b64decode("VQcCfM4KUm1YsEQOUsu6Oq22") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xb6ad + + assert msg.length == 10 + + assert msg.msg_type == 0x207 + + assert msg.payload == "Um1YsEQOUsu6Og==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xce7c + + assert dictify(msg.flags) == 58 + + assert dictify(msg.heading) == 3411152452 + + assert dictify(msg.n_sats) == 186 + + assert dictify(msg.tow) == 2958585170 + + assert dictify(msg) == {'crc': 46765, 'length': 10, 'msg_type': 519, 'payload': 'Um1YsEQOUsu6Og==', 'preamble': 85, 'sender': 52860, 'tow': 2958585170, 'heading': 3411152452, 'n_sats': 186, 'flags': 58} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgPosLlhAcc.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgPosLlhAcc.py new file mode 100644 index 0000000000..257dd7c0d7 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgPosLlhAcc.py @@ -0,0 +1,65 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/navigation/test_MsgPosLlhAcc.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_navigation_msg_pos_llh_acc_1(): + buf = base64.standard_b64decode("VRgCAhxDJ3huEjMzMzMzi71AmpmZmRmXwEAzMzMzM6GwQDMzMzMzZbNAM6MWRZoZrUVmhvNEmsnERc3gAEYzI0hFM2MfRV8bSNyx") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xb1dc + + assert msg.length == 67 + + assert msg.msg_type == 0x218 + + assert msg.payload == "J3huEjMzMzMzi71AmpmZmRmXwEAzMzMzM6GwQDMzMzMzZbNAM6MWRZoZrUVmhvNEmsnERc3gAEYzI0hFM2MfRV8bSA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x1c02 + + assert dictify(msg.at_accuracy) == 6297.2001953125 + + assert dictify(msg.confidence_and_geoid) == 95 + + assert dictify(msg.ct_accuracy) == 1948.199951171875 + + assert dictify(msg.flags) == 72 + + assert dictify(msg.h_accuracy) == 2410.199951171875 + + assert dictify(msg.h_ellipse) == {'orientation': 2550.199951171875, 'semi_major': 8248.2001953125, 'semi_minor': 3202.199951171875} + + assert dictify(msg.height) == 4257.2 + + assert dictify(msg.lat) == 7563.2 + + assert dictify(msg.lon) == 8494.2 + + assert dictify(msg.n_sats) == 27 + + assert dictify(msg.orthometric_height) == 4965.2 + + assert dictify(msg.tow) == 309229607 + + assert dictify(msg.v_accuracy) == 5539.2001953125 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 536, 'sender': 7170, 'length': 67, 'payload': 'J3huEjMzMzMzi71AmpmZmRmXwEAzMzMzM6GwQDMzMzMzZbNAM6MWRZoZrUVmhvNEmsnERc3gAEYzI0hFM2MfRV8bSA==', 'crc': 45532, 'tow': 309229607, 'lat': 7563.2, 'lon': 8494.2, 'height': 4257.2, 'orthometric_height': 4965.2, 'h_accuracy': 2410.199951171875, 'v_accuracy': 5539.2001953125, 'ct_accuracy': 1948.199951171875, 'at_accuracy': 6297.2001953125, 'h_ellipse': {'semi_major': 8248.2001953125, 'semi_minor': 3202.199951171875, 'orientation': 2550.199951171875}, 'confidence_and_geoid': 95, 'n_sats': 27, 'flags': 72} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevel.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevel.py index f9c6f43da4..1a217a9c03 100644 --- a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevel.py +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevel.py @@ -19,35 +19,63 @@ import base64 def test_auto_check_sbp_navigation_msg_protection_level_1(): - buf = base64.standard_b64decode("VRYCABAhiOPpHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUsM=") + buf = base64.standard_b64decode("VRcCLQNMblQE8i4zNaBZVKcpORXZ9D2hU2iMiVr2MzMzMzOqtECamZmZGVjDQDMzMzMzw3lA5/sm3dC3p1DfGmGkLS66POvjt6C7XXTgaSggIYW8") stream = KaitaiStream(io.BytesIO(buf)) msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) - assert msg.crc == 0xc352 + assert msg.crc == 0xbc85 - assert msg.length == 33 + assert msg.length == 76 - assert msg.payload == "iOPpHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + assert msg.msg_type == 0x217 - assert msg.msg_type == 0x216 + assert msg.payload == "blQE8i4zNaBZVKcpORXZ9D2hU2iMiVr2MzMzMzOqtECamZmZGVjDQDMzMzMzw3lA5/sm3dC3p1DfGmGkLS66POvjt6C7XXTgaSggIQ==" assert msg.preamble == 0x55 - assert msg.sender == 0x1000 + assert msg.sender == 0x032d - assert dictify(msg.flags) == 0 + assert dictify(msg.atpl) == 10663 - assert dictify(msg.height) == 0.0 + assert dictify(msg.ctpl) == 5433 - assert dictify(msg.hpl) == 0 + assert dictify(msg.flags) == 555755625 - assert dictify(msg.lat) == 0.0 + assert dictify(msg.heading) == -529244741 - assert dictify(msg.lon) == 0.0 + assert dictify(msg.height) == 412.2 - assert dictify(msg.tow) == 501867400 + assert dictify(msg.hopl) == 26707 - assert dictify(msg.vpl) == 0 + assert dictify(msg.hpl) == 41013 + + assert dictify(msg.hvpl) == 62681 + + assert dictify(msg.lat) == 5290.2 + + assert dictify(msg.lon) == 9904.2 + + assert dictify(msg.pitch) == -1598561301 + + assert dictify(msg.popl) == 35212 + + assert dictify(msg.roll) == 1018834477 + + assert dictify(msg.ropl) == 63066 + + assert dictify(msg.tow) == 4060370030 + + assert dictify(msg.v_x) == -584647705 + + assert dictify(msg.v_y) == 1353168848 + + assert dictify(msg.v_z) == -1537140001 + + assert dictify(msg.vpl) == 21593 + + assert dictify(msg.vvpl) == 41277 + + assert dictify(msg.wn) == 13102 - assert dictify(msg) == {'tow': 501867400, 'vpl': 0, 'hpl': 0, 'lat': 0.0, 'lon': 0.0, 'height': 0.0, 'flags': 0, 'preamble': 85, 'msg_type': 534, 'sender': 4096, 'payload': 'iOPpHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 'crc': 50002, 'length': 33} \ No newline at end of file + assert dictify(msg) == {'preamble': 85, 'msg_type': 535, 'sender': 813, 'length': 76, 'payload': 'blQE8i4zNaBZVKcpORXZ9D2hU2iMiVr2MzMzMzOqtECamZmZGVjDQDMzMzMzw3lA5/sm3dC3p1DfGmGkLS66POvjt6C7XXTgaSggIQ==', 'crc': 48261, 'tow': 4060370030, 'wn': 13102, 'hpl': 41013, 'vpl': 21593, 'atpl': 10663, 'ctpl': 5433, 'hvpl': 62681, 'vvpl': 41277, 'hopl': 26707, 'popl': 35212, 'ropl': 63066, 'lat': 5290.2, 'lon': 9904.2, 'height': 412.2, 'v_x': -584647705, 'v_y': 1353168848, 'v_z': -1537140001, 'roll': 1018834477, 'pitch': -1598561301, 'heading': -529244741, 'flags': 555755625} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevelDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevelDepA.py new file mode 100644 index 0000000000..c86c2c2f94 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_navigation_MsgProtectionLevelDepA.py @@ -0,0 +1,53 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/navigation/test_MsgProtectionLevelDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_navigation_msg_protection_level_dep_a_1(): + buf = base64.standard_b64decode("VRYClBYhNH5FuS9VBIszMzMzM/S+QGZmZmZmzKhAmpmZmRknwED4UWg=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x6851 + + assert msg.length == 33 + + assert msg.msg_type == 0x216 + + assert msg.payload == "NH5FuS9VBIszMzMzM/S+QGZmZmZmzKhAmpmZmRknwED4" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x1694 + + assert dictify(msg.flags) == 248 + + assert dictify(msg.height) == 8270.2 + + assert dictify(msg.hpl) == 35588 + + assert dictify(msg.lat) == 7924.2 + + assert dictify(msg.lon) == 3174.2 + + assert dictify(msg.tow) == 3108339252 + + assert dictify(msg.vpl) == 21807 + + assert dictify(msg) == {'crc': 26705, 'length': 33, 'msg_type': 534, 'payload': 'NH5FuS9VBIszMzMzM/S+QGZmZmZmzKhAmpmZmRknwED4', 'preamble': 85, 'sender': 5780, 'tow': 3108339252, 'vpl': 21807, 'hpl': 35588, 'lat': 7924.2, 'lon': 3174.2, 'height': 8270.2, 'flags': 248} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ndb_MsgNdbEvent.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ndb_MsgNdbEvent.py new file mode 100644 index 0000000000..c14d3779d8 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ndb_MsgNdbEvent.py @@ -0,0 +1,55 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ndb/test_MsgNdbEvent.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ndb_msg_ndb_event_1(): + buf = base64.standard_b64decode("VQAEpK4S/rxGuUUAAAD5Sc1z7kpiQraUEKY=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xa610 + + assert msg.length == 18 + + assert msg.msg_type == 0x400 + + assert msg.payload == "/rxGuUUAAAD5Sc1z7kpiQraU" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xaea4 + + assert dictify(msg.data_source) == 115 + + assert dictify(msg.event) == 249 + + assert dictify(msg.object_sid) == {'code': 74, 'sat': 238} + + assert dictify(msg.object_type) == 73 + + assert dictify(msg.original_sender) == 38070 + + assert dictify(msg.recv_time) == 299461164286 + + assert dictify(msg.result) == 205 + + assert dictify(msg.src_sid) == {'code': 66, 'sat': 98} + + assert dictify(msg) == {'preamble': 85, 'msg_type': 1024, 'sender': 44708, 'length': 18, 'payload': '/rxGuUUAAAD5Sc1z7kpiQraU', 'crc': 42512, 'recv_time': 299461164286, 'event': 249, 'object_type': 73, 'result': 205, 'data_source': 115, 'object_sid': {'sat': 238, 'code': 74}, 'src_sid': {'sat': 98, 'code': 66}, 'original_sender': 38070} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLO.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLO.py new file mode 100644 index 0000000000..30595f96c6 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLO.py @@ -0,0 +1,55 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGLO.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_almanac_glo_1(): + buf = base64.standard_b64decode("VXMAwwROFgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/m1c=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x579b + + assert msg.length == 78 + + assert msg.msg_type == 0x73 + + assert msg.payload == "FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.common) == {'fit_interval': 14400, 'health_bits': 0, 'sid': {'code': 0, 'sat': 22}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'valid': 1} + + assert dictify(msg.epsilon) == -0.9893036629599647 + + assert dictify(msg.i) == 5153.550029754639 + + assert dictify(msg.lambda_na) == -0.02200078842114688 + + assert dictify(msg.omega) == 0.9341514480259797 + + assert dictify(msg.t) == -1.8731818448797617 + + assert dictify(msg.t_dot) == -8.903585155774196e-09 + + assert dictify(msg.t_lambda_na) == 0.007072207052260637 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 115, 'sender': 1219, 'length': 78, 'payload': 'FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/', 'crc': 22427, 'common': {'sid': {'sat': 22, 'code': 0}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'fit_interval': 14400, 'valid': 1, 'health_bits': 0}, 'lambda_na': -0.02200078842114688, 't_lambda_na': 0.007072207052260637, 'i': 5153.550029754639, 't': -1.8731818448797617, 't_dot': -8.903585155774196e-09, 'epsilon': -0.9893036629599647, 'omega': 0.9341514480259797} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLODep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLODep.py new file mode 100644 index 0000000000..6d93cca4e1 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGLODep.py @@ -0,0 +1,55 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGLODep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_almanac_glo_dep_1(): + buf = base64.standard_b64decode("VXEAwwRQFgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T/Lsg==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xb2cb + + assert msg.length == 80 + + assert msg.msg_type == 0x71 + + assert msg.payload == "FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.common) == {'fit_interval': 14400, 'health_bits': 0, 'sid': {'code': 0, 'reserved': 0, 'sat': 22}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'valid': 1} + + assert dictify(msg.epsilon) == -0.9893036629599647 + + assert dictify(msg.i) == 5153.550029754639 + + assert dictify(msg.lambda_na) == -0.02200078842114688 + + assert dictify(msg.omega) == 0.9341514480259797 + + assert dictify(msg.t) == -1.8731818448797617 + + assert dictify(msg.t_dot) == -8.903585155774196e-09 + + assert dictify(msg.t_lambda_na) == 0.007072207052260637 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 113, 'sender': 1219, 'length': 80, 'payload': 'FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8=', 'crc': 45771, 'common': {'sid': {'sat': 22, 'code': 0, 'reserved': 0}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'fit_interval': 14400, 'valid': 1, 'health_bits': 0}, 'lambda_na': -0.02200078842114688, 't_lambda_na': 0.007072207052260637, 'i': 5153.550029754639, 't': -1.8731818448797617, 't_dot': -8.903585155774196e-09, 'epsilon': -0.9893036629599647, 'omega': 0.9341514480259797} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPS.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPS.py new file mode 100644 index 0000000000..46d3161b9a --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPS.py @@ -0,0 +1,59 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGPS.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_almanac_gps_1(): + buf = base64.standard_b64decode("VXIAwwReFgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/AAAAAGyxRL8AAAAAAMCjPb4t") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x2dbe + + assert msg.length == 94 + + assert msg.msg_type == 0x72 + + assert msg.payload == "FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/AAAAAGyxRL8AAAAAAMCjPQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.af0) == -0.0006315018981695175 + + assert dictify(msg.af1) == 8.981260180007666e-12 + + assert dictify(msg.common) == {'fit_interval': 14400, 'health_bits': 0, 'sid': {'code': 0, 'sat': 22}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'valid': 1} + + assert dictify(msg.ecc) == 0.007072207052260637 + + assert dictify(msg.inc) == 0.9341514480259797 + + assert dictify(msg.m0) == -0.02200078842114688 + + assert dictify(msg.omega0) == -1.8731818448797617 + + assert dictify(msg.omegadot) == -8.903585155774196e-09 + + assert dictify(msg.sqrta) == 5153.550029754639 + + assert dictify(msg.w) == -0.9893036629599647 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 114, 'sender': 1219, 'length': 94, 'payload': 'FgCwzwYAagiamZmZmZkBQEA4AAABAI4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/AAAAAGyxRL8AAAAAAMCjPQ==', 'crc': 11710, 'common': {'sid': {'sat': 22, 'code': 0}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'fit_interval': 14400, 'valid': 1, 'health_bits': 0}, 'm0': -0.02200078842114688, 'ecc': 0.007072207052260637, 'sqrta': 5153.550029754639, 'omega0': -1.8731818448797617, 'omegadot': -8.903585155774196e-09, 'w': -0.9893036629599647, 'inc': 0.9341514480259797, 'af0': -0.0006315018981695175, 'af1': 8.981260180007666e-12} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPSDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPSDep.py new file mode 100644 index 0000000000..d33c98dfab --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgAlmanacGPSDep.py @@ -0,0 +1,59 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgAlmanacGPSDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_almanac_gps_dep_1(): + buf = base64.standard_b64decode("VXAAwwRgFgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8AAAAAbLFEvwAAAAAAwKM9kOg=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xe890 + + assert msg.length == 96 + + assert msg.msg_type == 0x70 + + assert msg.payload == "FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8AAAAAbLFEvwAAAAAAwKM9" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.af0) == -0.0006315018981695175 + + assert dictify(msg.af1) == 8.981260180007666e-12 + + assert dictify(msg.common) == {'fit_interval': 14400, 'health_bits': 0, 'sid': {'code': 0, 'reserved': 0, 'sat': 22}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'valid': 1} + + assert dictify(msg.ecc) == 0.007072207052260637 + + assert dictify(msg.inc) == 0.9341514480259797 + + assert dictify(msg.m0) == -0.02200078842114688 + + assert dictify(msg.omega0) == -1.8731818448797617 + + assert dictify(msg.omegadot) == -8.903585155774196e-09 + + assert dictify(msg.sqrta) == 5153.550029754639 + + assert dictify(msg.w) == -0.9893036629599647 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 112, 'sender': 1219, 'length': 96, 'payload': 'FgAAALDPBgBqCJqZmZmZmQFAQDgAAAEAjikF61+Hlr8AAAAgv/d8PwAAwM6MIbRAKYOzho34/b/jhVE2zB5Dvtg7xydgqO+/RwvZk5Hk7T8AAAAAbLFEvwAAAAAAwKM9', 'crc': 59536, 'common': {'sid': {'sat': 22, 'code': 0, 'reserved': 0}, 'toa': {'tow': 446384, 'wn': 2154}, 'ura': 2.2, 'fit_interval': 14400, 'valid': 1, 'health_bits': 0}, 'm0': -0.02200078842114688, 'ecc': 0.007072207052260637, 'sqrta': 5153.550029754639, 'omega0': -1.8731818448797617, 'omegadot': -8.903585155774196e-09, 'w': -0.9893036629599647, 'inc': 0.9341514480259797, 'af0': -0.0006315018981695175, 'af1': 8.981260180007666e-12} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgBasePosLLH.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgBasePosLLH.py new file mode 100644 index 0000000000..9e95688652 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgBasePosLLH.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgBasePosLLH.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_base_pos_llh_1(): + buf = base64.standard_b64decode("VUQAewAY4e3uWiqgQkA7j0brAHhewDO1fPBB+EJAUuY=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xe652 + + assert msg.length == 24 + + assert msg.msg_type == 0x44 + + assert msg.payload == "4e3uWiqgQkA7j0brAHhewDO1fPBB+EJA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.height) == 37.939512310879216 + + assert dictify(msg.lat) == 37.251292578377395 + + assert dictify(msg.lon) == -121.87505609407974 + + assert dictify(msg) == {'crc': 58962, 'length': 24, 'msg_type': 68, 'payload': '4e3uWiqgQkA7j0brAHhewDO1fPBB+EJA', 'preamble': 85, 'sender': 123, 'lat': 37.251292578377395, 'lon': -121.87505609407974, 'height': 37.939512310879216} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepA.py new file mode 100644 index 0000000000..ebab8aa0bb --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepA.py @@ -0,0 +1,91 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_dep_a_1(): + buf = base64.standard_b64decode("VRoAwwSvAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFvJU") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x54f2 + + assert msg.length == 175 + + assert msg.msg_type == 0x1a + + assert msg.payload == "AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFg==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.af0) == -0.0006315018981695175 + + assert dictify(msg.af1) == 8.981260180007666e-12 + + assert dictify(msg.af2) == 0.2 + + assert dictify(msg.c_ic) == 7.450580596923828e-09 + + assert dictify(msg.c_is) == -1.1548399925231934e-07 + + assert dictify(msg.c_rc) == 308.625 + + assert dictify(msg.c_rs) == -52.3125 + + assert dictify(msg.c_uc) == -2.7436763048171997e-06 + + assert dictify(msg.c_us) == 3.1366944313049316e-06 + + assert dictify(msg.dn) == 5.694522914022375e-09 + + assert dictify(msg.ecc) == 0.007072207052260637 + + assert dictify(msg.healthy) == 0 + + assert dictify(msg.inc) == 0.9341514480259797 + + assert dictify(msg.inc_dot) == -4.035882396415757e-11 + + assert dictify(msg.m0) == -0.02200078842114688 + + assert dictify(msg.omega0) == -1.8731818448797617 + + assert dictify(msg.omegadot) == -8.903585155774196e-09 + + assert dictify(msg.prn) == 22 + + assert dictify(msg.sqrta) == 5153.550029754639 + + assert dictify(msg.tgd) == -1.7695128917694092e-08 + + assert dictify(msg.toc_tow) == 446384.2 + + assert dictify(msg.toc_wn) == 2154 + + assert dictify(msg.toe_tow) == 446384.2 + + assert dictify(msg.toe_wn) == 2154 + + assert dictify(msg.valid) == 1 + + assert dictify(msg.w) == -0.9893036629599647 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 26, 'sender': 1219, 'length': 175, 'payload': 'AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFg==', 'crc': 21746, 'tgd': -1.7695128917694092e-08, 'c_rs': -52.3125, 'c_rc': 308.625, 'c_uc': -2.7436763048171997e-06, 'c_us': 3.1366944313049316e-06, 'c_ic': 7.450580596923828e-09, 'c_is': -1.1548399925231934e-07, 'dn': 5.694522914022375e-09, 'm0': -0.02200078842114688, 'ecc': 0.007072207052260637, 'sqrta': 5153.550029754639, 'omega0': -1.8731818448797617, 'omegadot': -8.903585155774196e-09, 'w': -0.9893036629599647, 'inc': 0.9341514480259797, 'inc_dot': -4.035882396415757e-11, 'af0': -0.0006315018981695175, 'af1': 8.981260180007666e-12, 'af2': 0.2, 'toe_tow': 446384.2, 'toe_wn': 2154, 'toc_tow': 446384.2, 'toc_wn': 2154, 'valid': 1, 'healthy': 0, 'prn': 22} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepC.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepC.py new file mode 100644 index 0000000000..f788c3a27f --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepC.py @@ -0,0 +1,97 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisDepC.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_dep_c_1(): + buf = base64.standard_b64decode("VUcAwwS5AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAAXqg==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xaa17 + + assert msg.length == 185 + + assert msg.msg_type == 0x47 + + assert msg.payload == "AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.af0) == -0.0006315018981695175 + + assert dictify(msg.af1) == 8.981260180007666e-12 + + assert dictify(msg.af2) == 0.2 + + assert dictify(msg.c_ic) == 7.450580596923828e-09 + + assert dictify(msg.c_is) == -1.1548399925231934e-07 + + assert dictify(msg.c_rc) == 308.625 + + assert dictify(msg.c_rs) == -52.3125 + + assert dictify(msg.c_uc) == -2.7436763048171997e-06 + + assert dictify(msg.c_us) == 3.1366944313049316e-06 + + assert dictify(msg.dn) == 5.694522914022375e-09 + + assert dictify(msg.ecc) == 0.007072207052260637 + + assert dictify(msg.healthy) == 0 + + assert dictify(msg.inc) == 0.9341514480259797 + + assert dictify(msg.inc_dot) == -4.035882396415757e-11 + + assert dictify(msg.iodc) == 45 + + assert dictify(msg.iode) == 45 + + assert dictify(msg.m0) == -0.02200078842114688 + + assert dictify(msg.omega0) == -1.8731818448797617 + + assert dictify(msg.omegadot) == -8.903585155774196e-09 + + assert dictify(msg.reserved) == 0 + + assert dictify(msg.sid) == {'code': 0, 'reserved': 0, 'sat': 22} + + assert dictify(msg.sqrta) == 5153.550029754639 + + assert dictify(msg.tgd) == -1.7695128917694092e-08 + + assert dictify(msg.toc_tow) == 446384.2 + + assert dictify(msg.toc_wn) == 2154 + + assert dictify(msg.toe_tow) == 446384.2 + + assert dictify(msg.toe_wn) == 2154 + + assert dictify(msg.valid) == 1 + + assert dictify(msg.w) == -0.9893036629599647 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 71, 'sender': 1219, 'length': 185, 'payload': 'AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=', 'crc': 43543, 'tgd': -1.7695128917694092e-08, 'c_rs': -52.3125, 'c_rc': 308.625, 'c_uc': -2.7436763048171997e-06, 'c_us': 3.1366944313049316e-06, 'c_ic': 7.450580596923828e-09, 'c_is': -1.1548399925231934e-07, 'dn': 5.694522914022375e-09, 'm0': -0.02200078842114688, 'ecc': 0.007072207052260637, 'sqrta': 5153.550029754639, 'omega0': -1.8731818448797617, 'omegadot': -8.903585155774196e-09, 'w': -0.9893036629599647, 'inc': 0.9341514480259797, 'inc_dot': -4.035882396415757e-11, 'af0': -0.0006315018981695175, 'af1': 8.981260180007666e-12, 'af2': 0.2, 'toe_tow': 446384.2, 'toe_wn': 2154, 'toc_tow': 446384.2, 'toc_wn': 2154, 'valid': 1, 'healthy': 0, 'sid': {'sat': 22, 'code': 0, 'reserved': 0}, 'iode': 45, 'iodc': 45, 'reserved': 0} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepD.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepD.py new file mode 100644 index 0000000000..31d433b0bc --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisDepD.py @@ -0,0 +1,97 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisDepD.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_dep_d_1(): + buf = base64.standard_b64decode("VYAAwwS5AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAABfBw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x075f + + assert msg.length == 185 + + assert msg.msg_type == 0x80 + + assert msg.payload == "AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.af0) == -0.0006315018981695175 + + assert dictify(msg.af1) == 8.981260180007666e-12 + + assert dictify(msg.af2) == 0.2 + + assert dictify(msg.c_ic) == 7.450580596923828e-09 + + assert dictify(msg.c_is) == -1.1548399925231934e-07 + + assert dictify(msg.c_rc) == 308.625 + + assert dictify(msg.c_rs) == -52.3125 + + assert dictify(msg.c_uc) == -2.7436763048171997e-06 + + assert dictify(msg.c_us) == 3.1366944313049316e-06 + + assert dictify(msg.dn) == 5.694522914022375e-09 + + assert dictify(msg.ecc) == 0.007072207052260637 + + assert dictify(msg.healthy) == 0 + + assert dictify(msg.inc) == 0.9341514480259797 + + assert dictify(msg.inc_dot) == -4.035882396415757e-11 + + assert dictify(msg.iodc) == 45 + + assert dictify(msg.iode) == 45 + + assert dictify(msg.m0) == -0.02200078842114688 + + assert dictify(msg.omega0) == -1.8731818448797617 + + assert dictify(msg.omegadot) == -8.903585155774196e-09 + + assert dictify(msg.reserved) == 0 + + assert dictify(msg.sid) == {'code': 0, 'reserved': 0, 'sat': 22} + + assert dictify(msg.sqrta) == 5153.550029754639 + + assert dictify(msg.tgd) == -1.7695128917694092e-08 + + assert dictify(msg.toc_tow) == 446384.2 + + assert dictify(msg.toc_wn) == 2154 + + assert dictify(msg.toe_tow) == 446384.2 + + assert dictify(msg.toe_wn) == 2154 + + assert dictify(msg.valid) == 1 + + assert dictify(msg.w) == -0.9893036629599647 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 128, 'sender': 1219, 'length': 185, 'payload': 'AAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9mpmZmZmZyT/NzMzMwD4bQWoIzczMzMA+G0FqCAEAFgAAAC0tAAAAAAA=', 'crc': 1887, 'tgd': -1.7695128917694092e-08, 'c_rs': -52.3125, 'c_rc': 308.625, 'c_uc': -2.7436763048171997e-06, 'c_us': 3.1366944313049316e-06, 'c_ic': 7.450580596923828e-09, 'c_is': -1.1548399925231934e-07, 'dn': 5.694522914022375e-09, 'm0': -0.02200078842114688, 'ecc': 0.007072207052260637, 'sqrta': 5153.550029754639, 'omega0': -1.8731818448797617, 'omegadot': -8.903585155774196e-09, 'w': -0.9893036629599647, 'inc': 0.9341514480259797, 'inc_dot': -4.035882396415757e-11, 'af0': -0.0006315018981695175, 'af1': 8.981260180007666e-12, 'af2': 0.2, 'toe_tow': 446384.2, 'toe_wn': 2154, 'toc_tow': 446384.2, 'toc_wn': 2154, 'valid': 1, 'healthy': 0, 'sid': {'sat': 22, 'code': 0, 'reserved': 0}, 'iode': 45, 'iodc': 45, 'reserved': 0} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepA.py new file mode 100644 index 0000000000..44a13471c5 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepA.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_glo_dep_a_1(): + buf = base64.standard_b64decode("VYMAwwRwBAADAEbFBgBqCM3MzMzMzBRAYAkAAAEAAAAAAAAAcD0AAAAAMOwVvwAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPsru") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xeeca + + assert msg.length == 112 + + assert msg.msg_type == 0x83 + + assert msg.payload == "BAADAEbFBgBqCM3MzMzMzBRAYAkAAAEAAAAAAAAAcD0AAAAAMOwVvwAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.acc) == [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06] + + assert dictify(msg.common) == {'fit_interval': 2400, 'health_bits': 0, 'sid': {'code': 3, 'reserved': 0, 'sat': 4}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'valid': 1} + + assert dictify(msg.gamma) == 9.094947017729282e-13 + + assert dictify(msg.pos) == [-12177330.078125, 599893.06640625, -22373708.49609375] + + assert dictify(msg.tau) == -8.36281105875969e-05 + + assert dictify(msg.vel) == [-1726.506233215332, -2542.6149368286133, 869.8177337646484] + + assert dictify(msg) == {'preamble': 85, 'msg_type': 131, 'sender': 1219, 'length': 112, 'payload': 'BAADAEbFBgBqCM3MzMzMzBRAYAkAAAEAAAAAAAAAcD0AAAAAMOwVvwAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg==', 'crc': 61130, 'common': {'sid': {'sat': 4, 'code': 3, 'reserved': 0}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'fit_interval': 2400, 'valid': 1, 'health_bits': 0}, 'gamma': 9.094947017729282e-13, 'tau': -8.36281105875969e-05, 'pos': [-12177330.078125, 599893.06640625, -22373708.49609375], 'vel': [-1726.506233215332, -2542.6149368286133, 869.8177337646484], 'acc': [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepB.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepB.py new file mode 100644 index 0000000000..94eb921280 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepB.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepB.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_glo_dep_b_1(): + buf = base64.standard_b64decode("VYUAwwRuBANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAIBC9jlnwQAAACKqTiJBAADwx1RWdcEAAABiBvqawAAAANk63aPAAAAAuIoui0AAAAAAAECvPgAAAAAAQK8+AAAAAABwxz56fw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x7f7a + + assert msg.length == 110 + + assert msg.msg_type == 0x85 + + assert msg.payload == "BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAIBC9jlnwQAAACKqTiJBAADwx1RWdcEAAABiBvqawAAAANk63aPAAAAAuIoui0AAAAAAAECvPgAAAAAAQK8+AAAAAABwxz4=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.acc) == [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06] + + assert dictify(msg.common) == {'fit_interval': 2400, 'health_bits': 0, 'sid': {'code': 3, 'sat': 4}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'valid': 1} + + assert dictify(msg.gamma) == 9.094947017729282e-13 + + assert dictify(msg.pos) == [-12177330.078125, 599893.06640625, -22373708.49609375] + + assert dictify(msg.tau) == -8.36281105875969e-05 + + assert dictify(msg.vel) == [-1726.506233215332, -2542.6149368286133, 869.8177337646484] + + assert dictify(msg) == {'preamble': 85, 'msg_type': 133, 'sender': 1219, 'length': 110, 'payload': 'BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAIBC9jlnwQAAACKqTiJBAADwx1RWdcEAAABiBvqawAAAANk63aPAAAAAuIoui0AAAAAAAECvPgAAAAAAQK8+AAAAAABwxz4=', 'crc': 32634, 'common': {'sid': {'sat': 4, 'code': 3}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'fit_interval': 2400, 'valid': 1, 'health_bits': 0}, 'gamma': 9.094947017729282e-13, 'tau': -8.36281105875969e-05, 'pos': [-12177330.078125, 599893.06640625, -22373708.49609375], 'vel': [-1726.506233215332, -2542.6149368286133, 869.8177337646484], 'acc': [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepC.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepC.py new file mode 100644 index 0000000000..c9da9f3674 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepC.py @@ -0,0 +1,55 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepC.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_glo_dep_c_1(): + buf = base64.standard_b64decode("VYcAwwR3BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg6XQQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x4197 + + assert msg.length == 119 + + assert msg.msg_type == 0x87 + + assert msg.payload == "BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg4=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.acc) == [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06] + + assert dictify(msg.common) == {'fit_interval': 2400, 'health_bits': 0, 'sid': {'code': 3, 'sat': 4}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'valid': 1} + + assert dictify(msg.d_tau) == -2.7939677238464355e-09 + + assert dictify(msg.fcn) == 14 + + assert dictify(msg.gamma) == 9.094947017729282e-13 + + assert dictify(msg.pos) == [-12177330.078125, 599893.06640625, -22373708.49609375] + + assert dictify(msg.tau) == -8.36281105875969e-05 + + assert dictify(msg.vel) == [-1726.506233215332, -2542.6149368286133, 869.8177337646484] + + assert dictify(msg) == {'preamble': 85, 'msg_type': 135, 'sender': 1219, 'length': 119, 'payload': 'BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg4=', 'crc': 16791, 'common': {'sid': {'sat': 4, 'code': 3}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'fit_interval': 2400, 'valid': 1, 'health_bits': 0}, 'gamma': 9.094947017729282e-13, 'tau': -8.36281105875969e-05, 'd_tau': -2.7939677238464355e-09, 'pos': [-12177330.078125, 599893.06640625, -22373708.49609375], 'vel': [-1726.506233215332, -2542.6149368286133, 869.8177337646484], 'acc': [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06], 'fcn': 14} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepD.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepD.py new file mode 100644 index 0000000000..ac336bb0b5 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGLODepD.py @@ -0,0 +1,57 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGLODepD.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_glo_dep_d_1(): + buf = base64.standard_b64decode("VYgAwwR4BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg5kUkA=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x4052 + + assert msg.length == 120 + + assert msg.msg_type == 0x88 + + assert msg.payload == "BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg5k" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.acc) == [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06] + + assert dictify(msg.common) == {'fit_interval': 2400, 'health_bits': 0, 'sid': {'code': 3, 'sat': 4}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'valid': 1} + + assert dictify(msg.d_tau) == -2.7939677238464355e-09 + + assert dictify(msg.fcn) == 14 + + assert dictify(msg.gamma) == 9.094947017729282e-13 + + assert dictify(msg.iod) == 100 + + assert dictify(msg.pos) == [-12177330.078125, 599893.06640625, -22373708.49609375] + + assert dictify(msg.tau) == -8.36281105875969e-05 + + assert dictify(msg.vel) == [-1726.506233215332, -2542.6149368286133, 869.8177337646484] + + assert dictify(msg) == {'preamble': 85, 'msg_type': 136, 'sender': 1219, 'length': 120, 'payload': 'BANGxQYAagjNzMzMzMwUQGAJAAABAAAAAAAAAHA9AAAAADDsFb8AAAAAAAAovgAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPg5k', 'crc': 16466, 'common': {'sid': {'sat': 4, 'code': 3}, 'toe': {'tow': 443718, 'wn': 2154}, 'ura': 5.2, 'fit_interval': 2400, 'valid': 1, 'health_bits': 0}, 'gamma': 9.094947017729282e-13, 'tau': -8.36281105875969e-05, 'd_tau': -2.7939677238464355e-09, 'pos': [-12177330.078125, 599893.06640625, -22373708.49609375], 'vel': [-1726.506233215332, -2542.6149368286133, 869.8177337646484], 'acc': [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06], 'fcn': 14, 'iod': 100} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepE.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepE.py new file mode 100644 index 0000000000..d0ef47e6ff --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepE.py @@ -0,0 +1,85 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGPSDepE.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_gps_dep_e_1(): + buf = base64.standard_b64decode("VYEAewC5FgAAALDPBgBqCAAAAAAAAABAQDgAAAEAAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9AAAAAAAAAACwzwYAaggtLQAG7g==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xee06 + + assert msg.length == 185 + + assert msg.msg_type == 0x81 + + assert msg.payload == "FgAAALDPBgBqCAAAAAAAAABAQDgAAAEAAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9AAAAAAAAAACwzwYAaggtLQA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.af0) == -0.0006315018981695175 + + assert dictify(msg.af1) == 8.981260180007666e-12 + + assert dictify(msg.af2) == 0.0 + + assert dictify(msg.c_ic) == 7.450580596923828e-09 + + assert dictify(msg.c_is) == -1.1548399925231934e-07 + + assert dictify(msg.c_rc) == 308.625 + + assert dictify(msg.c_rs) == -52.3125 + + assert dictify(msg.c_uc) == -2.7436763048171997e-06 + + assert dictify(msg.c_us) == 3.1366944313049316e-06 + + assert dictify(msg.common) == {'fit_interval': 14400, 'health_bits': 0, 'sid': {'code': 0, 'reserved': 0, 'sat': 22}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2.0, 'valid': 1} + + assert dictify(msg.dn) == 5.694522914022375e-09 + + assert dictify(msg.ecc) == 0.007072207052260637 + + assert dictify(msg.inc) == 0.9341514480259797 + + assert dictify(msg.inc_dot) == -4.035882396415757e-11 + + assert dictify(msg.iodc) == 45 + + assert dictify(msg.iode) == 45 + + assert dictify(msg.m0) == -0.02200078842114688 + + assert dictify(msg.omega0) == -1.8731818448797617 + + assert dictify(msg.omegadot) == -8.903585155774196e-09 + + assert dictify(msg.sqrta) == 5153.550029754639 + + assert dictify(msg.tgd) == -1.7695128917694092e-08 + + assert dictify(msg.toc) == {'tow': 446384, 'wn': 2154} + + assert dictify(msg.w) == -0.9893036629599647 + + assert dictify(msg) == {'crc': 60934, 'length': 185, 'msg_type': 129, 'payload': 'FgAAALDPBgBqCAAAAAAAAABAQDgAAAEAAAAAAAAAU74AAAAAAChKwAAAAAAASnNAAAAAAAAEx74AAAAAAFDKPgAAAAAAAEA+AAAAAAAAf75y2GC0MXU4Po4pBetfh5a/AAAAIL/3fD8AAMDOjCG0QCmDs4aN+P2/44VRNsweQ77YO8cnYKjvv0cL2ZOR5O0/3S9k4P8vxr0AAAAAbLFEvwAAAAAAwKM9AAAAAAAAAACwzwYAaggtLQA=', 'preamble': 85, 'sender': 123, 'common': {'sid': {'sat': 22, 'code': 0, 'reserved': 0}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2, 'fit_interval': 14400, 'valid': 1, 'health_bits': 0}, 'tgd': -1.7695128917694092e-08, 'c_rs': -52.3125, 'c_rc': 308.625, 'c_uc': -2.7436763048171997e-06, 'c_us': 3.1366944313049316e-06, 'c_ic': 7.450580596923828e-09, 'c_is': -1.1548399925231934e-07, 'dn': 5.694522914022375e-09, 'm0': -0.02200078842114688, 'ecc': 0.007072207052260637, 'sqrta': 5153.550029754639, 'omega0': -1.8731818448797617, 'omegadot': -8.903585155774196e-09, 'w': -0.9893036629599647, 'inc': 0.9341514480259797, 'inc_dot': -4.035882396415757e-11, 'af0': -0.0006315018981695175, 'af1': 8.981260180007666e-12, 'af2': 0, 'toc': {'tow': 446384, 'wn': 2154}, 'iode': 45, 'iodc': 45} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepF.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepF.py new file mode 100644 index 0000000000..859fa381c4 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGPSDepF.py @@ -0,0 +1,85 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGPSDepF.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_gps_dep_f_1(): + buf = base64.standard_b64decode("VYYAewC3FgCwzwYAaggAAAAAAAAAQEA4AAABAAAAAAAAAFO+AAAAAAAoSsAAAAAAAEpzQAAAAAAABMe+AAAAAABQyj4AAAAAAABAPgAAAAAAAH++cthgtDF1OD6OKQXrX4eWvwAAACC/93w/AADAzowhtEApg7OGjfj9v+OFUTbMHkO+2DvHJ2Co779HC9mTkeTtP90vZOD/L8a9AAAAAGyxRL8AAAAAAMCjPQAAAAAAAAAAsM8GAGoILS0Ac/4=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xfe73 + + assert msg.length == 183 + + assert msg.msg_type == 0x86 + + assert msg.payload == "FgCwzwYAaggAAAAAAAAAQEA4AAABAAAAAAAAAFO+AAAAAAAoSsAAAAAAAEpzQAAAAAAABMe+AAAAAABQyj4AAAAAAABAPgAAAAAAAH++cthgtDF1OD6OKQXrX4eWvwAAACC/93w/AADAzowhtEApg7OGjfj9v+OFUTbMHkO+2DvHJ2Co779HC9mTkeTtP90vZOD/L8a9AAAAAGyxRL8AAAAAAMCjPQAAAAAAAAAAsM8GAGoILS0A" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.af0) == -0.0006315018981695175 + + assert dictify(msg.af1) == 8.981260180007666e-12 + + assert dictify(msg.af2) == 0.0 + + assert dictify(msg.c_ic) == 7.450580596923828e-09 + + assert dictify(msg.c_is) == -1.1548399925231934e-07 + + assert dictify(msg.c_rc) == 308.625 + + assert dictify(msg.c_rs) == -52.3125 + + assert dictify(msg.c_uc) == -2.7436763048171997e-06 + + assert dictify(msg.c_us) == 3.1366944313049316e-06 + + assert dictify(msg.common) == {'fit_interval': 14400, 'health_bits': 0, 'sid': {'code': 0, 'sat': 22}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2.0, 'valid': 1} + + assert dictify(msg.dn) == 5.694522914022375e-09 + + assert dictify(msg.ecc) == 0.007072207052260637 + + assert dictify(msg.inc) == 0.9341514480259797 + + assert dictify(msg.inc_dot) == -4.035882396415757e-11 + + assert dictify(msg.iodc) == 45 + + assert dictify(msg.iode) == 45 + + assert dictify(msg.m0) == -0.02200078842114688 + + assert dictify(msg.omega0) == -1.8731818448797617 + + assert dictify(msg.omegadot) == -8.903585155774196e-09 + + assert dictify(msg.sqrta) == 5153.550029754639 + + assert dictify(msg.tgd) == -1.7695128917694092e-08 + + assert dictify(msg.toc) == {'tow': 446384, 'wn': 2154} + + assert dictify(msg.w) == -0.9893036629599647 + + assert dictify(msg) == {'crc': 65139, 'length': 183, 'msg_type': 134, 'payload': 'FgCwzwYAaggAAAAAAAAAQEA4AAABAAAAAAAAAFO+AAAAAAAoSsAAAAAAAEpzQAAAAAAABMe+AAAAAABQyj4AAAAAAABAPgAAAAAAAH++cthgtDF1OD6OKQXrX4eWvwAAACC/93w/AADAzowhtEApg7OGjfj9v+OFUTbMHkO+2DvHJ2Co779HC9mTkeTtP90vZOD/L8a9AAAAAGyxRL8AAAAAAMCjPQAAAAAAAAAAsM8GAGoILS0A', 'preamble': 85, 'sender': 123, 'common': {'sid': {'sat': 22, 'code': 0}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2, 'fit_interval': 14400, 'valid': 1, 'health_bits': 0}, 'tgd': -1.7695128917694092e-08, 'c_rs': -52.3125, 'c_rc': 308.625, 'c_uc': -2.7436763048171997e-06, 'c_us': 3.1366944313049316e-06, 'c_ic': 7.450580596923828e-09, 'c_is': -1.1548399925231934e-07, 'dn': 5.694522914022375e-09, 'm0': -0.02200078842114688, 'ecc': 0.007072207052260637, 'sqrta': 5153.550029754639, 'omega0': -1.8731818448797617, 'omegadot': -8.903585155774196e-09, 'w': -0.9893036629599647, 'inc': 0.9341514480259797, 'inc_dot': -4.035882396415757e-11, 'af0': -0.0006315018981695175, 'af1': 8.981260180007666e-12, 'af2': 0, 'toc': {'tow': 446384, 'wn': 2154}, 'iode': 45, 'iodc': 45} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGalDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGalDepA.py new file mode 100644 index 0000000000..ca87fb0a10 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisGalDepA.py @@ -0,0 +1,87 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisGalDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_gal_dep_a_1(): + buf = base64.standard_b64decode("VZUAwwSYGw4g2QYAaghmZuZAQDgAAAEAmpmZP83MDEAAACJBALiEQ2ZmpkBmZsZAzcxMQGZmhkDZzIJpgLYrPvhqH9wIiP2/AAAAAJdcJj8AAAA3mkC1QDgmAY3/tvI/3pOIJ0+6OL5Qcsz7wVy/P+03EymxSe8/MUG98AjY9b3/////Q+vxvv///////6G9zcxMPiDZBgBqCGwAbACoMQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x31a8 + + assert msg.length == 152 + + assert msg.msg_type == 0x95 + + assert msg.payload == "Gw4g2QYAaghmZuZAQDgAAAEAmpmZP83MDEAAACJBALiEQ2ZmpkBmZsZAzcxMQGZmhkDZzIJpgLYrPvhqH9wIiP2/AAAAAJdcJj8AAAA3mkC1QDgmAY3/tvI/3pOIJ0+6OL5Qcsz7wVy/P+03EymxSe8/MUG98AjY9b3/////Q+vxvv///////6G9zcxMPiDZBgBqCGwAbAA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.af0) == -1.7088896129280325e-05 + + assert dictify(msg.af1) == -8.185452315956353e-12 + + assert dictify(msg.af2) == 0.20000000298023224 + + assert dictify(msg.bgd_e1e5a) == 1.2000000476837158 + + assert dictify(msg.bgd_e1e5b) == 2.200000047683716 + + assert dictify(msg.c_ic) == 3.200000047683716 + + assert dictify(msg.c_is) == 4.199999809265137 + + assert dictify(msg.c_rc) == 265.4375 + + assert dictify(msg.c_rs) == 10.125 + + assert dictify(msg.c_uc) == 5.199999809265137 + + assert dictify(msg.c_us) == 6.199999809265137 + + assert dictify(msg.common) == {'fit_interval': 14400, 'health_bits': 0, 'sid': {'code': 14, 'sat': 27}, 'toe': {'tow': 448800, 'wn': 2154}, 'ura': 7.199999809265137, 'valid': 1} + + assert dictify(msg.dn) == 3.2262058129932258e-09 + + assert dictify(msg.ecc) == 0.00017060607206076384 + + assert dictify(msg.inc) == 0.9777456094977858 + + assert dictify(msg.inc_dot) == -3.1787038343451465e-10 + + assert dictify(msg.iodc) == 108 + + assert dictify(msg.iode) == 108 + + assert dictify(msg.m0) == -1.8457115744155868 + + assert dictify(msg.omega0) == 1.16967730598334 + + assert dictify(msg.omegadot) == -5.757382675240872e-09 + + assert dictify(msg.sqrta) == 5440.602401733398 + + assert dictify(msg.toc) == {'tow': 448800, 'wn': 2154} + + assert dictify(msg.w) == 0.12250912091662625 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 149, 'sender': 1219, 'length': 152, 'payload': 'Gw4g2QYAaghmZuZAQDgAAAEAmpmZP83MDEAAACJBALiEQ2ZmpkBmZsZAzcxMQGZmhkDZzIJpgLYrPvhqH9wIiP2/AAAAAJdcJj8AAAA3mkC1QDgmAY3/tvI/3pOIJ0+6OL5Qcsz7wVy/P+03EymxSe8/MUG98AjY9b3/////Q+vxvv///////6G9zcxMPiDZBgBqCGwAbAA=', 'crc': 12712, 'common': {'sid': {'sat': 27, 'code': 14}, 'toe': {'tow': 448800, 'wn': 2154}, 'ura': 7.199999809265137, 'fit_interval': 14400, 'valid': 1, 'health_bits': 0}, 'bgd_e1e5a': 1.2000000476837158, 'bgd_e1e5b': 2.200000047683716, 'c_rs': 10.125, 'c_rc': 265.4375, 'c_uc': 5.199999809265137, 'c_us': 6.199999809265137, 'c_ic': 3.200000047683716, 'c_is': 4.199999809265137, 'dn': 3.2262058129932258e-09, 'm0': -1.8457115744155868, 'ecc': 0.00017060607206076384, 'sqrta': 5440.602401733398, 'omega0': 1.16967730598334, 'omegadot': -5.757382675240872e-09, 'w': 0.12250912091662625, 'inc': 0.9777456094977858, 'inc_dot': -3.1787038343451465e-10, 'af0': -1.7088896129280325e-05, 'af1': -8.185452315956353e-12, 'af2': 0.20000000298023224, 'toc': {'tow': 448800, 'wn': 2154}, 'iode': 108, 'iodc': 108} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbas.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbas.py new file mode 100644 index 0000000000..ec8befe404 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbas.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisSbas.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_sbas_1(): + buf = base64.standard_b64decode("VYwAwwRKFgawzwYAaggAAECxAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBM9DXxNfpHsVWdFlEAAB6NQAAejUAgDs2YIslugAAHi3Akw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x93c0 + + assert msg.length == 74 + + assert msg.msg_type == 0x8c + + assert msg.payload == "FgawzwYAaggAAECxAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBM9DXxNfpHsVWdFlEAAB6NQAAejUAgDs2YIslugAAHi0=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x04c3 + + assert dictify(msg.a_gf0) == -0.0006315018981695175 + + assert dictify(msg.a_gf1) == 8.981260180007666e-12 + + assert dictify(msg.acc) == [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06] + + assert dictify(msg.common) == {'fit_interval': 0, 'health_bits': 0, 'sid': {'code': 6, 'sat': 22}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': -2.7939677238464355e-09, 'valid': 1} + + assert dictify(msg.pos) == [-12177330.078125, 599893.06640625, -22373708.49609375] + + assert dictify(msg.vel) == [-1726.5062255859375, -2542.614990234375, 869.8177490234375] + + assert dictify(msg) == {'crc': 37824, 'length': 74, 'msg_type': 140, 'payload': 'FgawzwYAaggAAECxAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBM9DXxNfpHsVWdFlEAAB6NQAAejUAgDs2YIslugAAHi0=', 'preamble': 85, 'sender': 1219, 'common': {'sid': {'sat': 22, 'code': 6}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': -2.7939677238464355e-09, 'fit_interval': 0, 'valid': 1, 'health_bits': 0}, 'pos': [-12177330.078125, 599893.06640625, -22373708.49609375], 'vel': [-1726.5062255859375, -2542.614990234375, 869.8177490234375], 'acc': [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06], 'a_gf0': -0.0006315018981695175, 'a_gf1': 8.981260180007666e-12} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepA.py new file mode 100644 index 0000000000..2c1050fc1f --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepA.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisSbasDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_sbas_dep_a_1(): + buf = base64.standard_b64decode("VYIAewBwFgAGALDPBgBqCAAAAAAAAABAAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBAAAAYgb6msAAAADZOt2jwAAAALiKLotAAAAAAABArz4AAAAAAECvPgAAAAAAcMc+AAAAAGyxRL8AAAAAAMCjPbK0") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xb4b2 + + assert msg.length == 112 + + assert msg.msg_type == 0x82 + + assert msg.payload == "FgAGALDPBgBqCAAAAAAAAABAAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBAAAAYgb6msAAAADZOt2jwAAAALiKLotAAAAAAABArz4AAAAAAECvPgAAAAAAcMc+AAAAAGyxRL8AAAAAAMCjPQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.a_gf0) == -0.0006315018981695175 + + assert dictify(msg.a_gf1) == 8.981260180007666e-12 + + assert dictify(msg.acc) == [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06] + + assert dictify(msg.common) == {'fit_interval': 0, 'health_bits': 0, 'sid': {'code': 6, 'reserved': 0, 'sat': 22}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2.0, 'valid': 1} + + assert dictify(msg.pos) == [-12177330.078125, 599893.06640625, -22373708.49609375] + + assert dictify(msg.vel) == [-1726.506233215332, -2542.6149368286133, 869.8177337646484] + + assert dictify(msg) == {'crc': 46258, 'length': 112, 'msg_type': 130, 'payload': 'FgAGALDPBgBqCAAAAAAAAABAAAAAAAEAAACAQvY5Z8EAAAAiqk4iQQAA8MdUVnXBAAAAYgb6msAAAADZOt2jwAAAALiKLotAAAAAAABArz4AAAAAAECvPgAAAAAAcMc+AAAAAGyxRL8AAAAAAMCjPQ==', 'preamble': 85, 'sender': 123, 'common': {'sid': {'sat': 22, 'code': 6, 'reserved': 0}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2, 'fit_interval': 0, 'valid': 1, 'health_bits': 0}, 'pos': [-12177330.078125, 599893.06640625, -22373708.49609375], 'vel': [-1726.506233215332, -2542.6149368286133, 869.8177337646484], 'acc': [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06], 'a_gf0': -0.0006315018981695175, 'a_gf1': 8.981260180007666e-12} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepB.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepB.py new file mode 100644 index 0000000000..e1270ee953 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgEphemerisSbasDepB.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgEphemerisSbasDepB.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_ephemeris_sbas_dep_b_1(): + buf = base64.standard_b64decode("VYQAewBuFgawzwYAaggAAAAAAAAAQAAAAAABAAAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPgAAAABssUS/AAAAAADAoz2RaA==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x6891 + + assert msg.length == 110 + + assert msg.msg_type == 0x84 + + assert msg.payload == "FgawzwYAaggAAAAAAAAAQAAAAAABAAAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPgAAAABssUS/AAAAAADAoz0=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.a_gf0) == -0.0006315018981695175 + + assert dictify(msg.a_gf1) == 8.981260180007666e-12 + + assert dictify(msg.acc) == [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06] + + assert dictify(msg.common) == {'fit_interval': 0, 'health_bits': 0, 'sid': {'code': 6, 'sat': 22}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2.0, 'valid': 1} + + assert dictify(msg.pos) == [-12177330.078125, 599893.06640625, -22373708.49609375] + + assert dictify(msg.vel) == [-1726.506233215332, -2542.6149368286133, 869.8177337646484] + + assert dictify(msg) == {'crc': 26769, 'length': 110, 'msg_type': 132, 'payload': 'FgawzwYAaggAAAAAAAAAQAAAAAABAAAAgEL2OWfBAAAAIqpOIkEAAPDHVFZ1wQAAAGIG+prAAAAA2Trdo8AAAAC4ii6LQAAAAAAAQK8+AAAAAABArz4AAAAAAHDHPgAAAABssUS/AAAAAADAoz0=', 'preamble': 85, 'sender': 123, 'common': {'sid': {'sat': 22, 'code': 6}, 'toe': {'tow': 446384, 'wn': 2154}, 'ura': 2, 'fit_interval': 0, 'valid': 1, 'health_bits': 0}, 'pos': [-12177330.078125, 599893.06640625, -22373708.49609375], 'vel': [-1726.506233215332, -2542.6149368286133, 869.8177337646484], 'acc': [9.313225746154785e-07, 9.313225746154785e-07, 2.7939677238464355e-06], 'a_gf0': -0.0006315018981695175, 'a_gf1': 8.981260180007666e-12} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGnssCapb.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGnssCapb.py new file mode 100644 index 0000000000..f19f67ed61 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGnssCapb.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGnssCapb.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_gnss_capb_1(): + buf = base64.standard_b64decode("VZYAewBusM8GAGoIGqtQQAAAAABRrZAuAAAAANGLXWwAAAAA/MzIAM1cHjHwyxUY1F22IAAAAABpIMAbAAAAAChL+nIAAAAAd5N7UQAAAABVWQQCAAAAAOl0iRYAAAAAx23bC92r+FIAAAAA/D7dHAAAAACjWg==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x5aa3 + + assert msg.length == 110 + + assert msg.msg_type == 0x96 + + assert msg.payload == "sM8GAGoIGqtQQAAAAABRrZAuAAAAANGLXWwAAAAA/MzIAM1cHjHwyxUY1F22IAAAAABpIMAbAAAAAChL+nIAAAAAd5N7UQAAAABVWQQCAAAAAOl0iRYAAAAAx23bC92r+FIAAAAA/D7dHAAAAAA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.gc) == {'bds_active': 1929005864, 'bds_b2': 33839445, 'bds_b2a': 378107113, 'bds_d2nav': 1367053175, 'gal_active': 1392028637, 'gal_e5': 484261628, 'glo_active': 13159676, 'glo_l2of': 824073421, 'glo_l3': 404081648, 'gps_active': 1079028506, 'gps_l2c': 781233489, 'gps_l5': 1818069969, 'qzss_active': 198929863, 'sbas_active': 548822484, 'sbas_l5': 465576041} + + assert dictify(msg.t_nmct) == {'tow': 446384, 'wn': 2154} + + assert dictify(msg) == {'crc': 23203, 'length': 110, 'msg_type': 150, 'payload': 'sM8GAGoIGqtQQAAAAABRrZAuAAAAANGLXWwAAAAA/MzIAM1cHjHwyxUY1F22IAAAAABpIMAbAAAAAChL+nIAAAAAd5N7UQAAAABVWQQCAAAAAOl0iRYAAAAAx23bC92r+FIAAAAA/D7dHAAAAAA=', 'preamble': 85, 'sender': 123, 't_nmct': {'tow': 446384, 'wn': 2154}, 'gc': {'gps_active': 1079028506, 'gps_l2c': 781233489, 'gps_l5': 1818069969, 'glo_active': 13159676, 'glo_l2of': 824073421, 'glo_l3': 404081648, 'sbas_active': 548822484, 'sbas_l5': 465576041, 'bds_active': 1929005864, 'bds_d2nav': 1367053175, 'bds_b2': 33839445, 'bds_b2a': 378107113, 'qzss_active': 198929863, 'gal_active': 1392028637, 'gal_e5': 484261628}} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelay.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelay.py new file mode 100644 index 0000000000..18e122b3c8 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelay.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGroupDelay.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_group_delay_1(): + buf = base64.standard_b64decode("VZQAewAPsM8GAGoIFgAB/v2l/+0XAsk=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xc902 + + assert msg.length == 15 + + assert msg.msg_type == 0x94 + + assert msg.payload == "sM8GAGoIFgAB/v2l/+0X" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.isc_l1ca) == -91 + + assert dictify(msg.isc_l2c) == 6125 + + assert dictify(msg.sid) == {'code': 0, 'sat': 22} + + assert dictify(msg.t_op) == {'tow': 446384, 'wn': 2154} + + assert dictify(msg.tgd) == -514 + + assert dictify(msg.valid) == 1 + + assert dictify(msg) == {'crc': 51458, 'length': 15, 'msg_type': 148, 'payload': 'sM8GAGoIFgAB/v2l/+0X', 'preamble': 85, 'sender': 123, 't_op': {'tow': 446384, 'wn': 2154}, 'sid': {'sat': 22, 'code': 0}, 'valid': 1, 'tgd': -514, 'isc_l1ca': -91, 'isc_l2c': 6125} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepA.py new file mode 100644 index 0000000000..53eb914eee --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepA.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGroupDelayDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_group_delay_dep_a_1(): + buf = base64.standard_b64decode("VZIAewAOsM8GAGoIFgH+/aX/7ReiWw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x5ba2 + + assert msg.length == 14 + + assert msg.msg_type == 0x92 + + assert msg.payload == "sM8GAGoIFgH+/aX/7Rc=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.isc_l1ca) == -91 + + assert dictify(msg.isc_l2c) == 6125 + + assert dictify(msg.prn) == 22 + + assert dictify(msg.t_op) == {'tow': 446384, 'wn': 2154} + + assert dictify(msg.tgd) == -514 + + assert dictify(msg.valid) == 1 + + assert dictify(msg) == {'crc': 23458, 'length': 14, 'msg_type': 146, 'payload': 'sM8GAGoIFgH+/aX/7Rc=', 'preamble': 85, 'sender': 123, 't_op': {'tow': 446384, 'wn': 2154}, 'prn': 22, 'valid': 1, 'tgd': -514, 'isc_l1ca': -91, 'isc_l2c': 6125} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepB.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepB.py new file mode 100644 index 0000000000..23dfec7df8 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgGroupDelayDepB.py @@ -0,0 +1,51 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgGroupDelayDepB.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_group_delay_dep_b_1(): + buf = base64.standard_b64decode("VZMAewARsM8GAGoIFgAAAAH+/aX/7Rfdyg==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xcadd + + assert msg.length == 17 + + assert msg.msg_type == 0x93 + + assert msg.payload == "sM8GAGoIFgAAAAH+/aX/7Rc=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.isc_l1ca) == -91 + + assert dictify(msg.isc_l2c) == 6125 + + assert dictify(msg.sid) == {'code': 0, 'reserved': 0, 'sat': 22} + + assert dictify(msg.t_op) == {'tow': 446384, 'wn': 2154} + + assert dictify(msg.tgd) == -514 + + assert dictify(msg.valid) == 1 + + assert dictify(msg) == {'crc': 51933, 'length': 17, 'msg_type': 147, 'payload': 'sM8GAGoIFgAAAAH+/aX/7Rc=', 'preamble': 85, 'sender': 123, 't_op': {'tow': 446384, 'wn': 2154}, 'sid': {'sat': 22, 'code': 0, 'reserved': 0}, 'valid': 1, 'tgd': -514, 'isc_l1ca': -91, 'isc_l2c': 6125} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgIono.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgIono.py new file mode 100644 index 0000000000..f9f45da347 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgIono.py @@ -0,0 +1,57 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgIono.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_iono_1(): + buf = base64.standard_b64decode("VZAAewBGAAAAAAAAAAAAAAAAND4AAAAAAABQPgAAAAAAAHC+AAAAAAAAcL4AAAAAAADzQAAAAAAAAOhAAAAAAAAA8MAAAAAAAAAUwWUf") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x1f65 + + assert msg.length == 70 + + assert msg.msg_type == 0x90 + + assert msg.payload == "AAAAAAAAAAAAAAAAND4AAAAAAABQPgAAAAAAAHC+AAAAAAAAcL4AAAAAAADzQAAAAAAAAOhAAAAAAAAA8MAAAAAAAAAUwQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.a0) == 4.6566128730773926e-09 + + assert dictify(msg.a1) == 1.4901161193847656e-08 + + assert dictify(msg.a2) == -5.960464477539063e-08 + + assert dictify(msg.a3) == -5.960464477539063e-08 + + assert dictify(msg.b0) == 77824.0 + + assert dictify(msg.b1) == 49152.0 + + assert dictify(msg.b2) == -65536.0 + + assert dictify(msg.b3) == -327680.0 + + assert dictify(msg.t_nmct) == {'tow': 0, 'wn': 0} + + assert dictify(msg) == {'crc': 8037, 'length': 70, 'msg_type': 144, 'payload': 'AAAAAAAAAAAAAAAAND4AAAAAAABQPgAAAAAAAHC+AAAAAAAAcL4AAAAAAADzQAAAAAAAAOhAAAAAAAAA8MAAAAAAAAAUwQ==', 'preamble': 85, 'sender': 123, 't_nmct': {'tow': 0, 'wn': 0}, 'a0': 4.6566128730773926e-09, 'a1': 1.4901161193847656e-08, 'a2': -5.960464477539063e-08, 'a3': -5.960464477539063e-08, 'b0': 77824, 'b1': 49152, 'b2': -65536, 'b3': -327680} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgSvConfigurationGpsDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgSvConfigurationGpsDep.py new file mode 100644 index 0000000000..252f20f538 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_observation_MsgSvConfigurationGpsDep.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/observation/test_MsgSvConfigurationGpsDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_observation_msg_sv_configuration_gps_dep_1(): + buf = base64.standard_b64decode("VZEAewAKAAAAAAAAQrxlpxIq") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x2a12 + + assert msg.length == 10 + + assert msg.msg_type == 0x91 + + assert msg.payload == "AAAAAAAAQrxlpw==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x007b + + assert dictify(msg.l2c_mask) == 2808462402 + + assert dictify(msg.t_nmct) == {'tow': 0, 'wn': 0} + + assert dictify(msg) == {'crc': 10770, 'length': 10, 'msg_type': 145, 'payload': 'AAAAAAAAQrxlpw==', 'preamble': 85, 'sender': 123, 't_nmct': {'tow': 0, 'wn': 0}, 'l2c_mask': 2808462402} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_orientation_MsgBaselineHeading.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_orientation_MsgBaselineHeading.py new file mode 100644 index 0000000000..24d8f3cd6b --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_orientation_MsgBaselineHeading.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/orientation/test_MsgBaselineHeading.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_orientation_msg_baseline_heading_1(): + buf = base64.standard_b64decode("VQ8C010KnC0NxCxUxT1bW+D+") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xfee0 + + assert msg.length == 10 + + assert msg.msg_type == 0x20f + + assert msg.payload == "nC0NxCxUxT1bWw==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x5dd3 + + assert dictify(msg.flags) == 91 + + assert dictify(msg.heading) == 1036342316 + + assert dictify(msg.n_sats) == 91 + + assert dictify(msg.tow) == 3289197980 + + assert dictify(msg) == {'crc': 65248, 'length': 10, 'msg_type': 527, 'payload': 'nC0NxCxUxT1bWw==', 'preamble': 85, 'sender': 24019, 'tow': 3289197980, 'heading': 1036342316, 'n_sats': 91, 'flags': 91} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgAlmanac.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgAlmanac.py new file mode 100644 index 0000000000..a8a5c08bc2 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgAlmanac.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgAlmanac.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_almanac_1(): + buf = base64.standard_b64decode("VWkAbIoA+as=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xabf9 + + assert msg.length == 0 + + assert msg.msg_type == 0x69 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x8a6c + + assert dictify(msg) == {'crc': 44025, 'length': 0, 'msg_type': 105, 'payload': '', 'preamble': 85, 'sender': 35436} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCellModemStatus.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCellModemStatus.py new file mode 100644 index 0000000000..e1f08752d4 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCellModemStatus.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCellModemStatus.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_cell_modem_status_1(): + buf = base64.standard_b64decode("Vb4AExv/Z80wBkZ78i40QLCaYiuExFn9ofquzG4vJrs/ZrGiMVDCJWs84TRlso72FRFdS6lWENFQ8x7O3M5zL5pb41gLAVWSZL7ozz09ydwfTiI5UjtoQd0AK9IJIHod7QuX3xJRzKzqfwNShakMsMEAGHlVN9bGS+qz1lVecxVJeUsunj9ketUUVdSDMuDa19eVAhOBJ6QFrwY+M05C+HRYWoDisQAvjCF+3W6QYUr6tccbsEG5blwiLINgsiiwBFokB7T09Bdsq8zEPTOz8pxRUxAPhij1/ZZelpDFcQWN6CFl5yZLsvN3AfjaVgdYxZTw4wJBrXqP+5zZQ+/bH+CwgVFQKOY=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xe628 + + assert msg.length == 255 + + assert msg.msg_type == 0xbe + + assert msg.payload == "Z80wBkZ78i40QLCaYiuExFn9ofquzG4vJrs/ZrGiMVDCJWs84TRlso72FRFdS6lWENFQ8x7O3M5zL5pb41gLAVWSZL7ozz09ydwfTiI5UjtoQd0AK9IJIHod7QuX3xJRzKzqfwNShakMsMEAGHlVN9bGS+qz1lVecxVJeUsunj9ketUUVdSDMuDa19eVAhOBJ6QFrwY+M05C+HRYWoDisQAvjCF+3W6QYUr6tccbsEG5blwiLINgsiiwBFokB7T09Bdsq8zEPTOz8pxRUxAPhij1/ZZelpDFcQWN6CFl5yZLsvN3AfjaVgdYxZTw4wJBrXqP+5zZQ+/bH+CwgVFQ" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x1b13 + + assert dictify(msg.reserved) == [123, 242, 46, 52, 64, 176, 154, 98, 43, 132, 196, 89, 253, 161, 250, 174, 204, 110, 47, 38, 187, 63, 102, 177, 162, 49, 80, 194, 37, 107, 60, 225, 52, 101, 178, 142, 246, 21, 17, 93, 75, 169, 86, 16, 209, 80, 243, 30, 206, 220, 206, 115, 47, 154, 91, 227, 88, 11, 1, 85, 146, 100, 190, 232, 207, 61, 61, 201, 220, 31, 78, 34, 57, 82, 59, 104, 65, 221, 0, 43, 210, 9, 32, 122, 29, 237, 11, 151, 223, 18, 81, 204, 172, 234, 127, 3, 82, 133, 169, 12, 176, 193, 0, 24, 121, 85, 55, 214, 198, 75, 234, 179, 214, 85, 94, 115, 21, 73, 121, 75, 46, 158, 63, 100, 122, 213, 20, 85, 212, 131, 50, 224, 218, 215, 215, 149, 2, 19, 129, 39, 164, 5, 175, 6, 62, 51, 78, 66, 248, 116, 88, 90, 128, 226, 177, 0, 47, 140, 33, 126, 221, 110, 144, 97, 74, 250, 181, 199, 27, 176, 65, 185, 110, 92, 34, 44, 131, 96, 178, 40, 176, 4, 90, 36, 7, 180, 244, 244, 23, 108, 171, 204, 196, 61, 51, 179, 242, 156, 81, 83, 16, 15, 134, 40, 245, 253, 150, 94, 150, 144, 197, 113, 5, 141, 232, 33, 101, 231, 38, 75, 178, 243, 119, 1, 248, 218, 86, 7, 88, 197, 148, 240, 227, 2, 65, 173, 122, 143, 251, 156, 217, 67, 239, 219, 31, 224, 176, 129, 81, 80] + + assert dictify(msg.signal_error_rate) == 8588.2001953125 + + assert dictify(msg.signal_strength) == 103 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 190, 'sender': 6931, 'length': 255, 'payload': 'Z80wBkZ78i40QLCaYiuExFn9ofquzG4vJrs/ZrGiMVDCJWs84TRlso72FRFdS6lWENFQ8x7O3M5zL5pb41gLAVWSZL7ozz09ydwfTiI5UjtoQd0AK9IJIHod7QuX3xJRzKzqfwNShakMsMEAGHlVN9bGS+qz1lVecxVJeUsunj9ketUUVdSDMuDa19eVAhOBJ6QFrwY+M05C+HRYWoDisQAvjCF+3W6QYUr6tccbsEG5blwiLINgsiiwBFokB7T09Bdsq8zEPTOz8pxRUxAPhij1/ZZelpDFcQWN6CFl5yZLsvN3AfjaVgdYxZTw4wJBrXqP+5zZQ+/bH+CwgVFQ', 'crc': 58920, 'signal_strength': 103, 'signal_error_rate': 8588.2001953125, 'reserved': [123, 242, 46, 52, 64, 176, 154, 98, 43, 132, 196, 89, 253, 161, 250, 174, 204, 110, 47, 38, 187, 63, 102, 177, 162, 49, 80, 194, 37, 107, 60, 225, 52, 101, 178, 142, 246, 21, 17, 93, 75, 169, 86, 16, 209, 80, 243, 30, 206, 220, 206, 115, 47, 154, 91, 227, 88, 11, 1, 85, 146, 100, 190, 232, 207, 61, 61, 201, 220, 31, 78, 34, 57, 82, 59, 104, 65, 221, 0, 43, 210, 9, 32, 122, 29, 237, 11, 151, 223, 18, 81, 204, 172, 234, 127, 3, 82, 133, 169, 12, 176, 193, 0, 24, 121, 85, 55, 214, 198, 75, 234, 179, 214, 85, 94, 115, 21, 73, 121, 75, 46, 158, 63, 100, 122, 213, 20, 85, 212, 131, 50, 224, 218, 215, 215, 149, 2, 19, 129, 39, 164, 5, 175, 6, 62, 51, 78, 66, 248, 116, 88, 90, 128, 226, 177, 0, 47, 140, 33, 126, 221, 110, 144, 97, 74, 250, 181, 199, 27, 176, 65, 185, 110, 92, 34, 44, 131, 96, 178, 40, 176, 4, 90, 36, 7, 180, 244, 244, 23, 108, 171, 204, 196, 61, 51, 179, 242, 156, 81, 83, 16, 15, 134, 40, 245, 253, 150, 94, 150, 144, 197, 113, 5, 141, 232, 33, 101, 231, 38, 75, 178, 243, 119, 1, 248, 218, 86, 7, 88, 197, 148, 240, 227, 2, 65, 173, 122, 143, 251, 156, 217, 67, 239, 219, 31, 224, 176, 129, 81, 80]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandOutput.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandOutput.py new file mode 100644 index 0000000000..8d54875360 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandOutput.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCommandOutput.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_command_output_1(): + buf = base64.standard_b64decode("VbwAMlQUfqR0lVNvbWUgb3V0cHV0IHRleHQLbQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x6d0b + + assert msg.length == 20 + + assert msg.msg_type == 0xbc + + assert msg.payload == "fqR0lVNvbWUgb3V0cHV0IHRleHQ=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x5432 + + assert dictify(msg.line) == "Some output text" + + assert dictify(msg.sequence) == 2507449470 + + assert dictify(msg) == {'crc': 27915, 'length': 20, 'msg_type': 188, 'payload': 'fqR0lVNvbWUgb3V0cHV0IHRleHQ=', 'preamble': 85, 'sender': 21554, 'sequence': 2507449470, 'line': 'Some output text'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandReq.py new file mode 100644 index 0000000000..86183ae75c --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandReq.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCommandReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_command_req_1(): + buf = base64.standard_b64decode("VbgAqrgfM02jaC9wYXRoL3RvL2NvbW1hbmQgd2l0aCBhcmdzACYY") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x1826 + + assert msg.length == 31 + + assert msg.msg_type == 0xb8 + + assert msg.payload == "M02jaC9wYXRoL3RvL2NvbW1hbmQgd2l0aCBhcmdzAA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xb8aa + + assert dictify(msg.command) == "/path/to/command with args\x00" + + assert dictify(msg.sequence) == 1755532595 + + assert dictify(msg) == {'crc': 6182, 'length': 31, 'msg_type': 184, 'payload': 'M02jaC9wYXRoL3RvL2NvbW1hbmQgd2l0aCBhcmdzAA==', 'preamble': 85, 'sender': 47274, 'sequence': 1755532595, 'command': '/path/to/command with args\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandResp.py new file mode 100644 index 0000000000..7c3e04cc59 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCommandResp.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCommandResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_command_resp_1(): + buf = base64.standard_b64decode("VbkAOc4IdteDoNJulmek8A==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf0a4 + + assert msg.length == 8 + + assert msg.msg_type == 0xb9 + + assert msg.payload == "dteDoNJulmc=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xce39 + + assert dictify(msg.code) == 1737912018 + + assert dictify(msg.sequence) == 2692994934 + + assert dictify(msg) == {'crc': 61604, 'length': 8, 'msg_type': 185, 'payload': 'dteDoNJulmc=', 'preamble': 85, 'sender': 52793, 'sequence': 2692994934, 'code': 1737912018} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwResults.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwResults.py new file mode 100644 index 0000000000..7db2eefb2e --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwResults.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCwResults.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_cw_results_1(): + buf = base64.standard_b64decode("VcAAY/YA5Eg=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x48e4 + + assert msg.length == 0 + + assert msg.msg_type == 0xc0 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf663 + + assert dictify(msg) == {'crc': 18660, 'length': 0, 'msg_type': 192, 'payload': '', 'preamble': 85, 'sender': 63075} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwStart.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwStart.py new file mode 100644 index 0000000000..e2b70f2e6a --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgCwStart.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgCwStart.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_cw_start_1(): + buf = base64.standard_b64decode("VcEAHrMA1Yo=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x8ad5 + + assert msg.length == 0 + + assert msg.msg_type == 0xc1 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xb31e + + assert dictify(msg) == {'crc': 35541, 'length': 0, 'msg_type': 193, 'payload': '', 'preamble': 85, 'sender': 45854} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgFrontEndGain.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgFrontEndGain.py new file mode 100644 index 0000000000..b2fa522dfa --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgFrontEndGain.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgFrontEndGain.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_front_end_gain_1(): + buf = base64.standard_b64decode("Vb8Ar/UQKYWGCmkUJib26dhQu9VVAuuH") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x87eb + + assert msg.length == 16 + + assert msg.msg_type == 0xbf + + assert msg.payload == "KYWGCmkUJib26dhQu9VVAg==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf5af + + assert dictify(msg.if_gain) == [-10, -23, -40, 80, -69, -43, 85, 2] + + assert dictify(msg.rf_gain) == [41, -123, -122, 10, 105, 20, 38, 38] + + assert dictify(msg) == {'crc': 34795, 'length': 16, 'msg_type': 191, 'payload': 'KYWGCmkUJib26dhQu9VVAg==', 'preamble': 85, 'sender': 62895, 'rf_gain': [41, -123, -122, 10, 105, 20, 38, 38], 'if_gain': [-10, -23, -40, 80, -69, -43, 85, 2]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgInitBaseDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgInitBaseDep.py new file mode 100644 index 0000000000..129c730f67 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgInitBaseDep.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgInitBaseDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_init_base_dep_1(): + buf = base64.standard_b64decode("VSMAuCkARg0=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x0d46 + + assert msg.length == 0 + + assert msg.msg_type == 0x23 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x29b8 + + assert dictify(msg) == {'crc': 3398, 'length': 0, 'msg_type': 35, 'payload': '', 'preamble': 85, 'sender': 10680} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatellite.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatellite.py new file mode 100644 index 0000000000..01e7e1beb4 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatellite.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgMaskSatellite.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_mask_satellite_1(): + buf = base64.standard_b64decode("VSsArZcDt1c5E5M=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x9313 + + assert msg.length == 3 + + assert msg.msg_type == 0x2b + + assert msg.payload == "t1c5" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x97ad + + assert dictify(msg.mask) == 183 + + assert dictify(msg.sid) == {'code': 57, 'sat': 87} + + assert dictify(msg) == {'crc': 37651, 'length': 3, 'msg_type': 43, 'payload': 't1c5', 'preamble': 85, 'sender': 38829, 'mask': 183, 'sid': {'sat': 87, 'code': 57}} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatelliteDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatelliteDep.py new file mode 100644 index 0000000000..ed08595902 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgMaskSatelliteDep.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgMaskSatelliteDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_mask_satellite_dep_1(): + buf = base64.standard_b64decode("VRsAu4YFIQKZXwQdvA==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xbc1d + + assert msg.length == 5 + + assert msg.msg_type == 0x1b + + assert msg.payload == "IQKZXwQ=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x86bb + + assert dictify(msg.mask) == 33 + + assert dictify(msg.sid) == {'code': 95, 'reserved': 4, 'sat': 39170} + + assert dictify(msg) == {'crc': 48157, 'length': 5, 'msg_type': 27, 'payload': 'IQKZXwQ=', 'preamble': 85, 'sender': 34491, 'mask': 33, 'sid': {'sat': 39170, 'code': 95, 'reserved': 4}} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateReq.py new file mode 100644 index 0000000000..705c3f7d3a --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateReq.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgNetworkStateReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_network_state_req_1(): + buf = base64.standard_b64decode("VboAUz4AlEk=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x4994 + + assert msg.length == 0 + + assert msg.msg_type == 0xba + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x3e53 + + assert dictify(msg) == {'crc': 18836, 'length': 0, 'msg_type': 186, 'payload': '', 'preamble': 85, 'sender': 15955} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateResp.py new file mode 100644 index 0000000000..839b415247 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgNetworkStateResp.py @@ -0,0 +1,55 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgNetworkStateResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_network_state_resp_1(): + buf = base64.standard_b64decode("VbsAKA8yj/FUtJjCiSAscpNE3lzATus/0HI1txj05xppGYgDaWYwAAAAAAAAAAAAAAAAAMPlUJN2wQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xc176 + + assert msg.length == 50 + + assert msg.msg_type == 0xbb + + assert msg.payload == "j/FUtJjCiSAscpNE3lzATus/0HI1txj05xppGYgDaWYwAAAAAAAAAAAAAAAAAMPlUJM=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x0f28 + + assert dictify(msg.flags) == 2471552451 + + assert dictify(msg.interface_name) == "if0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" + + assert dictify(msg.ipv4_address) == [143, 241, 84, 180] + + assert dictify(msg.ipv4_mask_size) == 152 + + assert dictify(msg.ipv6_address) == [194, 137, 32, 44, 114, 147, 68, 222, 92, 192, 78, 235, 63, 208, 114, 53] + + assert dictify(msg.ipv6_mask_size) == 183 + + assert dictify(msg.rx_bytes) == 451408920 + + assert dictify(msg.tx_bytes) == 59251049 + + assert dictify(msg) == {'crc': 49526, 'length': 50, 'msg_type': 187, 'payload': 'j/FUtJjCiSAscpNE3lzATus/0HI1txj05xppGYgDaWYwAAAAAAAAAAAAAAAAAMPlUJM=', 'preamble': 85, 'sender': 3880, 'ipv4_address': [143, 241, 84, 180], 'ipv4_mask_size': 152, 'ipv6_address': [194, 137, 32, 44, 114, 147, 68, 222, 92, 192, 78, 235, 63, 208, 114, 53], 'ipv6_mask_size': 183, 'rx_bytes': 451408920, 'tx_bytes': 59251049, 'interface_name': 'if0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'flags': 2471552451} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgReset.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgReset.py new file mode 100644 index 0000000000..135ab01a36 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgReset.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgReset.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_reset_1(): + buf = base64.standard_b64decode("VbYAP9IEWPjuE0rP") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xcf4a + + assert msg.length == 4 + + assert msg.msg_type == 0xb6 + + assert msg.payload == "WPjuEw==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xd23f + + assert dictify(msg.flags) == 334428248 + + assert dictify(msg) == {'crc': 53066, 'length': 4, 'msg_type': 182, 'payload': 'WPjuEw==', 'preamble': 85, 'sender': 53823, 'flags': 334428248} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetDep.py new file mode 100644 index 0000000000..89abdf0676 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetDep.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgResetDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_reset_dep_1(): + buf = base64.standard_b64decode("VbIAQAsA6qs=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xabea + + assert msg.length == 0 + + assert msg.msg_type == 0xb2 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x0b40 + + assert dictify(msg) == {'crc': 44010, 'length': 0, 'msg_type': 178, 'payload': '', 'preamble': 85, 'sender': 2880} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetFilters.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetFilters.py new file mode 100644 index 0000000000..ebe3587e76 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgResetFilters.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgResetFilters.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_reset_filters_1(): + buf = base64.standard_b64decode("VSIAUcgBZIIt") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x2d82 + + assert msg.length == 1 + + assert msg.msg_type == 0x22 + + assert msg.payload == "ZA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xc851 + + assert dictify(msg.filter) == 100 + + assert dictify(msg) == {'crc': 11650, 'length': 1, 'msg_type': 34, 'payload': 'ZA==', 'preamble': 85, 'sender': 51281, 'filter': 100} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSetTime.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSetTime.py new file mode 100644 index 0000000000..8fdbb1ad5a --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSetTime.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgSetTime.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_set_time_1(): + buf = base64.standard_b64decode("VWgAFaoA10E=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x41d7 + + assert msg.length == 0 + + assert msg.msg_type == 0x68 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xaa15 + + assert dictify(msg) == {'crc': 16855, 'length': 0, 'msg_type': 104, 'payload': '', 'preamble': 85, 'sender': 43541} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecan.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecan.py new file mode 100644 index 0000000000..55d1a55e37 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecan.py @@ -0,0 +1,53 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgSpecan.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_specan_1(): + buf = base64.standard_b64decode("VVEAHNT/SolH9SJJDN3Xp9MTmsnxRc2IAEYzQ2xFZiamRGSzuRGvMcHk5C8hGI2xEmP2eT0oW5Hfp64JdAv3VDGZzQLmwtrxZWstiV1y5ivgF0rRx9OCWdyjRBT9B84ygXTCFx/i2Z3N3QXgXFJt38PppQFSjZ2xqfSDYG1v/ZUc4eFInp7SxM5GP+G4lq7wLZI7UsIEs5RC/nNNHi4EzCXIeRIRq2ajrzJCZUUN36yg6dxl7Zw+dS+PXocWm3FuD/ON4y6P49H5Apmog/mgWCZ1gTkobdGxJi8MDxAJr0VGtu91hwZHY+ZzAkel5HvSqFp8FAfckKhFFkiiRW9b+0jcHHeWXwI=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x025f + + assert msg.length == 255 + + assert msg.msg_type == 0x51 + + assert msg.payload == "SolH9SJJDN3Xp9MTmsnxRc2IAEYzQ2xFZiamRGSzuRGvMcHk5C8hGI2xEmP2eT0oW5Hfp64JdAv3VDGZzQLmwtrxZWstiV1y5ivgF0rRx9OCWdyjRBT9B84ygXTCFx/i2Z3N3QXgXFJt38PppQFSjZ2xqfSDYG1v/ZUc4eFInp7SxM5GP+G4lq7wLZI7UsIEs5RC/nNNHi4EzCXIeRIRq2ajrzJCZUUN36yg6dxl7Zw+dS+PXocWm3FuD/ON4y6P49H5Apmog/mgWCZ1gTkobdGxJi8MDxAJr0VGtu91hwZHY+ZzAkel5HvSqFp8FAfckKhFFkiiRW9b+0jcHHeW" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xd41c + + assert dictify(msg.amplitude_ref) == 3780.199951171875 + + assert dictify(msg.amplitude_unit) == 1329.199951171875 + + assert dictify(msg.amplitude_value) == [100, 179, 185, 17, 175, 49, 193, 228, 228, 47, 33, 24, 141, 177, 18, 99, 246, 121, 61, 40, 91, 145, 223, 167, 174, 9, 116, 11, 247, 84, 49, 153, 205, 2, 230, 194, 218, 241, 101, 107, 45, 137, 93, 114, 230, 43, 224, 23, 74, 209, 199, 211, 130, 89, 220, 163, 68, 20, 253, 7, 206, 50, 129, 116, 194, 23, 31, 226, 217, 157, 205, 221, 5, 224, 92, 82, 109, 223, 195, 233, 165, 1, 82, 141, 157, 177, 169, 244, 131, 96, 109, 111, 253, 149, 28, 225, 225, 72, 158, 158, 210, 196, 206, 70, 63, 225, 184, 150, 174, 240, 45, 146, 59, 82, 194, 4, 179, 148, 66, 254, 115, 77, 30, 46, 4, 204, 37, 200, 121, 18, 17, 171, 102, 163, 175, 50, 66, 101, 69, 13, 223, 172, 160, 233, 220, 101, 237, 156, 62, 117, 47, 143, 94, 135, 22, 155, 113, 110, 15, 243, 141, 227, 46, 143, 227, 209, 249, 2, 153, 168, 131, 249, 160, 88, 38, 117, 129, 57, 40, 109, 209, 177, 38, 47, 12, 15, 16, 9, 175, 69, 70, 182, 239, 117, 135, 6, 71, 99, 230, 115, 2, 71, 165, 228, 123, 210, 168, 90, 124, 20, 7, 220, 144, 168, 69, 22, 72, 162, 69, 111, 91, 251, 72, 220, 28, 119, 150] + + assert dictify(msg.channel_tag) == 35146 + + assert dictify(msg.freq_ref) == 7737.2001953125 + + assert dictify(msg.freq_step) == 8226.2001953125 + + assert dictify(msg.t) == {'ns_residual': -1479025396, 'tow': 1227027783, 'wn': 5075} + + assert dictify(msg) == {'preamble': 85, 'msg_type': 81, 'sender': 54300, 'length': 255, 'payload': 'SolH9SJJDN3Xp9MTmsnxRc2IAEYzQ2xFZiamRGSzuRGvMcHk5C8hGI2xEmP2eT0oW5Hfp64JdAv3VDGZzQLmwtrxZWstiV1y5ivgF0rRx9OCWdyjRBT9B84ygXTCFx/i2Z3N3QXgXFJt38PppQFSjZ2xqfSDYG1v/ZUc4eFInp7SxM5GP+G4lq7wLZI7UsIEs5RC/nNNHi4EzCXIeRIRq2ajrzJCZUUN36yg6dxl7Zw+dS+PXocWm3FuD/ON4y6P49H5Apmog/mgWCZ1gTkobdGxJi8MDxAJr0VGtu91hwZHY+ZzAkel5HvSqFp8FAfckKhFFkiiRW9b+0jcHHeW', 'crc': 607, 'channel_tag': 35146, 't': {'tow': 1227027783, 'ns_residual': -1479025396, 'wn': 5075}, 'freq_ref': 7737.2001953125, 'freq_step': 8226.2001953125, 'amplitude_ref': 3780.199951171875, 'amplitude_unit': 1329.199951171875, 'amplitude_value': [100, 179, 185, 17, 175, 49, 193, 228, 228, 47, 33, 24, 141, 177, 18, 99, 246, 121, 61, 40, 91, 145, 223, 167, 174, 9, 116, 11, 247, 84, 49, 153, 205, 2, 230, 194, 218, 241, 101, 107, 45, 137, 93, 114, 230, 43, 224, 23, 74, 209, 199, 211, 130, 89, 220, 163, 68, 20, 253, 7, 206, 50, 129, 116, 194, 23, 31, 226, 217, 157, 205, 221, 5, 224, 92, 82, 109, 223, 195, 233, 165, 1, 82, 141, 157, 177, 169, 244, 131, 96, 109, 111, 253, 149, 28, 225, 225, 72, 158, 158, 210, 196, 206, 70, 63, 225, 184, 150, 174, 240, 45, 146, 59, 82, 194, 4, 179, 148, 66, 254, 115, 77, 30, 46, 4, 204, 37, 200, 121, 18, 17, 171, 102, 163, 175, 50, 66, 101, 69, 13, 223, 172, 160, 233, 220, 101, 237, 156, 62, 117, 47, 143, 94, 135, 22, 155, 113, 110, 15, 243, 141, 227, 46, 143, 227, 209, 249, 2, 153, 168, 131, 249, 160, 88, 38, 117, 129, 57, 40, 109, 209, 177, 38, 47, 12, 15, 16, 9, 175, 69, 70, 182, 239, 117, 135, 6, 71, 99, 230, 115, 2, 71, 165, 228, 123, 210, 168, 90, 124, 20, 7, 220, 144, 168, 69, 22, 72, 162, 69, 111, 91, 251, 72, 220, 28, 119, 150]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecanDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecanDep.py new file mode 100644 index 0000000000..39527d790f --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgSpecanDep.py @@ -0,0 +1,53 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/piksi/test_MsgSpecanDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_piksi_msg_specan_dep_1(): + buf = base64.standard_b64decode("VVAAcNn/9hbdOCU7LRuaYcZFmgGQRc0UEkYz01lF8A6zuuP0rfC2R6Z1xA0sGyEcQ/4D+VwseqlNukSHP6iiWSS6Yz9pdNgsQ9ScS1E1+uEXzRoidzJlQAfnfLfLZupUU9AXRDazYmB09PZeaF4NONISvxaFUZmfods7FaR5kcurhDm0ZmUL5a+RSUh8BLjkPeraPuLZwQdtLFPJFGUJjLqiUVse56FR2HI856OjMe30ufBZj66l0/ENED2NZVkldb1WdrDkDA53h4HzMh3PxnVk4QaLbifSRMcrhEARM621DIwQ91S3aSedTR7NwjtA8bfuabWqLQimpO5TlK1s5ENZvUMaJ9g=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xd827 + + assert msg.length == 255 + + assert msg.msg_type == 0x50 + + assert msg.payload == "9hbdOCU7LRuaYcZFmgGQRc0UEkYz01lF8A6zuuP0rfC2R6Z1xA0sGyEcQ/4D+VwseqlNukSHP6iiWSS6Yz9pdNgsQ9ScS1E1+uEXzRoidzJlQAfnfLfLZupUU9AXRDazYmB09PZeaF4NONISvxaFUZmfods7FaR5kcurhDm0ZmUL5a+RSUh8BLjkPeraPuLZwQdtLFPJFGUJjLqiUVse56FR2HI856OjMe30ufBZj66l0/ENED2NZVkldb1WdrDkDA53h4HzMh3PxnVk4QaLbifSRMcrhEARM621DIwQ91S3aSedTR7NwjtA8bfuabWqLQimpO5TlK1s5ENZvUMa" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xd970 + + assert dictify(msg.amplitude_ref) == 9349.2001953125 + + assert dictify(msg.amplitude_unit) == 3485.199951171875 + + assert dictify(msg.amplitude_value) == [240, 14, 179, 186, 227, 244, 173, 240, 182, 71, 166, 117, 196, 13, 44, 27, 33, 28, 67, 254, 3, 249, 92, 44, 122, 169, 77, 186, 68, 135, 63, 168, 162, 89, 36, 186, 99, 63, 105, 116, 216, 44, 67, 212, 156, 75, 81, 53, 250, 225, 23, 205, 26, 34, 119, 50, 101, 64, 7, 231, 124, 183, 203, 102, 234, 84, 83, 208, 23, 68, 54, 179, 98, 96, 116, 244, 246, 94, 104, 94, 13, 56, 210, 18, 191, 22, 133, 81, 153, 159, 161, 219, 59, 21, 164, 121, 145, 203, 171, 132, 57, 180, 102, 101, 11, 229, 175, 145, 73, 72, 124, 4, 184, 228, 61, 234, 218, 62, 226, 217, 193, 7, 109, 44, 83, 201, 20, 101, 9, 140, 186, 162, 81, 91, 30, 231, 161, 81, 216, 114, 60, 231, 163, 163, 49, 237, 244, 185, 240, 89, 143, 174, 165, 211, 241, 13, 16, 61, 141, 101, 89, 37, 117, 189, 86, 118, 176, 228, 12, 14, 119, 135, 129, 243, 50, 29, 207, 198, 117, 100, 225, 6, 139, 110, 39, 210, 68, 199, 43, 132, 64, 17, 51, 173, 181, 12, 140, 16, 247, 84, 183, 105, 39, 157, 77, 30, 205, 194, 59, 64, 241, 183, 238, 105, 181, 170, 45, 8, 166, 164, 238, 83, 148, 173, 108, 228, 67, 89, 189, 67, 26] + + assert dictify(msg.channel_tag) == 5878 + + assert dictify(msg.freq_ref) == 6348.2001953125 + + assert dictify(msg.freq_step) == 4608.2001953125 + + assert dictify(msg.t) == {'tow': 992295133, 'wn': 6957} + + assert dictify(msg) == {'preamble': 85, 'msg_type': 80, 'sender': 55664, 'length': 255, 'payload': '9hbdOCU7LRuaYcZFmgGQRc0UEkYz01lF8A6zuuP0rfC2R6Z1xA0sGyEcQ/4D+VwseqlNukSHP6iiWSS6Yz9pdNgsQ9ScS1E1+uEXzRoidzJlQAfnfLfLZupUU9AXRDazYmB09PZeaF4NONISvxaFUZmfods7FaR5kcurhDm0ZmUL5a+RSUh8BLjkPeraPuLZwQdtLFPJFGUJjLqiUVse56FR2HI856OjMe30ufBZj66l0/ENED2NZVkldb1WdrDkDA53h4HzMh3PxnVk4QaLbifSRMcrhEARM621DIwQ91S3aSedTR7NwjtA8bfuabWqLQimpO5TlK1s5ENZvUMa', 'crc': 55335, 'channel_tag': 5878, 't': {'tow': 992295133, 'wn': 6957}, 'freq_ref': 6348.2001953125, 'freq_step': 4608.2001953125, 'amplitude_ref': 9349.2001953125, 'amplitude_unit': 3485.199951171875, 'amplitude_value': [240, 14, 179, 186, 227, 244, 173, 240, 182, 71, 166, 117, 196, 13, 44, 27, 33, 28, 67, 254, 3, 249, 92, 44, 122, 169, 77, 186, 68, 135, 63, 168, 162, 89, 36, 186, 99, 63, 105, 116, 216, 44, 67, 212, 156, 75, 81, 53, 250, 225, 23, 205, 26, 34, 119, 50, 101, 64, 7, 231, 124, 183, 203, 102, 234, 84, 83, 208, 23, 68, 54, 179, 98, 96, 116, 244, 246, 94, 104, 94, 13, 56, 210, 18, 191, 22, 133, 81, 153, 159, 161, 219, 59, 21, 164, 121, 145, 203, 171, 132, 57, 180, 102, 101, 11, 229, 175, 145, 73, 72, 124, 4, 184, 228, 61, 234, 218, 62, 226, 217, 193, 7, 109, 44, 83, 201, 20, 101, 9, 140, 186, 162, 81, 91, 30, 231, 161, 81, 216, 114, 60, 231, 163, 163, 49, 237, 244, 185, 240, 89, 143, 174, 165, 211, 241, 13, 16, 61, 141, 101, 89, 37, 117, 189, 86, 118, 176, 228, 12, 14, 119, 135, 129, 243, 50, 29, 207, 198, 117, 100, 225, 6, 139, 110, 39, 210, 68, 199, 43, 132, 64, 17, 51, 173, 181, 12, 140, 16, 247, 84, 183, 105, 39, 157, 77, 30, 205, 194, 59, 64, 241, 183, 238, 105, 181, 170, 45, 8, 166, 164, 238, 83, 148, 173, 108, 228, 67, 89, 189, 67, 26]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgUartState.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgUartState.py index 8bee9d3942..288fdcb5d5 100644 --- a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgUartState.py +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_piksi_MsgUartState.py @@ -19,6 +19,36 @@ import base64 def test_auto_check_sbp_piksi_msg_uart_state_1(): + buf = base64.standard_b64decode("VR0AyOBKmqnyRWam50RZYk+4ivSaSclFmkHTRckQZ/mPoZoRukUz0wdF15X9GdoYHcMQE5+ORxEKcYnbhxK2FSa+O8Spm2tv/aj0nnAT+4Nk4Q==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xe164 + + assert msg.length == 74 + + assert msg.msg_type == 0x1d + + assert msg.payload == "mqnyRWam50RZYk+4ivSaSclFmkHTRckQZ/mPoZoRukUz0wdF15X9GdoYHcMQE5+ORxEKcYnbhxK2FSa+O8Spm2tv/aj0nnAT+4M=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xe0c8 + + assert dictify(msg.latency) == {'avg': 319865629, 'current': 364253831, 'lmax': -611749622, 'lmin': 289902239} + + assert dictify(msg.obs_period) == {'avg': -1002717658, 'current': -2080697488, 'pmax': -1628133123, 'pmin': 1869323177} + + assert dictify(msg.uart_a) == {'crc_error_count': 25177, 'io_error_count': 47183, 'rx_buffer_level': 244, 'rx_throughput': 1853.199951171875, 'tx_buffer_level': 138, 'tx_throughput': 7765.2001953125} + + assert dictify(msg.uart_b) == {'crc_error_count': 4297, 'io_error_count': 63847, 'rx_buffer_level': 161, 'rx_throughput': 6760.2001953125, 'tx_buffer_level': 143, 'tx_throughput': 6441.2001953125} + + assert dictify(msg.uart_ftdi) == {'crc_error_count': 38359, 'io_error_count': 6653, 'rx_buffer_level': 24, 'rx_throughput': 2173.199951171875, 'tx_buffer_level': 218, 'tx_throughput': 5954.2001953125} + + assert dictify(msg) == {'preamble': 85, 'msg_type': 29, 'sender': 57544, 'length': 74, 'payload': 'mqnyRWam50RZYk+4ivSaSclFmkHTRckQZ/mPoZoRukUz0wdF15X9GdoYHcMQE5+ORxEKcYnbhxK2FSa+O8Spm2tv/aj0nnAT+4M=', 'crc': 57700, 'uart_a': {'tx_throughput': 7765.2001953125, 'rx_throughput': 1853.199951171875, 'crc_error_count': 25177, 'io_error_count': 47183, 'tx_buffer_level': 138, 'rx_buffer_level': 244}, 'uart_b': {'tx_throughput': 6441.2001953125, 'rx_throughput': 6760.2001953125, 'crc_error_count': 4297, 'io_error_count': 63847, 'tx_buffer_level': 143, 'rx_buffer_level': 161}, 'uart_ftdi': {'tx_throughput': 5954.2001953125, 'rx_throughput': 2173.199951171875, 'crc_error_count': 38359, 'io_error_count': 6653, 'tx_buffer_level': 218, 'rx_buffer_level': 24}, 'latency': {'avg': 319865629, 'lmin': 289902239, 'lmax': -611749622, 'current': 364253831}, 'obs_period': {'avg': -1002717658, 'pmin': 1869323177, 'pmax': -1628133123, 'current': -2080697488}} + +def test_auto_check_sbp_piksi_msg_uart_state_2(): buf = base64.standard_b64decode("VRgA9tc6Gr9dPwAAAAAAAAAAGAB7Mj5AAAAAAAAAAAAoADYHokCxORA9AAAAAFEB/////wAAAAAAAAAA/////0d8") stream = KaitaiStream(io.BytesIO(buf)) @@ -46,7 +76,7 @@ def test_auto_check_sbp_piksi_msg_uart_state_1(): assert dictify(msg) == {'latency': {'current': -1, 'lmax': 0, 'avg': -1, 'lmin': 0}, 'sender': 55286, 'msg_type': 24, 'crc': 31815, 'length': 58, 'uart_b': {'rx_buffer_level': 0, 'tx_buffer_level': 40, 'rx_throughput': 0.0, 'crc_error_count': 0, 'io_error_count': 0, 'tx_throughput': 2.9718310832977295}, 'uart_a': {'rx_buffer_level': 0, 'tx_buffer_level': 24, 'rx_throughput': 0.0, 'crc_error_count': 0, 'io_error_count': 0, 'tx_throughput': 0.8661972284317017}, 'preamble': 85, 'payload': 'Gr9dPwAAAAAAAAAAGAB7Mj5AAAAAAAAAAAAoADYHokCxORA9AAAAAFEB/////wAAAAAAAAAA/////w==', 'uart_ftdi': {'rx_buffer_level': 1, 'tx_buffer_level': 81, 'rx_throughput': 0.035211268812417984, 'crc_error_count': 0, 'io_error_count': 0, 'tx_throughput': 5.063380241394043}} -def test_auto_check_sbp_piksi_msg_uart_state_2(): +def test_auto_check_sbp_piksi_msg_uart_state_3(): buf = base64.standard_b64decode("VRgA9tc67ehfPwAAAAAAAAAAGADGuj9AAAAAAAAAAAAoANZI2UAdSLQ+AAAAAFUB/////wAAAAAAAAAA/////5n4") stream = KaitaiStream(io.BytesIO(buf)) diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadByIndexReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadByIndexReq.py new file mode 100644 index 0000000000..bad33c63ac --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadByIndexReq.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsReadByIndexReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_read_by_index_req_1(): + buf = base64.standard_b64decode("VaIAensC9CLrFw==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x17eb + + assert msg.length == 2 + + assert msg.msg_type == 0xa2 + + assert msg.payload == "9CI=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x7b7a + + assert dictify(msg.index) == 8948 + + assert dictify(msg) == {'crc': 6123, 'length': 2, 'msg_type': 162, 'payload': '9CI=', 'preamble': 85, 'sender': 31610, 'index': 8948} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadReq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadReq.py new file mode 100644 index 0000000000..947a986f64 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadReq.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsReadReq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_read_req_1(): + buf = base64.standard_b64decode("VaQAmNYac2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQC15A==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xe4b5 + + assert msg.length == 26 + + assert msg.msg_type == 0xa4 + + assert msg.payload == "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQA=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xd698 + + assert dictify(msg.setting) == "section-name\x00setting-name\x00" + + assert dictify(msg) == {'crc': 58549, 'length': 26, 'msg_type': 164, 'payload': 'c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQA=', 'preamble': 85, 'sender': 54936, 'setting': 'section-name\x00setting-name\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadResp.py new file mode 100644 index 0000000000..0b488f050c --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsReadResp.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsReadResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_read_resp_1(): + buf = base64.standard_b64decode("VaUAiPBCc2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMAy8c=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xc7cb + + assert msg.length == 66 + + assert msg.msg_type == 0xa5 + + assert msg.payload == "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf088 + + assert dictify(msg.setting) == "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00" + + assert dictify(msg) == {'crc': 51147, 'length': 66, 'msg_type': 165, 'payload': 'c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA', 'preamble': 85, 'sender': 61576, 'setting': 'section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegister.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegister.py new file mode 100644 index 0000000000..78e9c75e1d --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegister.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsRegister.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_register_1(): + buf = base64.standard_b64decode("Va4AVAZCc2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMAjus=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xeb8e + + assert msg.length == 66 + + assert msg.msg_type == 0xae + + assert msg.payload == "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x0654 + + assert dictify(msg.setting) == "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00" + + assert dictify(msg) == {'crc': 60302, 'length': 66, 'msg_type': 174, 'payload': 'c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAGVudW07dmFsdWUxLHZhbHVlMix2YWx1ZTMA', 'preamble': 85, 'sender': 1620, 'setting': 'section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegisterResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegisterResp.py new file mode 100644 index 0000000000..ddf47fbfc4 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsRegisterResp.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsRegisterResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_register_resp_1(): + buf = base64.standard_b64decode("Va8BKdVDEnNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAFIQ") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x1052 + + assert msg.length == 67 + + assert msg.msg_type == 0x1af + + assert msg.payload == "EnNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xd529 + + assert dictify(msg.setting) == "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00" + + assert dictify(msg.status) == 18 + + assert dictify(msg) == {'crc': 4178, 'length': 67, 'msg_type': 431, 'payload': 'EnNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==', 'preamble': 85, 'sender': 54569, 'status': 18, 'setting': 'section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsSave.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsSave.py new file mode 100644 index 0000000000..954ddba3e9 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsSave.py @@ -0,0 +1,39 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsSave.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_save_1(): + buf = base64.standard_b64decode("VaEAouAAe0M=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x437b + + assert msg.length == 0 + + assert msg.msg_type == 0xa1 + + assert msg.payload == "" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xe0a2 + + assert dictify(msg) == {'crc': 17275, 'length': 0, 'msg_type': 161, 'payload': '', 'preamble': 85, 'sender': 57506} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWrite.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWrite.py new file mode 100644 index 0000000000..9d75c2e0d5 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWrite.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsWrite.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_write_1(): + buf = base64.standard_b64decode("VaAAewAoc2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAPQK") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xaf4 + + assert msg.length == 40 + + assert msg.msg_type == 0xa0 + + assert msg.payload == "c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x7b + + assert dictify(msg.setting) == "section-name\x00setting-name\x00setting-value\x00" + + assert dictify(msg) == {'crc': 2804, 'length': 40, 'msg_type': 160, 'payload': 'c2VjdGlvbi1uYW1lAHNldHRpbmctbmFtZQBzZXR0aW5nLXZhbHVlAA==', 'preamble': 85, 'sender': 123, 'setting': 'section-name\x00setting-name\x00setting-value\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWriteResp.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWriteResp.py new file mode 100644 index 0000000000..e01d49ae28 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_settings_MsgSettingsWriteResp.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/settings/test_MsgSettingsWriteResp.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_settings_msg_settings_write_resp_1(): + buf = base64.standard_b64decode("Va8AWzdDmHNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzADYA") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x0036 + + assert msg.length == 67 + + assert msg.msg_type == 0xaf + + assert msg.payload == "mHNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x375b + + assert dictify(msg.setting) == "section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00" + + assert dictify(msg.status) == 152 + + assert dictify(msg) == {'crc': 54, 'length': 67, 'msg_type': 175, 'payload': 'mHNlY3Rpb24tbmFtZQBzZXR0aW5nLW5hbWUAc2V0dGluZy12YWx1ZQBlbnVtO3ZhbHVlMSx2YWx1ZTIsdmFsdWUzAA==', 'preamble': 85, 'sender': 14171, 'status': 152, 'setting': 'section-name\x00setting-name\x00setting-value\x00enum;value1,value2,value3\x00'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMeta.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMeta.py new file mode 100644 index 0000000000..c9687dd9b9 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMeta.py @@ -0,0 +1,53 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/soln_meta/test_MsgSolnMeta.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_solution_meta_msg_soln_meta_1(): + buf = base64.standard_b64decode("VQ7/ADz+MNBB2HotxKCQ5AhTWVcD1V9tVoNHRlRJgxpS94xhc252/QJ6upR6lLTnRC6+ZvMwwA/QWTgK9QL+yXggfgJToe57ZuZMvuG2z+QH2nVZHb84+Ln/LhJIjlJxGgSs/rKIcXM6wVnjtvZMTWz1KR9GfPmRD07kJvGBCLD7SPhQc/Tnkb++sqhZ6UWwroy2jVFSXE9l32RAuNd8JRXjh2ZIJNs4klrbaONmUwwpeq1eAa6GgmjtdPlr5oJ7GaI538GuksHvLPbF1lBTZEJIhYmMUgICYAlgnoZhK4GNGbfI1jn4Z95Bww/0FbQujIIkEcLRQf5zZ5iB6uvC6qrJ0pqW9w==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf796 + + assert msg.length == 254 + + assert msg.msg_type == 0xff0e + + assert msg.payload == "MNBB2HotxKCQ5AhTWVcD1V9tVoNHRlRJgxpS94xhc252/QJ6upR6lLTnRC6+ZvMwwA/QWTgK9QL+yXggfgJToe57ZuZMvuG2z+QH2nVZHb84+Ln/LhJIjlJxGgSs/rKIcXM6wVnjtvZMTWz1KR9GfPmRD07kJvGBCLD7SPhQc/Tnkb++sqhZ6UWwroy2jVFSXE9l32RAuNd8JRXjh2ZIJNs4klrbaONmUwwpeq1eAa6GgmjtdPlr5oJ7GaI538GuksHvLPbF1lBTZEJIhYmMUgICYAlgnoZhK4GNGbfI1jn4Z95Bww/0FbQujIIkEcLRQf5zZ5iB6uvC6qrJ0po=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x3c00 + + assert dictify(msg.age_corrections) == 21256 + + assert dictify(msg.age_gnss) == 3573765977 + + assert dictify(msg.hdop) == 41156 + + assert dictify(msg.pdop) == 11642 + + assert dictify(msg.sol_in) == [{'flags': 109, 'sensor_type': 95}, {'flags': 131, 'sensor_type': 86}, {'flags': 70, 'sensor_type': 71}, {'flags': 73, 'sensor_type': 84}, {'flags': 26, 'sensor_type': 131}, {'flags': 247, 'sensor_type': 82}, {'flags': 97, 'sensor_type': 140}, {'flags': 110, 'sensor_type': 115}, {'flags': 253, 'sensor_type': 118}, {'flags': 122, 'sensor_type': 2}, {'flags': 148, 'sensor_type': 186}, {'flags': 148, 'sensor_type': 122}, {'flags': 231, 'sensor_type': 180}, {'flags': 46, 'sensor_type': 68}, {'flags': 102, 'sensor_type': 190}, {'flags': 48, 'sensor_type': 243}, {'flags': 15, 'sensor_type': 192}, {'flags': 89, 'sensor_type': 208}, {'flags': 10, 'sensor_type': 56}, {'flags': 2, 'sensor_type': 245}, {'flags': 201, 'sensor_type': 254}, {'flags': 32, 'sensor_type': 120}, {'flags': 2, 'sensor_type': 126}, {'flags': 161, 'sensor_type': 83}, {'flags': 123, 'sensor_type': 238}, {'flags': 230, 'sensor_type': 102}, {'flags': 190, 'sensor_type': 76}, {'flags': 182, 'sensor_type': 225}, {'flags': 228, 'sensor_type': 207}, {'flags': 218, 'sensor_type': 7}, {'flags': 89, 'sensor_type': 117}, {'flags': 191, 'sensor_type': 29}, {'flags': 248, 'sensor_type': 56}, {'flags': 255, 'sensor_type': 185}, {'flags': 18, 'sensor_type': 46}, {'flags': 142, 'sensor_type': 72}, {'flags': 113, 'sensor_type': 82}, {'flags': 4, 'sensor_type': 26}, {'flags': 254, 'sensor_type': 172}, {'flags': 136, 'sensor_type': 178}, {'flags': 115, 'sensor_type': 113}, {'flags': 193, 'sensor_type': 58}, {'flags': 227, 'sensor_type': 89}, {'flags': 246, 'sensor_type': 182}, {'flags': 77, 'sensor_type': 76}, {'flags': 245, 'sensor_type': 108}, {'flags': 31, 'sensor_type': 41}, {'flags': 124, 'sensor_type': 70}, {'flags': 145, 'sensor_type': 249}, {'flags': 78, 'sensor_type': 15}, {'flags': 38, 'sensor_type': 228}, {'flags': 129, 'sensor_type': 241}, {'flags': 176, 'sensor_type': 8}, {'flags': 72, 'sensor_type': 251}, {'flags': 80, 'sensor_type': 248}, {'flags': 244, 'sensor_type': 115}, {'flags': 145, 'sensor_type': 231}, {'flags': 190, 'sensor_type': 191}, {'flags': 168, 'sensor_type': 178}, {'flags': 233, 'sensor_type': 89}, {'flags': 176, 'sensor_type': 69}, {'flags': 140, 'sensor_type': 174}, {'flags': 141, 'sensor_type': 182}, {'flags': 82, 'sensor_type': 81}, {'flags': 79, 'sensor_type': 92}, {'flags': 223, 'sensor_type': 101}, {'flags': 64, 'sensor_type': 100}, {'flags': 215, 'sensor_type': 184}, {'flags': 37, 'sensor_type': 124}, {'flags': 227, 'sensor_type': 21}, {'flags': 102, 'sensor_type': 135}, {'flags': 36, 'sensor_type': 72}, {'flags': 56, 'sensor_type': 219}, {'flags': 90, 'sensor_type': 146}, {'flags': 104, 'sensor_type': 219}, {'flags': 102, 'sensor_type': 227}, {'flags': 12, 'sensor_type': 83}, {'flags': 122, 'sensor_type': 41}, {'flags': 94, 'sensor_type': 173}, {'flags': 174, 'sensor_type': 1}, {'flags': 130, 'sensor_type': 134}, {'flags': 237, 'sensor_type': 104}, {'flags': 249, 'sensor_type': 116}, {'flags': 230, 'sensor_type': 107}, {'flags': 123, 'sensor_type': 130}, {'flags': 162, 'sensor_type': 25}, {'flags': 223, 'sensor_type': 57}, {'flags': 174, 'sensor_type': 193}, {'flags': 193, 'sensor_type': 146}, {'flags': 44, 'sensor_type': 239}, {'flags': 197, 'sensor_type': 246}, {'flags': 80, 'sensor_type': 214}, {'flags': 100, 'sensor_type': 83}, {'flags': 72, 'sensor_type': 66}, {'flags': 137, 'sensor_type': 133}, {'flags': 82, 'sensor_type': 140}, {'flags': 2, 'sensor_type': 2}, {'flags': 9, 'sensor_type': 96}, {'flags': 158, 'sensor_type': 96}, {'flags': 97, 'sensor_type': 134}, {'flags': 129, 'sensor_type': 43}, {'flags': 25, 'sensor_type': 141}, {'flags': 200, 'sensor_type': 183}, {'flags': 57, 'sensor_type': 214}, {'flags': 103, 'sensor_type': 248}, {'flags': 65, 'sensor_type': 222}, {'flags': 15, 'sensor_type': 195}, {'flags': 21, 'sensor_type': 244}, {'flags': 46, 'sensor_type': 180}, {'flags': 130, 'sensor_type': 140}, {'flags': 17, 'sensor_type': 36}, {'flags': 209, 'sensor_type': 194}, {'flags': 254, 'sensor_type': 65}, {'flags': 103, 'sensor_type': 115}, {'flags': 129, 'sensor_type': 152}, {'flags': 235, 'sensor_type': 234}, {'flags': 234, 'sensor_type': 194}, {'flags': 201, 'sensor_type': 170}, {'flags': 154, 'sensor_type': 210}] + + assert dictify(msg.tow) == 3628191792 + + assert dictify(msg.vdop) == 58512 + + assert dictify(msg) == {'crc': 63382, 'length': 254, 'msg_type': 65294, 'payload': 'MNBB2HotxKCQ5AhTWVcD1V9tVoNHRlRJgxpS94xhc252/QJ6upR6lLTnRC6+ZvMwwA/QWTgK9QL+yXggfgJToe57ZuZMvuG2z+QH2nVZHb84+Ln/LhJIjlJxGgSs/rKIcXM6wVnjtvZMTWz1KR9GfPmRD07kJvGBCLD7SPhQc/Tnkb++sqhZ6UWwroy2jVFSXE9l32RAuNd8JRXjh2ZIJNs4klrbaONmUwwpeq1eAa6GgmjtdPlr5oJ7GaI538GuksHvLPbF1lBTZEJIhYmMUgICYAlgnoZhK4GNGbfI1jn4Z95Bww/0FbQujIIkEcLRQf5zZ5iB6uvC6qrJ0po=', 'preamble': 85, 'sender': 15360, 'tow': 3628191792, 'pdop': 11642, 'hdop': 41156, 'vdop': 58512, 'age_corrections': 21256, 'age_gnss': 3573765977, 'sol_in': [{'sensor_type': 95, 'flags': 109}, {'sensor_type': 86, 'flags': 131}, {'sensor_type': 71, 'flags': 70}, {'sensor_type': 84, 'flags': 73}, {'sensor_type': 131, 'flags': 26}, {'sensor_type': 82, 'flags': 247}, {'sensor_type': 140, 'flags': 97}, {'sensor_type': 115, 'flags': 110}, {'sensor_type': 118, 'flags': 253}, {'sensor_type': 2, 'flags': 122}, {'sensor_type': 186, 'flags': 148}, {'sensor_type': 122, 'flags': 148}, {'sensor_type': 180, 'flags': 231}, {'sensor_type': 68, 'flags': 46}, {'sensor_type': 190, 'flags': 102}, {'sensor_type': 243, 'flags': 48}, {'sensor_type': 192, 'flags': 15}, {'sensor_type': 208, 'flags': 89}, {'sensor_type': 56, 'flags': 10}, {'sensor_type': 245, 'flags': 2}, {'sensor_type': 254, 'flags': 201}, {'sensor_type': 120, 'flags': 32}, {'sensor_type': 126, 'flags': 2}, {'sensor_type': 83, 'flags': 161}, {'sensor_type': 238, 'flags': 123}, {'sensor_type': 102, 'flags': 230}, {'sensor_type': 76, 'flags': 190}, {'sensor_type': 225, 'flags': 182}, {'sensor_type': 207, 'flags': 228}, {'sensor_type': 7, 'flags': 218}, {'sensor_type': 117, 'flags': 89}, {'sensor_type': 29, 'flags': 191}, {'sensor_type': 56, 'flags': 248}, {'sensor_type': 185, 'flags': 255}, {'sensor_type': 46, 'flags': 18}, {'sensor_type': 72, 'flags': 142}, {'sensor_type': 82, 'flags': 113}, {'sensor_type': 26, 'flags': 4}, {'sensor_type': 172, 'flags': 254}, {'sensor_type': 178, 'flags': 136}, {'sensor_type': 113, 'flags': 115}, {'sensor_type': 58, 'flags': 193}, {'sensor_type': 89, 'flags': 227}, {'sensor_type': 182, 'flags': 246}, {'sensor_type': 76, 'flags': 77}, {'sensor_type': 108, 'flags': 245}, {'sensor_type': 41, 'flags': 31}, {'sensor_type': 70, 'flags': 124}, {'sensor_type': 249, 'flags': 145}, {'sensor_type': 15, 'flags': 78}, {'sensor_type': 228, 'flags': 38}, {'sensor_type': 241, 'flags': 129}, {'sensor_type': 8, 'flags': 176}, {'sensor_type': 251, 'flags': 72}, {'sensor_type': 248, 'flags': 80}, {'sensor_type': 115, 'flags': 244}, {'sensor_type': 231, 'flags': 145}, {'sensor_type': 191, 'flags': 190}, {'sensor_type': 178, 'flags': 168}, {'sensor_type': 89, 'flags': 233}, {'sensor_type': 69, 'flags': 176}, {'sensor_type': 174, 'flags': 140}, {'sensor_type': 182, 'flags': 141}, {'sensor_type': 81, 'flags': 82}, {'sensor_type': 92, 'flags': 79}, {'sensor_type': 101, 'flags': 223}, {'sensor_type': 100, 'flags': 64}, {'sensor_type': 184, 'flags': 215}, {'sensor_type': 124, 'flags': 37}, {'sensor_type': 21, 'flags': 227}, {'sensor_type': 135, 'flags': 102}, {'sensor_type': 72, 'flags': 36}, {'sensor_type': 219, 'flags': 56}, {'sensor_type': 146, 'flags': 90}, {'sensor_type': 219, 'flags': 104}, {'sensor_type': 227, 'flags': 102}, {'sensor_type': 83, 'flags': 12}, {'sensor_type': 41, 'flags': 122}, {'sensor_type': 173, 'flags': 94}, {'sensor_type': 1, 'flags': 174}, {'sensor_type': 134, 'flags': 130}, {'sensor_type': 104, 'flags': 237}, {'sensor_type': 116, 'flags': 249}, {'sensor_type': 107, 'flags': 230}, {'sensor_type': 130, 'flags': 123}, {'sensor_type': 25, 'flags': 162}, {'sensor_type': 57, 'flags': 223}, {'sensor_type': 193, 'flags': 174}, {'sensor_type': 146, 'flags': 193}, {'sensor_type': 239, 'flags': 44}, {'sensor_type': 246, 'flags': 197}, {'sensor_type': 214, 'flags': 80}, {'sensor_type': 83, 'flags': 100}, {'sensor_type': 66, 'flags': 72}, {'sensor_type': 133, 'flags': 137}, {'sensor_type': 140, 'flags': 82}, {'sensor_type': 2, 'flags': 2}, {'sensor_type': 96, 'flags': 9}, {'sensor_type': 96, 'flags': 158}, {'sensor_type': 134, 'flags': 97}, {'sensor_type': 43, 'flags': 129}, {'sensor_type': 141, 'flags': 25}, {'sensor_type': 183, 'flags': 200}, {'sensor_type': 214, 'flags': 57}, {'sensor_type': 248, 'flags': 103}, {'sensor_type': 222, 'flags': 65}, {'sensor_type': 195, 'flags': 15}, {'sensor_type': 244, 'flags': 21}, {'sensor_type': 180, 'flags': 46}, {'sensor_type': 140, 'flags': 130}, {'sensor_type': 36, 'flags': 17}, {'sensor_type': 194, 'flags': 209}, {'sensor_type': 65, 'flags': 254}, {'sensor_type': 115, 'flags': 103}, {'sensor_type': 152, 'flags': 129}, {'sensor_type': 234, 'flags': 235}, {'sensor_type': 194, 'flags': 234}, {'sensor_type': 170, 'flags': 201}, {'sensor_type': 210, 'flags': 154}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMetaDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMetaDepA.py new file mode 100644 index 0000000000..19da14c3dd --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_solution_meta_MsgSolnMetaDepA.py @@ -0,0 +1,57 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/soln_meta/test_MsgSolnMetaDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_solution_meta_msg_soln_meta_dep_a_1(): + buf = base64.standard_b64decode("VQ//VPH+t96deQWk7h++c107ZyRToZwu/UNXyCf69fLkSBLeC1jP2ucN4uAWxBXyDFlH27ZVkcySKMwzFZnjLA8c/yfN2PC+XdtnKim2TN4RF30fEuUcL9YZZFRqSDAK3ujrSW2jM5iF61dGAmxbZcg3GJzpSSdCYYz84+bth/H1zUYA27xriLI6AR0s1eGTvmDAbOQPyxID3rREZeXfy/OkXKXcn655cKfwKDsD5jSVlNqO1G2wR7OsTQHBRpOVF5CU78O6Vh4ij5zPPzd1/97e25Hgv9JtVpkVIOIKPD9q7F1gHqNq7pOFhGuY1t25yhX8M4I7psp/qjrB130WOocvWI5N0w==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xd34d + + assert msg.length == 254 + + assert msg.msg_type == 0xff0f + + assert msg.payload == "t96deQWk7h++c107ZyRToZwu/UNXyCf69fLkSBLeC1jP2ucN4uAWxBXyDFlH27ZVkcySKMwzFZnjLA8c/yfN2PC+XdtnKim2TN4RF30fEuUcL9YZZFRqSDAK3ujrSW2jM5iF61dGAmxbZcg3GJzpSSdCYYz84+bth/H1zUYA27xriLI6AR0s1eGTvmDAbOQPyxID3rREZeXfy/OkXKXcn655cKfwKDsD5jSVlNqO1G2wR7OsTQHBRpOVF5CU78O6Vh4ij5zPPzd1/97e25Hgv9JtVpkVIOIKPD9q7F1gHqNq7pOFhGuY1t25yhX8M4I7psp/qjrB130WOocvWI4=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf154 + + assert dictify(msg.age_corrections) == 48671 + + assert dictify(msg.alignment_status) == 115 + + assert dictify(msg.hdop) == 31133 + + assert dictify(msg.last_used_gnss_pos_tow) == 610745181 + + assert dictify(msg.last_used_gnss_vel_tow) == 782016851 + + assert dictify(msg.n_sats) == 238 + + assert dictify(msg.pdop) == 57015 + + assert dictify(msg.sol_in) == [{'flags': 67, 'sensor_type': 253}, {'flags': 200, 'sensor_type': 87}, {'flags': 250, 'sensor_type': 39}, {'flags': 242, 'sensor_type': 245}, {'flags': 72, 'sensor_type': 228}, {'flags': 222, 'sensor_type': 18}, {'flags': 88, 'sensor_type': 11}, {'flags': 218, 'sensor_type': 207}, {'flags': 13, 'sensor_type': 231}, {'flags': 224, 'sensor_type': 226}, {'flags': 196, 'sensor_type': 22}, {'flags': 242, 'sensor_type': 21}, {'flags': 89, 'sensor_type': 12}, {'flags': 219, 'sensor_type': 71}, {'flags': 85, 'sensor_type': 182}, {'flags': 204, 'sensor_type': 145}, {'flags': 40, 'sensor_type': 146}, {'flags': 51, 'sensor_type': 204}, {'flags': 153, 'sensor_type': 21}, {'flags': 44, 'sensor_type': 227}, {'flags': 28, 'sensor_type': 15}, {'flags': 39, 'sensor_type': 255}, {'flags': 216, 'sensor_type': 205}, {'flags': 190, 'sensor_type': 240}, {'flags': 219, 'sensor_type': 93}, {'flags': 42, 'sensor_type': 103}, {'flags': 182, 'sensor_type': 41}, {'flags': 222, 'sensor_type': 76}, {'flags': 23, 'sensor_type': 17}, {'flags': 31, 'sensor_type': 125}, {'flags': 229, 'sensor_type': 18}, {'flags': 47, 'sensor_type': 28}, {'flags': 25, 'sensor_type': 214}, {'flags': 84, 'sensor_type': 100}, {'flags': 72, 'sensor_type': 106}, {'flags': 10, 'sensor_type': 48}, {'flags': 232, 'sensor_type': 222}, {'flags': 73, 'sensor_type': 235}, {'flags': 163, 'sensor_type': 109}, {'flags': 152, 'sensor_type': 51}, {'flags': 235, 'sensor_type': 133}, {'flags': 70, 'sensor_type': 87}, {'flags': 108, 'sensor_type': 2}, {'flags': 101, 'sensor_type': 91}, {'flags': 55, 'sensor_type': 200}, {'flags': 156, 'sensor_type': 24}, {'flags': 73, 'sensor_type': 233}, {'flags': 66, 'sensor_type': 39}, {'flags': 140, 'sensor_type': 97}, {'flags': 227, 'sensor_type': 252}, {'flags': 237, 'sensor_type': 230}, {'flags': 241, 'sensor_type': 135}, {'flags': 205, 'sensor_type': 245}, {'flags': 0, 'sensor_type': 70}, {'flags': 188, 'sensor_type': 219}, {'flags': 136, 'sensor_type': 107}, {'flags': 58, 'sensor_type': 178}, {'flags': 29, 'sensor_type': 1}, {'flags': 213, 'sensor_type': 44}, {'flags': 147, 'sensor_type': 225}, {'flags': 96, 'sensor_type': 190}, {'flags': 108, 'sensor_type': 192}, {'flags': 15, 'sensor_type': 228}, {'flags': 18, 'sensor_type': 203}, {'flags': 222, 'sensor_type': 3}, {'flags': 68, 'sensor_type': 180}, {'flags': 229, 'sensor_type': 101}, {'flags': 203, 'sensor_type': 223}, {'flags': 164, 'sensor_type': 243}, {'flags': 165, 'sensor_type': 92}, {'flags': 159, 'sensor_type': 220}, {'flags': 121, 'sensor_type': 174}, {'flags': 167, 'sensor_type': 112}, {'flags': 40, 'sensor_type': 240}, {'flags': 3, 'sensor_type': 59}, {'flags': 52, 'sensor_type': 230}, {'flags': 148, 'sensor_type': 149}, {'flags': 142, 'sensor_type': 218}, {'flags': 109, 'sensor_type': 212}, {'flags': 71, 'sensor_type': 176}, {'flags': 172, 'sensor_type': 179}, {'flags': 1, 'sensor_type': 77}, {'flags': 70, 'sensor_type': 193}, {'flags': 149, 'sensor_type': 147}, {'flags': 144, 'sensor_type': 23}, {'flags': 239, 'sensor_type': 148}, {'flags': 186, 'sensor_type': 195}, {'flags': 30, 'sensor_type': 86}, {'flags': 143, 'sensor_type': 34}, {'flags': 207, 'sensor_type': 156}, {'flags': 55, 'sensor_type': 63}, {'flags': 255, 'sensor_type': 117}, {'flags': 222, 'sensor_type': 222}, {'flags': 145, 'sensor_type': 219}, {'flags': 191, 'sensor_type': 224}, {'flags': 109, 'sensor_type': 210}, {'flags': 153, 'sensor_type': 86}, {'flags': 32, 'sensor_type': 21}, {'flags': 10, 'sensor_type': 226}, {'flags': 63, 'sensor_type': 60}, {'flags': 236, 'sensor_type': 106}, {'flags': 96, 'sensor_type': 93}, {'flags': 163, 'sensor_type': 30}, {'flags': 238, 'sensor_type': 106}, {'flags': 133, 'sensor_type': 147}, {'flags': 107, 'sensor_type': 132}, {'flags': 214, 'sensor_type': 152}, {'flags': 185, 'sensor_type': 221}, {'flags': 21, 'sensor_type': 202}, {'flags': 51, 'sensor_type': 252}, {'flags': 59, 'sensor_type': 130}, {'flags': 202, 'sensor_type': 166}, {'flags': 170, 'sensor_type': 127}, {'flags': 193, 'sensor_type': 58}, {'flags': 125, 'sensor_type': 215}, {'flags': 58, 'sensor_type': 22}, {'flags': 47, 'sensor_type': 135}, {'flags': 142, 'sensor_type': 88}] + + assert dictify(msg.vdop) == 41989 + + assert dictify(msg) == {'crc': 54093, 'length': 254, 'msg_type': 65295, 'payload': 't96deQWk7h++c107ZyRToZwu/UNXyCf69fLkSBLeC1jP2ucN4uAWxBXyDFlH27ZVkcySKMwzFZnjLA8c/yfN2PC+XdtnKim2TN4RF30fEuUcL9YZZFRqSDAK3ujrSW2jM5iF61dGAmxbZcg3GJzpSSdCYYz84+bth/H1zUYA27xriLI6AR0s1eGTvmDAbOQPyxID3rREZeXfy/OkXKXcn655cKfwKDsD5jSVlNqO1G2wR7OsTQHBRpOVF5CU78O6Vh4ij5zPPzd1/97e25Hgv9JtVpkVIOIKPD9q7F1gHqNq7pOFhGuY1t25yhX8M4I7psp/qjrB130WOocvWI4=', 'preamble': 85, 'sender': 61780, 'pdop': 57015, 'hdop': 31133, 'vdop': 41989, 'n_sats': 238, 'age_corrections': 48671, 'alignment_status': 115, 'last_used_gnss_pos_tow': 610745181, 'last_used_gnss_vel_tow': 782016851, 'sol_in': [{'sensor_type': 253, 'flags': 67}, {'sensor_type': 87, 'flags': 200}, {'sensor_type': 39, 'flags': 250}, {'sensor_type': 245, 'flags': 242}, {'sensor_type': 228, 'flags': 72}, {'sensor_type': 18, 'flags': 222}, {'sensor_type': 11, 'flags': 88}, {'sensor_type': 207, 'flags': 218}, {'sensor_type': 231, 'flags': 13}, {'sensor_type': 226, 'flags': 224}, {'sensor_type': 22, 'flags': 196}, {'sensor_type': 21, 'flags': 242}, {'sensor_type': 12, 'flags': 89}, {'sensor_type': 71, 'flags': 219}, {'sensor_type': 182, 'flags': 85}, {'sensor_type': 145, 'flags': 204}, {'sensor_type': 146, 'flags': 40}, {'sensor_type': 204, 'flags': 51}, {'sensor_type': 21, 'flags': 153}, {'sensor_type': 227, 'flags': 44}, {'sensor_type': 15, 'flags': 28}, {'sensor_type': 255, 'flags': 39}, {'sensor_type': 205, 'flags': 216}, {'sensor_type': 240, 'flags': 190}, {'sensor_type': 93, 'flags': 219}, {'sensor_type': 103, 'flags': 42}, {'sensor_type': 41, 'flags': 182}, {'sensor_type': 76, 'flags': 222}, {'sensor_type': 17, 'flags': 23}, {'sensor_type': 125, 'flags': 31}, {'sensor_type': 18, 'flags': 229}, {'sensor_type': 28, 'flags': 47}, {'sensor_type': 214, 'flags': 25}, {'sensor_type': 100, 'flags': 84}, {'sensor_type': 106, 'flags': 72}, {'sensor_type': 48, 'flags': 10}, {'sensor_type': 222, 'flags': 232}, {'sensor_type': 235, 'flags': 73}, {'sensor_type': 109, 'flags': 163}, {'sensor_type': 51, 'flags': 152}, {'sensor_type': 133, 'flags': 235}, {'sensor_type': 87, 'flags': 70}, {'sensor_type': 2, 'flags': 108}, {'sensor_type': 91, 'flags': 101}, {'sensor_type': 200, 'flags': 55}, {'sensor_type': 24, 'flags': 156}, {'sensor_type': 233, 'flags': 73}, {'sensor_type': 39, 'flags': 66}, {'sensor_type': 97, 'flags': 140}, {'sensor_type': 252, 'flags': 227}, {'sensor_type': 230, 'flags': 237}, {'sensor_type': 135, 'flags': 241}, {'sensor_type': 245, 'flags': 205}, {'sensor_type': 70, 'flags': 0}, {'sensor_type': 219, 'flags': 188}, {'sensor_type': 107, 'flags': 136}, {'sensor_type': 178, 'flags': 58}, {'sensor_type': 1, 'flags': 29}, {'sensor_type': 44, 'flags': 213}, {'sensor_type': 225, 'flags': 147}, {'sensor_type': 190, 'flags': 96}, {'sensor_type': 192, 'flags': 108}, {'sensor_type': 228, 'flags': 15}, {'sensor_type': 203, 'flags': 18}, {'sensor_type': 3, 'flags': 222}, {'sensor_type': 180, 'flags': 68}, {'sensor_type': 101, 'flags': 229}, {'sensor_type': 223, 'flags': 203}, {'sensor_type': 243, 'flags': 164}, {'sensor_type': 92, 'flags': 165}, {'sensor_type': 220, 'flags': 159}, {'sensor_type': 174, 'flags': 121}, {'sensor_type': 112, 'flags': 167}, {'sensor_type': 240, 'flags': 40}, {'sensor_type': 59, 'flags': 3}, {'sensor_type': 230, 'flags': 52}, {'sensor_type': 149, 'flags': 148}, {'sensor_type': 218, 'flags': 142}, {'sensor_type': 212, 'flags': 109}, {'sensor_type': 176, 'flags': 71}, {'sensor_type': 179, 'flags': 172}, {'sensor_type': 77, 'flags': 1}, {'sensor_type': 193, 'flags': 70}, {'sensor_type': 147, 'flags': 149}, {'sensor_type': 23, 'flags': 144}, {'sensor_type': 148, 'flags': 239}, {'sensor_type': 195, 'flags': 186}, {'sensor_type': 86, 'flags': 30}, {'sensor_type': 34, 'flags': 143}, {'sensor_type': 156, 'flags': 207}, {'sensor_type': 63, 'flags': 55}, {'sensor_type': 117, 'flags': 255}, {'sensor_type': 222, 'flags': 222}, {'sensor_type': 219, 'flags': 145}, {'sensor_type': 224, 'flags': 191}, {'sensor_type': 210, 'flags': 109}, {'sensor_type': 86, 'flags': 153}, {'sensor_type': 21, 'flags': 32}, {'sensor_type': 226, 'flags': 10}, {'sensor_type': 60, 'flags': 63}, {'sensor_type': 106, 'flags': 236}, {'sensor_type': 93, 'flags': 96}, {'sensor_type': 30, 'flags': 163}, {'sensor_type': 106, 'flags': 238}, {'sensor_type': 147, 'flags': 133}, {'sensor_type': 132, 'flags': 107}, {'sensor_type': 152, 'flags': 214}, {'sensor_type': 221, 'flags': 185}, {'sensor_type': 202, 'flags': 21}, {'sensor_type': 252, 'flags': 51}, {'sensor_type': 130, 'flags': 59}, {'sensor_type': 166, 'flags': 202}, {'sensor_type': 127, 'flags': 170}, {'sensor_type': 58, 'flags': 193}, {'sensor_type': 215, 'flags': 125}, {'sensor_type': 22, 'flags': 58}, {'sensor_type': 135, 'flags': 47}, {'sensor_type': 88, 'flags': 142}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrCodeBiases.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrCodeBiases.py new file mode 100644 index 0000000000..2dcb6804a8 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrCodeBiases.py @@ -0,0 +1,49 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrCodeBiases.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_code_biases_1(): + buf = base64.standard_b64decode("VeEFJ1f90FoTFwlChfH+hDMEg/B4U5TR1T7k6EdCvNKANoOYgW+L8rGRLAn1z/HKlo0yn9yLJbtivxeAiKfIBtNaF/SK19GLDWUgBxIdRvptScpPkAmSRfE0FmNizAOr5rRLPpFWgh8emyUSN9Inf/JCDe2YqtQP9jtetMOdRWR3EESzr5BxUVIelxVtKeEITaSdAEkeBk5Rj3Twlze5qf4zJ0qv9yJhSmGwMOytDK5lgh6pwb7MxHtrGeFKCQo3A4P2Y4Ui48tEEmHfWcD2MkVbCpdKdm4kqPegTbONsmO/eE3AW+AB4jJXkpTuZLN949douB85Wk8VnPVRPF2qPMinDX2E") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x847d + + assert msg.length == 253 + + assert msg.msg_type == 0x5e1 + + assert msg.payload == "0FoTFwlChfH+hDMEg/B4U5TR1T7k6EdCvNKANoOYgW+L8rGRLAn1z/HKlo0yn9yLJbtivxeAiKfIBtNaF/SK19GLDWUgBxIdRvptScpPkAmSRfE0FmNizAOr5rRLPpFWgh8emyUSN9Inf/JCDe2YqtQP9jtetMOdRWR3EESzr5BxUVIelxVtKeEITaSdAEkeBk5Rj3Twlze5qf4zJ0qv9yJhSmGwMOytDK5lgh6pwb7MxHtrGeFKCQo3A4P2Y4Ui48tEEmHfWcD2MkVbCpdKdm4kqPegTbONsmO/eE3AW+AB4jJXkpTuZLN949douB85Wk8VnPVRPF2qPMinDQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x5727 + + assert dictify(msg.biases) == [{'code': 51, 'value': -31996}, {'code': 240, 'value': 21368}, {'code': 148, 'value': -10799}, {'code': 62, 'value': -5916}, {'code': 71, 'value': -17342}, {'code': 210, 'value': 13952}, {'code': 131, 'value': -32360}, {'code': 111, 'value': -3445}, {'code': 177, 'value': 11409}, {'code': 9, 'value': -12299}, {'code': 241, 'value': -26934}, {'code': 141, 'value': -24782}, {'code': 220, 'value': 9611}, {'code': 187, 'value': -16542}, {'code': 23, 'value': -30592}, {'code': 167, 'value': 1736}, {'code': 211, 'value': 5978}, {'code': 244, 'value': -10358}, {'code': 209, 'value': 3467}, {'code': 101, 'value': 1824}, {'code': 18, 'value': 17949}, {'code': 250, 'value': 18797}, {'code': 202, 'value': -28593}, {'code': 9, 'value': 17810}, {'code': 241, 'value': 5684}, {'code': 99, 'value': -13214}, {'code': 3, 'value': -6485}, {'code': 180, 'value': 15947}, {'code': 145, 'value': -32170}, {'code': 31, 'value': -25826}, {'code': 37, 'value': 14098}, {'code': 210, 'value': 32551}, {'code': 242, 'value': 3394}, {'code': 237, 'value': -21864}, {'code': 212, 'value': -2545}, {'code': 59, 'value': -19362}, {'code': 195, 'value': 17821}, {'code': 100, 'value': 4215}, {'code': 68, 'value': -20557}, {'code': 144, 'value': 20849}, {'code': 82, 'value': -26850}, {'code': 21, 'value': 10605}, {'code': 225, 'value': 19720}, {'code': 164, 'value': 157}, {'code': 73, 'value': 1566}, {'code': 78, 'value': -28847}, {'code': 116, 'value': -26640}, {'code': 55, 'value': -22087}, {'code': 254, 'value': 10035}, {'code': 74, 'value': -2129}, {'code': 34, 'value': 19041}, {'code': 97, 'value': 12464}, {'code': 236, 'value': 3245}, {'code': 174, 'value': -32155}, {'code': 30, 'value': -15959}, {'code': 190, 'value': -15156}, {'code': 123, 'value': 6507}, {'code': 225, 'value': 2378}, {'code': 10, 'value': 823}, {'code': 131, 'value': 25590}, {'code': 133, 'value': -7390}, {'code': 203, 'value': 4676}, {'code': 97, 'value': 23007}, {'code': 192, 'value': 13046}, {'code': 69, 'value': 2651}, {'code': 151, 'value': 30282}, {'code': 110, 'value': -22492}, {'code': 247, 'value': 19872}, {'code': 179, 'value': -19827}, {'code': 99, 'value': 30911}, {'code': 77, 'value': 23488}, {'code': 224, 'value': -7679}, {'code': 50, 'value': -28073}, {'code': 148, 'value': 25838}, {'code': 179, 'value': -7299}, {'code': 215, 'value': -18328}, {'code': 31, 'value': 23097}, {'code': 79, 'value': -25579}, {'code': 245, 'value': 15441}, {'code': 93, 'value': 15530}, {'code': 200, 'value': 3495}] + + assert dictify(msg.iod_ssr) == 132 + + assert dictify(msg.sid) == {'code': 241, 'sat': 133} + + assert dictify(msg.time) == {'tow': 387144400, 'wn': 16905} + + assert dictify(msg.update_interval) == 254 + + assert dictify(msg) == {'crc': 33917, 'length': 253, 'msg_type': 1505, 'payload': '0FoTFwlChfH+hDMEg/B4U5TR1T7k6EdCvNKANoOYgW+L8rGRLAn1z/HKlo0yn9yLJbtivxeAiKfIBtNaF/SK19GLDWUgBxIdRvptScpPkAmSRfE0FmNizAOr5rRLPpFWgh8emyUSN9Inf/JCDe2YqtQP9jtetMOdRWR3EESzr5BxUVIelxVtKeEITaSdAEkeBk5Rj3Twlze5qf4zJ0qv9yJhSmGwMOytDK5lgh6pwb7MxHtrGeFKCQo3A4P2Y4Ui48tEEmHfWcD2MkVbCpdKdm4kqPegTbONsmO/eE3AW+AB4jJXkpTuZLN949douB85Wk8VnPVRPF2qPMinDQ==', 'preamble': 85, 'sender': 22311, 'time': {'tow': 387144400, 'wn': 16905}, 'sid': {'sat': 133, 'code': 241}, 'update_interval': 254, 'iod_ssr': 132, 'biases': [{'code': 51, 'value': -31996}, {'code': 240, 'value': 21368}, {'code': 148, 'value': -10799}, {'code': 62, 'value': -5916}, {'code': 71, 'value': -17342}, {'code': 210, 'value': 13952}, {'code': 131, 'value': -32360}, {'code': 111, 'value': -3445}, {'code': 177, 'value': 11409}, {'code': 9, 'value': -12299}, {'code': 241, 'value': -26934}, {'code': 141, 'value': -24782}, {'code': 220, 'value': 9611}, {'code': 187, 'value': -16542}, {'code': 23, 'value': -30592}, {'code': 167, 'value': 1736}, {'code': 211, 'value': 5978}, {'code': 244, 'value': -10358}, {'code': 209, 'value': 3467}, {'code': 101, 'value': 1824}, {'code': 18, 'value': 17949}, {'code': 250, 'value': 18797}, {'code': 202, 'value': -28593}, {'code': 9, 'value': 17810}, {'code': 241, 'value': 5684}, {'code': 99, 'value': -13214}, {'code': 3, 'value': -6485}, {'code': 180, 'value': 15947}, {'code': 145, 'value': -32170}, {'code': 31, 'value': -25826}, {'code': 37, 'value': 14098}, {'code': 210, 'value': 32551}, {'code': 242, 'value': 3394}, {'code': 237, 'value': -21864}, {'code': 212, 'value': -2545}, {'code': 59, 'value': -19362}, {'code': 195, 'value': 17821}, {'code': 100, 'value': 4215}, {'code': 68, 'value': -20557}, {'code': 144, 'value': 20849}, {'code': 82, 'value': -26850}, {'code': 21, 'value': 10605}, {'code': 225, 'value': 19720}, {'code': 164, 'value': 157}, {'code': 73, 'value': 1566}, {'code': 78, 'value': -28847}, {'code': 116, 'value': -26640}, {'code': 55, 'value': -22087}, {'code': 254, 'value': 10035}, {'code': 74, 'value': -2129}, {'code': 34, 'value': 19041}, {'code': 97, 'value': 12464}, {'code': 236, 'value': 3245}, {'code': 174, 'value': -32155}, {'code': 30, 'value': -15959}, {'code': 190, 'value': -15156}, {'code': 123, 'value': 6507}, {'code': 225, 'value': 2378}, {'code': 10, 'value': 823}, {'code': 131, 'value': 25590}, {'code': 133, 'value': -7390}, {'code': 203, 'value': 4676}, {'code': 97, 'value': 23007}, {'code': 192, 'value': 13046}, {'code': 69, 'value': 2651}, {'code': 151, 'value': 30282}, {'code': 110, 'value': -22492}, {'code': 247, 'value': 19872}, {'code': 179, 'value': -19827}, {'code': 99, 'value': 30911}, {'code': 77, 'value': 23488}, {'code': 224, 'value': -7679}, {'code': 50, 'value': -28073}, {'code': 148, 'value': 25838}, {'code': 179, 'value': -7299}, {'code': 215, 'value': -18328}, {'code': 31, 'value': 23097}, {'code': 79, 'value': -25579}, {'code': 245, 'value': 15441}, {'code': 93, 'value': 15530}, {'code': 200, 'value': 3495}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.py new file mode 100644 index 0000000000..c54129ad07 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGridDefinitionDepA.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGridDefinitionDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_grid_definition_dep_a_1(): + buf = base64.standard_b64decode("VfUFtff/C1Sr5YSPLsw0XGgZzLYWYst70yYN/YGtq+v9GssDeH4qLCdXRZoNHLMgLyTDJ8aG64Y5ePOXIxHJ0311pI5l75Ce71o4R3hD3XIKvgTmpKtOuVousVLke97jkcPbGzjj9teQnh/W8f7IVo5ZDHkdfAkTmSwjfg7ZQXQai3pyWnxRALr2LmKz88bZJB7KDIc9KpbdZlOzK/xRPn7Mw+4SgME1XmM/tgK63E264NwN1LZYD5cFXfukEuSo4sMsqpEkOmBrkAvkDKPu95+9AXNBynkvwQtgXUhRz3kTl4jpM4XDTSyTznj8TdREPM5qz/OeXgYDzVxUAtwyPSaNdWxlTIs=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x8b4c + + assert msg.length == 255 + + assert msg.msg_type == 0x5f5 + + assert msg.payload == "C1Sr5YSPLsw0XGgZzLYWYst70yYN/YGtq+v9GssDeH4qLCdXRZoNHLMgLyTDJ8aG64Y5ePOXIxHJ0311pI5l75Ce71o4R3hD3XIKvgTmpKtOuVousVLke97jkcPbGzjj9teQnh/W8f7IVo5ZDHkdfAkTmSwjfg7ZQXQai3pyWnxRALr2LmKz88bZJB7KDIc9KpbdZlOzK/xRPn7Mw+4SgME1XmM/tgK63E264NwN1LZYD5cFXfukEuSo4sMsqpEkOmBrkAvkDKPu95+9AXNBynkvwQtgXUhRz3kTl4jpM4XDTSyTznj8TdREPM5qz/OeXgYDzVxUAtwyPSaNdWxl" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf7b5 + + assert dictify(msg.header) == {'area_width': 43860, 'lat_nw_corner_enc': 34021, 'lon_nw_corner_enc': 11919, 'num_msgs': 204, 'region_size_inverse': 11, 'seq_num': 52} + + assert dictify(msg.rle_list) == [92, 104, 25, 204, 182, 22, 98, 203, 123, 211, 38, 13, 253, 129, 173, 171, 235, 253, 26, 203, 3, 120, 126, 42, 44, 39, 87, 69, 154, 13, 28, 179, 32, 47, 36, 195, 39, 198, 134, 235, 134, 57, 120, 243, 151, 35, 17, 201, 211, 125, 117, 164, 142, 101, 239, 144, 158, 239, 90, 56, 71, 120, 67, 221, 114, 10, 190, 4, 230, 164, 171, 78, 185, 90, 46, 177, 82, 228, 123, 222, 227, 145, 195, 219, 27, 56, 227, 246, 215, 144, 158, 31, 214, 241, 254, 200, 86, 142, 89, 12, 121, 29, 124, 9, 19, 153, 44, 35, 126, 14, 217, 65, 116, 26, 139, 122, 114, 90, 124, 81, 0, 186, 246, 46, 98, 179, 243, 198, 217, 36, 30, 202, 12, 135, 61, 42, 150, 221, 102, 83, 179, 43, 252, 81, 62, 126, 204, 195, 238, 18, 128, 193, 53, 94, 99, 63, 182, 2, 186, 220, 77, 186, 224, 220, 13, 212, 182, 88, 15, 151, 5, 93, 251, 164, 18, 228, 168, 226, 195, 44, 170, 145, 36, 58, 96, 107, 144, 11, 228, 12, 163, 238, 247, 159, 189, 1, 115, 65, 202, 121, 47, 193, 11, 96, 93, 72, 81, 207, 121, 19, 151, 136, 233, 51, 133, 195, 77, 44, 147, 206, 120, 252, 77, 212, 68, 60, 206, 106, 207, 243, 158, 94, 6, 3, 205, 92, 84, 2, 220, 50, 61, 38, 141, 117, 108, 101] + + assert dictify(msg) == {'crc': 35660, 'length': 255, 'msg_type': 1525, 'payload': 'C1Sr5YSPLsw0XGgZzLYWYst70yYN/YGtq+v9GssDeH4qLCdXRZoNHLMgLyTDJ8aG64Y5ePOXIxHJ0311pI5l75Ce71o4R3hD3XIKvgTmpKtOuVousVLke97jkcPbGzjj9teQnh/W8f7IVo5ZDHkdfAkTmSwjfg7ZQXQai3pyWnxRALr2LmKz88bZJB7KDIc9KpbdZlOzK/xRPn7Mw+4SgME1XmM/tgK63E264NwN1LZYD5cFXfukEuSo4sMsqpEkOmBrkAvkDKPu95+9AXNBynkvwQtgXUhRz3kTl4jpM4XDTSyTznj8TdREPM5qz/OeXgYDzVxUAtwyPSaNdWxl', 'preamble': 85, 'sender': 63413, 'header': {'region_size_inverse': 11, 'area_width': 43860, 'lat_nw_corner_enc': 34021, 'lon_nw_corner_enc': 11919, 'num_msgs': 204, 'seq_num': 52}, 'rle_list': [92, 104, 25, 204, 182, 22, 98, 203, 123, 211, 38, 13, 253, 129, 173, 171, 235, 253, 26, 203, 3, 120, 126, 42, 44, 39, 87, 69, 154, 13, 28, 179, 32, 47, 36, 195, 39, 198, 134, 235, 134, 57, 120, 243, 151, 35, 17, 201, 211, 125, 117, 164, 142, 101, 239, 144, 158, 239, 90, 56, 71, 120, 67, 221, 114, 10, 190, 4, 230, 164, 171, 78, 185, 90, 46, 177, 82, 228, 123, 222, 227, 145, 195, 219, 27, 56, 227, 246, 215, 144, 158, 31, 214, 241, 254, 200, 86, 142, 89, 12, 121, 29, 124, 9, 19, 153, 44, 35, 126, 14, 217, 65, 116, 26, 139, 122, 114, 90, 124, 81, 0, 186, 246, 46, 98, 179, 243, 198, 217, 36, 30, 202, 12, 135, 61, 42, 150, 221, 102, 83, 179, 43, 252, 81, 62, 126, 204, 195, 238, 18, 128, 193, 53, 94, 99, 63, 182, 2, 186, 220, 77, 186, 224, 220, 13, 212, 182, 88, 15, 151, 5, 93, 251, 164, 18, 228, 168, 226, 195, 44, 170, 145, 36, 58, 96, 107, 144, 11, 228, 12, 163, 238, 247, 159, 189, 1, 115, 65, 202, 121, 47, 193, 11, 96, 93, 72, 81, 207, 121, 19, 151, 136, 233, 51, 133, 195, 77, 44, 147, 206, 120, 252, 77, 212, 68, 60, 206, 106, 207, 243, 158, 94, 6, 3, 205, 92, 84, 2, 220, 50, 61, 38, 141, 117, 108, 101]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrection.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrection.py new file mode 100644 index 0000000000..204b4f6e4d --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrection.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGriddedCorrection.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_gridded_correction_1(): + buf = base64.standard_b64decode("VfwFxPn9FQ6XMniFHZeu5Ze9zMRpqniVqSX0TkiMZQKtWEa0NphzTsmhF4eYYj1Lsnjlkjc6qermRay/f5JZlltv4SkRdzSmpng53QwDnEacI38IfzqAN3NQnXqZfBuAYmfMS+6A4pT4PdjQlafgKJC6neNI8GQjDNQHO7BRVhsYm0MrhC3LLAZwt+ewT8L992db4nSUFz7j8B3bzRLyz0hHTyUqsMnKW2lzkjtuLG2At7lDH6VcT720XgeieZzSLwcHza4p8YHSK2W60MPi97vboHjAZqYq9q1eZpzeHiP3QL2JzNwgR97eyfYDGS3773NY2grReEGvg8IprokRRBz9KrIj") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x23b2 + + assert msg.length == 253 + + assert msg.msg_type == 0x5fc + + assert msg.payload == "FQ6XMniFHZeu5Ze9zMRpqniVqSX0TkiMZQKtWEa0NphzTsmhF4eYYj1Lsnjlkjc6qermRay/f5JZlltv4SkRdzSmpng53QwDnEacI38IfzqAN3NQnXqZfBuAYmfMS+6A4pT4PdjQlafgKJC6neNI8GQjDNQHO7BRVhsYm0MrhC3LLAZwt+ewT8L992db4nSUFz7j8B3bzRLyz0hHTyUqsMnKW2lzkjtuLG2At7lDH6VcT720XgeieZzSLwcHza4p8YHSK2W60MPi97vboHjAZqYq9q1eZpzeHiP3QL2JzNwgR97eyfYDGS3773NY2grReEGvg8IprokRRBz9Kg==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf9c4 + + assert dictify(msg.header) == {'iod_atmo': 170, 'num_msgs': 48535, 'seq_num': 50380, 'tile_id': 12951, 'tile_set_id': 3605, 'time': {'tow': 2535294328, 'wn': 58798}, 'tropo_quality_indicator': 120, 'update_interval': 105} + + assert dictify(msg.index) == 43413 + + assert dictify(msg.stec_residuals) == [{'residual': -21246, 'stddev': 88, 'sv_id': {'constellation': 101, 'sat_id': 140}}, {'residual': -26570, 'stddev': 115, 'sv_id': {'constellation': 180, 'sat_id': 70}}, {'residual': 6049, 'stddev': 135, 'sv_id': {'constellation': 201, 'sat_id': 78}}, {'residual': 19261, 'stddev': 178, 'sv_id': {'constellation': 98, 'sat_id': 152}}, {'residual': 14226, 'stddev': 58, 'sv_id': {'constellation': 229, 'sat_id': 120}}, {'residual': 17894, 'stddev': 172, 'sv_id': {'constellation': 234, 'sat_id': 169}}, {'residual': 22930, 'stddev': 150, 'sv_id': {'constellation': 127, 'sat_id': 191}}, {'residual': 10721, 'stddev': 17, 'sv_id': {'constellation': 111, 'sat_id': 91}}, {'residual': -22874, 'stddev': 120, 'sv_id': {'constellation': 52, 'sat_id': 119}}, {'residual': 780, 'stddev': 156, 'sv_id': {'constellation': 221, 'sat_id': 57}}, {'residual': 32547, 'stddev': 8, 'sv_id': {'constellation': 156, 'sat_id': 70}}, {'residual': 14208, 'stddev': 115, 'sv_id': {'constellation': 58, 'sat_id': 127}}, {'residual': -26246, 'stddev': 124, 'sv_id': {'constellation': 157, 'sat_id': 80}}, {'residual': 26466, 'stddev': 204, 'sv_id': {'constellation': 128, 'sat_id': 27}}, {'residual': -7552, 'stddev': 148, 'sv_id': {'constellation': 238, 'sat_id': 75}}, {'residual': -12072, 'stddev': 149, 'sv_id': {'constellation': 61, 'sat_id': 248}}, {'residual': -28632, 'stddev': 186, 'sv_id': {'constellation': 224, 'sat_id': 167}}, {'residual': -4024, 'stddev': 100, 'sv_id': {'constellation': 227, 'sat_id': 157}}, {'residual': 2004, 'stddev': 59, 'sv_id': {'constellation': 12, 'sat_id': 35}}, {'residual': 6998, 'stddev': 24, 'sv_id': {'constellation': 81, 'sat_id': 176}}, {'residual': -31701, 'stddev': 45, 'sv_id': {'constellation': 67, 'sat_id': 155}}, {'residual': 28678, 'stddev': 183, 'sv_id': {'constellation': 44, 'sat_id': 203}}, {'residual': -15793, 'stddev': 253, 'sv_id': {'constellation': 176, 'sat_id': 231}}, {'residual': -7589, 'stddev': 116, 'sv_id': {'constellation': 103, 'sat_id': 247}}, {'residual': -7362, 'stddev': 240, 'sv_id': {'constellation': 23, 'sat_id': 148}}, {'residual': 4813, 'stddev': 242, 'sv_id': {'constellation': 219, 'sat_id': 29}}, {'residual': 20295, 'stddev': 37, 'sv_id': {'constellation': 72, 'sat_id': 207}}, {'residual': -13623, 'stddev': 91, 'sv_id': {'constellation': 176, 'sat_id': 42}}, {'residual': 15250, 'stddev': 110, 'sv_id': {'constellation': 115, 'sat_id': 105}}, {'residual': -18560, 'stddev': 185, 'sv_id': {'constellation': 109, 'sat_id': 44}}, {'residual': 23717, 'stddev': 79, 'sv_id': {'constellation': 31, 'sat_id': 67}}, {'residual': 1886, 'stddev': 162, 'sv_id': {'constellation': 180, 'sat_id': 189}}, {'residual': 12242, 'stddev': 7, 'sv_id': {'constellation': 156, 'sat_id': 121}}, {'residual': 10670, 'stddev': 241, 'sv_id': {'constellation': 205, 'sat_id': 7}}, {'residual': 25899, 'stddev': 186, 'sv_id': {'constellation': 210, 'sat_id': 129}}, {'residual': -2078, 'stddev': 187, 'sv_id': {'constellation': 195, 'sat_id': 208}}, {'residual': -16264, 'stddev': 102, 'sv_id': {'constellation': 160, 'sat_id': 219}}, {'residual': -21002, 'stddev': 94, 'sv_id': {'constellation': 42, 'sat_id': 166}}, {'residual': 7902, 'stddev': 35, 'sv_id': {'constellation': 156, 'sat_id': 102}}, {'residual': -30275, 'stddev': 204, 'sv_id': {'constellation': 64, 'sat_id': 247}}, {'residual': -8633, 'stddev': 222, 'sv_id': {'constellation': 32, 'sat_id': 220}}, {'residual': 6403, 'stddev': 45, 'sv_id': {'constellation': 246, 'sat_id': 201}}, {'residual': 22643, 'stddev': 218, 'sv_id': {'constellation': 239, 'sat_id': 251}}, {'residual': 16760, 'stddev': 175, 'sv_id': {'constellation': 209, 'sat_id': 10}}, {'residual': -20951, 'stddev': 137, 'sv_id': {'constellation': 194, 'sat_id': 131}}, {'residual': -740, 'stddev': 42, 'sv_id': {'constellation': 68, 'sat_id': 17}}] + + assert dictify(msg.tropo_delay_correction) == {'hydro': -3035, 'stddev': 72, 'wet': 78} + + assert dictify(msg) == {'crc': 9138, 'length': 253, 'msg_type': 1532, 'payload': 'FQ6XMniFHZeu5Ze9zMRpqniVqSX0TkiMZQKtWEa0NphzTsmhF4eYYj1Lsnjlkjc6qermRay/f5JZlltv4SkRdzSmpng53QwDnEacI38IfzqAN3NQnXqZfBuAYmfMS+6A4pT4PdjQlafgKJC6neNI8GQjDNQHO7BRVhsYm0MrhC3LLAZwt+ewT8L992db4nSUFz7j8B3bzRLyz0hHTyUqsMnKW2lzkjtuLG2At7lDH6VcT720XgeieZzSLwcHza4p8YHSK2W60MPi97vboHjAZqYq9q1eZpzeHiP3QL2JzNwgR97eyfYDGS3773NY2grReEGvg8IprokRRBz9Kg==', 'preamble': 85, 'sender': 63940, 'header': {'tile_set_id': 3605, 'tile_id': 12951, 'time': {'tow': 2535294328, 'wn': 58798}, 'num_msgs': 48535, 'seq_num': 50380, 'update_interval': 105, 'iod_atmo': 170, 'tropo_quality_indicator': 120}, 'index': 43413, 'tropo_delay_correction': {'hydro': -3035, 'wet': 78, 'stddev': 72}, 'stec_residuals': [{'sv_id': {'sat_id': 140, 'constellation': 101}, 'residual': -21246, 'stddev': 88}, {'sv_id': {'sat_id': 70, 'constellation': 180}, 'residual': -26570, 'stddev': 115}, {'sv_id': {'sat_id': 78, 'constellation': 201}, 'residual': 6049, 'stddev': 135}, {'sv_id': {'sat_id': 152, 'constellation': 98}, 'residual': 19261, 'stddev': 178}, {'sv_id': {'sat_id': 120, 'constellation': 229}, 'residual': 14226, 'stddev': 58}, {'sv_id': {'sat_id': 169, 'constellation': 234}, 'residual': 17894, 'stddev': 172}, {'sv_id': {'sat_id': 191, 'constellation': 127}, 'residual': 22930, 'stddev': 150}, {'sv_id': {'sat_id': 91, 'constellation': 111}, 'residual': 10721, 'stddev': 17}, {'sv_id': {'sat_id': 119, 'constellation': 52}, 'residual': -22874, 'stddev': 120}, {'sv_id': {'sat_id': 57, 'constellation': 221}, 'residual': 780, 'stddev': 156}, {'sv_id': {'sat_id': 70, 'constellation': 156}, 'residual': 32547, 'stddev': 8}, {'sv_id': {'sat_id': 127, 'constellation': 58}, 'residual': 14208, 'stddev': 115}, {'sv_id': {'sat_id': 80, 'constellation': 157}, 'residual': -26246, 'stddev': 124}, {'sv_id': {'sat_id': 27, 'constellation': 128}, 'residual': 26466, 'stddev': 204}, {'sv_id': {'sat_id': 75, 'constellation': 238}, 'residual': -7552, 'stddev': 148}, {'sv_id': {'sat_id': 248, 'constellation': 61}, 'residual': -12072, 'stddev': 149}, {'sv_id': {'sat_id': 167, 'constellation': 224}, 'residual': -28632, 'stddev': 186}, {'sv_id': {'sat_id': 157, 'constellation': 227}, 'residual': -4024, 'stddev': 100}, {'sv_id': {'sat_id': 35, 'constellation': 12}, 'residual': 2004, 'stddev': 59}, {'sv_id': {'sat_id': 176, 'constellation': 81}, 'residual': 6998, 'stddev': 24}, {'sv_id': {'sat_id': 155, 'constellation': 67}, 'residual': -31701, 'stddev': 45}, {'sv_id': {'sat_id': 203, 'constellation': 44}, 'residual': 28678, 'stddev': 183}, {'sv_id': {'sat_id': 231, 'constellation': 176}, 'residual': -15793, 'stddev': 253}, {'sv_id': {'sat_id': 247, 'constellation': 103}, 'residual': -7589, 'stddev': 116}, {'sv_id': {'sat_id': 148, 'constellation': 23}, 'residual': -7362, 'stddev': 240}, {'sv_id': {'sat_id': 29, 'constellation': 219}, 'residual': 4813, 'stddev': 242}, {'sv_id': {'sat_id': 207, 'constellation': 72}, 'residual': 20295, 'stddev': 37}, {'sv_id': {'sat_id': 42, 'constellation': 176}, 'residual': -13623, 'stddev': 91}, {'sv_id': {'sat_id': 105, 'constellation': 115}, 'residual': 15250, 'stddev': 110}, {'sv_id': {'sat_id': 44, 'constellation': 109}, 'residual': -18560, 'stddev': 185}, {'sv_id': {'sat_id': 67, 'constellation': 31}, 'residual': 23717, 'stddev': 79}, {'sv_id': {'sat_id': 189, 'constellation': 180}, 'residual': 1886, 'stddev': 162}, {'sv_id': {'sat_id': 121, 'constellation': 156}, 'residual': 12242, 'stddev': 7}, {'sv_id': {'sat_id': 7, 'constellation': 205}, 'residual': 10670, 'stddev': 241}, {'sv_id': {'sat_id': 129, 'constellation': 210}, 'residual': 25899, 'stddev': 186}, {'sv_id': {'sat_id': 208, 'constellation': 195}, 'residual': -2078, 'stddev': 187}, {'sv_id': {'sat_id': 219, 'constellation': 160}, 'residual': -16264, 'stddev': 102}, {'sv_id': {'sat_id': 166, 'constellation': 42}, 'residual': -21002, 'stddev': 94}, {'sv_id': {'sat_id': 102, 'constellation': 156}, 'residual': 7902, 'stddev': 35}, {'sv_id': {'sat_id': 247, 'constellation': 64}, 'residual': -30275, 'stddev': 204}, {'sv_id': {'sat_id': 220, 'constellation': 32}, 'residual': -8633, 'stddev': 222}, {'sv_id': {'sat_id': 201, 'constellation': 246}, 'residual': 6403, 'stddev': 45}, {'sv_id': {'sat_id': 251, 'constellation': 239}, 'residual': 22643, 'stddev': 218}, {'sv_id': {'sat_id': 10, 'constellation': 209}, 'residual': 16760, 'stddev': 175}, {'sv_id': {'sat_id': 131, 'constellation': 194}, 'residual': -20951, 'stddev': 137}, {'sv_id': {'sat_id': 17, 'constellation': 68}, 'residual': -740, 'stddev': 42}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.py new file mode 100644 index 0000000000..f6b10c73fa --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionDepA.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGriddedCorrectionDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_gridded_correction_dep_a_1(): + buf = base64.standard_b64decode("VfoFbGr+pNksNWJdP5No/IX1HF9kkykhXFcZjpdKl19eB5LtLadWKnTgqercF7ASDbJPoKBuDzXOl54WdbgwqlIoNXpFtG4mQWj0E+7jWKmkkj8lt1VH66hy02ndnDwS5gKOrBAnIX5qY7zqKaLFiuNQDDZD7gVdAc+BDS5zMTq5f5zIYNnKD/U3xlHahEZJUpMa/w6GYIo31lOcqqNPreRzM/Fr9XCo0goFdQE5bPjUkXfipQWNymoAPCQ988vY1wyJEBz3c5i1d9Dky+wip8QgbQERZcgZXn2oiZ0EpB0fMIRI5X66REyFFQC0i6SUd5XWeLHJUFBpCoh2TS7p6eMLnmen2A==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xd8a7 + + assert msg.length == 254 + + assert msg.msg_type == 0x5fa + + assert msg.payload == "pNksNWJdP5No/IX1HF9kkykhXFcZjpdKl19eB5LtLadWKnTgqercF7ASDbJPoKBuDzXOl54WdbgwqlIoNXpFtG4mQWj0E+7jWKmkkj8lt1VH66hy02ndnDwS5gKOrBAnIX5qY7zqKaLFiuNQDDZD7gVdAc+BDS5zMTq5f5zIYNnKD/U3xlHahEZJUpMa/w6GYIo31lOcqqNPreRzM/Fr9XCo0goFdQE5bPjUkXfipQWNymoAPCQ988vY1wyJEBz3c5i1d9Dky+wip8QgbQERZcgZXn2oiZ0EpB0fMIRI5X66REyFFQC0i6SUd5XWeLHJUFBpCoh2TS7p6eMLnmc=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x6a6c + + assert dictify(msg.header) == {'iod_atmo': 245, 'num_msgs': 37695, 'seq_num': 64616, 'time': {'tow': 892131748, 'wn': 23906}, 'tropo_quality_indicator': 28, 'update_interval': 133} + + assert dictify(msg.index) == 25695 + + assert dictify(msg.stec_residuals) == [{'residual': -26738, 'stddev': 74, 'sv_id': {'constellation': 25, 'sat_id': 87}}, {'residual': 1886, 'stddev': 146, 'sv_id': {'constellation': 95, 'sat_id': 151}}, {'residual': 22183, 'stddev': 42, 'sv_id': {'constellation': 45, 'sat_id': 237}}, {'residual': -5463, 'stddev': 220, 'sv_id': {'constellation': 224, 'sat_id': 116}}, {'residual': 3346, 'stddev': 178, 'sv_id': {'constellation': 176, 'sat_id': 23}}, {'residual': 28320, 'stddev': 15, 'sv_id': {'constellation': 160, 'sat_id': 79}}, {'residual': -24937, 'stddev': 22, 'sv_id': {'constellation': 206, 'sat_id': 53}}, {'residual': -21968, 'stddev': 82, 'sv_id': {'constellation': 184, 'sat_id': 117}}, {'residual': 17786, 'stddev': 180, 'sv_id': {'constellation': 53, 'sat_id': 40}}, {'residual': 26689, 'stddev': 244, 'sv_id': {'constellation': 38, 'sat_id': 110}}, {'residual': 22755, 'stddev': 169, 'sv_id': {'constellation': 238, 'sat_id': 19}}, {'residual': 9535, 'stddev': 183, 'sv_id': {'constellation': 146, 'sat_id': 164}}, {'residual': -22293, 'stddev': 114, 'sv_id': {'constellation': 71, 'sat_id': 85}}, {'residual': -25379, 'stddev': 60, 'sv_id': {'constellation': 105, 'sat_id': 211}}, {'residual': -29182, 'stddev': 172, 'sv_id': {'constellation': 230, 'sat_id': 18}}, {'residual': 32289, 'stddev': 106, 'sv_id': {'constellation': 39, 'sat_id': 16}}, {'residual': 10730, 'stddev': 162, 'sv_id': {'constellation': 188, 'sat_id': 99}}, {'residual': 20707, 'stddev': 12, 'sv_id': {'constellation': 138, 'sat_id': 197}}, {'residual': 1518, 'stddev': 93, 'sv_id': {'constellation': 67, 'sat_id': 54}}, {'residual': 3457, 'stddev': 46, 'sv_id': {'constellation': 207, 'sat_id': 1}}, {'residual': -18118, 'stddev': 127, 'sv_id': {'constellation': 49, 'sat_id': 115}}, {'residual': -9888, 'stddev': 202, 'sv_id': {'constellation': 200, 'sat_id': 156}}, {'residual': -14793, 'stddev': 81, 'sv_id': {'constellation': 245, 'sat_id': 15}}, {'residual': 18758, 'stddev': 82, 'sv_id': {'constellation': 132, 'sat_id': 218}}, {'residual': 3839, 'stddev': 134, 'sv_id': {'constellation': 26, 'sat_id': 147}}, {'residual': -10697, 'stddev': 83, 'sv_id': {'constellation': 138, 'sat_id': 96}}, {'residual': 20387, 'stddev': 173, 'sv_id': {'constellation': 170, 'sat_id': 156}}, {'residual': -3789, 'stddev': 107, 'sv_id': {'constellation': 115, 'sat_id': 228}}, {'residual': -11608, 'stddev': 10, 'sv_id': {'constellation': 112, 'sat_id': 245}}, {'residual': 14593, 'stddev': 108, 'sv_id': {'constellation': 117, 'sat_id': 5}}, {'residual': 30609, 'stddev': 226, 'sv_id': {'constellation': 212, 'sat_id': 248}}, {'residual': -13683, 'stddev': 106, 'sv_id': {'constellation': 5, 'sat_id': 165}}, {'residual': 15652, 'stddev': 243, 'sv_id': {'constellation': 60, 'sat_id': 0}}, {'residual': 3287, 'stddev': 137, 'sv_id': {'constellation': 216, 'sat_id': 203}}, {'residual': 29687, 'stddev': 152, 'sv_id': {'constellation': 28, 'sat_id': 16}}, {'residual': -6960, 'stddev': 203, 'sv_id': {'constellation': 119, 'sat_id': 181}}, {'residual': -15193, 'stddev': 32, 'sv_id': {'constellation': 34, 'sat_id': 236}}, {'residual': 25873, 'stddev': 200, 'sv_id': {'constellation': 1, 'sat_id': 109}}, {'residual': -22403, 'stddev': 137, 'sv_id': {'constellation': 94, 'sat_id': 25}}, {'residual': 7588, 'stddev': 31, 'sv_id': {'constellation': 4, 'sat_id': 157}}, {'residual': -6840, 'stddev': 126, 'sv_id': {'constellation': 132, 'sat_id': 48}}, {'residual': -31412, 'stddev': 21, 'sv_id': {'constellation': 68, 'sat_id': 186}}, {'residual': -23413, 'stddev': 148, 'sv_id': {'constellation': 180, 'sat_id': 0}}, {'residual': 30934, 'stddev': 177, 'sv_id': {'constellation': 149, 'sat_id': 119}}, {'residual': 26960, 'stddev': 10, 'sv_id': {'constellation': 80, 'sat_id': 201}}, {'residual': 11853, 'stddev': 233, 'sv_id': {'constellation': 118, 'sat_id': 136}}, {'residual': -25077, 'stddev': 103, 'sv_id': {'constellation': 227, 'sat_id': 233}}] + + assert dictify(msg.tropo_delay_correction) == {'hydro': 10643, 'stddev': 92, 'wet': 33} + + assert dictify(msg) == {'crc': 55463, 'length': 254, 'msg_type': 1530, 'payload': 'pNksNWJdP5No/IX1HF9kkykhXFcZjpdKl19eB5LtLadWKnTgqercF7ASDbJPoKBuDzXOl54WdbgwqlIoNXpFtG4mQWj0E+7jWKmkkj8lt1VH66hy02ndnDwS5gKOrBAnIX5qY7zqKaLFiuNQDDZD7gVdAc+BDS5zMTq5f5zIYNnKD/U3xlHahEZJUpMa/w6GYIo31lOcqqNPreRzM/Fr9XCo0goFdQE5bPjUkXfipQWNymoAPCQ988vY1wyJEBz3c5i1d9Dky+wip8QgbQERZcgZXn2oiZ0EpB0fMIRI5X66REyFFQC0i6SUd5XWeLHJUFBpCoh2TS7p6eMLnmc=', 'preamble': 85, 'sender': 27244, 'header': {'time': {'tow': 892131748, 'wn': 23906}, 'num_msgs': 37695, 'seq_num': 64616, 'update_interval': 133, 'iod_atmo': 245, 'tropo_quality_indicator': 28}, 'index': 25695, 'tropo_delay_correction': {'hydro': 10643, 'wet': 33, 'stddev': 92}, 'stec_residuals': [{'sv_id': {'sat_id': 87, 'constellation': 25}, 'residual': -26738, 'stddev': 74}, {'sv_id': {'sat_id': 151, 'constellation': 95}, 'residual': 1886, 'stddev': 146}, {'sv_id': {'sat_id': 237, 'constellation': 45}, 'residual': 22183, 'stddev': 42}, {'sv_id': {'sat_id': 116, 'constellation': 224}, 'residual': -5463, 'stddev': 220}, {'sv_id': {'sat_id': 23, 'constellation': 176}, 'residual': 3346, 'stddev': 178}, {'sv_id': {'sat_id': 79, 'constellation': 160}, 'residual': 28320, 'stddev': 15}, {'sv_id': {'sat_id': 53, 'constellation': 206}, 'residual': -24937, 'stddev': 22}, {'sv_id': {'sat_id': 117, 'constellation': 184}, 'residual': -21968, 'stddev': 82}, {'sv_id': {'sat_id': 40, 'constellation': 53}, 'residual': 17786, 'stddev': 180}, {'sv_id': {'sat_id': 110, 'constellation': 38}, 'residual': 26689, 'stddev': 244}, {'sv_id': {'sat_id': 19, 'constellation': 238}, 'residual': 22755, 'stddev': 169}, {'sv_id': {'sat_id': 164, 'constellation': 146}, 'residual': 9535, 'stddev': 183}, {'sv_id': {'sat_id': 85, 'constellation': 71}, 'residual': -22293, 'stddev': 114}, {'sv_id': {'sat_id': 211, 'constellation': 105}, 'residual': -25379, 'stddev': 60}, {'sv_id': {'sat_id': 18, 'constellation': 230}, 'residual': -29182, 'stddev': 172}, {'sv_id': {'sat_id': 16, 'constellation': 39}, 'residual': 32289, 'stddev': 106}, {'sv_id': {'sat_id': 99, 'constellation': 188}, 'residual': 10730, 'stddev': 162}, {'sv_id': {'sat_id': 197, 'constellation': 138}, 'residual': 20707, 'stddev': 12}, {'sv_id': {'sat_id': 54, 'constellation': 67}, 'residual': 1518, 'stddev': 93}, {'sv_id': {'sat_id': 1, 'constellation': 207}, 'residual': 3457, 'stddev': 46}, {'sv_id': {'sat_id': 115, 'constellation': 49}, 'residual': -18118, 'stddev': 127}, {'sv_id': {'sat_id': 156, 'constellation': 200}, 'residual': -9888, 'stddev': 202}, {'sv_id': {'sat_id': 15, 'constellation': 245}, 'residual': -14793, 'stddev': 81}, {'sv_id': {'sat_id': 218, 'constellation': 132}, 'residual': 18758, 'stddev': 82}, {'sv_id': {'sat_id': 147, 'constellation': 26}, 'residual': 3839, 'stddev': 134}, {'sv_id': {'sat_id': 96, 'constellation': 138}, 'residual': -10697, 'stddev': 83}, {'sv_id': {'sat_id': 156, 'constellation': 170}, 'residual': 20387, 'stddev': 173}, {'sv_id': {'sat_id': 228, 'constellation': 115}, 'residual': -3789, 'stddev': 107}, {'sv_id': {'sat_id': 245, 'constellation': 112}, 'residual': -11608, 'stddev': 10}, {'sv_id': {'sat_id': 5, 'constellation': 117}, 'residual': 14593, 'stddev': 108}, {'sv_id': {'sat_id': 248, 'constellation': 212}, 'residual': 30609, 'stddev': 226}, {'sv_id': {'sat_id': 165, 'constellation': 5}, 'residual': -13683, 'stddev': 106}, {'sv_id': {'sat_id': 0, 'constellation': 60}, 'residual': 15652, 'stddev': 243}, {'sv_id': {'sat_id': 203, 'constellation': 216}, 'residual': 3287, 'stddev': 137}, {'sv_id': {'sat_id': 16, 'constellation': 28}, 'residual': 29687, 'stddev': 152}, {'sv_id': {'sat_id': 181, 'constellation': 119}, 'residual': -6960, 'stddev': 203}, {'sv_id': {'sat_id': 236, 'constellation': 34}, 'residual': -15193, 'stddev': 32}, {'sv_id': {'sat_id': 109, 'constellation': 1}, 'residual': 25873, 'stddev': 200}, {'sv_id': {'sat_id': 25, 'constellation': 94}, 'residual': -22403, 'stddev': 137}, {'sv_id': {'sat_id': 157, 'constellation': 4}, 'residual': 7588, 'stddev': 31}, {'sv_id': {'sat_id': 48, 'constellation': 132}, 'residual': -6840, 'stddev': 126}, {'sv_id': {'sat_id': 186, 'constellation': 68}, 'residual': -31412, 'stddev': 21}, {'sv_id': {'sat_id': 0, 'constellation': 180}, 'residual': -23413, 'stddev': 148}, {'sv_id': {'sat_id': 119, 'constellation': 149}, 'residual': 30934, 'stddev': 177}, {'sv_id': {'sat_id': 201, 'constellation': 80}, 'residual': 26960, 'stddev': 10}, {'sv_id': {'sat_id': 136, 'constellation': 118}, 'residual': 11853, 'stddev': 233}, {'sv_id': {'sat_id': 233, 'constellation': 227}, 'residual': -25077, 'stddev': 103}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.py new file mode 100644 index 0000000000..1364d37303 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrGriddedCorrectionNoStdDepA.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrGriddedCorrectionNoStdDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_gridded_correction_no_std_dep_a_1(): + buf = base64.standard_b64decode("VfAFZhz+s/AhqewidfVD+Ons5uZnej9l551zosWSI2vebTQpVgztuEHMiZSrtwsAtMusNcRVunPLXKYeKg3IR2KJ26Bf2F/6Y8Rc1p/9w97pkuk/TBhqKP1BCbco17w7dUVhczw4AI3PqzahFz0AV+Z7VyS4/w6ju+Arl5doJzkFNjDgtYE8XKtybW0MF3YIQJ822CEUGESgJCbekb5cY2yf6PDj3f0PPhd5uah0BJN7SN934vKhzLTKiaY6GHwTtbwQa0LnPwFA/HM+6WH6VpzdMbIgScZD+f1KOCald1xjLF+DWcDhN1+rWM0VdOdTR0dkbtn+mNQSCCid9DZI8Oe9b8PNUQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x51cd + + assert msg.length == 254 + + assert msg.msg_type == 0x5f0 + + assert msg.payload == "s/AhqewidfVD+Ons5uZnej9l551zosWSI2vebTQpVgztuEHMiZSrtwsAtMusNcRVunPLXKYeKg3IR2KJ26Bf2F/6Y8Rc1p/9w97pkuk/TBhqKP1BCbco17w7dUVhczw4AI3PqzahFz0AV+Z7VyS4/w6ju+Arl5doJzkFNjDgtYE8XKtybW0MF3YIQJ822CEUGESgJCbekb5cY2yf6PDj3f0PPhd5uah0BJN7SN934vKhzLTKiaY6GHwTtbwQa0LnPwFA/HM+6WH6VpzdMbIgScZD+f1KOCald1xjLF+DWcDhN1+rWM0VdOdTR0dkbtn+mNQSCCid9DZI8Oe9b8M=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x1c66 + + assert dictify(msg.header) == {'iod_atmo': 236, 'num_msgs': 62837, 'seq_num': 63555, 'time': {'tow': 2837573811, 'wn': 8940}, 'tropo_quality_indicator': 230, 'update_interval': 233} + + assert dictify(msg.index) == 26598 + + assert dictify(msg.stec_residuals) == [{'residual': -23949, 'sv_id': {'constellation': 157, 'sat_id': 231}}, {'residual': 27427, 'sv_id': {'constellation': 146, 'sat_id': 197}}, {'residual': 10548, 'sv_id': {'constellation': 109, 'sat_id': 222}}, {'residual': -18195, 'sv_id': {'constellation': 12, 'sat_id': 86}}, {'residual': -27511, 'sv_id': {'constellation': 204, 'sat_id': 65}}, {'residual': 11, 'sv_id': {'constellation': 183, 'sat_id': 171}}, {'residual': 13740, 'sv_id': {'constellation': 203, 'sat_id': 180}}, {'residual': 29626, 'sv_id': {'constellation': 85, 'sat_id': 196}}, {'residual': 7846, 'sv_id': {'constellation': 92, 'sat_id': 203}}, {'residual': 18376, 'sv_id': {'constellation': 13, 'sat_id': 42}}, {'residual': -24357, 'sv_id': {'constellation': 137, 'sat_id': 98}}, {'residual': -1441, 'sv_id': {'constellation': 216, 'sat_id': 95}}, {'residual': -10660, 'sv_id': {'constellation': 196, 'sat_id': 99}}, {'residual': -8509, 'sv_id': {'constellation': 253, 'sat_id': 159}}, {'residual': 16361, 'sv_id': {'constellation': 146, 'sat_id': 233}}, {'residual': 10346, 'sv_id': {'constellation': 24, 'sat_id': 76}}, {'residual': -18679, 'sv_id': {'constellation': 65, 'sat_id': 253}}, {'residual': 15292, 'sv_id': {'constellation': 215, 'sat_id': 40}}, {'residual': 29537, 'sv_id': {'constellation': 69, 'sat_id': 117}}, {'residual': -29440, 'sv_id': {'constellation': 56, 'sat_id': 60}}, {'residual': -24266, 'sv_id': {'constellation': 171, 'sat_id': 207}}, {'residual': 22272, 'sv_id': {'constellation': 61, 'sat_id': 23}}, {'residual': 9303, 'sv_id': {'constellation': 123, 'sat_id': 230}}, {'residual': -23794, 'sv_id': {'constellation': 255, 'sat_id': 184}}, {'residual': -26837, 'sv_id': {'constellation': 224, 'sat_id': 187}}, {'residual': 14631, 'sv_id': {'constellation': 104, 'sat_id': 151}}, {'residual': -8144, 'sv_id': {'constellation': 54, 'sat_id': 5}}, {'residual': 23612, 'sv_id': {'constellation': 129, 'sat_id': 181}}, {'residual': 28013, 'sv_id': {'constellation': 114, 'sat_id': 171}}, {'residual': 2166, 'sv_id': {'constellation': 23, 'sat_id': 12}}, {'residual': -10186, 'sv_id': {'constellation': 159, 'sat_id': 64}}, {'residual': 17432, 'sv_id': {'constellation': 20, 'sat_id': 33}}, {'residual': -8666, 'sv_id': {'constellation': 36, 'sat_id': 160}}, {'residual': 25436, 'sv_id': {'constellation': 190, 'sat_id': 145}}, {'residual': -3864, 'sv_id': {'constellation': 159, 'sat_id': 108}}, {'residual': 4093, 'sv_id': {'constellation': 221, 'sat_id': 227}}, {'residual': -18055, 'sv_id': {'constellation': 23, 'sat_id': 62}}, {'residual': -27900, 'sv_id': {'constellation': 116, 'sat_id': 168}}, {'residual': 30687, 'sv_id': {'constellation': 72, 'sat_id': 123}}, {'residual': -13151, 'sv_id': {'constellation': 242, 'sat_id': 226}}, {'residual': -22903, 'sv_id': {'constellation': 202, 'sat_id': 180}}, {'residual': 4988, 'sv_id': {'constellation': 24, 'sat_id': 58}}, {'residual': 27408, 'sv_id': {'constellation': 188, 'sat_id': 181}}, {'residual': 319, 'sv_id': {'constellation': 231, 'sat_id': 66}}, {'residual': 15987, 'sv_id': {'constellation': 252, 'sat_id': 64}}, {'residual': 22266, 'sv_id': {'constellation': 97, 'sat_id': 233}}, {'residual': -19919, 'sv_id': {'constellation': 221, 'sat_id': 156}}, {'residual': 17350, 'sv_id': {'constellation': 73, 'sat_id': 32}}, {'residual': 14410, 'sv_id': {'constellation': 253, 'sat_id': 249}}, {'residual': 23671, 'sv_id': {'constellation': 165, 'sat_id': 38}}, {'residual': -31905, 'sv_id': {'constellation': 44, 'sat_id': 99}}, {'residual': 14305, 'sv_id': {'constellation': 192, 'sat_id': 89}}, {'residual': -12968, 'sv_id': {'constellation': 171, 'sat_id': 95}}, {'residual': 21479, 'sv_id': {'constellation': 116, 'sat_id': 21}}, {'residual': 28260, 'sv_id': {'constellation': 71, 'sat_id': 71}}, {'residual': -11112, 'sv_id': {'constellation': 254, 'sat_id': 217}}, {'residual': -25304, 'sv_id': {'constellation': 8, 'sat_id': 18}}, {'residual': -4024, 'sv_id': {'constellation': 54, 'sat_id': 244}}, {'residual': -15505, 'sv_id': {'constellation': 189, 'sat_id': 231}}] + + assert dictify(msg.tropo_delay_correction) == {'hydro': 16250, 'wet': 101} + + assert dictify(msg) == {'crc': 20941, 'length': 254, 'msg_type': 1520, 'payload': 's/AhqewidfVD+Ons5uZnej9l551zosWSI2vebTQpVgztuEHMiZSrtwsAtMusNcRVunPLXKYeKg3IR2KJ26Bf2F/6Y8Rc1p/9w97pkuk/TBhqKP1BCbco17w7dUVhczw4AI3PqzahFz0AV+Z7VyS4/w6ju+Arl5doJzkFNjDgtYE8XKtybW0MF3YIQJ822CEUGESgJCbekb5cY2yf6PDj3f0PPhd5uah0BJN7SN934vKhzLTKiaY6GHwTtbwQa0LnPwFA/HM+6WH6VpzdMbIgScZD+f1KOCald1xjLF+DWcDhN1+rWM0VdOdTR0dkbtn+mNQSCCid9DZI8Oe9b8M=', 'preamble': 85, 'sender': 7270, 'header': {'time': {'tow': 2837573811, 'wn': 8940}, 'num_msgs': 62837, 'seq_num': 63555, 'update_interval': 233, 'iod_atmo': 236, 'tropo_quality_indicator': 230}, 'index': 26598, 'tropo_delay_correction': {'hydro': 16250, 'wet': 101}, 'stec_residuals': [{'sv_id': {'sat_id': 231, 'constellation': 157}, 'residual': -23949}, {'sv_id': {'sat_id': 197, 'constellation': 146}, 'residual': 27427}, {'sv_id': {'sat_id': 222, 'constellation': 109}, 'residual': 10548}, {'sv_id': {'sat_id': 86, 'constellation': 12}, 'residual': -18195}, {'sv_id': {'sat_id': 65, 'constellation': 204}, 'residual': -27511}, {'sv_id': {'sat_id': 171, 'constellation': 183}, 'residual': 11}, {'sv_id': {'sat_id': 180, 'constellation': 203}, 'residual': 13740}, {'sv_id': {'sat_id': 196, 'constellation': 85}, 'residual': 29626}, {'sv_id': {'sat_id': 203, 'constellation': 92}, 'residual': 7846}, {'sv_id': {'sat_id': 42, 'constellation': 13}, 'residual': 18376}, {'sv_id': {'sat_id': 98, 'constellation': 137}, 'residual': -24357}, {'sv_id': {'sat_id': 95, 'constellation': 216}, 'residual': -1441}, {'sv_id': {'sat_id': 99, 'constellation': 196}, 'residual': -10660}, {'sv_id': {'sat_id': 159, 'constellation': 253}, 'residual': -8509}, {'sv_id': {'sat_id': 233, 'constellation': 146}, 'residual': 16361}, {'sv_id': {'sat_id': 76, 'constellation': 24}, 'residual': 10346}, {'sv_id': {'sat_id': 253, 'constellation': 65}, 'residual': -18679}, {'sv_id': {'sat_id': 40, 'constellation': 215}, 'residual': 15292}, {'sv_id': {'sat_id': 117, 'constellation': 69}, 'residual': 29537}, {'sv_id': {'sat_id': 60, 'constellation': 56}, 'residual': -29440}, {'sv_id': {'sat_id': 207, 'constellation': 171}, 'residual': -24266}, {'sv_id': {'sat_id': 23, 'constellation': 61}, 'residual': 22272}, {'sv_id': {'sat_id': 230, 'constellation': 123}, 'residual': 9303}, {'sv_id': {'sat_id': 184, 'constellation': 255}, 'residual': -23794}, {'sv_id': {'sat_id': 187, 'constellation': 224}, 'residual': -26837}, {'sv_id': {'sat_id': 151, 'constellation': 104}, 'residual': 14631}, {'sv_id': {'sat_id': 5, 'constellation': 54}, 'residual': -8144}, {'sv_id': {'sat_id': 181, 'constellation': 129}, 'residual': 23612}, {'sv_id': {'sat_id': 171, 'constellation': 114}, 'residual': 28013}, {'sv_id': {'sat_id': 12, 'constellation': 23}, 'residual': 2166}, {'sv_id': {'sat_id': 64, 'constellation': 159}, 'residual': -10186}, {'sv_id': {'sat_id': 33, 'constellation': 20}, 'residual': 17432}, {'sv_id': {'sat_id': 160, 'constellation': 36}, 'residual': -8666}, {'sv_id': {'sat_id': 145, 'constellation': 190}, 'residual': 25436}, {'sv_id': {'sat_id': 108, 'constellation': 159}, 'residual': -3864}, {'sv_id': {'sat_id': 227, 'constellation': 221}, 'residual': 4093}, {'sv_id': {'sat_id': 62, 'constellation': 23}, 'residual': -18055}, {'sv_id': {'sat_id': 168, 'constellation': 116}, 'residual': -27900}, {'sv_id': {'sat_id': 123, 'constellation': 72}, 'residual': 30687}, {'sv_id': {'sat_id': 226, 'constellation': 242}, 'residual': -13151}, {'sv_id': {'sat_id': 180, 'constellation': 202}, 'residual': -22903}, {'sv_id': {'sat_id': 58, 'constellation': 24}, 'residual': 4988}, {'sv_id': {'sat_id': 181, 'constellation': 188}, 'residual': 27408}, {'sv_id': {'sat_id': 66, 'constellation': 231}, 'residual': 319}, {'sv_id': {'sat_id': 64, 'constellation': 252}, 'residual': 15987}, {'sv_id': {'sat_id': 233, 'constellation': 97}, 'residual': 22266}, {'sv_id': {'sat_id': 156, 'constellation': 221}, 'residual': -19919}, {'sv_id': {'sat_id': 32, 'constellation': 73}, 'residual': 17350}, {'sv_id': {'sat_id': 249, 'constellation': 253}, 'residual': 14410}, {'sv_id': {'sat_id': 38, 'constellation': 165}, 'residual': 23671}, {'sv_id': {'sat_id': 99, 'constellation': 44}, 'residual': -31905}, {'sv_id': {'sat_id': 89, 'constellation': 192}, 'residual': 14305}, {'sv_id': {'sat_id': 95, 'constellation': 171}, 'residual': -12968}, {'sv_id': {'sat_id': 21, 'constellation': 116}, 'residual': 21479}, {'sv_id': {'sat_id': 71, 'constellation': 71}, 'residual': 28260}, {'sv_id': {'sat_id': 217, 'constellation': 254}, 'residual': -11112}, {'sv_id': {'sat_id': 18, 'constellation': 8}, 'residual': -25304}, {'sv_id': {'sat_id': 244, 'constellation': 54}, 'residual': -4024}, {'sv_id': {'sat_id': 231, 'constellation': 189}, 'residual': -15505}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClock.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClock.py new file mode 100644 index 0000000000..6e0634e417 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClock.py @@ -0,0 +1,67 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrOrbitClock.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_orbit_clock_1(): + buf = base64.standard_b64decode("Vd0FNeUyU9Bmz6Qdy9Ts/5jpzzdeNjqARBt1sG77PfR6Ml80kOgYCiV/o0KxaZz1Cvlr2hG6OEgOFg==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x160e + + assert msg.length == 50 + + assert msg.msg_type == 0x5dd + + assert msg.payload == "U9Bmz6Qdy9Ts/5jpzzdeNjqARBt1sG77PfR6Ml80kOgYCiV/o0KxaZz1Cvlr2hG6OEg=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xe535 + + assert dictify(msg.along) == -1334502588 + + assert dictify(msg.c0) == -174298703 + + assert dictify(msg.c1) == -630458102 + + assert dictify(msg.c2) == 1211677201 + + assert dictify(msg.cross) == -197264530 + + assert dictify(msg.dot_along) == 169404560 + + assert dictify(msg.dot_cross) == 1118011173 + + assert dictify(msg.dot_radial) == 878654074 + + assert dictify(msg.iod) == 936372632 + + assert dictify(msg.iod_ssr) == 255 + + assert dictify(msg.radial) == -2143668642 + + assert dictify(msg.sid) == {'code': 212, 'sat': 203} + + assert dictify(msg.time) == {'tow': 3479621715, 'wn': 7588} + + assert dictify(msg.update_interval) == 236 + + assert dictify(msg) == {'crc': 5646, 'length': 50, 'msg_type': 1501, 'payload': 'U9Bmz6Qdy9Ts/5jpzzdeNjqARBt1sG77PfR6Ml80kOgYCiV/o0KxaZz1Cvlr2hG6OEg=', 'preamble': 85, 'sender': 58677, 'time': {'tow': 3479621715, 'wn': 7588}, 'sid': {'sat': 203, 'code': 212}, 'update_interval': 236, 'iod_ssr': 255, 'iod': 936372632, 'radial': -2143668642, 'along': -1334502588, 'cross': -197264530, 'dot_radial': 878654074, 'dot_along': 169404560, 'dot_cross': 1118011173, 'c0': -174298703, 'c1': -630458102, 'c2': 1211677201} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClockDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClockDepA.py new file mode 100644 index 0000000000..31b826e38c --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrOrbitClockDepA.py @@ -0,0 +1,67 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrOrbitClockDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_orbit_clock_dep_a_1(): + buf = base64.standard_b64decode("VdwFIaYv4XIfvSseAR7C08GvoY/+OD/oB9hFAW6lfMS9G3RYBD0DlxKrky7GVfP14et7tdKd/A==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xfc9d + + assert msg.length == 47 + + assert msg.msg_type == 0x5dc + + assert msg.payload == "4XIfvSseAR7C08GvoY/+OD/oB9hFAW6lfMS9G3RYBD0DlxKrky7GVfP14et7tdI=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xa621 + + assert dictify(msg.along) == 132661048 + + assert dictify(msg.c0) == -970026069 + + assert dictify(msg.c1) == -503975083 + + assert dictify(msg.c2) == -759858197 + + assert dictify(msg.cross) == 1845577176 + + assert dictify(msg.dot_along) == 72905755 + + assert dictify(msg.dot_cross) == 311886653 + + assert dictify(msg.dot_radial) == -1111196507 + + assert dictify(msg.iod) == 193 + + assert dictify(msg.iod_ssr) == 211 + + assert dictify(msg.radial) == -24141393 + + assert dictify(msg.sid) == {'code': 30, 'sat': 1} + + assert dictify(msg.time) == {'tow': 3172954849, 'wn': 7723} + + assert dictify(msg.update_interval) == 194 + + assert dictify(msg) == {'crc': 64669, 'length': 47, 'msg_type': 1500, 'payload': '4XIfvSseAR7C08GvoY/+OD/oB9hFAW6lfMS9G3RYBD0DlxKrky7GVfP14et7tdI=', 'preamble': 85, 'sender': 42529, 'time': {'tow': 3172954849, 'wn': 7723}, 'sid': {'sat': 1, 'code': 30}, 'update_interval': 194, 'iod_ssr': 211, 'iod': 193, 'radial': -24141393, 'along': 132661048, 'cross': 1845577176, 'dot_radial': -1111196507, 'dot_along': 72905755, 'dot_cross': 311886653, 'c0': -970026069, 'c1': -503975083, 'c2': -759858197} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrPhaseBiases.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrPhaseBiases.py new file mode 100644 index 0000000000..80ace80867 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrPhaseBiases.py @@ -0,0 +1,57 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrPhaseBiases.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_phase_biases_1(): + buf = base64.standard_b64decode("VeYF287/0ZqQDNWkqVKx5mLR+RYRHfr1wdse1LHPuyGSOsykQXIx+DQIoSz8pqjofIZWrfGuLI6bgY+4odMPJL3Qwt2YEMtXIryNaL1mnPwW+4gxvJ3e9TGEECKO5FWL3cXrYkprRiQm7/twvHz2jaSWaAfVLBX0wASPGCoVVIgHKnYtF66vgTapDtUCxWI8Dc9pZIFIiPCMgQlyrJeWEdJ/c5cD8v7XDgUifgLXQSawF9LJYSTPXOAadJvTpS9mJkPHN3UkqSEB5sm3FSo+k62tm2KS56eKUqd/5QECf+3PdFpznwMqQpH6yQf7AkvmGtW1OEBhWP8GkxBZyxtE8+Y38qep2/A=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf0db + + assert msg.length == 255 + + assert msg.msg_type == 0x5e6 + + assert msg.payload == "0ZqQDNWkqVKx5mLR+RYRHfr1wdse1LHPuyGSOsykQXIx+DQIoSz8pqjofIZWrfGuLI6bgY+4odMPJL3Qwt2YEMtXIryNaL1mnPwW+4gxvJ3e9TGEECKO5FWL3cXrYkprRiQm7/twvHz2jaSWaAfVLBX0wASPGCoVVIgHKnYtF66vgTapDtUCxWI8Dc9pZIFIiPCMgQlyrJeWEdJ/c5cD8v7XDgUifgLXQSawF9LJYSTPXOAadJvTpS9mJkPHN3UkqSEB5sm3FSo+k62tm2KS56eKUqd/5QECf+3PdFpznwMqQpH6yQf7AkvmGtW1OEBhWP8GkxBZyxtE8+Y38qep" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xcedb + + assert dictify(msg.biases) == [{'bias': -1311498533, 'code': 29, 'discontinuity_counter': 193, 'integer_indicator': 250, 'widelane_integer_indicator': 245}, {'bias': 1101319226, 'code': 207, 'discontinuity_counter': 146, 'integer_indicator': 187, 'widelane_integer_indicator': 33}, {'bias': -64184056, 'code': 114, 'discontinuity_counter': 52, 'integer_indicator': 49, 'widelane_integer_indicator': 248}, {'bias': -240298362, 'code': 166, 'discontinuity_counter': 124, 'integer_indicator': 168, 'widelane_integer_indicator': 232}, {'bias': -1581740159, 'code': 174, 'discontinuity_counter': 155, 'integer_indicator': 44, 'widelane_integer_indicator': 142}, {'bias': -1730297136, 'code': 211, 'discontinuity_counter': 189, 'integer_indicator': 15, 'widelane_integer_indicator': 36}, {'bias': -1117221444, 'code': 16, 'discontinuity_counter': 34, 'integer_indicator': 203, 'widelane_integer_indicator': 87}, {'bias': -1137604357, 'code': 102, 'discontinuity_counter': 22, 'integer_indicator': 156, 'widelane_integer_indicator': 252}, {'bias': -1910370172, 'code': 157, 'discontinuity_counter': 49, 'integer_indicator': 222, 'widelane_integer_indicator': 245}, {'bias': 1247996869, 'code': 228, 'discontinuity_counter': 221, 'integer_indicator': 85, 'widelane_integer_indicator': 139}, {'bias': -1133446161, 'code': 107, 'discontinuity_counter': 38, 'integer_indicator': 70, 'widelane_integer_indicator': 36}, {'bias': -720934762, 'code': 124, 'discontinuity_counter': 164, 'integer_indicator': 246, 'widelane_integer_indicator': 141}, {'bias': 706252548, 'code': 44, 'discontinuity_counter': 192, 'integer_indicator': 21, 'widelane_integer_indicator': 244}, {'bias': 388855338, 'code': 21, 'discontinuity_counter': 7, 'integer_indicator': 84, 'widelane_integer_indicator': 136}, {'bias': 47517353, 'code': 174, 'discontinuity_counter': 54, 'integer_indicator': 175, 'widelane_integer_indicator': 129}, {'bias': -2124125745, 'code': 197, 'discontinuity_counter': 13, 'integer_indicator': 98, 'widelane_integer_indicator': 60}, {'bias': -1401812607, 'code': 72, 'discontinuity_counter': 140, 'integer_indicator': 136, 'widelane_integer_indicator': 240}, {'bias': 60257151, 'code': 151, 'discontinuity_counter': 210, 'integer_indicator': 150, 'widelane_integer_indicator': 17}, {'bias': 41820677, 'code': 242, 'discontinuity_counter': 14, 'integer_indicator': 254, 'widelane_integer_indicator': 215}, {'bias': 1640616471, 'code': 215, 'discontinuity_counter': 176, 'integer_indicator': 65, 'widelane_integer_indicator': 38}, {'bias': -744786918, 'code': 36, 'discontinuity_counter': 224, 'integer_indicator': 207, 'widelane_integer_indicator': 92}, {'bias': 1966589763, 'code': 165, 'discontinuity_counter': 38, 'integer_indicator': 47, 'widelane_integer_indicator': 102}, {'bias': 364366310, 'code': 36, 'discontinuity_counter': 1, 'integer_indicator': 169, 'widelane_integer_indicator': 33}, {'bias': -1839031379, 'code': 42, 'discontinuity_counter': 173, 'integer_indicator': 62, 'widelane_integer_indicator': 147}, {'bias': 31817639, 'code': 231, 'discontinuity_counter': 82, 'integer_indicator': 167, 'widelane_integer_indicator': 138}, {'bias': -1619830156, 'code': 2, 'discontinuity_counter': 207, 'integer_indicator': 127, 'widelane_integer_indicator': 237}, {'bias': -83375622, 'code': 3, 'discontinuity_counter': 145, 'integer_indicator': 42, 'widelane_integer_indicator': 66}, {'bias': 1077458389, 'code': 2, 'discontinuity_counter': 26, 'integer_indicator': 75, 'widelane_integer_indicator': 230}, {'bias': -883355501, 'code': 97, 'discontinuity_counter': 6, 'integer_indicator': 88, 'widelane_integer_indicator': 255}, {'bias': -1448611273, 'code': 27, 'discontinuity_counter': 230, 'integer_indicator': 68, 'widelane_integer_indicator': 243}] + + assert dictify(msg.dispersive_bias) == 98 + + assert dictify(msg.iod_ssr) == 230 + + assert dictify(msg.mw_consistency) == 209 + + assert dictify(msg.sid) == {'code': 82, 'sat': 169} + + assert dictify(msg.time) == {'tow': 210803409, 'wn': 42197} + + assert dictify(msg.update_interval) == 177 + + assert dictify(msg.yaw) == 5881 + + assert dictify(msg.yaw_rate) == 17 + + assert dictify(msg) == {'crc': 61659, 'length': 255, 'msg_type': 1510, 'payload': '0ZqQDNWkqVKx5mLR+RYRHfr1wdse1LHPuyGSOsykQXIx+DQIoSz8pqjofIZWrfGuLI6bgY+4odMPJL3Qwt2YEMtXIryNaL1mnPwW+4gxvJ3e9TGEECKO5FWL3cXrYkprRiQm7/twvHz2jaSWaAfVLBX0wASPGCoVVIgHKnYtF66vgTapDtUCxWI8Dc9pZIFIiPCMgQlyrJeWEdJ/c5cD8v7XDgUifgLXQSawF9LJYSTPXOAadJvTpS9mJkPHN3UkqSEB5sm3FSo+k62tm2KS56eKUqd/5QECf+3PdFpznwMqQpH6yQf7AkvmGtW1OEBhWP8GkxBZyxtE8+Y38qep', 'preamble': 85, 'sender': 52955, 'time': {'tow': 210803409, 'wn': 42197}, 'sid': {'sat': 169, 'code': 82}, 'update_interval': 177, 'iod_ssr': 230, 'dispersive_bias': 98, 'mw_consistency': 209, 'yaw': 5881, 'yaw_rate': 17, 'biases': [{'code': 29, 'integer_indicator': 250, 'widelane_integer_indicator': 245, 'discontinuity_counter': 193, 'bias': -1311498533}, {'code': 207, 'integer_indicator': 187, 'widelane_integer_indicator': 33, 'discontinuity_counter': 146, 'bias': 1101319226}, {'code': 114, 'integer_indicator': 49, 'widelane_integer_indicator': 248, 'discontinuity_counter': 52, 'bias': -64184056}, {'code': 166, 'integer_indicator': 168, 'widelane_integer_indicator': 232, 'discontinuity_counter': 124, 'bias': -240298362}, {'code': 174, 'integer_indicator': 44, 'widelane_integer_indicator': 142, 'discontinuity_counter': 155, 'bias': -1581740159}, {'code': 211, 'integer_indicator': 15, 'widelane_integer_indicator': 36, 'discontinuity_counter': 189, 'bias': -1730297136}, {'code': 16, 'integer_indicator': 203, 'widelane_integer_indicator': 87, 'discontinuity_counter': 34, 'bias': -1117221444}, {'code': 102, 'integer_indicator': 156, 'widelane_integer_indicator': 252, 'discontinuity_counter': 22, 'bias': -1137604357}, {'code': 157, 'integer_indicator': 222, 'widelane_integer_indicator': 245, 'discontinuity_counter': 49, 'bias': -1910370172}, {'code': 228, 'integer_indicator': 85, 'widelane_integer_indicator': 139, 'discontinuity_counter': 221, 'bias': 1247996869}, {'code': 107, 'integer_indicator': 70, 'widelane_integer_indicator': 36, 'discontinuity_counter': 38, 'bias': -1133446161}, {'code': 124, 'integer_indicator': 246, 'widelane_integer_indicator': 141, 'discontinuity_counter': 164, 'bias': -720934762}, {'code': 44, 'integer_indicator': 21, 'widelane_integer_indicator': 244, 'discontinuity_counter': 192, 'bias': 706252548}, {'code': 21, 'integer_indicator': 84, 'widelane_integer_indicator': 136, 'discontinuity_counter': 7, 'bias': 388855338}, {'code': 174, 'integer_indicator': 175, 'widelane_integer_indicator': 129, 'discontinuity_counter': 54, 'bias': 47517353}, {'code': 197, 'integer_indicator': 98, 'widelane_integer_indicator': 60, 'discontinuity_counter': 13, 'bias': -2124125745}, {'code': 72, 'integer_indicator': 136, 'widelane_integer_indicator': 240, 'discontinuity_counter': 140, 'bias': -1401812607}, {'code': 151, 'integer_indicator': 150, 'widelane_integer_indicator': 17, 'discontinuity_counter': 210, 'bias': 60257151}, {'code': 242, 'integer_indicator': 254, 'widelane_integer_indicator': 215, 'discontinuity_counter': 14, 'bias': 41820677}, {'code': 215, 'integer_indicator': 65, 'widelane_integer_indicator': 38, 'discontinuity_counter': 176, 'bias': 1640616471}, {'code': 36, 'integer_indicator': 207, 'widelane_integer_indicator': 92, 'discontinuity_counter': 224, 'bias': -744786918}, {'code': 165, 'integer_indicator': 47, 'widelane_integer_indicator': 102, 'discontinuity_counter': 38, 'bias': 1966589763}, {'code': 36, 'integer_indicator': 169, 'widelane_integer_indicator': 33, 'discontinuity_counter': 1, 'bias': 364366310}, {'code': 42, 'integer_indicator': 62, 'widelane_integer_indicator': 147, 'discontinuity_counter': 173, 'bias': -1839031379}, {'code': 231, 'integer_indicator': 167, 'widelane_integer_indicator': 138, 'discontinuity_counter': 82, 'bias': 31817639}, {'code': 2, 'integer_indicator': 127, 'widelane_integer_indicator': 237, 'discontinuity_counter': 207, 'bias': -1619830156}, {'code': 3, 'integer_indicator': 42, 'widelane_integer_indicator': 66, 'discontinuity_counter': 145, 'bias': -83375622}, {'code': 2, 'integer_indicator': 75, 'widelane_integer_indicator': 230, 'discontinuity_counter': 26, 'bias': 1077458389}, {'code': 97, 'integer_indicator': 88, 'widelane_integer_indicator': 255, 'discontinuity_counter': 6, 'bias': -883355501}, {'code': 27, 'integer_indicator': 68, 'widelane_integer_indicator': 243, 'discontinuity_counter': 230, 'bias': -1448611273}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.py new file mode 100644 index 0000000000..1aac436910 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrSatelliteApcDepA.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrSatelliteApcDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_satellite_apc_dep_a_1(): + buf = base64.standard_b64decode("VQQGOBPgy6nwTgTVq/7W1AQIIR9QFQRp4SeLfJUwD9bFjSAhh5aUezGHYSdaFKnvL5mvI5GRe8ICZkqVX6vu+Qftqn1qnlO8tcIbVOKOe03Z+EPXgXKKGfAKOEw9odgWta4hDfzs5sSA1+/qs9ws1DksrTEkifjrYXCdixpzwB9Vf+RR/Nv5bpMIodfUtBlTkPcMG8etShcE72ff3Itbf9ZWMMvkYy1Tnwv6h6oq2cfpKqpOzikrUfdjxpAChALg3JQ6VYrSyJ4HnkMuyIR28Q0lPmv9vohCCVSbVrQpxCh3ZfzfkJkyDQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x0d32 + + assert msg.length == 224 + + assert msg.msg_type == 0x604 + + assert msg.payload == "y6nwTgTVq/7W1AQIIR9QFQRp4SeLfJUwD9bFjSAhh5aUezGHYSdaFKnvL5mvI5GRe8ICZkqVX6vu+Qftqn1qnlO8tcIbVOKOe03Z+EPXgXKKGfAKOEw9odgWta4hDfzs5sSA1+/qs9ws1DksrTEkifjrYXCdixpzwB9Vf+RR/Nv5bpMIodfUtBlTkPcMG8etShcE72ff3Itbf9ZWMMvkYy1Tnwv6h6oq2cfpKqpOzikrUfdjxpAChALg3JQ6VYrSyJ4HnkMuyIR28Q0lPmv9vohCCVSbVrQpxCh3ZfzfkJk=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x1338 + + assert dictify(msg.apc) == [{'pco': [-21547, -10498, 1236], 'pcv': [8, 33, 31, 80, 21, 4, 105, -31, 39, -117, 124, -107, 48, 15, -42, -59, -115, 32, 33, -121, -106], 'sat_info': 240, 'sid': {'code': 169, 'sat': 203}, 'svn': 1102}, {'pco': [23079, -22252, 12271], 'pcv': [-103, -81, 35, -111, -111, 123, -62, 2, 102, 74, -107, 95, -85, -18, -7, 7, -19, -86, 125, 106, -98], 'sat_info': 49, 'sid': {'code': 123, 'sat': 148}, 'svn': 24967}, {'pco': [-7596, 31630, -9907], 'pcv': [-8, 67, -41, -127, 114, -118, 25, -16, 10, 56, 76, 61, -95, -40, 22, -75, -82, 33, 13, -4, -20], 'sat_info': 181, 'sid': {'code': 188, 'sat': 83}, 'svn': 7106}, {'pco': [-19478, 11484, 14804], 'pcv': [44, -83, 49, 36, -119, -8, -21, 97, 112, -99, -117, 26, 115, -64, 31, 85, 127, -28, 81, -4, -37], 'sat_info': 128, 'sid': {'code': 196, 'sat': 230}, 'svn': 61399}, {'pco': [-11049, 6580, -28589], 'pcv': [-9, 12, 27, -57, -83, 74, 23, 4, -17, 103, -33, -36, -117, 91, 127, -42, 86, 48, -53, -28, 99], 'sat_info': 147, 'sid': {'code': 110, 'sat': 249}, 'svn': 41224}, {'pco': [-21881, -9942, -5689], 'pcv': [42, -86, 78, -50, 41, 43, 81, -9, 99, -58, -112, 2, -124, 2, -32, -36, -108, 58, 85, -118, -46], 'sat_info': 159, 'sid': {'code': 83, 'sat': 45}, 'svn': 64011}, {'pco': [-14290, 30340, 3569], 'pcv': [37, 62, 107, -3, -66, -120, 66, 9, 84, -101, 86, -76, 41, -60, 40, 119, 101, -4, -33, -112, -103], 'sat_info': 7, 'sid': {'code': 158, 'sat': 200}, 'svn': 17310}] + + assert dictify(msg) == {'crc': 3378, 'length': 224, 'msg_type': 1540, 'payload': 'y6nwTgTVq/7W1AQIIR9QFQRp4SeLfJUwD9bFjSAhh5aUezGHYSdaFKnvL5mvI5GRe8ICZkqVX6vu+Qftqn1qnlO8tcIbVOKOe03Z+EPXgXKKGfAKOEw9odgWta4hDfzs5sSA1+/qs9ws1DksrTEkifjrYXCdixpzwB9Vf+RR/Nv5bpMIodfUtBlTkPcMG8etShcE72ff3Itbf9ZWMMvkYy1Tnwv6h6oq2cfpKqpOzikrUfdjxpAChALg3JQ6VYrSyJ4HnkMuyIR28Q0lPmv9vohCCVSbVrQpxCh3ZfzfkJk=', 'preamble': 85, 'sender': 4920, 'apc': [{'sid': {'sat': 203, 'code': 169}, 'sat_info': 240, 'svn': 1102, 'pco': [-21547, -10498, 1236], 'pcv': [8, 33, 31, 80, 21, 4, 105, -31, 39, -117, 124, -107, 48, 15, -42, -59, -115, 32, 33, -121, -106]}, {'sid': {'sat': 148, 'code': 123}, 'sat_info': 49, 'svn': 24967, 'pco': [23079, -22252, 12271], 'pcv': [-103, -81, 35, -111, -111, 123, -62, 2, 102, 74, -107, 95, -85, -18, -7, 7, -19, -86, 125, 106, -98]}, {'sid': {'sat': 83, 'code': 188}, 'sat_info': 181, 'svn': 7106, 'pco': [-7596, 31630, -9907], 'pcv': [-8, 67, -41, -127, 114, -118, 25, -16, 10, 56, 76, 61, -95, -40, 22, -75, -82, 33, 13, -4, -20]}, {'sid': {'sat': 230, 'code': 196}, 'sat_info': 128, 'svn': 61399, 'pco': [-19478, 11484, 14804], 'pcv': [44, -83, 49, 36, -119, -8, -21, 97, 112, -99, -117, 26, 115, -64, 31, 85, 127, -28, 81, -4, -37]}, {'sid': {'sat': 249, 'code': 110}, 'sat_info': 147, 'svn': 41224, 'pco': [-11049, 6580, -28589], 'pcv': [-9, 12, 27, -57, -83, 74, 23, 4, -17, 103, -33, -36, -117, 91, 127, -42, 86, 48, -53, -28, 99]}, {'sid': {'sat': 45, 'code': 83}, 'sat_info': 159, 'svn': 64011, 'pco': [-21881, -9942, -5689], 'pcv': [42, -86, 78, -50, 41, 43, 81, -9, 99, -58, -112, 2, -124, 2, -32, -36, -108, 58, 85, -118, -46]}, {'sid': {'sat': 200, 'code': 158}, 'sat_info': 7, 'svn': 17310, 'pco': [-14290, 30340, 3569], 'pcv': [37, 62, 107, -3, -66, -120, 66, 9, 84, -101, 86, -76, 41, -60, 40, 119, 101, -4, -33, -112, -103]}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDep.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDep.py new file mode 100644 index 0000000000..ad20f246e7 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDep.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrStecCorrectionDep.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_stec_correction_dep_1(): + buf = base64.standard_b64decode("VfsFzJf1nuRydTKenCp3nJ1wLzyEKEZX61OxxgMOCEYMLDW1Wq73ljqs97N3sH0EseVxDk2ZuRc13ruS+lvU1w5r+l5rIVvqANWLX7MyFUquqT1WW44zbAkm4ZJlSYs4dVIl1WzNXRITwyHKV86yfbx3OEWWlkwDgxJJ0EjoCPrLsqqj/FYx97KmOB8Kd9Xx1KQBoioSfKl5nho4F459KHhDLX7rbhcM8VhF7/w5XSzJ2K3yshEF36nAA01rApDpDlgg0QERe5spt/SeUjVnDsq5I7UVdv76MrgyHy04o7F+2U+r7+287nDJdo0So2cjPxVSgRJ1Vb5P0tfjsQ==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xb1e3 + + assert msg.length == 245 + + assert msg.msg_type == 0x5fb + + assert msg.payload == "nuRydTKenCp3nJ1wLzyEKEZX61OxxgMOCEYMLDW1Wq73ljqs97N3sH0EseVxDk2ZuRc13ruS+lvU1w5r+l5rIVvqANWLX7MyFUquqT1WW44zbAkm4ZJlSYs4dVIl1WzNXRITwyHKV86yfbx3OEWWlkwDgxJJ0EjoCPrLsqqj/FYx97KmOB8Kd9Xx1KQBoioSfKl5nho4F459KHhDLX7rbhcM8VhF7/w5XSzJ2K3yshEF36nAA01rApDpDlgg0QERe5spt/SeUjVnDsq5I7UVdv76MrgyHy04o7F+2U+r7+287nDJdo0So2cjPxVSgRJ1Vb5P0tc=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x97cc + + assert dictify(msg.header) == {'iod_atmo': 60, 'num_msgs': 157, 'seq_num': 112, 'tile_id': 30066, 'tile_set_id': 58526, 'time': {'tow': 714907186, 'wn': 40055}, 'update_interval': 47} + + assert dictify(msg.stec_sat_list) == [{'stec_coeff': [-5289, -20141, 966, 2062], 'stec_quality_indicator': 70, 'sv_id': {'constellation': 40, 'sat_id': 132}}, {'stec_coeff': [-19147, -20902, -26889, -21446], 'stec_quality_indicator': 44, 'sv_id': {'constellation': 12, 'sat_id': 70}}, {'stec_coeff': [32176, -20220, 29157, 19726], 'stec_quality_indicator': 119, 'sv_id': {'constellation': 179, 'sat_id': 247}}, {'stec_coeff': [-8651, -27973, 23546, -10284], 'stec_quality_indicator': 23, 'sv_id': {'constellation': 185, 'sat_id': 153}}, {'stec_coeff': [27486, 23329, 234, -29739], 'stec_quality_indicator': 250, 'sv_id': {'constellation': 107, 'sat_id': 14}}, {'stec_coeff': [18965, -22098, 22077, -29093], 'stec_quality_indicator': 50, 'sv_id': {'constellation': 179, 'sat_id': 95}}, {'stec_coeff': [-7898, 26002, -29879, 30008], 'stec_quality_indicator': 9, 'sv_id': {'constellation': 108, 'sat_id': 51}}, {'stec_coeff': [-12948, 4701, -15597, -13791], 'stec_quality_indicator': 213, 'sv_id': {'constellation': 37, 'sat_id': 82}}, {'stec_coeff': [-17283, 14455, -27067, 19606], 'stec_quality_indicator': 178, 'sv_id': {'constellation': 206, 'sat_id': 87}}, {'stec_coeff': [-12215, -6072, -1528, -19765], 'stec_quality_indicator': 18, 'sv_id': {'constellation': 131, 'sat_id': 3}}, {'stec_coeff': [12630, -19721, 14502, 2591], 'stec_quality_indicator': 252, 'sv_id': {'constellation': 163, 'sat_id': 170}}, {'stec_coeff': [-23340, -24063, 4650, -22148], 'stec_quality_indicator': 241, 'sv_id': {'constellation': 213, 'sat_id': 119}}, {'stec_coeff': [5944, 32142, 30760, 11587], 'stec_quality_indicator': 26, 'sv_id': {'constellation': 158, 'sat_id': 121}}, {'stec_coeff': [3095, 22769, -4283, 14844], 'stec_quality_indicator': 110, 'sv_id': {'constellation': 235, 'sat_id': 126}}, {'stec_coeff': [-21032, -19726, 1297, -22049], 'stec_quality_indicator': 201, 'sv_id': {'constellation': 44, 'sat_id': 93}}, {'stec_coeff': [619, -5744, 22542, -12000], 'stec_quality_indicator': 77, 'sv_id': {'constellation': 3, 'sat_id': 192}}, {'stec_coeff': [10651, -2889, 21150, 26421], 'stec_quality_indicator': 123, 'sv_id': {'constellation': 17, 'sat_id': 1}}, {'stec_coeff': [-19165, 30229, -1282, -18382], 'stec_quality_indicator': 185, 'sv_id': {'constellation': 202, 'sat_id': 14}}, {'stec_coeff': [-23752, 32433, 20441, -4181], 'stec_quality_indicator': 45, 'sv_id': {'constellation': 31, 'sat_id': 50}}, {'stec_coeff': [-13968, -29322, -23790, 9063], 'stec_quality_indicator': 238, 'sv_id': {'constellation': 188, 'sat_id': 237}}, {'stec_coeff': [4737, 21877, 20414, -10286], 'stec_quality_indicator': 82, 'sv_id': {'constellation': 21, 'sat_id': 63}}] + + assert dictify(msg) == {'crc': 45539, 'length': 245, 'msg_type': 1531, 'payload': 'nuRydTKenCp3nJ1wLzyEKEZX61OxxgMOCEYMLDW1Wq73ljqs97N3sH0EseVxDk2ZuRc13ruS+lvU1w5r+l5rIVvqANWLX7MyFUquqT1WW44zbAkm4ZJlSYs4dVIl1WzNXRITwyHKV86yfbx3OEWWlkwDgxJJ0EjoCPrLsqqj/FYx97KmOB8Kd9Xx1KQBoioSfKl5nho4F459KHhDLX7rbhcM8VhF7/w5XSzJ2K3yshEF36nAA01rApDpDlgg0QERe5spt/SeUjVnDsq5I7UVdv76MrgyHy04o7F+2U+r7+287nDJdo0So2cjPxVSgRJ1Vb5P0tc=', 'preamble': 85, 'sender': 38860, 'header': {'tile_set_id': 58526, 'tile_id': 30066, 'time': {'tow': 714907186, 'wn': 40055}, 'num_msgs': 157, 'seq_num': 112, 'update_interval': 47, 'iod_atmo': 60}, 'stec_sat_list': [{'sv_id': {'sat_id': 132, 'constellation': 40}, 'stec_quality_indicator': 70, 'stec_coeff': [-5289, -20141, 966, 2062]}, {'sv_id': {'sat_id': 70, 'constellation': 12}, 'stec_quality_indicator': 44, 'stec_coeff': [-19147, -20902, -26889, -21446]}, {'sv_id': {'sat_id': 247, 'constellation': 179}, 'stec_quality_indicator': 119, 'stec_coeff': [32176, -20220, 29157, 19726]}, {'sv_id': {'sat_id': 153, 'constellation': 185}, 'stec_quality_indicator': 23, 'stec_coeff': [-8651, -27973, 23546, -10284]}, {'sv_id': {'sat_id': 14, 'constellation': 107}, 'stec_quality_indicator': 250, 'stec_coeff': [27486, 23329, 234, -29739]}, {'sv_id': {'sat_id': 95, 'constellation': 179}, 'stec_quality_indicator': 50, 'stec_coeff': [18965, -22098, 22077, -29093]}, {'sv_id': {'sat_id': 51, 'constellation': 108}, 'stec_quality_indicator': 9, 'stec_coeff': [-7898, 26002, -29879, 30008]}, {'sv_id': {'sat_id': 82, 'constellation': 37}, 'stec_quality_indicator': 213, 'stec_coeff': [-12948, 4701, -15597, -13791]}, {'sv_id': {'sat_id': 87, 'constellation': 206}, 'stec_quality_indicator': 178, 'stec_coeff': [-17283, 14455, -27067, 19606]}, {'sv_id': {'sat_id': 3, 'constellation': 131}, 'stec_quality_indicator': 18, 'stec_coeff': [-12215, -6072, -1528, -19765]}, {'sv_id': {'sat_id': 170, 'constellation': 163}, 'stec_quality_indicator': 252, 'stec_coeff': [12630, -19721, 14502, 2591]}, {'sv_id': {'sat_id': 119, 'constellation': 213}, 'stec_quality_indicator': 241, 'stec_coeff': [-23340, -24063, 4650, -22148]}, {'sv_id': {'sat_id': 121, 'constellation': 158}, 'stec_quality_indicator': 26, 'stec_coeff': [5944, 32142, 30760, 11587]}, {'sv_id': {'sat_id': 126, 'constellation': 235}, 'stec_quality_indicator': 110, 'stec_coeff': [3095, 22769, -4283, 14844]}, {'sv_id': {'sat_id': 93, 'constellation': 44}, 'stec_quality_indicator': 201, 'stec_coeff': [-21032, -19726, 1297, -22049]}, {'sv_id': {'sat_id': 192, 'constellation': 3}, 'stec_quality_indicator': 77, 'stec_coeff': [619, -5744, 22542, -12000]}, {'sv_id': {'sat_id': 1, 'constellation': 17}, 'stec_quality_indicator': 123, 'stec_coeff': [10651, -2889, 21150, 26421]}, {'sv_id': {'sat_id': 14, 'constellation': 202}, 'stec_quality_indicator': 185, 'stec_coeff': [-19165, 30229, -1282, -18382]}, {'sv_id': {'sat_id': 50, 'constellation': 31}, 'stec_quality_indicator': 45, 'stec_coeff': [-23752, 32433, 20441, -4181]}, {'sv_id': {'sat_id': 237, 'constellation': 188}, 'stec_quality_indicator': 238, 'stec_coeff': [-13968, -29322, -23790, 9063]}, {'sv_id': {'sat_id': 63, 'constellation': 21}, 'stec_quality_indicator': 82, 'stec_coeff': [4737, 21877, 20414, -10286]}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.py new file mode 100644 index 0000000000..9cbec28627 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrStecCorrectionDepA.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrStecCorrectionDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_stec_correction_dep_a_1(): + buf = base64.standard_b64decode("VesFJwf8RlHE6Lkrk3snBH4Tb2H4gtnZajoMQearUV9WECdU5NDJUdtjyz22Qn3LA8EsZNx9PBVd2veez12Bhg7RMA7XmZSTSOG07M3JIQP2zBMDYgTCv/ZM2x+/cU+xD/shE2A2OpLSZPlIFaHTxhXub2sk4+HVA0fzP0HsXE0AqQ+2BfC0CXpW6AZnaP69UW4CMcpU2DcytQV7UDH04Lx9pOY4QnyoO4tqdjO72L+eTVw6/YSWpQmavdo90QFStcQXNbZwwM6nnfQjAb3ZPVhhyclK+9kOaLg2NEruCoEWsuJtWJ0exK8aTCJ03JroDLP0D5vEykhGcwrWcif1HO1EiJs=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x9b88 + + assert msg.length == 252 + + assert msg.msg_type == 0x5eb + + assert msg.payload == "RlHE6Lkrk3snBH4Tb2H4gtnZajoMQearUV9WECdU5NDJUdtjyz22Qn3LA8EsZNx9PBVd2veez12Bhg7RMA7XmZSTSOG07M3JIQP2zBMDYgTCv/ZM2x+/cU+xD/shE2A2OpLSZPlIFaHTxhXub2sk4+HVA0fzP0HsXE0AqQ+2BfC0CXpW6AZnaP69UW4CMcpU2DcytQV7UDH04Lx9pOY4QnyoO4tqdjO72L+eTVw6/YSWpQmavdo90QFStcQXNbZwwM6nnfQjAb3ZPVhhyclK+9kOaLg2NEruCoEWsuJtWJ0exK8aTCJ03JroDLP0D5vEykhGcwrWcif1HO1E" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x0727 + + assert dictify(msg.header) == {'iod_atmo': 4, 'num_msgs': 147, 'seq_num': 123, 'time': {'tow': 3905179974, 'wn': 11193}, 'update_interval': 39} + + assert dictify(msg.stec_sat_list) == [{'stec_coeff': [-1951, -9854, 27353, 3130], 'stec_quality_indicator': 111, 'sv_id': {'constellation': 19, 'sat_id': 126}}, {'stec_coeff': [24401, 4182, 21543, -12060], 'stec_quality_indicator': 171, 'sv_id': {'constellation': 230, 'sat_id': 65}}, {'stec_coeff': [-13469, -18883, 32066, 971], 'stec_quality_indicator': 219, 'sv_id': {'constellation': 81, 'sat_id': 201}}, {'stec_coeff': [32220, 5436, -9635, -24841], 'stec_quality_indicator': 100, 'sv_id': {'constellation': 44, 'sat_id': 193}}, {'stec_coeff': [3718, 12497, -10482, -27495], 'stec_quality_indicator': 129, 'sv_id': {'constellation': 93, 'sat_id': 207}}, {'stec_coeff': [-4940, -13875, 801, -13066], 'stec_quality_indicator': 225, 'sv_id': {'constellation': 72, 'sat_id': 147}}, {'stec_coeff': [-15868, -2369, -9396, -16609], 'stec_quality_indicator': 98, 'sv_id': {'constellation': 3, 'sat_id': 19}}, {'stec_coeff': [-1265, 4897, 13920, -28102], 'stec_quality_indicator': 177, 'sv_id': {'constellation': 79, 'sat_id': 113}}, {'stec_coeff': [5448, -11359, 5574, 28654], 'stec_quality_indicator': 249, 'sv_id': {'constellation': 100, 'sat_id': 210}}, {'stec_coeff': [-10783, 18179, 16371, -5055], 'stec_quality_indicator': 227, 'sv_id': {'constellation': 36, 'sat_id': 107}}, {'stec_coeff': [4009, 1462, -19216, 31241], 'stec_quality_indicator': 0, 'sv_id': {'constellation': 77, 'sat_id': 92}}, {'stec_coeff': [26727, -16898, 28241, 12546], 'stec_quality_indicator': 6, 'sv_id': {'constellation': 232, 'sat_id': 86}}, {'stec_coeff': [12855, 1461, 20603, -3023], 'stec_quality_indicator': 216, 'sv_id': {'constellation': 84, 'sat_id': 202}}, {'stec_coeff': [-6492, 16952, -22404, -29893], 'stec_quality_indicator': 125, 'sv_id': {'constellation': 188, 'sat_id': 224}}, {'stec_coeff': [-10053, -24897, 23629, -710], 'stec_quality_indicator': 51, 'sv_id': {'constellation': 118, 'sat_id': 106}}, {'stec_coeff': [-26103, -9539, -11971, 20993], 'stec_quality_indicator': 165, 'sv_id': {'constellation': 150, 'sat_id': 132}}, {'stec_coeff': [-18891, -16272, -22578, -2915], 'stec_quality_indicator': 23, 'sv_id': {'constellation': 196, 'sat_id': 181}}, {'stec_coeff': [15833, 24920, -13879, -1206], 'stec_quality_indicator': 189, 'sv_id': {'constellation': 1, 'sat_id': 35}}, {'stec_coeff': [14008, 18996, 2798, 5761], 'stec_quality_indicator': 104, 'sv_id': {'constellation': 14, 'sat_id': 217}}, {'stec_coeff': [-25256, -15330, 6831, 8780], 'stec_quality_indicator': 109, 'sv_id': {'constellation': 226, 'sat_id': 178}}, {'stec_coeff': [3304, -2893, -25841, -13628], 'stec_quality_indicator': 154, 'sv_id': {'constellation': 220, 'sat_id': 116}}, {'stec_coeff': [-10742, 10098, 7413, 17645], 'stec_quality_indicator': 115, 'sv_id': {'constellation': 70, 'sat_id': 72}}] + + assert dictify(msg) == {'crc': 39816, 'length': 252, 'msg_type': 1515, 'payload': 'RlHE6Lkrk3snBH4Tb2H4gtnZajoMQearUV9WECdU5NDJUdtjyz22Qn3LA8EsZNx9PBVd2veez12Bhg7RMA7XmZSTSOG07M3JIQP2zBMDYgTCv/ZM2x+/cU+xD/shE2A2OpLSZPlIFaHTxhXub2sk4+HVA0fzP0HsXE0AqQ+2BfC0CXpW6AZnaP69UW4CMcpU2DcytQV7UDH04Lx9pOY4QnyoO4tqdjO72L+eTVw6/YSWpQmavdo90QFStcQXNbZwwM6nnfQjAb3ZPVhhyclK+9kOaLg2NEruCoEWsuJtWJ0exK8aTCJ03JroDLP0D5vEykhGcwrWcif1HO1E', 'preamble': 85, 'sender': 1831, 'header': {'time': {'tow': 3905179974, 'wn': 11193}, 'num_msgs': 147, 'seq_num': 123, 'update_interval': 39, 'iod_atmo': 4}, 'stec_sat_list': [{'sv_id': {'sat_id': 126, 'constellation': 19}, 'stec_quality_indicator': 111, 'stec_coeff': [-1951, -9854, 27353, 3130]}, {'sv_id': {'sat_id': 65, 'constellation': 230}, 'stec_quality_indicator': 171, 'stec_coeff': [24401, 4182, 21543, -12060]}, {'sv_id': {'sat_id': 201, 'constellation': 81}, 'stec_quality_indicator': 219, 'stec_coeff': [-13469, -18883, 32066, 971]}, {'sv_id': {'sat_id': 193, 'constellation': 44}, 'stec_quality_indicator': 100, 'stec_coeff': [32220, 5436, -9635, -24841]}, {'sv_id': {'sat_id': 207, 'constellation': 93}, 'stec_quality_indicator': 129, 'stec_coeff': [3718, 12497, -10482, -27495]}, {'sv_id': {'sat_id': 147, 'constellation': 72}, 'stec_quality_indicator': 225, 'stec_coeff': [-4940, -13875, 801, -13066]}, {'sv_id': {'sat_id': 19, 'constellation': 3}, 'stec_quality_indicator': 98, 'stec_coeff': [-15868, -2369, -9396, -16609]}, {'sv_id': {'sat_id': 113, 'constellation': 79}, 'stec_quality_indicator': 177, 'stec_coeff': [-1265, 4897, 13920, -28102]}, {'sv_id': {'sat_id': 210, 'constellation': 100}, 'stec_quality_indicator': 249, 'stec_coeff': [5448, -11359, 5574, 28654]}, {'sv_id': {'sat_id': 107, 'constellation': 36}, 'stec_quality_indicator': 227, 'stec_coeff': [-10783, 18179, 16371, -5055]}, {'sv_id': {'sat_id': 92, 'constellation': 77}, 'stec_quality_indicator': 0, 'stec_coeff': [4009, 1462, -19216, 31241]}, {'sv_id': {'sat_id': 86, 'constellation': 232}, 'stec_quality_indicator': 6, 'stec_coeff': [26727, -16898, 28241, 12546]}, {'sv_id': {'sat_id': 202, 'constellation': 84}, 'stec_quality_indicator': 216, 'stec_coeff': [12855, 1461, 20603, -3023]}, {'sv_id': {'sat_id': 224, 'constellation': 188}, 'stec_quality_indicator': 125, 'stec_coeff': [-6492, 16952, -22404, -29893]}, {'sv_id': {'sat_id': 106, 'constellation': 118}, 'stec_quality_indicator': 51, 'stec_coeff': [-10053, -24897, 23629, -710]}, {'sv_id': {'sat_id': 132, 'constellation': 150}, 'stec_quality_indicator': 165, 'stec_coeff': [-26103, -9539, -11971, 20993]}, {'sv_id': {'sat_id': 181, 'constellation': 196}, 'stec_quality_indicator': 23, 'stec_coeff': [-18891, -16272, -22578, -2915]}, {'sv_id': {'sat_id': 35, 'constellation': 1}, 'stec_quality_indicator': 189, 'stec_coeff': [15833, 24920, -13879, -1206]}, {'sv_id': {'sat_id': 217, 'constellation': 14}, 'stec_quality_indicator': 104, 'stec_coeff': [14008, 18996, 2798, 5761]}, {'sv_id': {'sat_id': 178, 'constellation': 226}, 'stec_quality_indicator': 109, 'stec_coeff': [-25256, -15330, 6831, 8780]}, {'sv_id': {'sat_id': 116, 'constellation': 220}, 'stec_quality_indicator': 154, 'stec_coeff': [3304, -2893, -25841, -13628]}, {'sv_id': {'sat_id': 72, 'constellation': 70}, 'stec_quality_indicator': 115, 'stec_coeff': [-10742, 10098, 7413, 17645]}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.py new file mode 100644 index 0000000000..43e5adf32a --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_ssr_MsgSsrTileDefinitionDepA.py @@ -0,0 +1,57 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/ssr/test_MsgSsrTileDefinitionDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_ssr_msg_ssr_tile_definition_dep_a_1(): + buf = base64.standard_b64decode("VfYFyIUYOb6y9wi5CbWi8EET/48Vv+/NqwAAAAAAQZo=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x9a41 + + assert msg.length == 24 + + assert msg.msg_type == 0x5f6 + + assert msg.payload == "Ob6y9wi5CbWi8EET/48Vv+/NqwAAAAAA" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x85c8 + + assert dictify(msg.bitmask) == 11259375 + + assert dictify(msg.cols) == 48917 + + assert dictify(msg.corner_nw_lat) == -18168 + + assert dictify(msg.corner_nw_lon) == -19191 + + assert dictify(msg.rows) == 36863 + + assert dictify(msg.spacing_lat) == 61602 + + assert dictify(msg.spacing_lon) == 4929 + + assert dictify(msg.tile_id) == 63410 + + assert dictify(msg.tile_set_id) == 48697 + + assert dictify(msg) == {'crc': 39489, 'length': 24, 'msg_type': 1526, 'payload': 'Ob6y9wi5CbWi8EET/48Vv+/NqwAAAAAA', 'preamble': 85, 'sender': 34248, 'tile_set_id': 48697, 'tile_id': 63410, 'corner_nw_lat': -18168, 'corner_nw_lon': -19191, 'spacing_lat': 61602, 'spacing_lon': 4929, 'rows': 36863, 'cols': 48917, 'bitmask': 11259375} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetry.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetry.py new file mode 100644 index 0000000000..6530ef2196 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetry.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgCsacTelemetry.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_system_msg_csac_telemetry_1(): + buf = base64.standard_b64decode("VQT/9KkKaXNvbWUgZGF0YeVe") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x5ee5 + + assert msg.length == 10 + + assert msg.msg_type == 0xff04 + + assert msg.payload == "aXNvbWUgZGF0YQ==" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xa9f4 + + assert dictify(msg.id) == 105 + + assert dictify(msg.telemetry) == "some data" + + assert dictify(msg) == {'preamble': 85, 'msg_type': 65284, 'sender': 43508, 'length': 10, 'payload': 'aXNvbWUgZGF0YQ==', 'crc': 24293, 'id': 105, 'telemetry': 'some data'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetryLabels.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetryLabels.py new file mode 100644 index 0000000000..13fd58b2e6 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgCsacTelemetryLabels.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgCsacTelemetryLabels.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_system_msg_csac_telemetry_labels_1(): + buf = base64.standard_b64decode("VQX/W8gMunNvbWUgbGFiZWxzVuw=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xec56 + + assert msg.length == 12 + + assert msg.msg_type == 0xff05 + + assert msg.payload == "unNvbWUgbGFiZWxz" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xc85b + + assert dictify(msg.id) == 186 + + assert dictify(msg.telemetry_labels) == "some labels" + + assert dictify(msg) == {'preamble': 85, 'msg_type': 65285, 'sender': 51291, 'length': 12, 'payload': 'unNvbWUgbGFiZWxz', 'crc': 60502, 'id': 186, 'telemetry_labels': 'some labels'} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgGnssTimeOffset.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgGnssTimeOffset.py new file mode 100644 index 0000000000..c9e41dd819 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgGnssTimeOffset.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgGnssTimeOffset.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_system_msg_gnss_time_offset_1(): + buf = base64.standard_b64decode("VQf/Fg8JCTpSUwlnFiXdVGQ=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x6454 + + assert msg.length == 9 + + assert msg.msg_type == 0xff07 + + assert msg.payload == "CTpSUwlnFiXd" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x0f16 + + assert dictify(msg.flags) == 221 + + assert dictify(msg.microseconds) == 9494 + + assert dictify(msg.milliseconds) == 1728664402 + + assert dictify(msg.weeks) == 14857 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 65287, 'sender': 3862, 'length': 9, 'payload': 'CTpSUwlnFiXd', 'crc': 25684, 'weeks': 14857, 'milliseconds': 1728664402, 'microseconds': 9494, 'flags': 221} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgPpsTime.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgPpsTime.py new file mode 100644 index 0000000000..a72163c37e --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgPpsTime.py @@ -0,0 +1,43 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgPpsTime.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_system_msg_pps_time_1(): + buf = base64.standard_b64decode("VQj/3tEJjJKFxaAAAAD/fZU=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x957d + + assert msg.length == 9 + + assert msg.msg_type == 0xff08 + + assert msg.payload == "jJKFxaAAAAD/" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xd1de + + assert dictify(msg.flags) == 255 + + assert dictify(msg.time) == 690508632716 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 65288, 'sender': 53726, 'length': 9, 'payload': 'jJKFxaAAAAD/', 'crc': 38269, 'time': 690508632716, 'flags': 255} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgStatusReport.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgStatusReport.py new file mode 100644 index 0000000000..2618f25f25 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_system_MsgStatusReport.py @@ -0,0 +1,49 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/system/test_MsgStatusReport.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_system_msg_status_report_1(): + buf = base64.standard_b64decode("Vf7/BlT8Uv2xXwM8j1rpFdBi98vdxpzP2e6iiJoLcuyG6wyFCR6vkRpy1xSS+TY2hcFqutK3AIEF+OGVh38CGlhcCmdJA2dETLghzsKjex6XsJWsuOd25sioZG0K6QQ891LXphyKbi1i2vSzfmtcfF6dKrt8BmH3oLxueP7WbjPwpJMSSrJDBBtJvkCzkn2ZwC7KQvguKKGt8tYDCwF2RqI9shucKL9x5shICNf1Tjve+nMgIR7TqpFcnUsYqQY3PghrUowxs3paRxxYZzOxSF0nlAvKKiJczGYdYvlbhl8X+MAUU8NftDYkuktAFJ2FDJUcDrmBZe9K+PUe5FiO1DXgnqY=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xa69e + + assert msg.length == 252 + + assert msg.msg_type == 0xfffe + + assert msg.payload == "Uv2xXwM8j1rpFdBi98vdxpzP2e6iiJoLcuyG6wyFCR6vkRpy1xSS+TY2hcFqutK3AIEF+OGVh38CGlhcCmdJA2dETLghzsKjex6XsJWsuOd25sioZG0K6QQ891LXphyKbi1i2vSzfmtcfF6dKrt8BmH3oLxueP7WbjPwpJMSSrJDBBtJvkCzkn2ZwC7KQvguKKGt8tYDCwF2RqI9shucKL9x5shICNf1Tjve+nMgIR7TqpFcnUsYqQY3PghrUowxs3paRxxYZzOxSF0nlAvKKiJczGYdYvlbhl8X+MAUU8NftDYkuktAFJ2FDJUcDrmBZe9K+PUe5FiO1DXg" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x5406 + + assert dictify(msg.reporting_system) == 64850 + + assert dictify(msg.sbp_version) == 24497 + + assert dictify(msg.sequence) == 1519336451 + + assert dictify(msg.status) == [{'component': 52215, 'generic': 221, 'specific': 198}, {'component': 53148, 'generic': 217, 'specific': 238}, {'component': 34978, 'generic': 154, 'specific': 11}, {'component': 60530, 'generic': 134, 'specific': 235}, {'component': 34060, 'generic': 9, 'specific': 30}, {'component': 37295, 'generic': 26, 'specific': 114}, {'component': 5335, 'generic': 146, 'specific': 249}, {'component': 13878, 'generic': 133, 'specific': 193}, {'component': 47722, 'generic': 210, 'specific': 183}, {'component': 33024, 'generic': 5, 'specific': 248}, {'component': 38369, 'generic': 135, 'specific': 127}, {'component': 6658, 'generic': 88, 'specific': 92}, {'component': 26378, 'generic': 73, 'specific': 3}, {'component': 17511, 'generic': 76, 'specific': 184}, {'component': 52769, 'generic': 194, 'specific': 163}, {'component': 7803, 'generic': 151, 'specific': 176}, {'component': 44181, 'generic': 184, 'specific': 231}, {'component': 58998, 'generic': 200, 'specific': 168}, {'component': 28004, 'generic': 10, 'specific': 233}, {'component': 15364, 'generic': 247, 'specific': 82}, {'component': 42711, 'generic': 28, 'specific': 138}, {'component': 11630, 'generic': 98, 'specific': 218}, {'component': 46068, 'generic': 126, 'specific': 107}, {'component': 31836, 'generic': 94, 'specific': 157}, {'component': 47914, 'generic': 124, 'specific': 6}, {'component': 63329, 'generic': 160, 'specific': 188}, {'component': 30830, 'generic': 254, 'specific': 214}, {'component': 13166, 'generic': 240, 'specific': 164}, {'component': 4755, 'generic': 74, 'specific': 178}, {'component': 1091, 'generic': 27, 'specific': 73}, {'component': 16574, 'generic': 179, 'specific': 146}, {'component': 39293, 'generic': 192, 'specific': 46}, {'component': 17098, 'generic': 248, 'specific': 46}, {'component': 41256, 'generic': 173, 'specific': 242}, {'component': 982, 'generic': 11, 'specific': 1}, {'component': 18038, 'generic': 162, 'specific': 61}, {'component': 7090, 'generic': 156, 'specific': 40}, {'component': 29119, 'generic': 230, 'specific': 200}, {'component': 2120, 'generic': 215, 'specific': 245}, {'component': 15182, 'generic': 222, 'specific': 250}, {'component': 8307, 'generic': 33, 'specific': 30}, {'component': 43731, 'generic': 145, 'specific': 92}, {'component': 19357, 'generic': 24, 'specific': 169}, {'component': 14086, 'generic': 62, 'specific': 8}, {'component': 21099, 'generic': 140, 'specific': 49}, {'component': 31411, 'generic': 90, 'specific': 71}, {'component': 22556, 'generic': 103, 'specific': 51}, {'component': 18609, 'generic': 93, 'specific': 39}, {'component': 2964, 'generic': 202, 'specific': 42}, {'component': 23586, 'generic': 204, 'specific': 102}, {'component': 25117, 'generic': 249, 'specific': 91}, {'component': 24454, 'generic': 23, 'specific': 248}, {'component': 5312, 'generic': 83, 'specific': 195}, {'component': 46175, 'generic': 54, 'specific': 36}, {'component': 19386, 'generic': 64, 'specific': 20}, {'component': 34205, 'generic': 12, 'specific': 149}, {'component': 3612, 'generic': 185, 'specific': 129}, {'component': 61285, 'generic': 74, 'specific': 248}, {'component': 7925, 'generic': 228, 'specific': 88}, {'component': 54414, 'generic': 53, 'specific': 224}] + + assert dictify(msg.uptime) == 1657804265 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 65534, 'sender': 21510, 'length': 252, 'payload': 'Uv2xXwM8j1rpFdBi98vdxpzP2e6iiJoLcuyG6wyFCR6vkRpy1xSS+TY2hcFqutK3AIEF+OGVh38CGlhcCmdJA2dETLghzsKjex6XsJWsuOd25sioZG0K6QQ891LXphyKbi1i2vSzfmtcfF6dKrt8BmH3oLxueP7WbjPwpJMSSrJDBBtJvkCzkn2ZwC7KQvguKKGt8tYDCwF2RqI9shucKL9x5shICNf1Tjve+nMgIR7TqpFcnUsYqQY3PghrUowxs3paRxxYZzOxSF0nlAvKKiJczGYdYvlbhl8X+MAUU8NftDYkuktAFJ2FDJUcDrmBZe9K+PUe5FiO1DXg', 'crc': 42654, 'reporting_system': 64850, 'sbp_version': 24497, 'sequence': 1519336451, 'uptime': 1657804265, 'status': [{'component': 52215, 'generic': 221, 'specific': 198}, {'component': 53148, 'generic': 217, 'specific': 238}, {'component': 34978, 'generic': 154, 'specific': 11}, {'component': 60530, 'generic': 134, 'specific': 235}, {'component': 34060, 'generic': 9, 'specific': 30}, {'component': 37295, 'generic': 26, 'specific': 114}, {'component': 5335, 'generic': 146, 'specific': 249}, {'component': 13878, 'generic': 133, 'specific': 193}, {'component': 47722, 'generic': 210, 'specific': 183}, {'component': 33024, 'generic': 5, 'specific': 248}, {'component': 38369, 'generic': 135, 'specific': 127}, {'component': 6658, 'generic': 88, 'specific': 92}, {'component': 26378, 'generic': 73, 'specific': 3}, {'component': 17511, 'generic': 76, 'specific': 184}, {'component': 52769, 'generic': 194, 'specific': 163}, {'component': 7803, 'generic': 151, 'specific': 176}, {'component': 44181, 'generic': 184, 'specific': 231}, {'component': 58998, 'generic': 200, 'specific': 168}, {'component': 28004, 'generic': 10, 'specific': 233}, {'component': 15364, 'generic': 247, 'specific': 82}, {'component': 42711, 'generic': 28, 'specific': 138}, {'component': 11630, 'generic': 98, 'specific': 218}, {'component': 46068, 'generic': 126, 'specific': 107}, {'component': 31836, 'generic': 94, 'specific': 157}, {'component': 47914, 'generic': 124, 'specific': 6}, {'component': 63329, 'generic': 160, 'specific': 188}, {'component': 30830, 'generic': 254, 'specific': 214}, {'component': 13166, 'generic': 240, 'specific': 164}, {'component': 4755, 'generic': 74, 'specific': 178}, {'component': 1091, 'generic': 27, 'specific': 73}, {'component': 16574, 'generic': 179, 'specific': 146}, {'component': 39293, 'generic': 192, 'specific': 46}, {'component': 17098, 'generic': 248, 'specific': 46}, {'component': 41256, 'generic': 173, 'specific': 242}, {'component': 982, 'generic': 11, 'specific': 1}, {'component': 18038, 'generic': 162, 'specific': 61}, {'component': 7090, 'generic': 156, 'specific': 40}, {'component': 29119, 'generic': 230, 'specific': 200}, {'component': 2120, 'generic': 215, 'specific': 245}, {'component': 15182, 'generic': 222, 'specific': 250}, {'component': 8307, 'generic': 33, 'specific': 30}, {'component': 43731, 'generic': 145, 'specific': 92}, {'component': 19357, 'generic': 24, 'specific': 169}, {'component': 14086, 'generic': 62, 'specific': 8}, {'component': 21099, 'generic': 140, 'specific': 49}, {'component': 31411, 'generic': 90, 'specific': 71}, {'component': 22556, 'generic': 103, 'specific': 51}, {'component': 18609, 'generic': 93, 'specific': 39}, {'component': 2964, 'generic': 202, 'specific': 42}, {'component': 23586, 'generic': 204, 'specific': 102}, {'component': 25117, 'generic': 249, 'specific': 91}, {'component': 24454, 'generic': 23, 'specific': 248}, {'component': 5312, 'generic': 83, 'specific': 195}, {'component': 46175, 'generic': 54, 'specific': 36}, {'component': 19386, 'generic': 64, 'specific': 20}, {'component': 34205, 'generic': 12, 'specific': 149}, {'component': 3612, 'generic': 185, 'specific': 129}, {'component': 61285, 'generic': 74, 'specific': 248}, {'component': 7925, 'generic': 228, 'specific': 88}, {'component': 54414, 'generic': 53, 'specific': 224}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIq.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIq.py new file mode 100644 index 0000000000..7e25b225aa --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIq.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingIq.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_tracking_msg_tracking_iq_1(): + buf = base64.standard_b64decode("VS0AAlAPkXnLL9nvNy0mvVifE9AMYac=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xa761 + + assert msg.length == 15 + + assert msg.msg_type == 0x2d + + assert msg.payload == "kXnLL9nvNy0mvVifE9AM" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x5002 + + assert dictify(msg.channel) == 145 + + assert dictify(msg.corrs) == [{'i': -9937, 'q': 14319}, {'i': 9773, 'q': 22717}, {'i': 5023, 'q': 3280}] + + assert dictify(msg.sid) == {'code': 203, 'sat': 121} + + assert dictify(msg) == {'crc': 42849, 'length': 15, 'msg_type': 45, 'payload': 'kXnLL9nvNy0mvVifE9AM', 'preamble': 85, 'sender': 20482, 'channel': 145, 'sid': {'sat': 121, 'code': 203}, 'corrs': [{'i': -9937, 'q': 14319}, {'i': 9773, 'q': 22717}, {'i': 5023, 'q': 3280}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepA.py new file mode 100644 index 0000000000..ec8eb049e3 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepA.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingIqDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_tracking_msg_tracking_iq_dep_a_1(): + buf = base64.standard_b64decode("VRwAuEMdixz6DwBjWqpgR3khoTTTomUpJOJjR0sO8IZSr1MRIg==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x2211 + + assert msg.length == 29 + + assert msg.msg_type == 0x1c + + assert msg.payload == "ixz6DwBjWqpgR3khoTTTomUpJOJjR0sO8IZSr1M=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x43b8 + + assert dictify(msg.channel) == 139 + + assert dictify(msg.corrs) == [{'i': 1621776995, 'q': -1591641785}, {'i': 1705169716, 'q': 1675764777}, {'i': -267498681, 'q': 1403998854}] + + assert dictify(msg.sid) == {'code': 15, 'reserved': 0, 'sat': 64028} + + assert dictify(msg) == {'crc': 8721, 'length': 29, 'msg_type': 28, 'payload': 'ixz6DwBjWqpgR3khoTTTomUpJOJjR0sO8IZSr1M=', 'preamble': 85, 'sender': 17336, 'channel': 139, 'sid': {'sat': 64028, 'code': 15, 'reserved': 0}, 'corrs': [{'i': 1621776995, 'q': -1591641785}, {'i': 1705169716, 'q': 1675764777}, {'i': -267498681, 'q': 1403998854}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepB.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepB.py new file mode 100644 index 0000000000..c488f21b0c --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingIqDepB.py @@ -0,0 +1,45 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingIqDepB.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_tracking_msg_tracking_iq_dep_b_1(): + buf = base64.standard_b64decode("VSwAJ2UbLby3SLmdD7v5ZRiHkrTge+uO0GZwGRWxYHRE9pk=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x99f6 + + assert msg.length == 27 + + assert msg.msg_type == 0x2c + + assert msg.payload == "Lby3SLmdD7v5ZRiHkrTge+uO0GZwGRWxYHRE" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x6527 + + assert dictify(msg.channel) == 45 + + assert dictify(msg.corrs) == [{'i': 261994824, 'q': 409336251}, {'i': -525036921, 'q': -795939973}, {'i': 353988710, 'q': 1148477617}] + + assert dictify(msg.sid) == {'code': 183, 'sat': 188} + + assert dictify(msg) == {'crc': 39414, 'length': 27, 'msg_type': 44, 'payload': 'Lby3SLmdD7v5ZRiHkrTge+uO0GZwGRWxYHRE', 'preamble': 85, 'sender': 25895, 'channel': 45, 'sid': {'sat': 188, 'code': 183}, 'corrs': [{'i': 261994824, 'q': 409336251}, {'i': -525036921, 'q': -795939973}, {'i': 353988710, 'q': 1148477617}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingState.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingState.py index 2f6edf4e04..940b2e4215 100644 --- a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingState.py +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingState.py @@ -19,6 +19,28 @@ import base64 def test_auto_check_sbp_tracking_msg_tracking_state_1(): + buf = base64.standard_b64decode("VUEAN4H8dbgDZiZqjI0ZBFrD9mxLUol/LaMgLrtdmTzJkxcdBdC1HttF/ogDeSFikNeFtg44qU3aPvJUq/mYiYOCwRUqRP3j2OMYGtKzEw/j/3pLu8jZMNp6u+6Ole43+9SAoMJocf+NPitF9Sdk5mw490SVj4ll6UYxpSZu2uZQ1cSzi4APssSrCNRhwlPpT2M3Wh+0BRlpuhbgUG8IMGqmBDCcMVYTjpJbfHNAHOZzsr6DEPJpO7ZxwLQws6YfrNNN5IwxgE3wwobCKToSNYE3W0iGXCHgnTi6NuCuUlSUvuw2PkM01zn+EIUkrtuskRHAs29hzzjQhrQRK+L/toxxjW8=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x6f8d + + assert msg.length == 252 + + assert msg.msg_type == 0x41 + + assert msg.payload == "dbgDZiZqjI0ZBFrD9mxLUol/LaMgLrtdmTzJkxcdBdC1HttF/ogDeSFikNeFtg44qU3aPvJUq/mYiYOCwRUqRP3j2OMYGtKzEw/j/3pLu8jZMNp6u+6Ole43+9SAoMJocf+NPitF9Sdk5mw490SVj4ll6UYxpSZu2uZQ1cSzi4APssSrCNRhwlPpT2M3Wh+0BRlpuhbgUG8IMGqmBDCcMVYTjpJbfHNAHOZzsr6DEPJpO7ZxwLQws6YfrNNN5IwxgE3wwobCKToSNYE3W0iGXCHgnTi6NuCuUlSUvuw2PkM01zn+EIUkrtuskRHAs29hzzjQhrQRK+L/toxx" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x8137 + + assert dictify(msg.states) == [{'cn0': 102, 'fcn': 3, 'sid': {'code': 184, 'sat': 117}}, {'cn0': 141, 'fcn': 140, 'sid': {'code': 106, 'sat': 38}}, {'cn0': 195, 'fcn': 90, 'sid': {'code': 4, 'sat': 25}}, {'cn0': 82, 'fcn': 75, 'sid': {'code': 108, 'sat': 246}}, {'cn0': 163, 'fcn': 45, 'sid': {'code': 127, 'sat': 137}}, {'cn0': 93, 'fcn': 187, 'sid': {'code': 46, 'sat': 32}}, {'cn0': 147, 'fcn': 201, 'sid': {'code': 60, 'sat': 153}}, {'cn0': 208, 'fcn': 5, 'sid': {'code': 29, 'sat': 23}}, {'cn0': 69, 'fcn': 219, 'sid': {'code': 30, 'sat': 181}}, {'cn0': 121, 'fcn': 3, 'sid': {'code': 136, 'sat': 254}}, {'cn0': 215, 'fcn': 144, 'sid': {'code': 98, 'sat': 33}}, {'cn0': 56, 'fcn': 14, 'sid': {'code': 182, 'sat': 133}}, {'cn0': 62, 'fcn': 218, 'sid': {'code': 77, 'sat': 169}}, {'cn0': 249, 'fcn': 171, 'sid': {'code': 84, 'sat': 242}}, {'cn0': 130, 'fcn': 131, 'sid': {'code': 137, 'sat': 152}}, {'cn0': 68, 'fcn': 42, 'sid': {'code': 21, 'sat': 193}}, {'cn0': 227, 'fcn': 216, 'sid': {'code': 227, 'sat': 253}}, {'cn0': 179, 'fcn': 210, 'sid': {'code': 26, 'sat': 24}}, {'cn0': 255, 'fcn': 227, 'sid': {'code': 15, 'sat': 19}}, {'cn0': 200, 'fcn': 187, 'sid': {'code': 75, 'sat': 122}}, {'cn0': 122, 'fcn': 218, 'sid': {'code': 48, 'sat': 217}}, {'cn0': 149, 'fcn': 142, 'sid': {'code': 238, 'sat': 187}}, {'cn0': 212, 'fcn': 251, 'sid': {'code': 55, 'sat': 238}}, {'cn0': 104, 'fcn': 194, 'sid': {'code': 160, 'sat': 128}}, {'cn0': 62, 'fcn': 141, 'sid': {'code': 255, 'sat': 113}}, {'cn0': 39, 'fcn': 245, 'sid': {'code': 69, 'sat': 43}}, {'cn0': 56, 'fcn': 108, 'sid': {'code': 230, 'sat': 100}}, {'cn0': 143, 'fcn': 149, 'sid': {'code': 68, 'sat': 247}}, {'cn0': 70, 'fcn': 233, 'sid': {'code': 101, 'sat': 137}}, {'cn0': 110, 'fcn': 38, 'sid': {'code': 165, 'sat': 49}}, {'cn0': 213, 'fcn': 80, 'sid': {'code': 230, 'sat': 218}}, {'cn0': 128, 'fcn': 139, 'sid': {'code': 179, 'sat': 196}}, {'cn0': 171, 'fcn': 196, 'sid': {'code': 178, 'sat': 15}}, {'cn0': 194, 'fcn': 97, 'sid': {'code': 212, 'sat': 8}}, {'cn0': 99, 'fcn': 79, 'sid': {'code': 233, 'sat': 83}}, {'cn0': 180, 'fcn': 31, 'sid': {'code': 90, 'sat': 55}}, {'cn0': 186, 'fcn': 105, 'sid': {'code': 25, 'sat': 5}}, {'cn0': 111, 'fcn': 80, 'sid': {'code': 224, 'sat': 22}}, {'cn0': 166, 'fcn': 106, 'sid': {'code': 48, 'sat': 8}}, {'cn0': 49, 'fcn': 156, 'sid': {'code': 48, 'sat': 4}}, {'cn0': 146, 'fcn': 142, 'sid': {'code': 19, 'sat': 86}}, {'cn0': 64, 'fcn': 115, 'sid': {'code': 124, 'sat': 91}}, {'cn0': 178, 'fcn': 115, 'sid': {'code': 230, 'sat': 28}}, {'cn0': 242, 'fcn': 16, 'sid': {'code': 131, 'sat': 190}}, {'cn0': 113, 'fcn': 182, 'sid': {'code': 59, 'sat': 105}}, {'cn0': 179, 'fcn': 48, 'sid': {'code': 180, 'sat': 192}}, {'cn0': 211, 'fcn': 172, 'sid': {'code': 31, 'sat': 166}}, {'cn0': 49, 'fcn': 140, 'sid': {'code': 228, 'sat': 77}}, {'cn0': 194, 'fcn': 240, 'sid': {'code': 77, 'sat': 128}}, {'cn0': 58, 'fcn': 41, 'sid': {'code': 194, 'sat': 134}}, {'cn0': 55, 'fcn': 129, 'sid': {'code': 53, 'sat': 18}}, {'cn0': 92, 'fcn': 134, 'sid': {'code': 72, 'sat': 91}}, {'cn0': 56, 'fcn': 157, 'sid': {'code': 224, 'sat': 33}}, {'cn0': 174, 'fcn': 224, 'sid': {'code': 54, 'sat': 186}}, {'cn0': 190, 'fcn': 148, 'sid': {'code': 84, 'sat': 82}}, {'cn0': 67, 'fcn': 62, 'sid': {'code': 54, 'sat': 236}}, {'cn0': 254, 'fcn': 57, 'sid': {'code': 215, 'sat': 52}}, {'cn0': 174, 'fcn': 36, 'sid': {'code': 133, 'sat': 16}}, {'cn0': 17, 'fcn': 145, 'sid': {'code': 172, 'sat': 219}}, {'cn0': 97, 'fcn': 111, 'sid': {'code': 179, 'sat': 192}}, {'cn0': 134, 'fcn': 208, 'sid': {'code': 56, 'sat': 207}}, {'cn0': 226, 'fcn': 43, 'sid': {'code': 17, 'sat': 180}}, {'cn0': 113, 'fcn': 140, 'sid': {'code': 182, 'sat': 255}}] + + assert dictify(msg) == {'crc': 28557, 'length': 252, 'msg_type': 65, 'payload': 'dbgDZiZqjI0ZBFrD9mxLUol/LaMgLrtdmTzJkxcdBdC1HttF/ogDeSFikNeFtg44qU3aPvJUq/mYiYOCwRUqRP3j2OMYGtKzEw/j/3pLu8jZMNp6u+6Ole43+9SAoMJocf+NPitF9Sdk5mw490SVj4ll6UYxpSZu2uZQ1cSzi4APssSrCNRhwlPpT2M3Wh+0BRlpuhbgUG8IMGqmBDCcMVYTjpJbfHNAHOZzsr6DEPJpO7ZxwLQws6YfrNNN5IwxgE3wwobCKToSNYE3W0iGXCHgnTi6NuCuUlSUvuw2PkM01zn+EIUkrtuskRHAs29hzzjQhrQRK+L/toxx', 'preamble': 85, 'sender': 33079, 'states': [{'sid': {'sat': 117, 'code': 184}, 'fcn': 3, 'cn0': 102}, {'sid': {'sat': 38, 'code': 106}, 'fcn': 140, 'cn0': 141}, {'sid': {'sat': 25, 'code': 4}, 'fcn': 90, 'cn0': 195}, {'sid': {'sat': 246, 'code': 108}, 'fcn': 75, 'cn0': 82}, {'sid': {'sat': 137, 'code': 127}, 'fcn': 45, 'cn0': 163}, {'sid': {'sat': 32, 'code': 46}, 'fcn': 187, 'cn0': 93}, {'sid': {'sat': 153, 'code': 60}, 'fcn': 201, 'cn0': 147}, {'sid': {'sat': 23, 'code': 29}, 'fcn': 5, 'cn0': 208}, {'sid': {'sat': 181, 'code': 30}, 'fcn': 219, 'cn0': 69}, {'sid': {'sat': 254, 'code': 136}, 'fcn': 3, 'cn0': 121}, {'sid': {'sat': 33, 'code': 98}, 'fcn': 144, 'cn0': 215}, {'sid': {'sat': 133, 'code': 182}, 'fcn': 14, 'cn0': 56}, {'sid': {'sat': 169, 'code': 77}, 'fcn': 218, 'cn0': 62}, {'sid': {'sat': 242, 'code': 84}, 'fcn': 171, 'cn0': 249}, {'sid': {'sat': 152, 'code': 137}, 'fcn': 131, 'cn0': 130}, {'sid': {'sat': 193, 'code': 21}, 'fcn': 42, 'cn0': 68}, {'sid': {'sat': 253, 'code': 227}, 'fcn': 216, 'cn0': 227}, {'sid': {'sat': 24, 'code': 26}, 'fcn': 210, 'cn0': 179}, {'sid': {'sat': 19, 'code': 15}, 'fcn': 227, 'cn0': 255}, {'sid': {'sat': 122, 'code': 75}, 'fcn': 187, 'cn0': 200}, {'sid': {'sat': 217, 'code': 48}, 'fcn': 218, 'cn0': 122}, {'sid': {'sat': 187, 'code': 238}, 'fcn': 142, 'cn0': 149}, {'sid': {'sat': 238, 'code': 55}, 'fcn': 251, 'cn0': 212}, {'sid': {'sat': 128, 'code': 160}, 'fcn': 194, 'cn0': 104}, {'sid': {'sat': 113, 'code': 255}, 'fcn': 141, 'cn0': 62}, {'sid': {'sat': 43, 'code': 69}, 'fcn': 245, 'cn0': 39}, {'sid': {'sat': 100, 'code': 230}, 'fcn': 108, 'cn0': 56}, {'sid': {'sat': 247, 'code': 68}, 'fcn': 149, 'cn0': 143}, {'sid': {'sat': 137, 'code': 101}, 'fcn': 233, 'cn0': 70}, {'sid': {'sat': 49, 'code': 165}, 'fcn': 38, 'cn0': 110}, {'sid': {'sat': 218, 'code': 230}, 'fcn': 80, 'cn0': 213}, {'sid': {'sat': 196, 'code': 179}, 'fcn': 139, 'cn0': 128}, {'sid': {'sat': 15, 'code': 178}, 'fcn': 196, 'cn0': 171}, {'sid': {'sat': 8, 'code': 212}, 'fcn': 97, 'cn0': 194}, {'sid': {'sat': 83, 'code': 233}, 'fcn': 79, 'cn0': 99}, {'sid': {'sat': 55, 'code': 90}, 'fcn': 31, 'cn0': 180}, {'sid': {'sat': 5, 'code': 25}, 'fcn': 105, 'cn0': 186}, {'sid': {'sat': 22, 'code': 224}, 'fcn': 80, 'cn0': 111}, {'sid': {'sat': 8, 'code': 48}, 'fcn': 106, 'cn0': 166}, {'sid': {'sat': 4, 'code': 48}, 'fcn': 156, 'cn0': 49}, {'sid': {'sat': 86, 'code': 19}, 'fcn': 142, 'cn0': 146}, {'sid': {'sat': 91, 'code': 124}, 'fcn': 115, 'cn0': 64}, {'sid': {'sat': 28, 'code': 230}, 'fcn': 115, 'cn0': 178}, {'sid': {'sat': 190, 'code': 131}, 'fcn': 16, 'cn0': 242}, {'sid': {'sat': 105, 'code': 59}, 'fcn': 182, 'cn0': 113}, {'sid': {'sat': 192, 'code': 180}, 'fcn': 48, 'cn0': 179}, {'sid': {'sat': 166, 'code': 31}, 'fcn': 172, 'cn0': 211}, {'sid': {'sat': 77, 'code': 228}, 'fcn': 140, 'cn0': 49}, {'sid': {'sat': 128, 'code': 77}, 'fcn': 240, 'cn0': 194}, {'sid': {'sat': 134, 'code': 194}, 'fcn': 41, 'cn0': 58}, {'sid': {'sat': 18, 'code': 53}, 'fcn': 129, 'cn0': 55}, {'sid': {'sat': 91, 'code': 72}, 'fcn': 134, 'cn0': 92}, {'sid': {'sat': 33, 'code': 224}, 'fcn': 157, 'cn0': 56}, {'sid': {'sat': 186, 'code': 54}, 'fcn': 224, 'cn0': 174}, {'sid': {'sat': 82, 'code': 84}, 'fcn': 148, 'cn0': 190}, {'sid': {'sat': 236, 'code': 54}, 'fcn': 62, 'cn0': 67}, {'sid': {'sat': 52, 'code': 215}, 'fcn': 57, 'cn0': 254}, {'sid': {'sat': 16, 'code': 133}, 'fcn': 36, 'cn0': 174}, {'sid': {'sat': 219, 'code': 172}, 'fcn': 145, 'cn0': 17}, {'sid': {'sat': 192, 'code': 179}, 'fcn': 111, 'cn0': 97}, {'sid': {'sat': 207, 'code': 56}, 'fcn': 208, 'cn0': 134}, {'sid': {'sat': 180, 'code': 17}, 'fcn': 43, 'cn0': 226}, {'sid': {'sat': 255, 'code': 182}, 'fcn': 140, 'cn0': 113}]} + +def test_auto_check_sbp_tracking_msg_tracking_state_2(): buf = base64.standard_b64decode("VRMA9tdjAcoAAADF/RxCAcsAAADnYxBCAdAAAADUgRZCAdQAAAA6FRxCAdkAAACyIShCAdoAAADrvRVCAdwAAAAdsRlCAd4AAAArqRtCAeEAAACJfSpCAAAAAAAAAIC/AAAAAAAAAIC/3mE=") stream = KaitaiStream(io.BytesIO(buf)) @@ -40,7 +62,7 @@ def test_auto_check_sbp_tracking_msg_tracking_state_1(): assert dictify(msg) == {'sender': 55286, 'msg_type': 19, 'states': [{'state': 1, 'cn0': 39.24782180786133, 'sid': {'code': 0, 'reserved': 0, 'sat': 202}}, {'state': 1, 'cn0': 36.09756088256836, 'sid': {'code': 0, 'reserved': 0, 'sat': 203}}, {'state': 1, 'cn0': 37.62678527832031, 'sid': {'code': 0, 'reserved': 0, 'sat': 208}}, {'state': 1, 'cn0': 39.020729064941406, 'sid': {'code': 0, 'reserved': 0, 'sat': 212}}, {'state': 1, 'cn0': 42.03290557861328, 'sid': {'code': 0, 'reserved': 0, 'sat': 217}}, {'state': 1, 'cn0': 37.43546676635742, 'sid': {'code': 0, 'reserved': 0, 'sat': 218}}, {'state': 1, 'cn0': 38.4229621887207, 'sid': {'code': 0, 'reserved': 0, 'sat': 220}}, {'state': 1, 'cn0': 38.91520309448242, 'sid': {'code': 0, 'reserved': 0, 'sat': 222}}, {'state': 1, 'cn0': 42.62259292602539, 'sid': {'code': 0, 'reserved': 0, 'sat': 225}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}], 'crc': 25054, 'length': 99, 'preamble': 85, 'payload': 'AcoAAADF/RxCAcsAAADnYxBCAdAAAADUgRZCAdQAAAA6FRxCAdkAAACyIShCAdoAAADrvRVCAdwAAAAdsRlCAd4AAAArqRtCAeEAAACJfSpCAAAAAAAAAIC/AAAAAAAAAIC/'} -def test_auto_check_sbp_tracking_msg_tracking_state_2(): +def test_auto_check_sbp_tracking_msg_tracking_state_3(): buf = base64.standard_b64decode("VRMA9tdjAcoAAAD6+RtCAcsAAAAojwtCAdAAAAC+yBVCAdQAAAD76RpCAdkAAADR7idCAdoAAACi2xVCAdwAAACixRlCAd4AAAAOIxxCAeEAAAAJmStCAAAAAAAAAIC/AAAAAAAAAIC/FB8=") stream = KaitaiStream(io.BytesIO(buf)) @@ -62,7 +84,7 @@ def test_auto_check_sbp_tracking_msg_tracking_state_2(): assert dictify(msg) == {'sender': 55286, 'msg_type': 19, 'states': [{'state': 1, 'cn0': 38.994117736816406, 'sid': {'code': 0, 'reserved': 0, 'sat': 202}}, {'state': 1, 'cn0': 34.889801025390625, 'sid': {'code': 0, 'reserved': 0, 'sat': 203}}, {'state': 1, 'cn0': 37.44603729248047, 'sid': {'code': 0, 'reserved': 0, 'sat': 208}}, {'state': 1, 'cn0': 38.72849655151367, 'sid': {'code': 0, 'reserved': 0, 'sat': 212}}, {'state': 1, 'cn0': 41.983219146728516, 'sid': {'code': 0, 'reserved': 0, 'sat': 217}}, {'state': 1, 'cn0': 37.46448516845703, 'sid': {'code': 0, 'reserved': 0, 'sat': 218}}, {'state': 1, 'cn0': 38.44300079345703, 'sid': {'code': 0, 'reserved': 0, 'sat': 220}}, {'state': 1, 'cn0': 39.03423309326172, 'sid': {'code': 0, 'reserved': 0, 'sat': 222}}, {'state': 1, 'cn0': 42.89944839477539, 'sid': {'code': 0, 'reserved': 0, 'sat': 225}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}], 'crc': 7956, 'length': 99, 'preamble': 85, 'payload': 'AcoAAAD6+RtCAcsAAAAojwtCAdAAAAC+yBVCAdQAAAD76RpCAdkAAADR7idCAdoAAACi2xVCAdwAAACixRlCAd4AAAAOIxxCAeEAAAAJmStCAAAAAAAAAIC/AAAAAAAAAIC/'} -def test_auto_check_sbp_tracking_msg_tracking_state_3(): +def test_auto_check_sbp_tracking_msg_tracking_state_4(): buf = base64.standard_b64decode("VRMA9tdjAcoAAAB70RtCAcsAAADWQA9CAdAAAAA4NxZCAdQAAABbjhtCAdkAAAD9milCAdoAAACAjhZCAdwAAAARrhdCAd4AAACbAh1CAeEAAACiZCpCAAAAAAAAAIC/AAAAAAAAAIC/6Uc=") stream = KaitaiStream(io.BytesIO(buf)) @@ -84,7 +106,7 @@ def test_auto_check_sbp_tracking_msg_tracking_state_3(): assert dictify(msg) == {'sender': 55286, 'msg_type': 19, 'states': [{'state': 1, 'cn0': 38.95457077026367, 'sid': {'code': 0, 'reserved': 0, 'sat': 202}}, {'state': 1, 'cn0': 35.813316345214844, 'sid': {'code': 0, 'reserved': 0, 'sat': 203}}, {'state': 1, 'cn0': 37.553924560546875, 'sid': {'code': 0, 'reserved': 0, 'sat': 208}}, {'state': 1, 'cn0': 38.88901901245117, 'sid': {'code': 0, 'reserved': 0, 'sat': 212}}, {'state': 1, 'cn0': 42.4013557434082, 'sid': {'code': 0, 'reserved': 0, 'sat': 217}}, {'state': 1, 'cn0': 37.63916015625, 'sid': {'code': 0, 'reserved': 0, 'sat': 218}}, {'state': 1, 'cn0': 37.919986724853516, 'sid': {'code': 0, 'reserved': 0, 'sat': 220}}, {'state': 1, 'cn0': 39.25254440307617, 'sid': {'code': 0, 'reserved': 0, 'sat': 222}}, {'state': 1, 'cn0': 42.59827423095703, 'sid': {'code': 0, 'reserved': 0, 'sat': 225}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}], 'crc': 18409, 'length': 99, 'preamble': 85, 'payload': 'AcoAAAB70RtCAcsAAADWQA9CAdAAAAA4NxZCAdQAAABbjhtCAdkAAAD9milCAdoAAACAjhZCAdwAAAARrhdCAd4AAACbAh1CAeEAAACiZCpCAAAAAAAAAIC/AAAAAAAAAIC/'} -def test_auto_check_sbp_tracking_msg_tracking_state_4(): +def test_auto_check_sbp_tracking_msg_tracking_state_5(): buf = base64.standard_b64decode("VRMA9tdjAcoAAAB4eh1CAcsAAABCFhJCAdAAAACZoxhCAdQAAACyzBxCAdkAAADcOyZCAdoAAAChGxRCAdwAAAB9axhCAd4AAADyLhxCAeEAAADngilCAAAAAAAAAIC/AAAAAAAAAIC/ScE=") stream = KaitaiStream(io.BytesIO(buf)) @@ -106,7 +128,7 @@ def test_auto_check_sbp_tracking_msg_tracking_state_4(): assert dictify(msg) == {'sender': 55286, 'msg_type': 19, 'states': [{'state': 1, 'cn0': 39.369598388671875, 'sid': {'code': 0, 'reserved': 0, 'sat': 202}}, {'state': 1, 'cn0': 36.52173614501953, 'sid': {'code': 0, 'reserved': 0, 'sat': 203}}, {'state': 1, 'cn0': 38.15976333618164, 'sid': {'code': 0, 'reserved': 0, 'sat': 208}}, {'state': 1, 'cn0': 39.19989776611328, 'sid': {'code': 0, 'reserved': 0, 'sat': 212}}, {'state': 1, 'cn0': 41.55845642089844, 'sid': {'code': 0, 'reserved': 0, 'sat': 217}}, {'state': 1, 'cn0': 37.026981353759766, 'sid': {'code': 0, 'reserved': 0, 'sat': 218}}, {'state': 1, 'cn0': 38.1049690246582, 'sid': {'code': 0, 'reserved': 0, 'sat': 220}}, {'state': 1, 'cn0': 39.04584503173828, 'sid': {'code': 0, 'reserved': 0, 'sat': 222}}, {'state': 1, 'cn0': 42.37783432006836, 'sid': {'code': 0, 'reserved': 0, 'sat': 225}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}, {'state': 0, 'cn0': -1.0, 'sid': {'code': 0, 'reserved': 0, 'sat': 0}}], 'crc': 49481, 'length': 99, 'preamble': 85, 'payload': 'AcoAAAB4eh1CAcsAAABCFhJCAdAAAACZoxhCAdQAAACyzBxCAdkAAADcOyZCAdoAAAChGxRCAdwAAAB9axhCAd4AAADyLhxCAeEAAADngilCAAAAAAAAAIC/AAAAAAAAAIC/'} -def test_auto_check_sbp_tracking_msg_tracking_state_5(): +def test_auto_check_sbp_tracking_msg_tracking_state_6(): buf = base64.standard_b64decode("VRMA9tdjAcoAAABn0B5CAcsAAAB1GBJCAdAAAADIrRRCAdQAAACJRBtCAdkAAADzMyhCAdoAAADhOhdCAdwAAACE3RZCAd4AAACdHRpCAeEAAACFFSlCAAAAAAAAAIC/AAAAAAAAAIC/fi8=") stream = KaitaiStream(io.BytesIO(buf)) diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDepB.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDepB.py new file mode 100644 index 0000000000..1670c8fdeb --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDepB.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingStateDepB.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_tracking_msg_tracking_state_dep_b_1(): + buf = base64.standard_b64decode("VRMA8vH8c7fjP0SaAbdF/695K94zQyNFTvAFNRQz0zZFmYLtQpsz40dFNfKIob7NvAZGmX3/jpWa2bhF+GZfH0yaIalFg3ONGwya4chF0CyTJxczA0JF7Z/7McszY2ZFRtZXgM6aebpFDs5v2hOaealF2GLRNgKaGdtDyIVjByJmxuhEmytVhy6asapFmwNTq8ma8ehFeSvFEBOa8d5FgPU1P7Azc0JFJBQ9mTOaSYZFLlJ0jBYzkyVFsUOSYI/NTGtE3DOgyftmZsBEqMICodxmZrRERQgJfbJmRoZEuRSHuqszowRFEnybVarN0A1GOfTO/7qaaZVFpcddta8zQ0BFBhw=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x1c06 + + assert msg.length == 252 + + assert msg.msg_type == 0x13 + + assert msg.payload == "c7fjP0SaAbdF/695K94zQyNFTvAFNRQz0zZFmYLtQpsz40dFNfKIob7NvAZGmX3/jpWa2bhF+GZfH0yaIalFg3ONGwya4chF0CyTJxczA0JF7Z/7McszY2ZFRtZXgM6aebpFDs5v2hOaealF2GLRNgKaGdtDyIVjByJmxuhEmytVhy6asapFmwNTq8ma8ehFeSvFEBOa8d5FgPU1P7Azc0JFJBQ9mTOaSYZFLlJ0jBYzkyVFsUOSYI/NTGtE3DOgyftmZsBEqMICodxmZrRERQgJfbJmRoZEuRSHuqszowRFEnybVarN0A1GOfTO/7qaaZVFpcddta8zQ0BF" + + assert msg.preamble == 0x55 + + assert msg.sender == 0xf1f2 + + assert dictify(msg.states) == [{'cn0': 5856.2001953125, 'sid': {'code': 63, 'reserved': 68, 'sat': 58295}, 'state': 115}, {'cn0': 2612.199951171875, 'sid': {'code': 43, 'reserved': 222, 'sat': 31151}, 'state': 255}, {'cn0': 2925.199951171875, 'sid': {'code': 53, 'reserved': 20, 'sat': 1520}, 'state': 78}, {'cn0': 3198.199951171875, 'sid': {'code': 66, 'reserved': 155, 'sat': 60802}, 'state': 153}, {'cn0': 8623.2001953125, 'sid': {'code': 161, 'reserved': 190, 'sat': 35058}, 'state': 53}, {'cn0': 5915.2001953125, 'sid': {'code': 142, 'reserved': 149, 'sat': 65405}, 'state': 153}, {'cn0': 5412.2001953125, 'sid': {'code': 31, 'reserved': 76, 'sat': 24422}, 'state': 248}, {'cn0': 6428.2001953125, 'sid': {'code': 27, 'reserved': 12, 'sat': 36211}, 'state': 131}, {'cn0': 3104.199951171875, 'sid': {'code': 39, 'reserved': 23, 'sat': 37676}, 'state': 208}, {'cn0': 3686.199951171875, 'sid': {'code': 49, 'reserved': 203, 'sat': 64415}, 'state': 237}, {'cn0': 5967.2001953125, 'sid': {'code': 128, 'reserved': 206, 'sat': 22486}, 'state': 70}, {'cn0': 5423.2001953125, 'sid': {'code': 218, 'reserved': 19, 'sat': 28622}, 'state': 14}, {'cn0': 438.20001220703125, 'sid': {'code': 54, 'reserved': 2, 'sat': 53602}, 'state': 216}, {'cn0': 1862.199951171875, 'sid': {'code': 7, 'reserved': 34, 'sat': 25477}, 'state': 200}, {'cn0': 5462.2001953125, 'sid': {'code': 135, 'reserved': 46, 'sat': 21803}, 'state': 155}, {'cn0': 7454.2001953125, 'sid': {'code': 171, 'reserved': 201, 'sat': 21251}, 'state': 155}, {'cn0': 7134.2001953125, 'sid': {'code': 16, 'reserved': 19, 'sat': 50475}, 'state': 121}, {'cn0': 3111.199951171875, 'sid': {'code': 63, 'reserved': 176, 'sat': 13813}, 'state': 128}, {'cn0': 4297.2001953125, 'sid': {'code': 153, 'reserved': 51, 'sat': 15636}, 'state': 36}, {'cn0': 2649.199951171875, 'sid': {'code': 140, 'reserved': 22, 'sat': 29778}, 'state': 46}, {'cn0': 941.2000122070312, 'sid': {'code': 96, 'reserved': 143, 'sat': 37443}, 'state': 177}, {'cn0': 1539.199951171875, 'sid': {'code': 201, 'reserved': 251, 'sat': 41011}, 'state': 220}, {'cn0': 1443.199951171875, 'sid': {'code': 161, 'reserved': 220, 'sat': 706}, 'state': 168}, {'cn0': 1074.199951171875, 'sid': {'code': 125, 'reserved': 178, 'sat': 2312}, 'state': 69}, {'cn0': 2122.199951171875, 'sid': {'code': 186, 'reserved': 171, 'sat': 34580}, 'state': 185}, {'cn0': 9076.2001953125, 'sid': {'code': 85, 'reserved': 170, 'sat': 39804}, 'state': 18}, {'cn0': 4781.2001953125, 'sid': {'code': 255, 'reserved': 186, 'sat': 52980}, 'state': 57}, {'cn0': 3076.199951171875, 'sid': {'code': 181, 'reserved': 175, 'sat': 24007}, 'state': 165}] + + assert dictify(msg) == {'preamble': 85, 'msg_type': 19, 'sender': 61938, 'length': 252, 'payload': 'c7fjP0SaAbdF/695K94zQyNFTvAFNRQz0zZFmYLtQpsz40dFNfKIob7NvAZGmX3/jpWa2bhF+GZfH0yaIalFg3ONGwya4chF0CyTJxczA0JF7Z/7McszY2ZFRtZXgM6aebpFDs5v2hOaealF2GLRNgKaGdtDyIVjByJmxuhEmytVhy6asapFmwNTq8ma8ehFeSvFEBOa8d5FgPU1P7Azc0JFJBQ9mTOaSYZFLlJ0jBYzkyVFsUOSYI/NTGtE3DOgyftmZsBEqMICodxmZrRERQgJfbJmRoZEuRSHuqszowRFEnybVarN0A1GOfTO/7qaaZVFpcddta8zQ0BF', 'crc': 7174, 'states': [{'state': 115, 'sid': {'sat': 58295, 'code': 63, 'reserved': 68}, 'cn0': 5856.2001953125}, {'state': 255, 'sid': {'sat': 31151, 'code': 43, 'reserved': 222}, 'cn0': 2612.199951171875}, {'state': 78, 'sid': {'sat': 1520, 'code': 53, 'reserved': 20}, 'cn0': 2925.199951171875}, {'state': 153, 'sid': {'sat': 60802, 'code': 66, 'reserved': 155}, 'cn0': 3198.199951171875}, {'state': 53, 'sid': {'sat': 35058, 'code': 161, 'reserved': 190}, 'cn0': 8623.2001953125}, {'state': 153, 'sid': {'sat': 65405, 'code': 142, 'reserved': 149}, 'cn0': 5915.2001953125}, {'state': 248, 'sid': {'sat': 24422, 'code': 31, 'reserved': 76}, 'cn0': 5412.2001953125}, {'state': 131, 'sid': {'sat': 36211, 'code': 27, 'reserved': 12}, 'cn0': 6428.2001953125}, {'state': 208, 'sid': {'sat': 37676, 'code': 39, 'reserved': 23}, 'cn0': 3104.199951171875}, {'state': 237, 'sid': {'sat': 64415, 'code': 49, 'reserved': 203}, 'cn0': 3686.199951171875}, {'state': 70, 'sid': {'sat': 22486, 'code': 128, 'reserved': 206}, 'cn0': 5967.2001953125}, {'state': 14, 'sid': {'sat': 28622, 'code': 218, 'reserved': 19}, 'cn0': 5423.2001953125}, {'state': 216, 'sid': {'sat': 53602, 'code': 54, 'reserved': 2}, 'cn0': 438.20001220703125}, {'state': 200, 'sid': {'sat': 25477, 'code': 7, 'reserved': 34}, 'cn0': 1862.199951171875}, {'state': 155, 'sid': {'sat': 21803, 'code': 135, 'reserved': 46}, 'cn0': 5462.2001953125}, {'state': 155, 'sid': {'sat': 21251, 'code': 171, 'reserved': 201}, 'cn0': 7454.2001953125}, {'state': 121, 'sid': {'sat': 50475, 'code': 16, 'reserved': 19}, 'cn0': 7134.2001953125}, {'state': 128, 'sid': {'sat': 13813, 'code': 63, 'reserved': 176}, 'cn0': 3111.199951171875}, {'state': 36, 'sid': {'sat': 15636, 'code': 153, 'reserved': 51}, 'cn0': 4297.2001953125}, {'state': 46, 'sid': {'sat': 29778, 'code': 140, 'reserved': 22}, 'cn0': 2649.199951171875}, {'state': 177, 'sid': {'sat': 37443, 'code': 96, 'reserved': 143}, 'cn0': 941.2000122070312}, {'state': 220, 'sid': {'sat': 41011, 'code': 201, 'reserved': 251}, 'cn0': 1539.199951171875}, {'state': 168, 'sid': {'sat': 706, 'code': 161, 'reserved': 220}, 'cn0': 1443.199951171875}, {'state': 69, 'sid': {'sat': 2312, 'code': 125, 'reserved': 178}, 'cn0': 1074.199951171875}, {'state': 185, 'sid': {'sat': 34580, 'code': 186, 'reserved': 171}, 'cn0': 2122.199951171875}, {'state': 18, 'sid': {'sat': 39804, 'code': 85, 'reserved': 170}, 'cn0': 9076.2001953125}, {'state': 57, 'sid': {'sat': 52980, 'code': 255, 'reserved': 186}, 'cn0': 4781.2001953125}, {'state': 165, 'sid': {'sat': 24007, 'code': 181, 'reserved': 175}, 'cn0': 3076.199951171875}]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.py new file mode 100644 index 0000000000..4d356dd050 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_tracking_MsgTrackingStateDetailedDepA.py @@ -0,0 +1,81 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/tracking/test_MsgTrackingStateDetailedDepA.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_tracking_msg_tracking_state_detailed_dep_a_1(): + buf = base64.standard_b64decode("VSEAm245Lh+0JtsAAACFZEdewAKgz9T/h4s+PrNT4/WGoMxOX/8mO6EP/1a9+B+/iMJ8Fw9b+XWOWttDGVM+emQ=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x647a + + assert msg.length == 57 + + assert msg.msg_type == 0x21 + + assert msg.payload == "Lh+0JtsAAACFZEdewAKgz9T/h4s+PrNT4/WGoMxOX/8mO6EP/1a9+B+/iMJ8Fw9b+XWOWttDGVM+" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x6e9b + + assert dictify(msg.l) == {'f': 204, 'i': -1601767965} + + assert dictify(msg.p) == 1044286343 + + assert dictify(msg.p_std) == 21427 + + assert dictify(msg.acceleration) == -114 + + assert dictify(msg.clock_drift) == 23311 + + assert dictify(msg.clock_offset) == 6012 + + assert dictify(msg.cn0) == 78 + + assert dictify(msg.corr_spacing) == 30201 + + assert dictify(msg.doppler) == 1459556257 + + assert dictify(msg.doppler_std) == 63677 + + assert dictify(msg.lock) == 65375 + + assert dictify(msg.misc_flags) == 62 + + assert dictify(msg.nav_flags) == 25 + + assert dictify(msg.pset_flags) == 83 + + assert dictify(msg.recv_time) == 941247176494 + + assert dictify(msg.sid) == {'code': 59, 'sat': 38} + + assert dictify(msg.sync_flags) == 90 + + assert dictify(msg.tot) == {'ns_residual': -811597120, 'tow': 1581737093, 'wn': 65492} + + assert dictify(msg.tow_flags) == 219 + + assert dictify(msg.track_flags) == 67 + + assert dictify(msg.uptime) == 3263741727 + + assert dictify(msg) == {'crc': 25722, 'length': 57, 'msg_type': 33, 'payload': 'Lh+0JtsAAACFZEdewAKgz9T/h4s+PrNT4/WGoMxOX/8mO6EP/1a9+B+/iMJ8Fw9b+XWOWttDGVM+', 'preamble': 85, 'sender': 28315, 'recv_time': 941247176494, 'tot': {'tow': 1581737093, 'ns_residual': -811597120, 'wn': 65492}, 'p': 1044286343, 'p_std': 21427, 'l': {'i': -1601767965, 'f': 204}, 'cn0': 78, 'lock': 65375, 'sid': {'sat': 38, 'code': 59}, 'doppler': 1459556257, 'doppler_std': 63677, 'uptime': 3263741727, 'clock_offset': 6012, 'clock_drift': 23311, 'corr_spacing': 30201, 'acceleration': -114, 'sync_flags': 90, 'tow_flags': 219, 'track_flags': 67, 'nav_flags': 25, 'pset_flags': 83, 'misc_flags': 62} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_user_MsgUserData.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_user_MsgUserData.py new file mode 100644 index 0000000000..0a07b59beb --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_user_MsgUserData.py @@ -0,0 +1,41 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/user/test_MsgUserData.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_user_msg_user_data_1(): + buf = base64.standard_b64decode("VQAIfiH/NQWsijIxzuqVzHEfbLyzmpynkYsqz37ywQk6SwiHC1yD9Rha/x46H22UOLKMHp9GEaoylAFjcFjZJFQi6lKQkGFgS64627SU9zsCdNZyN4Y2d2yASbUU6RcXSXeI570aroBdHkwtbYZRAHSefyiF0IZ/jOi3uGwG5DbuO9we5NQytmEUKUzjWAxfcNG3fwSlvSzv6IQJcrj50PbC+gJhrZ3KrLSW1cGx0ZwUrhJJhNdzgK+pdIRkSC0ZDs3VkUSJ+TYorteUpr4/dgal1EpEyCaL1HAtp+z/alyEOz3pA/aeU4b2mhEABjjYE9hGR6G4BbEtJWI4lQBJ3WnvqM1VUfU=") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0xf551 + + assert msg.length == 255 + + assert msg.msg_type == 0x800 + + assert msg.payload == "NQWsijIxzuqVzHEfbLyzmpynkYsqz37ywQk6SwiHC1yD9Rha/x46H22UOLKMHp9GEaoylAFjcFjZJFQi6lKQkGFgS64627SU9zsCdNZyN4Y2d2yASbUU6RcXSXeI570aroBdHkwtbYZRAHSefyiF0IZ/jOi3uGwG5DbuO9we5NQytmEUKUzjWAxfcNG3fwSlvSzv6IQJcrj50PbC+gJhrZ3KrLSW1cGx0ZwUrhJJhNdzgK+pdIRkSC0ZDs3VkUSJ+TYorteUpr4/dgal1EpEyCaL1HAtp+z/alyEOz3pA/aeU4b2mhEABjjYE9hGR6G4BbEtJWI4lQBJ3WnvqM1V" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x217e + + assert dictify(msg.contents) == [53, 5, 172, 138, 50, 49, 206, 234, 149, 204, 113, 31, 108, 188, 179, 154, 156, 167, 145, 139, 42, 207, 126, 242, 193, 9, 58, 75, 8, 135, 11, 92, 131, 245, 24, 90, 255, 30, 58, 31, 109, 148, 56, 178, 140, 30, 159, 70, 17, 170, 50, 148, 1, 99, 112, 88, 217, 36, 84, 34, 234, 82, 144, 144, 97, 96, 75, 174, 58, 219, 180, 148, 247, 59, 2, 116, 214, 114, 55, 134, 54, 119, 108, 128, 73, 181, 20, 233, 23, 23, 73, 119, 136, 231, 189, 26, 174, 128, 93, 30, 76, 45, 109, 134, 81, 0, 116, 158, 127, 40, 133, 208, 134, 127, 140, 232, 183, 184, 108, 6, 228, 54, 238, 59, 220, 30, 228, 212, 50, 182, 97, 20, 41, 76, 227, 88, 12, 95, 112, 209, 183, 127, 4, 165, 189, 44, 239, 232, 132, 9, 114, 184, 249, 208, 246, 194, 250, 2, 97, 173, 157, 202, 172, 180, 150, 213, 193, 177, 209, 156, 20, 174, 18, 73, 132, 215, 115, 128, 175, 169, 116, 132, 100, 72, 45, 25, 14, 205, 213, 145, 68, 137, 249, 54, 40, 174, 215, 148, 166, 190, 63, 118, 6, 165, 212, 74, 68, 200, 38, 139, 212, 112, 45, 167, 236, 255, 106, 92, 132, 59, 61, 233, 3, 246, 158, 83, 134, 246, 154, 17, 0, 6, 56, 216, 19, 216, 70, 71, 161, 184, 5, 177, 45, 37, 98, 56, 149, 0, 73, 221, 105, 239, 168, 205, 85] + + assert dictify(msg) == {'crc': 62801, 'length': 255, 'msg_type': 2048, 'payload': 'NQWsijIxzuqVzHEfbLyzmpynkYsqz37ywQk6SwiHC1yD9Rha/x46H22UOLKMHp9GEaoylAFjcFjZJFQi6lKQkGFgS64627SU9zsCdNZyN4Y2d2yASbUU6RcXSXeI570aroBdHkwtbYZRAHSefyiF0IZ/jOi3uGwG5DbuO9we5NQytmEUKUzjWAxfcNG3fwSlvSzv6IQJcrj50PbC+gJhrZ3KrLSW1cGx0ZwUrhJJhNdzgK+pdIRkSC0ZDs3VkUSJ+TYorteUpr4/dgal1EpEyCaL1HAtp+z/alyEOz3pA/aeU4b2mhEABjjYE9hGR6G4BbEtJWI4lQBJ3WnvqM1V', 'preamble': 85, 'sender': 8574, 'contents': [53, 5, 172, 138, 50, 49, 206, 234, 149, 204, 113, 31, 108, 188, 179, 154, 156, 167, 145, 139, 42, 207, 126, 242, 193, 9, 58, 75, 8, 135, 11, 92, 131, 245, 24, 90, 255, 30, 58, 31, 109, 148, 56, 178, 140, 30, 159, 70, 17, 170, 50, 148, 1, 99, 112, 88, 217, 36, 84, 34, 234, 82, 144, 144, 97, 96, 75, 174, 58, 219, 180, 148, 247, 59, 2, 116, 214, 114, 55, 134, 54, 119, 108, 128, 73, 181, 20, 233, 23, 23, 73, 119, 136, 231, 189, 26, 174, 128, 93, 30, 76, 45, 109, 134, 81, 0, 116, 158, 127, 40, 133, 208, 134, 127, 140, 232, 183, 184, 108, 6, 228, 54, 238, 59, 220, 30, 228, 212, 50, 182, 97, 20, 41, 76, 227, 88, 12, 95, 112, 209, 183, 127, 4, 165, 189, 44, 239, 232, 132, 9, 114, 184, 249, 208, 246, 194, 250, 2, 97, 173, 157, 202, 172, 180, 150, 213, 193, 177, 209, 156, 20, 174, 18, 73, 132, 215, 115, 128, 175, 169, 116, 132, 100, 72, 45, 25, 14, 205, 213, 145, 68, 137, 249, 54, 40, 174, 215, 148, 166, 190, 63, 118, 6, 165, 212, 74, 68, 200, 38, 139, 212, 112, 45, 167, 236, 255, 106, 92, 132, 59, 61, 233, 3, 246, 158, 83, 134, 246, 154, 17, 0, 6, 56, 216, 19, 216, 70, 71, 161, 184, 5, 177, 45, 37, 98, 56, 149, 0, 73, 221, 105, 239, 168, 205, 85]} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_vehicle_MsgWheeltick.py b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_vehicle_MsgWheeltick.py new file mode 100644 index 0000000000..2b65536cf3 --- /dev/null +++ b/kaitai/python/kaitai_sbp/tests/test_auto_check_sbp_vehicle_MsgWheeltick.py @@ -0,0 +1,47 @@ +# Copyright (C) 2015-2023 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. +# +# Test cases automatically generated from spec/tests/yaml/swiftnav/sbp/vehicle/test_MsgWheeltick.yaml +# with generate.py. Do not modify by hand! + +import kaitai_sbp.sbp as sbp +from kaitai_sbp.parse_utils import get_flattened_msg +from kaitai_sbp.tests.utils import dictify +from kaitaistruct import KaitaiStream +import io +import base64 + +def test_auto_check_sbp_vehicle_msg_wheeltick_1(): + buf = base64.standard_b64decode("VQQJa0UO/htyLBoAAAABkuEzCdIkOA==") + + stream = KaitaiStream(io.BytesIO(buf)) + msg = get_flattened_msg(sbp.Sbp.SbpMessage(stream)) + + assert msg.crc == 0x3824 + + assert msg.length == 14 + + assert msg.msg_type == 0x904 + + assert msg.payload == "/htyLBoAAAABkuEzCdI=" + + assert msg.preamble == 0x55 + + assert msg.sender == 0x456b + + assert dictify(msg.flags) == 1 + + assert dictify(msg.source) == 146 + + assert dictify(msg.ticks) == -771148831 + + assert dictify(msg.time) == 112414825470 + + assert dictify(msg) == {'preamble': 85, 'msg_type': 2308, 'sender': 17771, 'length': 14, 'payload': '/htyLBoAAAABkuEzCdI=', 'crc': 14372, 'time': 112414825470, 'flags': 1, 'source': 146, 'ticks': -771148831} \ No newline at end of file diff --git a/kaitai/python/kaitai_sbp/tracking.py b/kaitai/python/kaitai_sbp/tracking.py index c480abf4d7..c9bb74bf70 100644 --- a/kaitai/python/kaitai_sbp/tracking.py +++ b/kaitai/python/kaitai_sbp/tracking.py @@ -131,7 +131,7 @@ def _read(self): self.sid = Gnss.GnssSignalDep(self._io, self, self._root) self.corrs = [] for i in range(3): - self.corrs.append(self._io.read_u8le()) + self.corrs.append(Tracking.TrackingChannelCorrelationDep(self._io, self, self._root)) @@ -216,7 +216,7 @@ def _read(self): self.sid = Gnss.GnssSignal(self._io, self, self._root) self.corrs = [] for i in range(3): - self.corrs.append(self._io.read_u8le()) + self.corrs.append(Tracking.TrackingChannelCorrelation(self._io, self, self._root)) @@ -303,7 +303,7 @@ def _read(self): self.sid = Gnss.GnssSignal(self._io, self, self._root) self.corrs = [] for i in range(3): - self.corrs.append(self._io.read_u8le()) + self.corrs.append(Tracking.TrackingChannelCorrelationDep(self._io, self, self._root)) diff --git a/package-lock.json b/package-lock.json index 3f8e215637..935cd2fd92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sbp", - "version": "5.0.5-alpha", + "version": "5.045-alpha", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "sbp", - "version": "5.0.5-alpha", + "version": "5.0.4-alpha", "license": "MIT", "dependencies": { "binary-parser": "^1.7.0", diff --git a/package.json b/package.json index 16188f283e..f8f4ab1a81 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sbp", - "version": "5.0.5-alpha", + "version": "5.0.4-alpha", "description": "libsbp bindings for JavaScript. More information here: http://swift-nav.github.io/libsbp/", "files": [ "javascript/*", diff --git a/python/sbp/RELEASE-VERSION b/python/sbp/RELEASE-VERSION index 553fe87a05..a8a5353f80 100644 --- a/python/sbp/RELEASE-VERSION +++ b/python/sbp/RELEASE-VERSION @@ -1 +1 @@ -5.0.4 \ No newline at end of file +5.0.4-alpha \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 17fd42a3ab..7be5484539 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,4 @@ distro sphinx sphinxcontrib-spelling -autoflake +autoflake==1.7.8 diff --git a/rust/sbp/Cargo.toml b/rust/sbp/Cargo.toml index 4c39803f46..4dfb263966 100644 --- a/rust/sbp/Cargo.toml +++ b/rust/sbp/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "sbp" -version = "5.0.5-alpha" +version = "5.0.4-alpha" description = "Rust native implementation of SBP (Swift Binary Protocol) for communicating with devices made by Swift Navigation" authors = ["Swift Navigation "] repository = "https://github.com/swift-nav/libsbp" diff --git a/rust/sbp2json/Cargo.toml b/rust/sbp2json/Cargo.toml index 5487f56e43..35c00a00b4 100644 --- a/rust/sbp2json/Cargo.toml +++ b/rust/sbp2json/Cargo.toml @@ -7,7 +7,7 @@ [package] name = "sbp2json" -version = "5.0.5-alpha" +version = "5.0.4-alpha" repository = "https://github.com/swift-nav/libsbp" description = "Rust native implementation of SBP (Swift Binary Protocol) to JSON conversion tools" authors = ["Swift Navigation "] diff --git a/sbpjson/javascript/SbpJson.js b/sbpjson/javascript/SbpJson.js index 87368afe7e..7825558a43 100644 --- a/sbpjson/javascript/SbpJson.js +++ b/sbpjson/javascript/SbpJson.js @@ -1943,11 +1943,25 @@ function uTCTimeToJson(value) { return JSON.stringify(uncast(value, r("UTCTime")), null, 2); } -function invalidValue(typ, val, key = '') { - if (key) { - throw Error(`Invalid value for key "${key}". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`); +function invalidValue(typ, val, key, parent = '') { + const prettyTyp = prettyTypeName(typ); + const parentText = parent ? ` on ${parent}` : ''; + const keyText = key ? ` for key "${key}"` : ''; + throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`); +} + +function prettyTypeName(typ) { + if (Array.isArray(typ)) { + if (typ.length === 2 && typ[0] === undefined) { + return `an optional ${prettyTypeName(typ[1])}`; + } else { + return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`; + } + } else if (typeof typ === "object" && typ.literal !== undefined) { + return typ.literal; + } else { + return typeof typ; } - throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`, ); } function jsonToJSProps(typ) { @@ -1968,10 +1982,10 @@ function jsToJSONProps(typ) { return typ.jsToJSON; } -function transform(val, typ, getProps, key = '') { +function transform(val, typ, getProps, key = '', parent = '') { function transformPrimitive(typ, val) { if (typeof typ === typeof val) return val; - return invalidValue(typ, val, key); + return invalidValue(typ, val, key, parent); } function transformUnion(typs, val) { @@ -1983,17 +1997,17 @@ function transform(val, typ, getProps, key = '') { return transform(val, typ, getProps); } catch (_) {} } - return invalidValue(typs, val); + return invalidValue(typs, val, key, parent); } function transformEnum(cases, val) { if (cases.indexOf(val) !== -1) return val; - return invalidValue(cases, val); + return invalidValue(cases.map(a => { return l(a); }), val, key, parent); } function transformArray(typ, val) { // val must be an array with no invalid elements - if (!Array.isArray(val)) return invalidValue("array", val); + if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent); return val.map(el => transform(el, typ, getProps)); } @@ -2003,24 +2017,24 @@ function transform(val, typ, getProps, key = '') { } const d = new Date(val); if (isNaN(d.valueOf())) { - return invalidValue("Date", val); + return invalidValue(l("Date"), val, key, parent); } return d; } function transformObject(props, additional, val) { if (val === null || typeof val !== "object" || Array.isArray(val)) { - return invalidValue("object", val); + return invalidValue(l(ref || "object"), val, key, parent); } const result = {}; Object.getOwnPropertyNames(props).forEach(key => { const prop = props[key]; const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined; - result[prop.key] = transform(v, prop.typ, getProps, prop.key); + result[prop.key] = transform(v, prop.typ, getProps, key, ref); }); Object.getOwnPropertyNames(val).forEach(key => { if (!Object.prototype.hasOwnProperty.call(props, key)) { - result[key] = transform(val[key], additional, getProps, key); + result[key] = transform(val[key], additional, getProps, key, ref); } }); return result; @@ -2029,10 +2043,12 @@ function transform(val, typ, getProps, key = '') { if (typ === "any") return val; if (typ === null) { if (val === null) return val; - return invalidValue(typ, val); + return invalidValue(typ, val, key, parent); } - if (typ === false) return invalidValue(typ, val); + if (typ === false) return invalidValue(typ, val, key, parent); + let ref = undefined; while (typeof typ === "object" && typ.ref !== undefined) { + ref = typ.ref; typ = typeMap[typ.ref]; } if (Array.isArray(typ)) return transformEnum(typ, val); @@ -2040,7 +2056,7 @@ function transform(val, typ, getProps, key = '') { return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) - : invalidValue(typ, val); + : invalidValue(typ, val, key, parent); } // Numbers can be parsed by Date but shouldn't be. if (typ === Date && typeof val !== "number") return transformDate(val); @@ -2055,6 +2071,10 @@ function uncast(val, typ) { return transform(val, typ, jsToJSONProps); } +function l(typ) { + return { literal: typ }; +} + function a(typ) { return { arrayItems: typ }; } diff --git a/sbpjson/typescript/SbpJson.ts b/sbpjson/typescript/SbpJson.ts index e65a07961e..7c1aed47f0 100644 --- a/sbpjson/typescript/SbpJson.ts +++ b/sbpjson/typescript/SbpJson.ts @@ -227,6 +227,7 @@ */ export interface GNSSInputType { flags: number; + [property: string]: any; } /** @@ -237,6 +238,7 @@ export interface GridElement { index: number; stec_residuals: STECResidual[]; tropo_delay_correction: TroposphericDelayCorrection; + [property: string]: any; } /** @@ -246,6 +248,7 @@ export interface STECResidual { residual: number; stddev: number; sv_id: SvID; + [property: string]: any; } /** @@ -254,6 +257,7 @@ export interface STECResidual { export interface SvID { constellation: number; satId: number; + [property: string]: any; } /** @@ -263,6 +267,7 @@ export interface TroposphericDelayCorrection { hydro: number; stddev: number; wet: number; + [property: string]: any; } /** @@ -272,6 +277,7 @@ export interface GridElementNoStd { index: number; stec_residuals: STECResidualNoStd[]; tropo_delay_correction: TroposphericDelayCorrectionNoStd; + [property: string]: any; } /** @@ -280,6 +286,7 @@ export interface GridElementNoStd { export interface STECResidualNoStd { residual: number; sv_id: SvID; + [property: string]: any; } /** @@ -288,6 +295,7 @@ export interface STECResidualNoStd { export interface TroposphericDelayCorrectionNoStd { hydro: number; wet: number; + [property: string]: any; } /** @@ -296,6 +304,7 @@ export interface TroposphericDelayCorrectionNoStd { */ export interface IMUInputType { flags: number; + [property: string]: any; } export interface MsgAcknowledge { @@ -305,6 +314,7 @@ export interface MsgAcknowledge { request_id: number; response_code: number; solution_id: number; + [property: string]: any; } /** @@ -317,6 +327,7 @@ export interface MsgAcqResult { cn0: number; cp: number; sid: GnssSignal; + [property: string]: any; } /** @@ -325,6 +336,7 @@ export interface MsgAcqResult { export interface GnssSignal { code: number; sat: number; + [property: string]: any; } /** @@ -333,6 +345,7 @@ export interface GnssSignal { */ export interface MsgAcqSvProfile { acq_sv_profile: AcqSvProfile[]; + [property: string]: any; } /** @@ -352,6 +365,7 @@ export interface AcqSvProfile { status: number; time_spent: number; timestamp: number; + [property: string]: any; } /** @@ -361,6 +375,7 @@ export interface AcqSvProfile { export interface MsgAgeCorrections { age: number; tow: number; + [property: string]: any; } /** @@ -380,6 +395,7 @@ export interface MsgAlmanacGPS { omegadot: number; sqrta: number; w: number; + [property: string]: any; } export interface AlmanacCommonContent { @@ -389,6 +405,7 @@ export interface AlmanacCommonContent { toa: GpsTimeSEC; ura: number; valid: number; + [property: string]: any; } /** @@ -398,6 +415,7 @@ export interface AlmanacCommonContent { export interface GpsTimeSEC { tow: number; wn: number; + [property: string]: any; } /** @@ -414,6 +432,7 @@ export interface MsgAlmanacGlo { t: number; t_dot: number; t_lambda_na: number; + [property: string]: any; } /** @@ -432,6 +451,7 @@ export interface MsgAngularRate { x: number; y: number; z: number; + [property: string]: any; } /** @@ -444,6 +464,7 @@ export interface MsgBasePosECEF { x: number; y: number; z: number; + [property: string]: any; } /** @@ -456,6 +477,7 @@ export interface MsgBasePosLLH { height: number; lat: number; lon: number; + [property: string]: any; } /** @@ -474,6 +496,7 @@ export interface MsgBaselineECEF { x: number; y: number; z: number; + [property: string]: any; } /** @@ -487,6 +510,7 @@ export interface MsgBaselineHeading { heading: number; n_sats: number; tow: number; + [property: string]: any; } /** @@ -507,6 +531,7 @@ export interface MsgBaselineNED { n_sats: number; tow: number; v_accuracy: number; + [property: string]: any; } /** @@ -517,6 +542,7 @@ export interface MsgBaselineNED { export interface MsgBootloaderHandshakeResp { flags: number; version: string; + [property: string]: any; } /** @@ -524,6 +550,7 @@ export interface MsgBootloaderHandshakeResp { */ export interface MsgBootloaderJumpToApp { jump: number; + [property: string]: any; } /** @@ -533,6 +560,7 @@ export interface MsgBootloaderJumpToApp { export interface MsgCellModemStatus { signal_error_rate: number; signal_strength: number; + [property: string]: any; } export interface MsgCertificateChain { @@ -541,6 +569,7 @@ export interface MsgCertificateChain { intermediate_certificate: number[]; root_certificate: number[]; signature: ECDSASignature; + [property: string]: any; } export interface UTCTime { @@ -551,11 +580,13 @@ export interface UTCTime { ns: number; seconds: number; year: number; + [property: string]: any; } export interface ECDSASignature { data: number[]; len: number; + [property: string]: any; } /** @@ -566,6 +597,7 @@ export interface ECDSASignature { export interface MsgCommandOutput { line: string; sequence: number; + [property: string]: any; } /** @@ -575,6 +607,7 @@ export interface MsgCommandOutput { export interface MsgCommandReq { command: string; sequence: number; + [property: string]: any; } /** @@ -584,6 +617,7 @@ export interface MsgCommandReq { export interface MsgCommandResp { code: number; sequence: number; + [property: string]: any; } /** @@ -594,6 +628,7 @@ export interface MsgCommandResp { export interface MsgCsacTelemetry { id: number; telemetry: string; + [property: string]: any; } /** @@ -604,6 +639,7 @@ export interface MsgCsacTelemetry { export interface MsgCsacTelemetryLabels { id: number; telemetry_labels: string; + [property: string]: any; } /** @@ -616,6 +652,7 @@ export interface MsgDeviceMonitor { cpu_vint: number; dev_vin: number; fe_temperature: number; + [property: string]: any; } /** @@ -627,6 +664,7 @@ export interface MsgDgnssStatus { latency: number; num_signals: number; source: string; + [property: string]: any; } /** @@ -644,6 +682,7 @@ export interface MsgDops { tdop: number; tow: number; vdop: number; + [property: string]: any; } /** @@ -654,6 +693,7 @@ export interface MsgEcdsaCertificate { certificate_id: number[]; flags: number; n_msg: number; + [property: string]: any; } /** @@ -666,6 +706,7 @@ export interface MsgEcdsaSignature { signature: ECDSASignature; signed_messages: number[]; stream_counter: number; + [property: string]: any; } /** @@ -698,6 +739,7 @@ export interface MsgEphemerisBds { tgd2: number; toc: GpsTimeSEC; w: number; + [property: string]: any; } export interface EphemerisCommonContent { @@ -707,6 +749,7 @@ export interface EphemerisCommonContent { toe: GpsTimeSEC; ura: number; valid: number; + [property: string]: any; } /** @@ -738,6 +781,7 @@ export interface MsgEphemerisGPS { tgd: number; toc: GpsTimeSEC; w: number; + [property: string]: any; } /** @@ -771,6 +815,7 @@ export interface MsgEphemerisGal { sqrta: number; toc: GpsTimeSEC; w: number; + [property: string]: any; } /** @@ -789,6 +834,7 @@ export interface MsgEphemerisGlo { pos: number[]; tau: number; vel: number[]; + [property: string]: any; } /** @@ -819,6 +865,7 @@ export interface MsgEphemerisQzss { tgd: number; toc: GpsTimeSEC; w: number; + [property: string]: any; } export interface MsgEphemerisSbas { @@ -828,6 +875,7 @@ export interface MsgEphemerisSbas { common: EphemerisCommonContent; pos: number[]; vel: number[]; + [property: string]: any; } /** @@ -840,6 +888,7 @@ export interface MsgEXTEvent { pin: number; tow: number; wn: number; + [property: string]: any; } /** @@ -849,6 +898,7 @@ export interface MsgEXTEvent { */ export interface MsgFileioConfigReq { sequence: number; + [property: string]: any; } /** @@ -861,6 +911,7 @@ export interface MsgFileioConfigResp { fileio_version: number; sequence: number; window_size: number; + [property: string]: any; } /** @@ -876,6 +927,7 @@ export interface MsgFileioReadDirReq { dirname: string; offset: number; sequence: number; + [property: string]: any; } /** @@ -887,6 +939,7 @@ export interface MsgFileioReadDirReq { export interface MsgFileioReadDirResp { contents: string; sequence: number; + [property: string]: any; } /** @@ -902,6 +955,7 @@ export interface MsgFileioReadReq { filename: string; offset: number; sequence: number; + [property: string]: any; } /** @@ -913,6 +967,7 @@ export interface MsgFileioReadReq { export interface MsgFileioReadResp { contents: number[]; sequence: number; + [property: string]: any; } /** @@ -922,6 +977,7 @@ export interface MsgFileioReadResp { */ export interface MsgFileioRemove { filename: string; + [property: string]: any; } /** @@ -937,6 +993,7 @@ export interface MsgFileioWriteReq { filename: string; offset: number; sequence: number; + [property: string]: any; } /** @@ -946,6 +1003,7 @@ export interface MsgFileioWriteReq { */ export interface MsgFileioWriteResp { sequence: number; + [property: string]: any; } /** @@ -955,6 +1013,7 @@ export interface MsgFileioWriteResp { */ export interface MsgFlashDone { response: number; + [property: string]: any; } /** @@ -966,6 +1025,7 @@ export interface MsgFlashDone { export interface MsgFlashErase { sector_num: number; target: number; + [property: string]: any; } /** @@ -979,6 +1039,7 @@ export interface MsgFlashProgram { addr_start: number[]; data: number[]; target: number; + [property: string]: any; } /** @@ -992,6 +1053,7 @@ export interface MsgFlashReadReq { addr_len: number; addr_start: number[]; target: number; + [property: string]: any; } /** @@ -1005,6 +1067,7 @@ export interface MsgFlashReadResp { addr_len: number; addr_start: number[]; target: number; + [property: string]: any; } /** @@ -1018,6 +1081,7 @@ export interface MsgFlashReadResp { export interface MsgFrontEndGain { if_gain: number[]; rf_gain: number[]; + [property: string]: any; } /** @@ -1033,6 +1097,7 @@ export interface MsgFwd { fwd_payload: number[]; protocol: number; source: number; + [property: string]: any; } /** @@ -1055,6 +1120,7 @@ export interface MsgGPSTime { ns_residual: number; tow: number; wn: number; + [property: string]: any; } /** @@ -1077,6 +1143,7 @@ export interface MsgGPSTimeGnss { ns_residual: number; tow: number; wn: number; + [property: string]: any; } /** @@ -1090,6 +1157,7 @@ export interface MsgGloBiases { l2ca_bias: number; l2p_bias: number; mask: number; + [property: string]: any; } /** @@ -1099,6 +1167,7 @@ export interface MsgGloBiases { export interface MsgGnssCapb { gc: GnssCapb; t_nmct: GpsTimeSEC; + [property: string]: any; } export interface GnssCapb { @@ -1117,6 +1186,7 @@ export interface GnssCapb { qzss_active: number; sbas_active: number; sbas_l5: number; + [property: string]: any; } /** @@ -1129,6 +1199,7 @@ export interface MsgGnssTimeOffset { microseconds: number; milliseconds: number; weeks: number; + [property: string]: any; } /** @@ -1141,6 +1212,7 @@ export interface MsgGroupDelay { t_op: GpsTimeSEC; tgd: number; valid: number; + [property: string]: any; } /** @@ -1152,6 +1224,7 @@ export interface MsgGroupMeta { group_id: number; group_msgs: number[]; n_group_msgs: number; + [property: string]: any; } /** @@ -1165,6 +1238,7 @@ export interface MsgGroupMeta { */ export interface MsgHeartbeat { flags: number; + [property: string]: any; } /** @@ -1174,6 +1248,7 @@ export interface MsgHeartbeat { */ export interface MsgIarState { num_hyps: number; + [property: string]: any; } /** @@ -1185,6 +1260,7 @@ export interface MsgImuAux { imu_conf: number; imu_type: number; temp: number; + [property: string]: any; } /** @@ -1208,6 +1284,7 @@ export interface MsgImuRaw { gyr_z: number; tow: number; tow_f: number; + [property: string]: any; } /** @@ -1216,6 +1293,7 @@ export interface MsgImuRaw { */ export interface MsgInsStatus { flags: number; + [property: string]: any; } /** @@ -1231,6 +1309,7 @@ export interface MsgInsUpdates { tow: number; wheelticks: number; zerovel: number; + [property: string]: any; } /** @@ -1248,6 +1327,7 @@ export interface MsgIono { b2: number; b3: number; t_nmct: GpsTimeSEC; + [property: string]: any; } /** @@ -1262,6 +1342,7 @@ export interface MsgLinuxCPUState { pid: number; time: number; tname: string; + [property: string]: any; } /** @@ -1276,6 +1357,7 @@ export interface MsgLinuxMemState { pmem: number; time: number; tname: string; + [property: string]: any; } /** @@ -1286,6 +1368,7 @@ export interface MsgLinuxProcessFdCount { fd_count: number; index: number; pid: number; + [property: string]: any; } /** @@ -1294,6 +1377,7 @@ export interface MsgLinuxProcessFdCount { export interface MsgLinuxProcessFdSummary { most_opened: string; sys_fd_count: number; + [property: string]: any; } /** @@ -1306,6 +1390,7 @@ export interface MsgLinuxProcessSocketCounts { socket_count: number; socket_states: number; socket_types: number; + [property: string]: any; } /** @@ -1320,6 +1405,7 @@ export interface MsgLinuxProcessSocketQueues { send_queued: number; socket_states: number; socket_types: number; + [property: string]: any; } /** @@ -1330,6 +1416,7 @@ export interface MsgLinuxSocketUsage { max_queue_depth: number; socket_state_counts: number[]; socket_type_counts: number[]; + [property: string]: any; } /** @@ -1344,6 +1431,7 @@ export interface MsgLinuxSysState { procs_starting: number; procs_stopping: number; time: number; + [property: string]: any; } /** @@ -1353,6 +1441,7 @@ export interface MsgLinuxSysState { export interface MsgLog { level: number; text: string; + [property: string]: any; } /** @@ -1361,6 +1450,7 @@ export interface MsgLog { */ export interface MsgM25FlashWriteStatus { status: number[]; + [property: string]: any; } /** @@ -1372,6 +1462,7 @@ export interface MsgMagRaw { mag_z: number; tow: number; tow_f: number; + [property: string]: any; } /** @@ -1381,6 +1472,7 @@ export interface MsgMagRaw { export interface MsgMaskSatellite { mask: number; sid: GnssSignal; + [property: string]: any; } /** @@ -1389,6 +1481,7 @@ export interface MsgMaskSatellite { */ export interface MsgMeasurementState { states: MeasurementState[]; + [property: string]: any; } /** @@ -1399,6 +1492,7 @@ export interface MsgMeasurementState { export interface MeasurementState { cn0: number; mesid: GnssSignal; + [property: string]: any; } /** @@ -1409,6 +1503,7 @@ export interface MeasurementState { */ export interface MsgNapDeviceDnaResp { dna: number[]; + [property: string]: any; } /** @@ -1424,6 +1519,7 @@ export interface MsgNdbEvent { recv_time: number; result: number; src_sid: GnssSignal; + [property: string]: any; } /** @@ -1431,6 +1527,7 @@ export interface MsgNdbEvent { */ export interface MsgNetworkBandwidthUsage { interfaces: NetworkUsage[]; + [property: string]: any; } /** @@ -1445,6 +1542,7 @@ export interface NetworkUsage { rx_bytes: number; total_bytes: number; tx_bytes: number; + [property: string]: any; } /** @@ -1460,6 +1558,7 @@ export interface MsgNetworkStateResp { ipv6_mask_size: number; rx_bytes: number; tx_bytes: number; + [property: string]: any; } /** @@ -1472,6 +1571,7 @@ export interface MsgNetworkStateResp { export interface MsgObs { header: ObservationHeader; obs: PackedObsContent[]; + [property: string]: any; } /** @@ -1480,6 +1580,7 @@ export interface MsgObs { export interface ObservationHeader { n_obs: number; t: GpsTime; + [property: string]: any; } /** @@ -1491,6 +1592,7 @@ export interface GpsTime { ns_residual: number; tow: number; wn: number; + [property: string]: any; } /** @@ -1509,6 +1611,7 @@ export interface PackedObsContent { lock: number; P: number; sid: GnssSignal; + [property: string]: any; } /** @@ -1519,6 +1622,7 @@ export interface PackedObsContent { export interface Doppler { f: number; i: number; + [property: string]: any; } /** @@ -1529,6 +1633,7 @@ export interface Doppler { export interface CarrierPhase { f: number; i: number; + [property: string]: any; } /** @@ -1545,6 +1650,7 @@ export interface MsgOdometry { flags: number; tow: number; velocity: number; + [property: string]: any; } /** @@ -1563,6 +1669,7 @@ export interface MsgOrientEuler { tow: number; yaw: number; yaw_accuracy: number; + [property: string]: any; } /** @@ -1583,6 +1690,7 @@ export interface MsgOrientQuat { y_accuracy: number; z: number; z_accuracy: number; + [property: string]: any; } /** @@ -1591,6 +1699,7 @@ export interface MsgOrientQuat { export interface MsgOsr { header: ObservationHeader; obs: PackedOsrContent[]; + [property: string]: any; } /** @@ -1605,6 +1714,7 @@ export interface PackedOsrContent { range_std: number; sid: GnssSignal; tropo_std: number; + [property: string]: any; } /** @@ -1626,6 +1736,7 @@ export interface MsgPosECEF { x: number; y: number; z: number; + [property: string]: any; } /** @@ -1653,6 +1764,7 @@ export interface MsgPosECEFCov { x: number; y: number; z: number; + [property: string]: any; } /** @@ -1680,6 +1792,7 @@ export interface MsgPosECEFCovGnss { x: number; y: number; z: number; + [property: string]: any; } /** @@ -1701,6 +1814,7 @@ export interface MsgPosECEFGnss { x: number; y: number; z: number; + [property: string]: any; } /** @@ -1723,6 +1837,7 @@ export interface MsgPosLLH { n_sats: number; tow: number; v_accuracy: number; + [property: string]: any; } /** @@ -1752,12 +1867,14 @@ export interface MsgPosLLHAcc { orthometric_height: number; tow: number; v_accuracy: number; + [property: string]: any; } export interface EstimatedHorizontalErrorEllipse { orientation: number; semi_major: number; semi_minor: number; + [property: string]: any; } /** @@ -1785,6 +1902,7 @@ export interface MsgPosLLHCov { lon: number; n_sats: number; tow: number; + [property: string]: any; } /** @@ -1812,6 +1930,7 @@ export interface MsgPosLLHCovGnss { lon: number; n_sats: number; tow: number; + [property: string]: any; } /** @@ -1834,6 +1953,7 @@ export interface MsgPosLLHGnss { n_sats: number; tow: number; v_accuracy: number; + [property: string]: any; } /** @@ -1867,6 +1987,7 @@ export interface MsgPoseRelative { x: number; y: number; z: number; + [property: string]: any; } /** @@ -1884,6 +2005,7 @@ export interface MsgPoseRelative { export interface MsgPpsTime { flags: number; time: number; + [property: string]: any; } /** @@ -1912,6 +2034,7 @@ export interface MsgProtectionLevel { vpl: number; vvpl: number; wn: number; + [property: string]: any; } export interface MsgReferenceFrameParam { @@ -1935,6 +2058,7 @@ export interface MsgReferenceFrameParam { theta_03: number; tn: string; utn: number; + [property: string]: any; } /** @@ -1942,6 +2066,7 @@ export interface MsgReferenceFrameParam { */ export interface MsgReset { flags: number; + [property: string]: any; } /** @@ -1950,6 +2075,7 @@ export interface MsgReset { */ export interface MsgResetFilters { filter: number; + [property: string]: any; } /** @@ -1961,6 +2087,7 @@ export interface MsgSbasRaw { message_type: number; sid: GnssSignal; tow: number; + [property: string]: any; } /** @@ -1977,6 +2104,7 @@ export interface MsgSensorAidEvent { sensor_state: number; sensor_type: number; time: number; + [property: string]: any; } /** @@ -1985,6 +2113,7 @@ export interface MsgSensorAidEvent { */ export interface MsgSettingsReadByIndexReq { index: number; + [property: string]: any; } /** @@ -2001,6 +2130,7 @@ export interface MsgSettingsReadByIndexReq { export interface MsgSettingsReadByIndexResp { index: number; setting: string; + [property: string]: any; } /** @@ -2013,6 +2143,7 @@ export interface MsgSettingsReadByIndexResp { */ export interface MsgSettingsReadReq { setting: string; + [property: string]: any; } /** @@ -2024,6 +2155,7 @@ export interface MsgSettingsReadReq { */ export interface MsgSettingsReadResp { setting: string; + [property: string]: any; } /** @@ -2033,6 +2165,7 @@ export interface MsgSettingsReadResp { */ export interface MsgSettingsRegister { setting: string; + [property: string]: any; } /** @@ -2043,6 +2176,7 @@ export interface MsgSettingsRegister { export interface MsgSettingsRegisterResp { setting: string; status: number; + [property: string]: any; } /** @@ -2055,6 +2189,7 @@ export interface MsgSettingsRegisterResp { */ export interface MsgSettingsWrite { setting: string; + [property: string]: any; } /** @@ -2068,6 +2203,7 @@ export interface MsgSettingsWrite { export interface MsgSettingsWriteResp { setting: string; status: number; + [property: string]: any; } /** @@ -2088,6 +2224,7 @@ export interface MsgSolnMeta { sol_in: SolutionInputType[]; tow: number; vdop: number; + [property: string]: any; } /** @@ -2100,6 +2237,7 @@ export interface MsgSolnMeta { export interface SolutionInputType { flags: number; sensor_type: number; + [property: string]: any; } /** @@ -2113,6 +2251,7 @@ export interface MsgSpecan { freq_ref: number; freq_step: number; t: GpsTime; + [property: string]: any; } /** @@ -2126,6 +2265,7 @@ export interface MsgSsrCodeBiases { sid: GnssSignal; time: GpsTimeSEC; update_interval: number; + [property: string]: any; } /** @@ -2135,6 +2275,7 @@ export interface MsgSsrCodeBiases { export interface CodeBiasesContent { code: number; value: number; + [property: string]: any; } export interface MsgSsrCodePhaseBiasesBounds { @@ -2143,6 +2284,7 @@ export interface MsgSsrCodePhaseBiasesBounds { n_sats_signals: number; satellites_signals: CodePhaseBiasesSatSig[]; ssr_iod: number; + [property: string]: any; } export interface BoundsHeader { @@ -2151,6 +2293,7 @@ export interface BoundsHeader { sol_id: number; time: GpsTimeSEC; update_interval: number; + [property: string]: any; } export interface CodePhaseBiasesSatSig { @@ -2160,6 +2303,7 @@ export interface CodePhaseBiasesSatSig { phase_bias_bound_sig: number; sat_id: number; signal_id: number; + [property: string]: any; } /** @@ -2203,6 +2347,7 @@ export interface MsgSsrFlagHighLevel { use_iono_grid_points: number; use_iono_tile_sat_los: number; use_tropo_grid_points: number; + [property: string]: any; } export interface MsgSsrFlagIonoGridPointSatLos { @@ -2210,6 +2355,7 @@ export interface MsgSsrFlagIonoGridPointSatLos { grid_point_id: number; header: IntegritySSRHeader; n_faulty_los: number; + [property: string]: any; } export interface IntegritySSRHeader { @@ -2220,18 +2366,21 @@ export interface IntegritySSRHeader { ssr_sol_id: number; tile_id: number; tile_set_id: number; + [property: string]: any; } export interface MsgSsrFlagIonoGridPoints { faulty_points: number[]; header: IntegritySSRHeader; n_faulty_points: number; + [property: string]: any; } export interface MsgSsrFlagIonoTileSatLos { faulty_los: SvID[]; header: IntegritySSRHeader; n_faulty_los: number; + [property: string]: any; } export interface MsgSsrFlagSatellites { @@ -2243,12 +2392,14 @@ export interface MsgSsrFlagSatellites { obs_time: GpsTimeSEC; seq_num: number; ssr_sol_id: number; + [property: string]: any; } export interface MsgSsrFlagTropoGridPoints { faulty_points: number[]; header: IntegritySSRHeader; n_faulty_points: number; + [property: string]: any; } /** @@ -2261,6 +2412,7 @@ export interface MsgSsrGriddedCorrection { index: number; stec_residuals: STECResidual[]; tropo_delay_correction: TroposphericDelayCorrection; + [property: string]: any; } /** @@ -2276,6 +2428,7 @@ export interface GriddedCorrectionHeader { time: GpsTimeSEC; tropo_quality_indicator: number; update_interval: number; + [property: string]: any; } /** @@ -2296,6 +2449,7 @@ export interface MsgSsrGriddedCorrectionBounds { tropo_v_hydro_bound_sig: number; tropo_v_wet_bound_mu: number; tropo_v_wet_bound_sig: number; + [property: string]: any; } /** @@ -2307,6 +2461,7 @@ export interface STECSatElementIntegrity { stec_bound_sig: number; stec_bound_sig_dot: number; stec_residual: STECResidual; + [property: string]: any; } /** @@ -2328,6 +2483,7 @@ export interface MsgSsrOrbitClock { sid: GnssSignal; time: GpsTimeSEC; update_interval: number; + [property: string]: any; } /** @@ -2343,6 +2499,7 @@ export interface MsgSsrOrbitClockBounds { n_sats: number; orbit_clock_bounds: OrbitClockBound[]; ssr_iod: number; + [property: string]: any; } /** @@ -2358,6 +2515,7 @@ export interface OrbitClockBound { orb_radial_bound_mu: number; orb_radial_bound_sig: number; sat_id: number; + [property: string]: any; } export interface MsgSsrOrbitClockBoundsDegradation { @@ -2366,6 +2524,7 @@ export interface MsgSsrOrbitClockBoundsDegradation { orbit_clock_bounds_degradation: OrbitClockBoundDegradation; sat_bitmask: number; ssr_iod: number; + [property: string]: any; } /** @@ -2380,6 +2539,7 @@ export interface OrbitClockBoundDegradation { orb_cross_bound_sig_dot: number; orb_radial_bound_mu_dot: number; orb_radial_bound_sig_dot: number; + [property: string]: any; } /** @@ -2398,6 +2558,7 @@ export interface MsgSsrPhaseBiases { update_interval: number; yaw: number; yaw_rate: number; + [property: string]: any; } /** @@ -2409,6 +2570,7 @@ export interface PhaseBiasesContent { discontinuity_counter: number; integer_indicator: number; widelane_integer_indicator: number; + [property: string]: any; } export interface MsgSsrSatelliteApc { @@ -2417,6 +2579,7 @@ export interface MsgSsrSatelliteApc { sol_id: number; time: GpsTimeSEC; update_interval: number; + [property: string]: any; } /** @@ -2429,6 +2592,7 @@ export interface SatelliteAPC { sat_info: number; sid: GnssSignal; svn: number; + [property: string]: any; } export interface MsgSsrStecCorrection { @@ -2438,6 +2602,7 @@ export interface MsgSsrStecCorrection { stec_sat_list: STECSatElement[]; tile_id: number; tile_set_id: number; + [property: string]: any; } /** @@ -2447,6 +2612,7 @@ export interface STECSatElement { stec_coeff: number[]; stec_quality_indicator: number; sv_id: SvID; + [property: string]: any; } /** @@ -2471,6 +2637,7 @@ export interface MsgSsrTileDefinition { tile_set_id: number; time: GpsTimeSEC; update_interval: number; + [property: string]: any; } /** @@ -2481,6 +2648,7 @@ export interface MsgSsrTileDefinition { export interface MsgStartup { cause: number; startup_type: number; + [property: string]: any; } /** @@ -2493,6 +2661,7 @@ export interface MsgStatusJournal { sbp_version: number; sequence_descriptor: number; total_status_reports: number; + [property: string]: any; } /** @@ -2502,6 +2671,7 @@ export interface MsgStatusJournal { export interface StatusJournalItem { report: SubSystemReport; uptime: number; + [property: string]: any; } /** @@ -2512,6 +2682,7 @@ export interface SubSystemReport { component: number; generic: number; specific: number; + [property: string]: any; } /** @@ -2530,6 +2701,7 @@ export interface MsgStatusReport { sequence: number; status: SubSystemReport[]; uptime: number; + [property: string]: any; } /** @@ -2538,6 +2710,7 @@ export interface MsgStatusReport { */ export interface MsgStmFlashLockSector { sector: number; + [property: string]: any; } /** @@ -2546,6 +2719,7 @@ export interface MsgStmFlashLockSector { */ export interface MsgStmFlashUnlockSector { sector: number; + [property: string]: any; } /** @@ -2555,6 +2729,7 @@ export interface MsgStmFlashUnlockSector { */ export interface MsgStmUniqueIDResp { stm_id: number[]; + [property: string]: any; } /** @@ -2563,6 +2738,7 @@ export interface MsgStmUniqueIDResp { */ export interface MsgSvAzEl { azel: SvAzEl[]; + [property: string]: any; } /** @@ -2572,6 +2748,7 @@ export interface SvAzEl { az: number; el: number; sid: GnssSignal; + [property: string]: any; } /** @@ -2583,6 +2760,7 @@ export interface MsgTelSv { sv_tel: TelemetrySV[]; tow: number; wn: number; + [property: string]: any; } export interface TelemetrySV { @@ -2595,6 +2773,7 @@ export interface TelemetrySV { phase_residual: number; pseudorange_residual: number; sid: GnssSignal; + [property: string]: any; } /** @@ -2605,6 +2784,7 @@ export interface MsgThreadState { cpu: number; name: string; stack_free: number; + [property: string]: any; } /** @@ -2614,6 +2794,7 @@ export interface MsgTrackingIq { channel: number; corrs: TrackingChannelCorrelation[]; sid: GnssSignal; + [property: string]: any; } /** @@ -2622,6 +2803,7 @@ export interface MsgTrackingIq { export interface TrackingChannelCorrelation { I: number; Q: number; + [property: string]: any; } /** @@ -2630,6 +2812,7 @@ export interface TrackingChannelCorrelation { */ export interface MsgTrackingState { states: TrackingChannelState[]; + [property: string]: any; } /** @@ -2639,6 +2822,7 @@ export interface TrackingChannelState { cn0: number; fcn: number; sid: GnssSignal; + [property: string]: any; } /** @@ -2656,6 +2840,7 @@ export interface MsgUARTState { uart_a: UARTChannel; uart_b: UARTChannel; uart_ftdi: UARTChannel; + [property: string]: any; } /** @@ -2669,6 +2854,7 @@ export interface Latency { current: number; lmax: number; lmin: number; + [property: string]: any; } /** @@ -2683,6 +2869,7 @@ export interface Period { current: number; pmax: number; pmin: number; + [property: string]: any; } /** @@ -2696,6 +2883,7 @@ export interface UARTChannel { rx_throughput: number; tx_buffer_level: number; tx_throughput: number; + [property: string]: any; } /** @@ -2704,6 +2892,7 @@ export interface UARTChannel { */ export interface MsgUserData { contents: number[]; + [property: string]: any; } /** @@ -2715,6 +2904,7 @@ export interface MsgUTCLeapSecond { count_before: number; ref_dn: number; ref_wn: number; + [property: string]: any; } /** @@ -2734,6 +2924,7 @@ export interface MsgUTCTime { seconds: number; tow: number; year: number; + [property: string]: any; } /** @@ -2753,6 +2944,7 @@ export interface MsgUTCTimeGnss { seconds: number; tow: number; year: number; + [property: string]: any; } /** @@ -2780,6 +2972,7 @@ export interface MsgVelBody { x: number; y: number; z: number; + [property: string]: any; } /** @@ -2804,6 +2997,7 @@ export interface MsgVelCog { tow: number; v_up: number; v_up_accuracy: number; + [property: string]: any; } /** @@ -2822,6 +3016,7 @@ export interface MsgVelECEF { x: number; y: number; z: number; + [property: string]: any; } /** @@ -2845,6 +3040,7 @@ export interface MsgVelECEFCov { x: number; y: number; z: number; + [property: string]: any; } /** @@ -2868,6 +3064,7 @@ export interface MsgVelECEFCovGnss { x: number; y: number; z: number; + [property: string]: any; } /** @@ -2886,6 +3083,7 @@ export interface MsgVelECEFGnss { x: number; y: number; z: number; + [property: string]: any; } /** @@ -2906,6 +3104,7 @@ export interface MsgVelNED { n_sats: number; tow: number; v_accuracy: number; + [property: string]: any; } /** @@ -2931,6 +3130,7 @@ export interface MsgVelNEDCov { n: number; n_sats: number; tow: number; + [property: string]: any; } /** @@ -2956,6 +3156,7 @@ export interface MsgVelNEDCovGnss { n: number; n_sats: number; tow: number; + [property: string]: any; } /** @@ -2976,6 +3177,7 @@ export interface MsgVelNEDGnss { n_sats: number; tow: number; v_accuracy: number; + [property: string]: any; } /** @@ -2995,6 +3197,7 @@ export interface MsgWheeltick { source: number; ticks: number; time: number; + [property: string]: any; } /** @@ -3003,6 +3206,7 @@ export interface MsgWheeltick { */ export interface OdoInputType { flags: number; + [property: string]: any; } /** @@ -3017,6 +3221,7 @@ export interface STECHeader { tile_set_id: number; time: GpsTimeSEC; update_interval: number; + [property: string]: any; } // Converts JSON strings to/from your types @@ -4743,11 +4948,25 @@ export class Convert { } } -function invalidValue(typ: any, val: any, key: any = ''): never { - if (key) { - throw Error(`Invalid value for key "${key}". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`); +function invalidValue(typ: any, val: any, key: any, parent: any = ''): never { + const prettyTyp = prettyTypeName(typ); + const parentText = parent ? ` on ${parent}` : ''; + const keyText = key ? ` for key "${key}"` : ''; + throw Error(`Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}`); +} + +function prettyTypeName(typ: any): string { + if (Array.isArray(typ)) { + if (typ.length === 2 && typ[0] === undefined) { + return `an optional ${prettyTypeName(typ[1])}`; + } else { + return `one of [${typ.map(a => { return prettyTypeName(a); }).join(", ")}]`; + } + } else if (typeof typ === "object" && typ.literal !== undefined) { + return typ.literal; + } else { + return typeof typ; } - throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`, ); } function jsonToJSProps(typ: any): any { @@ -4768,10 +4987,10 @@ function jsToJSONProps(typ: any): any { return typ.jsToJSON; } -function transform(val: any, typ: any, getProps: any, key: any = ''): any { +function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any { function transformPrimitive(typ: string, val: any): any { if (typeof typ === typeof val) return val; - return invalidValue(typ, val, key); + return invalidValue(typ, val, key, parent); } function transformUnion(typs: any[], val: any): any { @@ -4783,17 +5002,17 @@ function transform(val: any, typ: any, getProps: any, key: any = ''): any { return transform(val, typ, getProps); } catch (_) {} } - return invalidValue(typs, val); + return invalidValue(typs, val, key, parent); } function transformEnum(cases: string[], val: any): any { if (cases.indexOf(val) !== -1) return val; - return invalidValue(cases, val); + return invalidValue(cases.map(a => { return l(a); }), val, key, parent); } function transformArray(typ: any, val: any): any { // val must be an array with no invalid elements - if (!Array.isArray(val)) return invalidValue("array", val); + if (!Array.isArray(val)) return invalidValue(l("array"), val, key, parent); return val.map(el => transform(el, typ, getProps)); } @@ -4803,24 +5022,24 @@ function transform(val: any, typ: any, getProps: any, key: any = ''): any { } const d = new Date(val); if (isNaN(d.valueOf())) { - return invalidValue("Date", val); + return invalidValue(l("Date"), val, key, parent); } return d; } function transformObject(props: { [k: string]: any }, additional: any, val: any): any { if (val === null || typeof val !== "object" || Array.isArray(val)) { - return invalidValue("object", val); + return invalidValue(l(ref || "object"), val, key, parent); } const result: any = {}; Object.getOwnPropertyNames(props).forEach(key => { const prop = props[key]; const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined; - result[prop.key] = transform(v, prop.typ, getProps, prop.key); + result[prop.key] = transform(v, prop.typ, getProps, key, ref); }); Object.getOwnPropertyNames(val).forEach(key => { if (!Object.prototype.hasOwnProperty.call(props, key)) { - result[key] = transform(val[key], additional, getProps, key); + result[key] = transform(val[key], additional, getProps, key, ref); } }); return result; @@ -4829,10 +5048,12 @@ function transform(val: any, typ: any, getProps: any, key: any = ''): any { if (typ === "any") return val; if (typ === null) { if (val === null) return val; - return invalidValue(typ, val); + return invalidValue(typ, val, key, parent); } - if (typ === false) return invalidValue(typ, val); + if (typ === false) return invalidValue(typ, val, key, parent); + let ref: any = undefined; while (typeof typ === "object" && typ.ref !== undefined) { + ref = typ.ref; typ = typeMap[typ.ref]; } if (Array.isArray(typ)) return transformEnum(typ, val); @@ -4840,7 +5061,7 @@ function transform(val: any, typ: any, getProps: any, key: any = ''): any { return typ.hasOwnProperty("unionMembers") ? transformUnion(typ.unionMembers, val) : typ.hasOwnProperty("arrayItems") ? transformArray(typ.arrayItems, val) : typ.hasOwnProperty("props") ? transformObject(getProps(typ), typ.additional, val) - : invalidValue(typ, val); + : invalidValue(typ, val, key, parent); } // Numbers can be parsed by Date but shouldn't be. if (typ === Date && typeof val !== "number") return transformDate(val); @@ -4855,6 +5076,10 @@ function uncast(val: T, typ: any): any { return transform(val, typ, jsToJSONProps); } +function l(typ: any) { + return { literal: typ }; +} + function a(typ: any) { return { arrayItems: typ }; }