Hello.
I have few quetions about the Reed Solomon Code.
1. Does it use Vandermonde matrix principle? I know it uses Galois-Field(up to 32 I believe) for arithmetics.
2. I have a simple example using a simple string "Lovefromdawngood". The specification is that the data is divided into equal slices (i.e. lets say 2 for this example). So the input string becomes: Slice 1 = Lovefrom = 8 Bytes, and Slice 2 = dawngood = 8 Bytes.
Can anyone show how I can use the RS code (shipped with LabView) to solve (or produce the recovery packets) for the above example that follows the specification below.
I just don't quite understand how the input properties of the RS code (i.e. Input Symbols [Array], code word length and data word length) with the example such as the one above that conforms to the below specs.
Any help is most apriciated.
The input slices are ordered and assigned 16-bit constants. Recovery slices are assigned 16-bit exponents. Each 2-byte word of the recovery slice is the sum of the contributions from each input slice. The contribution of each input slice is the 2-byte word of the input slice multiplied by the input slice's constant raised to the recovery slice's exponent. All these computations (adds, multiplys, powers) are done using the 16-bit Galois Field operations.
To generate the recovery data, the slices of the input files are assigned constants. This is based on the order the File IDs appear in the main packet and then by the order the slices appear in the file. So the first slice of the first file in the main packet is assigned the first constant. The second slice of the first file is assigned the second constant. And so on. If the last slice of the first file has the Nth constant, the first slice of the second file is assigned the (N+1)th. And so on.
So, the first constant is the first power of two that has order 65535. The second constant is the next power of two that has order 65535. And so on. A power of two has order 65535 if the exponent is not equal to 0 modulus 3, 5, 17, or 257. In C code, that would be (n%3 != 0 && n%5 != 0 && n%17 != 0 && n%257 != 0). Note - this is the exponent being tested, and not the constant itself. There are 32768 valid constants. The first few are:
- 2
- 4
- 16
- 128
- 256
- 2048
- 8192
- 16384
- 4107
- 32856
- 17132 ...