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
					
				
							
								
								
									
										60
									
								
								src/bch.c
								
								
								
								
							
							
						
						
									
										60
									
								
								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) { | 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); | 	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 | #define TEST_APPLY | ||||||
| 
 | 
 | ||||||
| int main() | int main() | ||||||
|  | @ -551,7 +570,17 @@ int main() | ||||||
| 			printf("%d ", bits[i]); | 			printf("%d ", bits[i]); | ||||||
| 		} | 		} | ||||||
| 		printf("\n"); | 		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 | #endif | ||||||
|  | 
 | ||||||
| #ifdef TEST_GENERATE	 | #ifdef TEST_GENERATE	 | ||||||
| 		int bch_code[18]; | 		int bch_code[18]; | ||||||
| 		generate_bch(&bch, bits, bch_code); | 		generate_bch(&bch, bits, bch_code); | ||||||
|  | @ -563,13 +592,9 @@ int main() | ||||||
| #endif	 | #endif	 | ||||||
| #ifdef TEST_APPLY | #ifdef TEST_APPLY | ||||||
| 		int recv[63]; | 		int recv[63]; | ||||||
| 		// backwards, for now
 | 
 | ||||||
| 		for (int i = 0; i < 45; i++) { | 		for (int i = 0; i < 63; i++) { | ||||||
| 			recv[i + 18] = bits[i]; | 			recv[i] = bits[i]; | ||||||
| 		} |  | ||||||
| 	 |  | ||||||
| 		for (int i = 0; i < 18; i++) { |  | ||||||
| 			recv[i] = bits[i + 45]; |  | ||||||
| 		} | 		} | ||||||
| 	 | 	 | ||||||
| 		printf("rearranged packet [%d]: ", count); | 		printf("rearranged packet [%d]: ", count); | ||||||
|  | @ -579,12 +604,23 @@ int main() | ||||||
| 		printf("\n"); | 		printf("\n"); | ||||||
| 	 | 	 | ||||||
| 		int corrected = apply_bch(&bch, recv); | 		int corrected = apply_bch(&bch, recv); | ||||||
| 	 | 
 | ||||||
| 		printf("corrected [%d] packet: ", corrected); | 		if (corrected >= 0) { | ||||||
| 		for (int i = 0; i < 63; i++) { | 			printf("corrected [%d] packet: ", corrected); | ||||||
| 			printf("%d ", recv[i]); | 			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 | #endif | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue