[FL-2601] Move Infrared unit test data to assets (#1396)

* Move samsung raw data to assets
* Add more assets and fix bugs
* Clean up code
* Implement all raw data as assets
* Remove input data from old test files
* Better signal names
* Better file opening logic
* Implement loading parsed data from files
* Move most of RC5 tests into assets
* Add more test cases
* Add more test cases
* Eliminate RUN_DECODER macro
* Better code structure
* Implement run_encoder function
* More encoder tests
* Move all encoder tests to assets
* Move all test data to assets
* Normalise function names
* Rename code files
* Uncomment other tests
* Swich test order to avoid weird memory leaks
* UnitTests: cleanup output and redirect it into stdout
* UnitTests: selectable tests and better reporting

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Georgii Surkov 2022-07-17 12:21:56 +03:00 committed by GitHub
parent 877c5c8122
commit 80629de01e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 4385 additions and 2019 deletions

View File

@ -1,4 +1,4 @@
#include "minunit.h"
#include "../minunit.h"
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

View File

@ -1,7 +1,7 @@
#include <stdio.h>
#include <string.h>
#include <furi.h>
#include "minunit.h"
#include "../minunit.h"
const uint32_t context_value = 0xdeadbeef;
const uint32_t notify_value_0 = 0x12345678;

View File

@ -1,7 +1,7 @@
#include <stdio.h>
#include <string.h>
#include <furi.h>
#include "minunit.h"
#include "../minunit.h"
void test_furi_create_open() {
// 1. Create record

View File

@ -1,6 +1,7 @@
#include <stdio.h>
#include <furi.h>
#include "minunit.h"
#include <furi_hal.h>
#include "../minunit.h"
// v2 tests
void test_furi_create_open();
@ -55,7 +56,7 @@ MU_TEST_SUITE(test_suite) {
MU_RUN_TEST(mu_test_furi_memmgr);
}
int run_minunit() {
int run_minunit_test_furi() {
MU_RUN_SUITE(test_suite);
return MU_EXIT_CODE;

View File

@ -3,7 +3,7 @@
#include <furi.h>
#include "furi_hal_delay.h"
#include "minunit.h"
#include "../minunit.h"
void test_furi_valuemutex() {
const int init_value = 0xdeadbeef;

View File

@ -0,0 +1,520 @@
#include <furi.h>
#include <flipper_format.h>
#include <infrared.h>
#include <common/infrared_common_i.h>
#include "../minunit.h"
#define IR_TEST_FILES_DIR "/ext/unit_tests/infrared/"
#define IR_TEST_FILE_PREFIX "test_"
#define IR_TEST_FILE_SUFFIX ".irtest"
typedef struct {
InfraredDecoderHandler* decoder_handler;
InfraredEncoderHandler* encoder_handler;
string_t file_path;
FlipperFormat* ff;
} InfraredTest;
static InfraredTest* test;
static void infrared_test_alloc() {
Storage* storage = furi_record_open("storage");
test = malloc(sizeof(InfraredTest));
test->decoder_handler = infrared_alloc_decoder();
test->encoder_handler = infrared_alloc_encoder();
test->ff = flipper_format_file_alloc(storage);
string_init(test->file_path);
}
static void infrared_test_free() {
furi_assert(test);
infrared_free_decoder(test->decoder_handler);
infrared_free_encoder(test->encoder_handler);
flipper_format_free(test->ff);
string_clear(test->file_path);
furi_record_close("storage");
free(test);
test = NULL;
}
static bool infrared_test_prepare_file(const char* protocol_name) {
string_t file_type;
string_init(file_type);
bool success = false;
string_printf(
test->file_path,
"%s%s%s%s",
IR_TEST_FILES_DIR,
IR_TEST_FILE_PREFIX,
protocol_name,
IR_TEST_FILE_SUFFIX);
do {
uint32_t format_version;
if(!flipper_format_file_open_existing(test->ff, string_get_cstr(test->file_path))) break;
if(!flipper_format_read_header(test->ff, file_type, &format_version)) break;
if(string_cmp_str(file_type, "IR tests file") || format_version != 1) break;
success = true;
} while(false);
string_clear(file_type);
return success;
}
static bool infrared_test_load_raw_signal(
FlipperFormat* ff,
const char* signal_name,
uint32_t** timings,
uint32_t* timings_count) {
string_t buf;
string_init(buf);
bool success = false;
do {
bool is_name_found = false;
for(; !is_name_found && flipper_format_read_string(ff, "name", buf);
is_name_found = !string_cmp_str(buf, signal_name))
;
if(!is_name_found) break;
if(!flipper_format_read_string(ff, "type", buf) || string_cmp_str(buf, "raw")) break;
if(!flipper_format_get_value_count(ff, "data", timings_count)) break;
if(!*timings_count) break;
*timings = malloc(*timings_count * sizeof(uint32_t*));
if(!flipper_format_read_uint32(ff, "data", *timings, *timings_count)) {
free(*timings);
break;
}
success = true;
} while(false);
string_clear(buf);
return success;
}
static bool infrared_test_read_message(FlipperFormat* ff, InfraredMessage* message) {
string_t buf;
string_init(buf);
bool success = false;
do {
if(!flipper_format_read_string(ff, "protocol", buf)) break;
message->protocol = infrared_get_protocol_by_name(string_get_cstr(buf));
if(!infrared_is_protocol_valid(message->protocol)) break;
if(!flipper_format_read_hex(ff, "address", (uint8_t*)&message->address, sizeof(uint32_t)))
break;
if(!flipper_format_read_hex(ff, "command", (uint8_t*)&message->command, sizeof(uint32_t)))
break;
if(!flipper_format_read_bool(ff, "repeat", &message->repeat, 1)) break;
success = true;
} while(false);
string_clear(buf);
return success;
}
static bool infrared_test_load_messages(
FlipperFormat* ff,
const char* signal_name,
InfraredMessage** messages,
uint32_t* messages_count) {
string_t buf;
string_init(buf);
bool success = false;
do {
bool is_name_found = false;
for(; !is_name_found && flipper_format_read_string(ff, "name", buf);
is_name_found = !string_cmp_str(buf, signal_name))
;
if(!is_name_found) break;
if(!flipper_format_read_string(ff, "type", buf) || string_cmp_str(buf, "parsed_array"))
break;
if(!flipper_format_read_uint32(ff, "count", messages_count, 1)) break;
if(!*messages_count) break;
*messages = malloc(*messages_count * sizeof(InfraredMessage));
uint32_t i;
for(i = 0; i < *messages_count; ++i) {
if(!infrared_test_read_message(ff, (*messages) + i)) {
break;
}
}
if(*messages_count != i) {
free(*messages);
break;
}
success = true;
} while(false);
string_clear(buf);
return success;
}
static void infrared_test_compare_message_results(
const InfraredMessage* message_decoded,
const InfraredMessage* message_expected) {
mu_check(message_decoded->protocol == message_expected->protocol);
mu_check(message_decoded->command == message_expected->command);
mu_check(message_decoded->address == message_expected->address);
if((message_expected->protocol == InfraredProtocolSIRC) ||
(message_expected->protocol == InfraredProtocolSIRC15) ||
(message_expected->protocol == InfraredProtocolSIRC20)) {
mu_check(message_decoded->repeat == false);
} else {
mu_check(message_decoded->repeat == message_expected->repeat);
}
}
/* Encodes signal and merges same levels (high+high, low+low) */
static void infrared_test_run_encoder_fill_array(
InfraredEncoderHandler* handler,
uint32_t* timings,
uint32_t* timings_len,
bool* start_level) {
uint32_t duration = 0;
bool level = false;
bool level_read;
InfraredStatus status = InfraredStatusError;
size_t i = 0;
bool first = true;
while(1) {
status = infrared_encode(handler, &duration, &level_read);
if(first) {
if(start_level) *start_level = level_read;
first = false;
timings[0] = 0;
} else if(level_read != level) {
++i;
furi_check(i < *timings_len);
timings[i] = 0;
}
level = level_read;
timings[i] += duration;
furi_check((status == InfraredStatusOk) || (status == InfraredStatusDone));
if(status == InfraredStatusDone) break;
}
*timings_len = i + 1;
}
// messages in input array for encoder should have one protocol
static void infrared_test_run_encoder(InfraredProtocol protocol, uint32_t test_index) {
uint32_t* timings;
uint32_t timings_count = 200;
uint32_t* expected_timings;
uint32_t expected_timings_count;
InfraredMessage* input_messages;
uint32_t input_messages_count;
string_t buf;
string_init(buf);
const char* protocol_name = infrared_get_protocol_name(protocol);
mu_assert(infrared_test_prepare_file(protocol_name), "Failed to prepare test file");
string_printf(buf, "encoder_input%d", test_index);
mu_assert(
infrared_test_load_messages(
test->ff, string_get_cstr(buf), &input_messages, &input_messages_count),
"Failed to load messages from file");
string_printf(buf, "encoder_expected%d", test_index);
mu_assert(
infrared_test_load_raw_signal(
test->ff, string_get_cstr(buf), &expected_timings, &expected_timings_count),
"Failed to load raw signal from file");
flipper_format_file_close(test->ff);
string_clear(buf);
uint32_t j = 0;
timings = malloc(sizeof(uint32_t) * timings_count);
for(uint32_t message_counter = 0; message_counter < input_messages_count; ++message_counter) {
const InfraredMessage* message = &input_messages[message_counter];
if(!message->repeat) {
infrared_reset_encoder(test->encoder_handler, message);
}
timings_count = 200;
infrared_test_run_encoder_fill_array(test->encoder_handler, timings, &timings_count, NULL);
furi_check(timings_count <= 200);
for(size_t i = 0; i < timings_count; ++i, ++j) {
mu_check(MATCH_TIMING(timings[i], expected_timings[j], 120));
mu_assert(j < expected_timings_count, "encoded more timings than expected");
}
}
free(input_messages);
free(expected_timings);
free(timings);
mu_assert(j == expected_timings_count, "encoded less timings than expected");
}
static void infrared_test_run_encoder_decoder(InfraredProtocol protocol, uint32_t test_index) {
uint32_t* timings = 0;
uint32_t timings_count = 200;
InfraredMessage* input_messages;
uint32_t input_messages_count;
bool level = false;
string_t buf;
string_init(buf);
timings = malloc(sizeof(uint32_t) * timings_count);
const char* protocol_name = infrared_get_protocol_name(protocol);
mu_assert(infrared_test_prepare_file(protocol_name), "Failed to prepare test file");
string_printf(buf, "encoder_decoder_input%d", test_index);
mu_assert(
infrared_test_load_messages(
test->ff, string_get_cstr(buf), &input_messages, &input_messages_count),
"Failed to load messages from file");
flipper_format_file_close(test->ff);
string_clear(buf);
for(uint32_t message_counter = 0; message_counter < input_messages_count; ++message_counter) {
const InfraredMessage* message_encoded = &input_messages[message_counter];
if(!message_encoded->repeat) {
infrared_reset_encoder(test->encoder_handler, message_encoded);
}
timings_count = 200;
infrared_test_run_encoder_fill_array(
test->encoder_handler, timings, &timings_count, &level);
furi_check(timings_count <= 200);
const InfraredMessage* message_decoded = 0;
for(size_t i = 0; i < timings_count; ++i) {
message_decoded = infrared_decode(test->decoder_handler, level, timings[i]);
if((i == timings_count - 2) && level && message_decoded) {
/* In case we end with space timing - message can be decoded at last mark */
break;
} else if(i < timings_count - 1) {
mu_check(!message_decoded);
} else {
if(!message_decoded) {
message_decoded = infrared_check_decoder_ready(test->decoder_handler);
}
mu_check(message_decoded);
}
level = !level;
}
if(message_decoded) {
infrared_test_compare_message_results(message_decoded, message_encoded);
} else {
mu_check(0);
}
}
free(input_messages);
free(timings);
}
static void infrared_test_run_decoder(InfraredProtocol protocol, uint32_t test_index) {
uint32_t* timings;
uint32_t timings_count;
InfraredMessage* messages;
uint32_t messages_count;
string_t buf;
string_init(buf);
mu_assert(
infrared_test_prepare_file(infrared_get_protocol_name(protocol)),
"Failed to prepare test file");
string_printf(buf, "decoder_input%d", test_index);
mu_assert(
infrared_test_load_raw_signal(test->ff, string_get_cstr(buf), &timings, &timings_count),
"Failed to load raw signal from file");
string_printf(buf, "decoder_expected%d", test_index);
mu_assert(
infrared_test_load_messages(test->ff, string_get_cstr(buf), &messages, &messages_count),
"Failed to load messages from file");
flipper_format_file_close(test->ff);
string_clear(buf);
InfraredMessage message_decoded_check_local;
bool level = 0;
uint32_t message_counter = 0;
const InfraredMessage* message_decoded = 0;
for(uint32_t i = 0; i < timings_count; ++i) {
const InfraredMessage* message_decoded_check = 0;
if(timings[i] > INFRARED_RAW_RX_TIMING_DELAY_US) {
message_decoded_check = infrared_check_decoder_ready(test->decoder_handler);
if(message_decoded_check) {
/* infrared_decode() can reset message, but we have to call infrared_decode() to perform real
* simulation: infrared_check() by timeout, then infrared_decode() when meet edge */
message_decoded_check_local = *message_decoded_check;
message_decoded_check = &message_decoded_check_local;
}
}
message_decoded = infrared_decode(test->decoder_handler, level, timings[i]);
if(message_decoded_check || message_decoded) {
mu_assert(
!(message_decoded_check && message_decoded),
"both messages decoded: check_ready() and infrared_decode()");
if(message_decoded_check) {
message_decoded = message_decoded_check;
}
mu_assert(message_counter < messages_count, "decoded more than expected");
infrared_test_compare_message_results(message_decoded, &messages[message_counter]);
++message_counter;
}
level = !level;
}
message_decoded = infrared_check_decoder_ready(test->decoder_handler);
if(message_decoded) {
infrared_test_compare_message_results(message_decoded, &messages[message_counter]);
++message_counter;
}
free(timings);
free(messages);
mu_assert(message_counter == messages_count, "decoded less than expected");
}
MU_TEST(infrared_test_decoder_samsung32) {
infrared_test_run_decoder(InfraredProtocolSamsung32, 1);
}
MU_TEST(infrared_test_decoder_mixed) {
infrared_test_run_decoder(InfraredProtocolRC5, 2);
infrared_test_run_decoder(InfraredProtocolSIRC, 1);
infrared_test_run_decoder(InfraredProtocolNECext, 1);
infrared_test_run_decoder(InfraredProtocolRC6, 2);
infrared_test_run_decoder(InfraredProtocolSamsung32, 1);
infrared_test_run_decoder(InfraredProtocolRC6, 1);
infrared_test_run_decoder(InfraredProtocolSamsung32, 1);
infrared_test_run_decoder(InfraredProtocolRC5, 1);
infrared_test_run_decoder(InfraredProtocolSIRC, 2);
infrared_test_run_decoder(InfraredProtocolNECext, 1);
infrared_test_run_decoder(InfraredProtocolSIRC, 4);
infrared_test_run_decoder(InfraredProtocolNEC, 2);
infrared_test_run_decoder(InfraredProtocolRC6, 1);
infrared_test_run_decoder(InfraredProtocolNECext, 1);
infrared_test_run_decoder(InfraredProtocolSIRC, 5);
infrared_test_run_decoder(InfraredProtocolNEC, 3);
infrared_test_run_decoder(InfraredProtocolRC5, 5);
infrared_test_run_decoder(InfraredProtocolSamsung32, 1);
infrared_test_run_decoder(InfraredProtocolSIRC, 3);
}
MU_TEST(infrared_test_decoder_nec) {
infrared_test_run_decoder(InfraredProtocolNEC, 1);
infrared_test_run_decoder(InfraredProtocolNEC, 2);
infrared_test_run_decoder(InfraredProtocolNEC, 3);
}
MU_TEST(infrared_test_decoder_unexpected_end_in_sequence) {
infrared_test_run_decoder(InfraredProtocolNEC, 1);
infrared_test_run_decoder(InfraredProtocolNEC, 1);
infrared_test_run_decoder(InfraredProtocolNEC, 2);
infrared_test_run_decoder(InfraredProtocolNEC, 2);
}
MU_TEST(infrared_test_decoder_necext1) {
infrared_test_run_decoder(InfraredProtocolNECext, 1);
infrared_test_run_decoder(InfraredProtocolNECext, 1);
}
MU_TEST(infrared_test_decoder_long_packets_with_nec_start) {
infrared_test_run_decoder(InfraredProtocolNEC42ext, 1);
infrared_test_run_decoder(InfraredProtocolNEC42ext, 2);
}
MU_TEST(infrared_test_encoder_sirc) {
infrared_test_run_encoder(InfraredProtocolSIRC, 1);
infrared_test_run_encoder(InfraredProtocolSIRC, 2);
}
MU_TEST(infrared_test_decoder_sirc) {
infrared_test_run_decoder(InfraredProtocolSIRC, 3);
infrared_test_run_decoder(InfraredProtocolSIRC, 1);
infrared_test_run_decoder(InfraredProtocolSIRC, 2);
infrared_test_run_decoder(InfraredProtocolSIRC, 4);
infrared_test_run_decoder(InfraredProtocolSIRC, 5);
}
MU_TEST(infrared_test_decoder_rc5) {
infrared_test_run_decoder(InfraredProtocolRC5X, 1);
infrared_test_run_decoder(InfraredProtocolRC5, 1);
infrared_test_run_decoder(InfraredProtocolRC5, 2);
infrared_test_run_decoder(InfraredProtocolRC5, 3);
infrared_test_run_decoder(InfraredProtocolRC5, 4);
infrared_test_run_decoder(InfraredProtocolRC5, 5);
infrared_test_run_decoder(InfraredProtocolRC5, 6);
infrared_test_run_decoder(InfraredProtocolRC5, 7);
}
MU_TEST(infrared_test_encoder_rc5x) {
infrared_test_run_encoder(InfraredProtocolRC5X, 1);
}
MU_TEST(infrared_test_encoder_rc5) {
infrared_test_run_encoder(InfraredProtocolRC5, 1);
}
MU_TEST(infrared_test_decoder_rc6) {
infrared_test_run_decoder(InfraredProtocolRC6, 1);
}
MU_TEST(infrared_test_encoder_rc6) {
infrared_test_run_encoder(InfraredProtocolRC6, 1);
}
MU_TEST(infrared_test_encoder_decoder_all) {
infrared_test_run_encoder_decoder(InfraredProtocolNEC, 1);
infrared_test_run_encoder_decoder(InfraredProtocolNECext, 1);
infrared_test_run_encoder_decoder(InfraredProtocolNEC42, 1);
infrared_test_run_encoder_decoder(InfraredProtocolNEC42ext, 1);
infrared_test_run_encoder_decoder(InfraredProtocolSamsung32, 1);
infrared_test_run_encoder_decoder(InfraredProtocolRC6, 1);
infrared_test_run_encoder_decoder(InfraredProtocolRC5, 1);
infrared_test_run_encoder_decoder(InfraredProtocolSIRC, 1);
}
MU_TEST_SUITE(infrared_test) {
MU_SUITE_CONFIGURE(&infrared_test_alloc, &infrared_test_free);
MU_RUN_TEST(infrared_test_encoder_sirc);
MU_RUN_TEST(infrared_test_decoder_sirc);
MU_RUN_TEST(infrared_test_encoder_rc5x);
MU_RUN_TEST(infrared_test_encoder_rc5);
MU_RUN_TEST(infrared_test_decoder_rc5);
MU_RUN_TEST(infrared_test_decoder_rc6);
MU_RUN_TEST(infrared_test_encoder_rc6);
MU_RUN_TEST(infrared_test_decoder_unexpected_end_in_sequence);
MU_RUN_TEST(infrared_test_decoder_long_packets_with_nec_start);
MU_RUN_TEST(infrared_test_decoder_nec);
MU_RUN_TEST(infrared_test_decoder_samsung32);
MU_RUN_TEST(infrared_test_decoder_necext1);
MU_RUN_TEST(infrared_test_decoder_mixed);
MU_RUN_TEST(infrared_test_encoder_decoder_all);
}
int run_minunit_test_infrared() {
MU_RUN_SUITE(infrared_test);
return MU_EXIT_CODE;
}

View File

@ -1,331 +0,0 @@
#include <furi.h>
#include "../minunit.h"
#include "infrared.h"
#include "common/infrared_common_i.h"
#include "test_data/infrared_nec_test_data.srcdata"
#include "test_data/infrared_necext_test_data.srcdata"
#include "test_data/infrared_samsung_test_data.srcdata"
#include "test_data/infrared_rc6_test_data.srcdata"
#include "test_data/infrared_rc5_test_data.srcdata"
#include "test_data/infrared_sirc_test_data.srcdata"
#define RUN_ENCODER(data, expected) \
run_encoder((data), COUNT_OF(data), (expected), COUNT_OF(expected))
#define RUN_DECODER(data, expected) \
run_decoder((data), COUNT_OF(data), (expected), COUNT_OF(expected))
#define RUN_ENCODER_DECODER(data) run_encoder_decoder((data), COUNT_OF(data))
static InfraredDecoderHandler* decoder_handler;
static InfraredEncoderHandler* encoder_handler;
static void test_setup(void) {
decoder_handler = infrared_alloc_decoder();
encoder_handler = infrared_alloc_encoder();
}
static void test_teardown(void) {
infrared_free_decoder(decoder_handler);
infrared_free_encoder(encoder_handler);
}
static void compare_message_results(
const InfraredMessage* message_decoded,
const InfraredMessage* message_expected) {
mu_check(message_decoded->protocol == message_expected->protocol);
mu_check(message_decoded->command == message_expected->command);
mu_check(message_decoded->address == message_expected->address);
if((message_expected->protocol == InfraredProtocolSIRC) ||
(message_expected->protocol == InfraredProtocolSIRC15) ||
(message_expected->protocol == InfraredProtocolSIRC20)) {
mu_check(message_decoded->repeat == false);
} else {
mu_check(message_decoded->repeat == message_expected->repeat);
}
}
/* Encodes signal and merges same levels (high+high, low+low) */
static void run_encoder_fill_array(
InfraredEncoderHandler* handler,
uint32_t* timings,
uint32_t* timings_len,
bool* start_level) {
uint32_t duration = 0;
bool level = false;
bool level_read;
InfraredStatus status = InfraredStatusError;
size_t i = 0;
bool first = true;
while(1) {
status = infrared_encode(handler, &duration, &level_read);
if(first) {
if(start_level) *start_level = level_read;
first = false;
timings[0] = 0;
} else if(level_read != level) {
++i;
furi_check(i < *timings_len);
timings[i] = 0;
}
level = level_read;
timings[i] += duration;
furi_check((status == InfraredStatusOk) || (status == InfraredStatusDone));
if(status == InfraredStatusDone) break;
}
*timings_len = i + 1;
}
// messages in input array for encoder should have one protocol
static void run_encoder(
const InfraredMessage input_messages[],
uint32_t input_messages_len,
const uint32_t expected_timings[],
uint32_t expected_timings_len) {
uint32_t* timings = 0;
uint32_t timings_len = 200;
uint32_t j = 0;
timings = malloc(sizeof(uint32_t) * timings_len);
for(uint32_t message_counter = 0; message_counter < input_messages_len; ++message_counter) {
const InfraredMessage* message = &input_messages[message_counter];
if(!message->repeat) {
infrared_reset_encoder(encoder_handler, message);
}
timings_len = 200;
run_encoder_fill_array(encoder_handler, timings, &timings_len, NULL);
furi_check(timings_len <= 200);
for(size_t i = 0; i < timings_len; ++i, ++j) {
mu_check(MATCH_TIMING(timings[i], expected_timings[j], 120));
mu_assert(j < expected_timings_len, "encoded more timings than expected");
}
}
free(timings);
mu_assert(j == expected_timings_len, "encoded less timings than expected");
}
static void
run_encoder_decoder(const InfraredMessage input_messages[], uint32_t input_messages_len) {
uint32_t* timings = 0;
uint32_t timings_len = 200;
bool level = false;
timings = malloc(sizeof(uint32_t) * timings_len);
for(uint32_t message_counter = 0; message_counter < input_messages_len; ++message_counter) {
const InfraredMessage* message_encoded = &input_messages[message_counter];
if(!message_encoded->repeat) {
infrared_reset_encoder(encoder_handler, message_encoded);
}
timings_len = 200;
run_encoder_fill_array(encoder_handler, timings, &timings_len, &level);
furi_check(timings_len <= 200);
const InfraredMessage* message_decoded = 0;
for(size_t i = 0; i < timings_len; ++i) {
message_decoded = infrared_decode(decoder_handler, level, timings[i]);
if((i == timings_len - 2) && level && message_decoded) {
/* In case we end with space timing - message can be decoded at last mark */
break;
} else if(i < timings_len - 1) {
mu_check(!message_decoded);
} else {
if(!message_decoded) {
message_decoded = infrared_check_decoder_ready(decoder_handler);
}
mu_check(message_decoded);
}
level = !level;
}
if(message_decoded) {
compare_message_results(message_decoded, message_encoded);
} else {
mu_check(0);
}
}
free(timings);
}
static void run_decoder(
const uint32_t* input_delays,
uint32_t input_delays_len,
const InfraredMessage* message_expected,
uint32_t message_expected_len) {
InfraredMessage message_decoded_check_local;
bool level = 0;
uint32_t message_counter = 0;
const InfraredMessage* message_decoded = 0;
for(uint32_t i = 0; i < input_delays_len; ++i) {
const InfraredMessage* message_decoded_check = 0;
if(input_delays[i] > INFRARED_RAW_RX_TIMING_DELAY_US) {
message_decoded_check = infrared_check_decoder_ready(decoder_handler);
if(message_decoded_check) {
/* infrared_decode() can reset message, but we have to call infrared_decode() to perform real
* simulation: infrared_check() by timeout, then infrared_decode() when meet edge */
message_decoded_check_local = *message_decoded_check;
message_decoded_check = &message_decoded_check_local;
}
}
message_decoded = infrared_decode(decoder_handler, level, input_delays[i]);
if(message_decoded_check || message_decoded) {
mu_assert(
!(message_decoded_check && message_decoded),
"both messages decoded: check_ready() and infrared_decode()");
if(message_decoded_check) {
message_decoded = message_decoded_check;
}
mu_assert(message_counter < message_expected_len, "decoded more than expected");
compare_message_results(message_decoded, &message_expected[message_counter]);
++message_counter;
}
level = !level;
}
message_decoded = infrared_check_decoder_ready(decoder_handler);
if(message_decoded) {
compare_message_results(message_decoded, &message_expected[message_counter]);
++message_counter;
}
mu_assert(message_counter == message_expected_len, "decoded less than expected");
}
MU_TEST(test_decoder_samsung32) {
RUN_DECODER(test_decoder_samsung32_input1, test_decoder_samsung32_expected1);
}
MU_TEST(test_mix) {
RUN_DECODER(test_decoder_rc5_input2, test_decoder_rc5_expected2);
RUN_DECODER(test_decoder_sirc_input1, test_decoder_sirc_expected1);
RUN_DECODER(test_decoder_necext_input1, test_decoder_necext_expected1);
// can use encoder data for decoding, but can't do opposite
RUN_DECODER(test_encoder_rc6_expected1, test_encoder_rc6_input1);
RUN_DECODER(test_decoder_samsung32_input1, test_decoder_samsung32_expected1);
RUN_DECODER(test_decoder_rc6_input1, test_decoder_rc6_expected1);
RUN_DECODER(test_decoder_samsung32_input1, test_decoder_samsung32_expected1);
RUN_DECODER(test_decoder_rc5_input1, test_decoder_rc5_expected1);
RUN_DECODER(test_decoder_sirc_input2, test_decoder_sirc_expected2);
RUN_DECODER(test_decoder_necext_input1, test_decoder_necext_expected1);
RUN_DECODER(test_decoder_sirc_input4, test_decoder_sirc_expected4);
RUN_DECODER(test_decoder_nec_input2, test_decoder_nec_expected2);
RUN_DECODER(test_decoder_rc6_input1, test_decoder_rc6_expected1);
RUN_DECODER(test_decoder_necext_input1, test_decoder_necext_expected1);
RUN_DECODER(test_decoder_sirc_input5, test_decoder_sirc_expected5);
RUN_DECODER(test_decoder_nec_input3, test_decoder_nec_expected3);
RUN_DECODER(test_decoder_rc5_input5, test_decoder_rc5_expected5);
RUN_DECODER(test_decoder_samsung32_input1, test_decoder_samsung32_expected1);
RUN_DECODER(test_decoder_sirc_input3, test_decoder_sirc_expected3);
}
MU_TEST(test_decoder_nec) {
RUN_DECODER(test_decoder_nec_input1, test_decoder_nec_expected1);
RUN_DECODER(test_decoder_nec_input2, test_decoder_nec_expected2);
RUN_DECODER(test_decoder_nec_input3, test_decoder_nec_expected3);
}
MU_TEST(test_decoder_unexpected_end_in_sequence) {
// test_decoder_nec_input1 and test_decoder_nec_input2 shuts unexpected
RUN_DECODER(test_decoder_nec_input1, test_decoder_nec_expected1);
RUN_DECODER(test_decoder_nec_input1, test_decoder_nec_expected1);
RUN_DECODER(test_decoder_nec_input2, test_decoder_nec_expected2);
RUN_DECODER(test_decoder_nec_input2, test_decoder_nec_expected2);
}
MU_TEST(test_decoder_necext1) {
RUN_DECODER(test_decoder_necext_input1, test_decoder_necext_expected1);
RUN_DECODER(test_decoder_necext_input1, test_decoder_necext_expected1);
}
MU_TEST(test_decoder_long_packets_with_nec_start) {
RUN_DECODER(test_decoder_nec42ext_input1, test_decoder_nec42ext_expected1);
RUN_DECODER(test_decoder_nec42ext_input2, test_decoder_nec42ext_expected2);
}
MU_TEST(test_encoder_sirc) {
RUN_ENCODER(test_encoder_sirc_input1, test_encoder_sirc_expected1);
RUN_ENCODER(test_encoder_sirc_input2, test_encoder_sirc_expected2);
}
MU_TEST(test_decoder_sirc) {
RUN_DECODER(test_decoder_sirc_input3, test_decoder_sirc_expected3);
RUN_DECODER(test_decoder_sirc_input1, test_decoder_sirc_expected1);
RUN_DECODER(test_decoder_sirc_input2, test_decoder_sirc_expected2);
RUN_DECODER(test_decoder_sirc_input4, test_decoder_sirc_expected4);
RUN_DECODER(test_decoder_sirc_input5, test_decoder_sirc_expected5);
RUN_ENCODER_DECODER(test_sirc);
}
MU_TEST(test_decoder_rc5) {
RUN_DECODER(test_decoder_rc5x_input1, test_decoder_rc5x_expected1);
RUN_DECODER(test_decoder_rc5_input1, test_decoder_rc5_expected1);
RUN_DECODER(test_decoder_rc5_input2, test_decoder_rc5_expected2);
RUN_DECODER(test_decoder_rc5_input3, test_decoder_rc5_expected3);
RUN_DECODER(test_decoder_rc5_input4, test_decoder_rc5_expected4);
RUN_DECODER(test_decoder_rc5_input5, test_decoder_rc5_expected5);
RUN_DECODER(test_decoder_rc5_input6, test_decoder_rc5_expected6);
RUN_DECODER(test_decoder_rc5_input_all_repeats, test_decoder_rc5_expected_all_repeats);
}
MU_TEST(test_encoder_rc5x) {
RUN_ENCODER(test_decoder_rc5x_expected1, test_decoder_rc5x_input1);
}
MU_TEST(test_encoder_rc5) {
RUN_ENCODER(test_decoder_rc5_expected_all_repeats, test_decoder_rc5_input_all_repeats);
}
MU_TEST(test_decoder_rc6) {
RUN_DECODER(test_decoder_rc6_input1, test_decoder_rc6_expected1);
}
MU_TEST(test_encoder_rc6) {
RUN_ENCODER(test_encoder_rc6_input1, test_encoder_rc6_expected1);
}
MU_TEST(test_encoder_decoder_all) {
RUN_ENCODER_DECODER(test_nec);
RUN_ENCODER_DECODER(test_necext);
RUN_ENCODER_DECODER(test_nec42);
RUN_ENCODER_DECODER(test_nec42ext);
RUN_ENCODER_DECODER(test_samsung32);
RUN_ENCODER_DECODER(test_rc6);
RUN_ENCODER_DECODER(test_rc5);
RUN_ENCODER_DECODER(test_sirc);
}
MU_TEST_SUITE(test_infrared_decoder_encoder) {
MU_SUITE_CONFIGURE(&test_setup, &test_teardown);
MU_RUN_TEST(test_encoder_sirc);
MU_RUN_TEST(test_decoder_sirc);
MU_RUN_TEST(test_encoder_rc5x);
MU_RUN_TEST(test_encoder_rc5);
MU_RUN_TEST(test_decoder_rc5);
MU_RUN_TEST(test_decoder_rc6);
MU_RUN_TEST(test_encoder_rc6);
MU_RUN_TEST(test_decoder_unexpected_end_in_sequence);
MU_RUN_TEST(test_decoder_long_packets_with_nec_start);
MU_RUN_TEST(test_decoder_nec);
MU_RUN_TEST(test_decoder_samsung32);
MU_RUN_TEST(test_decoder_necext1);
MU_RUN_TEST(test_mix);
MU_RUN_TEST(test_encoder_decoder_all);
}
int run_minunit_test_infrared_decoder_encoder() {
MU_RUN_SUITE(test_infrared_decoder_encoder);
return MU_EXIT_CODE;
}

View File

@ -1,341 +0,0 @@
const uint32_t test_decoder_nec_input1[] = {
/* message */
2640671, 9071, 4445, 601, 497, 578, 500, 604, 501, 603, 502, 581, 496, 615, 498, 606, 499, 584, 493, 610, 1630, 576, 1640, 601, 1615, 605, 1638, 581, 1634, 606, 1610, 610, 1633, 577, 1639, 601, 504, 580, 498, 604, 501, 603, 500, 582, 496, 607, 498, 606, 499, 585, 485, 610, 1633, 576, 1640, 596, 1615, 605, 1638, 582, 1634, 605, 1610, 609, 1634, 586, 1630, 600,
/* repeat */
40015, 9077, 2208, 593,
/* message */
1457713, 9076, 4440, 607, 508, 585, 493, 610, 494, 598, 506, 577, 501, 603, 502, 601, 504, 580, 498, 605, 1638, 582, 1634, 606, 1610, 610, 1633, 577, 1639, 600, 1616, 605, 1638, 582, 1634, 606, 499, 585, 493, 609, 495, 608, 496, 586, 502, 612, 493, 601, 504, 579, 498, 605, 1638, 582, 1633, 606, 1610, 610, 1633, 577, 1639, 602, 1614, 574, 1668, 582, 1634, 606,
/* message */
1415838, 9080, 4436, 611, 494, 600, 505, 578, 500, 608, 501, 602, 502, 580, 498, 606, 508, 605, 500, 583, 1633, 608, 1608, 611, 1631, 578, 1638, 602, 1614, 606, 1637, 583, 1633, 607, 1609, 611, 494, 600, 505, 570, 500, 604, 501, 602, 502, 581, 497, 606, 499, 605, 499, 583, 1633, 617, 1608, 611, 1631, 579, 1638, 602};
const InfraredMessage test_decoder_nec_expected1[] = {
{InfraredProtocolNEC, 0x00, 0, false},
{InfraredProtocolNEC, 0x00, 0, true},
{InfraredProtocolNEC, 0x00, 0, false},
};
const uint32_t test_decoder_nec_input2[] = {
18372093,9030,4495,559,524,585,526,613,496,560,522,595,524,605,504,553,530,578,524,608,1614,581,1668,557,1665,581,1641,585,1664,551,1671,605,1616,578,1670,555,528,581,1668,553,526,582,528,612,498,559,524,585,526,604,507,552,1670,597,504,553,1667,608,1613,582,1667,559,1663,613,1608,586,1662,552,
40067,9026,2219,579,
3060767,9079,4445,606,505,554,530,578,532,608,502,555,528,581,530,610,500,588,495,614,1635,580,1641,604,1617,618,1621,584,1637,608,1612,612,1636,589,1637,602,507,581,1641,605,505,582,501,609,502,607,503,585,498,611,499,609,1612,613,498,612,1610,615,1633,561,1661,606,1615,609,1639,585,1636,610,
40011,9072,2200,588,
96480,9075,2198,560,
96509,9047,2226,552,
96517,9049,2224,555,
96514,9042,2222,556,
96512,9053,2220,558,
96511,9045,2227,561,
96507,9048,2225,554,
96515,9061,2231,565,
96522,9053,2219,559,
96510,9044,2229,560,
96508,9046,2226,562,
96506,9027,2245,553,
96511,9030,2243,555,
96513,9031,2237,557,
96512,9054,2219,559,
570349,9027,4495,608,476,583,529,580,529,558,525,584,527,582,528,560,523,596,524,584,1636,578,1669,555,1667,578,1643,581,1666,558,1663,582,1639,586,1662,552,531,577,1670,554,1667,578,532,563,527,582,528,580,529,558,525,584,1665,561,523,586,525,584,1637,577,1670,554,1668,578,1642,582,1667,558,
40062,9021,2233,585,
172411,9020,4502,559,524,585,526,583,527,551,532,586,523,575,535,553,530,579,532,577,1643,581,1668,557,1664,581,1639,585,1664,552,1670,575,1637,579,1669,556,527,581,529,580,1642,584,536,581,528,560,523,585,524,584,526,552,1670,576,1645,579,530,578,1643,582,1667,558,1663,582,1639,586,1662,545,
40068,9026,2220,578,
226896,9054,4468,578,500,608,502,607,503,585,498,611,500,610,501,588,496,612,497,602,1610,615,1633,581,1640,606,1616,609,1639,585,1635,610,1612,614,1635,580,504,615,495,604,506,582,1639,606,503,585,499,610,501,609,502,587,1635,610,1610,614,1634,581,502,616,1632,582,1648,606,1615,610,1638,587,
40033,9050,2195,614,
249594,9020,4502,560,524,594,525,603,506,552,532,587,521,606,504,554,529,579,532,609,1612,582,1667,557,1654,612,1608,585,1663,552,1670,606,1615,579,1669,554,527,582,529,611,500,558,1663,612,497,560,523,585,524,598,505,552,1670,606,1614,580,1668,557,526,582,1665,558,1662,603,1618,587,1661,553,
40067,9058,2187,621,
97567,9054,4467,584,500,609,501,601,502,586,497,611,499,610,501,588,496,614,497,612,1609,615,1632,582,1640,606,1615,609,1639,586,1636,611,1611,614,1634,581,503,608,493,605,505,583,1639,607,503,586,498,611,500,609,501,588,1634,611,1609,615,1634,582,502,608,1641,553,1668,608,1613,581,1668,558,
112307,9078,4443,608,502,606,504,584,498,610,501,608,502,587,497,612,498,610,499,589,1633,603,1619,607,1642,583,1638,607,1614,611,1638,597,1634,611,1610,615,495,603,506,581,502,607,1642,584,500,609,501,607,503,585,498,611,1637,588,1634,611,1610,615,495,603,1618,607,1641,584,1638,607,1605,611,
112281,9076,4445,606,505,584,499,610,501,608,502,586,497,612,498,610,500,581,494,614,1635,581,1641,604,1617,608,1640,585,1637,609,1610,613,1636,589,1632,603,507,581,503,607,504,604,1617,608,502,607,503,585,498,611,500,609,1613,613,1636,590,1632,603,507,581,1641,605,1616,609,1640,585,1636,609,
94207,9075,4446,605,506,582,501,607,502,606,504,584,500,610,501,608,502,587,497,611,1636,588,1633,612,1610,616,1633,583,1639,604,1615,610,1638,587,1635,610,500,588,495,606,496,602,1619,616,495,605,506,583,501,609,502,606,1614,610,1638,587,1635,611,499,590,1632,603,1618,607,1641,583,1638,608,
103762,9076,4446,605,505,553,531,579,532,607,503,555,528,580,530,609,500,557,527,583,1666,559,1662,603,1609,587,1661,553,1669,608,1614,580,1659,557,1665,612,498,580,504,585,526,604,1617,607,503,606,504,584,499,610,500,609,1613,612,1636,588,1633,602,507,573,1641,605,1617,608,1640,585,1636,619,
76134,9056,4466,585,525,604,506,552,532,577,533,606,504,553,529,579,531,608,501,556,1665,611,1611,584,1665,561,1661,605,1616,578,1671,555,1667,609,1612,582,528,611,499,559,525,584,1664,551,533,586,524,605,505,553,530,578,1670,555,1667,610,1612,582,528,611,1610,584,1664,551,1671,606,1616,578,
112997,9073,4447,603,507,560,523,586,524,605,505,552,531,578,533,607,503,555,529,580,1668,548,1665,611,1611,584,1665,551,1671,615,1616,578,1670,555,1667,610,501,556,527,582,528,611,1609,584,518,604,506,551,533,586,524,606,1615,579,1669,555,1666,610,500,558,1664,612,1609,585,1663,551,1670,606,
84870,9053,4470,582,529,611,500,559,525,583,526,602,507,560,523,586,525,574,536,543,1669,608,1614,580,1668,556,1665,620,1610,585,1664,550,1671,605,1616,578,533,608,503,555,529,580,1677,557,526,582,528,612,498,559,525,585,1664,551,1671,605,1615,578,531,608,1614,581,1668,558,1664,611,1609,585,
76184,9025,4496,555,529,579,531,609,502,556,528,582,529,610,500,559,525,583,526,603,1619,586,1663,552,1669,606,1614,580,1668,556,1665,611,1610,584,1664,550,533,586,524,605,504,553,1669,608,503,555,529,580,530,609,501,557,1664,605,1609,585,1664,551,532,586,1661,553,1668,608,1614,581,1666,558,
96145,9073,4449,612,499,559,524,584,526,603,506,552,532,587,523,606,504,584,499,570,1669,556,1666,610,1611,614,1634,580,1641,605,1617,608,1640,584,1636,609,501,587,497,612,498,611,1611,615,496,602,508,580,503,595,535,614,1627,617,1650,594,1646,604,502,586,1635,611,1618,614,1634,581,1641,604,
86183,9080,4442,610,501,607,502,586,498,611,499,610,501,588,496,613,497,611,498,579,1642,604,1617,608,1641,583,1637,608,1613,611,1637,588,1634,611,1608,615,494,604,506,582,501,617,1641,584,499,610,493,608,502,586,497,612,1636,588,1633,602,1619,615,494,604,1617,608,1640,585,1637,608,1613,613,
234570,9078,4437,607,503,606,505,584,500,608,501,614,502,585,497,611,499,610,509,588,1634,612,1609,616,1633,582,1639,606,1616,610,1639,587,1635,610,1611,614,1634,581,503,606,504,604,1617,608,502,607,503,585,498,611,500,609,501,597,1634,611,1610,615,495,603,1618,607,1642,584,1638,607,1614,611,
112281,9076,4446,605,505,583,501,609,493,606,503,585,498,610,500,609,501,587,497,613,1636,579,1643,602,1618,606,1641,583,1639,607,1614,610,1638,554,1665,611,1611,584,526,603,507,551,1671,597,504,583,500,578,532,607,502,555,528,581,1668,556,1664,611,498,559,1663,604,1618,587,1662,553,1668,608,
130332,9076,4446,615,496,605,507,582,502,608,503,605,512,584,499,609,501,608,502,586,1636,610,1611,613,1635,579,1641,604,1617,608,1641,584,1637,608,1613,611,1636,588,495,614,497,613,1609,616,494,604,506,590,500,608,502,607,503,585,1635,609,1613,612,498,610,1610,614,1634,581,1641,604,1617,608,
886079,9020,4501,560,523,585,525,583,527,552,532,587,523,576,534,554,529,580,531,577,1644,582,1667,559,1663,582,1639,586,1663,553,1669,576,1645,581,1668,557,521,582,529,581,530,559,1663,582,527,551,532,587,523,575,535,553,1669,577,1644,581,1667,557,526,584,1665,560,1662,582,1637,588,1661,554,
76188,9053,4469,583,528,560,523,586,524,585,525,552,531,578,533,576,534,554,528,581,1668,557,1665,581,1631,585,1664,551,1670,575,1646,579,1678,555,1666,579,531,558,1664,581,528,559,1662,584,527,552,532,588,523,575,535,553,1668,578,532,556,1666,580,531,567,1663,582,1639,585,1662,552,1670,575,
76165,9054,4468,583,527,581,529,559,524,585,525,583,526,547,531,587,524,576,535,554,1668,577,1644,581,1667,558,1664,582,1640,586,1663,551,1670,576,1645,579,531,578,533,556,527,582,1666,559,525,583,526,582,528,560,523,586,1663,553,1669,576,1645,580,522,578,1642,582,1666,559,1663,582,1639,586,
40034,9049,2224,585,
114557,9051,4471,581,529,558,525,584,527,582,528,561,522,586,524,585,525,552,531,578,1670,555,1667,579,1643,577,1666,559,1662,583,1638,587,1662,563,1678,587,543,565,537,591,539,589,1651,592,537,591,539,569,533,595,535,593,1647,597,1670,563,1678,587,542,565,1675,589,1651,593,1675,569,1671,593,
40045,9047,2225,553,
114589,9029,4492,559,525,585,526,582,528,550,533,586,524,575,535,553,530,578,532,577,1645,581,1668,557,1664,581,1640,585,1664,552,1670,575,1646,579,1669,556,527,582,529,580,531,557,1663,582,528,560,523,586,524,585,525,552,1669,576,1645,580,1668,556,526,582,1667,559,1663,582,1639,593,1662,553,
40067,9026,4495,556,528,581,529,579,531,557,526,575,527,581,528,561,523,585,525,584,1638,588,1661,554,1667,578,1644,582,1667,559,1663,582,1639,586,1663,552,530,578,1671,555,529,581,1668,556,526,582,529,581,529,559,524,584,1664,550,533,587,1662,553,530,578,1669,555,1667,578,1642,582,1668,559,
58109,9049,4473,578,533,576,534,555,529,580,531,578,532,556,527,582,528,580,529,559,1663,583,1639,586,1662,553,1669,580,1644,581,1668,558,1664,581,1640,582,525,584,527,552,531,588,1670,554,529,579,531,578,532,556,527,582,1666,558,1663,582,1639,587,524,584,1636,578,1671,564,1676,588,1652,592,
263241,9028,4503,557,526,582,528,581,529,559,523,594,526,584,527,552,532,588,527,575,1646,579,1670,556,1666,579,1642,583,1665,560,1662,584,1638,578,1671,554,529,580,1669,559,527,582,1667,559,525,584,526,582,528,560,523,586,1662,552,530,578,1671,555,529,580,1668,556,1665,581,1640,584,1664,551,
40069,9025,2221,588
};
const InfraredMessage test_decoder_nec_expected2[] = {
{InfraredProtocolNEC, 0x00, 0x02, false},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, false},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x02, true},
{InfraredProtocolNEC, 0x00, 0x06, false},
{InfraredProtocolNEC, 0x00, 0x06, true},
{InfraredProtocolNEC, 0x00, 0x04, false},
{InfraredProtocolNEC, 0x00, 0x04, true},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, true},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, true},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x09, false},
{InfraredProtocolNEC, 0x00, 0x09, false},
{InfraredProtocolNEC, 0x00, 0x09, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x0A, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, true},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x08, true},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x0A, false},
{InfraredProtocolNEC, 0x00, 0x08, false},
{InfraredProtocolNEC, 0x00, 0x0A, false},
{InfraredProtocolNEC, 0x00, 0x0A, true},
};
const uint32_t test_decoder_nec_input3[] = {
200000, 8862, 4452, 562, 563, 559, 1681, 563, 1646, 567, 586, 556, 569, 563, 583, 559, 571, 561, 1675, 559, 565, 567, 1673, 561, 561, 561, 592, 561, 565, 567, 579, 563, 567, 565, 584, 558, 1652, 561, 592, 561, 561, 561, 1679, 565, 560, 562, 584, 558, 1659, 564, 585, 557, 566, 566, 1675, 559, 1649, 564, 589, 564, 1649, 564, 1668, 566, 565, 567, 1669, 565,
43470, 8896, 4432, 561, 561, 561, 1679, 565, 1648, 565, 581, 561, 568, 564, 586, 567, 558, 564, 1676, 558, 564, 558, 1681, 563, 563, 559, 587, 566, 565, 567, 582, 561, 564, 558, 595, 558, 1650, 563, 590, 563, 563, 559, 1674, 560, 570, 562, 587, 566, 1645, 568, 586, 556, 565, 567, 1672, 562, 1651, 562, 584, 558, 1658, 566, 1671, 563, 561, 561, 1679, 565,
200000, 8881, 4383, 569, 549, 573, 548, 574, 541, 571, 550, 572, 547, 575, 539, 573, 551, 571, 1651, 573, 545, 567, 554, 568, 548, 574, 1652, 572, 547, 575, 1645, 568, 1661, 573, 545, 567, 1657, 567, 554, 568, 547, 575, 1652, 572, 547, 575, 539, 573, 1657, 567, 550, 572, 545, 577, 1651, 573, 1648, 576, 545, 567, 1659, 575, 1645, 568, 555, 567, 1657, 567,
38995, 8883, 4369, 573, 543, 569, 552, 570, 549, 573, 541, 571, 553, 569, 548, 574, 543, 569, 1658, 566, 550, 572, 548, 574, 546, 566, 1653, 571, 553, 569, 1654, 570, 1654, 570, 551, 571, 1651, 573, 547, 575, 545, 567, 1653, 571, 552, 570, 547, 575, 1649, 564, 556, 566, 550, 572, 1655, 569, 1656, 568, 546, 566, 1664, 570, 1653, 571, 547, 565, 1663, 571,
200000, 8987, 4504, 561, 593, 539, 589, 533, 596, 515, 586, 536, 592, 540, 588, 534, 595, 517, 1713, 541, 1664, 570, 1686, 558, 596, 515, 587, 535, 593, 539, 1691, 543, 1689, 565, 588, 513, 1691, 563, 1668, 617, 1613, 641, 1615, 567, 587, 535, 593, 519, 610, 512, 590, 542, 1714, 510, 593, 539, 1691, 563, 591, 510, 1720, 535, 594, 518, 584, 538, 591, 541,
39546, 8990, 4501, 565, 590, 542, 586, 536, 593, 508, 593, 539, 589, 543, 585, 537, 592, 509, 1720, 545, 1660, 615, 1642, 561, 567, 534, 594, 538, 590, 542, 1688, 535, 1696, 558, 595, 517, 1687, 567, 1664, 621, 1635, 619, 1611, 561, 594, 538, 590, 511, 617, 515, 586, 536, 1721, 513, 589, 543, 1687, 568, 587, 514, 1691, 563, 590, 511, 591, 541, 587, 535,
200000, 8986, 4505, 560, 594, 538, 590, 542, 586, 515, 586, 536, 593, 539, 589, 533, 595, 517, 1714, 540, 587, 535, 594, 518, 1713, 542, 586, 515, 587, 535, 1722, 543, 1662, 562, 592, 540, 1664, 570, 585, 537, 591, 541, 1689, 545, 584, 538, 590, 542, 1688, 536, 593, 539, 589, 512, 590, 542, 586, 536, 1720, 514, 588, 544, 585, 537, 591, 541, 587, 514,
40671, 8986, 4505, 560, 594, 538, 590, 542, 586, 515, 587, 535, 593, 539, 589, 533, 595, 516, 1714, 541, 587, 535, 594, 518, 1712, 542, 586, 515, 587, 535, 1722, 543, 1662, 561, 592, 540, 1664, 570, 585, 537, 591, 541, 1689, 545, 584, 538, 590, 542, 1688, 536, 593, 539, 589, 512, 590, 542, 586, 536, 1720, 514, 588, 544, 585, 537, 591, 541, 587, 514,
200000, 8990, 4500, 566, 1692, 562, 1668, 566, 588, 534, 594, 518, 584, 538, 591, 541, 587, 535, 1669, 565, 589, 543, 1688, 536, 592, 540, 1691, 563, 1667, 567, 1664, 621, 1635, 568, 586, 515, 587, 535, 593, 539, 589, 543, 1662, 562, 592, 540, 588, 534, 594, 518, 585, 537, 591, 541, 587, 514, 587, 535, 594, 538, 590, 542, 586, 515, 586, 536, 593, 539,
39544, 8993, 4498, 567, 1690, 564, 1666, 568, 586, 536, 593, 508, 593, 539, 589, 543, 585, 537, 1668, 566, 588, 544, 1687, 537, 591, 541, 1690, 564, 1666, 568, 1663, 561, 1696, 569, 585, 516, 586, 536, 593, 539, 589, 543, 1661, 562, 592, 540, 588, 534, 594, 517, 584, 538, 591, 541, 587, 514, 587, 535, 593, 539, 589, 543, 585, 516, 586, 536, 592, 540,
200000, 8894, 4456, 589, 1676, 589, 571, 582, 574, 589, 571, 582, 1683, 582, 1677, 588, 1682, 583, 574, 589, 568, 585, 1682, 583, 1678, 587, 1680, 585, 574, 589, 565, 588, 575, 588, 1675, 590, 567, 586, 1681, 584, 571, 582, 1685, 590, 568, 585, 569, 584, 1685, 590, 567, 586, 1678, 587, 574, 589, 1672, 582, 578, 585, 1679, 586, 1674, 591, 572, 591, 1672, 582,
39632, 8912, 4464, 560, 1703, 562, 598, 565, 594, 559, 594, 559, 1711, 564, 1698, 567, 1697, 568, 593, 560, 595, 568, 1698, 567, 1698, 567, 1693, 561, 602, 561, 596, 567, 590, 563, 1704, 561, 594, 559, 1707, 568, 591, 562, 1697, 568, 596, 567, 590, 563, 1700, 565, 596, 567, 1693, 561, 599, 564, 1701, 564, 589, 564, 1706, 559, 1704, 561, 597, 566, 1700, 565,
200000, 9018, 4500, 565, 1666, 568, 1689, 565, 588, 513, 1691, 615, 1616, 618, 1639, 564, 1667, 567, 587, 535, 594, 538, 563, 538, 590, 542, 586, 536, 593, 508, 593, 539, 589, 543, 1688, 535, 592, 540, 588, 544, 585, 537, 591, 510, 1694, 560, 1670, 564, 1693, 562, 1669, 565, 1692, 542, 1689, 565, 588, 534, 595, 517, 585, 537, 591, 541, 587, 535, 568, 544, 584, 538, 591, 541, 1663, 560, 1696, 569, 1662, 562, 1695, 539, 1692, 614, 1616, 566, 1691, 563, 1667, 567,
23184, 9012, 4505, 560, 1697, 537, 1693, 561, 593, 508, 1696, 569, 1662, 562, 1695, 560, 1671, 563, 591, 541, 587, 535, 594, 518, 584, 538, 590, 542, 586, 515, 613, 509, 593, 539, 1692, 542, 585, 537, 592, 540, 588, 534, 594, 518, 1687, 567, 1663, 560, 1697, 568, 1662, 562, 1695, 539, 1692, 563, 591, 541, 587, 514, 588, 544, 584, 538, 590, 542, 586, 515, 587, 535, 593, 539, 1666, 568, 1689, 565, 1665, 569, 1688, 536, 1695, 570, 1661, 562, 1694, 561, 1670, 564,
200000, 8835, 4446, 537, 562, 539, 562, 539, 1663, 540, 1667, 536, 1669, 534, 560, 531, 573, 539, 559, 532, 1672, 531, 570, 531, 564, 537, 563, 538, 561, 540, 1660, 533, 1677, 536, 561, 540, 557, 534, 567, 534, 1668, 535, 1672, 531, 1675, 538, 555, 536, 1674, 539, 1665, 538, 1666, 537, 1671, 532, 563, 538, 1669, 534, 566, 535, 558, 533, 1677, 536, 562, 539, 558, 533, 568, 533, 1668, 535, 566, 535, 1670, 533, 1667, 536, 568, 533, 1671, 532, 1672, 531, 1676, 537,
22779, 8870, 4437, 535,
92592, 8861, 4414, 538,
};
const InfraredMessage test_decoder_nec_expected3[] = {
{InfraredProtocolNECext, 0x286, 0xB649, false},
{InfraredProtocolNECext, 0x286, 0xB649, false},
{InfraredProtocolNECext, 0x6880, 0xB649, false},
{InfraredProtocolNECext, 0x6880, 0xB649, false},
{InfraredProtocolNECext, 0x6380, 0x150F, false},
{InfraredProtocolNECext, 0x6380, 0x150F, false},
{InfraredProtocolNECext, 0x6480, 0x849, false},
{InfraredProtocolNECext, 0x6480, 0x849, false},
{InfraredProtocolNECext, 0x7A83, 0x8, false},
{InfraredProtocolNECext, 0x7A83, 0x8, false},
{InfraredProtocolNEC, 0x71, 0x4A, false},
{InfraredProtocolNEC, 0x71, 0x4A, false},
{InfraredProtocolNEC42, 0x7B, 0x0, false},
{InfraredProtocolNEC42, 0x7B, 0x0, false},
{InfraredProtocolNEC42, 0x11C, 0x12, false},
};
const InfraredMessage test_nec[] = {
{InfraredProtocolNEC, 0x00, 0x00, false},
{InfraredProtocolNEC, 0x01, 0x00, false},
{InfraredProtocolNEC, 0x01, 0x80, false},
{InfraredProtocolNEC, 0x00, 0x80, false},
{InfraredProtocolNEC, 0x00, 0x00, false},
{InfraredProtocolNEC, 0x00, 0x00, true},
{InfraredProtocolNEC, 0x00, 0x00, false},
{InfraredProtocolNEC, 0x00, 0x00, true},
{InfraredProtocolNEC, 0xFF, 0xFF, false},
{InfraredProtocolNEC, 0xFE, 0xFF, false},
{InfraredProtocolNEC, 0xFE, 0x7F, false},
{InfraredProtocolNEC, 0xFF, 0x7F, false},
{InfraredProtocolNEC, 0xFF, 0xFF, false},
{InfraredProtocolNEC, 0xFF, 0xFF, true},
{InfraredProtocolNEC, 0xAA, 0x55, false},
{InfraredProtocolNEC, 0x55, 0xAA, false},
{InfraredProtocolNEC, 0x55, 0x55, false},
{InfraredProtocolNEC, 0xAA, 0xAA, false},
{InfraredProtocolNEC, 0xAA, 0xAA, true},
{InfraredProtocolNEC, 0xAA, 0xAA, false},
{InfraredProtocolNEC, 0xAA, 0xAA, true},
{InfraredProtocolNEC, 0xAA, 0xAA, true},
{InfraredProtocolNEC, 0x55, 0x55, false},
{InfraredProtocolNEC, 0x55, 0x55, true},
{InfraredProtocolNEC, 0x55, 0x55, true},
{InfraredProtocolNEC, 0x55, 0x55, true},
};
const InfraredMessage test_nec42[] = {
{InfraredProtocolNEC42, 0x0000, 0x00, false},
{InfraredProtocolNEC42, 0x0001, 0x00, false},
{InfraredProtocolNEC42, 0x0001, 0x80, false},
{InfraredProtocolNEC42, 0x0000, 0x80, false},
{InfraredProtocolNEC42, 0x0000, 0x00, false},
{InfraredProtocolNEC42, 0x0000, 0x00, true},
{InfraredProtocolNEC42, 0x0000, 0x00, false},
{InfraredProtocolNEC42, 0x0000, 0x00, true},
{InfraredProtocolNEC42, 0x1FFF, 0xFF, false},
{InfraredProtocolNEC42, 0x1FFE, 0xFF, false},
{InfraredProtocolNEC42, 0x1FFE, 0x7F, false},
{InfraredProtocolNEC42, 0x1FFF, 0x7F, false},
{InfraredProtocolNEC42, 0x1FFF, 0xFF, false},
{InfraredProtocolNEC42, 0x1FFF, 0xFF, true},
{InfraredProtocolNEC42, 0x0AAA, 0x55, false},
{InfraredProtocolNEC42, 0x1555, 0xAA, false},
{InfraredProtocolNEC42, 0x1555, 0x55, false},
{InfraredProtocolNEC42, 0x0AAA, 0xAA, false},
{InfraredProtocolNEC42, 0x0AAA, 0xAA, true},
{InfraredProtocolNEC42, 0x0AAA, 0xAA, false},
{InfraredProtocolNEC42, 0x0AAA, 0xAA, true},
{InfraredProtocolNEC42, 0x0AAA, 0xAA, true},
{InfraredProtocolNEC42, 0x1555, 0x55, false},
{InfraredProtocolNEC42, 0x1555, 0x55, true},
{InfraredProtocolNEC42, 0x1555, 0x55, true},
{InfraredProtocolNEC42, 0x1555, 0x55, true},
};
const InfraredMessage test_nec42ext[] = {
{InfraredProtocolNEC42ext, 0x0000000, 0x0000, false},
{InfraredProtocolNEC42ext, 0x0000001, 0x0000, false},
{InfraredProtocolNEC42ext, 0x0000001, 0x8000, false},
{InfraredProtocolNEC42ext, 0x0000000, 0x8000, false},
{InfraredProtocolNEC42ext, 0x0000000, 0x0000, false},
{InfraredProtocolNEC42ext, 0x0000000, 0x0000, true},
{InfraredProtocolNEC42ext, 0x0000000, 0x0000, false},
{InfraredProtocolNEC42ext, 0x0000000, 0x0000, true},
{InfraredProtocolNEC42ext, 0x3F000FF, 0xF00F, false},
{InfraredProtocolNEC42ext, 0x3F000FE, 0xF00F, false},
{InfraredProtocolNEC42ext, 0x3F000FE, 0x700F, false},
{InfraredProtocolNEC42ext, 0x3F000FF, 0x700F, false},
{InfraredProtocolNEC42ext, 0x3F000FF, 0xF00F, false},
{InfraredProtocolNEC42ext, 0x3F000FF, 0xF00F, true},
{InfraredProtocolNEC42ext, 0x2AAAAAA, 0x5555, false},
{InfraredProtocolNEC42ext, 0x1555555, 0xAAAA, false},
{InfraredProtocolNEC42ext, 0x1555555, 0x5555, false},
{InfraredProtocolNEC42ext, 0x2AAAAAA, 0xAAAA, false},
{InfraredProtocolNEC42ext, 0x2AAAAAA, 0xAAAA, true},
{InfraredProtocolNEC42ext, 0x2AAAAAA, 0xAAAA, false},
{InfraredProtocolNEC42ext, 0x2AAAAAA, 0xAAAA, true},
{InfraredProtocolNEC42ext, 0x2AAAAAA, 0xAAAA, true},
{InfraredProtocolNEC42ext, 0x1555555, 0x5555, false},
{InfraredProtocolNEC42ext, 0x1555555, 0x5555, true},
{InfraredProtocolNEC42ext, 0x1555555, 0x5555, true},
{InfraredProtocolNEC42ext, 0x1555555, 0x5555, true},
};
const uint32_t test_decoder_nec42ext_input1[] = {
2000000, 9000, 4500, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 8
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 16
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 24
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 32
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 40
560, 560, 560, 560, 560, // 42
};
const uint32_t test_decoder_nec42ext_input2[] = {
2000000, 9000, 4500, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 8
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 16
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 24
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 32
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 40
560, 560, 560, 560, 560, 560, 560, // 43 - failed
2000000, 9000, 4500, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 8
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 16
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 24
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 32
560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, 560, // 40
560, 560, 560, 560, 560, 10000, 560, // 42 OK + 1 failed
};
const InfraredMessage test_decoder_nec42ext_expected1[] = {
{InfraredProtocolNEC42ext, 0x00, 0, false},
};
const InfraredMessage test_decoder_nec42ext_expected2[] = {
{InfraredProtocolNEC42ext, 0x00, 0, false},
};

