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.
Dependents: Lilnija_29012017 NucleoF042K6_IRReceiver
ir_Panasonic.cpp
00001 #include "IRremote.h" 00002 #include "IRremoteInt.h" 00003 00004 //============================================================================== 00005 // PPPP AAA N N AAA SSSS OOO N N IIIII CCCC 00006 // P P A A NN N A A S O O NN N I C 00007 // PPPP AAAAA N N N AAAAA SSS O O N N N I C 00008 // P A A N NN A A S O O N NN I C 00009 // P A A N N A A SSSS OOO N N IIIII CCCC 00010 //============================================================================== 00011 00012 #define PANASONIC_BITS 48 00013 #define PANASONIC_HDR_MARK 3502 00014 #define PANASONIC_HDR_SPACE 1750 00015 #define PANASONIC_BIT_MARK 502 00016 #define PANASONIC_ONE_SPACE 1244 00017 #define PANASONIC_ZERO_SPACE 400 00018 00019 //+============================================================================= 00020 #if SEND_PANASONIC 00021 void IRsend::sendPanasonic (unsigned int address, unsigned long data) 00022 { 00023 // Set IR carrier frequency 00024 enableIROut(35); 00025 00026 // Header 00027 mark(PANASONIC_HDR_MARK); 00028 space(PANASONIC_HDR_SPACE); 00029 00030 // Address 00031 for (unsigned long mask = 1UL << (16 - 1); mask; mask >>= 1) { 00032 mark(PANASONIC_BIT_MARK); 00033 if (address & mask) space(PANASONIC_ONE_SPACE) ; 00034 else space(PANASONIC_ZERO_SPACE) ; 00035 } 00036 00037 // Data 00038 for (unsigned long mask = 1UL << (32 - 1); mask; mask >>= 1) { 00039 mark(PANASONIC_BIT_MARK); 00040 if (data & mask) space(PANASONIC_ONE_SPACE) ; 00041 else space(PANASONIC_ZERO_SPACE) ; 00042 } 00043 00044 // Footer 00045 mark(PANASONIC_BIT_MARK); 00046 space(0); // Always end with the LED off 00047 } 00048 #endif 00049 00050 //+============================================================================= 00051 #if DECODE_PANASONIC 00052 bool IRrecv::decodePanasonic (decode_results *results) 00053 { 00054 unsigned long long data = 0; 00055 int offset = 1; 00056 00057 if (!MATCH_MARK(results->rawbuf[offset++], PANASONIC_HDR_MARK )) return false ; 00058 if (!MATCH_MARK(results->rawbuf[offset++], PANASONIC_HDR_SPACE)) return false ; 00059 00060 // decode address 00061 for (int i = 0; i < PANASONIC_BITS; i++) { 00062 if (!MATCH_MARK(results->rawbuf[offset++], PANASONIC_BIT_MARK)) return false ; 00063 00064 if (MATCH_SPACE(results->rawbuf[offset],PANASONIC_ONE_SPACE )) data = (data << 1) | 1 ; 00065 else if (MATCH_SPACE(results->rawbuf[offset],PANASONIC_ZERO_SPACE)) data = (data << 1) | 0 ; 00066 else return false ; 00067 offset++; 00068 } 00069 00070 results->value = (unsigned long)data; 00071 results->address = (unsigned int)(data >> 32); 00072 results->decode_type = PANASONIC; 00073 results->bits = PANASONIC_BITS; 00074 00075 return true; 00076 } 00077 #endif 00078
Generated on Tue Jul 12 2022 18:56:50 by
