Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pioneer send support #547

Merged
merged 15 commits into from
Oct 21, 2018
Merged

Conversation

kpalczewski
Copy link
Contributor

pioneer receivers use NEC codes for IR communication.
some codes are 2 NEC codes separated by a long pauze. this PR adds support for sending those codes.

you can find Pioneer codes here:
https://www.pioneerelectronics.com/PUSA/Support/Home-Entertainment-Custom-Install/IR+Codes/A+V+Receivers

@crankyoldgit crankyoldgit self-requested a review October 7, 2018 03:39
Copy link
Owner

@crankyoldgit crankyoldgit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First off, Congratulations on adding a new protocol to the library. It's a big effort. Thanks!!

Sorry for the heaps of comments/suggestions/fixes etc.
I'm just trying to make it as good as we can.

Do you have any rawData lines which records what the protocol looks like? If so, I'll add a decoder routine, and some unit test code etc so we know we can be fairly sure it behaves like we want it to.

David

kNECBits * (kNecBitMarkTicks + kNecOneSpaceTicks) +
kNecBitMarkTicks);

#if (SEND_PIONEER)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick:

#if SEND_PIONEER

kNecBitMarkTicks);

#if (SEND_PIONEER)
// Send a raw NEC(Renesas) formatted message.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix this comment. It's not NEC. ;-)

//
// Args:
// data: The message to be sent.
// nbits: The number of bits of the message to be sent. Typically kNECBits.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix the comment. Not kNECBits.

// Status: STABLE / Known working.
//
// Ref:
// http://www.sbprojects.com/knowledge/ir/nec.php
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ref is for NEC. Pls fix.

// prepare codes
uint64_t NECcode1 = data;
uint64_t NECcode2;
NECcode1 >>= 32; // 1st code
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably be "nbits / 2", not 32.

src/ir_Pioneer.cpp Show resolved Hide resolved

// Constants
// Ref:
// http://www.sbprojects.com/knowledge/ir/nec.php
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not nec.

// P I O O N NN E E R R
// P III OOO N N EEEE EEEE R RR

// NEC originally added from https://github.com/shirriff/Arduino-IRremote/
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not NEC.

src/ir_Pioneer.cpp Outdated Show resolved Hide resolved
0, 0, 38, true, 0, // Repeats are handled later.
33);

// send 2nd NEC code
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similarly you probably can replace the rest of the code/function from here on in with just:

  sendNEC(NECcode2, nbits / 2, repeat);

@crankyoldgit crankyoldgit self-assigned this Oct 7, 2018
@crankyoldgit crankyoldgit added enhancement Hacktoberfest Hacktoberfest participation labels Oct 7, 2018
kpalczewski and others added 6 commits October 9, 2018 21:28
* Simplify the sendPioneer() routine.
* Add encodePioneer().
* Add decodePioneer().
* Unit tests for sendPioneer() & decodePioneer().
* Code style/lint cleanups.
No real change to functionality.
@crankyoldgit
Copy link
Owner

@kpalczewski I've cleaned up your code, and I verified that it produced the same output as your original PR. However, when I went to https://www.pioneerelectronics.com/PUSA/Support/Home-Entertainment-Custom-Install/IR+Codes/A+V+Receivers and looked at some of the PRONTO/HEX codes they have for the two-code messages for some devices. e.g. Spotify etc. They are not the same as what your/my code produce.

I think you may have incorrectly coded up how the Pioneer protocol works. Can you please capture a rawData[] line for one of these messages that you tried to emulate from the unmodified 2.5.1 release version of the library's IRrecvDumpV2 program? I want to be sure we are correctly emulating the real remote before we merge this into the library.

@kpalczewski
Copy link
Contributor Author

kpalczewski commented Oct 14, 2018

@crankyoldgit thank you for the cleanup.
Here are some RAW data for short and long codes:

VOL+ (short):
Encoding : NEC
Code : 659A50AF (32 bits)
Library : v2.5.1

