forked from PAWPAW-Mirror/lib_xua
sysex parse test
This commit is contained in:
@@ -14,13 +14,14 @@
|
|||||||
#define PROGRAM 192
|
#define PROGRAM 192
|
||||||
#define PRESSURE_VAL 208
|
#define PRESSURE_VAL 208
|
||||||
#define RANGE 224
|
#define RANGE 224
|
||||||
#define MANUFACTURE_ID 240
|
#define SYSEX_SOM 240
|
||||||
|
#define SYSEX_EOM 247
|
||||||
|
|
||||||
#define DATA_RANGE 128
|
#define DATA_RANGE 128
|
||||||
#define DATA_MASK (DATA_RANGE - 1)
|
#define DATA_MASK (DATA_RANGE - 1)
|
||||||
|
|
||||||
#ifndef NUM_TESTS_PER_TEST
|
#ifndef NUM_TESTS_PER_TEST
|
||||||
#define NUM_TESTS_PER_TEST 0
|
#define NUM_TESTS_PER_TEST 30
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CABLE_NUM
|
#ifndef CABLE_NUM
|
||||||
@@ -66,6 +67,7 @@ void test_midi_note(void) {
|
|||||||
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
unsigned packed = midi_in_parse_ut(midi_ref);
|
unsigned packed = midi_in_parse_ut(midi_ref);
|
||||||
|
|
||||||
unsigned midi_dut[3] = {0};
|
unsigned midi_dut[3] = {0};
|
||||||
unsigned size = 0;
|
unsigned size = 0;
|
||||||
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
||||||
@@ -84,6 +86,7 @@ void test_midi_pressure(void) {
|
|||||||
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
unsigned packed = midi_in_parse_ut(midi_ref);
|
unsigned packed = midi_in_parse_ut(midi_ref);
|
||||||
|
|
||||||
unsigned midi_dut[3] = {0};
|
unsigned midi_dut[3] = {0};
|
||||||
unsigned size = 0;
|
unsigned size = 0;
|
||||||
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
||||||
@@ -102,6 +105,7 @@ void test_midi_control(void) {
|
|||||||
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
unsigned packed = midi_in_parse_ut(midi_ref);
|
unsigned packed = midi_in_parse_ut(midi_ref);
|
||||||
|
|
||||||
unsigned midi_dut[3] = {0};
|
unsigned midi_dut[3] = {0};
|
||||||
unsigned size = 0;
|
unsigned size = 0;
|
||||||
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
||||||
@@ -120,6 +124,7 @@ void test_midi_program(void) {
|
|||||||
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
unsigned packed = midi_in_parse_ut(midi_ref);
|
unsigned packed = midi_in_parse_ut(midi_ref);
|
||||||
|
|
||||||
unsigned midi_dut[3] = {0};
|
unsigned midi_dut[3] = {0};
|
||||||
unsigned size = 0;
|
unsigned size = 0;
|
||||||
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
||||||
@@ -138,6 +143,7 @@ void test_midi_pressure_val(void) {
|
|||||||
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
unsigned packed = midi_in_parse_ut(midi_ref);
|
unsigned packed = midi_in_parse_ut(midi_ref);
|
||||||
|
|
||||||
unsigned midi_dut[3] = {0};
|
unsigned midi_dut[3] = {0};
|
||||||
unsigned size = 0;
|
unsigned size = 0;
|
||||||
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
||||||
@@ -156,6 +162,7 @@ void test_midi_range(void) {
|
|||||||
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
unsigned packed = midi_in_parse_ut(midi_ref);
|
unsigned packed = midi_in_parse_ut(midi_ref);
|
||||||
|
|
||||||
unsigned midi_dut[3] = {0};
|
unsigned midi_dut[3] = {0};
|
||||||
unsigned size = 0;
|
unsigned size = 0;
|
||||||
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
||||||
@@ -169,20 +176,47 @@ void test_midi_range(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_midi_manufacturer_id(void) {
|
// https://cmtext.indiana.edu/MIDI/chapter3_system_messages.php
|
||||||
for(int cmd = MANUFACTURE_ID; cmd < MANUFACTURE_ID + NUM_CHANS; cmd++){
|
void test_midi_sys_ex(void) {
|
||||||
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
const unsigned MAX_SYS_EX_LENGTH = 200; // https://cycling74.com/forums/maximu-sysex-length
|
||||||
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
|
||||||
unsigned packed = midi_in_parse_ut(midi_ref);
|
for(int sys_ex_length = 1; sys_ex_length < MAX_SYS_EX_LENGTH; sys_ex_length++){
|
||||||
unsigned midi_dut[3] = {0};
|
unsigned midi_ref[1 + MAX_SYS_EX_LENGTH + 1] = {0}; // Add SOM + EOM.
|
||||||
|
unsigned msg_len = 1 + sys_ex_length + 1;
|
||||||
|
|
||||||
|
// Build message
|
||||||
|
midi_ref[0] = SYSEX_SOM;
|
||||||
|
midi_ref[1] = 0x00; // Extended manf ID
|
||||||
|
midi_ref[2] = random(&rndm) & DATA_MASK; // Manf ID 0
|
||||||
|
midi_ref[3] = random(&rndm) & DATA_MASK; // Manf ID 1
|
||||||
|
for(unsigned i = 4; i < msg_len - 1; i++){
|
||||||
|
midi_ref[i] = random(&rndm) & DATA_MASK; // Some data
|
||||||
|
}
|
||||||
|
midi_ref[msg_len - 1] = SYSEX_EOM; // End of sys-ex
|
||||||
|
|
||||||
|
unsigned midi_dut[1 + MAX_SYS_EX_LENGTH + 1 + 2] = {0}; // Add SOM + EOM. Add 2 because msg_size % 3 may be up to 2.
|
||||||
|
|
||||||
|
struct midi_in_parse_state mips;
|
||||||
|
reset_midi_state_c_wrapper(&mips);
|
||||||
|
unsigned valid = 0;
|
||||||
|
unsigned packed = 0;
|
||||||
|
|
||||||
|
unsigned out_idx = 0;
|
||||||
|
for(unsigned i = 0; i < msg_len; i++){
|
||||||
|
// printf("Ref byte: %d - 0x%x\n", i, midi_ref[i]);
|
||||||
|
midi_in_parse_c_wrapper((void * )&mips, CABLE_NUM, midi_ref[i], &valid, &packed);
|
||||||
|
if(valid){
|
||||||
unsigned size = 0;
|
unsigned size = 0;
|
||||||
midi_out_parse_c_wrapper(packed, midi_dut, &size);
|
midi_out_parse_c_wrapper(packed, &midi_dut[out_idx], &size);
|
||||||
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
// printf("SIZE: %u PACKED: 0x%8x, 0x%x 0x%x 0x%x\n", size, packed, midi_dut[out_idx + 0], midi_dut[out_idx + 1], midi_dut[out_idx + 2]);
|
||||||
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
out_idx += size;
|
||||||
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
}
|
||||||
for(int i = 0; i < size; i++){
|
}
|
||||||
|
|
||||||
|
for(unsigned i = 0; i < msg_len; i++){
|
||||||
|
// printf("%d Ref: 0x%x DUT: 0x%x\n", i, midi_ref[i], midi_dut[i]);
|
||||||
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
}
|
}
|
||||||
}
|
printf("Sysex PASS length: %u\n", msg_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user