Skip to content

Coastal Profiling Float RUDICS Server Ver 2

Last Update: 2021-09-23T10:36:45-0700 EJM

The CPF shoreside server, version 2 is built on C/C++, an evolution of the original Python cpfserver. The python version had stability issues in handling binary data on zmodem.

RUDICS Implementation

CPFs carry NAL Research A3LA-RG Iridium modems which have been enabled for RUDICS modem use. This implementation leverages the RUDICs PPP style of communication, in which the modem issues a data call to the RUDICs service hosted by Iridium, and when connected, initiates a tcp client connection to a predetermined port and address. See the white paper from Iridium for more detail.

In this implementation, all CPFs will eventually be connected on port 6565 to mbari.org. From there, Informations Services has setup a firewall rule to allow only traffic from iridium's domain to be routed to the Johnson lab server known as seaecho.shore.mbari.org, managed by Luke Coletti.

Once the connection is made, the server will prompt the float for a command by prompt of a ?. The float will have to pass its UID, serving as both authentication and identification for where data will get logged. All commands will be documented in the Command Reference section.

Server Interaction

sequenceDiagram autonumber participant S as Server participant F as Float S->>F: login: F-->>S: CPF001 S-->>F: Password: F-->>S: <UID> S->>F: $ Note right of F: login complete alt Status Report F->>S: STAT=<SBDWT STRING> S-->>F: $ end Note right of F: The float to report health and status. alt Zmodem Send F->>S: SZ=<SBDWT STRING> loop Zmodem Exchange S-->>F: **B00 F-->>S: <Data Packets> end end Note right of F: This will happen for all files enqueued.

Login Sequence

Upon TCP client connection from the float via RUDICS, the server will reply with a login: prompt. The float will reply with its unit name, e.g. CPF001. The password will be universal for all floats, but is an added guard. A float is successfully logged in when it receives a $ prompt.

Command Reference

After being loggged in, the float can commit a limited set of commands against the server.

STAT

STAT COMMAND
command format STAT=<STRING> <STRING> will be the same format as is packed into iridium SBDWT messages

SZ

SZ COMMAND
command format SZ=<FILENAME> <FILENAME> is the name of file for transfer

SZ is the command that will initiate a standard zmodem binary transmission, both sides will enter into a normal zmodem interaction. The float will send the above command, and will know that it has been received when the server replies with a standard ready message from the zmodem receive program.

RZ

Although the float is capable of receiving files, at this time we are only supporting file transfers that are mobile initiated. This feature is potentially on the CPF development roadmap for future development efforts.


CPF Project 901206, server managed by Eric Martin