Log TPMS Manchester encoding errors.

This commit is contained in:
Jared Boone 2015-11-11 11:19:17 -08:00
parent 1770dff522
commit 19f352fa13

View File

@ -541,25 +541,29 @@ void ReceiverView::on_packet_tpms(const TPMSPacketMessage& message) {
auto payload = message.packet.payload; auto payload = message.packet.payload;
auto payload_length = message.packet.bits_received; auto payload_length = message.packet.bits_received;
std::string hex_data;
std::string hex_error;
uint8_t byte_data = 0;
uint8_t byte_error = 0;
for(size_t i=0; i<payload_length; i+=2) { for(size_t i=0; i<payload_length; i+=2) {
if( payload[i+0] != payload[i+1] ) { const auto bit_data = payload[i+1];
payload[i>>1] = payload[i+1]; const auto bit_error = (payload[i+0] == payload[i+1]);
} else {
payload[i>>1] = 0;
}
}
std::string hex; byte_data <<= 1;
uint8_t c = 0; byte_data |= bit_data ? 1 : 0;
for(size_t i=0; i<15*8; i++) {
c = (c << 1) | payload[i]; byte_error <<= 1;
if( (i & 7) == 7 ) { byte_error |= bit_error ? 1 : 0;
hex += to_string_hex(c, 2);
if( ((i >> 1) & 7) == 7 ) {
hex_data += to_string_hex(byte_data, 2);
hex_error += to_string_hex(byte_error, 2);
} }
} }
auto console = reinterpret_cast<Console*>(widget_content.get()); auto console = reinterpret_cast<Console*>(widget_content.get());
console->writeln(hex); console->writeln(hex_data);
console->writeln(hex_error);
if( !f_error(&fil_tpms) ) { if( !f_error(&fil_tpms) ) {
rtc::RTC datetime; rtc::RTC datetime;
@ -572,7 +576,7 @@ void ReceiverView::on_packet_tpms(const TPMSPacketMessage& message) {
to_string_dec_uint(datetime.minute(), 2, '0') + to_string_dec_uint(datetime.minute(), 2, '0') +
to_string_dec_uint(datetime.second(), 2, '0'); to_string_dec_uint(datetime.second(), 2, '0');
std::string log = timestamp + " " + hex + "\r\n"; std::string log = timestamp + " " + hex_data + "/" + hex_error + "\r\n";
f_puts(log.c_str(), &fil_tpms); f_puts(log.c_str(), &fil_tpms);
f_sync(&fil_tpms); f_sync(&fil_tpms);
} }