View File

@ -1,255 +0,0 @@
const uint32_t test_decoder_necext_input1[] = {
1915384, 8967, 4463, 587, 527, 590, 524, 584, 1647, 590, 524, 583, 531, 586, 527, 590, 524, 583, 1646, 589, 1640, 586, 527, 590, 524, 583, 1647, 590, 1640, 587, 1644, 582, 1647, 589, 524, 583, 531, 586, 1644, 593, 521, 586, 527, 589, 1641, 586, 528, 589, 525, 592, 521, 585, 1644, 592, 522, 585, 1645, 592, 1638, 589, 524, 592, 1637, 588, 1641, 585, 1645, 592,
41082, 8965, 2220, 591,
409594, 8972, 4458, 591, 523, 584, 530, 587, 1642, 584, 529, 588, 526, 591, 522, 583, 530, 587, 1643, 584, 1646, 590, 523, 584, 530, 587, 1643, 584, 1647, 590, 1640, 586, 1643, 583, 531, 586, 527, 589, 1641, 586, 528, 589, 524, 593, 1637, 589, 524, 593, 521, 586, 529, 589, 1641, 585, 528, 589, 1640, 586, 1644, 592, 521, 585, 1645, 592, 1638, 588, 1641, 585,
41088, 8968, 2218, 582,
95791, 8971, 2214, 587,
95787, 8965, 2220, 591,
95783, 8971, 2215, 585,
95787, 8964, 2221, 590,
95783, 8971, 2215, 586,
95788, 8965, 2220, 591,
95783, 8969, 2216, 585,
95789, 8965, 2220, 590,
95782, 8970, 2215, 586,
95788, 9047, 2139, 591,
95782, 8970, 2216, 585,
95788, 8966, 2220, 591,
95782, 8972, 2214, 588,
95786, 8964, 2222, 590,
95784, 8971, 2214, 586,
95787, 8967, 2218, 583,
95791, 8964, 2222, 588,
95785, 8969, 2217, 584,
333740, 8967, 4464, 586, 528, 590, 524, 592, 1637, 589, 525, 592, 521, 586, 528, 589, 525, 593, 1637, 588, 1640, 585, 528, 589, 525, 592, 1638, 589, 1641, 586, 1644, 592, 1638, 588, 525, 592, 522, 585, 1644, 592, 522, 585, 528, 588, 1642, 585, 529, 588, 526, 591, 522, 585, 1645, 591, 522, 584, 1646, 591, 1639, 587, 526, 591, 1639, 588, 1642, 583, 1646, 590,
41082, 8963, 2223, 588,
95785, 8967, 2219, 591,
95782, 8968, 2217, 584,
246369, 8972, 4459, 591, 523, 583, 530, 587, 1643, 583, 530, 587, 527, 590, 523, 584, 530, 586, 1643, 583, 1647, 590, 524, 583, 530, 586, 1643, 583, 1646, 589, 1641, 586, 1644, 583, 531, 586, 528, 589, 1640, 585, 528, 588, 525, 592, 1638, 588, 525, 592, 522, 585, 529, 589, 1641, 584, 529, 588, 1642, 585, 1645, 591, 522, 585, 1645, 590, 1639, 587, 1642, 584,
41090, 8966, 2220, 591,
95782, 8966, 2220, 592,
95782, 8967, 2218, 583,
165604, 9017, 4413, 586, 527, 590, 524, 583, 1647, 589, 523, 582, 531, 586, 528, 589, 525, 593, 1637, 589, 1640, 585, 527, 588, 525, 592, 1638, 589, 1641, 585, 1644, 592, 1638, 588, 525, 591, 523, 585, 1645, 591, 522, 584, 529, 588, 1642, 584, 530, 587, 527, 591, 523, 584, 1646, 591, 523, 584, 1646, 591, 1640, 586, 527, 590, 1640, 586, 1643, 583, 1646, 589,
41084, 8972, 2214, 587,
95787, 8967, 2219, 581,
95792, 8971, 2215, 586,
208929, 9016, 4414, 584, 529, 588, 526, 591, 1638, 588, 525, 591, 522, 584, 529, 587, 526, 591, 1639, 587, 1642, 584, 529, 588, 526, 591, 1638, 587, 1643, 584, 1646, 591, 1639, 587, 526, 590, 523, 584, 1646, 590, 524, 583, 530, 587, 1643, 583, 530, 587, 527, 590, 524, 583, 1647, 590, 524, 583, 1647, 590, 1640, 586, 527, 589, 1640, 586, 1644, 592, 1637, 589,
41085, 8972, 2214, 587,
95787, 8964, 2221, 590,
95784, 8965, 2221, 590,
167378, 8969, 4460, 589, 525, 582, 532, 586, 1644, 592, 521, 586, 528, 589, 524, 592, 522, 585, 1645, 592, 1638, 589, 525, 592, 522, 585, 1644, 591, 1639, 588, 1642, 585, 1645, 591, 522, 585, 529, 587, 1641, 584, 530, 587, 526, 591, 1639, 588, 526, 591, 522, 584, 530, 587, 1643, 584, 530, 587, 1642, 584, 1646, 591, 523, 584, 1647, 590, 1640, 587, 1643, 583,
41090, 9017, 2169, 591,
95781, 8969, 2216, 585,
95788, 8964, 2223, 588,
192781, 8969, 4461, 589, 525, 592, 522, 586, 1644, 592, 521, 586, 528, 589, 525, 592, 522, 585, 1644, 592, 1638, 589, 524, 592, 521, 586, 1645, 591, 1638, 588, 1642, 585, 1645, 590, 522, 584, 530, 587, 1642, 584, 530, 587, 526, 591, 1639, 588, 526, 590, 524, 583, 530, 587, 1643, 584, 530, 587, 1643, 584, 1646, 590, 524, 583, 1646, 590, 1640, 587, 1643, 583,
41090, 8967, 2219, 591,
95782, 8970, 2215, 586,
95788, 8963, 2222, 589,
179978, 8967, 4464, 586, 528, 589, 524, 593, 1637, 588, 525, 592, 522, 585, 529, 589, 525, 592, 1638, 589, 1641, 585, 529, 588, 526, 591, 1638, 588, 1641, 585, 1645, 590, 1639, 587, 527, 590, 523, 584, 1646, 591, 523, 584, 530, 587, 1643, 583, 530, 586, 527, 590, 524, 583, 1646, 590, 523, 584, 1646, 589, 1640, 586, 528, 589, 1640, 586, 1644, 593, 1638, 589,
41084, 8971, 2214, 587,
95787, 8964, 2221, 589,
95785, 8966, 2219, 592,
196616, 8967, 4463, 585, 527, 590, 525, 592, 1637, 589, 525, 592, 521, 586, 528, 589, 524, 592, 1638, 588, 1641, 585, 528, 589, 525, 592, 1637, 589, 1641, 585, 1645, 591, 1638, 588, 526, 591, 522, 585, 1645, 591, 522, 584, 530, 587, 1642, 584, 529, 588, 526, 591, 523, 583, 1645, 590, 523, 584, 1646, 590, 1639, 587, 527, 590, 1639, 586, 1644, 583, 1647, 589,
41084, 8971, 2214, 587,
95787, 8964, 2222, 589,
2112164, 8969, 4462, 588, 525, 592, 522, 585, 1645, 591, 523, 584, 529, 588, 526, 591, 523, 584, 1645, 591, 1639, 587, 527, 590, 524, 583, 1646, 590, 1639, 587, 1643, 584, 1673, 563, 524, 583, 531, 586, 1643, 593, 521, 586, 528, 589, 1641, 585, 528, 589, 525, 592, 521, 585, 1644, 592, 522, 584, 1645, 591, 1639, 588, 526, 591, 1639, 588, 1642, 583, 1646, 590,
41082, 8962, 2223, 588,
95785, 8965, 2220, 591,
95783, 8968, 2217, 583,
164778, 8969, 4462, 588, 525, 591, 522, 585, 1645, 591, 522, 585, 530, 587, 527, 591, 523, 584, 1646, 591, 1639, 588, 526, 591, 523, 583, 1646, 590, 1639, 587, 1643, 584, 1672, 564, 523, 584, 531, 586, 1643, 583, 530, 587, 527, 590, 1639, 587, 527, 589, 524, 583, 531, 586, 1644, 583, 531, 586, 1643, 583, 1647, 590, 525, 582, 1647, 589, 1639, 586, 1644, 593,
41081, 8965, 2220, 590,
95784, 8968, 2217, 583,
95790, 8970, 2215, 586,
161053, 8963, 4468, 592, 521, 586, 528, 589, 1641, 585, 529, 588, 526, 591, 522, 585, 529, 588, 1642, 585, 1645, 591, 523, 584, 530, 587, 1642, 584, 1646, 591, 1639, 586, 1669, 557, 531, 586, 527, 590, 1640, 586, 527, 590, 525, 592, 1638, 589, 525, 592, 522, 585, 528, 588, 1641, 585, 528, 588, 1642, 584, 1645, 591, 523, 584, 1645, 591, 1639, 587, 1643, 583,
41090, 8964, 2221, 590,
95784, 8963, 2222, 589,
95785, 8965, 2220, 590,
139334, 8968, 4463, 587, 527, 590, 523, 584, 1646, 590, 523, 583, 531, 586, 527, 589, 524, 583, 1647, 590, 1640, 586, 527, 590, 525, 592, 1637, 589, 1641, 585, 1644, 592, 1665, 562, 524, 591, 522, 584, 1645, 591, 523, 584, 529, 588, 1642, 584, 529, 587, 527, 590, 523, 584, 1646, 590, 523, 584, 1646, 590, 1639, 587, 527, 589, 1640, 586, 1644, 592, 1637, 589,
41085, 8970, 2217, 584,
95789, 8972, 2213, 586,
95787, 8965, 2221, 590,
141444, 8969, 4461, 589, 525, 592, 522, 584, 1644, 591, 522, 585, 529, 588, 526, 591, 522, 585, 1645, 592, 1638, 587, 526, 591, 523, 584, 1646, 591, 1639, 588, 1642, 583, 1672, 564, 523, 584, 530, 587, 1643, 584, 530, 587, 527, 590, 1640, 587, 527, 590, 524, 584, 530, 587, 1643, 584, 530, 586, 1644, 583, 1647, 589, 524, 583, 1647, 590, 1640, 586, 1645, 592,
41081, 8964, 2222, 589,
95784, 8968, 2218, 583,
95790, 8971, 2214, 586,
154119, 8969, 4462, 588, 526, 591, 522, 585, 1645, 592, 522, 585, 529, 589, 526, 591, 522, 584, 1646, 591, 1639, 588, 526, 591, 523, 583, 1645, 590, 1639, 587, 1642, 584, 1671, 564, 523, 584, 529, 587, 1643, 583, 530, 587, 527, 590, 1639, 587, 526, 590, 523, 583, 530, 586, 1643, 583, 529, 586, 1643, 583, 1646, 590, 524, 583, 1648, 589, 1641, 586, 1644, 592,
41081, 8965, 2220, 590,
95784, 8969, 2216, 585,
95790, 8964, 2221, 590,
147134, 8966, 4464, 586, 528, 589, 525, 593, 1637, 589, 524, 593, 522, 585, 529, 589, 525, 592, 1638, 589, 1641, 586, 528, 589, 525, 591, 1638, 588, 1641, 585, 1645, 592, 1664, 561, 525, 592, 523, 584, 1646, 591, 523, 584, 530, 588, 1642, 585, 526, 587, 527, 590, 523, 584, 1646, 591, 523, 584, 1646, 591, 1639, 586, 526, 590, 1640, 587, 1643, 583, 1646, 590,
41083, 8963, 2223, 587,
95786, 8965, 2221, 590,
95784, 8968, 2217, 584,
158330, 8965, 4465, 585, 529, 588, 526, 590, 1639, 587, 526, 590, 523, 584, 530, 586, 526, 590, 1639, 587, 1643, 583, 530, 587, 527, 590, 1639, 587, 1643, 584, 1647, 590, 1666, 561, 527, 589, 523, 583, 1646, 590, 523, 583, 531, 586, 1643, 583, 530, 586, 527, 590, 524, 582, 1646, 590, 525, 582, 1647, 589, 1640, 586, 528, 589, 1640, 586, 1644, 592, 1638, 589,
41085, 8971, 2214, 586,
95787, 8962, 2223, 588,
95786, 8965, 2222, 589,
206063, 8962, 4467, 591, 521, 585, 529, 588, 1642, 585, 529, 588, 525, 591, 522, 584, 530, 587, 1642, 584, 1646, 591, 523, 584, 529, 588, 1642, 583, 1646, 590, 1640, 587, 1668, 558, 530, 587, 526, 589, 1639, 586, 528, 589, 524, 583, 1647, 589, 524, 593, 521, 585, 528, 589, 1641, 585, 529, 589, 1641, 585, 1645, 592, 522, 585, 1644, 591, 1639, 587, 1642, 584,
41090, 8965, 2221, 590,
95784, 8963, 2223, 588,
95785, 8964, 2222, 589,
183026, 8970, 4460, 590, 524, 583, 531, 586, 1643, 583, 530, 587, 528, 589, 525, 592, 522, 586, 1644, 592, 1637, 588, 525, 591, 522, 585, 1645, 592, 1638, 588, 1641, 585, 1672, 565, 522, 584, 530, 588, 1642, 584, 529, 588, 526, 591, 1639, 587, 527, 590, 523, 584, 530, 587, 1642, 584, 530, 587, 1642, 583, 1647, 590, 524, 583, 1647, 590, 1640, 587, 1643, 582,
41090, 8965, 2221, 590,
95783, 8970, 2216, 584,
95789, 8962, 2223, 587,
184104, 8964, 4467, 583, 530, 587, 527, 590, 1640, 587, 527, 590, 523, 582, 531, 586, 528, 589, 1640, 586, 1644, 593, 521, 586, 528, 589, 1640, 585, 1644, 592, 1638, 589, 1667, 558, 528, 589, 526, 591, 1638, 588, 526, 591, 522, 585, 1645, 591, 522, 585, 530, 587, 527, 591, 1639, 587, 526, 591, 1639, 587, 1642, 584, 530, 587, 1643, 583, 1646, 590, 1639, 587,
41087, 9020, 2166, 584,
95790, 8972, 2213, 587,
95787, 8963, 2222, 589,
169833, 8964, 4465, 583, 529, 587, 527, 590, 1639, 587, 527, 591, 523, 584, 530, 586, 527, 590, 1640, 587, 1643, 583, 531, 587, 527, 590, 1640, 586, 1644, 583, 1647, 590, 1666, 560, 527, 590, 524, 582, 1647, 589, 525, 592, 521, 586, 1644, 592, 521, 586, 528, 589, 526, 592, 1638, 588, 525, 592, 1638, 589, 1641, 585, 528, 589, 1641, 585, 1645, 591, 1638, 588,
41086, 8971, 2215, 585,
95789, 8964, 2222, 588,
95785, 8967, 2218, 583,
185701, 8971, 4460, 590, 523, 584, 530, 587, 1642, 584, 530, 587, 527, 590, 524, 583, 531, 586, 1644, 583, 1647, 590, 524, 592, 521, 585, 1644, 592, 1638, 589, 1641, 585, 1671, 565, 522, 586, 529, 588, 1642, 585, 529, 588, 526, 591, 1638, 588, 525, 590, 523, 584, 530, 587, 1642, 584, 530, 587, 1642, 584, 1646, 590, 524, 583, 1646, 590, 1640, 586, 1643, 583,
41091, 8965, 2222, 589,
95784, 8965, 2221, 589,
95784, 8968, 2217, 583,
146332, 8969, 4461, 669, 445, 591, 522, 584, 1644, 591, 523, 584, 529, 588, 526, 591, 522, 585, 1645, 591, 1638, 587, 527, 590, 524, 584, 1646, 590, 1639, 587, 1642, 583, 1673, 564, 524, 583, 531, 586, 1643, 583, 531, 586, 528, 589, 1641, 585, 528, 589, 525, 592, 522, 585, 1644, 591, 521, 585, 1645, 592, 1638, 588, 525, 592, 1638, 588, 1641, 584, 1646, 591,
41083, 8963, 2222, 589,
95785, 8966, 2220, 592,
261924, 8965, 4465, 585, 529, 588, 525, 592, 1638, 588, 525, 592, 523, 584, 530, 587, 526, 591, 1639, 587, 1642, 583, 529, 587, 527, 590, 1639, 587, 1643, 584, 1646, 590,
};
const InfraredMessage test_decoder_necext_expected1[] = {
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, false},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
{InfraredProtocolNECext, 0x7984, 0xed12, true},
};
const InfraredMessage test_necext[] = {
{InfraredProtocolNECext, 0x0000, 0x0000, false},
{InfraredProtocolNECext, 0x0001, 0x0000, false},
{InfraredProtocolNECext, 0x0001, 0x8000, false},
{InfraredProtocolNECext, 0x0000, 0x8000, false},
{InfraredProtocolNECext, 0x0000, 0x0000, false},
{InfraredProtocolNECext, 0x0000, 0x0000, true},
{InfraredProtocolNECext, 0x0000, 0x0000, false},
{InfraredProtocolNECext, 0x0000, 0x0000, true},
{InfraredProtocolNECext, 0xFFFF, 0xFFFF, false},
{InfraredProtocolNECext, 0xFFFE, 0xFFFF, false},
{InfraredProtocolNECext, 0xFFFE, 0x7FFF, false},
{InfraredProtocolNECext, 0xFFFF, 0x7FFF, false},
{InfraredProtocolNECext, 0xFFFF, 0xFFFF, false},
{InfraredProtocolNECext, 0xFFFF, 0xFFFF, true},
{InfraredProtocolNECext, 0xAAAA, 0x5555, false},
{InfraredProtocolNECext, 0x5555, 0xAAAA, false},
{InfraredProtocolNECext, 0x5555, 0x5555, false},
{InfraredProtocolNECext, 0xAAAA, 0xAAAA, false},
{InfraredProtocolNECext, 0xAAAA, 0xAAAA, true},
{InfraredProtocolNECext, 0xAAAA, 0xAAAA, false},
{InfraredProtocolNECext, 0xAAAA, 0xAAAA, true},
{InfraredProtocolNECext, 0xAAAA, 0xAAAA, true},
{InfraredProtocolNECext, 0x5555, 0x5555, false},
{InfraredProtocolNECext, 0x5555, 0x5555, true},
{InfraredProtocolNECext, 0x5555, 0x5555, true},
{InfraredProtocolNECext, 0x5555, 0x5555, true},
};