Raw Timing[67]:

  • 8554, - 4184, + 592, - 472, + 592, - 1524, + 592, - 1524,
  • 592, - 472, + 592, - 472, + 598, - 1520, + 592, - 476,
  • 594, - 1520, + 596, - 1520, + 598, - 472, + 592, - 472,
  • 592, - 1524, + 592, - 1524, + 594, - 472, + 594, - 1524,
  • 592, - 472, + 594, - 476, + 592, - 1520, + 598, - 472,
  • 592, - 1524, + 594, - 470, + 594, - 472, + 596, - 472,
  • 592, - 472, + 592, - 1524, + 592, - 472, + 592, - 1524,
  • 592, - 472, + 594, - 1524, + 598, - 1520, + 594, - 1524,
  • 594, - 1524, + 594

uint16_t rawData[67] = {8554, 4184, 592, 472, 592, 1524, 592, 1524, 592, 472, 592, 472, 598, 1520, 592, 476, 594, 1520, 596, 1520, 598, 472, 592, 472, 592, 1524, 592, 1524, 594, 472, 594, 1524, 592, 472, 594, 476, 592, 1520, 598, 472, 592, 1524, 594, 470, 594, 472, 596, 472, 592, 472, 592, 1524, 592, 472, 592, 1524, 592, 472, 594, 1524, 598, 1520, 594, 1524, 594, 1524, 594}; // NEC 659A50AF
uint32_t address = 0xA6;
uint32_t command = 0xA;
uint64_t data = 0x659A50AF;

VOL- (short):
Encoding : NEC
Code : 659AD02F (32 bits)
Library : v2.5.1

Raw Timing[67]:

  • 8554, - 4184, + 592, - 472, + 596, - 1520, + 596, - 1520,
  • 596, - 472, + 592, - 472, + 592, - 1524, + 592, - 472,
  • 596, - 1520, + 596, - 1520, + 592, - 476, + 592, - 472,
  • 592, - 1524, + 592, - 1524, + 592, - 472, + 594, - 1524,
  • 592, - 472, + 596, - 1520, + 596, - 1520, + 598, - 470,
  • 594, - 1520, + 598, - 472, + 594, - 470, + 594, - 472,
  • 596, - 472, + 592, - 472, + 592, - 472, + 596, - 1520,
  • 592, - 476, + 594, - 1520, + 596, - 1520, + 596, - 1520,
  • 598, - 1520, + 598

uint16_t rawData[67] = {8554, 4184, 592, 472, 596, 1520, 596, 1520, 596, 472, 592, 472, 592, 1524, 592, 472, 596, 1520, 596, 1520, 592, 476, 592, 472, 592, 1524, 592, 1524, 592, 472, 594, 1524, 592, 472, 596, 1520, 596, 1520, 598, 470, 594, 1520, 598, 472, 594, 470, 594, 472, 596, 472, 592, 472, 592, 472, 596, 1520, 592, 476, 594, 1520, 596, 1520, 596, 1520, 598, 1520, 598}; // NEC 659AD02F
uint32_t address = 0xA6;
uint32_t command = 0xB;
uint64_t data = 0x659AD02F;

POWER (long):
Encoding : NEC
Code : 659A857A (32 bits)
Library : v2.5.1

Raw Timing[135]:

  • 8550, - 4188, + 592, - 472, + 592, - 1524, + 592, - 1524,
  • 592, - 472, + 594, - 470, + 594, - 1524, + 592, - 476,
  • 592, - 1524, + 594, - 1524, + 592, - 472, + 592, - 472,
  • 592, - 1524, + 592, - 1524, + 592, - 472, + 592, - 1524,
  • 592, - 476, + 592, - 1524, + 592, - 472, + 592, - 472,
  • 592, - 476, + 592, - 472, + 592, - 1524, + 592, - 472,
  • 592, - 1524, + 592, - 476, + 588, - 1524, + 592, - 1524,
  • 592, - 1524, + 592, - 1526, + 592, - 476, + 592, - 1524,
  • 592, - 472, + 594, - 25284, + 8552, - 4184, + 592, - 1524,
  • 592, - 1524, + 592, - 1524, + 592, - 1524, + 592, - 472,
  • 592, - 1524, + 592, - 472, + 592, - 1524, + 592, - 476,
  • 592, - 472, + 592, - 472, + 594, - 476, + 588, - 1528,
  • 588, - 476, + 592, - 1524, + 594, - 470, + 592, - 476,
  • 588, - 476, + 592, - 1524, + 594, - 1524, + 592, - 1526,
  • 592, - 1524, + 594, - 472, + 592, - 1524, + 592, - 1524,
  • 592, - 1524, + 592, - 472, + 592, - 472, + 592, - 476,
  • 592, - 472, + 592, - 1524, + 592, - 472, + 594

uint16_t rawData[135] = {8550, 4188, 592, 472, 592, 1524, 592, 1524, 592, 472, 594, 470, 594, 1524, 592, 476, 592, 1524, 594, 1524, 592, 472, 592, 472, 592, 1524, 592, 1524, 592, 472, 592, 1524, 592, 476, 592, 1524, 592, 472, 592, 472, 592, 476, 592, 472, 592, 1524, 592, 472, 592, 1524, 592, 476, 588, 1524, 592, 1524, 592, 1524, 592, 1526, 592, 476, 592, 1524, 592, 472, 594, 25284, 8552, 4184, 592, 1524, 592, 1524, 592, 1524, 592, 1524, 592, 472, 592, 1524, 592, 472, 592, 1524, 592, 476, 592, 472, 592, 472, 594, 476, 588, 1528, 588, 476, 592, 1524, 594, 470, 592, 476, 588, 476, 592, 1524, 594, 1524, 592, 1526, 592, 1524, 594, 472, 592, 1524, 592, 1524, 592, 1524, 592, 472, 592, 472, 592, 476, 592, 472, 592, 1524, 592, 472, 594}; // NEC 659A857A
uint32_t address = 0xA6;
uint32_t command = 0xA1;
uint64_t data = 0x659A857A;

SOURCE (long):
Encoding : NEC
Code : 659A05FA (32 bits)
Library : v2.5.1

Raw Timing[135]:

  • 8552, - 4184, + 596, - 472, + 592, - 1524, + 594, - 1524,
  • 594, - 472, + 592, - 472, + 598, - 1520, + 596, - 472,
  • 594, - 1524, + 592, - 1524, + 592, - 472, + 592, - 472,
  • 596, - 1520, + 598, - 1520, + 596, - 472, + 592, - 1524,
  • 592, - 472, + 592, - 476, + 592, - 472, + 592, - 472,
  • 592, - 476, + 592, - 472, + 592, - 1524, + 592, - 472,
  • 598, - 1518, + 598, - 1520, + 596, - 1520, + 596, - 1520,
  • 596, - 1520, + 596, - 1520, + 596, - 472, + 592, - 1524,
  • 592, - 472, + 598, - 25282, + 8552, - 4182, + 596, - 1520,
  • 598, - 1518, + 598, - 1520, + 596, - 1520, + 596, - 472,
  • 592, - 1524, + 592, - 472, + 598, - 1520, + 596, - 472,
  • 594, - 472, + 592, - 472, + 596, - 472, + 592, - 1524,
  • 592, - 472, + 592, - 1524, + 596, - 472, + 594, - 1520,
  • 596, - 1520, + 598, - 472, + 592, - 472, + 598, - 472,
  • 594, - 1522, + 594, - 472, + 592, - 1524, + 594, - 472,
  • 596, - 472, + 594, - 1524, + 592, - 1524, + 592, - 1524,
  • 592, - 472, + 594, - 1524, + 598, - 472, + 592

uint16_t rawData[135] = {8552, 4184, 596, 472, 592, 1524, 594, 1524, 594, 472, 592, 472, 598, 1520, 596, 472, 594, 1524, 592, 1524, 592, 472, 592, 472, 596, 1520, 598, 1520, 596, 472, 592, 1524, 592, 472, 592, 476, 592, 472, 592, 472, 592, 476, 592, 472, 592, 1524, 592, 472, 598, 1518, 598, 1520, 596, 1520, 596, 1520, 596, 1520, 596, 1520, 596, 472, 592, 1524, 592, 472, 598, 25282, 8552, 4182, 596, 1520, 598, 1518, 598, 1520, 596, 1520, 596, 472, 592, 1524, 592, 472, 598, 1520, 596, 472, 594, 472, 592, 472, 596, 472, 592, 1524, 592, 472, 592, 1524, 596, 472, 594, 1520, 596, 1520, 598, 472, 592, 472, 598, 472, 594, 1522, 594, 472, 592, 1524, 594, 472, 596, 472, 594, 1524, 592, 1524, 592, 1524, 592, 472, 594, 1524, 598, 472, 592}; // NEC 659A05FA
uint32_t address = 0xA6;
uint32_t command = 0xA0;
uint64_t data = 0x659A05FA;

