DazDSP / EasyDRF

EasyDRF - "Easy Digital Radio Files" - A Windows HamDRM software application for sending files over HF radio.
https://dazdsp.org/tech/EasyDRF/
28 stars 4 forks source link

Reed Solomon redundancy data #2

Closed robertcb1 closed 3 years ago

robertcb1 commented 3 years ago

Could you please add the "Reed Solomon" redundancy data option ( .RS1 .RS2 .RS3 .RS4) to EasyDRF similar to EasyPAL?

DazDSP commented 3 years ago

I have been working on adding the RS coding feature for some time, however there is a problem with the way the decoder works...

If the file header is missed (due to noise or interference), the file segments are not recombined - hence they are not available to decode by later stages.

For the RS decoding to work, all the available data needs to be assembled together and passed to the RS decoder routine - even if some of it is missing.

The EasyDRF/WinDRM code is based on the Dream source code, and it uses C Classes which are something I'm not yet familiar with - so correcting this problem is difficult.

Perhaps if there is someone reading this who is more familiar with C Classes and/or the Dream source code they could offer suggestions on how to solve this problem?

It appears that the Dream source code was written in such a way as to not process the data if the MOT file header is missing. This makes sense, as the filename and filesize information is needed to reassemble the file.

The filename and filesize data can be sent in other ways, but it will not be EasyPal compatible. The EasyPal RS protocol does not appear to be published anywhere.

The author of EasyPal - Eric, VK4AES passed away some years ago. I approached the Queensland Digital Group (QDG) for information regarding the EasyPal RS protocol, but they were unable or unwilling to help.

robertcb1 commented 3 years ago

Contact Ties PA0MBO. Its software TXAMADRM and RXAMADRM - has implemented RS coding and is compatible with EasyPAL.

DazDSP commented 3 years ago

I contacted Ties, but his software was based on DIORAMA, and not Dream - so the source code was very different.

Instead of making EasyDRF compatible with EasyPal, the protocol has been modified to address the single points of failure and make the system more reliable.

In just the last two days a solution was found to reading the partial buffer data, and the erasure list processing was also added to make the RS decoding as powerful as EasyPal.

Only RS4 mode has been implemented so far, but the results are very good.

This new code will be tested, tidied up and then uploaded here as soon as possible.

RS4

DazDSP commented 3 years ago

All RS levels 1 to 4 have now been added, along with other improvements.