View File

@ -1,160 +0,0 @@
/*
_______----__--____----__--____--__----____----__--__--__--__
| 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
s1 s2 t | address | command |
*/
const uint32_t test_decoder_rc5x_input1[] = {
27000 + 888, 1776, 888, 888, 1776, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 888, 888,
};
const InfraredMessage test_decoder_rc5x_expected1[] = {
{InfraredProtocolRC5X, 0x13, 0x10, false}, // toggle 0
};
/*
_______--__----____----__--____--__----____----__--__--__--__
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
s1 s2 t | address | command |
*/
const uint32_t test_decoder_rc5_input1[] = {
27000 + 888, 888, 888, 1776, 1776, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 888, 888,
};
const InfraredMessage test_decoder_rc5_expected1[] = {
{InfraredProtocolRC5, 0x13, 0x10, false}, // toggle 0
};
/*
_______--__--__--__----__--____--__----____----__--__--__--__
| 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
s1 s2 t | address | command |
*/
const uint32_t test_decoder_rc5_input2[] = {
27000 + 888, 888, 888, 888, 888, 888, 888, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 888, 888,
};
const InfraredMessage test_decoder_rc5_expected2[] = {
{InfraredProtocolRC5, 0x13, 0x10, false}, // toggle 1
};
/*
_______--__----____----__--____--__----____----__--__--____--
| 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 |
s1 s2 t | address | command |
*/
const uint32_t test_decoder_rc5_input3[] = {
27000 + 888, 888, 888, 1776, 1776, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 1776, 888,
};
const InfraredMessage test_decoder_rc5_expected3[] = {
{InfraredProtocolRC5, 0x13, 0x11, false}, // toggle 0
};
/*
_______--__--__--__----__--____--__----____----__--__--____--
| 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 |
s1 s2 t | address | command |
*/
const uint32_t test_decoder_rc5_input4[] = {
27000 + 888, 888, 888, 888, 888, 888, 888, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 1776, 888,
};
const InfraredMessage test_decoder_rc5_expected4[] = {
{InfraredProtocolRC5, 0x13, 0x11, false}, // toggle 1
};
/*
_______--__----____--__--__--__--__--__--__--__--__--__--__--
| 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
s1 s2 t | address | command |
*/
const uint32_t test_decoder_rc5_input5[] = {
27000 + 888, 888, 888, 1776, 1776, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888,
};
const InfraredMessage test_decoder_rc5_expected5[] = {
{InfraredProtocolRC5, 0x1F, 0x3F, false}, // toggle 0
};
/*
_______--__--__--__--__--__--__--__--__--__--__--__--__--__--
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
s1 s2 t | address | command |
*/
const uint32_t test_decoder_rc5_input6[] = {
27000 + 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888,
};
const InfraredMessage test_decoder_rc5_expected6[] = {
{InfraredProtocolRC5, 0x1F, 0x3F, false}, // toggle 1
};
const uint32_t test_decoder_rc5_input_all_repeats[] = {
27000 + 888, 888, 888, 1776, 1776, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 1776, 888,
27000 + 888, 888, 888, 888, 888, 888, 888, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 1776, 888,
27000 + 888, 888, 888, 888, 888, 888, 888, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 1776, 888,
27000 + 888, 888, 888, 888, 888, 888, 888, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 1776, 888,
27000 + 888, 888, 888, 1776, 1776, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 1776, 888,
27000 + 888, 888, 888, 888, 888, 888, 888, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 888, 888,
27000 + 888, 888, 888, 1776, 1776, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 888, 888,
27000 + 888, 888, 888, 1776, 1776, 1776, 888, 888, 1776, 888, 888, 1776, 1776, 1776, 888, 888, 888, 888, 888, 888,
27000 + 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888,
27000 + 888, 888, 888, 1776, 1776, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888,
27000 + 888, 888, 888, 1776, 1776, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, 888,
};
const InfraredMessage test_decoder_rc5_expected_all_repeats[] = {
{InfraredProtocolRC5, 0x13, 0x11, false}, // toggle 0
{InfraredProtocolRC5, 0x13, 0x11, false}, // toggle 1
{InfraredProtocolRC5, 0x13, 0x11, true}, // toggle 1
{InfraredProtocolRC5, 0x13, 0x11, true}, // toggle 1
{InfraredProtocolRC5, 0x13, 0x11, false}, // toggle 0
{InfraredProtocolRC5, 0x13, 0x10, false}, // toggle 1
{InfraredProtocolRC5, 0x13, 0x10, false}, // toggle 0
{InfraredProtocolRC5, 0x13, 0x10, true}, // toggle 0
{InfraredProtocolRC5, 0x1F, 0x3F, false}, // toggle 1
{InfraredProtocolRC5, 0x1F, 0x3F, false}, // toggle 0
{InfraredProtocolRC5, 0x1F, 0x3F, true}, // toggle 0
};
const InfraredMessage test_rc5[] = {
{InfraredProtocolRC5, 0x1F, 0x3F, false},
{InfraredProtocolRC5, 0x00, 0x00, false},
{InfraredProtocolRC5, 0x10, 0x01, false},
{InfraredProtocolRC5, 0x01, 0x20, false},
{InfraredProtocolRC5, 0x01, 0x20, false},
{InfraredProtocolRC5, 0x01, 0x20, true},
{InfraredProtocolRC5, 0x01, 0x20, true},
{InfraredProtocolRC5, 0x01, 0x20, true},
{InfraredProtocolRC5, 0x01, 0x20, true},
{InfraredProtocolRC5, 0x1F, 0x3F, false},
{InfraredProtocolRC5, 0x0A, 0x2A, false},
{InfraredProtocolRC5, 0x15, 0x15, false},
{InfraredProtocolRC5, 0x15, 0x15, true},
{InfraredProtocolRC5X, 0x1F, 0x3F, false},
{InfraredProtocolRC5X, 0x00, 0x00, false},
{InfraredProtocolRC5X, 0x10, 0x01, false},
{InfraredProtocolRC5X, 0x01, 0x20, false},
{InfraredProtocolRC5X, 0x01, 0x20, false},
{InfraredProtocolRC5X, 0x01, 0x20, true},
{InfraredProtocolRC5X, 0x01, 0x20, true},
{InfraredProtocolRC5X, 0x01, 0x20, true},
{InfraredProtocolRC5X, 0x01, 0x20, true},
{InfraredProtocolRC5X, 0x1F, 0x3F, false},
{InfraredProtocolRC5X, 0x0A, 0x2A, false},
{InfraredProtocolRC5X, 0x15, 0x15, false},
{InfraredProtocolRC5X, 0x15, 0x15, true},
};

