minipac

Crates.iominipac
lib.rsminipac
version0.3.1
sourcesrc
created_at2021-11-07 23:18:19.969855
updated_at2022-12-19 21:18:36.815583
descriptionA packet radio protocol, designed for ham radio. Similar in function to AX.25
homepage
repositoryhttps://gitlab.scd31.com/stephen/minipac
max_upload_size
id478274
size59,387
Stephen D (scd31)

documentation

README

Minipac

Minipac is a client-server protocol designed to be used with low-bandwidth packet radio.

Features:

  • Compression

  • Error detection

  • Efficient packet resending

  • Packet acknowledgement

Data Transfer

Here's roughly how a data transfer works:

  • Node A sends a DataStart packet, indicating the number of packets that will be sent(not including this one) as well as the first chunk of data.
  • Node B sends a DataStartAck packet, acknowledging the request. If Node A doesn't hear this, it will resend the DataStart packet several times before aborting.
  • Node A sends all remaining packets in quick succession.
  • Node B sends a list of packet ids to Node A. These are the packet ids is it missing(lost in transit, or checksum didn't match). If Node A doesn't hear this, it will resend the last packet.
  • Node A resends the required packets, as well as a packet with the max ID to signify that it is done.
  • This repeats several times until all packets have been received and decoded properly.
  • Node B sends a DataResend packet, but with no ids. This tells Node A that it has received everything successfully.
  • The data has been transferred.

Unlike with AX.25 or AX.26, there are no constant back-and-forths, greatly speeding up the maximum transfer rate.

Commit count: 0

cargo fmt