Read Me
(S)imple (L)osless (A)d-hoc (P)rotocol
Packet based data transmission protocol designed to minimize data losses
Author: David Zhang
Contact: dzz0615@gmail.com
For more information on the protocol, go to Documentation/protocol
ABOUT:
I designed this protocol when I realized that there isn't an efficient way to wirelessly transmit files using transceivers. Most protocols don't take into account the small buffer size of transceivers, leading to too much overhead and non-full packet sizes. Transceiver radios requires a long time to transmit a packet, even if it's just one byte, because the two transceivers has to sync with each other with a long preamble and exchanging of authentication data. SLAP tries to transmit as much as possible in one packet, making the most efficient use of the transceiver.
This protocol is not designed for fast transfer speed. In fact, it's slower than just sending pure data into the transceiver. However, this protocol does ensure that all the data arrived 100% intact, and they arrive in the most power efficient way. There are many other programs available if speed is all that's needed.
This protocol is also designed to be small and efficient, because it is designed to be run on embedded systems as well as desktop computers. A normal TCP stack on uClinux weighs in at almost 400kB! That's over 40% of the kernel! Not to mention all the additional bin utilities required to make use of the TCP stack. SLAP aims to be as light weight as possible. One of my aims is to make the entire program under 50kB, and be as memory efficient as possible. The user should also eventually have the option of removing/adding features at compile time, tailoring the program to their own needs, and reducing the size and memory footprint even more.
KNOWN BUGS:
-The ACK won't sync properly, causing slow transfer speeds.
-when sending a file in a subfolder, the name of the file will include the folder name.
The receiving server will throw an error because it can't create the folder.