View File

@ -1,162 +0,0 @@
/*
_____---------______--____--__--__--____------____--__----____--__----__--__--____----____--__--__--__--__--___________
| 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 93 A0 0
s m2 m1 m0 T | address | command |
// 93 A0 0
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
//27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888,
// --__----__--__--
// 0 | 0 | 1 | 1 | 1
//444, 444, 888, 444, 444, 444, 444,
//888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
_____---------______--____--__--__------____--____--__----____--__----__--__--____----____--__--__--__--__--___________
| 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 93 A0 1
// 93 A0 1
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
//27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888,
//444, 444, 888, 444, 444, 444, 444,
//888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
_____---------______--____--__--__--____------____--__----____----____--__----____----____--__--__--__--__--___________
| 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 94 A0 0
// 94 A0 0
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888, 888, 888, 444, 444, 888, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
//27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888,
//----____--__----
//0 | 1 | 0 | 0 | 1
//888, 888, 444, 444, 888,
//888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
_____---------______--____--__--__------____--____--__----____----____--__----____----____--__--__--__--__--___________
| 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 94 A0 1
// 94 A0 1
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 888, 888, 444, 444, 888, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
//27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888,
//888, 888, 444, 444, 888,
//888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
_____---------______--____--__--__--____------____--__----____----____----__--____----____--__--__--__--__--___________
| 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 95 A0 0
// 95 A0 0
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888, 888, 888, 888, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
//27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888,
//----____----__--
//0 | 1 | 0 | 1 | 1
//888, 888, 888, 444, 444,
//888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
_____---------______--____--__--__------____--____--__----____----____----__--____----____--__--__--__--__--___________
| 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 95 A0 1
// 95 A0 1
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 888, 888, 888, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
//27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888,
//888, 888, 888, 444, 444,
//888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
*/
const uint32_t test_decoder_rc6_input1[] = {
// 94 A0 0
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888, 888, 888, 444, 444, 888, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
// 93 A0 1
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
// failed 95
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 888, 888, 888, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 888,
// 93 A0 0
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
// 94 A0 1
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 888, 888, 444, 444, 888, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
// 95 A0 0
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 444 + 444, 888 + 444, 888, 444, 444, 888, 888, 888, 888, 888, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
// failed 93 + 1 sample
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
// failed 93
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 888, 444, 444,
// failed 93
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 888,
// 95 A0 1
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444 + 888, 888, 444, 888, 444, 444, 888, 888, 888, 888, 888, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
};
const InfraredMessage test_decoder_rc6_expected1[] = {
{InfraredProtocolRC6, 0x94, 0xA0, false}, // toggle 0
{InfraredProtocolRC6, 0x93, 0xA0, false}, // toggle 1
// {InfraredProtocolRC6, 0x95, 0xA0, false}, failed
{InfraredProtocolRC6, 0x93, 0xA0, false}, // toggle 0
{InfraredProtocolRC6, 0x94, 0xA0, false}, // toggle 1
{InfraredProtocolRC6, 0x95, 0xA0, false}, // toggle 0
// {InfraredProtocolRC6, 0x93, 0xA0, false}, failed
// {InfraredProtocolRC6, 0x93, 0xA0, false}, failed
// {InfraredProtocolRC6, 0x93, 0xA0, false}, failed
{InfraredProtocolRC6, 0x95, 0xA0, false}, // toggle 1
};
const InfraredMessage test_encoder_rc6_input1[] = {
{InfraredProtocolRC6, 0x93, 0xA0, false}, // Toggle 0
{InfraredProtocolRC6, 0x93, 0xA0, true}, // Toggle 0
{InfraredProtocolRC6, 0x93, 0xA1, false}, // Toggle 1
{InfraredProtocolRC6, 0x93, 0xA1, true}, // Toggle 1
{InfraredProtocolRC6, 0x93, 0xA1, true}, // Toggle 1
{InfraredProtocolRC6, 0x93, 0xA0, false}, // Toggle 0
{InfraredProtocolRC6, 0x93, 0xA0, false}, // Toggle 1
{InfraredProtocolRC6, 0x93, 0xA0, true}, // Toggle 1
};
const uint32_t test_encoder_rc6_expected1[] = {
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 888, 888+444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 888, 888+444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444+888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 888,
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444+888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 888,
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444+888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 888,
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444, 888, 888+444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444+888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
27000, 2666, 889, 444, 888, 444, 444, 444, 444, 444+888, 888, 444, 888, 444, 444, 888, 888, 444, 444, 888, 444, 444, 444, 444, 888, 888, 888, 444, 444, 444, 444, 444, 444, 444, 444, 444,
};
const InfraredMessage test_rc6[] = {
{InfraredProtocolRC6, 0x00, 0x00, false}, // t 0
{InfraredProtocolRC6, 0x80, 0x00, false}, // t 1
{InfraredProtocolRC6, 0x80, 0x01, false}, // t 0
{InfraredProtocolRC6, 0x00, 0x01, false}, // t 1
{InfraredProtocolRC6, 0x00, 0x00, false}, // t 0
{InfraredProtocolRC6, 0x00, 0x00, true}, // t 0
{InfraredProtocolRC6, 0x00, 0x00, false}, // t 1
{InfraredProtocolRC6, 0x00, 0x00, true}, // t 1
{InfraredProtocolRC6, 0xFF, 0xFF, false}, // t 0
{InfraredProtocolRC6, 0x7F, 0xFF, false}, // t 1
{InfraredProtocolRC6, 0x7F, 0xFE, false}, // t 0
{InfraredProtocolRC6, 0xFF, 0xFE, false}, // t 1
{InfraredProtocolRC6, 0xFF, 0xFF, false}, // t 0
{InfraredProtocolRC6, 0xFF, 0xFF, true}, // t 0
{InfraredProtocolRC6, 0xAA, 0x55, false}, // t 1
{InfraredProtocolRC6, 0x55, 0xAA, false}, // t 0
{InfraredProtocolRC6, 0x55, 0x55, false}, // t 1
{InfraredProtocolRC6, 0xAA, 0xAA, false}, // t 0
{InfraredProtocolRC6, 0xAA, 0xAA, true}, // t 0
// same with inverted toggle bit
{InfraredProtocolRC6, 0x00, 0x00, false}, // t 1
{InfraredProtocolRC6, 0x80, 0x00, false}, // t 0
{InfraredProtocolRC6, 0x80, 0x01, false}, // t 1
{InfraredProtocolRC6, 0x00, 0x01, false}, // t 0
{InfraredProtocolRC6, 0x00, 0x00, false}, // t 1
{InfraredProtocolRC6, 0x00, 0x00, true}, // t 1
{InfraredProtocolRC6, 0x00, 0x00, false}, // t 0
{InfraredProtocolRC6, 0x00, 0x00, true}, // t 0
{InfraredProtocolRC6, 0xFF, 0xFF, false}, // t 1
{InfraredProtocolRC6, 0x7F, 0xFF, false}, // t 0
{InfraredProtocolRC6, 0x7F, 0xFE, false}, // t 1
{InfraredProtocolRC6, 0xFF, 0xFE, false}, // t 0
{InfraredProtocolRC6, 0xFF, 0xFF, false}, // t 1
{InfraredProtocolRC6, 0xFF, 0xFF, true}, // t 1
{InfraredProtocolRC6, 0xAA, 0x55, false}, // t 0
{InfraredProtocolRC6, 0x55, 0xAA, false}, // t 1
{InfraredProtocolRC6, 0x55, 0x55, false}, // t 0
{InfraredProtocolRC6, 0xAA, 0xAA, false}, // t 1
{InfraredProtocolRC6, 0xAA, 0xAA, true}, // t 1
{InfraredProtocolRC6, 0x93, 0xA0, false}, // t 0
{InfraredProtocolRC6, 0x93, 0xA1, false}, // t 1
};

