v0.5.0 — Public API for companion plugins (FCC-Extender integration)
v0.5.0 — FCC-Extender Integration
Public Python API at Plugins.Extensions.FBCChannelSpeedChange.api for companion plugins (FCC-Extender etc.) that want to feed a service reference into the pre-tune pool.
Highlights
- Two entry points, both returning
None:PreTuneSingleChannel(service_ref)— arm or refresh the EXTERNAL pool slotReleaseSingleChannel(service_ref=None)— release the slot (race-safe with optional ref)
- Accepts either an
eServiceReferenceinstance or a canonical DVB broadcast serviceref string ("1:0:<stype>:<sid>:<tsid>:<onid>:<ns>:..."). String input is shape-whitelisted before any SWIG construction. - New
Role.EXTERNALpool slot — capacity 1, never competes with the internal NEXT / PREV / HISTORY predictor. - TTL safety net (
cfg.external_slot_ttl_min, default 5 min) catches the case where the companion plugin's explicit release never lands. evNewProgramInfolistener releases the EXTERNAL slot when the live service changes to the armed ref (covers shortcut-zap paths).- Defense-in-depth: input validation, watchdog isolation (external-caller failures do NOT count toward 3-failure self-disable), rate limiter (100 ms same-ref debounce + 10 distinct refs / sec cap), always-on traceback on exception.
- Forensic diagnostics: caller-frame in
debug_logmode, 60-second stats heartbeat.
Settings UI
- New
External pretune (FCC-Extender)group with three toggles:accept_external_pretune(default True — paired companion plugin just works)external_slot_ttl_min(default 5, limits 1..30)prewarm_descrambler_external(default False, Pay-TV opt-in)
FCC-Extender presence indicatorinjected at Setup-screen open time — reads/var/lib/opkg/status, displaysinstalled (v...)/not detected/status unknown.
Notes
- No new C-binding surface — the EXTERNAL slot reuses the existing
recordService → prepare(9-arg) → start()path proven in v0.4.0 onwards. - Public API designed for and verified against Oberhesse's FCC-Extender (rc1 field-tested 2026-06-21 on the GigaBlue UHD Quad 4K Pro test bench, 60-66 ms median HIT latency vs ~900 ms cold cross-transponder).
- On VU+ boxes the OpenATV FCC system plugin remains the native fast-zap path. The FCC-Extender routes to FCC there.
Full public API reference: docs/api.md.