Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: ir_LG.cpp
- Revision:
- 0:70c8e56bac45
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ir_LG.cpp Sat Jan 23 06:16:48 2016 +0000
@@ -0,0 +1,80 @@
+#include "IRremote.h"
+#include "IRremoteInt.h"
+
+//==============================================================================
+// L GGGG
+// L G
+// L G GG
+// L G G
+// LLLLL GGG
+//==============================================================================
+
+#define LG_BITS 28
+
+#define LG_HDR_MARK 8000
+#define LG_HDR_SPACE 4000
+#define LG_BIT_MARK 600
+#define LG_ONE_SPACE 1600
+#define LG_ZERO_SPACE 550
+#define LG_RPT_LENGTH 60000
+
+//+=============================================================================
+#if DECODE_LG
+bool IRrecv::decodeLG (decode_results *results)
+{
+ long data = 0;
+ int offset = 1; // Skip first space
+
+ // Check we have the right amount of data
+ if (irparams.rawlen < (2 * LG_BITS) + 1 ) return false ;
+
+ // Initial mark/space
+ if (!MATCH_MARK(results->rawbuf[offset++], LG_HDR_MARK)) return false ;
+ if (!MATCH_SPACE(results->rawbuf[offset++], LG_HDR_SPACE)) return false ;
+
+ for (int i = 0; i < LG_BITS; i++) {
+ if (!MATCH_MARK(results->rawbuf[offset++], LG_BIT_MARK)) return false ;
+
+ if (MATCH_SPACE(results->rawbuf[offset], LG_ONE_SPACE)) data = (data << 1) | 1 ;
+ else if (MATCH_SPACE(results->rawbuf[offset], LG_ZERO_SPACE)) data = (data << 1) | 0 ;
+ else return false ;
+ offset++;
+ }
+
+ // Stop bit
+ if (!MATCH_MARK(results->rawbuf[offset], LG_BIT_MARK)) return false ;
+
+ // Success
+ results->bits = LG_BITS;
+ results->value = data;
+ results->decode_type = LG;
+ return true;
+}
+#endif
+
+//+=============================================================================
+#if SEND_LG
+void IRsend::sendLG (unsigned long data, int nbits)
+{
+ // Set IR carrier frequency
+ enableIROut(38);
+
+ // Header
+ mark(LG_HDR_MARK);
+ space(LG_HDR_SPACE);
+ mark(LG_BIT_MARK);
+
+ // Data
+ for (unsigned long mask = 1UL << (nbits - 1); mask; mask >>= 1) {
+ if (data & mask) {
+ space(LG_ONE_SPACE);
+ mark(LG_BIT_MARK);
+ } else {
+ space(LG_ZERO_SPACE);
+ mark(LG_BIT_MARK);
+ }
+ }
+ space(0); // Always end with the LED off
+}
+#endif
+