Using new definitions for Thru.

This commit is contained in:
Francois Best 2016-10-27 08:11:29 +02:00
parent 6abbdd7963
commit f1f0ef41ce
3 changed files with 34 additions and 40 deletions

View File

@ -205,12 +205,12 @@ private:
// MIDI Soft Thru
public:
inline MidiFilterMode getFilterMode() const;
inline Thru::Mode getFilterMode() const;
inline bool getThruState() const;
inline void turnThruOn(MidiFilterMode inThruFilterMode = Full);
inline void turnThruOn(Thru::Mode inThruFilterMode = Thru::Full);
inline void turnThruOff();
inline void setThruFilterMode(MidiFilterMode inThruFilterMode);
inline void setThruFilterMode(Thru::Mode inThruFilterMode);
private:
void thruFilter(byte inChannel);
@ -237,7 +237,7 @@ private:
unsigned mCurrentRpnNumber;
unsigned mCurrentNrpnNumber;
bool mThruActivated : 1;
MidiFilterMode mThruFilterMode : 7;
Thru::Mode mThruFilterMode : 7;
MidiMessage mMessage;

View File

@ -42,7 +42,7 @@ inline MidiInterface<SerialPort, Settings>::MidiInterface(SerialPort& inSerial)
, mCurrentRpnNumber(0xffff)
, mCurrentNrpnNumber(0xffff)
, mThruActivated(true)
, mThruFilterMode(Full)
, mThruFilterMode(Thru::Full)
{
mNoteOffCallback = 0;
mNoteOnCallback = 0;
@ -107,7 +107,7 @@ void MidiInterface<SerialPort, Settings>::begin(Channel inChannel)
mMessage.data1 = 0;
mMessage.data2 = 0;
mThruFilterMode = Full;
mThruFilterMode = Thru::Full;
mThruActivated = true;
}
@ -1250,20 +1250,20 @@ void MidiInterface<SerialPort, Settings>::launchCallback()
/*! \brief Set the filter for thru mirroring
\param inThruFilterMode a filter mode
@see MidiFilterMode
@see Thru::Mode
*/
template<class SerialPort, class Settings>
void MidiInterface<SerialPort, Settings>::setThruFilterMode(MidiFilterMode inThruFilterMode)
void MidiInterface<SerialPort, Settings>::setThruFilterMode(Thru::Mode inThruFilterMode)
{
mThruFilterMode = inThruFilterMode;
if (mThruFilterMode != Off)
if (mThruFilterMode != Thru::Off)
mThruActivated = true;
else
mThruActivated = false;
}
template<class SerialPort, class Settings>
MidiFilterMode MidiInterface<SerialPort, Settings>::getFilterMode() const
Thru::Mode MidiInterface<SerialPort, Settings>::getFilterMode() const
{
return mThruFilterMode;
}
@ -1275,7 +1275,7 @@ bool MidiInterface<SerialPort, Settings>::getThruState() const
}
template<class SerialPort, class Settings>
void MidiInterface<SerialPort, Settings>::turnThruOn(MidiFilterMode inThruFilterMode)
void MidiInterface<SerialPort, Settings>::turnThruOn(Thru::Mode inThruFilterMode)
{
mThruActivated = true;
mThruFilterMode = inThruFilterMode;
@ -1285,7 +1285,7 @@ template<class SerialPort, class Settings>
void MidiInterface<SerialPort, Settings>::turnThruOff()
{
mThruActivated = false;
mThruFilterMode = Off;
mThruFilterMode = Thru::Off;
}
/*! @} */ // End of doc group MIDI Thru
@ -1300,7 +1300,7 @@ template<class SerialPort, class Settings>
void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
{
// If the feature is disabled, don't do anything.
if (!mThruActivated || (mThruFilterMode == Off))
if (!mThruActivated || (mThruFilterMode == Thru::Off))
return;
// 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
switch (mThruFilterMode)
{
case Full:
case Thru::Full:
send(mMessage.type,
mMessage.data1,
mMessage.data2,
mMessage.channel);
break;
case SameChannel:
case Thru::SameChannel:
if (filter_condition)
{
send(mMessage.type,
@ -1329,7 +1329,7 @@ void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
}
break;
case DifferentChannel:
case Thru::DifferentChannel:
if (!filter_condition)
{
send(mMessage.type,
@ -1339,12 +1339,6 @@ void MidiInterface<SerialPort, Settings>::thruFilter(Channel inChannel)
}
break;
case Off:
// Do nothing.
// Technically it's impossible to get there because
// the case was already tested earlier.
break;
default:
break;
}

View File

@ -30,10 +30,10 @@ TEST(MidiThru, defaultValues)
MidiInterface midi(serial);
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
EXPECT_EQ(midi.getThruState(), true);
EXPECT_EQ(midi.getFilterMode(), midi::Full);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
}
TEST(MidiThru, beginEnablesThru)
@ -43,10 +43,10 @@ TEST(MidiThru, beginEnablesThru)
midi.turnThruOff();
EXPECT_EQ(midi.getThruState(), false);
EXPECT_EQ(midi.getFilterMode(), midi::Off);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Off);
midi.begin();
EXPECT_EQ(midi.getThruState(), true);
EXPECT_EQ(midi.getFilterMode(), midi::Full);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
}
TEST(MidiThru, setGet)
@ -56,30 +56,30 @@ TEST(MidiThru, setGet)
midi.turnThruOff();
EXPECT_EQ(midi.getThruState(), false);
EXPECT_EQ(midi.getFilterMode(), midi::Off);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Off);
midi.turnThruOn();
EXPECT_EQ(midi.getThruState(), true);
EXPECT_EQ(midi.getFilterMode(), midi::Full);
midi.turnThruOn(midi::SameChannel);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
midi.turnThruOn(midi::Thru::SameChannel);
EXPECT_EQ(midi.getThruState(), true);
EXPECT_EQ(midi.getFilterMode(), midi::SameChannel);
midi.turnThruOn(midi::DifferentChannel);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::SameChannel);
midi.turnThruOn(midi::Thru::DifferentChannel);
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.getFilterMode(), midi::Full);
midi.setThruFilterMode(midi::SameChannel);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Full);
midi.setThruFilterMode(midi::Thru::SameChannel);
EXPECT_EQ(midi.getThruState(), true);
EXPECT_EQ(midi.getFilterMode(), midi::SameChannel);
midi.setThruFilterMode(midi::DifferentChannel);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::SameChannel);
midi.setThruFilterMode(midi::Thru::DifferentChannel);
EXPECT_EQ(midi.getThruState(), true);
EXPECT_EQ(midi.getFilterMode(), midi::DifferentChannel);
midi.setThruFilterMode(midi::Off);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::DifferentChannel);
midi.setThruFilterMode(midi::Thru::Off);
EXPECT_EQ(midi.getThruState(), false);
EXPECT_EQ(midi.getFilterMode(), midi::Off);
EXPECT_EQ(midi.getFilterMode(), midi::Thru::Off);
}
END_UNNAMED_NAMESPACE