using namespace sigc;
using namespace MIDI;
-#define DEBUG_MTC
+#undef DEBUG_MTC
bool
-Parser::possible_mtc (byte *sysex_buf, size_t msglen)
+Parser::possible_mtc (MIDI::byte *sysex_buf, size_t msglen)
{
byte fake_mtc_time[5];
}
void
-Parser::process_mtc_quarter_frame (byte *msg)
+Parser::process_mtc_quarter_frame (MIDI::byte *msg)
{
int which_quarter_frame = (msg[1] & 0xf0) >> 4;
true, just ignore this in terms of it being an error.
*/
- if (1) { /* mtc_skipped () */
+ boost::optional<bool> res = mtc_skipped ();
+
+ if (res.get_value_or (false)) {
/* no error, reset next expected frame */
return;
}
- /* go back to waiting for the first frame */
-
- expected_mtc_quarter_frame_code = 0;
- memset (_qtr_mtc_time, 0, sizeof (_qtr_mtc_time));
-
- _mtc_running = MTC_Stopped;
- _mtc_locked = false;
+ /* skip counts as an error ... go back to waiting for the first frame */
#ifdef DEBUG_MTC
cerr << "Skipped MTC qtr frame, return to stopped state" << endl;
#endif
+ reset_mtc_state ();
mtc_status (MTC_Stopped);
return;
/* time code is looking good */
#ifdef DEBUG_MTC
- // cerr << "for quarter frame " << which_quarter_frame << " byte = " << hex << (int) msg[1] << dec << endl;
+ cerr << "for quarter frame " << which_quarter_frame << " byte = " << hex << (int) msg[1] << dec << endl;
#endif
switch (which_quarter_frame) {
break;
default:
- /*NOTREACHED*/
+ abort(); /*NOTREACHED*/
break;
}
switch (_mtc_running) {
case MTC_Forward:
- if ((which_quarter_frame == 7)) {
+ if (which_quarter_frame == 7) {
/* we've reached the final of 8 quarter frame messages.
store the time, reset the pending time holder,