Ejemplo n.º 1
0
  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];
    }
  }
Ejemplo n.º 2
0
  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];
    }
  }