## 2 Versatility of the Software Network Add-In of the Hydroacoustic Modem
From the perspective of user programs developed for the EviNS software framework, the universality of the software networking overlay of the modem was ensured by the inherent framework approach for constructing EviNS. In this approach, any program configuration consisted of two parts: the first, constant part, i.e., the framework itself, which remained unchanged from one configuration to another but contained slots where the second (variable) part could be placed, and interchangeable modules or extension points. With this approach, user programs created and compiled on a PC were simply added to thedeployed EviNS framework on another computing platform by straightforwardly copying them as BEAM files. Thus, user programs could be developed for the EviNS software framework, for example, on a desktop PC, and then simply copied for execution on another computing platform, such as a modern platform (with the EviNS framework already deployed on it), without the need to recompile the entire code on the new platform (i.e., both the framework code and the newly added module code). Figure 1 illustrates the architecture of the EviNS software framework URL: [[https://github.com/EvoLogics/evins/wiki](https://github.com/EvoLogics/evins/wiki)]([https://github.com/EvoLogics/evins/wiki](https://github.com/EvoLogics/evins/wiki)) (accessed on 5 October 2022), which (according to the framework construction concept) includes a set of independently operating processes, each defined as a finite state machine, with these finite state machines being controlled by external and internal events. From the perspective of the interaction between the user application and the modem, the universality of the EviNS software framework is in the development of the network modem's command interface as an open-ended list. This means that, in addition to the initial set of network-level commands provided by the framework developer, allowing the control of the modem, and a set of acknowledgments (which the modem returns to the user application to notify it of the details of command execution), users were also given the opportunity to develop their own additional commands and macros based on them, thus modifying/extending the functional capabilities laid down by the software framework developer. Therefore, the EviNS software framework can be considered as a universal tool for users to develop their own applications, which can be executed on the computing platform of their choice from a wide range of models. Moreover, a significant convenience is the ability to focus solely on the \"core work\", creating applications of practical interest, without being distracted by numerous peripheral tasks related to the specifics of the computing platform, or the need to link the developed application with a multitude of processes in the computing environment to ensure its functioning. This work is performed for the user by the constant part of the software framework. In general, for the development of user applications (protocols of the data link and network layers), the EviNS software framework was considered universal in terms of the following:  
Figure 1: The architecture of the EviNS software framework. * Its deployment and usage on various computing platforms, particularly its capability for cross-platform compilation on a desktop PC (with OS Linux Debian and the Erlang virtual machine) followed by transfer to another computing platform (the experimental part was conducted on the Odroid H2 computing platform). * The framework approach for constructing EviNS, where the user application comprised two parts: a constant part, which the user did not modify (it facilitated interaction with the computing environment), and a variable part (it contained the user module and facilitated the operation of the application according to the user's algorithm of practical interest).