int main(void) { int i, len, n; const int num_tests = 500000; printf("Encode test #1:\n"); len = sizeof(enc_test_1); n = encode_4b6b(enc_test_1, result, len); print_bytes(result, n); printf("Encode test #2:\n"); len = sizeof(enc_test_2); n = encode_4b6b(enc_test_2, result, len); print_bytes(result, n); printf("Decode test #1:\n"); len = sizeof(dec_test_1); n = decode_4b6b(dec_test_1, result, len); if (n >= 0) { print_bytes(result, n); } else { printf("Decoding error!\n"); return 1; } printf("Decode test #2:\n"); len = sizeof(dec_test_2); n = decode_4b6b(dec_test_2, result, len); if (n >= 0) { print_bytes(result, n); } else { printf("Decoding error!\n"); return 1; } printf("Inverse test:\n"); for (i = 0; i < num_tests; ++i) { randomly_fill(test, 128); n = encode_4b6b(test, tmp, 128); len = decode_4b6b(tmp, result, n); if (len != 128) { printf("Decoding error!\n"); return 1; } if (memcmp(result, test, 128) != 0) { printf("Decoded to wrong value!\n"); return 1; } } return 0; }
void sendMedtronicMessage (uint8_t const * const message, size_t const length, uint8_t const repeat_count ) { encode_4b6b(message, length, rfMessage, &rfLength); PKTLEN = rfLength; stopTimerInt (); RFST = RFST_SIDLE; { size_t j=0; for (; j<repeat_count; j++) { RFST = RFST_STX; { size_t i=0; for(; i<rfLength; i++) { while (!RFTXRXIF); TCON &= 0xFD; RFD = rfMessage[i]; } } delay( 4096 ); } } PKTLEN = 0xFF; RFST = RFST_SIDLE; RFST = RFST_SRX; enableTimerInt (); }
void send_packet(uint8_t *buf, size_t len) { int n; buf[len - 1] = crc8(buf, len - 1); print_time(); #if VERBOSE printf("Transmitting packet:\n"); #else printf("> "); #endif print_bytes(buf, len); n = encode_4b6b(buf, packet, len); #if VERBOSE printf("4b/6b encoding:\n"); print_bytes(packet, n); #endif radio_transmit(packet, n); }