@crankyoldgit
Copy link
Owner

@kpalczewski Thanks for that. That's excellent data. Exactly what I needed/wanted.
I'll know in a few minutes when I build some test cases out of that data, but I'm fairly sure the data you've provided matches up with the data on the pioneer web page. i.e. The protocol is slightly/subtly different from what you had coded up.

* Remove inter-segment protocol message.
* Add better address/command decoding to encode/decode routines.
* Unit tests based on real example messages.
@crankyoldgit
Copy link
Owner

@kpalczewski I was correct. We had the protocol slightly wrong. There is no "middle" bit. It's just two NEC messages back to back.

Anyway. I've pushed a commit that corrects that. If you test IRrecvDumpV2 from your branch/fork after you git pull it should decode the long messages as Pioneer. The short ones will still decode as NEC, because that's what they are. The encodePioneer() function will also use the address and command values from that decode AND the short hex commands from the Pioneer's website and produce a 64bit Pioneer code for you.

@crankyoldgit
Copy link
Owner

crankyoldgit commented Oct 14, 2018

As I've added significant code to this, I'll have someone else do a code review as well.

@crankyoldgit crankyoldgit requested a review from pintomax October 15, 2018 15:39
@kpalczewski
Copy link
Contributor Author

I tried to send Pioneer code:
irsend.sendPioneer(0x659A857AF50A3DC2, 64, 0);

but the result wan't properly recognized.
The 2 NEC spacer is different:

  • 592, - 40056,
    and it should be:
  • 598, - 25282,

also, the second NEC codes are all 0s.

Here's the full output of the send code by esp8266:
Timestamp : 000015.029
Encoding : NEC
Code : 659A857A (32 bits)
Library : v2.5.1

Raw Timing[135]:

  • 9018, - 4438, + 622, - 510, + 618, - 1628, + 592, - 1654,
  • 618, - 510, + 618, - 506, + 592, - 1652, + 594, - 536,
  • 594, - 1652, + 592, - 1654, + 594, - 532, + 592, - 536,
  • 618, - 1628, + 592, - 1652, + 594, - 536, + 594, - 1654,
  • 618, - 506, + 596, - 1650, + 598, - 532, + 592, - 532,
  • 594, - 536, + 594, - 532, + 592, - 1654, + 592, - 538,
  • 592, - 1654, + 618, - 506, + 592, - 1654, + 592, - 1654,
  • 596, - 1650, + 596, - 1654, + 594, - 532, + 592, - 1654,
  • 592, - 540, + 592, - 40056, + 9014, - 4434, + 596, - 532,
  • 618, - 506, + 596, - 532, + 596, - 528, + 592, - 532,
  • 618, - 506, + 596, - 532, + 618, - 506, + 592, - 538,
  • 592, - 532, + 594, - 536, + 594, - 532, + 592, - 532,
  • 592, - 536, + 620, - 506, + 594, - 536, + 620, - 506,
  • 598, - 532, + 592, - 532, + 594, - 536, + 594, - 532,
  • 618, - 510, + 594, - 530, + 592, - 532, + 592, - 536,
  • 592, - 532, + 618, - 512, + 592, - 532, + 618, - 510,
  • 592, - 532, + 592, - 532, + 596, - 532, + 592

