mirror of https://github.com/wb2osz/direwolf.git
checked return status and found that we _can_ use 'forward' packets (data + bch), not only (bch + data).
This commit is contained in:
parent
475f951457
commit
53d5b2b9f8
56
src/bch.c
56
src/bch.c
|
@ -505,10 +505,29 @@ void bytes_to_bits(int *bytes, int *bit_dest, int num_bits) {
|
|||
}
|
||||
}
|
||||
|
||||
void bits_to_bytes(int *bits, int *byte_dest, int num_bits) {
|
||||
|
||||
int index;
|
||||
|
||||
for (int i = 0; i < num_bits; i++) {
|
||||
index = i / 8;
|
||||
if (i % 8 == 0) {
|
||||
byte_dest[index] = 0;
|
||||
}
|
||||
|
||||
byte_dest[index] <<= 1;
|
||||
byte_dest[index] |= bits[i] & 0x01;
|
||||
}
|
||||
|
||||
byte_dest[index] <<= 8 - (num_bits % 8);
|
||||
}
|
||||
|
||||
|
||||
void dump_bch(bch_t *bch) {
|
||||
printf("m: %d length: %d t: %d n: %d k: %d\n", bch->m, bch->length, bch->t, bch->n, bch->k);
|
||||
}
|
||||
|
||||
#undef TEST_BYTES_TO_BITS
|
||||
#define TEST_APPLY
|
||||
|
||||
int main()
|
||||
|
@ -551,7 +570,17 @@ int main()
|
|||
printf("%d ", bits[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
int temp[8];
|
||||
bits_to_bytes(bits, temp, 63);
|
||||
printf("bits_to_bytes pkt [%d]\n", count);
|
||||
for (int i = 0; i < 8; i++) {
|
||||
printf("%02x ", temp[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef TEST_GENERATE
|
||||
int bch_code[18];
|
||||
generate_bch(&bch, bits, bch_code);
|
||||
|
@ -563,13 +592,9 @@ int main()
|
|||
#endif
|
||||
#ifdef TEST_APPLY
|
||||
int recv[63];
|
||||
// backwards, for now
|
||||
for (int i = 0; i < 45; i++) {
|
||||
recv[i + 18] = bits[i];
|
||||
}
|
||||
|
||||
for (int i = 0; i < 18; i++) {
|
||||
recv[i] = bits[i + 45];
|
||||
for (int i = 0; i < 63; i++) {
|
||||
recv[i] = bits[i];
|
||||
}
|
||||
|
||||
printf("rearranged packet [%d]: ", count);
|
||||
|
@ -580,11 +605,22 @@ int main()
|
|||
|
||||
int corrected = apply_bch(&bch, recv);
|
||||
|
||||
printf("corrected [%d] packet: ", corrected);
|
||||
for (int i = 0; i < 63; i++) {
|
||||
printf("%d ", recv[i]);
|
||||
if (corrected >= 0) {
|
||||
printf("corrected [%d] packet: ", corrected);
|
||||
for (int i = 0; i < 63; i++) {
|
||||
printf("%d ", recv[i]);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
int temp[8];
|
||||
bits_to_bytes(recv, temp, 63);
|
||||
|
||||
printf("corrected [%d] DATA: ", count);
|
||||
for (int i = 0; i < 8; i++) {
|
||||
printf("%02x ", temp[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue