catid/leopard

Leopard for communications RS(255,239) or RS(255,223)?

kurtulmehtap opened this issue · 1 comments

I am working in the field of communications.
Can the Leopard Library used for the RS(255,239) or RS(255,223) codes?
What should be the input parameters for these codes?
Thanks in advance.

catid commented

Leopard is an erasure code, so you'll need to be able to determine through some external mechanism which symbols were erased. By symbols I mean one element that can be recovered. For example, a file of 200 bytes broken into N=20 pieces will have 10 bytes per symbol. If each 10 byte symbol is sent over a radio with a checksum attached, and the checksum fails to match the data received, then that symbol is "erased."

RS codes when written as RS(255,239) usually indicate they're error correction codes that are equipped with a way to locate the errors. Leopard does not have an error locator so it would need, for example, a checksum on each symbol as described above to identify which pieces are lost.

RS(255, 239) would correspond to calling leo_encode() with these parameters:

buffer_bytes = size in bytes of each symbol

original_count = 239

recovery_count = 255-239 = 16

work_count = leo_encode_work_count(original_count, recovery_count);

original_data = {
pointer to first data buffer,
pointer to second data buffer,
...
);

Allocate work_count buffers and pass an array of pointers to the buffers:

work_data = {
pointer to first work buffer,
pointer to second work buffer,
...
};

Have fun!