View File

@ -1,254 +0,0 @@
const uint32_t test_decoder_samsung32_input1[] = {
3129767, 4513, 4483, 565, 530, 586, 1670, 563, 1664, 588, 1666, 566, 530, 586,
535, 560, 535, 591, 531, 565, 531, 585, 1669, 563, 1666, 587, 1640, 593,
531, 566, 530, 587, 536, 559, 562, 564, 531, 585, 537, 558, 1670, 562,
1665, 587, 534, 561, 534, 592, 530, 566, 529, 587, 1668, 564, 1664, 589,
533, 563, 533, 594, 1661, 560, 1667, 565, 1661, 591, 1664, 558, 46325, 4517,
4480, 558, 1668, 595,
679127, 4511, 4485, 562, 532, 584, 1671, 561, 1666, 587, 1668, 564, 532, 585,
537, 559, 537, 589, 533, 562, 533, 593, 1661, 561, 1667, 586, 1642, 590,
532, 563, 531, 585, 537, 559, 564, 563, 1666, 567, 528, 588, 535, 613,
483, 593, 530, 586, 536, 559, 536, 590, 1637, 584, 537, 558, 1669, 594,
1661, 561, 1667, 586, 1642, 591, 1664, 559, 1670, 583, 534, 567, 46429, 4515,
4480, 558, 1671, 593,
618571, 4508, 4488, 560, 561, 566, 1663, 559, 1667, 583, 1670, 562, 534, 582,
540, 565, 531, 587, 536, 560, 536, 590, 1664, 558, 1670, 583, 1644, 588,
535, 561, 534, 592, 530, 566, 557, 610, 1616, 616, 479, 585, 537, 558,
537, 589, 534, 584, 539, 567, 529, 587, 534, 561, 534, 592, 1663, 559,
1668, 564, 1664, 588, 1666, 566, 1661, 581, 1646, 585, 1669, 563, 46106, 4511,
4485, 563, 1664, 589,
514897, 4514, 4482, 556, 564, 614, 1616, 565, 1664, 589, 1666, 557, 538, 588,
534, 562, 534, 592, 529, 566, 529, 587, 1667, 565, 1663, 590, 1638, 584,
538, 568, 527, 590, 534, 562, 562, 566, 530, 587, 1642, 590, 532, 563,
530, 586, 537, 589, 533, 563, 533, 583, 539, 566, 1661, 561, 561, 566,
1663, 559, 1668, 584, 1671, 563, 1666, 556, 1671, 591, 1663, 559, 46210, 4508,
4488, 560, 1668, 585,
683922, 4509, 4487, 561, 560, 565, 1662, 559, 1669, 585, 1670, 562, 534, 583,
540, 566, 529, 586, 535, 560, 535, 591, 1663, 559, 1669, 584, 1644, 588,
534, 561, 533, 593, 529, 556, 567, 561, 1668, 564, 1664, 590, 534, 563,
532, 584, 538, 557, 537, 589, 534, 562, 534, 593, 530, 566, 555, 561,
1667, 564, 1662, 589, 1665, 557, 1671, 581, 1647, 586, 1669, 564, 46686, 4514,
4481, 556, 1672, 592,
1088255, 4514, 4481, 557, 564, 562, 1667, 565, 1663, 591, 1665, 558, 538, 590,
533, 564, 532, 583, 539, 567, 528, 588, 1666, 566, 1663, 580, 1648, 585,
537, 559, 537, 589, 533, 562, 560, 618, 478, 589, 535, 562, 1667, 565,
1662, 588, 531, 565, 531, 585, 537, 558, 536, 590, 1666, 566, 1661, 592,
530, 566, 530, 586, 1669, 564, 1664, 558, 1669, 594, 1662, 560, 46291, 4510,
4485, 563, 1663, 589, 97349, 4510, 4487, 561, 1666, 586, 97560, 4513, 4482, 566,
1662, 591, 97123, 4510, 4485, 563, 1664, 588, 97605, 4508, 4487, 561, 1666, 586,
97371, 4518, 4478, 560, 1668, 595, 97514, 4518, 4478, 560, 1667, 586, 97014, 4515,
4480, 568, 1660, 593, 96719, 4516, 4481, 567, 1660, 593, 97528, 4515, 4480, 568,
1659, 593, 97453, 4510, 4485, 563, 1665, 587, 97351, 4518, 4477, 561, 1668, 585,
97216, 4511, 4484, 564, 1664, 589, 97708, 4518, 4477, 561, 1667, 586, 96718, 4516,
4479, 559, 1669, 594, 97070, 4515, 4480, 568, 1660, 593, 97500, 4511, 4484, 564,
1662, 590, 97425, 4515, 4481, 567, 1660, 593, 97025, 4515, 4482, 566, 1660, 592,
96796, 4509, 4487, 561, 1666, 587, 97399, 4512, 4484, 565, 1662, 591, 97486, 4516,
4480, 567, 1658, 594, 97425, 4515, 4481, 567, 1659, 593, 97511, 4510, 4485, 563,
1664, 650, 96969, 4511, 4485, 562, 1665, 588, 97243, 4512, 4484, 564, 1663, 590,
97031, 4519, 4478, 560, 1666, 586, 97548, 4514, 4482, 566, 1661, 591, 97302, 4515,
4480, 568, 1659, 593, 97726, 4510, 4486, 562, 1665, 588, 97396, 4514, 4482, 566,
1661, 592, 97301, 4515, 4480, 568, 1661, 593, 97453, 4518, 4477, 560, 1667, 585,
97430, 4518, 4477, 561, 1665, 587, 97521, 4511, 4484, 564, 1664, 589, 97182, 4512,
4484, 564, 1663, 590, 97760, 4516, 4479, 559, 1668, 595, 97268, 4516, 4479, 559,
1668, 595, 97243, 4512, 4485, 563, 1663, 589, 97695, 4510, 4486, 562, 1664, 588,
374205, 4513, 4483, 565, 530, 586, 1669, 564, 1665, 589, 1667, 567, 529, 587,
535, 560, 535, 591, 531, 565, 530, 585, 1669, 563, 1664, 588, 1639, 593,
529, 566, 529, 587, 536, 560, 563, 565, 532, 585, 537, 560, 1669, 563,
1664, 587, 534, 561, 534, 592, 529, 566, 529, 586, 1668, 564, 1663, 589,
532, 563, 534, 593, 1661, 562, 1666, 566, 1662, 591, 1664, 558,
149343, 4512, 4483, 565, 530, 586, 1669, 563, 1664, 588, 1667, 565, 530, 586,
536, 560, 536, 590, 532, 563, 531, 586, 1670, 563, 1666, 567, 1660, 592,
530, 565, 529, 586, 537, 558, 563, 563, 532, 584, 538, 568, 1661, 561,
1665, 587, 535, 560, 535, 592, 532, 565, 531, 587, 1669, 563, 1665, 587,
534, 561, 534, 592, 1663, 559, 1668, 564, 1662, 590, 1666, 566,
116399, 4514, 4482, 566, 531, 587, 1669, 564, 1664, 589, 1666, 566, 529, 587,
535, 561, 535, 592, 531, 565, 529, 587, 1668, 564, 1664, 558, 1670, 595,
529, 566, 528, 589, 535, 560, 562, 565, 531, 585, 536, 559, 1668, 564,
1664, 589, 534, 561, 533, 593, 530, 565, 528, 588, 1668, 564, 1665, 590,
533, 564, 532, 594, 1661, 561, 1666, 566, 1661, 592, 1663, 558,
121946, 4517, 4478, 559, 537, 590, 1664, 568, 1660, 593, 1661, 560, 536, 590,
531, 564, 531, 585, 537, 559, 536, 590, 1665, 568, 1661, 561, 1666, 587,
537, 559, 529, 591, 531, 564, 558, 558, 537, 588, 533, 562, 1665, 567,
1659, 593, 530, 565, 529, 587, 536, 561, 535, 592, 1664, 559, 1671, 593,
530, 566, 528, 587, 1667, 565, 1662, 558, 1668, 595, 1660, 561, 46509, 4516,
4479, 558, 1668, 594,
88785, 4512, 4484, 564, 530, 585, 1669, 563, 1664, 588, 1666, 566, 530, 587,
536, 560, 535, 592, 532, 565, 531, 585, 1669, 563, 1665, 557, 1669, 594,
530, 566, 530, 586, 535, 560, 562, 564, 530, 585, 537, 558, 1669, 563,
1664, 589, 535, 561, 534, 593, 529, 566, 529, 586, 1668, 564, 1664, 589,
533, 562, 532, 594, 1661, 561, 1666, 565, 1662, 591, 1665, 558,
289651, 4512, 4483, 564, 531, 586, 1669, 563, 1665, 588, 1667, 565, 529, 587,
536, 560, 536, 590, 531, 563, 531, 584, 1670, 562, 1666, 556, 1671, 592,
529, 566, 531, 586, 536, 561, 562, 564, 532, 585, 537, 558, 1669, 563,
1665, 588, 535, 561, 536, 590, 530, 565, 531, 585, 1669, 563, 1664, 587,
534, 561, 533, 593, 1662, 561, 1669, 564, 1663, 590, 1665, 567, 46302, 4509,
4487, 561, 1667, 585,
97097, 4513, 4483, 565, 529, 587, 1668, 564, 1663, 589, 1666, 567, 529, 587,
536, 560, 535, 591, 530, 565, 529, 587, 1669, 563, 1664, 558, 1669, 594,
529, 566, 527, 587, 535, 561, 561, 563, 530, 586, 537, 560, 1669, 563,
1663, 589, 534, 561, 532, 594, 529, 566, 528, 587, 1668, 564, 1663, 589,
532, 563, 532, 594, 1660, 561, 1667, 566, 1661, 592, 1663, 558, 46311, 4510,
4485, 562, 1665, 589,
99001, 4514, 4481, 566, 528, 587, 1667, 565, 1662, 589, 1664, 568, 528, 588,
535, 561, 535, 593, 529, 567, 528, 589, 1668, 564, 1663, 559, 1668, 595,
528, 567, 527, 589, 534, 562, 561, 565, 530, 586, 536, 560, 1668, 564,
1663, 590, 533, 563, 532, 595, 524, 567, 527, 588, 1667, 565, 1662, 590,
532, 563, 531, 595, 1659, 562, 1666, 566, 1661, 593, 1664, 559,
300259, 4514, 4482, 556, 565, 561, 1668, 564, 1663, 589, 1664, 556, 539, 588,
535, 561, 535, 643, 478, 568, 530, 587, 1668, 564, 1664, 589, 1636, 594,
529, 567, 528, 588, 534, 561, 561, 565, 1662, 560, 536, 590, 532, 564,
531, 586, 537, 589, 532, 564, 533, 584, 538, 568, 528, 588, 1667, 565,
1662, 560, 1669, 584, 1670, 562, 1666, 587, 1641, 591, 1664, 559, 46271, 4561,
4435, 562, 1666, 586,
81421, 4514, 4482, 556, 565, 561, 1667, 565, 1662, 589, 1664, 558, 538, 588,
534, 562, 534, 593, 530, 567, 530, 587, 1669, 564, 1663, 589, 1637, 594,
529, 567, 528, 588, 534, 561, 560, 566, 1663, 559, 535, 591, 531, 565,
530, 587, 538, 589, 533, 563, 533, 583, 539, 567, 529, 587, 1667, 565,
1662, 560, 1669, 584, 1669, 563, 1666, 587, 1640, 592, 1663, 560, 46296, 4516,
4480, 558, 1669, 594,
80690, 4508, 4489, 560, 561, 565, 1663, 558, 1670, 593, 1660, 561, 534, 592,
530, 565, 530, 586, 537, 560, 536, 591, 1664, 558, 1670, 583, 1644, 587,
535, 560, 534, 592, 530, 566, 556, 559, 1669, 563, 532, 584, 538, 558,
537, 588, 534, 582, 540, 567, 530, 588, 535, 562, 535, 591, 1663, 559,
1669, 564, 1665, 588, 1666, 566, 1662, 560, 1668, 585, 1669, 563,
136483, 4511, 4485, 563, 531, 585, 1671, 561, 1666, 587, 1668, 564, 531, 585,
536, 559, 537, 589, 532, 563, 532, 584, 1670, 562, 1666, 587, 1642, 591,
531, 566, 531, 585, 536, 559, 563, 563, 1665, 567, 528, 588, 535, 561,
534, 593, 529, 567, 556, 560, 535, 591, 530, 565, 531, 585, 1670, 563,
1665, 568, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1666, 566,
129038, 4511, 4484, 564, 533, 583, 1670, 562, 1666, 587, 1668, 565, 532, 586,
537, 559, 536, 591, 532, 564, 532, 594, 1660, 562, 1666, 566, 1660, 593,
531, 565, 530, 586, 537, 558, 563, 563, 1664, 568, 528, 589, 535, 562,
533, 595, 530, 567, 556, 560, 535, 591, 531, 565, 531, 584, 1669, 563,
1664, 567, 1661, 592, 1662, 559, 1668, 564, 1663, 590, 1666, 566, 46187, 4511,
4486, 562, 1665, 589,
110663, 4517, 4478, 558, 536, 590, 1665, 568, 1660, 593, 1661, 560, 536, 590,
531, 564, 531, 584, 537, 558, 536, 590, 1665, 567, 1661, 561, 1666, 587,
536, 560, 535, 591, 532, 564, 559, 557, 1670, 562, 532, 594, 529, 567,
528, 649, 473, 561, 561, 565, 531, 585, 536, 559, 536, 589, 1665, 567,
1660, 562, 1666, 587, 1668, 564, 1663, 558, 1669, 594, 1661, 561,
143736, 4517, 4479, 559, 536, 591, 1664, 558, 1670, 593, 1661, 559, 536, 590,
531, 564, 531, 585, 536, 559, 537, 589, 1665, 567, 1661, 561, 1666, 587,
536, 560, 536, 590, 530, 564, 557, 558, 1669, 562, 533, 593, 528, 568,
530, 586, 534, 561, 560, 566, 530, 586, 536, 560, 536, 591, 1664, 558,
1671, 562, 1666, 587, 1667, 565, 1663, 559, 1668, 594, 1660, 562, 46234, 4514,
4482, 566, 1661, 591,
120661, 4564, 4432, 565, 530, 586, 1669, 563, 1665, 587, 1666, 566, 531, 585,
536, 559, 536, 591, 532, 564, 532, 586, 1670, 563, 1666, 557, 1666, 592,
530, 565, 530, 586, 536, 560, 562, 563, 1664, 558, 538, 588, 533, 562,
533, 593, 528, 558, 565, 561, 534, 582, 541, 566, 530, 586, 1670, 563,
1664, 567, 1660, 593, 1662, 560, 1668, 564, 1663, 590, 1665, 567, 46472, 4513,
4484, 564, 1664, 588,
125301, 4511, 4484, 564, 532, 584, 1670, 562, 1666, 587, 1668, 565, 531, 586,
537, 560, 537, 591, 532, 565, 533, 584, 1671, 562, 1666, 566, 1661, 591,
530, 565, 532, 584, 536, 559, 562, 564, 1665, 567, 529, 587, 534, 563,
535, 593, 529, 568, 556, 561, 535, 592, 531, 565, 531, 585, 1669, 563,
1665, 567, 1660, 593, 1663, 559, 1668, 564, 1664, 589, 1666, 567,
200253, 4517, 4479, 558, 562, 615, 1613, 558, 1670, 592, 1661, 560, 536, 591,
531, 616, 480, 585, 537, 559, 537, 641, 1613, 568, 1661, 582, 1646, 586,
536, 559, 535, 591, 532, 564, 558, 558, 1670, 562, 533, 592, 530, 566,
529, 588, 536, 581, 542, 617, 479, 587, 537, 560, 536, 590, 1665, 557,
1670, 562, 1666, 587, 1668, 564, 1664, 558, 1669, 593, 1662, 561, 46230, 4570,
4426, 561, 1667, 586,
115418, 4514, 4483, 565, 557, 561, 1669, 563, 1664, 589, 1666, 566, 529, 587,
534, 561, 534, 592, 530, 566, 530, 586, 1668, 564, 1664, 589, 1639, 594,
529, 567, 528, 587, 534, 561, 561, 565, 1663, 559, 535, 590, 532, 563,
532, 584,
};
const InfraredMessage test_decoder_samsung32_expected1[] = {
{InfraredProtocolSamsung32, 0x0E, 0x0C, false}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x81, false}, {InfraredProtocolSamsung32, 0x0E, 0x81, true},
{InfraredProtocolSamsung32, 0x0E, 0x01, false}, {InfraredProtocolSamsung32, 0x0E, 0x01, true},
{InfraredProtocolSamsung32, 0x0E, 0x02, false}, {InfraredProtocolSamsung32, 0x0E, 0x02, true},
{InfraredProtocolSamsung32, 0x0E, 0x03, false}, {InfraredProtocolSamsung32, 0x0E, 0x03, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, false}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, false},
{InfraredProtocolSamsung32, 0x0E, 0x0C, false}, {InfraredProtocolSamsung32, 0x0E, 0x0C, false},
{InfraredProtocolSamsung32, 0x0E, 0x0C, false}, {InfraredProtocolSamsung32, 0x0E, 0x0C, true},
{InfraredProtocolSamsung32, 0x0E, 0x0C, false}, {InfraredProtocolSamsung32, 0x0E, 0x0C, false},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, false},
{InfraredProtocolSamsung32, 0x0E, 0x0C, true}, {InfraredProtocolSamsung32, 0x0E, 0x0C, false},
{InfraredProtocolSamsung32, 0x0E, 0x01, false}, {InfraredProtocolSamsung32, 0x0E, 0x01, true},
{InfraredProtocolSamsung32, 0x0E, 0x01, false}, {InfraredProtocolSamsung32, 0x0E, 0x01, true},
{InfraredProtocolSamsung32, 0x0E, 0x01, false}, {InfraredProtocolSamsung32, 0x0E, 0x01, false},
{InfraredProtocolSamsung32, 0x0E, 0x01, false}, {InfraredProtocolSamsung32, 0x0E, 0x01, true},
{InfraredProtocolSamsung32, 0x0E, 0x01, false}, {InfraredProtocolSamsung32, 0x0E, 0x01, false},
{InfraredProtocolSamsung32, 0x0E, 0x01, true}, {InfraredProtocolSamsung32, 0x0E, 0x01, false},
{InfraredProtocolSamsung32, 0x0E, 0x01, true}, {InfraredProtocolSamsung32, 0x0E, 0x01, false},
{InfraredProtocolSamsung32, 0x0E, 0x01, false}, {InfraredProtocolSamsung32, 0x0E, 0x01, true},
};
const InfraredMessage test_samsung32[] = {
{InfraredProtocolSamsung32, 0x00, 0x00, false},
{InfraredProtocolSamsung32, 0x01, 0x00, false},
{InfraredProtocolSamsung32, 0x01, 0x80, false},
{InfraredProtocolSamsung32, 0x00, 0x80, false},
{InfraredProtocolSamsung32, 0x00, 0x00, false},
{InfraredProtocolSamsung32, 0x00, 0x00, true},
{InfraredProtocolSamsung32, 0x00, 0x00, false},
{InfraredProtocolSamsung32, 0x00, 0x00, true},
{InfraredProtocolSamsung32, 0xFF, 0xFF, false},
{InfraredProtocolSamsung32, 0xFE, 0xFF, false},
{InfraredProtocolSamsung32, 0xFE, 0x7F, false},
{InfraredProtocolSamsung32, 0xFF, 0x7F, false},
{InfraredProtocolSamsung32, 0xFF, 0xFF, false},
{InfraredProtocolSamsung32, 0xFF, 0xFF, true},
{InfraredProtocolSamsung32, 0xAA, 0x55, false},
{InfraredProtocolSamsung32, 0x55, 0xAA, false},
{InfraredProtocolSamsung32, 0x55, 0x55, false},
{InfraredProtocolSamsung32, 0xAA, 0xAA, false},
{InfraredProtocolSamsung32, 0xAA, 0xAA, true},
{InfraredProtocolSamsung32, 0xAA, 0xAA, false},
{InfraredProtocolSamsung32, 0xAA, 0xAA, true},
{InfraredProtocolSamsung32, 0xAA, 0xAA, true},
{InfraredProtocolSamsung32, 0x55, 0x55, false},
{InfraredProtocolSamsung32, 0x55, 0x55, true},
{InfraredProtocolSamsung32, 0x55, 0x55, true},
{InfraredProtocolSamsung32, 0x55, 0x55, true},
};

View File

@ -1,479 +0,0 @@
const uint32_t test_decoder_sirc_input1[] = { /* 121 timings */
1000000, 2420, 608, 1194, 608, 596, 604, 1198, 603, 591, 610, 1192, 609, 596, 605, 599, 601, 593, 607, 597, 604, 590, 610, 594, 606, 1196,
25957, 2426, 603, 1199, 603, 591, 610, 1192, 610, 594, 606, 1196, 606, 599, 603, 591, 609, 595, 606, 598, 602, 592, 609, 596, 605, 1197,
25960, 2423, 606, 1196, 606, 599, 602, 1200, 602, 592, 609, 1193, 609, 596, 606, 599, 602, 592, 609, 595, 605, 600, 601, 593, 608, 1194,
1000000, 2422, 607, 1195, 607, 598, 603, 1199, 604, 590, 610, 1192, 610, 594, 606, 598, 603, 591, 609, 595, 605, 600, 601, 593, 607, 1195,
25955, 2418, 610, 1192, 610, 594, 606, 1196, 606, 599, 602, 1200, 602, 592, 608, 596, 604, 590, 611, 594, 607, 597, 603, 591, 609, 1193,
25959, 2424, 604, 1198, 604, 590, 610, 1192, 610, 594, 606, 1196, 605, 600, 601, 593, 608, 597, 603, 591, 610, 595, 606, 598, 602, 1200,
1000000, 2424, 605, 599, 601, 593, 607, 597, 603, 591, 610, 594, 606, 1196, 606, 1196, 605, 600, 601, 593, 608, 597, 604, 590, 611, 1191,
26586, 2425, 604, 590, 611, 593, 607, 598, 603, 591, 610, 595, 606, 1196, 606, 1196, 606, 599, 602, 592, 608, 596, 604, 590, 611, 1191,
26586, 2424, 604, 590, 611, 593, 607, 598, 603, 591, 609, 595, 605, 1197, 605, 1197, 604, 590, 611, 593, 607, 597, 603, 591, 610, 1192,
1000000, 2424, 604, 1198, 604, 590, 611, 1191, 610, 594, 606, 598, 603, 1199, 602, 1200, 602, 592, 609, 595, 605, 600, 601, 593, 608, 1194,
25386, 2419, 610, 1192, 610, 594, 606, 1196, 607, 597, 603, 591, 610, 1192, 609, 1193, 610, 594, 606, 598, 602, 592, 609, 595, 605, 1197,
25385, 2421, 608, 1194, 608, 596, 605, 1197, 605, 599, 601, 593, 608, 1194, 608, 1194, 608, 596, 605, 589, 611, 594, 607, 597, 604, 1198,
1000000, 2426, 603, 1199, 602, 1200, 602, 1200, 602, 592, 608, 1194, 608, 596, 604, 590, 611, 594, 607, 597, 603, 591, 610, 594, 606, 1196, 605, 600, 601, 593, 608, 596, 604, 590, 610, 594, 607, 1195, 606, 598, 603, 591,
15078, 2419, 610, 1192, 610, 1192, 610, 1192, 610, 594, 606, 1196, 605, 600, 601, 593, 608, 597, 604, 590, 610, 595, 606, 598, 602, 1200, 602, 592, 608, 597, 604, 590, 611, 594, 607, 597, 603, 1199, 603, 591, 609, 595,
15075, 2422, 607, 1195, 607, 1195, 607, 1195, 607, 597, 604, 1198, 603, 591, 610, 594, 606, 598, 603, 591, 609, 595, 605, 600, 601, 1191, 611, 594, 607, 597, 603, 591, 610, 594, 606, 598, 602, 1200, 602, 592, 608, 596,
1000000, 2422, 607, 1195, 606, 599, 602, 592, 608, 596, 604, 590, 610, 1192, 610, 594, 606, 599, 602, 592, 608, 596, 604, 590, 610, 1192,
26585, 2426, 602, 1200, 602, 592, 608, 596, 604, 590, 611, 594, 607, 1195, 607, 598, 603, 591, 610, 594, 606, 598, 603, 591, 609, 1193,
26586, 2425, 604, 1198, 603, 591, 610, 594, 606, 598, 602, 592, 609, 1193, 608, 597, 605, 600, 601, 593, 607, 597, 604, 590, 610, 1192,
1000000, 2418, 610, 594, 606, 598, 603, 1199, 603, 1199, 603, 1199, 603, 1199, 603, 1199, 603, 591, 610, 1192, 610, 594, 606, 1196, 606, 1196, 606, 1196, 606, 598, 602, 592, 609, 1193, 609, 1193, 609, 1193, 609, 595, 605, 599,
11557, 2418, 611, 594, 607, 598, 603, 1199, 603, 1199, 603, 1199, 602, 1200, 602, 1200, 601, 593, 608, 1194, 607, 597, 604, 1198, 603, 1199, 603, 1199, 602, 592, 608, 596, 604, 1198, 603, 1199, 603, 1199, 603, 591, 609, 595,
11561, 2424, 604, 590, 610, 594, 607, 1195, 606, 1196, 606, 1196, 606, 1196, 606, 1196, 605, 600, 601, 1191, 611, 594, 607, 1195, 607, 1195, 607, 1195, 607, 597, 603, 591, 610, 1192, 610, 1192, 610, 1192, 610, 594, 606, 598,
1000000, 2424, 604, 590, 611, 594, 607, 1195, 607, 1195, 607, 1195, 607, 1195, 607, 1195, 606, 598, 603, 1199, 602, 592, 609, 1193, 608, 1194, 608, 1194, 608, 596, 604, 590, 611, 1191, 611, 1191, 611, 1191, 611, 594, 607, 598,
11559, 2427, 602, 592, 608, 596, 605, 1197, 604, 1198, 604, 1198, 604, 1198, 604, 1198, 604, 590, 610, 1192, 610, 595, 606, 1196, 606, 1196, 606, 1196, 606, 599, 603, 591, 609, 1193, 609, 1193, 609, 1193, 608, 597, 605, 589,
11567, 2418, 610, 595, 607, 597, 603, 1199, 603, 1199, 602, 1200, 602, 1200, 601, 1201, 601, 593, 608, 1194, 607, 598, 603, 1199, 603, 1199, 603, 1199, 603, 591, 609, 595, 605, 1197, 605, 1197, 605, 1197, 604, 590, 611, 594,
1000000, 2421, 608, 597, 604, 590, 610, 1192, 610, 1192, 609, 1193, 609, 1193, 609, 1193, 608, 596, 605, 1197, 604, 590, 610, 1192, 611, 1191, 610, 1192, 610, 594, 606, 598, 603, 1199, 603, 1199, 602, 1200, 602, 592, 608, 596,
11561, 2424, 604, 590, 610, 594, 606, 1196, 606, 1196, 606, 1196, 606, 1196, 605, 1197, 605, 600, 601, 1201, 601, 593, 607, 1195, 607, 1195, 606, 1196, 606, 598, 602, 592, 608, 1194, 608, 1194, 607, 1195, 607, 597, 603, 591,
11564, 2421, 607, 597, 604, 590, 610, 1192, 610, 1192, 610, 1192, 610, 1192, 610, 1192, 609, 595, 606, 1196, 606, 598, 602, 1200, 601, 1201, 601, 1201, 601, 593, 607, 598, 603, 1199, 603, 1199, 602, 1200, 602, 592, 608, 596,
1000000, 2420, 609, 595, 606, 598, 602, 1200, 602, 1200, 602, 1200, 602, 1200, 602, 1200, 602, 592, 608, 1194, 608, 596, 604, 1198, 603, 1199, 603, 1199, 603, 591, 610, 594, 606, 1196, 606, 1196, 606, 1196, 606, 598, 602, 592,
11565, 2420, 609, 595, 605, 600, 601, 1201, 601, 1201, 601, 1201, 601, 1201, 601, 1201, 601, 593, 607, 1195, 607, 597, 603, 1199, 603, 1199, 603, 1199, 603, 591, 609, 595, 605, 1197, 605, 1197, 605, 1197, 605, 599, 601, 593,
11563, 2422, 607, 597, 603, 591, 609, 1193, 609, 1193, 608, 1194, 608, 1194, 608, 1194, 582, 623, 603, 1199, 603, 591, 610, 1202, 599, 1203, 599, 1203, 599, 595, 581, 623, 577, 1225, 601, 1201, 601, 1201, 601, 593, 582, 623,
1000000, 2425, 602, 1200, 602, 1200, 602, 592, 608, 1194, 608, 1194, 607, 1195, 607, 1195, 607, 597, 603, 1199, 602, 592, 609, 1193, 608, 1194, 608, 1194, 607, 597, 603, 601, 575, 1227, 599, 1203, 599, 1203, 573, 621, 580, 625,
10931, 2426, 578, 1224, 578, 1224, 578, 616, 585, 1217, 585, 1217, 585, 1217, 585, 1217, 585, 620, 580, 1222, 580, 624, 577, 1225, 577, 1225, 577, 1225, 577, 617, 583, 622, 580, 1222, 580, 1222, 579, 1223, 579, 625, 576, 618,
10936, 2421, 583, 1219, 583, 1219, 582, 622, 579, 1223, 578, 1224, 578, 1224, 578, 1224, 578, 616, 584, 1218, 584, 621, 580, 1222, 579, 1223, 579, 1223, 579, 625, 576, 618, 583, 1219, 582, 1220, 582, 1220, 582, 622, 578, 616,
1000000, 2419, 584, 620, 580, 1222, 580, 624, 576, 1226, 576, 1226, 576, 1226, 576, 1226, 576, 618, 582, 1220, 582, 622, 579, 1223, 578, 1224, 579, 1223, 578, 616, 585, 619, 581, 1221, 581, 1221, 581, 1221, 580, 624, 576, 618,
11563, 2422, 582, 622, 579, 1223, 578, 616, 585, 1217, 585, 1217, 584, 1218, 584, 1218, 583, 622, 579, 1223, 579, 625, 575, 1216, 585, 1217, 585, 1217, 585, 619, 581, 623, 577, 1225, 577, 1225, 577, 1225, 576, 618, 583, 621,
11558, 2427, 577, 617, 584, 1218, 583, 621, 579, 1223, 579, 1223, 578, 1224, 578, 1224, 578, 647, 553, 1249, 553, 651, 549, 1253, 548, 1254, 549, 1253, 549, 645, 555, 649, 551, 1251, 551, 1251, 551, 1251, 550, 654, 546, 648,
1000000, 2456, 548, 646, 554, 650, 551, 653, 547, 1255, 547, 1255, 547, 1255, 547, 1255, 547, 647, 554, 1248, 554, 650, 551, 1251, 551, 1251, 551, 1251, 551, 653, 547, 647, 554, 1248, 554, 1248, 554, 1248, 553, 651, 550, 644,
12112, 2449, 555, 649, 551, 654, 547, 647, 554, 1248, 554, 1248, 553, 1249, 553, 1249, 553, 651, 549, 1253, 549, 645, 555, 1247, 555, 1247, 555, 1247, 554, 650, 550, 655, 547, 1244, 557, 1224, 578, 1224, 579, 615, 585, 619,
12139, 2423, 580, 624, 576, 618, 582, 622, 578, 1224, 578, 1224, 578, 1224, 578, 1224, 578, 616, 584, 1218, 584, 620, 580, 1222, 580, 1222, 581, 1221, 580, 624, 577, 617, 584, 1218, 584, 1218, 584, 1218, 584, 620, 581, 623,
1000000, 2422, 582, 1220, 581, 623, 578, 616, 584, 1218, 584, 1218, 584, 1218, 584, 1218, 584, 620, 580, 1222, 580, 624, 576, 1226, 577, 1225, 576, 1226, 576, 618, 583, 622, 579, 1223, 578, 1224, 577, 1225, 577, 617, 585, 619,
11559, 2426, 577, 1225, 577, 617, 583, 621, 579, 1223, 579, 1223, 578, 1224, 578, 1224, 578, 616, 584, 1218, 584, 620, 580, 1222, 580, 1222, 579, 1223, 579, 625, 575, 650, 550, 1252, 550, 1252, 549, 1253, 549, 645, 556, 648,
11531, 2453, 549, 1253, 548, 646, 555, 649, 551, 1251, 551, 1251, 550, 1252, 549, 1253, 549, 645, 556, 1246, 555, 649, 552, 1219, 582, 1220, 582, 1220, 582, 622, 578, 616, 585, 1217, 584, 1218, 584, 1218, 584, 620, 581, 623,
1000000, 2428, 576, 618, 582, 1220, 583, 622, 579, 1223, 578, 1224, 578, 1224, 578, 1224, 578, 616, 585, 1217, 585, 619, 582, 1220, 582, 1220, 582, 1220, 582, 622, 578, 616, 585, 1217, 585, 1217, 584, 1218, 584, 620, 581, 623,
11557, 2427, 577, 617, 584, 1218, 583, 621, 580, 1222, 580, 1222, 580, 1222, 580, 1222, 580, 624, 576, 1246, 555, 649, 552, 1250, 552, 1250, 551, 1251, 551, 653, 548, 646, 554, 1248, 555, 1247, 555, 1247, 555, 649, 551, 653,
11528, 2447, 556, 648, 552, 1250, 552, 653, 548, 1254, 548, 1254, 547, 1245, 557, 1245, 557, 647, 553, 1249, 552, 652, 549, 1253, 548, 1254, 548, 1254, 548, 646, 555, 649, 551, 1251, 551, 1251, 551, 1251, 551, 643, 557, 647,
1000000, 2418, 610, 594, 606, 598, 603, 1199, 603, 1199, 602, 1200, 602, 1200, 602, 1200, 602, 592, 608, 1194, 608, 596, 604, 1198, 604, 1198, 604, 1198, 603, 591, 610, 594, 606, 1196, 606, 1196, 605, 1197, 605, 599, 601, 593,
11563, 2422, 606, 598, 602, 592, 608, 1194, 608, 1194, 608, 1194, 607, 1195, 607, 1195, 607, 597, 603, 1199, 603, 591, 609, 1193, 609, 1193, 609, 1193, 608, 596, 605, 599, 601, 1201, 600, 1191, 611, 1191, 611, 593, 606, 598,
11558, 2427, 601, 593, 607, 597, 603, 1199, 603, 1199, 603, 1199, 602, 1200, 602, 1200, 601, 593, 607, 1195, 607, 597, 603, 1199, 603, 1199, 602, 1200, 602, 592, 608, 596, 604, 1198, 604, 1198, 604, 1198, 603, 591, 609, 595,
1000000, 2424, 605, 1197, 604, 600, 600, 1191, 610, 1192, 610, 1192, 610, 1192, 609, 1193, 609, 595, 605, 1197, 606, 598, 602, 1200, 602, 1200, 601, 1201, 601, 593, 607, 597, 603, 1199, 603, 1199, 603, 1199, 603, 591, 609, 595,
10937, 2420, 609, 1193, 609, 595, 605, 1197, 605, 1197, 605, 1197, 605, 1197, 605, 1197, 605, 600, 601, 1201, 601, 593, 608, 1194, 608, 1194, 608, 1194, 609, 595, 605, 599, 601, 1201, 601, 1201, 601, 1201, 601, 593, 608, 596,
10936, 2420, 608, 1194, 608, 596, 604, 1198, 605, 1197, 605, 1197, 605, 1197, 605, 1197, 605, 600, 601, 1201, 601, 593, 607, 1195, 608, 1194, 608, 1194, 608, 596, 604, 600, 600, 1202, 601, 1201, 601, 1201, 601, 593, 607, 597,
1000000, 2420, 609, 1193, 608, 1194, 608, 596, 579, 625, 600, 1202, 600, 1202, 600, 1202, 600, 594, 607, 1195, 607, 597, 603, 1199, 603, 1199, 602, 1200, 602, 592, 609, 595, 605, 1197, 605, 1197, 605, 1197, 604, 600, 600, 594,
11561, 2423, 605, 1197, 605, 1197, 605, 599, 601, 593, 607, 1195, 607, 1195, 607, 1195, 607, 597, 604, 1198, 603, 591, 610, 1192, 610, 1192, 610, 1192, 610, 594, 607, 597, 603, 1199, 603, 1199, 603, 1199, 603, 591, 610, 594,
11563, 2421, 608, 1194, 608, 1194, 608, 596, 605, 599, 601, 1201, 602, 1200, 602, 1200, 602, 592, 609, 1193, 609, 595, 605, 1197, 606, 1196, 606, 1196, 606, 598, 602, 592, 609, 1193, 609, 1193, 610, 1192, 610, 594, 607, 597,
1000000, 2428, 576, 1226, 600, 1192, 610, 594, 606, 598, 602, 1200, 602, 592, 609, 595, 605, 600, 601, 593, 607, 597, 603, 591, 609, 1193,
25955, 2427, 601, 1190, 610, 1192, 610, 594, 606, 598, 602, 1200, 601, 593, 607, 597, 603, 591, 610, 594, 606, 598, 602, 592, 608, 1194,
25957, 2425, 604, 1198, 603, 1199, 603, 591, 609, 595, 605, 1197, 605, 599, 601, 593, 607, 598, 603, 591, 610, 594, 606, 598, 602, 1200,
25952, 2420, 608, 1194, 608, 1194, 608, 596, 604, 601, 600, 1191, 610, 594, 606, 598, 603, 591, 609, 595, 605, 599, 601, 593, 608, 1194,
1000000, 2421, 607, 597, 603, 1199, 603, 591, 610, 594, 606, 1196, 605, 600, 576, 618, 583, 621, 604, 601, 575, 619, 606, 598, 603, 1199,
26576, 2424, 605, 600, 576, 1226, 601, 593, 608, 596, 604, 1198, 604, 600, 600, 594, 607, 597, 603, 591, 609, 595, 606, 598, 602, 1200,
26579, 2420, 583, 621, 605, 1197, 604, 600, 601, 593, 607, 1195, 607, 597, 604, 590, 610, 594, 607, 597, 603, 591, 610, 594, 606, 1196,
26584, 2426, 603, 591, 609, 1193, 609, 595, 605, 599, 601, 1201, 601, 593, 607, 597, 603, 591, 610, 594, 606, 598, 603, 591, 609, 1193,
1000000, 2418, 610, 594, 606, 598, 602, 592, 609, 595, 605, 1197, 605, 1197, 605, 600, 602, 592, 608, 1194, 608, 596, 605, 1197, 605, 1197, 604, 1198, 604, 600, 601, 593, 607, 1195, 607, 1195, 607, 1195, 607, 597, 603, 591,
13368, 2419, 610, 594, 606, 598, 602, 592, 608, 596, 605, 1197, 604, 1198, 604, 600, 601, 593, 607, 1195, 607, 597, 603, 1199, 603, 1199, 603, 1199, 603, 591, 609, 595, 605, 1197, 605, 1197, 605, 1197, 604, 601, 600, 594,
13362, 2425, 604, 601, 600, 594, 607, 597, 603, 591, 610, 1192, 610, 1192, 610, 594, 606, 598, 603, 1199, 602, 592, 609, 1193, 609, 1193, 608, 1194, 608, 596, 604, 601, 600, 1191, 610, 1192, 610, 1192, 610, 594, 607, 597,
1000000, 2427, 601, 1201, 601, 593, 582, 623, 603, 1199, 578, 1224, 603, 1199, 577, 617, 584, 620, 605, 1197, 605, 600, 601, 1201, 601, 1201, 601, 1201, 601, 593, 582, 622, 603, 1199, 603, 1199, 578, 1224, 603, 591, 610, 594,
12139, 2423, 605, 1197, 605, 600, 601, 593, 608, 1194, 608, 1194, 607, 1195, 607, 597, 604, 600, 601, 1201, 601, 593, 607, 1195, 608, 1194, 608, 1194, 583, 622, 604, 601, 600, 1202, 575, 1227, 601, 1201, 576, 618, 607, 597,
12137, 2424, 604, 1198, 604, 590, 610, 594, 607, 1195, 607, 1195, 607, 1195, 607, 597, 604, 601, 600, 1202, 600, 594, 607, 1195, 606, 1196, 581, 1221, 607, 597, 603, 591, 610, 1202, 600, 1202, 576, 1226, 602, 592, 609, 595,
1000000, 2422, 607, 1195, 607, 597, 603, 591, 585, 619, 606, 1196, 606, 1196, 581, 624, 577, 617, 609, 1193, 584, 621, 605, 1197, 604, 1198, 604, 1198, 604, 590, 610, 595, 581, 1221, 605, 1197, 605, 1197, 605, 599, 601, 593,
12763, 2427, 603, 1199, 603, 591, 609, 595, 605, 599, 577, 1225, 602, 1200, 601, 593, 583, 622, 604, 1198, 604, 590, 610, 1192, 610, 1192, 610, 1192, 610, 594, 606, 598, 603, 1199, 603, 1199, 603, 1199, 603, 591, 610, 594,
12763, 2427, 602, 1200, 601, 593, 608, 596, 604, 600, 600, 1202, 601, 1201, 601, 593, 607, 597, 604, 1198, 604, 590, 610, 1192, 610, 1192, 611, 1191, 610, 594, 607, 598, 578, 1224, 603, 1199, 603, 1199, 603, 591, 610, 594,
1000000, 2422, 607, 597, 603, 591, 610, 1192, 610, 594, 606, 1196, 580, 1222, 605, 600, 601, 593, 583, 1219, 608, 596, 579, 1223, 604, 1198, 604, 1198, 604, 590, 610, 594, 606, 1196, 606, 1196, 606, 1196, 606, 599, 602, 592,
12765, 2425, 603, 591, 610, 594, 606, 1196, 606, 598, 602, 1200, 601, 1201, 601, 593, 582, 623, 604, 1198, 604, 590, 610, 1192, 610, 1192, 609, 1193, 609, 596, 605, 599, 601, 1201, 601, 1201, 601, 1201, 600, 594, 607, 597,
12758, 2421, 607, 597, 603, 591, 609, 1193, 609, 595, 605, 1197, 605, 1197, 605, 599, 601, 593, 607, 1195, 607, 597, 603, 1199, 603, 1199, 603, 1199, 603, 591, 609, 595, 580, 1222, 605, 1197, 605, 1197, 605, 600, 600, 594,
1000000, 2422, 580, 625, 601, 1201, 601, 593, 608, 596, 604, 1198, 604, 1198, 604, 600, 600, 594, 607, 1195, 607, 597, 603, 1199, 603, 1199, 603, 1199, 578, 616, 609, 595, 606, 1196, 606, 1196, 606, 1196, 581, 624, 602, 592,
12766, 2424, 605, 599, 601, 1201, 601, 593, 608, 596, 604, 1198, 604, 1198, 579, 625, 601, 593, 608, 1194, 608, 596, 604, 1198, 580, 1222, 605, 1197, 605, 599, 602, 592, 608, 1194, 609, 1193, 609, 1193, 609, 596, 605, 599,
12759, 2420, 608, 597, 604, 1198, 604, 590, 610, 594, 606, 1196, 606, 1196, 606, 598, 602, 592, 608, 1194, 607, 597, 604, 1198, 603, 1199, 603, 1199, 602, 592, 609, 595, 605, 1197, 605, 1197, 605, 1197, 604, 600, 601, 593,
1000000, 2429, 600, 1202, 575, 1227, 599, 595, 606, 598, 602, 1200, 602, 1200, 602, 592, 609, 595, 605, 1197, 605, 599, 601, 1201, 601, 1201, 601, 1201, 601, 593, 607, 597, 603, 1199, 603, 1199, 603, 1199, 603, 591, 609, 595,
12136, 2425, 603, 1199, 603, 1199, 603, 591, 609, 595, 605, 1197, 605, 1197, 605, 599, 601, 593, 608, 1194, 608, 596, 604, 1198, 604, 1198, 603, 1199, 603, 591, 609, 595, 606, 1196, 606, 1196, 605, 1197, 605, 599, 601, 593,
12137, 2424, 604, 1198, 603, 1199, 603, 591, 609, 595, 606, 1196, 605, 1197, 605, 599, 601, 593, 607, 1195, 607, 597, 603, 1199, 603, 1199, 603, 1199, 602, 592, 609, 595, 605, 1197, 605, 1197, 604, 1198, 604, 600, 600, 594,
1000000, 2429, 574, 1228, 573, 1229, 573, 1229, 573, 1229, 573, 621, 581, 624, 577, 617, 583, 622, 580, 1222, 579, 625, 576, 1226, 577, 1225, 576, 1226, 577, 617, 584, 620, 581, 1221, 580, 1222, 579, 1223, 579, 625, 577, 617,
12142, 2419, 584, 1218, 584, 1218, 583, 1219, 583, 1219, 582, 623, 578, 616, 585, 619, 581, 623, 578, 1224, 577, 617, 584, 1218, 584, 1218, 584, 1218, 584, 620, 580, 624, 576, 1226, 575, 1227, 500, 1353, 523, 620, 582, 622, /* failed, noise pollution 500, 1353 timings */
12134, 2427, 576, 1226, 576, 1226, 576, 1226, 576, 1226, 576, 618, 583, 622, 579, 625, 576, 618, 583, 1219, 583, 673, 527, 1223, 579, 1223, 579, 1223, 579, 625, 576, 618, 582, 1220, 582, 1220, 582, 1220, 582, 622, 578, 616,
12140, 2421, 582, 1220, 581, 1221, 581, 1221, 580, 1222, 580, 624, 576, 618, 582, 622, 578, 616, 585, 1217, 584, 620, 581, 1221, 580, 1222, 580, 1222, 580, 624, 576, 618, 582, 1220, 582, 1220, 582, 1220, 582, 623, 578, 616,
1000000, 2419, 584, 672, 528, 625, 577, 617, 583, 1219, 582, 1220, 581, 1221, 582, 622, 578, 616, 585, 1217, 583, 621, 580, 1222, 580, 1222, 580, 1222, 580, 624, 576, 618, 583, 1219, 583, 1219, 582, 1220, 583, 621, 580, 624,
12732, 2427, 577, 617, 584, 672, 528, 676, 524, 1226, 576, 1226, 576, 1226, 576, 618, 583, 621, 579, 1223, 579, 625, 575, 1227, 575, 1227, 575, 1227, 575, 671, 529, 675, 526, 1224, 578, 1224, 578, 1224, 578, 616, 585, 619,
12738, 2421, 583, 621, 580, 624, 576, 618, 582, 1220, 582, 1220, 583, 1219, 583, 621, 579, 625, 576, 1226, 576, 670, 530, 1220, 582, 1220, 582, 1220, 581, 624, 577, 617, 584, 1218, 583, 1219, 583, 1219, 583, 622, 580, 624,
1000000, 2430, 599, 1192, 609, 595, 605, 1197, 580, 624, 601, 1201, 601, 593, 607, 597, 603, 591, 610, 594, 606, 598, 602, 592, 608, 1194,
25958, 2423, 605, 1197, 604, 600, 575, 1227, 600, 594, 606, 1196, 606, 598, 602, 592, 608, 596, 604, 601, 600, 594, 607, 597, 603, 1199,
25949, 2422, 607, 1195, 606, 598, 603, 1199, 602, 592, 608, 1194, 608, 596, 604, 600, 601, 593, 607, 597, 604, 600, 600, 594, 607, 1195,
25958, 2423, 606, 1196, 606, 598, 602, 1200, 602, 592, 608, 1194, 608, 596, 605, 600, 601, 593, 607, 597, 603, 591, 610, 594, 606, 1196,
25957, 2425, 604, 1198, 603, 591, 610, 1192, 610, 594, 606, 1196, 606, 598, 602, 592, 609, 595, 605, 599, 602, 592, 608, 596, 604, 1198,
25956, 2426, 604, 1198, 603, 591, 610, 1192, 610, 594, 606, 1196, 606, 598, 602, 592, 608, 597, 605, 599, 601, 593, 607, 597, 603, 1199,
25952, 2420, 609, 1193, 608, 596, 604, 1198, 604, 590, 610, 1192, 610, 594, 606, 598, 602, 592, 608, 596, 605, 599, 601, 593, 607, 1195,
1000000, 2422, 583, 1219, 608, 596, 605, 1197, 580, 624, 601, 1201, 601, 593, 608, 596, 604, 600, 601, 593, 607, 597, 604, 590, 610, 1202,
25955, 2427, 603, 1199, 603, 591, 609, 1193, 610, 594, 606, 1196, 607, 597, 603, 591, 609, 595, 606, 598, 602, 592, 609, 595, 605, 1197,
25957, 2425, 604, 1198, 604, 590, 610, 1192, 610, 594, 581, 1221, 606, 598, 602, 592, 608, 596, 605, 599, 601, 593, 607, 597, 604, 1198,
25954, 2418, 610, 1192, 610, 594, 606, 1196, 605, 599, 601, 1201, 601, 593, 608, 596, 604, 590, 610, 594, 606, 598, 603, 591, 609, 1193,
25958, 2424, 604, 1198, 604, 590, 610, 1192, 610, 594, 606, 1196, 606, 598, 602, 592, 609, 595, 605, 600, 601, 593, 607, 597, 603, 1199,
25953, 2419, 610, 1192, 609, 595, 605, 1197, 605, 600, 601, 1201, 600, 594, 607, 597, 603, 591, 609, 595, 605, 599, 601, 593, 608, 1194,
25954, 2418, 611, 1191, 610, 594, 606, 1196, 606, 598, 602, 1200, 602, 592, 608, 596, 604, 601, 600, 594, 607, 597, 603, 591, 609, 1193,
25958, 2424, 605, 1197, 605, 599, 601, 1201, 600, 594, 607, 1195, 607, 597, 603, 591, 609, 596, 605, 599, 602, 592, 608, 596, 605, 1197,
25954, 2428, 601, 1190, 610, 594, 607, 1195, 606, 598, 602, 1200, 602, 592, 608, 596, 604, 590, 610, 594, 606, 598, 603, 591, 609, 1193,
25960, 2422, 607, 1195, 606, 598, 602, 1200, 602, 592, 609, 1193, 609, 595, 605, 599, 601, 593, 607, 597, 604, 590, 610, 594, 606, 1196,
25957, 2424, 605, 1197, 604, 600, 600, 1202, 601, 593, 607, 1195, 607, 597, 603, 591, 610, 594, 606, 598, 603, 591, 609, 595, 606, 1196,
1000000, 2421, 608, 1194, 608, 596, 604, 1198, 604, 601, 575, 1227, 601, 593, 607, 598, 604, 600, 600, 594, 607, 598, 604, 601, 600, 1202,
25953, 2419, 609, 1193, 609, 596, 605, 1197, 605, 600, 601, 1201, 601, 593, 607, 597, 603, 591, 610, 594, 606, 599, 602, 592, 608, 1194,
25958, 2424, 605, 1197, 605, 600, 601, 1201, 600, 594, 607, 1195, 606, 598, 602, 592, 609, 595, 605, 600, 601, 593, 608, 596, 604, 1198,
1000000, 2423, 606, 1196, 606, 598, 602, 1200, 602, 592, 608, 1194, 608, 597, 604, 590, 610, 594, 607, 597, 603, 591, 610, 594, 606, 1196,
25958, 2424, 605, 1197, 604, 600, 601, 1201, 601, 593, 607, 1195, 607, 597, 604, 590, 610, 595, 607, 597, 603, 591, 610, 594, 607, 1195,
25961, 2421, 608, 1194, 608, 596, 605, 1197, 605, 600, 601, 1201, 601, 593, 607, 597, 603, 591, 610, 594, 606, 598, 602, 592, 609, 1193,
1000000, 2429, 601, 1201, 601, 593, 607, 1195, 608, 596, 604, 1198, 604, 600, 601, 593, 607, 597, 604, 590, 611, 593, 607, 597, 604, 1198,
25959, 2422, 607, 1195, 607, 597, 603, 1199, 603, 591, 609, 1193, 610, 594, 606, 598, 602, 592, 609, 595, 605, 599, 602, 592, 608, 1194,
25959, 2421, 608, 1194, 607, 597, 603, 1199, 603, 591, 610, 1192, 610, 594, 606, 598, 603, 591, 609, 595, 605, 599, 602, 592, 608, 1194,
25959, 2422, 608, 1194, 608, 596, 604, 1198, 604, 590, 611, 1201, 601, 593, 607, 597, 604, 590, 610, 594, 607, 597, 603, 591, 609, 1193,
25962, 2418, 610, 1192, 610, 594, 606, 1196, 607, 597, 603, 1199, 603, 591, 609, 595, 605, 599, 602, 592, 608, 596, 605, 599, 601, 1201,
1000000, 2357, 610, 1183, 592, 1191, 614, 1179, 595, 1188, 618, 584, 613, 1180, 593, 588, 613, 1190, 612, 590, 605, 587, 613, 589, 605, 587,
25398, 2355, 623, 1180, 591, 1181, 627, 1186, 589, 1183, 618, 584, 616, 1187, 587, 584, 614, 1189, 615, 587, 605, 587, 615, 587, 609, 593,
1000000, 2383, 609, 1214, 600, 612, 580, 1213, 608, 614, 583, 1210, 605, 607, 586, 616, 611, 1192, 599, 613, 608, 614, 579, 613, 615, 607,
26670, 2387, 601, 1212, 600, 612, 589, 1214, 603, 609, 586, 1217, 595, 607, 594, 618, 606, 1187, 602, 610, 609, 613, 588, 614, 610, 612,
1000000, 2445, 582, 1221, 603, 548, 602, 1191, 609, 572, 602, 1191, 609, 542, 607, 544, 631, 1172, 603, 568, 606, 545, 605, 566, 608, 543,
26263, 2414, 611, 1192, 607, 544, 606, 1197, 602, 569, 606, 1197, 602, 539, 611, 540, 635, 1168, 606, 565, 610, 541, 608, 563, 587, 564,
};
const InfraredMessage test_decoder_sirc_expected1[] = {
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x60, false},
{InfraredProtocolSIRC, 0x10, 0x60, false},
{InfraredProtocolSIRC, 0x10, 0x60, false},
{InfraredProtocolSIRC, 0x10, 0x65, false},
{InfraredProtocolSIRC, 0x10, 0x65, false},
{InfraredProtocolSIRC, 0x10, 0x65, false},
{InfraredProtocolSIRC20, 0x410, 0x17, false},
{InfraredProtocolSIRC20, 0x410, 0x17, false},
{InfraredProtocolSIRC20, 0x410, 0x17, false},
{InfraredProtocolSIRC, 0x10, 0x21, false},
{InfraredProtocolSIRC, 0x10, 0x21, false},
{InfraredProtocolSIRC, 0x10, 0x21, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7B, false},
{InfraredProtocolSIRC20, 0x73A, 0x7B, false},
{InfraredProtocolSIRC20, 0x73A, 0x7B, false},
{InfraredProtocolSIRC20, 0x73A, 0x7A, false},
{InfraredProtocolSIRC20, 0x73A, 0x7A, false},
{InfraredProtocolSIRC20, 0x73A, 0x7A, false},
{InfraredProtocolSIRC20, 0x73A, 0x78, false},
{InfraredProtocolSIRC20, 0x73A, 0x78, false},
{InfraredProtocolSIRC20, 0x73A, 0x78, false},
{InfraredProtocolSIRC20, 0x73A, 0x79, false},
{InfraredProtocolSIRC20, 0x73A, 0x79, false},
{InfraredProtocolSIRC20, 0x73A, 0x79, false},
{InfraredProtocolSIRC20, 0x73A, 0x7A, false},
{InfraredProtocolSIRC20, 0x73A, 0x7A, false},
{InfraredProtocolSIRC20, 0x73A, 0x7A, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7C, false},
{InfraredProtocolSIRC20, 0x73A, 0x7D, false},
{InfraredProtocolSIRC20, 0x73A, 0x7D, false},
{InfraredProtocolSIRC20, 0x73A, 0x7D, false},
{InfraredProtocolSIRC20, 0x73A, 0x73, false},
{InfraredProtocolSIRC20, 0x73A, 0x73, false},
{InfraredProtocolSIRC20, 0x73A, 0x73, false},
{InfraredProtocolSIRC, 0x10, 0x13, false},
{InfraredProtocolSIRC, 0x10, 0x13, false},
{InfraredProtocolSIRC, 0x10, 0x13, false},
{InfraredProtocolSIRC, 0x10, 0x13, false},
{InfraredProtocolSIRC, 0x10, 0x12, false},
{InfraredProtocolSIRC, 0x10, 0x12, false},
{InfraredProtocolSIRC, 0x10, 0x12, false},
{InfraredProtocolSIRC, 0x10, 0x12, false},
{InfraredProtocolSIRC20, 0x73A, 0x30, false},
{InfraredProtocolSIRC20, 0x73A, 0x30, false},
{InfraredProtocolSIRC20, 0x73A, 0x30, false},
{InfraredProtocolSIRC20, 0x73A, 0x39, false},
{InfraredProtocolSIRC20, 0x73A, 0x39, false},
{InfraredProtocolSIRC20, 0x73A, 0x39, false},
{InfraredProtocolSIRC20, 0x73A, 0x31, false},
{InfraredProtocolSIRC20, 0x73A, 0x31, false},
{InfraredProtocolSIRC20, 0x73A, 0x31, false},
{InfraredProtocolSIRC20, 0x73A, 0x34, false},
{InfraredProtocolSIRC20, 0x73A, 0x34, false},
{InfraredProtocolSIRC20, 0x73A, 0x34, false},
{InfraredProtocolSIRC20, 0x73A, 0x32, false},
{InfraredProtocolSIRC20, 0x73A, 0x32, false},
{InfraredProtocolSIRC20, 0x73A, 0x32, false},
{InfraredProtocolSIRC20, 0x73A, 0x33, false},
{InfraredProtocolSIRC20, 0x73A, 0x33, false},
{InfraredProtocolSIRC20, 0x73A, 0x33, false},
{InfraredProtocolSIRC20, 0x73A, 0x0F, false},
{InfraredProtocolSIRC20, 0x73A, 0x0F, false},
{InfraredProtocolSIRC20, 0x73A, 0x0F, false},
{InfraredProtocolSIRC20, 0x73A, 0x38, false},
{InfraredProtocolSIRC20, 0x73A, 0x38, false},
{InfraredProtocolSIRC20, 0x73A, 0x38, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x10, 0x15, false},
{InfraredProtocolSIRC, 0x01, 0x2F, false},
{InfraredProtocolSIRC, 0x01, 0x2F, false},
{InfraredProtocolSIRC, 0x01, 0x15, false},
{InfraredProtocolSIRC, 0x01, 0x15, false},
{InfraredProtocolSIRC, 0x01, 0x15, false},
{InfraredProtocolSIRC, 0x01, 0x15, false},
};
// command (0x55) address (0x0A) SIRC
// 1 0 1 0 1 0 1 0 1 0 1 0
// 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
//
// command (0x7F) address (0x1F) SIRC
// 1 1 1 1 1 1 1 1 1 1 1 1
// 2400, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200,
//
// command (0x00) address (0x00) SIRC
// 0 0 0 0 0 0 0 0 0 0 0 0
// 2400, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
//
// command (0x53) address (0x0D) SIRC
// 1 1 0 0 1 0 1 1 0 1 1 0
// 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600,
const uint32_t test_decoder_sirc_input2[] = {
1000000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 600, /* failed - should be skipped */
1000000, 2400, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200,
1000000, 2400, 600, 1200, 600, 600, /* failed - should be skipped */
1000000, 2400, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200,
1000000, 2400, 600, 1200, 600, /* failed - should be skipped */
2400, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200,
1000000, 2400, 600, 1200, 600, 600, /* failed - should be skipped */
1000000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
1000000, 2400, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600,
};
const InfraredMessage test_decoder_sirc_expected2[] = {
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
/* failed - 13 data bits */
{InfraredProtocolSIRC, 0x1F, 0x7F, false},
/* failed - 2 data bits */
{InfraredProtocolSIRC, 0x1F, 0x7F, false},
/* failed - sudden end */
{InfraredProtocolSIRC, 0x1F, 0x7F, false},
/* failed */
{InfraredProtocolSIRC, 0x0A, 0x55, false},
{InfraredProtocolSIRC, 0x00, 0x00, false},
{InfraredProtocolSIRC, 0x0D, 0x53, false},
};
// command (0x13) address (0xFD) SIRC15
// 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1
// 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200,
//
// command (0x53) address (0x7D) SIRC15
// 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0
// 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
//
// command (0x53) address (0x0D) SIRC15
// 1 1 0 0 1 0 1 1 0 1 1 0 0 0 0
// 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 600, 600, 600,
const uint32_t test_decoder_sirc_input3[] = {
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 600, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 600, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 600, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 600, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 600, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200,
};
const InfraredMessage test_decoder_sirc_expected3[] = {
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0x0D, 0x53, false},
{InfraredProtocolSIRC15, 0x0D, 0x53, false},
{InfraredProtocolSIRC15, 0x0D, 0x53, false},
{InfraredProtocolSIRC15, 0x0D, 0x53, false},
{InfraredProtocolSIRC15, 0x0D, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0xFD, 0x13, false},
};
const uint32_t test_decoder_sirc_input4[] = {
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
};
const InfraredMessage test_decoder_sirc_expected4[] = {
{InfraredProtocolSIRC20, 0xFB5, 0x53, false}, // {InfraredProtocolSIRC20, 0x15, 0x3ED3, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
};
const uint32_t test_decoder_sirc_input5[] = {
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
1000000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
};
const InfraredMessage test_decoder_sirc_expected5[] = {
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
{InfraredProtocolSIRC, 0xA, 0x55, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC20, 0xFB5, 0x53, false},
};
const InfraredMessage test_encoder_sirc_input1[] = {
{InfraredProtocolSIRC, 0xA, 0x55, false},
};
const uint32_t test_encoder_sirc_expected1[] = {
10000, 2400, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 600,
};
const InfraredMessage test_encoder_sirc_input2[] = {
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, true},
{InfraredProtocolSIRC15, 0x7D, 0x53, true},
};
const uint32_t test_encoder_sirc_expected2[] = {
10000, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
18600, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
18600, 2400, 600, 1200, 600, 1200, 600, 600, 600, 600, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 600, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 1200, 600, 600,
};
const InfraredMessage test_sirc[] = {
{InfraredProtocolSIRC20, 0x1FFF, 0x7F, false},
{InfraredProtocolSIRC20, 0x1FFF, 0x7F, true},
{InfraredProtocolSIRC20, 0x1FFF, 0x7F, true},
{InfraredProtocolSIRC, 0x00, 0x00, false},
{InfraredProtocolSIRC, 0x00, 0x00, true},
{InfraredProtocolSIRC, 0x00, 0x00, true},
{InfraredProtocolSIRC, 0x1A, 0x22, false},
{InfraredProtocolSIRC, 0x1A, 0x22, true},
{InfraredProtocolSIRC, 0x1A, 0x22, true},
{InfraredProtocolSIRC, 0x17, 0x0A, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, false},
{InfraredProtocolSIRC15, 0x7D, 0x53, true},
{InfraredProtocolSIRC15, 0x7D, 0x53, true},
{InfraredProtocolSIRC15, 0x71, 0x0, false},
{InfraredProtocolSIRC15, 0x15, 0x01, false},
{InfraredProtocolSIRC15, 0x01, 0x15, false},
{InfraredProtocolSIRC20, 0xAA, 0x55, false},
{InfraredProtocolSIRC20, 0x331, 0x71, false},
{InfraredProtocolSIRC, 0x00, 0x00, false},
{InfraredProtocolSIRC, 0x1F, 0x7F, false},
{InfraredProtocolSIRC15, 0x00, 0x00, false},
{InfraredProtocolSIRC15, 0xFF, 0x7F, false},
{InfraredProtocolSIRC20, 0x00, 0x00, false},
{InfraredProtocolSIRC20, 0x1FFF, 0x7F, false},
};

