ISR Commenting

This commit is contained in:
Bluechip
2015-06-20 18:33:00 +01:00
parent 5e7a1c1f12
commit 66dee2fa16

View File

@@ -27,14 +27,14 @@ ISR (TIMER_INTR_NAME)
if (irparams.rawlen >= RAWBUF) irparams.rcvstate = STATE_OVERFLOW ; // Buffer overflow if (irparams.rawlen >= RAWBUF) irparams.rcvstate = STATE_OVERFLOW ; // Buffer overflow
switch(irparams.rcvstate) { switch(irparams.rcvstate) {
//......................................................................
case STATE_IDLE: // In the middle of a gap case STATE_IDLE: // In the middle of a gap
if (irdata == MARK) { if (irdata == MARK) {
if (irparams.timer < GAP_TICKS) { if (irparams.timer < GAP_TICKS) { // Not big enough to be a gap.
// Not big enough to be a gap.
irparams.timer = 0; irparams.timer = 0;
} else { } else {
// gap just ended, record duration and start recording transmission // Gap just ended; Record duration; Start recording transmission
irparams.overflow = false; irparams.overflow = false;
irparams.rawlen = 0; irparams.rawlen = 0;
irparams.rawbuf[irparams.rawlen++] = irparams.timer; irparams.rawbuf[irparams.rawlen++] = irparams.timer;
@@ -43,43 +43,43 @@ ISR (TIMER_INTR_NAME)
} }
} }
break; break;
//......................................................................
case STATE_MARK: // timing MARK case STATE_MARK: // Timing Mark
if (irdata == SPACE) { // MARK ended, record time if (irdata == SPACE) { // Mark ended; Record time
irparams.rawbuf[irparams.rawlen++] = irparams.timer; irparams.rawbuf[irparams.rawlen++] = irparams.timer;
irparams.timer = 0; irparams.timer = 0;
irparams.rcvstate = STATE_SPACE; irparams.rcvstate = STATE_SPACE;
} }
break; break;
//......................................................................
case STATE_SPACE: // timing SPACE case STATE_SPACE: // Timing Space
if (irdata == MARK) { // SPACE just ended, record it if (irdata == MARK) { // Space just ended; Record time
irparams.rawbuf[irparams.rawlen++] = irparams.timer; irparams.rawbuf[irparams.rawlen++] = irparams.timer;
irparams.timer = 0; irparams.timer = 0;
irparams.rcvstate = STATE_MARK; irparams.rcvstate = STATE_MARK;
} else if (irparams.timer > GAP_TICKS) { // SPACE } else if (irparams.timer > GAP_TICKS) { // Space
// big SPACE, indicates gap between codes // A long Space, indicates gap between codes
// Mark current code as ready for processing // Flag the current code as ready for processing
// Switch to STOP // Switch to STOP
// Don't reset timer; keep counting space width // Don't reset timer; keep counting Space width
irparams.rcvstate = STATE_STOP; irparams.rcvstate = STATE_STOP;
} }
break; break;
//......................................................................
case STATE_STOP: // waiting, measuring gap case STATE_STOP: // Waiting; Measuring Gap
if (irdata == MARK) irparams.timer = 0 ; // reset gap timer if (irdata == MARK) irparams.timer = 0 ; // Reset gap timer
break; break;
//......................................................................
case STATE_OVERFLOW: // Flag up a read overflow case STATE_OVERFLOW: // Flag up a read overflow; Stop the State Machine
irparams.overflow = true; irparams.overflow = true;
irparams.rcvstate = STATE_STOP; irparams.rcvstate = STATE_STOP;
break; break;
} }
// If requested, flash LED L (D13) while receiving IR data
if (irparams.blinkflag) { if (irparams.blinkflag) {
if (irdata == MARK) BLINKLED_ON() ; // turn pin 13 LED on if (irdata == MARK) BLINKLED_ON() ; // turn pin 13 LED on
else BLINKLED_OFF() ; // turn pin 13 LED off else BLINKLED_OFF() ; // turn pin 13 LED off
} }
} }