Using new definitions for Thru.
This commit is contained in:
parent
6abbdd7963
commit
f1f0ef41ce
|
|
@ -205,12 +205,12 @@ private:
|
||||||
// MIDI Soft Thru
|
// MIDI Soft Thru
|
||||||
|
|
||||||
public:
|
public:
|
||||||
inline MidiFilterMode getFilterMode() const;
|
inline Thru::Mode getFilterMode() const;
|
||||||
inline bool getThruState() const;
|
inline bool getThruState() const;
|
||||||
|
|
||||||
inline void turnThruOn(MidiFilterMode inThruFilterMode = Full);
|
inline void turnThruOn(Thru::Mode inThruFilterMode = Thru::Full);
|
||||||
inline void turnThruOff();
|
inline void turnThruOff();
|
||||||
inline void setThruFilterMode(MidiFilterMode inThruFilterMode);
|
inline void setThruFilterMode(Thru::Mode inThruFilterMode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void thruFilter(byte inChannel);
|
void thruFilter(byte inChannel);
|
||||||
|
|
@ -237,7 +237,7 @@ private:
|
||||||
unsigned mCurrentRpnNumber;
|
unsigned mCurrentRpnNumber;
|
||||||
unsigned mCurrentNrpnNumber;
|
unsigned mCurrentNrpnNumber;
|
||||||
bool mThruActivated : 1;
|
bool mThruActivated : 1;
|
||||||
MidiFilterMode mThruFilterMode : 7;
|
Thru::Mode mThruFilterMode : 7;
|
||||||
MidiMessage mMessage;
|
MidiMessage mMessage;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
30
src/MIDI.hpp
30
src/MIDI.hpp
|
|
@ -42,7 +42,7 @@ inline MidiInterface<SerialPort, Settings>::MidiInterface(SerialPort& inSerial)
|
||||||
, mCurrentRpnNumber(0xffff)
|
, mCurrentRpnNumber(0xffff)
|
||||||
, mCurrentNrpnNumber(0xffff)
|
, mCurrentNrpnNumber(0xffff)
|
||||||
, mThruActivated(true)
|
, mThruActivated(true)
|
||||||
, mThruFilterMode(Full)
|
, mThruFilterMode(Thru::Full)
|
||||||
{
|
{
|
||||||
mNoteOffCallback = 0;
|
mNoteOffCallback = 0;
|
||||||
mNoteOnCallback = 0;
|
mNoteOnCallback = 0;
|
||||||
|
|
@ -107,7 +107,7 @@ void MidiInterface<SerialPort, Settings>::begin(Channel inChannel)
|
||||||
mMessage.data1 = 0;
|
mMessage.data1 = 0;
|
||||||
mMessage.data2 = 0;
|
mMessage.data2 = 0;
|
||||||
|
|
||||||
mThruFilterMode = Full;
|
mThruFilterMode = Thru::Full;
|
||||||
mThruActivated = true;
|
mThruActivated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1250,20 +1250,20 @@ void MidiInterface<SerialPort, Settings>::launchCallback()
|
||||||
/*! \brief Set the filter for thru mirroring
|
/*! \brief Set the filter for thru mirroring
|
||||||
\param inThruFilterMode a filter mode
|
\param inThruFilterMode a filter mode
|
||||||
|
|
||||||
@see MidiFilterMode
|
@see Thru::Mode
|
||||||
*/
|
*/
|
||||||
template<class SerialPort, class Settings>
|
template<class SerialPort, class Settings>
|
||||||
void MidiInterface<SerialPort, Settings>::setThruFilterMode(MidiFilterMode inThruFilterMode)
|
void MidiInterface<SerialPort, Settings>::setThruFilterMode(Thru::Mode inThruFilterMode)
|
||||||
{
|
{
|
||||||
mThruFilterMode = inThruFilterMode;
|
mThruFilterMode = inThruFilterMode;
|
||||||
if (mThruFilterMode != Off)
|
if (mThruFilterMode != Thru::Off)
|
||||||
mThruActivated = true;
|
mThruActivated = true;
|
||||||
else
|
else
|
||||||
mThruActivated = false;
|
mThruActivated = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class SerialPort, class Settings>
|
template<class SerialPort, class Settings>
|
||||||
MidiFilterMode MidiInterface<SerialPort, Settings>::getFilterMode() const
|
Thru::Mode MidiInterface<SerialPort, Settings>::getFilterMode() const
|
||||||
{
|
{
|
||||||
return mThruFilterMode;
|
return mThruFilterMode;
|
||||||
}
|
}
|
||||||
|
|
@ -1275,7 +1275,7 @@ bool MidiInterface<SerialPort, Settings>::getThruState() const
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class SerialPort, class Settings>
|
template<class SerialPort, class Settings>
|
||||||
void MidiInterface<SerialPort, Settings>::turnThruOn(MidiFilterMode inThruFilterMode)
|
void MidiInterface<SerialPort, Settings>::turnThruOn(Thru::Mode inThruFilterMode)
|
||||||
{
|
{
|
||||||
mThruActivated = true;
|
mThruActivated = true;
|
||||||
mThruFilterMode = inThruFilterMode;
|
mThruFilterMode = inThruFilterMode;
|
||||||
|
|
@ -1285,7 +1285,7 @@ template<class SerialPort, class Settings>
|
||||||
void MidiInterface<SerialPort, Settings>::turnThruOff()
|
void MidiInterface<SerialPort, Settings>::turnThruOff()
|
||||||
{
|
{
|
||||||
mThruActivated = false;
|
mThruActivated = false;
|
||||||
mThruFilterMode = Off;
|
mThruFilterMode = Thru::Off;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! @} */ // End of doc group MIDI Thru
|
/*! @} */ // End of doc group MIDI Thru
|
||||||
|
|
@ -1300,7 +1300,7 @@ template<class SerialPort, class Settings>
|
||||||
void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
|
void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
|
||||||
{
|
{
|
||||||
// If the feature is disabled, don't do anything.
|
// If the feature is disabled, don't do anything.
|
||||||
if (!mThruActivated || (mThruFilterMode == Off))
|
if (!mThruActivated || (mThruFilterMode == Thru::Off))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// First, check if the received message is Channel
|
// First, check if the received message is Channel
|
||||||
|
|
@ -1312,14 +1312,14 @@ void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
|
||||||
// Now let's pass it to the output
|
// Now let's pass it to the output
|
||||||
switch (mThruFilterMode)
|
switch (mThruFilterMode)
|
||||||
{
|
{
|
||||||
case Full:
|
case Thru::Full:
|
||||||
send(mMessage.type,
|
send(mMessage.type,
|
||||||
mMessage.data1,
|
mMessage.data1,
|
||||||
mMessage.data2,
|
mMessage.data2,
|
||||||
mMessage.channel);
|
mMessage.channel);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SameChannel:
|
case Thru::SameChannel:
|
||||||
if (filter_condition)
|
if (filter_condition)
|
||||||
{
|
{
|
||||||
send(mMessage.type,
|
send(mMessage.type,
|
||||||
|
|
@ -1329,7 +1329,7 @@ void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DifferentChannel:
|
case Thru::DifferentChannel:
|
||||||
if (!filter_condition)
|
if (!filter_condition)
|
||||||
{
|
{
|
||||||
send(mMessage.type,
|
send(mMessage.type,
|
||||||
|
|
@ -1339,12 +1339,6 @@ void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Off:
|
|
||||||
// Do nothing.
|
|
||||||
// Technically it's impossible to get there because
|
|
||||||
// the case was already tested earlier.
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,10 @@ TEST(MidiThru, defaultValues)
|
||||||
MidiInterface midi(serial);
|
MidiInterface midi(serial);
|
||||||
|
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
|
||||||
midi.begin(); // Should not change the state
|
midi.begin(); // Should not change the state
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(MidiThru, beginEnablesThru)
|
TEST(MidiThru, beginEnablesThru)
|
||||||
|
|
@ -43,10 +43,10 @@ TEST(MidiThru, beginEnablesThru)
|
||||||
|
|
||||||
midi.turnThruOff();
|
midi.turnThruOff();
|
||||||
EXPECT_EQ(midi.getThruState(), false);
|
EXPECT_EQ(midi.getThruState(), false);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Off);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Off);
|
||||||
midi.begin();
|
midi.begin();
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(MidiThru, setGet)
|
TEST(MidiThru, setGet)
|
||||||
|
|
@ -56,30 +56,30 @@ TEST(MidiThru, setGet)
|
||||||
|
|
||||||
midi.turnThruOff();
|
midi.turnThruOff();
|
||||||
EXPECT_EQ(midi.getThruState(), false);
|
EXPECT_EQ(midi.getThruState(), false);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Off);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Off);
|
||||||
|
|
||||||
midi.turnThruOn();
|
midi.turnThruOn();
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
|
||||||
midi.turnThruOn(midi::SameChannel);
|
midi.turnThruOn(midi::Thru::SameChannel);
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::SameChannel);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::SameChannel);
|
||||||
midi.turnThruOn(midi::DifferentChannel);
|
midi.turnThruOn(midi::Thru::DifferentChannel);
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::DifferentChannel);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::DifferentChannel);
|
||||||
|
|
||||||
midi.setThruFilterMode(midi::Full);
|
midi.setThruFilterMode(midi::Thru::Full);
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Full);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
|
||||||
midi.setThruFilterMode(midi::SameChannel);
|
midi.setThruFilterMode(midi::Thru::SameChannel);
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::SameChannel);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::SameChannel);
|
||||||
midi.setThruFilterMode(midi::DifferentChannel);
|
midi.setThruFilterMode(midi::Thru::DifferentChannel);
|
||||||
EXPECT_EQ(midi.getThruState(), true);
|
EXPECT_EQ(midi.getThruState(), true);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::DifferentChannel);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::DifferentChannel);
|
||||||
midi.setThruFilterMode(midi::Off);
|
midi.setThruFilterMode(midi::Thru::Off);
|
||||||
EXPECT_EQ(midi.getThruState(), false);
|
EXPECT_EQ(midi.getThruState(), false);
|
||||||
EXPECT_EQ(midi.getFilterMode(), midi::Off);
|
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Off);
|
||||||
}
|
}
|
||||||
|
|
||||||
END_UNNAMED_NAMESPACE
|
END_UNNAMED_NAMESPACE
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue