From 75fb8b90d92732e458fa2b0e893d24bfb208e25f Mon Sep 17 00:00:00 2001 From: Adrien Fauconnet Date: Mon, 18 Jan 2021 00:03:19 +0000 Subject: [PATCH 1/6] Added Serial Format to settings for Teensyduino boards --- src/midi_Settings.h | 4 ++++ src/serialMIDI.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/midi_Settings.h b/src/midi_Settings.h index 179b773e..adac941d 100644 --- a/src/midi_Settings.h +++ b/src/midi_Settings.h @@ -99,6 +99,10 @@ struct DefaultSettings Setting this field to 0 will disable sending MIDI active sensing. */ static const uint16_t SenderActiveSensingPeriodicity = 0; + + #if defined(TEENSYDUINO) + static const uint8_t SerialFormat = SERIAL_8N1; + #endif }; END_MIDI_NAMESPACE diff --git a/src/serialMIDI.h b/src/serialMIDI.h index 9bd96694..ba929789 100644 --- a/src/serialMIDI.h +++ b/src/serialMIDI.h @@ -58,6 +58,8 @@ class SerialMIDI // Initialise the Serial port #if defined(AVR_CAKE) mSerial. template open(); + #elif defined(TEENSYDUINO) + mSerial.begin(Settings::BaudRate, SERIAL_8N1_TXINV); #else mSerial.begin(Settings::BaudRate); #endif From 44b754a7b187e4f94399b9167a5a2830f93b094b Mon Sep 17 00:00:00 2001 From: Adrien Fauconnet Date: Mon, 18 Jan 2021 00:06:54 +0000 Subject: [PATCH 2/6] Use new SerialFormat setting in serial begin --- src/serialMIDI.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/serialMIDI.h b/src/serialMIDI.h index ba929789..b2a3838f 100644 --- a/src/serialMIDI.h +++ b/src/serialMIDI.h @@ -59,7 +59,7 @@ class SerialMIDI #if defined(AVR_CAKE) mSerial. template open(); #elif defined(TEENSYDUINO) - mSerial.begin(Settings::BaudRate, SERIAL_8N1_TXINV); + mSerial.begin(Settings::BaudRate, Settings::SerialFormat); #else mSerial.begin(Settings::BaudRate); #endif From 28fd7f42736527d59c72e4a629dd0e738b1c2949 Mon Sep 17 00:00:00 2001 From: Adrien Fauconnet Date: Mon, 18 Jan 2021 00:17:08 +0000 Subject: [PATCH 3/6] Added comments for Teensy Serial formats in Settings --- src/midi_Settings.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/midi_Settings.h b/src/midi_Settings.h index adac941d..a4d27163 100644 --- a/src/midi_Settings.h +++ b/src/midi_Settings.h @@ -101,6 +101,19 @@ struct DefaultSettings static const uint16_t SenderActiveSensingPeriodicity = 0; #if defined(TEENSYDUINO) + /*! Teensy supports various Serial data formats. + This allows to use circuits that may require inversion of polarity on the RX, TX + or both signals + + Format Name Data Bits Parity Stop Bits RX Polarity TX Polarity + + SERIAL_8N1 8 None Normal Normal + SERIAL_8N1_RXINV 8 None Inverted Normal + SERIAL_8N1_TXINV 8 None Normal Inverted + SERIAL_8N1_RXINV_TXINV 8 None Inverted Inverted + + Default is SERIAL_8N1 + */ static const uint8_t SerialFormat = SERIAL_8N1; #endif }; From 7e58b9df75c97d0b9dc5deba6e327b77adceb65b Mon Sep 17 00:00:00 2001 From: Adrien Fauconnet Date: Mon, 18 Jan 2021 00:17:43 +0000 Subject: [PATCH 4/6] Set Settings::SerialFormat to uint16_t --- src/midi_Settings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/midi_Settings.h b/src/midi_Settings.h index a4d27163..aa6f151d 100644 --- a/src/midi_Settings.h +++ b/src/midi_Settings.h @@ -114,7 +114,7 @@ struct DefaultSettings Default is SERIAL_8N1 */ - static const uint8_t SerialFormat = SERIAL_8N1; + static const uint16_t SerialFormat = SERIAL_8N1; #endif }; From 489ccb770df04ba7679e0cd52829cc540f4ddb90 Mon Sep 17 00:00:00 2001 From: Adrien Fauconnet Date: Mon, 18 Jan 2021 20:01:02 +0000 Subject: [PATCH 5/6] moved SerialFormat settings to serialMIDI.h --- src/midi_Settings.h | 17 ----------------- src/serialMIDI.h | 22 +++++++++++++++++++--- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/src/midi_Settings.h b/src/midi_Settings.h index aa6f151d..179b773e 100644 --- a/src/midi_Settings.h +++ b/src/midi_Settings.h @@ -99,23 +99,6 @@ struct DefaultSettings Setting this field to 0 will disable sending MIDI active sensing. */ static const uint16_t SenderActiveSensingPeriodicity = 0; - - #if defined(TEENSYDUINO) - /*! Teensy supports various Serial data formats. - This allows to use circuits that may require inversion of polarity on the RX, TX - or both signals - - Format Name Data Bits Parity Stop Bits RX Polarity TX Polarity - - SERIAL_8N1 8 None Normal Normal - SERIAL_8N1_RXINV 8 None Inverted Normal - SERIAL_8N1_TXINV 8 None Normal Inverted - SERIAL_8N1_RXINV_TXINV 8 None Inverted Inverted - - Default is SERIAL_8N1 - */ - static const uint16_t SerialFormat = SERIAL_8N1; - #endif }; END_MIDI_NAMESPACE diff --git a/src/serialMIDI.h b/src/serialMIDI.h index b2a3838f..51d2d68b 100644 --- a/src/serialMIDI.h +++ b/src/serialMIDI.h @@ -30,13 +30,29 @@ BEGIN_MIDI_NAMESPACE -struct DefaultSerialSettings +struct DefaultSerialSettings : public MIDI_NAMESPACE::DefaultSettings { /*! Override the default MIDI baudrate to transmit over USB serial, to a decoding program such as Hairless MIDI (set baudrate to 115200)\n http://projectgus.github.io/hairless-midiserial/ */ static const long BaudRate = 31250; + #if defined(TEENSYDUINO) + /*! Teensy supports various Serial data formats. + Override the default Serial Format to use circuits that may require inversion of + polarity on the RX, TX or both signals. + https://www.pjrc.com/teensy/td_serial.html + + Format Name Data Bits Parity RX Polarity TX Polarity + + SERIAL_8N1 8 None Normal Normal + SERIAL_8N1_RXINV 8 None Inverted Normal + SERIAL_8N1_TXINV 8 None Normal Inverted + SERIAL_8N1_RXINV_TXINV 8 None Inverted Inverted + + */ + static const uint16_t SerialFormat = SERIAL_8N1; + #endif }; template @@ -123,5 +139,5 @@ END_MIDI_NAMESPACE @see MIDI_CREATE_INSTANCE */ #define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, Settings) \ - MIDI_NAMESPACE::SerialMIDI serial##Name(SerialPort);\ - MIDI_NAMESPACE::MidiInterface, Settings> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name); + MIDI_NAMESPACE::SerialMIDI serial##Name(SerialPort);\ + MIDI_NAMESPACE::MidiInterface, Settings> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name); From 8a571257b5a5401df04646ebc7292fd94af1a2bb Mon Sep 17 00:00:00 2001 From: Adrien Fauconnet Date: Wed, 20 Jan 2021 21:38:11 +0000 Subject: [PATCH 6/6] added checks for teensy2 --- src/serialMIDI.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/serialMIDI.h b/src/serialMIDI.h index 51d2d68b..8a9d54e5 100644 --- a/src/serialMIDI.h +++ b/src/serialMIDI.h @@ -37,7 +37,7 @@ struct DefaultSerialSettings : public MIDI_NAMESPACE::DefaultSettings http://projectgus.github.io/hairless-midiserial/ */ static const long BaudRate = 31250; - #if defined(TEENSYDUINO) + #if defined(TEENSYDUINO) && !defined(ARDUINO_TEENSY2) /*! Teensy supports various Serial data formats. Override the default Serial Format to use circuits that may require inversion of polarity on the RX, TX or both signals. @@ -74,7 +74,7 @@ class SerialMIDI // Initialise the Serial port #if defined(AVR_CAKE) mSerial. template open(); - #elif defined(TEENSYDUINO) + #elif defined(TEENSYDUINO) && !defined(ARDUINO_TEENSY2) mSerial.begin(Settings::BaudRate, Settings::SerialFormat); #else mSerial.begin(Settings::BaudRate);