From 28b98cc0044d3bb82bf87853f48b347d617969a3 Mon Sep 17 00:00:00 2001 From: lathoub <4082369+lathoub@users.noreply.github.com> Date: Sat, 4 Jun 2022 16:38:08 +0200 Subject: [PATCH] CUSTOM serial and MIDI creation MACRO's --- examples/CustomBaudRate/CustomBaudRate.ino | 6 ++---- src/serialMIDI.h | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/examples/CustomBaudRate/CustomBaudRate.ino b/examples/CustomBaudRate/CustomBaudRate.ino index d554871..eccef25 100644 --- a/examples/CustomBaudRate/CustomBaudRate.ino +++ b/examples/CustomBaudRate/CustomBaudRate.ino @@ -8,11 +8,9 @@ struct CustomBaudRateSettings : public MIDI_NAMESPACE::DefaultSerialSettings { #if defined(ARDUINO_SAM_DUE) || defined(USBCON) || defined(__MK20DX128__) || defined(__MK20DX256__) || defined(__MKL26Z64__) // Leonardo, Due and other USB boards use Serial1 by default. - MIDI_NAMESPACE::SerialMIDI serialMIDI(Serial1); - MIDI_NAMESPACE::MidiInterface> MIDI((MIDI_NAMESPACE::SerialMIDI&)serialMIDI); + MIDI_CREATE_CUSTOMSERIAL_INSTANCE(HardwareSerial, Serial1, MIDI, CustomBaudRateSettings) #else - MIDI_NAMESPACE::SerialMIDI serialMIDI(Serial); - MIDI_NAMESPACE::MidiInterface> MIDI((MIDI_NAMESPACE::SerialMIDI&)serialMIDI); + MIDI_CREATE_CUSTOMSERIAL_INSTANCE(HardwareSerial, Serial, MIDI, CustomBaudRateSettings) #endif void setup() { diff --git a/src/serialMIDI.h b/src/serialMIDI.h index e69e9b2..e1316cc 100644 --- a/src/serialMIDI.h +++ b/src/serialMIDI.h @@ -98,6 +98,20 @@ private: END_MIDI_NAMESPACE +/*! \brief Create an instance of the library attached to a serial port + with overwritten MIDI & Serial Settings + */ +#define MIDI_CREATE_SPECIAL_INSTANCE(Type, SerialPort, Name, CustomMIDISettings, CustomSerialSettings) \ + MIDI_NAMESPACE::SerialMIDI serial##Name(SerialPort); \ + MIDI_NAMESPACE::MidiInterface, CustomMIDISettings> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name); + +/*! \brief Create an instance of the library attached to a serial port + with overwritten Serial Settings + */ +#define MIDI_CREATE_CUSTOMSERIAL_INSTANCE(Type, SerialPort, Name, CustomSerialSettings) \ + MIDI_NAMESPACE::SerialMIDI serial##Name(SerialPort); \ + MIDI_NAMESPACE::MidiInterface> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name); + /*! \brief Create an instance of the library attached to a serial port. You can use HardwareSerial or SoftwareSerial for the serial port. Example: MIDI_CREATE_INSTANCE(HardwareSerial, Serial2, midi2); @@ -125,6 +139,6 @@ END_MIDI_NAMESPACE @see DefaultSettings @see MIDI_CREATE_INSTANCE */ -#define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, Settings) \ +#define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, CustomMIDISettings) \ MIDI_NAMESPACE::SerialMIDI serial##Name(SerialPort);\ - MIDI_NAMESPACE::MidiInterface, Settings> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name); + MIDI_NAMESPACE::MidiInterface, CustomMIDISettings> Name((MIDI_NAMESPACE::SerialMIDI&)serial##Name);