Protocol

ARQ

Opening a data channel

Instead of connecting to a station and staying connected until the session is closed or timed out, FreeDATA connects to a station only as long as needed. If data needs to be sent, a connection from the ISS ( Information Sending Station ) to the IRS ( Information Receiving Station ) will be established. As soon as both stations are connected, transmission immediately starts. If the transmission fails or we transmit data successfully, the data channel will be closed.

Low Bandwidth Mode / 500Hz Mode

FreeDATA has the capability of running in a low bandwidth mode, where only data modes with a bandwidth of 500Hz will be used. This information will be shared when opening a data channel. It doesn't matter if a station of a connecting pair is not running in low bandwidth mode. As soon as one station is running in this mode, the entire transmission will be reduced to 500Hz.

Note: Operators in the United States need to be aware of the following: Stations operating in an automatic mode, on certain portions of the HF bands, must restrict transmission bandwidth to 500Hz. See section 97.221(b) and(c) for frequencies where automatic stations are not bandwidth limited.

File transfer

As soon as a ISS is connected to a IRS, the file transfer starts. IRS is the speed-level master and tells ISS, which mode to use. If a burst is lost, speed-level will be decreased to the next slower mode. As soon as we received two bursts successfully, the protocol tries to increase speed-level. Every burst is CRC checked. If we are losing a burst, it will be repeated until we reach maximum retries. After receiving all data, a CRC check will be done and data will be saved to data buffer and announced through network as well.

Simple flow chart for a one frame transmission on Information Sending Station ( ISS / TX )

starttransmission=>start: Start transmission transmissionsuccess=>end: End|success transmissionnosuccess=>end: End|invalid opendatachannel=>operation: Open datachannel datachannelopened=>condition: Opened? nretries=>condition: Retry<=5? sendframe=>operation: Send frame waitforack=>subroutine: Wait for ACK ackreceived=>condition: ACK? starttransmission->opendatachannel->datachannelopened datachannelopened(no)->nretries(right) nretries(yes)->opendatachannel nretries(no, bottom)->transmissionnosuccess datachannelopened(yes)->sendframe->waitforack->ackreceived ackreceived(no, left)->sendframe(left) ackreceived(yes, bottom)->transmissionsuccess(top)