uint16_t rawData[135] = {9018, 4438, 622, 510, 618, 1628, 592, 1654, 618, 510, 618, 506, 592, 1652, 594, 536, 594, 1652, 592, 1654, 594, 532, 592, 536, 618, 1628, 592, 1652, 594, 536, 594, 1654, 618, 506, 596, 1650, 598, 532, 592, 532, 594, 536, 594, 532, 592, 1654, 592, 538, 592, 1654, 618, 506, 592, 1654, 592, 1654, 596, 1650, 596, 1654, 594, 532, 592, 1654, 592, 540, 592, 40056, 9014, 4434, 596, 532, 618, 506, 596, 532, 596, 528, 592, 532, 618, 506, 596, 532, 618, 506, 592, 538, 592, 532, 594, 536, 594, 532, 592, 532, 592, 536, 620, 506, 594, 536, 620, 506, 598, 532, 592, 532, 594, 536, 594, 532, 618, 510, 594, 530, 592, 532, 592, 536, 592, 532, 618, 512, 592, 532, 618, 510, 592, 532, 592, 532, 596, 532, 592}; // NEC 659A857A
uint32_t address = 0xA6;
uint32_t command = 0xA1;
uint64_t data = 0x659A857A;

when I use my remote, it's properly recognized:
Timestamp : 000203.041
Encoding : PIONEER
Code : 659A857AF50A3DC2 (64 bits)
Library : v2.5.1

Raw Timing[135]:

  • 8556, - 4180, + 598, - 472, + 594, - 1524, + 592, - 1520,
  • 596, - 472, + 592, - 472, + 594, - 1524, + 592, - 472,
  • 592, - 1524, + 592, - 1524, + 594, - 472, + 594, - 476,
  • 592, - 1522, + 596, - 1520, + 592, - 476, + 594, - 1520,
  • 596, - 472, + 592, - 1524, + 592, - 472, + 592, - 472,
  • 594, - 476, + 588, - 476, + 592, - 1524, + 594, - 472,
  • 592, - 1524, + 594, - 472, + 594, - 1524, + 594, - 1524,
  • 592, - 1524, + 594, - 1524, + 594, - 472, + 592, - 1524,
  • 592, - 472, + 594, - 25286, + 8556, - 4186, + 588, - 1524,
  • 594, - 1524, + 594, - 1524, + 592, - 1524, + 594, - 476,
  • 588, - 1524, + 594, - 476, + 592, - 1524, + 594, - 472,
  • 592, - 472, + 594, - 474, + 588, - 476, + 592, - 1524,
  • 594, - 472, + 592, - 1524, + 594, - 470, + 594, - 472,
  • 592, - 476, + 588, - 1524, + 592, - 1524, + 594, - 1524,
  • 592, - 1524, + 592, - 476, + 594, - 1520, + 594, - 1524,
  • 592, - 1524, + 594, - 476, + 594, - 472, + 592, - 472,
  • 592, - 476, + 588, - 1524, + 592, - 476, + 592

uint16_t rawData[135] = {8556, 4180, 598, 472, 594, 1524, 592, 1520, 596, 472, 592, 472, 594, 1524, 592, 472, 592, 1524, 592, 1524, 594, 472, 594, 476, 592, 1522, 596, 1520, 592, 476, 594, 1520, 596, 472, 592, 1524, 592, 472, 592, 472, 594, 476, 588, 476, 592, 1524, 594, 472, 592, 1524, 594, 472, 594, 1524, 594, 1524, 592, 1524, 594, 1524, 594, 472, 592, 1524, 592, 472, 594, 25286, 8556, 4186, 588, 1524, 594, 1524, 594, 1524, 592, 1524, 594, 476, 588, 1524, 594, 476, 592, 1524, 594, 472, 592, 472, 594, 474, 588, 476, 592, 1524, 594, 472, 592, 1524, 594, 470, 594, 472, 592, 476, 588, 1524, 592, 1524, 594, 1524, 592, 1524, 592, 476, 594, 1520, 594, 1524, 592, 1524, 594, 476, 594, 472, 592, 472, 592, 476, 588, 1524, 592, 476, 592}; // PIONEER 659A857AF50A3DC2
uint32_t address = 0xA6A1;
uint32_t command = 0xAFBC;
uint64_t data = 0x659A857AF50A3DC2;

@crankyoldgit
Copy link
Owner

@kpalczewski Thanks for that feedback. I'll take a look and try to see what might be causing it to misbehave.

@crankyoldgit
Copy link
Owner

@kpalczewski I tried the irsend.sendPioneer(0x659A857AF50A3DC2, 64, 0); you suggested, and my testing (via unit tests only) seems to indicate it is working as expected. i.e. The second half isn't all zeros.
You can see that clearly here:
545089a#diff-e04812f13f3ef2304b3e794d63eec982R131

