Repository navigation
fix(wake): deep-off Roku TVs wake instead of receiving PowerOff - #22
Merged
Merged
Conversation
resolvePowerPresentation treated only standby as wake; ECP powerMode 'poweroff' (deep off, incl. Fast TV Start TVs whose ECP answers while the panel is dark) fell through to PowerOff — a no-op against exactly the TV that needed waking. isLikelyReachable() now joins the wake condition; 3 regression tests added. Verification: ./gradlew :app:assembleDebug :app:testDebugUnitTest — pass (PowerPresentationTest 8/8)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Investigation summary
Wake flow: dock decision (PowerPresentation) -> WoL burst (UDP 9/7, wifi+eth MACs) +
keypress/Home(6s timeout), retry-safe; failures set WAKE_UNAVAILABLE + hint, and the 5s status poller self-heals the chip to Online once the TV answers. That machinery is sound.Bug found
resolvePowerPresentationonly treated standby as "should wake". ECP's deep-off mode (poweroff— including Fast TV Start TVs whose ECP still answers while the panel is off) fell through toPowerOff, dispatching a no-op at exactly the TV the user was trying to wake. The existingRokuPowerMode.isLikelyReachable()flag (false precisely forpoweroff) was never consulted.Fix
Deep-off now joins the wake condition; unknown mode and standby behave as before. 3 regression tests added (deep-off online/offline, displayoff).
Verification
./gradlew :app:assembleDebug :app:testDebugUnitTest — pass; PowerPresentationTest 8/8 green locally.