Private
Public Access
Release 0.13.0
This commit is contained in:
1 parent
7f6eeab39e
commit
c0d891b372
49 files changed
+1523
-478
No files matched your search
@@ -12,6 +12,9 @@ Formatting must preserve include order (`SortIncludes: Never`).
|
||||
| service_calibration.h | Bounded calibration lease, proposals, profiles, model discovery |
|
||||
| service_status.h | Read-only status serialization |
|
||||
| capture_loop.h | Scheduler, histogram acquisition, missing-data recovery and output |
|
||||
| receiver_output.h | Main asynchronous connection, transaction matching and frame coalescing |
|
||||
| atomic_file.h | Durable preference replacement and explicit commit outcomes |
|
||||
| service_context.h / runtime_context.h | Capture, receiver/layout and calibration session ownership |
|
||||
| receiver_stream.h | Independent, nonblocking receiver LED subscription |
|
||||
| source_bridge.h | Bounded color continuity during source transitions |
|
||||
| handover.h | Exclusive PicCap/histogram capture ownership |
|
||||
@@ -44,3 +47,25 @@ VERSION generates app/package metadata and native/version.h. release.py tests
|
||||
portable logic locally, builds the ARM service and verifies the exact package.
|
||||
Hardware capture and Magic Remote behavior still require a later TV check; a host
|
||||
test is not evidence of LG hardware behavior.
|
||||
|
||||
The main receiver owns a ReceiverOutput context passed explicitly to begin, tick,
|
||||
frame, stop and close. Its lifecycle is Idle -> Connecting -> Login (optional) ->
|
||||
Layout -> Ready, with Failed on transport/protocol errors. Requests use a positive
|
||||
32-bit `tan`, echoed by the receiver, to avoid acknowledging the wrong command.
|
||||
Each tick has a 64 KiB send budget and a 64 KiB read budget; buffered input has an
|
||||
eight-message budget and 2 MiB limit. An ACK can send the newest queued frame in
|
||||
the same tick without resetting that byte budget. There is one pending command
|
||||
and one replaceable frame, not an unbounded queue. Transaction deadlines are three
|
||||
seconds. Shutdown and cancellation release all owned buffers and sockets.
|
||||
|
||||
The source bridge receives CaptureContext explicitly; layout refresh receives
|
||||
ReceiverLayoutContext explicitly. Capture data, continuity, recovery counters and
|
||||
LG handles are grouped separately from receiver transport and calibration session
|
||||
lease/model-query/proposal fields. LG/Luna symbols, persisted calibration and
|
||||
handover ownership still have shared service scope; this refactor reduces globals
|
||||
rather than claiming complete isolation.
|
||||
|
||||
Transaction echo behavior is defined by the official implementations:
|
||||
[Hyperion 2.0.16 JsonAPI](https://github.com/hyperion-project/hyperion.ng/blob/2.0.16/libsrc/api/JsonAPI.cpp)
|
||||
and [HyperHDR HyperAPI](https://github.com/awawa-dev/HyperHDR/blob/master/sources/api/HyperAPI.cpp).
|
||||
This code check does not replace a deployment test against the user's receiver.
|
||||
@@ -157,3 +157,36 @@ checks the IPK's embedded metadata, executable architecture, size and SHA-256.
|
||||
Package timestamps are deterministic. No TV installation, application launch or
|
||||
service restart was performed for this version while the user was watching a film.
|
||||
Live LG capture and physical remote validation remain pending for this release.
|
||||
|
||||
## Version 0.13.0
|
||||
|
||||
The main receiver connection uses nonblocking sockets for connect, login, layout,
|
||||
color commands, matching transaction acknowledgements and clear. The synchronous
|
||||
connector and send/receive loops were removed from production. Unsent frames
|
||||
coalesce and per-tick byte/message budgets and transaction deadlines bound work.
|
||||
Stop cancels an in-progress connection and clears pending output asynchronously.
|
||||
LG capture initialization itself still depends on synchronous vendor APIs.
|
||||
|
||||
Receiver, calibration and PicCap preferences share a private atomic writer with
|
||||
unique temporary files, partial/EINTR write handling, file and directory sync,
|
||||
rename, symlink rejection and explicit post-commit durability outcomes. Failure
|
||||
before rename preserves the previous file; failure syncing the directory after
|
||||
commit is logged as uncertain durability rather than incorrectly claiming rollback.
|
||||
|
||||
Protocol tests cover fragmented, truncated, malformed, oversized and embedded-NUL
|
||||
responses, invalid types, stale transaction IDs, send backpressure, deadlines and
|
||||
disconnects. A deterministic 5000-input parser mutation test supplements the fixed
|
||||
cases. ASan/UBSan checks include protocol, file replacement, output and a simulated
|
||||
full service lifecycle. The latter verifies Start/Stop during connect and responsive
|
||||
Status/Stop while an ACK is delayed, with a fake LG capture implementation.
|
||||
|
||||
Capture, receiver/layout and calibration session state have explicit contexts;
|
||||
bridge and layout-refresh functions receive their contexts directly. Shared LG/Luna
|
||||
and persisted calibration/handover state remain scoped to the service. Generated
|
||||
UI and native versions must match; settings/startup actions are blocked otherwise,
|
||||
while Stop and status remain available. Reload service is an explicit user action,
|
||||
never an automatic restart.
|
||||
|
||||
All host checks and the ARM package verification pass. No TV connection, install,
|
||||
launch or service restart was performed. Real LG capture, flash-filesystem behavior,
|
||||
receiver interoperability and physical remote validation remain pending on the TV.
|
||||
@@ -0,0 +1,12 @@
|
||||
# HyperDRM 0.13.0
|
||||
|
||||
- Keep receiver connect/auth/layout/color/clear operations nonblocking and coalesce unsent frames.
|
||||
- Match transaction acknowledgements and bound work, buffers and deadlines.
|
||||
- Share atomic preference persistence with interrupted-write handling and explicit commit outcomes.
|
||||
- Add malformed-input, backpressure, disconnect, parser-mutation and simulated lifecycle tests.
|
||||
- Group runtime state in capture, receiver/layout and calibration contexts.
|
||||
- Detect app/service version mismatches and provide an explicit Reload service action.
|
||||
|
||||
Validation: host JavaScript, native and Python tests pass, including ASan/UBSan
|
||||
checks. The ARM IPK's embedded versions, architecture, size and SHA-256 match its
|
||||
manifest. This version has not been installed or validated on the TV.
|
||||
Reference in new issue
Block a user