mirror of
https://github.com/halleysfifthinc/AVCLAN-Mockingboard.git
synced 2026-08-07 01:13:18 +00:00
Add triple-press for skip back
This commit is contained in:
+7
-4
@@ -218,8 +218,9 @@ ISR(TCA0_OVF_vect) { mic_timer_isr_body(false); }
|
|||||||
// Emulate a single play/pause button press on the source device.
|
// Emulate a single play/pause button press on the source device.
|
||||||
void AVCLAN_micPlayPause() { mic_pulse(1); }
|
void AVCLAN_micPlayPause() { mic_pulse(1); }
|
||||||
|
|
||||||
// Emulate a skip-forward button press: H / L / H.
|
// Emulate skip-forward/backward button presses
|
||||||
void AVCLAN_micSkip() { mic_pulse(3); }
|
void AVCLAN_micSkipForward() { mic_pulse(3); } // double-press
|
||||||
|
void AVCLAN_micSkipBackward() { mic_pulse(5); } // triple-press
|
||||||
|
|
||||||
/* Disable non-read related interrupts (USART RX, PIT, TCA) during AVCLAN reads.
|
/* Disable non-read related interrupts (USART RX, PIT, TCA) during AVCLAN reads.
|
||||||
*/
|
*/
|
||||||
@@ -1205,7 +1206,6 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) {
|
|||||||
respond = r_Handled;
|
respond = r_Handled;
|
||||||
break;
|
break;
|
||||||
case PACK3(dev_CMD_SW, dev_CD_CHANGER, Track_Seek_Up):
|
case PACK3(dev_CMD_SW, dev_CD_CHANGER, Track_Seek_Up):
|
||||||
AVCLAN_micSkip();
|
|
||||||
cd_status.state = cd_SEEKING_TRACK;
|
cd_status.state = cd_SEEKING_TRACK;
|
||||||
if (cd_status.track < 98)
|
if (cd_status.track < 98)
|
||||||
++cd_status.track;
|
++cd_status.track;
|
||||||
@@ -1215,6 +1215,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) {
|
|||||||
cd_status.secs = 0x7f;
|
cd_status.secs = 0x7f;
|
||||||
cd_status.flags2 = 0xc0;
|
cd_status.flags2 = 0xc0;
|
||||||
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
||||||
|
AVCLAN_micSkipForward();
|
||||||
respond = r_TrackChange;
|
respond = r_TrackChange;
|
||||||
break;
|
break;
|
||||||
case PACK3(dev_CMD_SW, dev_CD_CHANGER, Track_Seek_Down):
|
case PACK3(dev_CMD_SW, dev_CD_CHANGER, Track_Seek_Down):
|
||||||
@@ -1230,6 +1231,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) {
|
|||||||
cd_status.secs = 0x7f;
|
cd_status.secs = 0x7f;
|
||||||
cd_status.flags2 = 0xc0;
|
cd_status.flags2 = 0xc0;
|
||||||
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
||||||
|
AVCLAN_micSkipBackward();
|
||||||
respond = r_TrackChange;
|
respond = r_TrackChange;
|
||||||
break;
|
break;
|
||||||
case PACK3(dev_CMD_SW, dev_CD_CHANGER, Track_Fast_Forward): {
|
case PACK3(dev_CMD_SW, dev_CD_CHANGER, Track_Fast_Forward): {
|
||||||
@@ -1240,7 +1242,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) {
|
|||||||
++cd_status.mins;
|
++cd_status.mins;
|
||||||
}
|
}
|
||||||
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
||||||
AVCLAN_micSkip();
|
AVCLAN_micSkipForward();
|
||||||
resetStatusTimer(); // Skipped to a whole/round sec; ensure next tick is
|
resetStatusTimer(); // Skipped to a whole/round sec; ensure next tick is
|
||||||
// ~1 sec from now
|
// ~1 sec from now
|
||||||
respond = r_Handled;
|
respond = r_Handled;
|
||||||
@@ -1260,6 +1262,7 @@ response_t AVCLAN_handleframe(const AVCLAN_frame_t *in, AVCLAN_frame_t *out) {
|
|||||||
} else
|
} else
|
||||||
cd_status.secs -= 15;
|
cd_status.secs -= 15;
|
||||||
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
AVCLAN_generateStatus(out, true, dev_CMD_SW);
|
||||||
|
AVCLAN_micSkipBackward();
|
||||||
resetStatusTimer(); // Skipped to a whole/round sec; ensure next tick is
|
resetStatusTimer(); // Skipped to a whole/round sec; ensure next tick is
|
||||||
// ~1 sec from now
|
// ~1 sec from now
|
||||||
respond = r_Handled;
|
respond = r_Handled;
|
||||||
|
|||||||
+2
-1
@@ -226,7 +226,8 @@ void AVCLAN_normalizeState();
|
|||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
bool AVCLAN_micToggle();
|
bool AVCLAN_micToggle();
|
||||||
void AVCLAN_micPlayPause();
|
void AVCLAN_micPlayPause();
|
||||||
void AVCLAN_micSkip();
|
void AVCLAN_micSkipForward();
|
||||||
|
void AVCLAN_micSkipBackward();
|
||||||
bool AVCLAN_isMediaFunctioning();
|
bool AVCLAN_isMediaFunctioning();
|
||||||
void AVCLan_Measure();
|
void AVCLan_Measure();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+9
-2
@@ -269,7 +269,13 @@ int main() {
|
|||||||
break;
|
break;
|
||||||
case 's':
|
case 's':
|
||||||
RS232_Print("Skip begin ... ");
|
RS232_Print("Skip begin ... ");
|
||||||
AVCLAN_micSkip();
|
AVCLAN_micSkipForward();
|
||||||
|
while (AVCLAN_isMediaFunctioning()) {}
|
||||||
|
RS232_Print("end\n");
|
||||||
|
break;
|
||||||
|
case 'b':
|
||||||
|
RS232_Print("Skip back begin ... ");
|
||||||
|
AVCLAN_micSkipBackward();
|
||||||
while (AVCLAN_isMediaFunctioning()) {}
|
while (AVCLAN_isMediaFunctioning()) {}
|
||||||
RS232_Print("end\n");
|
RS232_Print("end\n");
|
||||||
break;
|
break;
|
||||||
@@ -430,7 +436,8 @@ void print_help() {
|
|||||||
"g - Toggle MIC_CONTROL high/low\n"
|
"g - Toggle MIC_CONTROL high/low\n"
|
||||||
"p - double MIC play/pause pulse\n" // Confirm pulse function and
|
"p - double MIC play/pause pulse\n" // Confirm pulse function and
|
||||||
// refractory timing
|
// refractory timing
|
||||||
"s - MIC skip pulse\n"
|
"s - MIC skip forward\n"
|
||||||
|
"b - MIC skip backward\n"
|
||||||
"M - Measure bit-timing (pulse-widths and periods)\n"
|
"M - Measure bit-timing (pulse-widths and periods)\n"
|
||||||
#endif
|
#endif
|
||||||
"? - Print this message\n");
|
"? - Print this message\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user