Perhaps try irsend.sendPioneer(0x659A857AF50A3DC2ULL, 64, 0); instead? That should ensure the compiler sees the hex code as a 64 bit value. ULL means unsigned long long. Note: You shouldn't need to specify the ,64, 0 bit either. I would have expected the first half of the message to be zeros, not the second if it was using a 32bit value instead of 64bit. So I don't expect it to work. But it's worth a shot.

Maybe wipe all the *.o files and compile/upload again? Or can include the entire source code for the simplest send example that causes it?

@kpalczewski
Copy link
Contributor Author

@crankyoldgit Apparently Arduino IDE 1.8.6 on Windows 7 compiles this line differently:
sendNEC(data & ((1UL << (nbits / 2)) - 1), nbits / 2, repeat);
this sends 0, because the value calculated is 0.

sendNEC(data & ((0xFFFFFFFF, nbits / 2, repeat);
this sends proper code. I guess 0xFF isn't very elegant.

Even though the space between the codes is 40056 rather than 25286 (value from the remote), the Pioneer receiver properly recognizes the codes.

@crankyoldgit
Copy link
Owner

Yep. I see my mistake now. And why the unit tests pass and why it fails on the arduino.
Fix coming soon.

i.e. UL on x86/linux is 64 bit. On Arduino, it's 32bit. Force 64bit.
@crankyoldgit
Copy link
Owner

@kpalczewski Can you try it after that latest patch? That should fix it. Thanks again for finding the root cause of the problem.

@kpalczewski
Copy link
Contributor Author

the pleasure is all mine.
The code works, all NEC codes are send properly, the receiver recognizes them.

@kpalczewski kpalczewski reopened this Oct 19, 2018
@crankyoldgit
Copy link
Owner

Excellent. Assuming no further problems this will be merged in to the master branch within 2 days.
I'll probably make a new official release shortly after that barring any emergencies.

@crankyoldgit
Copy link
Owner

It's 7 days since I requested a review by someone else. No negative feedback. So merging.

@crankyoldgit crankyoldgit merged commit 75c7fe3 into crankyoldgit:master Oct 21, 2018
crankyoldgit added a commit that referenced this pull request Oct 21, 2018
**[Bug Fixes]**
- Add missing send() method to IRPanasonicAC class. (#545)
- Add missing sendWhirlpoolAC() to IRMQTTServer.ino (#558)

**[Features]**
- Add IR receiving support to IRMQTTServer. (#543)
- Pioneer support (#547)
- Add support for a second LG protocol variant. (#552)
- Support for short Panasonic A/C messages. (#553)
- Add support for Panasonic CKP series A/Cs. (#554)
- Experimental timer/clock support for Panasonic A/Cs. (#546)
- Add Made With Magic (MWM) support (#557)

**[Misc]**
- Grammar and typo fixes (#541, #549)
- Increase Panasonic A/C message tolerances. (#542)
- Added command mode2_decode in tools/ (#557)
- General code style cleanup (#560)
@crankyoldgit crankyoldgit mentioned this pull request Oct 21, 2018
crankyoldgit added a commit that referenced this pull request Oct 21, 2018
**[Bug Fixes]**
- Add missing send() method to IRPanasonicAC class. (#545)
- Add missing sendWhirlpoolAC() to IRMQTTServer.ino (#558)

**[Features]**
- Add IR receiving support to IRMQTTServer. (#543)
- Pioneer support (#547)
- Add support for a second LG protocol variant. (#552)
- Support for short Panasonic A/C messages. (#553)
- Add support for Panasonic CKP series A/Cs. (#554)
- Experimental timer/clock support for Panasonic A/Cs. (#546)
- Add Made With Magic (MWM) support (#557)

**[Misc]**
- Grammar and typo fixes (#541, #549)
- Increase Panasonic A/C message tolerances. (#542)
- Added command mode2_decode in tools/ (#557)
- General code style cleanup (#560)
@crankyoldgit
Copy link
Owner

This is now live in the new v2.5.2 release of the library.

@kpalczewski kpalczewski deleted the PioneerSendSupport branch October 23, 2018 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Hacktoberfest Hacktoberfest participation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants