Ocean Systems Lab  
Ocean Systems Lab Heriot-Watt University Ocean Systems Laboratory




The Ocean Systems Laboratory (OSL), Heriot-Watt University has developed a software library, named Ocean-Shell, for providing inter-process communication and control for its embedded computer systems. This low-overhead, flexible library is directly applicable to many UUV programmes. This technology is integrated into many of SeeByte's technologies including SeeTrack.


The Ocean-Shell is a software library implementing a low overhead architecture for organising and communicating between distributed processes. Its low overhead in terms of execution speed, size and complexity make it eminently suited for embedded applications. It provides two basic functions to the developer: * A simple mechanism for passing arbitrary data and signals between different process, situated locally or distributed across an IP (Internet Protocol) network; * A regularised framework to provide an application "shell" for software code, providing facilities like process control ("start", "stop", "standby", "reset") and health monitoring. Ocean-Shell uses the notion of a MODULE as a central element of its design. A module is a self-contained program, which may be executing on a multi-tasking OS (Operating System) with other modules, or working in conjunction with modules executing on other computers linked by a normal IP-based (typically Ethernet) network.


The developer is free to use the communication mechanisms of the library without the application shell if they wish - as the regularised control mechanisms of the shell might not always be appropriate. The communication components of the library use UDP-Broadcast mechanisms to provide location transparent transmission and reception of data. Since the commonest underlying local transmission medium is Ethernet, a broadcast-based technology, there is no bandwidth penalty (in fact bandwidth is often saved by the removal of multiple transmissions to multiple destinations). If remote IP destinations (i.e. hosts not on the local LAN) need to be contacted, use of standard IP-Unicast and IP-Multicast addresses is also possible. The Ocean-Shell library encapsulates all its messages in C++ objects, and provides two APIs to the developer for the transmission and reception of these message objects. One API provides basic "send" and "receive" style methods - the other a more complex distributed shared memory style of access. The developer is free to mix APIs between different modules as appropriate, as the underlying UDP message structure is identical. The use of standard UDP mechanisms also allows 3rd party software to send and receive transmissions without use of the library. [edit] Control Ocean-Shell includes the notion of standardised process control mechanisms for the modules running in cooperation with each other. This allows the developer to arrange modules in arbitrary groupings. For example, the modules might be arranged in a tree-based hierarchy so that each module has a single parent module that monitors its status, and restarts it when necessary. Alternativel
  © 2008-2014 HW Ocean Systems Laboratory