[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:
		
							parent
							
								
									877c5c8122
								
							
						
					
					
						commit
						80629de01e
					
				| @ -1,4 +1,4 @@ | ||||
| #include "minunit.h" | ||||
| #include "../minunit.h" | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <stdbool.h> | ||||
| @ -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; | ||||
| @ -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
 | ||||
| @ -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; | ||||
| @ -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; | ||||
							
								
								
									
										520
									
								
								applications/unit_tests/infrared/infrared_test.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										520
									
								
								applications/unit_tests/infrared/infrared_test.c
									
									
									
									
									
										Normal 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; | ||||
| } | ||||
| @ -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; | ||||
| } | ||||
| @ -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}, | ||||
| }; | ||||
| 
 | ||||
| @ -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}, | ||||
| }; | ||||
| 
 | ||||
| 
 | ||||
| @ -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}, | ||||
| }; | ||||
| 
 | ||||
| @ -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 | ||||
| }; | ||||
| 
 | ||||
| @ -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}, | ||||
| }; | ||||
| 
 | ||||
| @ -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}, | ||||
| }; | ||||
| 
 | ||||
| @ -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"); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										511
									
								
								assets/unit_tests/infrared/test_nec.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										511
									
								
								assets/unit_tests/infrared/test_nec.irtest
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										137
									
								
								assets/unit_tests/infrared/test_nec42.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								assets/unit_tests/infrared/test_nec42.irtest
									
									
									
									
									
										Normal 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 | ||||
| # | ||||
							
								
								
									
										163
									
								
								assets/unit_tests/infrared/test_nec42ext.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								assets/unit_tests/infrared/test_nec42ext.irtest
									
									
									
									
									
										Normal 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 | ||||
| # | ||||
							
								
								
									
										684
									
								
								assets/unit_tests/infrared/test_necext.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										684
									
								
								assets/unit_tests/infrared/test_necext.irtest
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										341
									
								
								assets/unit_tests/infrared/test_rc5.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										341
									
								
								assets/unit_tests/infrared/test_rc5.irtest
									
									
									
									
									
										Normal 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 | ||||
| # | ||||
							
								
								
									
										29
									
								
								assets/unit_tests/infrared/test_rc5x.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								assets/unit_tests/infrared/test_rc5x.irtest
									
									
									
									
									
										Normal 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 | ||||
| # | ||||
							
								
								
									
										341
									
								
								assets/unit_tests/infrared/test_rc6.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										341
									
								
								assets/unit_tests/infrared/test_rc6.irtest
									
									
									
									
									
										Normal 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 | ||||
| # | ||||
							
								
								
									
										535
									
								
								assets/unit_tests/infrared/test_samsung32.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										535
									
								
								assets/unit_tests/infrared/test_samsung32.irtest
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1060
									
								
								assets/unit_tests/infrared/test_sirc.irtest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1060
									
								
								assets/unit_tests/infrared/test_sirc.irtest
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Georgii Surkov
						Georgii Surkov