View File

@ -10,8 +10,8 @@
#define TAG "UnitTests"
int run_minunit();
int run_minunit_test_infrared_decoder_encoder();
int run_minunit_test_furi();
int run_minunit_test_infrared();
int run_minunit_test_rpc();
int run_minunit_test_flipper_format();
int run_minunit_test_flipper_format_string();
@ -21,14 +21,35 @@ int run_minunit_test_subghz();
int run_minunit_test_dirwalk();
int run_minunit_test_nfc();
void minunit_print_progress(void) {
static char progress[] = {'\\', '|', '/', '-'};
typedef int (*UnitTestEntry)();
typedef struct {
const char* name;
const UnitTestEntry entry;
} UnitTest;
const UnitTest unit_tests[] = {
{.name = "furi", .entry = run_minunit_test_furi},
{.name = "storage", .entry = run_minunit_test_storage},
{.name = "stream", .entry = run_minunit_test_stream},
{.name = "dirwalk", .entry = run_minunit_test_dirwalk},
{.name = "flipper_format", .entry = run_minunit_test_flipper_format},
{.name = "flipper_format_string", .entry = run_minunit_test_flipper_format_string},
{.name = "rpc", .entry = run_minunit_test_rpc},
{.name = "subghz", .entry = run_minunit_test_subghz},
{.name = "infrared", .entry = run_minunit_test_infrared},
{.name = "nfc", .entry = run_minunit_test_nfc},
};
void minunit_print_progress() {
static const char progress[] = {'\\', '|', '/', '-'};
static uint8_t progress_counter = 0;
static TickType_t last_tick = 0;
TickType_t current_tick = xTaskGetTickCount();
if(current_tick - last_tick > 20) {
last_tick = current_tick;
printf("[%c]\033[3D", progress[++progress_counter % COUNT_OF(progress)]);
fflush(stdout);
}
}
@ -40,7 +61,7 @@ void unit_tests_cli(Cli* cli, string_t args, void* context) {
UNUSED(cli);
UNUSED(args);
UNUSED(context);
uint32_t test_result = 0;
uint32_t failed_tests = 0;
minunit_run = 0;
minunit_assert = 0;
minunit_fail = 0;
@ -51,7 +72,7 @@ void unit_tests_cli(Cli* cli, string_t args, void* context) {
// TODO: lock device while test running
if(loader_is_locked(loader)) {
FURI_LOG_E(TAG, "RPC: stop all applications to run tests");
printf("RPC: stop all applications to run tests\r\n");
notification_message(notification, &sequence_blink_magenta_100);
} else {
notification_message_block(notification, &sequence_set_only_blue_255);
@ -59,34 +80,39 @@ void unit_tests_cli(Cli* cli, string_t args, void* context) {
uint32_t heap_before = memmgr_get_free_heap();
uint32_t cycle_counter = furi_hal_get_tick();
test_result |= run_minunit();
test_result |= run_minunit_test_storage();
test_result |= run_minunit_test_stream();
test_result |= run_minunit_test_dirwalk();
test_result |= run_minunit_test_flipper_format();
test_result |= run_minunit_test_flipper_format_string();
test_result |= run_minunit_test_infrared_decoder_encoder();
test_result |= run_minunit_test_rpc();
test_result |= run_minunit_test_subghz();
test_result |= run_minunit_test_nfc();
cycle_counter = (furi_hal_get_tick() - cycle_counter);
FURI_LOG_I(TAG, "Consumed: %u us", cycle_counter);
if(test_result == 0) {
furi_hal_delay_ms(200); /* wait for tested services and apps to deallocate */
uint32_t heap_after = memmgr_get_free_heap();
notification_message(notification, &sequence_success);
if(heap_after != heap_before) {
FURI_LOG_E(TAG, "Leaked: %d", heap_before - heap_after);
} else {
FURI_LOG_I(TAG, "No leaks");
for(size_t i = 0; i < COUNT_OF(unit_tests); i++) {
if(cli_cmd_interrupt_received(cli)) {
break;
}
FURI_LOG_I(TAG, "PASSED");
if(string_size(args)) {
if(string_cmp_str(args, unit_tests[i].name) == 0) {
failed_tests += unit_tests[i].entry();
} else {
printf("Skipping %s\r\n", unit_tests[i].name);
}
} else {
failed_tests += unit_tests[i].entry();
}
}
printf("\r\nFailed tests: %lu\r\n", failed_tests);
// Time report
cycle_counter = (furi_hal_get_tick() - cycle_counter);
printf("Consumed: %lu ms\r\n", cycle_counter);
// Wait for tested services and apps to deallocate memory
furi_hal_delay_ms(200);
uint32_t heap_after = memmgr_get_free_heap();
printf("Leaked: %ld\r\n", heap_before - heap_after);
// Final Report
if(failed_tests == 0) {
notification_message(notification, &sequence_success);
printf("Status: PASSED\r\n");
} else {
notification_message(notification, &sequence_error);
FURI_LOG_E(TAG, "FAILED");
printf("Status: FAILED\r\n");
}
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,137 @@
Filetype: IR tests file
Version: 1
#
name: encoder_decoder_input1
type: parsed_array
count: 26
#
protocol: NEC42
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42
address: 01 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42
address: 01 00 00 00
command: 80 00 00 00
repeat: false
#
protocol: NEC42
address: 00 00 00 00
command: 80 00 00 00
repeat: false
#
protocol: NEC42
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: NEC42
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: NEC42
address: FF 1F 00 00
command: FF 00 00 00
repeat: false
#
protocol: NEC42
address: FE 1F 00 00
command: FF 00 00 00
repeat: false
#
protocol: NEC42
address: FE 1F 00 00
command: 7F 00 00 00
repeat: false
#
protocol: NEC42
address: FF 1F 00 00
command: 7F 00 00 00
repeat: false
#
protocol: NEC42
address: FF 1F 00 00
command: FF 00 00 00
repeat: false
#
protocol: NEC42
address: FF 1F 00 00
command: FF 00 00 00
repeat: true
#
protocol: NEC42
address: AA 0A 00 00
command: 55 00 00 00
repeat: false
#
protocol: NEC42
address: 55 15 00 00
command: AA 00 00 00
repeat: false
#
protocol: NEC42
address: 55 15 00 00
command: 55 00 00 00
repeat: false
#
protocol: NEC42
address: AA 0A 00 00
command: AA 00 00 00
repeat: false
#
protocol: NEC42
address: AA 0A 00 00
command: AA 00 00 00
repeat: true
#
protocol: NEC42
address: AA 0A 00 00
command: AA 00 00 00
repeat: false
#
protocol: NEC42
address: AA 0A 00 00
command: AA 00 00 00
repeat: true
#
protocol: NEC42
address: AA 0A 00 00
command: AA 00 00 00
repeat: true
#
protocol: NEC42
address: 55 15 00 00
command: 55 00 00 00
repeat: false
#
protocol: NEC42
address: 55 15 00 00
command: 55 00 00 00
repeat: true
#
protocol: NEC42
address: 55 15 00 00
command: 55 00 00 00
repeat: true
#
protocol: NEC42
address: 55 15 00 00
command: 55 00 00 00
repeat: true
#

View File

@ -0,0 +1,163 @@
Filetype: IR tests file
Version: 1
#
name: decoder_input1
type: raw
data: 2000000 9000 4500 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560
#
name: decoder_expected1
type: parsed_array
count: 1
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
name: decoder_input2
type: raw
data: 2000000 9000 4500 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 2000000 9000 4500 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 560 10000 560
#
name: decoder_expected2
type: parsed_array
count: 1
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
name: encoder_decoder_input1
type: parsed_array
count: 26
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42ext
address: 01 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42ext
address: 01 00 00 00
command: 00 80 00 00
repeat: false
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 80 00 00
repeat: false
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: NEC42ext
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: NEC42ext
address: FF 00 F0 03
command: 0F F0 00 00
repeat: false
#
protocol: NEC42ext
address: FE 00 F0 03
command: 0F F0 00 00
repeat: false
#
protocol: NEC42ext
address: FE 00 F0 03
command: 0F 70 00 00
repeat: false
#
protocol: NEC42ext
address: FF 00 F0 03
command: 0F 70 00 00
repeat: false
#
protocol: NEC42ext
address: FF 00 F0 03
command: 0F F0 00 00
repeat: false
#
protocol: NEC42ext
address: FF 00 F0 03
command: 0F F0 00 00
repeat: true
#
protocol: NEC42ext
address: AA AA AA 02
command: 55 55 00 00
repeat: false
#
protocol: NEC42ext
address: 55 55 55 01
command: AA AA 00 00
repeat: false
#
protocol: NEC42ext
address: 55 55 55 01
command: 55 55 00 00
repeat: false
#
protocol: NEC42ext
address: AA AA AA 02
command: AA AA 00 00
repeat: false
#
protocol: NEC42ext
address: AA AA AA 02
command: AA AA 00 00
repeat: true
#
protocol: NEC42ext
address: AA AA AA 02
command: AA AA 00 00
repeat: false
#
protocol: NEC42ext
address: AA AA AA 02
command: AA AA 00 00
repeat: true
#
protocol: NEC42ext
address: AA AA AA 02
command: AA AA 00 00
repeat: true
#
protocol: NEC42ext
address: 55 55 55 01
command: 55 55 00 00
repeat: false
#
protocol: NEC42ext
address: 55 55 55 01
command: 55 55 00 00
repeat: true
#
protocol: NEC42ext
address: 55 55 55 01
command: 55 55 00 00
repeat: true
#
protocol: NEC42ext
address: 55 55 55 01
command: 55 55 00 00
repeat: true
#

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,341 @@
Filetype: IR tests file
Version: 1
#
name: decoder_input1
type: raw
data: 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888
#
name: decoder_expected1
type: parsed_array
count: 1
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
name: decoder_input2
type: raw
data: 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888
#
name: decoder_expected2
type: parsed_array
count: 1
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
name: decoder_input3
type: raw
data: 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888
#
name: decoder_expected3
type: parsed_array
count: 1
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
name: decoder_input4
type: raw
data: 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888
#
name: decoder_expected4
type: parsed_array
count: 1
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
name: decoder_input5
type: raw
data: 27888 888 888 1776 1776 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888
#
name: decoder_expected5
type: parsed_array
count: 1
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
name: decoder_input6
type: raw
data: 27888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888
#
name: decoder_expected6
type: parsed_array
count: 1
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
name: decoder_input7
type: raw
data: 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888 27888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 27888 888 888 1776 1776 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 27888 888 888 1776 1776 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888
#
name: decoder_expected7
type: parsed_array
count: 11
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: true
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: true
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: true
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: true
#
name: encoder_input1
type: parsed_array
count: 11
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: true
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: true
#
protocol: RC5
address: 13 00 00 00
command: 11 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
protocol: RC5
address: 13 00 00 00
command: 10 00 00 00
repeat: true
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: true
#
name: encoder_expected1
type: raw
data: 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 1776 888 27888 888 888 888 888 888 888 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888 27888 888 888 1776 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888 27888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 27888 888 888 1776 1776 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 27888 888 888 1776 1776 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888
#
name: encoder_decoder_input1
type: parsed_array
count: 26
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC5
address: 10 00 00 00
command: 01 00 00 00
repeat: false
#
protocol: RC5
address: 01 00 00 00
command: 20 00 00 00
repeat: false
#
protocol: RC5
address: 01 00 00 00
command: 20 00 00 00
repeat: false
#
protocol: RC5
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5
address: 0A 00 00 00
command: 2A 00 00 00
repeat: false
#
protocol: RC5
address: 15 00 00 00
command: 15 00 00 00
repeat: false
#
protocol: RC5
address: 15 00 00 00
command: 15 00 00 00
repeat: true
#
protocol: RC5X
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5X
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC5X
address: 10 00 00 00
command: 01 00 00 00
repeat: false
#
protocol: RC5X
address: 01 00 00 00
command: 20 00 00 00
repeat: false
#
protocol: RC5X
address: 01 00 00 00
command: 20 00 00 00
repeat: false
#
protocol: RC5X
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5X
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5X
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5X
address: 01 00 00 00
command: 20 00 00 00
repeat: true
#
protocol: RC5X
address: 1F 00 00 00
command: 3F 00 00 00
repeat: false
#
protocol: RC5X
address: 0A 00 00 00
command: 2A 00 00 00
repeat: false
#
protocol: RC5X
address: 15 00 00 00
command: 15 00 00 00
repeat: false
#
protocol: RC5X
address: 15 00 00 00
command: 15 00 00 00
repeat: true
#

View File

@ -0,0 +1,29 @@
Filetype: IR tests file
Version: 1
#
name: decoder_input1
type: raw
data: 27888 1776 888 888 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888
#
name: decoder_expected1
type: parsed_array
count: 1
#
protocol: RC5X
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
name: encoder_input1
type: parsed_array
count: 1
#
protocol: RC5X
address: 13 00 00 00
command: 10 00 00 00
repeat: false
#
name: encoder_expected1
type: raw
data: 27888 1776 888 888 1776 1776 888 888 1776 888 888 1776 1776 1776 888 888 888 888 888 888
#

View File

@ -0,0 +1,341 @@
Filetype: IR tests file
Version: 1
#
name: decoder_input1
type: raw
data: 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 888 888 444 444 888 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 888 888 888 444 444 888 888 888 444 444 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 888 888 444 444 888 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 888 888 888 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 888 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 888 888 888 444 444 888 888 888 444 444 444 444 444 444 444 444 444
#
name: decoder_expected1
type: parsed_array
count: 6
#
protocol: RC6
address: 94 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 94 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 95 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 95 00 00 00
command: A0 00 00 00
repeat: false
#
name: decoder_input2
type: raw
data: 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444
#
name: decoder_expected2
type: parsed_array
count: 8
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: true
#
protocol: RC6
address: 93 00 00 00
command: A1 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A1 00 00 00
repeat: true
#
protocol: RC6
address: 93 00 00 00
command: A1 00 00 00
repeat: true
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: true
#
name: encoder_input1
type: parsed_array
count: 8
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: true
#
protocol: RC6
address: 93 00 00 00
command: A1 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A1 00 00 00
repeat: true
#
protocol: RC6
address: 93 00 00 00
command: A1 00 00 00
repeat: true
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: true
#
name: encoder_expected1
type: raw
data: 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 888 27000 2666 889 444 888 444 444 444 444 444 888 1332 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444 27000 2666 889 444 888 444 444 444 444 1332 888 444 888 444 444 888 888 444 444 888 444 444 444 444 888 888 888 444 444 444 444 444 444 444 444 444
#
name: encoder_decoder_input1
type: parsed_array
count: 40
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 80 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 80 00 00 00
command: 01 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 01 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: RC6
address: FF 00 00 00
command: FF 00 00 00
repeat: false
#
protocol: RC6
address: 7F 00 00 00
command: FF 00 00 00
repeat: false
#
protocol: RC6
address: 7F 00 00 00
command: FE 00 00 00
repeat: false
#
protocol: RC6
address: FF 00 00 00
command: FE 00 00 00
repeat: false
#
protocol: RC6
address: FF 00 00 00
command: FF 00 00 00
repeat: false
#
protocol: RC6
address: FF 00 00 00
command: FF 00 00 00
repeat: true
#
protocol: RC6
address: AA 00 00 00
command: 55 00 00 00
repeat: false
#
protocol: RC6
address: 55 00 00 00
command: AA 00 00 00
repeat: false
#
protocol: RC6
address: 55 00 00 00
command: 55 00 00 00
repeat: false
#
protocol: RC6
address: AA 00 00 00
command: AA 00 00 00
repeat: false
#
protocol: RC6
address: AA 00 00 00
command: AA 00 00 00
repeat: true
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 80 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 80 00 00 00
command: 01 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 01 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: false
#
protocol: RC6
address: 00 00 00 00
command: 00 00 00 00
repeat: true
#
protocol: RC6
address: FF 00 00 00
command: FF 00 00 00
repeat: false
#
protocol: RC6
address: 7F 00 00 00
command: FF 00 00 00
repeat: false
#
protocol: RC6
address: 7F 00 00 00
command: FE 00 00 00
repeat: false
#
protocol: RC6
address: FF 00 00 00
command: FE 00 00 00
repeat: false
#
protocol: RC6
address: FF 00 00 00
command: FF 00 00 00
repeat: false
#
protocol: RC6
address: FF 00 00 00
command: FF 00 00 00
repeat: true
#
protocol: RC6
address: AA 00 00 00
command: 55 00 00 00
repeat: false
#
protocol: RC6
address: 55 00 00 00
command: AA 00 00 00
repeat: false
#
protocol: RC6
address: 55 00 00 00
command: 55 00 00 00
repeat: false
#
protocol: RC6
address: AA 00 00 00
command: AA 00 00 00
repeat: false
#
protocol: RC6
address: AA 00 00 00
command: AA 00 00 00
repeat: true
#
protocol: RC6
address: 93 00 00 00
command: A0 00 00 00
repeat: false
#
protocol: RC6
address: 93 00 00 00
command: A1 00 00 00
repeat: false
#

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long