Rename midi value conversion functions to something that possibly makes more sense

This commit is contained in:
John Stäck 2019-08-15 08:04:14 +02:00
parent 186be9ceb6
commit 660d6583b3
3 changed files with 16 additions and 16 deletions

View file

@ -184,16 +184,16 @@ void sendWLChannel(const uint8_t channel) {
//Only 14 LSB of int value are used (2MSB are discarded), so only works for unsigned data 0-16383
//NOTE: This assumes code is running on a little-endian CPU, both for real device (Teensy) and simulator.
uint16_t midi16to14(const uint16_t realdata) {
uint16_t convertToMidiValue(const uint16_t realdata) {
return (realdata & 0x3F80) >>7 | (realdata & 0x007F) <<8;
}
uint16_t midi14to16(const uint16_t mididata) {
uint16_t convertFromMidiValue(const uint16_t mididata) {
return (mididata & 0x7F00) >> 8 | (mididata & 0x007F) <<7 ;
}
//Read from a memory location, such as MIDI receive buffer
uint16_t midi14to16(const uint8_t* mididata) {
uint16_t convertFromMidiValue(const uint8_t* mididata) {
uint8_t msb = *mididata;
uint8_t lsb = *(mididata+1);
@ -201,7 +201,7 @@ uint16_t midi14to16(const uint8_t* mididata) {
}
//This is a bit different. MSB of each byte is just discarded (instead of discarding MSB for whole value). Just used for CRC (easier to compare)
uint32_t midi32to28(const uint32_t realdata) {
uint32_t convertToMidiCRC(const uint32_t realdata) {
uint8_t* p = (uint8_t*)&realdata;
uint32_t r=0;

View file

@ -38,9 +38,9 @@ void sendWLChannel(const uint8_t channel);
//Convert things between "regular data" and MIDI data (byte order and 7-bits-per-byte)
uint16_t midi16to14(const uint16_t realdata);
uint16_t midi14to16(const uint16_t mididata);
uint16_t midi14to16(const uint8_t* mididata);
uint32_t midi32to28(const uint32_t realdata);
uint16_t convertToMidiValue(const uint16_t realdata);
uint16_t convertFromMidiValue(const uint16_t mididata);
uint16_t convertFromMidiValue(const uint8_t* mididata);
uint32_t convertToMidiCRC(const uint32_t realdata);
#endif

View file

@ -255,7 +255,7 @@ void sendSysexSettings() {
memcpy(sysex_data+header_pos, header, strlen(header));
//Payload length
*(uint16_t*)(sysex_data+size_pos) = midi16to14(EEPROM_SIZE);
*(uint16_t*)(sysex_data+size_pos) = convertToMidiValue(EEPROM_SIZE);
//Config data
uint16_t* config_buffer_start = (uint16_t*)(sysex_data+payload_pos);
@ -263,12 +263,12 @@ void sendSysexSettings() {
//Read one settings item at a time, change data format, and put in send buffer
for(uint16_t idx=0; idx<EEPROM_SIZE/2; idx++) {
uint16_t eepromval = readSetting(idx*2);
config_buffer_start[idx] = midi16to14(eepromval);
config_buffer_start[idx] = convertToMidiValue(eepromval);
}
uint32_t checksum = crc32(sysex_data, checksum_pos);
*(uint32_t*)(sysex_data+checksum_pos) = midi32to28(checksum);
*(uint32_t*)(sysex_data+checksum_pos) = convertToMidiCRC(checksum);
usbMIDI.sendSysEx(sysex_size, sysex_data);
@ -307,7 +307,7 @@ bool receiveSysexSettings(const uint8_t* data, const uint16_t length) {
//Calculate checksum of stuff received (everything before checksum), transform to midi format
//(being a one-way operation, we can't do the reverse anyway)
uint32_t crc=midi32to28(crc32(data, checksum_pos));
uint32_t crc=convertToMidiCRC(crc32(data, checksum_pos));
uint32_t crc_rcv;
memcpy(&crc_rcv, data+checksum_pos, 4);
if(crc != crc_rcv && crc_rcv != NO_CHECKSUM) {
@ -316,14 +316,14 @@ bool receiveSysexSettings(const uint8_t* data, const uint16_t length) {
}
//Verify that payload size matches the size of our EEPROM config
uint16_t payload_size = midi14to16(data+size_pos);
uint16_t payload_size = convertFromMidiValue(data+size_pos);
if(payload_size != EEPROM_SIZE) {
configShowMessage("Invalid config size");
return false;
}
uint16_t eeprom_version_rcv = midi14to16(data+(payload_pos+VERSION_ADDR));
uint16_t eeprom_version_rcv = convertFromMidiValue(data+(payload_pos+VERSION_ADDR));
if(eeprom_version_rcv != EEPROM_VERSION) {
configShowMessage("Invalid config version");
return false;
@ -333,7 +333,7 @@ bool receiveSysexSettings(const uint8_t* data, const uint16_t length) {
for(uint16_t i=0; i<payload_size/2; i++) {
uint16_t addr = i*2;
uint16_t val;
val = midi14to16(data+(payload_pos+addr));
val = convertFromMidiValue(data+(payload_pos+addr));
//Skip sensor calibration values if they are "out of bounds". This makes it possible to send a config that does
//not overwrite sensor calibration.
@ -371,7 +371,7 @@ void sendSysexVersion() {
memcpy(sysexMessage, sysex_id, 3);
memcpy(sysexMessage+13, FIRMWARE_VERSION, min(strlen(FIRMWARE_VERSION), 8));
*(uint16_t*)(sysexMessage+11) = midi16to14(EEPROM_VERSION);
*(uint16_t*)(sysexMessage+11) = convertToMidiValue(EEPROM_VERSION);
uint8_t message_length = 13+strlen(FIRMWARE_VERSION);