forked RemoteIR
Fork of RemoteIR by
Diff: TransmitterIR.cpp
- Revision:
- 12:d86179332137
- Parent:
- 11:268cc2ab63bd
--- a/TransmitterIR.cpp Mon Sep 20 00:54:59 2010 +0000 +++ b/TransmitterIR.cpp Sat Mar 17 14:42:15 2018 +0000 @@ -15,8 +15,9 @@ * * @param txpin Pin for transmit IR signal. */ -TransmitterIR::TransmitterIR(PinName txpin) : tx(txpin) { - tx.write(0.0); +TransmitterIR::TransmitterIR(PinName txpin, bool ti = false) : tx(txpin) { + txInversion = ti; + setLEDLow(); tx.period_us(26.3); work.state = Idle; @@ -112,9 +113,9 @@ static const int LEADER_NEC_HEAD = 16; static const int LEADER_NEC_TAIL = 8; if (work.leader < LEADER_NEC_HEAD) { - tx.write(0.5); + setLEDHigh(); } else { - tx.write(0.0); + setLEDLow(); } work.leader++; if ((LEADER_NEC_HEAD + LEADER_NEC_TAIL) <= work.leader) { @@ -127,9 +128,9 @@ static const int LEADER_AEHA_HEAD = 8; static const int LEADER_AEHA_TAIL = 4; if (work.leader < LEADER_AEHA_HEAD) { - tx.write(0.5); + setLEDHigh(); } else { - tx.write(0.0); + setLEDLow(); } work.leader++; if ((LEADER_AEHA_HEAD + LEADER_AEHA_TAIL) <= work.leader) { @@ -142,9 +143,9 @@ static const int LEADER_SONY_HEAD = 4; static const int LEADER_SONY_TAIL = 0; if (work.leader < LEADER_SONY_HEAD) { - tx.write(0.5); + setLEDHigh(); } else { - tx.write(0.0); + setLEDLow(); } work.leader++; if ((LEADER_SONY_HEAD + LEADER_SONY_TAIL) <= work.leader) { @@ -159,10 +160,10 @@ * NEC. */ if (work.data == 0) { - tx.write(0.5); + setLEDHigh(); work.data++; } else { - tx.write(0.0); + setLEDLow(); if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) { if (3 <= work.data) { work.bitcount++; @@ -187,10 +188,10 @@ * AEHA. */ if (work.data == 0) { - tx.write(0.5); + setLEDHigh(); work.data++; } else { - tx.write(0.0); + setLEDLow(); if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) { if (3 <= work.data) { work.bitcount++; @@ -215,10 +216,10 @@ * SONY. */ if (work.data == 0) { - tx.write(0.0); + setLEDLow(); work.data++; } else { - tx.write(0.5); + setLEDHigh(); if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) { if (2 <= work.data) { work.bitcount++; @@ -249,9 +250,9 @@ static const int TRAILER_NEC_HEAD = 1; static const int TRAILER_NEC_TAIL = 2; if (work.trailer < TRAILER_NEC_HEAD) { - tx.write(0.5); + setLEDHigh(); } else { - tx.write(0.0); + setLEDLow(); } work.trailer++; if ((TRAILER_NEC_HEAD + TRAILER_NEC_TAIL) <= work.trailer) { @@ -265,9 +266,9 @@ static const int TRAILER_AEHA_HEAD = 1; static const int TRAILER_AEHA_TAIL = 8000 / RemoteIR::TUS_AEHA; if (work.trailer < TRAILER_AEHA_HEAD) { - tx.write(0.5); + setLEDHigh(); } else { - tx.write(0.0); + setLEDLow(); } work.trailer++; if ((TRAILER_AEHA_HEAD + TRAILER_AEHA_TAIL) <= work.trailer) { @@ -281,9 +282,9 @@ static const int TRAILER_SONY_HEAD = 0; static const int TRAILER_SONY_TAIL = 0; if (work.trailer < TRAILER_SONY_HEAD) { - tx.write(0.5); + setLEDHigh(); } else { - tx.write(0.0); + setLEDLow(); } work.trailer++; if ((TRAILER_SONY_HEAD + TRAILER_SONY_TAIL) <= work.trailer) { @@ -298,3 +299,22 @@ } UNLOCK(); } + +void TransmitterIR::setLEDHigh(void) { + if (txInversion) + { + tx.write(0.5); + } else { + tx.write(0.0); + } +} + +void TransmitterIR::setLEDLow(void) { + if (txInversion) + { + tx.write(1.0); + } else { + printf("0.5\n"); + tx.write(0.5); + } +} \ No newline at end of file