diff --git a/docs/_static/ea440_1.png b/docs/_static/ea440_1.png new file mode 100644 index 00000000..a8845232 Binary files /dev/null and b/docs/_static/ea440_1.png differ diff --git a/docs/_static/ea440_2.png b/docs/_static/ea440_2.png new file mode 100644 index 00000000..d01f68cc Binary files /dev/null and b/docs/_static/ea440_2.png differ diff --git a/docs/_static/ea440_3.png b/docs/_static/ea440_3.png new file mode 100644 index 00000000..d811b0f0 Binary files /dev/null and b/docs/_static/ea440_3.png differ diff --git a/docs/_static/ea440_4.png b/docs/_static/ea440_4.png new file mode 100644 index 00000000..feab9d4e Binary files /dev/null and b/docs/_static/ea440_4.png differ diff --git a/docs/_static/ea440_5.png b/docs/_static/ea440_5.png new file mode 100644 index 00000000..d699458e Binary files /dev/null and b/docs/_static/ea440_5.png differ diff --git a/docs/app_b_connection_settings.rst b/docs/app_b_connection_settings.rst index 75f367c7..add74aad 100644 --- a/docs/app_b_connection_settings.rst +++ b/docs/app_b_connection_settings.rst @@ -444,3 +444,69 @@ not currently known thus the user must confirm reception in the acquisition syst :figclass: align-center While running PDS2000 in acquisition mode, you can verify reception in the Status displays and the “Raw Data” displays. Check the date, time, latitude, longitude against what you sent from SSP package. + +Kongsberg EA440 +--------------- + +The Konsgsberg EA440/EA640 single-beam echo sounder data acquisition system accepts SVP transmissions from the *Sound Speed* package. A method to verify reception of the cast is not currently known thus the user should confirm reception in the acquisition system. + +In the *Setup* tab of the EA440 software, open the *Installation* window and under *I/O Setup*, configure the IP address and port number where the casts transmitted from the *Sound Speed* package should be received (:numref:`ea440_1_fig`). + +.. _ea440_1_fig: + +.. figure:: ./_static/ea440_1.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Add a new LAN Port to receive casts from SSP package. + +Under *Sensor Installation*, add a new sensor with type *Sound Velocity Profile EM*. Select the newly created LAN Port as the port associated with this sensor. Make sure that the S01 datagram is enabled (:numref:`ea440_2_fig`). + +.. _ea440_2_fig: + +.. figure:: ./_static/ea440_2.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Add a new sensor in the EM S01 format to decode casts from SSP package. + +Open the *Monitor* window to verify successfull reception of a cast from the *Sound Speed* package (:numref:`ea440_3_fig`). Make sure that the *Sound Speed* package is properly configured with an Output client using the EA440 protocol to accomplish this test. + + .. _ea440_3_fig: + +.. figure:: ./_static/ea440_3.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Verify successfull reception of a cast from the *Sound Speed* package using the *Monitor* window + +In the *Setup* tab of the EA440 software, open the *Environment* window and under *Water Column*, make sure that the sound speed and temperature sources are set to *Profile* (:numref:`ea440_4_fig`). + + .. _ea440_4_fig: + +.. figure:: ./_static/ea440_4.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Source selection for sound speed and temperature + +Under *Sound Velocity Profile*, select *Profile From Network* as source. Reception of a new cast from the *Sound Speed* package should immediately update in the sound speed plot (:numref:`ea440_5_fig`). + + .. _ea440_5_fig: + +.. figure:: ./_static/ea440_5.png + :width: 600px + :align: center + :alt: alternate text + :figclass: align-center + + Sound speed profile received from the *Sound Speed* package and displayed in the EA440 software + diff --git a/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py b/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py index 35a8439b..2104e0c2 100644 --- a/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py +++ b/hyo2/ssm2/app/gui/soundspeedsettings/widgets/output.py @@ -250,8 +250,9 @@ def new_client(self): while True: # noinspection PyCallByClass protocol, ok = QtWidgets.QInputDialog.getText(self, "New client", - "Input the protocol (SIS, KCTRL, HYPACK, PDS2000, or QINSY)", - QtWidgets.QLineEdit.EchoMode.Normal, + "Input the protocol (" \ + "SIS, KCTRL, EA440, HYPACK, PDS2000, or QINSY)", + QtWidgets.QLineEdit.Normal, "SIS") if not ok: return diff --git a/hyo2/ssm2/lib/client/client.py b/hyo2/ssm2/lib/client/client.py index dfabb6f8..5f9697bd 100644 --- a/hyo2/ssm2/lib/client/client.py +++ b/hyo2/ssm2/lib/client/client.py @@ -33,7 +33,7 @@ def send_cast(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) -> bool logger.info("transmitting to %s: [%s:%s:%s]" % (self.name, self.ip, self.port, self.protocol)) - if self.protocol == "HYPACK": + if (self.protocol == "HYPACK"): success = self.send_hyp_format(prj=prj) else: success = self.send_kng_format(prj=prj, server_mode=server_mode) @@ -51,6 +51,9 @@ def send_kng_format(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) - if (self.protocol == "QINSY") or (self.protocol == "PDS2000"): kng_fmt = Dicts.kng_formats['S12'] logger.info("forcing S12 format") + if (self.protocol == "EA440"): + kng_fmt = Dicts.kng_formats['S01'] + logger.info("forcing S01 format") apply_thin = True apply_12k = True @@ -60,6 +63,9 @@ def send_kng_format(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) - tolerances = [0.001, 0.005, 0.01, 0.05, 0.1, 0.5] elif self.protocol == "PDS2000": apply_12k = False + elif self.protocol == "EA440": + apply_12k = False + logger.info("bypassing the 12k meter depth extension") tx_data = None for tolerance in tolerances: @@ -91,9 +97,10 @@ def send_kng_format(self, prj: 'SoundSpeedLibrary', server_mode: bool = False) - return self._transmit(tx_data) def send_hyp_format(self, prj: 'SoundSpeedLibrary') -> bool: - logger.info("using hyp format") + logger.info("using hypack format") calc = Calc() tx_data = calc.convert(prj.ssp) + return self._transmit(tx_data) def _transmit(self, tx_data: Union[bytes, str]) -> bool: diff --git a/hyo2/ssm2/lib/profile/dicts.py b/hyo2/ssm2/lib/profile/dicts.py index c4aeec98..ac120f96 100644 --- a/hyo2/ssm2/lib/profile/dicts.py +++ b/hyo2/ssm2/lib/profile/dicts.py @@ -168,6 +168,7 @@ def first_match(cls, dct, val): ("PDS2000", 2), ("QINSY", 3), ("KCTRL", 4), + ("EA440", 5), ])