forked from PAWPAW-Mirror/lib_xua
Midi parse test passing
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
// Copyright 2011-2021 XMOS LIMITED.
|
// Copyright 2011-2024 XMOS LIMITED.
|
||||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||||
#ifndef MIDIINPARSE_XH
|
#ifndef MIDIINPARSE_XH
|
||||||
#define MIDIINPARSE_XH
|
#define MIDIINPARSE_XH
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021-2022 XMOS LIMITED.
|
// Copyright 2021-2024 XMOS LIMITED.
|
||||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||||
|
|
||||||
#ifndef __hid_report_descriptor_h__
|
#ifndef __hid_report_descriptor_h__
|
||||||
|
|||||||
@@ -6,14 +6,26 @@
|
|||||||
#include "xua_unit_tests.h"
|
#include "xua_unit_tests.h"
|
||||||
#include "../../../lib_xua/src/midi/midiinparse.h"
|
#include "../../../lib_xua/src/midi/midiinparse.h"
|
||||||
|
|
||||||
|
#define NUM_CHANS 16
|
||||||
|
#define NOTE_OFF 128
|
||||||
|
#define NOTE_ON 144
|
||||||
|
#define PRESSURE 160
|
||||||
|
#define CONTROL 176
|
||||||
|
#define PROGRAM 192
|
||||||
|
#define PRESSURE_VAL 208
|
||||||
|
#define RANGE 224
|
||||||
|
#define MANUFACTURE_ID 240
|
||||||
|
|
||||||
#define CABLE_NUM 0
|
#define DATA_RANGE 128
|
||||||
|
#define DATA_MASK (DATA_RANGE - 1)
|
||||||
|
|
||||||
#define NOTE_ON 0x90
|
#define NUM_TESTS_PER_TEST 10
|
||||||
#define PITCH 60
|
|
||||||
#define VELOCITY 80
|
|
||||||
|
|
||||||
void something(void){
|
#define CABLE_NUM 2
|
||||||
|
#define RANDOM_SEED 6031769
|
||||||
|
|
||||||
|
unsigned mini_in_parse_ut(unsigned midi[3]){
|
||||||
|
// printf("Composing data: 0x%x 0x%x 0x%x\n", midi[0], midi[1], midi[2]);
|
||||||
|
|
||||||
struct midi_in_parse_state m_state;
|
struct midi_in_parse_state m_state;
|
||||||
void * mips = &m_state;
|
void * mips = &m_state;
|
||||||
@@ -21,22 +33,151 @@ void something(void){
|
|||||||
|
|
||||||
unsigned valid = 0;
|
unsigned valid = 0;
|
||||||
unsigned packed = 0;
|
unsigned packed = 0;
|
||||||
midi_in_parse_wrap(mips, CABLE_NUM, NOTE_ON, &valid, &packed);
|
|
||||||
printf("Valid: %d data: %u\n", valid, packed);
|
|
||||||
midi_in_parse_wrap(mips, CABLE_NUM, PITCH, &valid, &packed);
|
|
||||||
printf("Valid: %d data: %u\n", valid, packed);
|
|
||||||
midi_in_parse_wrap(mips, CABLE_NUM, VELOCITY, &valid, &packed);
|
|
||||||
printf("Valid: %d data: %u\n", valid, packed);
|
|
||||||
|
|
||||||
|
midi_in_parse_wrap(mips, CABLE_NUM, midi[0], &valid, &packed);
|
||||||
|
// printf("Valid: %d data: %u\n", valid, packed);
|
||||||
|
if(valid){
|
||||||
|
return packed;
|
||||||
|
}
|
||||||
|
midi_in_parse_wrap(mips, CABLE_NUM, midi[1], &valid, &packed);
|
||||||
|
// printf("Valid: %d data: %u\n", valid, packed);
|
||||||
|
if(valid){
|
||||||
|
return packed;
|
||||||
|
}
|
||||||
|
midi_in_parse_wrap(mips, CABLE_NUM, midi[2], &valid, &packed);
|
||||||
|
// printf("Valid: %d data: %u\n", valid, packed);
|
||||||
|
if(valid){
|
||||||
|
return packed;
|
||||||
|
}
|
||||||
|
|
||||||
unsigned midi[3];
|
return 0;
|
||||||
unsigned size = 0;
|
|
||||||
|
|
||||||
midi_out_parse_wrap(packed, midi, &size);
|
|
||||||
printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi[0], midi[1], midi[2]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_midi_tx(void) {
|
unsigned rndm = RANDOM_SEED;
|
||||||
TEST_ASSERT_EQUAL_UINT(3, 3);
|
|
||||||
something();
|
|
||||||
|
void test_note(void) {
|
||||||
|
for(int cmd = NOTE_OFF; cmd < NOTE_ON + NUM_CHANS; cmd++){
|
||||||
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
|
unsigned packed = mini_in_parse_ut(midi_ref);
|
||||||
|
unsigned midi_dut[3] = {0};
|
||||||
|
unsigned size = 0;
|
||||||
|
midi_out_parse_wrap(packed, midi_dut, &size);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
||||||
|
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
||||||
|
for(int i = 0; i < size; i++){
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void test_pressure(void) {
|
||||||
|
for(int cmd = PRESSURE; cmd < PRESSURE + NUM_CHANS; cmd++){
|
||||||
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
|
unsigned packed = mini_in_parse_ut(midi_ref);
|
||||||
|
unsigned midi_dut[3] = {0};
|
||||||
|
unsigned size = 0;
|
||||||
|
midi_out_parse_wrap(packed, midi_dut, &size);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
||||||
|
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
||||||
|
for(int i = 0; i < size; i++){
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_control(void) {
|
||||||
|
for(int cmd = CONTROL; cmd < CONTROL + NUM_CHANS; cmd++){
|
||||||
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
|
unsigned packed = mini_in_parse_ut(midi_ref);
|
||||||
|
unsigned midi_dut[3] = {0};
|
||||||
|
unsigned size = 0;
|
||||||
|
midi_out_parse_wrap(packed, midi_dut, &size);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
||||||
|
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
||||||
|
for(int i = 0; i < size; i++){
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_program(void) {
|
||||||
|
for(int cmd = PROGRAM; cmd < PROGRAM + NUM_CHANS; cmd++){
|
||||||
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
|
unsigned packed = mini_in_parse_ut(midi_ref);
|
||||||
|
unsigned midi_dut[3] = {0};
|
||||||
|
unsigned size = 0;
|
||||||
|
midi_out_parse_wrap(packed, midi_dut, &size);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
||||||
|
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
||||||
|
for(int i = 0; i < size; i++){
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_pressure_val(void) {
|
||||||
|
for(int cmd = PRESSURE_VAL; cmd < PRESSURE_VAL + NUM_CHANS; cmd++){
|
||||||
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
|
unsigned packed = mini_in_parse_ut(midi_ref);
|
||||||
|
unsigned midi_dut[3] = {0};
|
||||||
|
unsigned size = 0;
|
||||||
|
midi_out_parse_wrap(packed, midi_dut, &size);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
||||||
|
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
||||||
|
for(int i = 0; i < size; i++){
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_range(void) {
|
||||||
|
for(int cmd = RANGE; cmd < RANGE + NUM_CHANS; cmd++){
|
||||||
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
|
unsigned packed = mini_in_parse_ut(midi_ref);
|
||||||
|
unsigned midi_dut[3] = {0};
|
||||||
|
unsigned size = 0;
|
||||||
|
midi_out_parse_wrap(packed, midi_dut, &size);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
||||||
|
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
||||||
|
for(int i = 0; i < size; i++){
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_manufacturer_id(void) {
|
||||||
|
for(int cmd = MANUFACTURE_ID; cmd < MANUFACTURE_ID + NUM_CHANS; cmd++){
|
||||||
|
for(int test = 0; test < NUM_TESTS_PER_TEST; test++){
|
||||||
|
unsigned midi_ref[3] = {cmd, random(&rndm) & DATA_MASK, random(&rndm) & DATA_MASK};
|
||||||
|
unsigned packed = mini_in_parse_ut(midi_ref);
|
||||||
|
unsigned midi_dut[3] = {0};
|
||||||
|
unsigned size = 0;
|
||||||
|
midi_out_parse_wrap(packed, midi_dut, &size);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_ref[0], midi_ref[1], midi_ref[2]);
|
||||||
|
// printf("size: %d data: 0x%x 0x%x 0x%x\n", size, midi_dut[0], midi_dut[1], midi_dut[2]);
|
||||||
|
//TEST_ASSERT_EQUAL_UINT32_ARRAY not working!?
|
||||||
|
for(int i = 0; i < size; i++){
|
||||||
|
TEST_ASSERT_EQUAL_UINT32(midi_ref[i], midi_dut[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 XMOS LIMITED.
|
// Copyright 2021-2024 XMOS LIMITED.
|
||||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||||
#ifdef __XC__
|
#ifdef __XC__
|
||||||
|
|
||||||
@@ -28,6 +28,11 @@ void AudioHwInit()
|
|||||||
; // nothing
|
; // nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned random(unsigned &x){
|
||||||
|
crc32(x, -1, 0xEB31D82E);
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
// Wrappers for midi parse because C doesn't support return tuples
|
// Wrappers for midi parse because C doesn't support return tuples
|
||||||
void midi_in_parse_wrap(void * unsafe mips, unsigned cable_number, unsigned char b, unsigned * unsafe valid, unsigned *unsafe packed){
|
void midi_in_parse_wrap(void * unsafe mips, unsigned cable_number, unsigned char b, unsigned * unsafe valid, unsigned *unsafe packed){
|
||||||
unsafe{
|
unsafe{
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Copyright 2021 XMOS LIMITED.
|
// Copyright 2021-2024 XMOS LIMITED.
|
||||||
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
// This Software is subject to the terms of the XMOS Public Licence: Version 1.
|
||||||
#ifndef XUA_UNIT_TESTS_H_
|
#ifndef XUA_UNIT_TESTS_H_
|
||||||
#define XUA_UNIT_TESTS_H_
|
#define XUA_UNIT_TESTS_H_
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
void midi_in_parse_wrap(void * mips, unsigned cable_number, unsigned char b, unsigned * valid, unsigned * packed);
|
void midi_in_parse_wrap(void * mips, unsigned cable_number, unsigned char b, unsigned * valid, unsigned * packed);
|
||||||
void midi_out_parse_wrap(unsigned tx_data, unsigned midi[3], unsigned * size);
|
void midi_out_parse_wrap(unsigned tx_data, unsigned midi[3], unsigned * size);
|
||||||
void reset_midi_state_wrap(void *mips);
|
void reset_midi_state_wrap(void *mips);
|
||||||
|
unsigned random(unsigned *x);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* XUA_UNIT_TESTS_H_ */
|
#endif /* XUA_UNIT_TESTS_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user