Added a new Brand "Kamoona" to be used for other applications that are not a known brand.
Fork of RemoteIR by
Diff: TransmitterIR.cpp
- Revision:
- 12:0651f02169ee
- Parent:
- 11:268cc2ab63bd
- Child:
- 14:257b2f794dc4
diff -r 268cc2ab63bd -r 0651f02169ee TransmitterIR.cpp --- a/TransmitterIR.cpp Mon Sep 20 00:54:59 2010 +0000 +++ b/TransmitterIR.cpp Sun Apr 19 19:11:32 2015 +0000 @@ -89,6 +89,14 @@ ticker.detach(); ticker.attach_us(this, &TransmitterIR::tick, RemoteIR::TUS_SONY); break; + case RemoteIR::Samsung: + ticker.detach(); + ticker.attach_us(this, &TransmitterIR::tick, RemoteIR::TUS_Samsung); + break; + case RemoteIR::Nikon: + ticker.detach(); + ticker.attach_us(this, &TransmitterIR::tick, RemoteIR::TUS_Nikon); + break; } UNLOCK(); @@ -150,6 +158,36 @@ if ((LEADER_SONY_HEAD + LEADER_SONY_TAIL) <= work.leader) { work.state = Data; } + } else if (data.format == RemoteIR::Samsung) { + /* + * SONY. + */ + static const int LEADER_Samsung_HEAD = 8; + static const int LEADER_Samsung_TAIL = 8; + if (work.leader < LEADER_Samsung_HEAD) { + tx.write(0.5); + } else { + tx.write(0.0); + } + work.leader++; + if ((LEADER_Samsung_HEAD + LEADER_Samsung_TAIL) <= work.leader) { + work.state = Data; + } + } else if (data.format == RemoteIR::Nikon) { + /* + * Nikon. + */ + static const int LEADER_Nikon_HEAD = 0; + static const int LEADER_Nikon_TAIL = 0; + if (work.leader < LEADER_Nikon_HEAD) { + tx.write(0.5); + } else { + tx.write(0.0); + } + work.leader++; + if ((LEADER_Nikon_HEAD + LEADER_Nikon_TAIL) <= work.leader) { + work.state = Data; + } } else { } break; @@ -238,7 +276,34 @@ if (data.bitlength <= work.bitcount) { work.state = Trailer; } - } else { + }else if (data.format == RemoteIR::Samsung) { + /* + * Samsung. + */ + if (work.data == 0) { + tx.write(0.5); + work.data++; + } else { + tx.write(0.0); + if (0 != (data.buffer[work.bitcount / 8] & (1 << work.bitcount % 8))) { + if (1 <= work.data) { + work.bitcount++; + work.data = 0; + } else { + work.data++; + } + } else { + if (3 <= work.data) { + work.bitcount++; + work.data = 0; + } else { + work.data++; + } + } + } + if (data.bitlength <= work.bitcount) { + work.state = Trailer; + } else { } break; case Trailer: @@ -290,6 +355,22 @@ work.state = Idle; //ticker.detach(); } + }else if (data.format == RemoteIR::Samsung) { + /* + * Samsung. + */ + static const int TRAILER_Samsung_HEAD = 1; + static const int TRAILER_Samsung_TAIL = 55; + if (work.trailer < TRAILER_Samsung_HEAD) { + tx.write(0.5); + } else { + tx.write(0.0); + } + work.trailer++; + if ((TRAILER_Samsung_HEAD + TRAILER_Samsung_TAIL) <= work.trailer) { + work.state = Idle; + //ticker.detach(); + } } else { } break; @@ -298,3 +379,4 @@ } UNLOCK(); } +}