Irremoteesp8266: Issue decoding

Created on 14 Jun 2017  路  38Comments  路  Source: crankyoldgit/IRremoteESP8266

Version 2.00
Using the example code IRrecvDumpV2.ino

I got this

Encoding : UNKNOWN
Code : B47AF5B7 (34 bits)
Timing[67]:
+9000, -4500 + 650, - 550 + 650, -1650 + 600, - 550
+ 650, - 550 + 600, -1650 + 650, - 550 + 600, -1650
+ 650, -1650 + 650, -1650 + 600, - 550 + 650, -1650
+ 650, -1650 + 650, - 550 + 600, -1650 + 650, -1650
+ 650, - 550 + 650, - 550 + 650, -1650 + 650, - 550
+ 650, - 550 + 650, - 550 + 600, - 550 + 650, - 550
+ 650, - 550 + 650, -1650 + 600, - 550 + 650, -1650
+ 650, -1650 + 650, -1650 + 650, -1650 + 650, -1650
+ 650, -1650 + 600
uint16_t rawData[67] = {9000,4500, 650,550, 650,1650, 600,550, 650,550, 600,1650, 650,550, 600,1650, 650,1650, 65

0,1650, 600,550, 650,1650, 650,1650, 650,550, 600,1650, 650,1650, 650,550, 650,550, 650,1650, 650,550, 650,550, 65
0,550, 600,550, 650,550, 650,550, 650,1650, 600,550, 650,1650, 650,1650, 650,1650, 650,1650, 650,1650, 650,1650, 6
00}; // UNKNOWN B47AF5B7

Using the old code was detected as NEC

bug

All 38 comments

@jorgecis Thanks for the report. I'll look into it.

First thing to note, it's reporting 34bits, where NEC is 32 bits, plus I know a rawData[] length of 67 is correct for 32 bits, thus something is broken.

Hey @jorgecis
Can I get you to try this branch please (https://github.com/markszabo/IRremoteESP8266/tree/issue-243) while we wait for the code review etc and for the next version to be pushed?

I think it should address the issue you're seeing.
Oh, and thanks for adding the extra info in your bug report. It made it much more reproducible and helped track down the bug. :-)

@jorgecis The fix has been submitted, and a new release created. Can you please confirm it addresses your issue? https://github.com/markszabo/IRremoteESP8266/releases/tag/v2.0.1

I flash my esp8266 using the last lib 2.01 and I got the same result.

Thanks for the feedback. I'll try to set up something similar to your config to test it here.
Can you please send me details of what is producing the IR code etc so I can reproduce it?

To made it simple I'm using the code in the example IRrecvDumpV2.ino as it without any change, my hardware is a adafruit esp8266, the only thing connected is a Infrared receiver in the PIN 14.

I using a real remote control (ONKYO) but also I try others remotes and also another esp8222 to send codes, I found that the RC6 was detected.

Part of the debug log is

Attempting NEC decode
Matching MARK 9000 vs 9000. Matching: 136 <= 180 <= 228
Matching SPACE 4500 vs 4500. Matching: 66 <= 90 <= 111
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17

The old library works fine.

Thanks for that. I'll try to have a patch for you to test in a few mins. It will give me some more debug information.
In the meantime, can you please try commenting out lines 164-166 in ir_NEC.cpp, and try it again?
I think that should work, but I want to figure out the actual problem. I think the gap value isn't correct or working as I expect it to.

Yes, If I comment those lines the code was detected

Encoding : NEC
Code : 4BB640BF (32 bits)
Timing[67]:
+9000, -4500 + 650, - 550 + 600, -1650 + 600, - 550
+ 600, - 550 + 600, -1650 + 650, - 550 + 600, -1650
+ 650, -1650 + 650, -1650 + 650, - 550 + 600, -1650
+ 650, -1650 + 650, - 550 + 600, -1650 + 600, -1650
+ 650, - 550 + 600, - 550 + 600, -1650 + 600, - 550
+ 600, - 550 + 600, - 550 + 600, - 550 + 600, - 550
+ 600, - 550 + 600, -1650 + 650, - 550 + 600, -1650
+ 600, -1650 + 650, -1650 + 650, -1650 + 650, -1650
+ 600, -1650 + 650
uint16_t rawData[67] = {9000,4500, 650,550, 600,1650, 600,550, 600,550, 600,1650, 650,550, 600,1650, 650,1650, 650,1650, 650,550, 600,1650, 650,1650, 650,550, 600,1650, 600,1650, 650,550, 600,550, 600,1650, 600,550, 600,550, 600,550, 600,550, 600,550, 600,550, 600,1650, 650,550, 600,1650, 600,1650, 650,1650, 650,1650, 650,1650, 600,1650, 650}; // NEC 4BB640BF
uint32_t address = 0x6DD2;
uint32_t command = 0x2;
uint64_t data = 0x4BB640BF;

