NetComm
NetComm is a Network communications package. Its original design brief was as a "Configurable Classroom Communications Trainer for Naval Sonar Operator Consoles", however the type of console, operator roles etc. are all external to the application and so it can be used as any form or classroom/group communications package.
The classroom can be populated with any number of consoles - one for the teacher and one each for the students.
Each student console can be configured to mimic different Operator roles, each communicating with different subsets of the other students via 12 voice channels. Each student has two separate microphones (with upto 3 separate press-to-talk switches) that can be used on a number of separate or combined channels groups (for talking to several other students at the same time) and the outputs from each channel can be directed to any of 5 separate headphones or speakers.
The teachers console, can eavesdrop or join-in on any or all conversions. The teacher can also cross-link any channel with any other channel in another classroom. Thus mimicking, Operating Stations being linked or reporting back to higher authorities (Ship-to-ship, or Ship-to-shore).
The figure below shows a schematic of the system capabilities and an illustration of the configurable console.
CDL Solution
The CDL solution uses the Master/Slave capabilities of CLIP to to provide a transparent communications protocol between the consoles. Each Student Console will comprise of a Slave Application and the Teacher Console a Master Application. In this way any number of Student Consoles can be added to the network. The Inter-classroom communications are handled by a non-transparent TCP/IP links.
The heart of the solution is a shared Audio circuit that is resident in the Master Console, which holds the definitive channel data stores and also handles inter classroom communications.
The key to the Transparent network is the main NetComm circuit which is instantiated in every Console (Master and Slave) by defining its Presence Attribute as "Definitive".
Instantiating the circuit in this way allows every console to create and access its own input devices (microphones), output devices (speakers), mixer control, GUI displays and user controls; but to share the data stores in the Audio Circuit.
Most of the complex configurability is in the GUI to dynamically restrict/permit access to the Audio stores. This is implemented in the Channel and Output threads. The circuitry itself permits any input to be connected to any combination of channels and any channel to any combination of output speakers.
These two circuits are both instantiated by a container circuit (main app).