# FreeDATA - Protocols ## ARQ Sessions An ARQ Session represents a reliable data transmission session from a sending station (A) to a receiving station (B). It uses automatic repeat request on top of different codec2 modes according to the transmission channel conditions. So lets say A wants to send some data to B. A typical scenario would be like this: ``` ISS->(1)IRS: OPEN_REQ(session id, origin, dest) IRS->(1)ISS: OPEN_ACK (session id, proto version, speed level, frames, snr) ISS->(1)IRS: INFO(id, total_bytes, total_crc) IRS->(1)ISS: INFO_ACK(id, total_crc) ISS->(1)IRS:BURST (ID, offset, payload),(ID, offset, payload),(ID, offset, payload) IRS->(1)ISS:BURST_ACK (ID, next_offset, speed level, frames, snr) ISS-->(1)IRS:Lost BURST (total or part) IRS->(1)ISS:BURST_NACK (ID, next_offset, speed level, frames, snr) ISS->(1)IRS:BURST (ID, offset, payload),(ID, offset, payload),(ID, offset, payload) IRS->(1)ISS:BURST_ACK (ID, next_offset, speed level, frames, snr) ``` ### Frame details #### SESSION_OPEN_REQ ISS sends this first DATAC13 Mode (14 bytes) |field|bytes| |-|-| |session id|1| |origin|6| |destination|6| |crc|1| #### SESSION_OPEN_ACK IRS sends this in response to a SESSION_OPEN_REQ DATAC13 Mode (14 bytes) |field|bytes| |-|-| |session id|1| |origin|6| |protocol version|1| |snr|1| |crc|3| #### SESSION_INFO ISS sends this in response to a SESSION_OPEN_ACK DATAC13 Mode (14 bytes) |field|bytes| |-|-| |session id|1| |total bytes|4| |total crc|4| |snr|1| |crc|4| #### SESSION_INFO_ACK IRS sends this in response to a SESSION_INFO DATAC13 Mode (14 bytes) |field|bytes| |-|-| |session id|1| |total crc|4| |snr|1| |speed level|1| |frames per burst|1| |crc|4| #### Data Burst ISS sends this to send data to IRS Mode according to handshake speed level Frames per burst according to handshake ##### Modulation Each burst is composed of frames_per_burst frames: |preamble|f1|f2|f3|...|postamble| ##### Each data frame |field|bytes| |-|-| |session id|1| |offset|4| |payload|(the remaining payload length)| #### DATA_BURST_ACK Sent by the IRS following successful decoding of burst. |field|bytes| |-|-| |session id|1| |next offset|4| |next speed level|1| |next frames per burst|1| |snr|1| #### DATA_BURST_NACK Sent by the IRS following unsuccessful decoding of burst or timeout. |field|bytes| |-|-| |session id|1| |next offset|4| |next speed level|1| |next frames per burst|1| |snr|1|