Can you try downloading this branch (https://github.com/markszabo/IRremoteESP8266/tree/issue-243) and try it out for me please?
It should give me the debug output (on serial) that I need to calculate the correct value for the NEC-like remote you have, and possibly show me what is going wrong etc.

I'm looking for the debug lines like:

Matching ATLEAST 65500 vs 21940. Matching 1310 >= 225 min(329, 225)

Please include relevant debug lines around it etc.

I think that maybe the problem is the rawlen is base 0

if (offset <= results->rawlen - 1 &&

I'll try the code in your branch

I think it is correct. re: offset <= results->rawlen - 1
Plus, it would skip the gap test _earlier_ and then wouldn't be causing the problem.
I think the problem is there is a repeat code being sent soon after the NEC command. A number of protocols (e.g. Sherwood) do this. It may be throwing off the length as it is being included in the captured data. I believe the issue is the wrong inter-command gap value that it is expecting.

Waiting on your results. And mega thanks for the prompt testing for me.

No problem, but I change the code, the original was offset <= results->rawlen, I think that the -1 is missing.

Ah. yes. You are correct, and I was mis-quoting the wrong code.
So to re-state, I do believe the existing code is correct with respect to rawlen.

  if (offset <= results->rawlen &&
      !matchAtLeast(results->rawbuf[offset], NEC_MIN_GAP))
    return false;

But I'm never 100% certain. :-)

I think the issue lies in NEC_MIN_GAP is probably the wrong value in real-world situations. Hence the extra debug code to work this out.

the function matchAtLeast is never called

Attempting Aiwa RC T501 decode
Attempting Sanyo LC7461 decode
Attempting NEC decode
Matching MARK 9000 vs 9000. Matching: 136 <= 180 <= 228
Matching SPACE 4500 vs 4500. Matching: 66 <= 90 <= 111
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching ATLEAST 0 vs 21940. Matching 0 >= 225 min(329, 225)
Attempting Sony decode
Matching MARK 9000 vs 2400. Matching: 37 <= 180 <= 63
Attempting Mitsubishi decode
Matching MARK 9000 vs 303. Matching: 5 <= 180 <= 11
Attempting RC5 decode
Matching: 41 <= 180 <= 70
Matching: 28 <= 180 <= 47
Matching: 14 <= 180 <= 25
Attempting RC6 decode
Matching MARK 9000 vs 2666. Matching: 41 <= 180 <= 70
Attempting RC-MM decode
Matching MARK 9000 vs 416. Matching: 7 <= 180 <= 13
Attempting Denon decode
Matching MARK 9000 vs 260. Matching: 4 <= 180 <= 10
Matching MARK 9000 vs 263. Matching: 5 <= 180 <= 10
Attempting Panasonic decode
Attempting LG (28-bit) decode
Matching MARK 9000 vs 8000. Matching: 121 <= 180 <= 203
Matching SPACE 4500 vs 4000. Matching: 58 <= 90 <= 98
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching ATLEAST 1650 vs 40000. Matching 33 >= 225 min(600, 225)
Attempting LG (32-bit) decode
Matching MARK 9000 vs 8000. Matching: 121 <= 180 <= 203
Matching SPACE 4500 vs 4000. Matching: 58 <= 90 <= 98
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 550 vs 1690. Matching: 23 <= 11 <= 40
Matching SPACE 550 vs 560. Matching: 6 <= 11 <= 12
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1700 vs 1690. Matching: 23 <= 34 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 650 vs 560. Matching: 9 <= 13 <= 17
Matching SPACE 1650 vs 1690. Matching: 23 <= 33 <= 40
Matching MARK 600 vs 560. Matching: 9 <= 12 <= 17
Matching ATLEAST 0 vs 40000. Matching 0 >= 225 min(600, 225)
Attempting JVC decode
Matching MARK 9000 vs 8400. Matching: 127 <= 180 <= 213
Matching SPACE 4500 vs 4200. Matching: 61 <= 90 <= 103
Matching MARK 650 vs 525. Matching: 9 <= 13 <= 16
Matching SPACE 550 vs 1725. Matching: 24 <= 11 <= 41
Matching SPACE 550 vs 525. Matching: 6 <= 11 <= 11
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1700 vs 1725. Matching: 24 <= 34 <= 41
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 550 vs 1725. Matching: 24 <= 11 <= 41
Matching SPACE 550 vs 525. Matching: 6 <= 11 <= 11
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 550 vs 1725. Matching: 24 <= 11 <= 41
Matching SPACE 550 vs 525. Matching: 6 <= 11 <= 11
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1650 vs 1725. Matching: 24 <= 33 <= 41
Matching MARK 650 vs 525. Matching: 9 <= 13 <= 16
Matching SPACE 550 vs 1725. Matching: 24 <= 11 <= 41
Matching SPACE 550 vs 525. Matching: 6 <= 11 <= 11
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1700 vs 1725. Matching: 24 <= 34 <= 41
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1650 vs 1725. Matching: 24 <= 33 <= 41
Matching MARK 650 vs 525. Matching: 9 <= 13 <= 16
Matching SPACE 1650 vs 1725. Matching: 24 <= 33 <= 41
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 550 vs 1725. Matching: 24 <= 11 <= 41
Matching SPACE 550 vs 525. Matching: 6 <= 11 <= 11
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1700 vs 1725. Matching: 24 <= 34 <= 41
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1650 vs 1725. Matching: 24 <= 33 <= 41
Matching MARK 650 vs 525. Matching: 9 <= 13 <= 16
Matching SPACE 550 vs 1725. Matching: 24 <= 11 <= 41
Matching SPACE 550 vs 525. Matching: 6 <= 11 <= 11
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1700 vs 1725. Matching: 24 <= 34 <= 41
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching SPACE 1650 vs 1725. Matching: 24 <= 33 <= 41
Matching MARK 650 vs 525. Matching: 9 <= 13 <= 16
Matching SPACE 550 vs 1725. Matching: 24 <= 11 <= 41
Matching SPACE 550 vs 525. Matching: 6 <= 11 <= 11
Matching MARK 600 vs 525. Matching: 9 <= 12 <= 16
Matching ATLEAST 550 vs 11400. Matching 11 >= 171 min(171, 225)
Attempting SAMSUNG decode
Matching MARK 9000 vs 4500. Matching: 69 <= 180 <= 116
Attempting Whynter decode
Attempting DISH decode
Matching: 6 <= 180 <= 11
Attempting Sharp decode
Matching MARK 9000 vs 260. Matching: 4 <= 180 <= 10
Attempting Coolix decode
Encoding : UNKNOWN
Code : B47AF5B7 (34 bits)
Timing[67]:
+9000, -4500 + 650, - 550 + 600, -1700 + 600, - 550
+ 600, - 550 + 600, -1650 + 650, - 550 + 600, -1700
+ 600, -1650 + 650, -1650 + 600, - 550 + 600, -1700
+ 600, -1650 + 650, - 550 + 600, -1700 + 600, -1650
+ 650, - 550 + 600, - 550 + 600, -1700 + 600, - 550
+ 600, - 550 + 600, - 550 + 600, - 550 + 600, - 550
+ 600, - 550 + 600, -1650 + 600, - 550 + 600, -1700
+ 600, -1650 + 650, -1650 + 600, -1650 + 650, -1650
+ 650, -1650 + 600
uint16_t rawData[67] = {9000,4500, 650,550, 600,1700, 600,550, 600,550, 600,1650, 650,550, 600,1700, 600,1650, 650,1650, 600,550, 600,1700, 600,1650, 650,550, 600,1700, 600,1650, 650,550, 600,550, 600,1700, 600,550, 600,550, 600,550, 600,550, 600,550, 600,550, 600,1650, 600,550, 600,1700, 600,1650, 650,1650, 600,1650, 650,1650, 650,1650, 600}; // UNKNOWN B47AF5B7

Yes, it is being called.
e.g.

Matching ATLEAST 0 vs 21940. Matching 0 >= 225 min(329, 225)

And .. that's way unexpected. hmmm.

OK just in case if you need it, the value of offset is 68 the same that results->rawlen

Thanks. I'm just uploaded a new commit to _that_ branch. I think I understand what is happening.
I've left the debug info turned on.

Can you let me know if that works? Obviously you'll need to re-download etc etc.

Again, thanks for the quick turnaround. This really helps.

Sorry wrong code, let try again

Phew. I saw the email, and thought "ohes noes, wtfbbq" ;-)

sorry for that,

this is the real result

Matching ATLEAST 0 vs 21940. Matching: 0 >= 225 [min(329, 225)]
Encoding : NEC
Code : 4BB640BF (32 bits)
Timing[67]:
+9000, -4500 + 650, - 550 + 650, -1650 + 600, - 550
+ 650, - 550 + 650, -1650 + 650, - 550 + 600, -1650
+ 650, -1650 + 650, -1650 + 650, - 550 + 600, -1650
+ 650, -1650 + 650, - 550 + 650, -1650 + 600, -1650
+ 650, - 550 + 650, - 550 + 650, -1650 + 600, - 550
+ 650, - 550 + 650, - 550 + 650, - 550 + 600, - 550
+ 650, - 550 + 650, -1650 + 650, - 550 + 600, -1650
+ 650, -1650 + 650, -1650 + 650, -1650 + 600, -1650
+ 650, -1650 + 650
uint16_t rawData[67] = {9000,4500, 650,550, 650,1650, 600,550, 650,550, 650,1650, 650,550, 600,1650, 650,1650, 650,1650, 650,550, 600,1650, 650,1650, 650,550, 650,1650, 600,1650, 650,550, 650,550, 650,1650, 600,550, 650,550, 650,550, 650,550, 600,550, 650,550, 650,1650, 650,550, 600,1650, 650,1650, 650,1650, 650,1650, 600,1650, 650,1650, 650}; // NEC 4BB640BF
uint32_t address = 0x6DD2;
uint32_t command = 0x2;
uint64_t data = 0x4BB640BF;

Huzzah.
It looks like it's working correctly now. I'll clean it up and submit the PR for review.

I have other issues with other protocols and I think is the same function, for example
This is a JVC code

Attempting JVC decode
Matching MARK 7450 vs 8400. Matching: 127 <= 149 <= 213
Matching SPACE 3700 vs 4200. Matching: 61 <= 74 <= 103
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching SPACE 1400 vs 1725. Matching: 24 <= 28 <= 41
Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Matching ATLEAST 1700 vs 11400. Matching: 34 >= 171 [min(171, 225)]
Attempting SAMSUNG decode
Attempting Whynter decode
Attempting DISH decode
Matching: 6 <= 149 <= 11
Attempting Sharp decode
Matching MARK 7450 vs 260. Matching: 4 <= 149 <= 10
Attempting Coolix decode
Encoding : UNKNOWN
Code : FBEE616 (18 bits)
Timing[35]:
+7450, -3700 + 500, -1400 + 500, -1400 + 500, -1400
+ 500, -1400 + 500, - 450 + 500, -1400 + 500, -1400
+ 500, -1400 + 500, - 450 + 500, - 450 + 500, - 450
+ 500, - 450 + 500, -1400 + 500, - 450 + 500, -1400
+ 500, -1400 + 500
uint16_t rawData[35] = {7450,3700, 500,1400, 500,1400, 500,1400, 500,1400, 500,450, 500,1400, 500,1400, 500,1400, 500,450, 500,450, 500,450, 500,450, 500,1400, 500,450, 500,1400, 500,1400, 500}; // UNKNOWN FBEE616

JVC at least I have a remote for.

Ok, just to inform you, If I comment the gap check in the ir_JVC the code is detected

Matching MARK 500 vs 525. Matching: 9 <= 10 <= 16
Encoding : JVC
Code : F70B (16 bits)
Timing[35]:
+7450, -3700 + 500, -1400 + 500, -1400 + 500, -1400
+ 500, -1400 + 500, - 450 + 500, -1400 + 500, -1400
+ 500, -1400 + 500, - 450 + 500, - 450 + 500, - 450
+ 500, - 450 + 500, -1400 + 500, - 450 + 500, -1400
+ 500, -1400 + 500
uint16_t rawData[35] = {7450,3700, 500,1400, 500,1400, 500,1400, 500,1400, 500,450, 500,1400, 500,1400, 500,1400, 500,450, 500,450, 500,450, 500,450, 500,1400, 500,450, 500,1400, 500,1400, 500}; // JVC F70B
uint32_t address = 0xEF;
uint32_t command = 0xD0;
uint64_t data = 0xF70B;

ta.

re: your JVC dump.

Matching ATLEAST 1700 vs 11400. Matching: 34 >= 171 [min(171, 225)]

1700 is an unexpectedly short gap. I think there may be more code in the buffer.

I've half a mind to pull out the gap checking code, but some protocols need it to distinguish from each other.

I think I may have found the root cause.
I think the interrupt code isn't recording the final gap/space correctly. Previously, nothing relied on it.
The odd value you've got for NEC may be an artefact of garbage left in the buffer from previous captures.

Ok, I you need another test let me know

Sure. Can you please change line 135 in ir_JVC.cpp to:
'<' instead of '<='

And let me know if it works. I think you were right with how I'm calculating the end of the buffer.
i.e. your ' - 1' addition earlier.

Ok I did the change,

I have 2 controls, with the first one the gap is there

Attempting JVC decode
Matching MARK 7450 vs 8400. Matching: 127 <= 149 <= 213
Matching SPACE 3650 vs 4200. Matching: 61 <= 73 <= 103
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching ATLEAST 9650 vs 11400. Matching: 193 >= 171 [min(171, 225)]
Encoding : JVC
Code : C085 (16 bits)
Timing[69]:
+7450, -3650 + 550, -1350 + 550, -1350 + 550, - 400
+ 550, - 450 + 550, - 400 + 550, - 400 + 550, - 400
+ 550, - 400 + 550, -1350 + 550, - 400 + 550, - 400
+ 550, - 400 + 550, - 400 + 550, -1350 + 550, - 400
+ 550, -1350 + 550, -9650 + 550, -1350 + 550, -1350
+ 550, - 400 + 550, - 400 + 550, - 400 + 550, - 400
+ 550, - 400 + 550, - 400 + 550, -1350 + 550, - 400
+ 550, - 400 + 550, - 450 + 550, - 400 + 550, -1350
+ 550, - 400 + 550, -1350 + 550
uint16_t rawData[69] = {7450,3650, 550,1350, 550,1350, 550,400, 550,450, 550,400, 550,400, 550,400, 550,400, 550,1350, 550,400, 550,400, 550,400, 550,400, 550,1350, 550,400, 550,1350, 550,9650, 550,1350, 550,1350, 550,400, 550,400, 550,400, 550,400, 550,400, 550,400, 550,1350, 550,400, 550,400, 550,450, 550,400, 550,1350, 550,400, 550,1350, 550}; // JVC C085
uint32_t address = 0x3;
uint32_t command = 0xA1;
uint64_t data = 0xC085;

With the second one nogap but works

Attempting JVC decode
Matching MARK 550 vs 8400. Matching: 127 <= 11 <= 213
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 450 vs 1725. Matching: 24 <= 9 <= 41
Matching SPACE 450 vs 525. Matching: 6 <= 9 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 1350 vs 1725. Matching: 24 <= 27 <= 41
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Matching SPACE 400 vs 1725. Matching: 24 <= 8 <= 41
Matching SPACE 400 vs 525. Matching: 6 <= 8 <= 11
Matching MARK 550 vs 525. Matching: 9 <= 11 <= 16
Encoding : JVC
Code : C03E (16 bits)
Timing[33]:
+ 550, -1350 + 550, -1350 + 550, - 400 + 550, - 400
+ 550, - 400 + 550, - 400 + 550, - 450 + 550, - 400
+ 550, - 400 + 550, - 400 + 550, -1350 + 550, -1350
+ 550, -1350 + 550, -1350 + 550, -1350 + 550, - 400
+ 550
uint16_t rawData[33] = {550,1350, 550,1350, 550,400, 550,400, 550,400, 550,400, 550,450, 550,400, 550,400, 550,400, 550,1350, 550,1350, 550,1350, 550,1350, 550,1350, 550,400, 550}; // JVC (Repeat) C03E
uint32_t address = 0x3;
uint32_t command = 0x7C;
uint64_t data = 0xC03E;

Interesting. The first one (the one with [69] in the timing/rawData) has two codes in it. i.e. It has a repeat code as well.

Thus the gap thing/code is doing it's job. It's detecting a valid break in the message and working out the code is really a JVC code. Great.

Can you please re-download and try that branch again. Just made some more fixes (to all protocols)
i.e. test your NEC/Onkyo and JVC remotes again.
Debug code is turned off. You shouldn't need it on, but I assume you know how to turn it on if things are not working as expected.

With the last change, look like everything is working now, like for example JVC with repeat

Encoding  : JVC
Code      : C018 (16 bits)
Timing[35]: 
     +7400, -3650     + 550, -1350     + 550, -1350     + 550, - 400
     + 550, - 400     + 550, - 400     + 550, - 400     + 550, - 400
     + 550, - 400     + 550, - 400     + 550, - 400     + 550, - 450
     + 550, -1350     + 550, -1350     + 550, - 400     + 550, - 400
     + 550, - 400     + 550
uint16_t  rawData[35] = {7400,3650, 550,1350, 550,1350, 550,400, 550,400, 550,400, 550,400, 550,400, 550,400, 550,400, 550,400, 550,450, 550,1350, 550,1350, 550,400, 550,400, 550,400, 550};  // JVC C018
uint32_t  address = 0x3;
uint32_t  command = 0x18;
uint64_t  data = 0xC018;

Encoding  : JVC (Repeat)
Code      : C018 (16 bits)
Timing[33]: 
     + 550, -1350     + 550, -1350     + 550, - 450     + 550, - 400
     + 550, - 400     + 550, - 400     + 550, - 400     + 550, - 400
     + 550, - 400     + 550, - 450     + 550, - 400     + 550, -1350
     + 550, -1350     + 550, - 400     + 550, - 400     + 550, - 400
     + 550
uint16_t  rawData[33] = {550,1350, 550,1350, 550,450, 550,400, 550,400, 550,400, 550,400, 550,400, 550,400, 550,450, 550,400, 550,1350, 550,1350, 550,400, 550,400, 550,400, 550};  // JVC (Repeat) C018
uint32_t  address = 0x3;
uint32_t  command = 0x18;
uint64_t  data = 0xC018;
#

But for some reason this key is not decode as JVC but other keys in the same remote works

Encoding  : UNKNOWN
Code      : D69318ED (34 bits)
Timing[67]: 
     +7950, -3950     + 600, - 450     + 600, - 450     + 600, - 450
     + 600, - 450     + 600, - 450     + 550, - 450     + 600, - 450
     + 600, -1400     + 600, -1400     + 600, -1400     + 600, -1400
     + 550, -1400     + 600, - 450     + 600, - 450     + 600, - 450
     + 550, -1400     + 600, -1400     + 600, - 450     + 600, -1400
     + 600, - 450     + 600, - 450     + 600, - 450     + 600, - 450
     + 600, - 450     + 600, - 450     + 550, -1400     + 600, - 450
     + 600, -1400     + 600, -1400     + 550, -1400     + 600, -1400
     + 600, -1400     + 600
uint16_t  rawData[67] = {7950,3950, 600,450, 600,450, 600,450, 600,450, 600,450, 550,450, 600,450, 600,1400, 600,1400, 600,1400, 600,1400, 550,1400, 600,450, 600,450, 600,450, 550,1400, 600,1400, 600,450, 600,1400, 600,450, 600,450, 600,450, 600,450, 600,450, 600,450, 550,1400, 600,450, 600,1400, 600,1400, 550,1400, 600,1400, 600,1400, 600};  // UNKNOWN D69318ED

Cool. Not sure about the last one. Looking at it, it doesn't match the JVC spec at all.
Unless there is a 32-bit JVC message variant. I'll do some research, but normally JVC is a 16-bit data protocol from my understanding.

FYI, the code/fix for this has made it into next published release https://github.com/markszabo/IRremoteESP8266/releases/tag/v2.0.2

Marking this issue close, please reopen if you don't believe it is fixed.

@jorgecis FYI, I did some research. I couldn't find any solid reference to a 32bit JVC code. All the official JVC documents I could find all indicated that it was all 16-bit. So that odd button you found. No idea. :-/

Was this page helpful?
0 / 5 - 0 ratings

Related issues

alwashe picture alwashe  路  5Comments

wizkidorg picture wizkidorg  路  7Comments

wahibmichael picture wahibmichael  路  4Comments

jlhavens picture jlhavens  路  7Comments

MehranMazhar picture MehranMazhar  路  5Comments