diff --git a/include/abuf.h b/include/abuf.h index 203ace35..e6c607e3 100644 --- a/include/abuf.h +++ b/include/abuf.h @@ -1,8 +1,8 @@ /** @file array buffer (string builder). - + Copyright (C) 2018 Christian Zuckschwerdt - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/include/baseband.h b/include/baseband.h index b85bd4cb..cb754e6a 100644 --- a/include/baseband.h +++ b/include/baseband.h @@ -18,8 +18,8 @@ /** This will give a noisy envelope of OOK/ASK signals. Subtract the bias (-128) and get an envelope estimation (absolute squared) - @param *iq_buf: input samples (I/Q samples in interleaved uint8) - @param *y_buf: output + @param iq_buf: input samples (I/Q samples in interleaved uint8) + @param[out] y_buf: output @param len: number of samples to process */ void envelope_detect(uint8_t const *iq_buf, uint16_t *y_buf, uint32_t len); diff --git a/include/confparse.h b/include/confparse.h index 33d031da..b0ca523b 100644 --- a/include/confparse.h +++ b/include/confparse.h @@ -1,8 +1,8 @@ /** @file Light-weight (i.e. dumb) config-file parser. - + Copyright (C) 2018 Christian W. Zuckschwerdt <zany@triq.net> - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/include/data.h b/include/data.h index 174d829d..b52a510f 100644 --- a/include/data.h +++ b/include/data.h @@ -1,19 +1,19 @@ /** @file A general structure for extracting hierarchical data from the devices; typically key-value pairs, but allows for more rich data as well. - + Copyright (C) 2015 by Erkki Seppälä <flux@modeemi.fi> - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ diff --git a/include/decoder_util.h b/include/decoder_util.h index 103d93d7..4185b996 100644 --- a/include/decoder_util.h +++ b/include/decoder_util.h @@ -1,8 +1,8 @@ /** @file High-level utility functions for decoders. - + Copyright (C) 2018 Christian Zuckschwerdt - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/include/fileformat.h b/include/fileformat.h index 952513a4..8e654d68 100644 --- a/include/fileformat.h +++ b/include/fileformat.h @@ -1,8 +1,8 @@ /** @file Various utility functions handling file formats. - + Copyright (C) 2018 Christian Zuckschwerdt - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/include/list.h b/include/list.h index a770ebed..0e4342a5 100644 --- a/include/list.h +++ b/include/list.h @@ -1,8 +1,8 @@ /** @file Generic list. - + Copyright (C) 2018 Christian Zuckschwerdt - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/include/optparse.h b/include/optparse.h index 49231b8b..bab56bd1 100644 --- a/include/optparse.h +++ b/include/optparse.h @@ -1,8 +1,8 @@ /** @file Option parsing functions to complement getopt. - + Copyright (C) 2017 Christian Zuckschwerdt - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/include/pulse_demod.h b/include/pulse_demod.h index 78029af2..ec67d38f 100644 --- a/include/pulse_demod.h +++ b/include/pulse_demod.h @@ -65,10 +65,10 @@ int pulse_demod_pwm(const pulse_data_t *pulses, r_device *device); /// Demodulate a Manchester encoded signal with a hardcoded zerobit in front. /// -/// Demodulate a Manchester encoded signal where first rising edge is counted as a databit +/// Demodulate a Manchester encoded signal where first rising edge is counted as a databit /// and therefore always will be zero (Most likely a hardcoded Oregon Scientific peculiarity) /// -/// Clock is recovered from the data based on pulse width. When time since last bit is more +/// Clock is recovered from the data based on pulse width. When time since last bit is more /// than 1.5 times the clock half period (short_width) it is declared a data edge where: /// - Rising edge means bit = 0 /// - Falling edge means bit = 1 diff --git a/include/pulse_detect.h b/include/pulse_detect.h index c6cc81a1..ae1f2148 100644 --- a/include/pulse_detect.h +++ b/include/pulse_detect.h @@ -77,12 +77,12 @@ void pulse_detect_free(pulse_detect_t *pulse_detect); /// Demodulate On/Off Keying (OOK) and Frequency Shift Keying (FSK) from an envelope signal. /// /// Function is stateful and can be called with chunks of input data. -/// @param envelope_data: Samples with amplitude envelope of carrier +/// @param envelope_data: Samples with amplitude envelope of carrier /// @param fm_data: Samples with frequency offset from center frequency /// @param len: Number of samples in input buffers /// @param samp_rate: Sample rate in samples per second -/// @param *pulses: Will return a pulse_data_t structure -/// @param *fsk_pulses: Will return a pulse_data_t structure for FSK demodulated data +/// @param[in,out] pulses: Will return a pulse_data_t structure +/// @param[in,out] fsk_pulses: Will return a pulse_data_t structure for FSK demodulated data /// @return 0 if all input sample data is processed /// @return 1 if OOK package is detected (but all sample data is still not completely processed) /// @return 2 if FSK package is detected (but all sample data is still not completely processed) diff --git a/include/term_ctl.h b/include/term_ctl.h index 16de6075..91878632 100644 --- a/include/term_ctl.h +++ b/include/term_ctl.h @@ -1,8 +1,8 @@ /** @file Terminal control utility functions. - + Copyright (C) 2018 Christian Zuckschwerdt - + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or diff --git a/src/data.c b/src/data.c index af575800..d8b2a604 100644 --- a/src/data.c +++ b/src/data.c @@ -412,7 +412,7 @@ void print_array_value(data_output_t *output, data_array_t *array, char *format, #else char buffer[element_size]; #endif - + if (!dmt[array->type].array_is_boxed) { memcpy(buffer, (void **)((char *)array->values + element_size * idx), element_size); print_value(output, array->type, buffer, format); @@ -915,7 +915,7 @@ static void datagram_client_close(datagram_client_t *client) #ifdef _WIN32 WSACleanup(); -#endif +#endif } static void datagram_client_send(datagram_client_t *client, const char *message, size_t message_len) @@ -986,7 +986,7 @@ static void print_syslog_data(data_output_t *output, data_t *data, char *format) gmtime_s(&tm_info, &now); #else gmtime_r(&now, &tm_info); -#endif +#endif char timestamp[21]; strftime(timestamp, 21, "%Y-%m-%dT%H:%M:%SZ", &tm_info); diff --git a/src/devices/ambient_weather.c b/src/devices/ambient_weather.c index a2a9cf1f..0da80a72 100644 --- a/src/devices/ambient_weather.c +++ b/src/devices/ambient_weather.c @@ -1,7 +1,7 @@ /* Ambient Weather F007TH Thermo-Hygrometer * contributed by David Ediger * discovered by Ron C. Lewis - * + * * The check is an LFSR Digest-8, gen 0x98, key 0x3e, init 0x64 */ diff --git a/src/devices/brennenstuhl_rcs_2044.c b/src/devices/brennenstuhl_rcs_2044.c index ee8618af..f75d0100 100644 --- a/src/devices/brennenstuhl_rcs_2044.c +++ b/src/devices/brennenstuhl_rcs_2044.c @@ -76,7 +76,7 @@ static int brennenstuhl_rcs_2044_process_row(r_device *decoder, bitbuffer_t cons key = "D"; else if (control_key == 0x01) key = "E"; /* (does not exist on the remote, but can be set and is accepted by receiver) */ - else return 0; + else return 0; /* None of the keys has been pressed and we still received a message. * Skip it. It happens sometimes as the last code repetition */ diff --git a/src/devices/esa.c b/src/devices/esa.c index d36377e2..36d2f9b5 100644 --- a/src/devices/esa.c +++ b/src/devices/esa.c @@ -43,7 +43,7 @@ static int esa_cost_callback(r_device *decoder, bitbuffer_t *bitbuffer) unsigned impulse_constant, impulses_val, impulses_total; float energy_total_val, energy_impulse_val; - if (bitbuffer->bits_per_row[0] != 160 || bitbuffer->num_rows != 1) + if (bitbuffer->bits_per_row[0] != 160 || bitbuffer->num_rows != 1) return 0; // remove first two bytes? diff --git a/src/devices/fordremote.c b/src/devices/fordremote.c index a7a6b32e..222af00c 100644 --- a/src/devices/fordremote.c +++ b/src/devices/fordremote.c @@ -2,14 +2,14 @@ * * Identifies event, but does not attempt to decrypt rolling code... * - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Note: this used to have a broken PWM decoding, but is now proper DMC. - * The output changed and the fields are very likely not as intended. + * The output changed and the fields are very likely not as intended. * * [00] {1} 80 : 1 * [01] {9} 00 80 : 00000000 1 diff --git a/src/devices/ge_coloreffects.c b/src/devices/ge_coloreffects.c index fb472fd0..c7fd839e 100644 --- a/src/devices/ge_coloreffects.c +++ b/src/devices/ge_coloreffects.c @@ -63,8 +63,8 @@ unsigned ge_decode(r_device *decoder, bitbuffer_t *inbuf, unsigned row, unsigned char *ge_command_name(uint8_t command) { char *out = "0xxx"; - - switch(command) { + + switch(command) { case 0x5a: return "change"; break; case 0xaa: return "on"; break; case 0x55: return "off"; break; @@ -93,26 +93,26 @@ static int ge_coloreffects_decode(r_device *decoder, bitbuffer_t *bitbuffer, uns * 8-bit Command * One zero bit */ - + // Frame should be 17 decoded bits (not including preamble) if (packet_bits.bits_per_row[0] != 17) return 0; - + // First two bits must be 0 if (*packet_bits.bb[0] & 0xc0) return 0; - + // Last bit must be 0 if (bit(packet_bits.bb[0], 16) != 0) return 0; - + // Extract device ID // We want bits [2..8]. Since the first two bits are zero, we'll just take the entire first byte device_id = *packet_bits.bb[0]; // Extract command from the second byte bitbuffer_extract_bytes(&packet_bits, 0, 8, &command, 8); - + // Format data data = data_make( "model", "", DATA_STRING, "GE Color Effects Remote", diff --git a/src/devices/interlogix.c b/src/devices/interlogix.c index 857a8bc8..e4529607 100644 --- a/src/devices/interlogix.c +++ b/src/devices/interlogix.c @@ -12,9 +12,9 @@ /* * Interlogix/GE/UTC Wireless 319.5 mhz Devices - * + * * Frequency: 319508000 - * + * * Decoding done per us patent #5761206 * https://www.google.com/patents/US5761206 * diff --git a/src/devices/lacrosse_TX141TH_Bv2.c b/src/devices/lacrosse_TX141TH_Bv2.c index ade173e0..0aa79449 100644 --- a/src/devices/lacrosse_TX141TH_Bv2.c +++ b/src/devices/lacrosse_TX141TH_Bv2.c @@ -57,7 +57,7 @@ * The TX141-BV2 is the temperature only version of the TX141TH-BV2 sensor. * * Changes: - * - LACROSSE_TX141_BITLEN is 37 instead of 40. + * - LACROSSE_TX141_BITLEN is 37 instead of 40. * - The humidity variable has been removed for TX141. * - Battery check bit is inverse of TX141TH. * - temp_f removed, temp_c (celsius) is what's provided by the device. diff --git a/src/devices/m_bus.c b/src/devices/m_bus.c index 4bfcb8e7..67308269 100644 --- a/src/devices/m_bus.c +++ b/src/devices/m_bus.c @@ -253,7 +253,7 @@ static int m_bus_mode_c_t_callback(r_device *decoder, bitbuffer_t *bitbuffer) { m_bus_block1_t block1 = {0}; // Block1 fields from Data Link layer // Validate package length - if (bitbuffer->bits_per_row[0] < (32+13*8) || bitbuffer->bits_per_row[0] > (64+256*8)) { // Min/Max (Preamble + payload) + if (bitbuffer->bits_per_row[0] < (32+13*8) || bitbuffer->bits_per_row[0] > (64+256*8)) { // Min/Max (Preamble + payload) return 0; } @@ -324,7 +324,7 @@ static int m_bus_mode_r_callback(r_device *decoder, bitbuffer_t *bitbuffer) { m_bus_block1_t block1 = {0}; // Block1 fields from Data Link layer // Validate package length - if (bitbuffer->bits_per_row[0] < (32+13*8) || bitbuffer->bits_per_row[0] > (64+256*8)) { // Min/Max (Preamble + payload) + if (bitbuffer->bits_per_row[0] < (32+13*8) || bitbuffer->bits_per_row[0] > (64+256*8)) { // Min/Max (Preamble + payload) return 0; } @@ -358,7 +358,7 @@ static int m_bus_mode_f_callback(r_device *decoder, bitbuffer_t *bitbuffer) { m_bus_block1_t block1 = {0}; // Block1 fields from Data Link layer // Validate package length - if (bitbuffer->bits_per_row[0] < (32+13*8) || bitbuffer->bits_per_row[0] > (64+256*8)) { // Min/Max (Preamble + payload) + if (bitbuffer->bits_per_row[0] < (32+13*8) || bitbuffer->bits_per_row[0] > (64+256*8)) { // Min/Max (Preamble + payload) return 0; } diff --git a/src/devices/maverick_et73.c b/src/devices/maverick_et73.c index 68960658..0ff868d9 100644 --- a/src/devices/maverick_et73.c +++ b/src/devices/maverick_et73.c @@ -14,20 +14,20 @@ /* Based on TP12 code -[00] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[01] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[02] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[03] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[04] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[05] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[06] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[07] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[08] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[09] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[10] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[11] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[12] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 -[13] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[00] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[01] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[02] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[03] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[04] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[05] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[06] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[07] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[08] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[09] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[10] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[11] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[12] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 +[13] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 Layout appears to be: @@ -35,7 +35,7 @@ Layout appears to be: [01] {48} 68 00 01 0b 90 fc : 01101000 00000000 00000001 00001011 10010000 11111100 I = random id -1 = temperature sensor 1 12 bits +1 = temperature sensor 1 12 bits 2 = temperature sensor 2 12 bits X = unknown, checksum maybe ? diff --git a/src/devices/philips.c b/src/devices/philips.c index da4df99d..32275ad6 100644 --- a/src/devices/philips.c +++ b/src/devices/philips.c @@ -1,12 +1,12 @@ -/* - * Philips outdoor temperature sensor -- used with various Philips clock +/* + * Philips outdoor temperature sensor -- used with various Philips clock * radios (tested on AJ3650) * * Not tested, but these should also work: AJ7010, AJ260 ... maybe others? * * A complete message is 112 bits: * 4-bit initial preamble, always 0 - * 4-bit packet separator, always 0, followed by 32-bit data packet. + * 4-bit packet separator, always 0, followed by 32-bit data packet. * Packets are repeated 3 times for 108 bits total. * * 32-bit data packet format: @@ -18,7 +18,7 @@ * b - battery status: 0 = OK, 1 = LOW (1 bit) * ? - unknown: always 1 in every packet I've seen (1 bit) * s - CRC: non-standard CRC-4, poly 0x9, init 0x1 - * + * * Pulse width: * Short: 2000 us = 0 * Long: 6000 us = 1 @@ -26,8 +26,8 @@ * Short: 6000 us * Long: 2000 us * Gap width between packets: 29000 us - * - * Presumably the 4-bit preamble is meant to be a sync of some sort, + * + * Presumably the 4-bit preamble is meant to be a sync of some sort, * but it has the exact same pulse/gap width as a short pulse, and * gets processed as data. * @@ -66,7 +66,7 @@ static int philips_callback(r_device *decoder, bitbuffer_t *bitbuffer) /* Correct number of rows? */ if (bitbuffer->num_rows != 1) { if (decoder->verbose > 1) { - fprintf(stderr, "%s: wrong number of rows (%d)\n", + fprintf(stderr, "%s: wrong number of rows (%d)\n", __func__, bitbuffer->num_rows); } return 0; @@ -75,7 +75,7 @@ static int philips_callback(r_device *decoder, bitbuffer_t *bitbuffer) /* Correct bit length? */ if (bitbuffer->bits_per_row[0] != PHILIPS_BITLEN) { if (decoder->verbose > 1) { - fprintf(stderr, "%s: wrong number of bits (%d)\n", + fprintf(stderr, "%s: wrong number of bits (%d)\n", __func__, bitbuffer->bits_per_row[0]); } return 0; diff --git a/src/devices/schraeder.c b/src/devices/schraeder.c index 906a0e6b..4ed7fcaa 100644 --- a/src/devices/schraeder.c +++ b/src/devices/schraeder.c @@ -84,7 +84,7 @@ static int schraeder_callback(r_device *decoder, bitbuffer_t *bitbuffer) { * TPMS Model: Schrader Electronics EG53MA4 * Contributed by: Leonardo Hamada (hkazu) * Probable packet payload: - * + * * SSSSSSSSSS ???????? IIIIII TT PP CC * * S = sync @@ -95,7 +95,6 @@ static int schraeder_callback(r_device *decoder, bitbuffer_t *bitbuffer) { * C = checksum, sum of byte data modulo 256 * */ - static int schrader_EG53MA4_callback(r_device *decoder, bitbuffer_t *bitbuffer) { data_t *data; uint8_t b[10]; @@ -110,12 +109,12 @@ static int schrader_EG53MA4_callback(r_device *decoder, bitbuffer_t *bitbuffer) /* Check for incorrect number of bits received */ if (bitbuffer->bits_per_row[0] != 120) return 0; - + /* Discard the first 40 bits */ bitbuffer_extract_bytes(bitbuffer, 0, 40, b, 80); /* Calculate the checksum */ - checksum = (b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+b[6]+b[7]+b[8]) & 0xff; + checksum = (b[0]+b[1]+b[2]+b[3]+b[4]+b[5]+b[6]+b[7]+b[8]) & 0xff; if (checksum != b[9]) { return 0; } @@ -124,13 +123,13 @@ static int schrader_EG53MA4_callback(r_device *decoder, bitbuffer_t *bitbuffer) /* Get sensor id */ serial_id = (b[4] << 16) | (b[5] << 8) | b[6]; sprintf(id_str, "%06X", serial_id); - + flags = (b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]; sprintf(flags_str, "%08x", flags); /* Get pressure value */ pressure = b[7] * 25; - + /* Get temperature value */ temperature = b[8]; diff --git a/src/devices/thermopro_tp11.c b/src/devices/thermopro_tp11.c index b18d7b43..9817608a 100644 --- a/src/devices/thermopro_tp11.c +++ b/src/devices/thermopro_tp11.c @@ -15,7 +15,7 @@ [00] {33} db 41 57 c2 80 : 11011011 01000001 01010111 11000010 1 [01] {33} db 41 57 c2 80 : 11011011 01000001 01010111 11000010 1 [02] {33} db 41 57 c2 80 : 11011011 01000001 01010111 11000010 1 -[03] {32} db 41 57 c2 : 11011011 01000001 01010111 11000010 +[03] {32} db 41 57 c2 : 11011011 01000001 01010111 11000010 The code below checks that at least three rows are the same and that the validation code is correct for the known device ids. @@ -27,7 +27,7 @@ static int valid(unsigned data, unsigned check) { // 0 and 0xb34^0xdb4 == 0x680. It needs to be updated for others, the // values starting at table[12] are most likely wrong for other devices. static int table[] = { - 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x51, 0xa2, + 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x51, 0xa2, 0x15, 0x2a, 0x54, 0xa8, 0x00, 0x00, 0xed, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00}; for(int i=0;i<24;i++) { diff --git a/src/devices/thermopro_tp12.c b/src/devices/thermopro_tp12.c index 244d745a..a0775dc2 100644 --- a/src/devices/thermopro_tp12.c +++ b/src/devices/thermopro_tp12.c @@ -14,7 +14,7 @@ /* A normal sequence for the TP12: -[00] {0} : +[00] {0} : [01] {41} 38 73 21 bb 81 80 : 00111000 01110011 00100001 10111011 10000001 1 [02] {41} 38 73 21 bb 81 80 : 00111000 01110011 00100001 10111011 10000001 1 [03] {41} 38 73 21 bb 81 80 : 00111000 01110011 00100001 10111011 10000001 1 @@ -31,7 +31,7 @@ A normal sequence for the TP12: [14] {41} 38 73 21 bb 81 80 : 00111000 01110011 00100001 10111011 10000001 1 [15] {41} 38 73 21 bb 81 80 : 00111000 01110011 00100001 10111011 10000001 1 [16] {41} 38 73 21 bb 81 80 : 00111000 01110011 00100001 10111011 10000001 1 -[17] {40} 38 73 21 bb 81 : 00111000 01110011 00100001 10111011 10000001 +[17] {40} 38 73 21 bb 81 : 00111000 01110011 00100001 10111011 10000001 Layout appears to be: @@ -55,10 +55,9 @@ static int thermopro_tp12_sensor_callback(r_device *decoder, bitbuffer_t *bitbuf // (Really 17 rows, but the last one doesn't match because it's missing a trailing 1.) // Update for TP08: same is true but only 2 rows. row = bitbuffer_find_repeated_row( - bitbuffer, - (bitbuffer->num_rows > 5) ? 5 : 2, - 40 - ); + bitbuffer, + (bitbuffer->num_rows > 5) ? 5 : 2, + 40); if (row < 0) { return 0; } @@ -82,7 +81,7 @@ static int thermopro_tp12_sensor_callback(r_device *decoder, bitbuffer_t *bitbuf // the checksum if the message bit was 1. It should be possible to solve for that table using Gaussian // elimination, so dump some data so we can try this. - // This format is easily usable by bruteforce-crc, after piping through | grep raw_data | cut -d':' -f2 + // This format is easily usable by bruteforce-crc, after piping through | grep raw_data | cut -d':' -f2 // bruteforce-crc didn't find anything, though - this may not be a CRC algorithm specifically. fprintf(stderr,"thermopro_tp12_raw_data:"); bitrow_print(bytes, 40);