private void maxi_do_secondary_chk_even(int ecclen) { /* Handles error correction of even characters in secondary */ int[] data = new int[100]; int[] results = new int[30]; int j; int datalen = 68; ReedSolomon rs = new ReedSolomon(); if (ecclen == 20) { datalen = 84; } rs.init_gf(0x43); rs.init_code(ecclen, 1); for (j = 0; j < datalen + 1; j += 1) { if ((j & 1) == 0) { // even data[j / 2] = maxi_codeword[j + 20]; } } rs.encode(datalen / 2, data); for (j = 0; j < ecclen; j++) { results[j] = rs.getResult(j); } for (j = 0; j < (ecclen); j += 1) { maxi_codeword[datalen + (2 * j) + 20] = results[ecclen - 1 - j]; } }
private void maxi_do_primary_check() { /* Handles error correction of primary message */ int[] data = new int[15]; int[] results = new int[15]; int j; int datalen = 10; int ecclen = 10; ReedSolomon rs = new ReedSolomon(); rs.init_gf(0x43); rs.init_code(ecclen, 1); for (j = 0; j < datalen; j += 1) { data[j] = maxi_codeword[j]; } rs.encode(datalen, data); for (j = 0; j < ecclen; j++) { results[j] = rs.getResult(j); } for (j = 0; j < ecclen; j += 1) { maxi_codeword[datalen + j] = results[ecclen - 1 - j]; } }