reworked active Sensing

This commit is contained in:
lathoub 2020-05-16 16:35:03 +02:00
parent ff3052ceb4
commit 2685bb458b
4 changed files with 6 additions and 9 deletions

View File

@ -282,7 +282,6 @@ private:
MidiMessage mMessage; MidiMessage mMessage;
unsigned long mLastMessageSentTime; unsigned long mLastMessageSentTime;
unsigned long mLastMessageReceivedTime; unsigned long mLastMessageReceivedTime;
unsigned long mSenderActiveSensingPeriodicity;
bool mReceiverActiveSensingActivated; bool mReceiverActiveSensingActivated;
int8_t mLastError; int8_t mLastError;

View File

@ -44,11 +44,9 @@ inline MidiInterface<Transport, Settings, Platform>::MidiInterface(Transport& in
, mThruFilterMode(Thru::Full) , mThruFilterMode(Thru::Full)
, mLastMessageSentTime(0) , mLastMessageSentTime(0)
, mLastMessageReceivedTime(0) , mLastMessageReceivedTime(0)
, mSenderActiveSensingPeriodicity(0)
, mReceiverActiveSensingActivated(false) , mReceiverActiveSensingActivated(false)
, mLastError(0) , mLastError(0)
{ {
mSenderActiveSensingPeriodicity = Settings::SenderActiveSensingPeriodicity;
} }
/*! \brief Destructor for MidiInterface. /*! \brief Destructor for MidiInterface.
@ -720,7 +718,7 @@ inline bool MidiInterface<Transport, Settings, Platform>::read(Channel inChannel
// assume that the connection has been terminated. At // assume that the connection has been terminated. At
// termination, the receiver will turn off all voices and return to // termination, the receiver will turn off all voices and return to
// normal (non- active sensing) operation. // normal (non- active sensing) operation.
if (Settings::UseSenderActiveSensing && (mSenderActiveSensingPeriodicity > 0) && (Platform::now() - mLastMessageSentTime) > mSenderActiveSensingPeriodicity) if (Settings::UseSenderActiveSensing && (Platform::now() - mLastMessageSentTime) > Settings::SenderActiveSensingPeriodicity)
{ {
sendActiveSensing(); sendActiveSensing();
mLastMessageSentTime = Platform::now(); mLastMessageSentTime = Platform::now();
@ -1384,7 +1382,7 @@ inline void MidiInterface<Transport, Settings, Platform>::turnThruOff()
template<class Transport, class Settings, class Platform> template<class Transport, class Settings, class Platform>
inline void MidiInterface<Transport, Settings, Platform>::UpdateLastSentTime() inline void MidiInterface<Transport, Settings, Platform>::UpdateLastSentTime()
{ {
if (Settings::UseSenderActiveSensing && mSenderActiveSensingPeriodicity) if (Settings::UseSenderActiveSensing)
mLastMessageSentTime = Platform::now(); mLastMessageSentTime = Platform::now();
} }

View File

@ -75,6 +75,7 @@ struct DefaultSettings
/*! Global switch to turn on/off sender ActiveSensing /*! Global switch to turn on/off sender ActiveSensing
Set to true to send ActiveSensing Set to true to send ActiveSensing
Set to false will not send ActiveSensing message (will also save memory) Set to false will not send ActiveSensing message (will also save memory)
as often as possible (1000 / SenderActiveSensingPeriodicity per second).
*/ */
static const bool UseSenderActiveSensing = false; static const bool UseSenderActiveSensing = false;
@ -95,10 +96,8 @@ struct DefaultSettings
Typical value is 250 (ms) - an Active Sensing command is send every 250ms. Typical value is 250 (ms) - an Active Sensing command is send every 250ms.
(All Roland devices send Active Sensing every 250ms) (All Roland devices send Active Sensing every 250ms)
Setting this field to 0 will disable sending MIDI active sensing.
*/ */
static const uint16_t SenderActiveSensingPeriodicity = 0; static const uint16_t SenderActiveSensingPeriodicity = 250;
}; };
END_MIDI_NAMESPACE END_MIDI_NAMESPACE

View File

@ -116,10 +116,11 @@ END_MIDI_NAMESPACE
#endif #endif
/*! \brief Create an instance of the library attached to a serial port with /*! \brief Create an instance of the library attached to a serial port with
custom settings. custom MIDI settings (not to be confused with modified Serial Settings, like BaudRate)
@see DefaultSettings @see DefaultSettings
@see MIDI_CREATE_INSTANCE @see MIDI_CREATE_INSTANCE
*/ */
#define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, Settings) \ #define MIDI_CREATE_CUSTOM_INSTANCE(Type, SerialPort, Name, Settings) \
MIDI_NAMESPACE::SerialMIDI<Type> serial##Name(SerialPort);\ MIDI_NAMESPACE::SerialMIDI<Type> serial##Name(SerialPort);\
MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<Type>, Settings> Name((MIDI_NAMESPACE::SerialMIDI<Type>&)serial##Name); MIDI_NAMESPACE::MidiInterface<MIDI_NAMESPACE::SerialMIDI<Type>, Settings> Name((MIDI_NAMESPACE::SerialMIDI<Type>&)serial##Name);