forked RemoteIR

Fork of RemoteIR by Shinichiro Nakamura

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