adafruit / adafruit/Adafruit_CircuitPython_IRRemote

buffering issue with final NECRepeatIRMessage in NonblockingGenericDecode read method

Open
#70 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
29
Forks
31
PR merge metrics
No merged PRs in 30d

Description

In running the irremote_nonblocking.py (I modified it to use a .5 second heartbeat) I see the following. If you notice, holding down the key on the IR remote sends a code followed by a number of NECRepeatIRMessage. However, I can stop pressing on a key, and wait a couple seconds and press a different key, and out pops one last NECRepeatIRMessage before the next decoded key.

I suspect that the pulse buffer has one last repeat message that it's received but doesn't provide until the something else arrives in the pulse buffer to flush it out. In testing it seems like virtually every key in my remote generates at least one NECRepeatIRMessage, but it doesn't arrive until the next key is pressed, possibly minutes later.

`t=8.02 Heartbeat
t=8.06 New Message
Heard 67 Pulses: (8927, 4487, 546, 606, 524, 576, 551, 576, 521, 606, 524, 576, 551, 575, 521, 583, 547, 576, 549, 1704, 525, 1702, 521, 1706, 551, 1703, 523, 1681, 544, 1704, 550, 1679, 549, 1679, 546, 580, 548, 1678, 546, 1681, 575, 550, 548, 579, 550, 549, 577, 1676, 575, 526, 600, 1653, 573, 527, 576, 550, 549, 1679, 576, 1677, 549, 1677, 549, 578, 574, 1652, 549)
Decoded: (255, 0, 157, 98)
----------------------------
t=8.16 New Message
Heard 3 Pulses: (8931, 2256, 549)
NEC repeat!
----------------------------
t=8.26 New Message
Heard 3 Pulses: (8929, 2283, 527)
NEC repeat!
----------------------------
t=8.37 New Message
Heard 3 Pulses: (8934, 2254, 549)
NEC repeat!
----------------------------
t=8.48 New Message
Heard 3 Pulses: (8929, 2257, 548)
NEC repeat!
----------------------------
t=8.52 Heartbeat
t=8.59 New Message
Heard 3 Pulses: (8929, 2256, 548)
NEC repeat!
----------------------------
t=8.69 New Message
Heard 3 Pulses: (8931, 2256, 549)
NEC repeat!
----------------------------
t=8.8 New Message
Heard 3 Pulses: (8932, 2255, 549)
NEC repeat!
----------------------------
t=8.91 New Message
Heard 3 Pulses: (8931, 2255, 549)
NEC repeat!
----------------------------
t=9.02 Heartbeat
t=9.52 Heartbeat
t=10 Heartbeat
t=10.5 Heartbeat
t=10.6 New Message
Heard 3 Pulses: (8905, 2306, 529)
NEC repeat!
----------------------------
t=10.7 New Message
Heard 67 Pulses: (8932, 4484, 522, 630, 525, 575, 552, 575, 498, 628, 526, 574, 552, 575, 519, 608, 525, 575, 550, 1703, 525, 1701, 497, 1730, 552, 1701, 525, 1702, 522, 1705, 550, 1703, 525, 1702, 521, 583, 546, 1680, 546, 1704, 550, 551, 548, 578, 550, 551, 574, 1680, 547, 551, 577, 1679, 547, 551, 599, 526, 550, 1680, 575, 1677, 574, 1652, 549, 578, 550, 1675, 574)
Decoded: (255, 0, 157, 98)
----------------------------
`

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with irremote_nonblocking.py and the NonblockingGenericDecode read method, then reproduce the reported sequence using the .5 second heartbeat and inspect when the pulse buffer is read or flushed. Done means a final NECRepeatIRMessage is delivered after the key is released rather than being delayed until another key is pressed.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
embedded-iot
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.