Skip to main content

APIs and Communication Standards

Host Software APIs

Popoto applications communicate with the modem using JSON messages over IP sockets. The same socket-based interface supports interactive testing, automated control, application development, and access to acoustic signal data.

Popoto Host Software APIs and Application Interfaces
InterfaceDescription
pshellA Python-based command shell built on the Popoto API. It is useful for exercising commands before implementing them in an automated application.
JSONThe common communication format for Popoto is JSON messages over sockets. Although there are many ways and APIs to communicate with Popoto, all of these methods and APIs reduce to creating or displaying a JSON message to or from a socket.
MATLAB APIUses the same JSON and socket architecture for MATLAB-based control, testing, and analysis.
RESTfulProvides HTTP-based access to Popoto Modem commands and status information for applications that integrate through web services or networked control systems.
C++ APICan be used to integrate modem commands and JSON messages into compiled applications.
MARIAThe Marine Acoustic Rapid Innovation Architecture uses the Popoto API for platform communication, control, and custom signal-processing development on compatible hardware.

Acoustic Communication Standards

Supported Acoustic Communication Standards
StandardDescription
Popoto acoustic packetsDefines Popoto's native acoustic packet format, including message type, sender and receiver addressing, transmit power, payload length, modulation selection, and streaming behavior. Payload modes include FH-FSK at 80 bps, BPSK from 640-2560 bps, and QPSK from 1280-10240 bps. Coherent BPSK and QPSK modes use forward error correction and repetition coding to trade data rate for robustness. See Acoustic Message Header for the standard Popoto message structure.
PhorcysAn underwater acoustic communication standard intended for secure, interoperable communications between compatible systems. Popoto Modems support Phorcys workflows through JSON and pshell commands, with Stheno for 20-28 kHz operation and Euryale for 8-12 kHz operation on supported hardware and licensed configurations. See Phorcys Messages for message format, variables, and waveform summaries.
JANUSPopoto supports interoperability for standards-based underwater acoustic communication. JANUS defines standardized physical and data-link layers and is documented in NATO ANEP-87. Popoto's implementation supports the ratified JANUS Class IDs documented in this manual, including Class IDs 0, 2, and 16.

JANUS message fields are represented as JSON fields in the Popoto API. A single-line JSON structure can be passed to the transmitJSON command through pshell or through the C++, Python, or MATLAB APIs, allowing the same standards-based message to be tested interactively and then incorporated into an application. See JANUS Messages for supported message classes and JSON examples.