CC:Tweaked's parallel.waitForAny drops events when a coroutine's filter doesn't match. The old Network-listener processed commands inline, causing it to yield with filter 'task_complete' during peripheral calls (pushItems, list, etc). Any modem_message arriving during that window was consumed by the scheduler and lost. Split into two coroutines: - Network-capture: only ever yields for 'modem_message', inserts into a shared networkQueue table, queues 'network_queued' event - Network-processor: drains the queue and runs all handler logic, safe to yield for peripheral calls without losing messages This fixes the ~80% message loss rate on dispense requests.
40 KiB
40 KiB