From 42aeaf56ea622581f154a62b6dd118b990c2e8ca Mon Sep 17 00:00:00 2001 From: matze19999 Date: Tue, 6 Oct 2026 18:35:56 +0200 Subject: [PATCH] Add receiver diagnostics and remote PicCap handover --- .gitignore | 2 + HyperDRM.manifest.json | 8 +- ...RM_0.8.1_arm.ipk => HyperDRM_0.9.0_arm.ipk | Bin 1173862 -> 1177866 bytes README.md | 18 ++++- app/app.js | 17 +++-- app/appinfo.json | 2 +- app/index.html | 10 ++- docs/publishing-review.md | 10 +++ native/diagnostics.h | 71 ++++++++++++++++++ native/handover.h | 28 +++++-- native/service.c | 22 ++++-- native/target.h | 27 +++++-- native/test_diagnostics.c | 42 +++++++++++ native/test_handover.c | 33 +++++--- native/test_target.c | 7 +- package/packageinfo.json | 2 +- service/histogram-service | Bin 76764 -> 78228 bytes tests/flatbuffer-proxy.py | 49 ++++++++++++ tests/receiver-ui.test.js | 24 ++++++ 19 files changed, 322 insertions(+), 50 deletions(-) rename HyperDRM_0.8.1_arm.ipk => HyperDRM_0.9.0_arm.ipk (89%) create mode 100644 native/diagnostics.h create mode 100644 native/test_diagnostics.c create mode 100644 tests/flatbuffer-proxy.py create mode 100644 tests/receiver-ui.test.js diff --git a/.gitignore b/.gitignore index e607d12..75c495a 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,5 @@ test-target tests/receiver-proxy.log test-spatial-image + +test-diagnostics diff --git a/HyperDRM.manifest.json b/HyperDRM.manifest.json index 71d85e9..215e00e 100644 --- a/HyperDRM.manifest.json +++ b/HyperDRM.manifest.json @@ -1,15 +1,15 @@ { "id": "org.webosbrew.histogramhyperion", - "version": "0.8.1", + "version": "0.9.0", "type": "web", "title": "HyperDRM", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "iconUri": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/app/icon.png", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM", "rootRequired": true, - "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.8.1_arm.ipk", + "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.9.0_arm.ipk", "ipkHash": { - "sha256": "c5a8125d95eeba517f8efe190de8d5304ec2663768db69552e4ea2f0e0b23cc0" + "sha256": "f9cb0b4035a0b4f527da814ecb0ea1e0c184fc92154f60899b6425c84e0d2d9b" }, - "ipkSize": 1173862 + "ipkSize": 1177866 } diff --git a/HyperDRM_0.8.1_arm.ipk b/HyperDRM_0.9.0_arm.ipk similarity index 89% rename from HyperDRM_0.8.1_arm.ipk rename to HyperDRM_0.9.0_arm.ipk index bf0257b8777c2a3d74b940df0acde5c3ceb0ef03..374788703c1009966d3b1ad1cf2cfd1a1f8c065d 100644 GIT binary patch delta 97746 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�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 diff --git a/README.md b/README.md index cb96f5b..89102be 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,11 @@ DRM playback color output was confirmed on the test TV. Support depends on LG's The 16 histogram samples are independent measurements; interpolation produces smoother transitions without adding independently captured detail. Sample positions are approximate G4 calibration values. Top/bottom bar detection is supported; side bars, arbitrary bar thickness and HDR color calibration remain limited. -Only the own service is modified. Optional Auto PicCap can start and stop the installed PicCap service through its existing API. No Hue, LG library, driver or firmware binaries are included. For histogram initialization, the service temporarily creates LG's developer marker and uses a guardian process to remove its own marker afterward; an existing marker is preserved. +Only the own service is modified. Optional Auto PicCap can configure its receiver endpoint and start and stop the installed PicCap service through its existing API. No Hue, LG library, driver or firmware binaries are included. For histogram initialization, the service temporarily creates LG's developer marker and uses a guardian process to remove its own marker afterward; an existing marker is preserved. ## Installation -The current package is [HyperDRM_0.8.1_arm.ipk](HyperDRM_0.8.1_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow. +The current package is [HyperDRM_0.9.0_arm.ipk](HyperDRM_0.9.0_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow. Elevate the installed own service through Homebrew Channel: @@ -88,7 +88,7 @@ Remote navigation regression tests: `node tests/remote-navigation.test.js`. ## Optional automatic PicCap handover -Version 0.7.0 adds **Auto PicCap**, disabled by default. The switch is available when PicCap is installed. Keep PicCap's own autostart disabled and configure its output for your Hyperion instance. HyperDRM does not change PicCap's configuration or autostart preference. +Version 0.7.0 adds **Auto PicCap**, disabled by default. The switch is available when PicCap is installed. Keep PicCap's own autostart disabled. From 0.9.0, HyperDRM manages PicCap's receiver address, FlatBuffer port and Unix socket setting when automatic handover is enabled; other capture preferences and the autostart preference are preserved. When the session is started, the controller polls LG's active media resources. Two consecutive foreground media-decoder samples without a Secure Video Path resource allow PicCap to start. HyperDRM releases its histogram capture and clears priority 149 first, allowing PicCap's configured input priority to take over. Any `SVP_CPB` resource selects protected playback; missing, stale, malformed, idle or HDMI state selects the conservative HyperDRM fallback. PicCap must confirm that it has stopped before histogram capture resumes. Detection is specific to the tested G4 resource model, not a universal DRM-state API. @@ -108,7 +108,7 @@ Settings are saved in `target.json` inside the own service container and loaded For a receiver requiring authentication, enter its API token. The token file is mode 0600; status only reports whether a token is saved. Leaving the input blank retains it; **Remove saved token** deletes it when saving. A token login happens before requesting the layout or initializing LG capture. JSON TCP traffic is unencrypted, so use a trusted network. Receiver authorization rules are unchanged. -Auto PicCap remains available for the default local receiver at 127.0.0.1/::1:19444. For custom targets, automatic PicCap capture is paused and HyperDRM supplies colors for all playback; the PicCap preference remains saved. PicCap has a separate FlatBuffer endpoint managed by its own app, which HyperDRM does not rewrite. +Auto PicCap uses the selected receiver IP and the separate **PicCap FlatBuffer port** (default 19400), including remote IPv4 receivers and custom ports. Enable the receiver FlatBuffer server. The tested PicCap client supports IPv4 only: local ::1 is mapped to 127.0.0.1 for PicCap, while remote IPv6 keeps histogram capture. API tokens authenticate JSON only; PicCap uses the receiver FlatBuffer protocol. `native/test_target.c` verifies validation, token retention/removal, private persistence and TCP connection/refusal. `tests/receiver-proxy.py` is a test-only relay with synthetic token login and fragmented replies. Local HyperHDR 22.0.0 and a remote relay using a different IP/port were tested on the G4; the relay forwarded real color updates to HyperHDR without changing its configuration. @@ -117,3 +117,13 @@ Auto PicCap remains available for the default local receiver at 127.0.0.1/::1:19 HyperHDR 22's JSON `color` handler ultimately registers only the first RGB triplet as a solid color. Version 0.8.1 uses JSON `image` output for the HyperHDR receiver selection. A cached 160x90 geometry interpolates the calibrated histogram samples into a synthetic color plane; HyperHDR applies its configured LED rectangles to that plane. The payload contains generated colors, not captured or decrypted video frames. HyperHDR's image processing and color calibration affect the resulting LED colors. Select a spatial image mapping mode in HyperHDR; a global single-color mapping mode will still give uniform LEDs. Hyperion retains its original per-LED color-array output. Receiver IP, JSON port, optional token, priority, timeout and reconnection behavior remain shared. Tests cover exact RGB base64 encoding, image command metadata and spatial edge variation. Output must be verified through the receiver's LED stream, not solely a successful command acknowledgment. + +## Diagnostics and connection test (0.9.0) + +Save the receiver settings, then select **Test connection**. The test opens a separate nonblocking JSON connection, logs in with the saved token when present, and requests and validates the LED layout. It sends no colors, clears no priorities and acquires no TV capture. Results include success/failure, validated LED count, elapsed time and an actionable error. A successful test verifies connectivity and layout access, not the physical LEDs or FlatBuffer input. + +The diagnostic line reports service version/root status, capture transition, playback classification, capture recovery count/time, age of the last histogram output and scheduled retry timing. PicCap reports its own connection status; histogram output age is not PicCap frame age. Color calibration, saturation, brightness and smoothing belong in Hyperion/HyperHDR; HyperDRM keeps neutral gains. + +Before PicCap starts, its endpoint is read through getSettings. Matching settings are reused. Otherwise setSettings updates only address, port and unix-socket:false; the official implementation restarts PicCap itself, so the controller checks status rather than issuing another start. Endpoint changes are saved by PicCap and remain after disabling handover. Changing the receiver stops the managed PicCap session before configuring the new endpoint. Settings errors/timeouts stop PicCap before histogram fallback, with a cooldown to avoid rapid restarts. + +Feature tests are native/test_diagnostics.c, native/test_target.c, native/test_handover.c and tests/receiver-ui.test.js. The native tests cover fragmented replies, rejected authentication, invalid layout, refused connection, timeout, custom PicCap endpoint, configuration failure and exclusive capture ownership. Test-only JSON and FlatBuffer relays allow a real receiver to be reached through another IP and ports without changing receiver configuration. diff --git a/app/app.js b/app/app.js index 22960ba..142ecad 100644 --- a/app/app.js +++ b/app/app.js @@ -11,11 +11,15 @@ function call(method,done,data){ } function display(result){ if(result.host && !targetDirty){ - document.getElementById('host').value=result.host;document.getElementById('port').value=result.port;receiver=result.receiver; + document.getElementById('host').value=result.host;document.getElementById('port').value=result.port;document.getElementById('piccapPort').value=result.piccapPort||19400;receiver=result.receiver; document.getElementById('receiver').textContent='Receiver: '+receiver; } document.getElementById('token').placeholder=result.tokenSet?'Saved token (leave blank to keep)':'No token saved'; if(result.endpoint)document.getElementById('endpoint').textContent=result.receiver+' · '+result.endpoint+' · Priority 149 · 10 updates per second'; + var t=result.connectionTest; + if(t)document.getElementById('testResult').textContent='Connection test: '+t.state+(t.state==='Passed'?' · '+t.ledCount+' LEDs · '+t.elapsedMs+' ms':'')+(t.error?' · '+t.error:''); + document.getElementById('testConnection').disabled=!!t && ['Connecting','Sending request','Checking authentication','Reading LED layout'].indexOf(t.state)>=0; + if(result.version)document.getElementById('diagnostics').textContent='Version '+result.version+' · '+(result.uid===0?'Root service':'Service needs root elevation')+' · '+result.captureState+' · Playback: '+result.playbackProtection+' · Capture recoveries: '+result.captureRecoveries+' (last: '+result.lastRecoveryMs+' ms)'+(result.lastOutputAgeMs>=0?' · Last histogram output: '+result.lastOutputAgeMs+' ms ago':'')+(result.retryScheduled?' · Retry in '+result.retryInMs+' ms · Attempts: '+result.retryAttempts:'')+(result.piccapError?' · '+result.piccapError:''); var handover=document.getElementById('handover');handover.disabled=!result.piccapInstalled; handover.setAttribute('aria-checked',String(!!result.piccapHandover)); handover.textContent=result.piccapInstalled?'Auto PicCap: '+(result.piccapHandover?'On':'Off'):'Auto PicCap: Not installed'; @@ -27,7 +31,7 @@ function display(result){ document.getElementById('regions').textContent='';return; } if(result.piccapHandover)document.getElementById('status').textContent+=' · HyperDRM · '+result.playbackProtection; - if(result.piccapHandover && !result.piccapTargetCompatible)document.getElementById('status').textContent+=' · Auto PicCap paused for custom target'; + if(result.piccapHandover && !result.piccapTargetCompatible)document.getElementById('status').textContent+=' · Auto PicCap unavailable for remote IPv6 target'; if(result.colorValid)document.getElementById('status').textContent+=result.spatialOutput?' · '+result.ledCount+' LEDs from 16 color regions'+(result.receiver==='HyperHDR'?' · Spatial image output':''):' · Output RGB: '+result.outputColor.join(', '); else if(result.returnValue!==false)document.getElementById('status').textContent+=' · No current color output'; if(result.blackBarDetection && result.running)document.getElementById('status').textContent+=result.letterboxDetected?' · Top/bottom black bars detected':' · Full-screen capture'; @@ -46,13 +50,16 @@ document.getElementById('start').focus(); document.getElementById('autostart').onclick=function(){var button=this;var enabled=button.getAttribute('aria-checked')!=='true';button.disabled=true;call('autostart',function(r){button.disabled=false;if(r.returnValue===false)document.getElementById('error').textContent=r.errorText;else call('status',display);},{enabled:enabled});}; document.getElementById('handover').onclick=function(){var button=this;button.disabled=true;call('handover',function(r){button.disabled=false;if(r.returnValue===false)document.getElementById('error').textContent=r.errorText;else call('status',display);},{enabled:button.getAttribute('aria-checked')!=='true'});}; -['host','port','token','clearToken'].forEach(function(id){document.getElementById(id).addEventListener('input',function(){targetDirty=true;});}); +['host','port','piccapPort','token','clearToken'].forEach(function(id){document.getElementById(id).addEventListener('input',function(){targetDirty=true;});}); document.getElementById('receiver').onclick=function(){receiver=receiver==='Hyperion'?'HyperHDR':'Hyperion';this.textContent='Receiver: '+receiver;targetDirty=true;}; document.getElementById('saveTarget').onclick=function(){ var port=Number(document.getElementById('port').value),button=this; if(!Number.isInteger(port)||port<1||port>65535){document.getElementById('error').textContent='JSON port must be an integer from 1 to 65535.';return;} - var settings={host:document.getElementById('host').value.trim(),port:port,receiver:receiver,clearToken:document.getElementById('clearToken').checked}; + var flatPort=Number(document.getElementById('piccapPort').value); + if(!Number.isInteger(flatPort)||flatPort<1||flatPort>65535){document.getElementById('error').textContent='PicCap FlatBuffer port must be an integer from 1 to 65535.';return;} + var settings={piccapPort:flatPort,host:document.getElementById('host').value.trim(),port:port,receiver:receiver,clearToken:document.getElementById('clearToken').checked}; var token=document.getElementById('token').value.trim();if(token)settings.token=token; button.disabled=true;call('settings',function(r){button.disabled=false;if(r.returnValue===false){document.getElementById('error').textContent=r.errorText;return;}targetDirty=false;document.getElementById('token').value='';document.getElementById('clearToken').checked=false;call('status',display);},settings); }; -setupRemoteNavigation(['start','stop','refresh','autostart','handover','receiver','host','port','token','clearToken','saveTarget'].map(function(id){return document.getElementById(id);}),document,window); +document.getElementById('testConnection').onclick=function(){if(targetDirty){document.getElementById('error').textContent='Save receiver settings before testing the connection.';return;}this.disabled=true;call('testConnection',function(r){if(r.returnValue===false)document.getElementById('error').textContent=r.errorText;call('status',display);});}; +setupRemoteNavigation(['start','stop','refresh','autostart','handover','receiver','host','port','piccapPort','token','clearToken','saveTarget','testConnection'].map(function(id){return document.getElementById(id);}),document,window); diff --git a/app/appinfo.json b/app/appinfo.json index 29e1fa1..0460b9a 100644 --- a/app/appinfo.json +++ b/app/appinfo.json @@ -1 +1 @@ -{"id": "org.webosbrew.histogramhyperion", "version": "0.8.1", "vendor": "Local development", "type": "web", "main": "index.html", "title": "HyperDRM", "icon": "icon.png", "resolution": "1920x1080", "disableBackHistoryAPI": true, "largeIcon": "large-icon.png", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} +{"id": "org.webosbrew.histogramhyperion", "version": "0.9.0", "vendor": "Local development", "type": "web", "main": "index.html", "title": "HyperDRM", "icon": "icon.png", "resolution": "1920x1080", "disableBackHistoryAPI": true, "largeIcon": "large-icon.png", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM"} diff --git a/app/index.html b/app/index.html index c18ecda..699918c 100644 --- a/app/index.html +++ b/app/index.html @@ -1,5 +1,5 @@ HyperDRM - +

HyperDRM

Ambient lighting for webOS, Hyperion and HyperHDR.

Checking service …

@@ -7,10 +7,12 @@
Receiver settings + - +

Connection test: Not tested

Use the receiver's JSON TCP port, usually 19444. IPv4 and IPv6 addresses are supported. Leave the token blank to keep a saved token. Save applies the new target to a running session. Use Up/Down to move between fields; Left/Right edit text.

-

Auto PicCap requires the default local receiver; custom targets use HyperDRM for all playback. PicCap settings are managed in PicCap.

+

Auto PicCap uses the same receiver IP with its FlatBuffer port, usually 19400. Enable the FlatBuffer server on the receiver. When switching to PicCap, its saved address, port and Unix socket setting are updated; other PicCap preferences are preserved. PicCap supports IPv4 targets; remote IPv6 uses HyperDRM. The API token applies to JSON only.

Priority 149 · 10 updates per second

-

The Hyperion layout determines the number and positions of LEDs. Colors come from 16 LG histogram regions with interpolated edge colors. HyperHDR receives a generated color plane, which its image mapping converts to LED colors. Restart the service after changing the LED layout.

+

+

Adjust saturation, brightness and smoothing in your receiver. The receiver layout determines the number and positions of LEDs. Colors come from 16 LG histogram regions with interpolated edge colors. HyperHDR receives a generated color plane, which its image mapping converts to LED colors. Restart the service after changing the LED layout.

diff --git a/docs/publishing-review.md b/docs/publishing-review.md index 20db84f..54760b6 100644 --- a/docs/publishing-review.md +++ b/docs/publishing-review.md @@ -79,3 +79,13 @@ HyperHDR 22's `HyperHdrInstance::setColor` registers `ledColors[0]` as a solid c For HyperHDR selection, 0.8.1 sends an RGB JSON image generated from the calibrated histogram edge samples on a cached 160x90 geometry. The receiver samples the synthetic plane using its LED rectangles and image processing. Hyperion retains per-LED color-array output. No TV video pixels are captured or transmitted by the generated plane. Original saturation/brightness gains remain 1.0. Receiver configuration is not modified. On the G4 with HyperHDR 22.0.0, a temporary spatial test input produced 120 unique colors for 120 LEDs and was cleared. Exact RGB/base64, image command and spatial geometry tests passed on ARM. After installation of 0.8.1, the real histogram source was visible as IMAGE at priority 149. Eleven LED-stream samples from actual playback contained 87-100 unique colors across the 120 LEDs, confirming spatial output rather than a solid color. This plane has approximate calibrated spatial resolution, not full video-frame detail; HyperHDR's configured mapping and calibration affect the output. + +## Receiver diagnostics and remote PicCap (0.9.0) + +The own service exposes a nonblocking read-only JSON connection test, separate from streaming/capture. The UI reports connection/layout/authentication results and capture/retry diagnostics without exposing saved API tokens. Auto PicCap now reads settings and updates only address, port and unix-socket through its existing API when required. Unlike older versions, endpoint configuration is saved by PicCap; other settings and its autostart preference are preserved. PicCap setSettings restarts its capture, so HyperDRM releases VT first and checks status before treating the source as active. Remote IPv6 keeps histogram capture because the tested PicCap network client is IPv4-only. + +ARM tests on the G4 passed connection diagnostics, fragmented replies, invalid layout, rejected token, connection refusal/timeout, receiver setting persistence and remote PicCap controller transitions. The app receiver-field and remote-navigation tests passed. The installed local HyperHDR JSON test validated 120 LEDs in 224 ms; a remote relay with synthetic authentication and fragmented responses validated the same layout in 625 ms. The unprotected test video used PicCap through the PC address and custom FlatBuffer port, with connected:true, videoRunning:true and actual FlatBuffer bytes received by the relay. PicCap retained all non-endpoint settings, including autostart:false. These relays test a remote transport to the actual local HyperHDR instance, not a separately installed remote HyperHDR instance. + +Switching the user playback back to DRM stopped PicCap automatically and resumed histogram output through the remote JSON relay. Seven actual HyperHDR LED-stream samples contained 89-91 distinct colors for 120 LEDs, with no all-black sample. Both test endpoints were restored to local defaults and the synthetic token was removed. + +The remote FlatBuffer relay received over 411 MB from PicCap during the test session. The final port validation also rejects explicit JSON null while retaining the default for older preferences without the new field. diff --git a/native/diagnostics.h b/native/diagnostics.h new file mode 100644 index 0000000..f7df088 --- /dev/null +++ b/native/diagnostics.h @@ -0,0 +1,71 @@ +#ifndef HYPERDRM_DIAGNOSTICS_H +#define HYPERDRM_DIAGNOSTICS_H +/* An independent nonblocking connection. Tests never send colors or acquire + * capture. Work per timer iteration is bounded to keep output responsive. */ +typedef enum {TEST_IDLE,TEST_CONNECT,TEST_SEND,TEST_LOGIN,TEST_LAYOUT,TEST_DONE,TEST_FAILED} TestStage; +static struct { + int fd;TestStage stage,after_send;TargetConfig target; + uint64_t started,deadline,elapsed;unsigned leds; + char request[384],error[128];size_t sent,used;char *response; +} connection_test={.fd=-1}; +static const char *test_stage_name(void){ + static const char *names[]={"Not tested","Connecting","Sending request","Checking authentication","Reading LED layout","Passed","Failed"}; + return names[connection_test.stage]; +} +static bool test_busy(void){return connection_test.stage>=TEST_CONNECT && connection_test.stage<=TEST_LAYOUT;} +static void test_close(void){if(connection_test.fd>=0)close(connection_test.fd);connection_test.fd=-1;free(connection_test.response);connection_test.response=NULL;memset(connection_test.request,0,sizeof(connection_test.request));memset(connection_test.target.token,0,sizeof(connection_test.target.token));} +static void test_finish(const char *error,uint64_t now){ + test_close();connection_test.elapsed=now-connection_test.started; + connection_test.stage=error?TEST_FAILED:TEST_DONE; + snprintf(connection_test.error,sizeof(connection_test.error),"%s",error?error:""); +} +static void test_request(bool login,uint64_t now){ + if(login)snprintf(connection_test.request,sizeof(connection_test.request),"{\"command\":\"authorize\",\"subcommand\":\"login\",\"token\":\"%s\"}\n",connection_test.target.token); + else snprintf(connection_test.request,sizeof(connection_test.request),"{\"command\":\"serverinfo\"}\n"); + connection_test.sent=connection_test.used=0;connection_test.after_send=login?TEST_LOGIN:TEST_LAYOUT; + connection_test.stage=TEST_SEND;connection_test.deadline=now+3000; +} +static bool test_begin(const TargetConfig *target,uint64_t now){ + if(test_busy())return false; + test_close();memset(&connection_test,0,sizeof(connection_test));connection_test.fd=-1; + connection_test.target=*target;connection_test.started=now; + connection_test.response=malloc(2*1024*1024+1); + if(!connection_test.response){test_finish("Cannot allocate connection test buffer",now);return true;} + connection_test.fd=target_open(target); + if(connection_test.fd<0){test_finish("Cannot open receiver connection",now);return true;} + connection_test.stage=TEST_CONNECT;connection_test.deadline=now+3000;return true; +} +static void test_tick(PlaybackJson *json,uint64_t now){ + if(!test_busy())return; + if(now>=connection_test.deadline){test_finish("Receiver timed out",now);return;} + int fd=connection_test.fd; + if(connection_test.stage==TEST_CONNECT){ + struct pollfd p={fd,POLLOUT,0};int error=0;socklen_t size=sizeof(error); + if(poll(&p,1,0)<=0)return; + if(getsockopt(fd,SOL_SOCKET,SO_ERROR,&error,&size)!=0 || error){test_finish("Receiver connection refused or unreachable",now);return;} + test_request(connection_test.target.token[0]!=0,now);return; + } + if(connection_test.stage==TEST_SEND){ + size_t length=strlen(connection_test.request); + ssize_t n=send(fd,connection_test.request+connection_test.sent,length-connection_test.sent,MSG_NOSIGNAL); + if(n<0 && (errno==EAGAIN || errno==EWOULDBLOCK || errno==EINTR))return; + if(n<=0){test_finish("Receiver closed the test connection",now);return;} + connection_test.sent+=(size_t)n; + if(connection_test.sent==length){connection_test.stage=connection_test.after_send;connection_test.deadline=now+3000;memset(connection_test.request,0,sizeof(connection_test.request));} + return; + } + size_t available=2*1024*1024-connection_test.used;if(available>65536)available=65536; + if(!available){test_finish("Receiver response exceeds 2 MiB",now);return;} + ssize_t n=recv(fd,connection_test.response+connection_test.used,available,0); + if(n<0 && (errno==EAGAIN || errno==EWOULDBLOCK || errno==EINTR))return; + if(n<=0){test_finish("Receiver closed the test connection",now);return;} + connection_test.used+=(size_t)n;connection_test.response[connection_test.used]=0; + char *end=strchr(connection_test.response,'\n');if(!end)return;*end=0; + void *root=json->parse(connection_test.response);bool success=playback_true(json,root,"success");if(root)json->put(root); + if(!success){test_finish(connection_test.stage==TEST_LOGIN?"Receiver authentication failed":"Receiver rejected serverinfo; check authorization",now);return;} + if(connection_test.stage==TEST_LOGIN){test_request(false,now);return;} + LedBlend *mapping=NULL;unsigned count=0; + if(!layout_from_json(connection_test.response,&mapping,&count)){test_finish("Receiver returned an invalid or empty LED layout",now);return;} + free(mapping);connection_test.leds=count;test_finish(NULL,now); +} +#endif diff --git a/native/handover.h b/native/handover.h index 9fb9304..f076411 100644 --- a/native/handover.h +++ b/native/handover.h @@ -17,6 +17,8 @@ static bool (*cancel_call)(void*,unsigned long,LSError*); static unsigned long piccap_token,media_token; static uint64_t piccap_deadline,media_deadline; static unsigned clear_samples; +static TargetConfig piccap_target; +static char piccap_error[128]; static bool piccap_request(int command); static inline bool piccap_installed(void){return access(PICCAP_BINARY,X_OK)==0;} static bool handover_save(bool enabled){ @@ -39,7 +41,7 @@ static bool media_reply(void *h,void *m,void *ctx){ if(protection==PLAYBACK_CLEAR){if(clear_samples<2)clear_samples++;}else clear_samples=0; return true; } -/* Commands: 0 status, 1 start, 2 stop. Confirm stopped status before VT reuse. */ +/* Commands: 0 status, 1 start, 2 stop, 3 getSettings, 4 setSettings. Confirm stopped status before VT reuse. */ static bool piccap_reply(void *h,void *m,void *ctx){ (void)h;int command=(int)(intptr_t)ctx;piccap_busy=false;piccap_token=0; void *root=playback_json.parse(payload(m));bool ok=playback_true(&playback_json,root,"returnValue"); @@ -55,7 +57,16 @@ static bool piccap_reply(void *h,void *m,void *ctx){ if(!retries.paused)retries.due=milliseconds(); } }else if(!piccap_installed()){piccap_owned=false;capture_source=SOURCE_HISTOGRAM;piccap_connected=false;} + }else if(command==3 && capture_source==SOURCE_PICCAP_STARTING){ + void *port=playback_field(&playback_json,root,"port"),*socket=playback_field(&playback_json,root,"unix-socket"); + bool same=ok && playback_is(&playback_json,root,"address",target_piccap_host(&piccap_target)) && port && playback_json.type(port)==3 && strtoul(playback_json.string(port),NULL,10)==piccap_target.piccap_port && socket && playback_json.type(socket)==1 && !playback_json.boolean(socket); + if(ok){if(!piccap_request(same?1:4)){capture_source=SOURCE_PICCAP_STOPPING;snprintf(piccap_error,sizeof(piccap_error),"PicCap endpoint request failed");}} + else {capture_source=SOURCE_PICCAP_STOPPING;snprintf(piccap_error,sizeof(piccap_error),"Cannot read PicCap settings");} + }else if(command==4){ + if(!ok){capture_source=SOURCE_PICCAP_STOPPING;snprintf(piccap_error,sizeof(piccap_error),"PicCap rejected receiver settings");} + /* setSettings restarts PicCap itself; status confirms ownership. */ }else if(command==1 && !ok){capture_source=SOURCE_PICCAP_STOPPING;handover_cooldown=milliseconds()+10000;} + if(command>=3 && capture_source==SOURCE_PICCAP_STOPPING)handover_cooldown=milliseconds()+10000; if(root)playback_json.put(root); next_piccap_probe=milliseconds()+500; if(command==2)piccap_request(0); @@ -63,9 +74,10 @@ static bool piccap_reply(void *h,void *m,void *ctx){ } static bool piccap_request(int command){ if(piccap_busy)return false; - const char *uri=command==1?"luna://org.webosbrew.piccap.service/start":command==2?"luna://org.webosbrew.piccap.service/stop":"luna://org.webosbrew.piccap.service/status"; + const char *uri=command==3?"luna://org.webosbrew.piccap.service/getSettings":command==4?"luna://org.webosbrew.piccap.service/setSettings":command==1?"luna://org.webosbrew.piccap.service/start":command==2?"luna://org.webosbrew.piccap.service/stop":"luna://org.webosbrew.piccap.service/status"; LSError e;error_init(&e); - piccap_busy=call_once(service_handle,uri,"{}",piccap_reply,(void*)(intptr_t)command,&piccap_token,&e); + char data[160];snprintf(data,sizeof(data),"{\"address\":\"%s\",\"port\":%u,\"unix-socket\":false}",target_piccap_host(&piccap_target),piccap_target.piccap_port); + piccap_busy=call_once(service_handle,uri,command==4?data:"{}",piccap_reply,(void*)(intptr_t)command,&piccap_token,&e); piccap_deadline=milliseconds()+3000; error_free(&e);if(command)piccap_action_at=milliseconds();return piccap_busy; } @@ -73,20 +85,20 @@ static bool piccap_request(int command){ static bool handover_tick(void){ uint64_t now=milliseconds(); if(media_busy && now>=media_deadline){LSError e;error_init(&e);cancel_call(service_handle,media_token,&e);error_free(&e);media_busy=false;media_token=0;protection=PLAYBACK_UNKNOWN;clear_samples=0;} - if(piccap_busy && now>=piccap_deadline){LSError e;error_init(&e);cancel_call(service_handle,piccap_token,&e);error_free(&e);piccap_busy=false;piccap_token=0;capture_source=SOURCE_PICCAP_STOPPING;next_piccap_probe=0;} + if(piccap_busy && now>=piccap_deadline){snprintf(piccap_error,sizeof(piccap_error),"PicCap request timed out");LSError e;error_init(&e);cancel_call(service_handle,piccap_token,&e);error_free(&e);piccap_busy=false;piccap_token=0;capture_source=SOURCE_PICCAP_STOPPING;next_piccap_probe=0;} if(handover_enabled && piccap_installed() && !retries.paused && playback_json.lib && !media_busy && now>=next_media_probe){ LSError e;error_init(&e); media_busy=call_once(service_handle,"luna://com.webos.media/getActivePipelines","{}",media_reply,NULL,&media_token,&e); media_deadline=now+3000; error_free(&e);next_media_probe=now+1000; } - bool clear=handover_enabled && target_piccap_local(&target) && piccap_installed() && !retries.paused && !retries.blocked && + bool clear=handover_enabled && target_piccap_compatible(&target) && piccap_installed() && !retries.paused && !retries.blocked && protection==PLAYBACK_CLEAR && clear_samples>=2 && now-protection_at<3000 && now>=handover_cooldown; if(capture_source==SOURCE_HISTOGRAM && clear){ - stop_capture();retries.due=0;piccap_owned=true;capture_source=SOURCE_PICCAP_STARTING; - if(!piccap_request(1)){capture_source=SOURCE_PICCAP_STOPPING;handover_cooldown=now+10000;} + piccap_target=target;piccap_error[0]=0;stop_capture();retries.due=0;piccap_owned=true;capture_source=SOURCE_PICCAP_STARTING; + if(!piccap_request(3)){capture_source=SOURCE_PICCAP_STOPPING;handover_cooldown=now+10000;} } - if(piccap_owned && !clear && capture_source!=SOURCE_PICCAP_STOPPING){capture_source=SOURCE_PICCAP_STOPPING;next_piccap_probe=0;} + if(piccap_owned && (!clear || strcmp(piccap_target.host,target.host) || piccap_target.piccap_port!=target.piccap_port) && capture_source!=SOURCE_PICCAP_STOPPING){capture_source=SOURCE_PICCAP_STOPPING;next_piccap_probe=0;} if(piccap_owned && !piccap_busy && now>=next_piccap_probe){ if(capture_source==SOURCE_PICCAP_STOPPING)piccap_request(2);else piccap_request(0); next_piccap_probe=now+1000; diff --git a/native/service.c b/native/service.c index 6cc56d3..0d1f3cf 100644 --- a/native/service.c +++ b/native/service.c @@ -26,6 +26,7 @@ #include "retry.h" #include "target.h" #include "spatial_image.h" +#include "diagnostics.h" #define SERVICE "org.webosbrew.histogramhyperion.service" #define PRIORITY 149 typedef struct {int code;char *message;const char *file;int line;const char *func;void *padding;unsigned long magic;} LSError; @@ -64,7 +65,7 @@ static LedBlend *led_blends; static bool interpolation_enabled; static RetryState retries; static unsigned capture_recoveries; -static uint64_t recovery_started,last_recovery_ms; +static uint64_t recovery_started,last_recovery_ms,last_output_at; static uint64_t milliseconds(void){struct timespec t;clock_gettime(CLOCK_MONOTONIC,&t);return (uint64_t)t.tv_sec*1000+t.tv_nsec/1000000;} static char last_error[256]; static volatile sig_atomic_t revoked,quitting; @@ -189,15 +190,23 @@ static bool settings(void *h,void *m,void *ctx){ if(!playback_json.lib || !target_parse(&playback_json,payload(m),&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Enter a valid IPv4/IPv6 address, integer port (1-65535), receiver and optional API token\"}"); if(!target_save(TARGET_PREF,&next))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Could not save receiver settings\"}"); bool active=capture || piccap_owned || retries.due; - stop_capture();target=next;last_error[0]=0;protection=PLAYBACK_UNKNOWN;clear_samples=0; + stop_capture();test_close();connection_test.stage=TEST_IDLE;target=next;last_error[0]=0;protection=PLAYBACK_UNKNOWN;clear_samples=0; if(active && !retries.paused && !retries.blocked)retries.due=milliseconds(); return respond(h,m,"{\"returnValue\":true}"); } +static bool test_connection(void *h,void *m,void *ctx){ + (void)ctx; + if(strcmp(payload(m),"{}") || !playback_json.lib)return respond(h,m,"{\"returnValue\":false,\"errorText\":\"Test requires an empty object and JSON-C\"}"); + if(!test_begin(&target,milliseconds()))return respond(h,m,"{\"returnValue\":false,\"errorText\":\"A connection test is already running\"}"); + return respond(h,m,"{\"returnValue\":true,\"testing\":true}"); +} static bool status(void *h,void *m,void *ctx){ (void)ctx;char json[4096],safe[512],endpoint[80];size_t n=0; snprintf(endpoint,sizeof(endpoint),strchr(target.host,':')?"[%s]:%u":"%s:%u",target.host,target.port); for(size_t i=0;last_error[i] && n+2=32)safe[n++]=c;}safe[n]=0; - int used=snprintf(json,sizeof(json),"{\"returnValue\":true,\"version\":\"0.8.1\",\"running\":%s,\"colorValid\":%s,\"frames\":%lu,\"captureRecoveries\":%u,\"lastRecoveryMs\":%llu,\"endpoint\":\"%s\",\"host\":\"%s\",\"port\":%u,\"receiver\":\"%s\",\"tokenSet\":%s,\"piccapTargetCompatible\":%s,\"priority\":%d,\"uid\":%u,\"drmVerified\":false,\"mappingVerified\":false,\"outputColor\":[%u,%u,%u],\"error\":\"%s\",\"regions\":[",(capture||capture_source==SOURCE_PICCAP)?"true":"false",color_valid?"true":"false",frames,capture_recoveries,(unsigned long long)last_recovery_ms,endpoint,target.host,target.port,target.receiver,target.token[0]?"true":"false",target_piccap_local(&target)?"true":"false",PRIORITY,(unsigned)geteuid(),sent_rgb[0],sent_rgb[1],sent_rgb[2],safe); + uint64_t now=milliseconds(); + int used=snprintf(json,sizeof(json),"{\"returnValue\":true,\"piccapPort\":%u,\"connectionTest\":{\"state\":\"%s\",\"ledCount\":%u,\"elapsedMs\":%llu,\"error\":\"%s\"},\"lastOutputAgeMs\":%lld,\"retryInMs\":%llu,\"captureState\":\"%s\",\"piccapError\":\"%s\",",target.piccap_port,test_stage_name(),connection_test.leds,(unsigned long long)connection_test.elapsed,connection_test.error,last_output_at?(long long)(now-last_output_at):-1,(unsigned long long)(retries.due>now?retries.due-now:0),capture_source==SOURCE_PICCAP_STARTING?"Starting PicCap":capture_source==SOURCE_PICCAP_STOPPING?"Stopping PicCap":piccap_owned?"PicCap":capture?"Histogram":"Stopped",piccap_error); + used+=snprintf(json+used,sizeof(json)-used,"\"version\":\"0.9.0\",\"running\":%s,\"colorValid\":%s,\"frames\":%lu,\"captureRecoveries\":%u,\"lastRecoveryMs\":%llu,\"endpoint\":\"%s\",\"host\":\"%s\",\"port\":%u,\"receiver\":\"%s\",\"tokenSet\":%s,\"piccapTargetCompatible\":%s,\"priority\":%d,\"uid\":%u,\"drmVerified\":false,\"mappingVerified\":false,\"outputColor\":[%u,%u,%u],\"error\":\"%s\",\"regions\":[",(capture||capture_source==SOURCE_PICCAP)?"true":"false",color_valid?"true":"false",frames,capture_recoveries,(unsigned long long)last_recovery_ms,endpoint,target.host,target.port,target.receiver,target.token[0]?"true":"false",target_piccap_compatible(&target)?"true":"false",PRIORITY,(unsigned)geteuid(),sent_rgb[0],sent_rgb[1],sent_rgb[2],safe); for(int i=0;i<16;i++)used+=snprintf(json+used,sizeof(json)-used,"%s[%u,%u,%u]",i?",":"",rgb[i][0],rgb[i][1],rgb[i][2]); used+=snprintf(json+used,sizeof(json)-used,"],\"ledCount\":%u,\"spatialOutput\":%s,\"blackPercent\":[",led_count,led_count?"true":"false"); for(int i=0;i<16;i++)used+=snprintf(json+used,sizeof(json)-used,"%s%u",i?",":"",black_percent[i]); @@ -205,6 +214,7 @@ static bool status(void *h,void *m,void *ctx){ } static int tick(void *unused){ (void)unused; + test_tick(&playback_json,milliseconds()); if(handover_tick())return 1; if(!capture){ retry_update(&retries,boot_enabled() && geteuid()==0,false,milliseconds()); @@ -265,7 +275,7 @@ static int tick(void *unused){ while(used+1 #include "playback.h" #define TARGET_PREF "/media/developer/apps/usr/palm/services/org.webosbrew.histogramhyperion.service/target.json" -typedef struct {char host[46],receiver[16],token[257];unsigned port;} TargetConfig; -static TargetConfig target={.host="127.0.0.1",.receiver="Hyperion",.port=19444}; +typedef struct {char host[46],receiver[16],token[257];unsigned port,piccap_port;} TargetConfig; +static TargetConfig target={.host="127.0.0.1",.receiver="Hyperion",.port=19444,.piccap_port=19400}; static inline bool target_piccap_local(const TargetConfig *t){return t->port==19444 && (!strcmp(t->host,"127.0.0.1") || !strcmp(t->host,"::1"));} +static inline bool target_piccap_compatible(const TargetConfig *t){unsigned char address[4];return !strcmp(t->host,"::1") || inet_pton(AF_INET,t->host,address)==1;} +static inline const char *target_piccap_host(const TargetConfig *t){return !strcmp(t->host,"::1")?"127.0.0.1":t->host;} static bool target_valid(const TargetConfig *t){ unsigned char address[16]; if(inet_pton(AF_INET,t->host,address)!=1 && inet_pton(AF_INET6,t->host,address)!=1)return false; + if(!t->piccap_port || t->piccap_port>65535)return false; if(!t->port || t->port>65535 || (strcmp(t->receiver,"Hyperion") && strcmp(t->receiver,"HyperHDR")))return false; for(const unsigned char *p=(const unsigned char*)t->token;*p;p++) if(!((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')||(*p>='0'&&*p<='9')||*p=='-'||*p=='_'||*p=='.'))return false; @@ -37,6 +40,11 @@ static bool target_parse(PlaybackJson *j,const char *text,TargetConfig *out){ void *port=playback_field(j,root,"port"); if(!port || j->type(port)!=3)valid=false; else {char *end=NULL;errno=0;long n=strtol(j->string(port),&end,10);if(errno || !end || *end || n<1 || n>65535)valid=false;else next.port=(unsigned)n;} + void *flat=NULL; + if(j->type(root)==4 && j->get(root,"piccapPort",&flat)){ + if(j->type(flat)!=3)valid=false; + else {char *end=NULL;errno=0;long n=strtol(j->string(flat),&end,10);if(errno || !end || *end || n<1 || n>65535)valid=false;else next.piccap_port=(unsigned)n;} + } void *clear=playback_field(j,root,"clearToken"); if(clear){if(j->type(clear)!=1)valid=false;else if(j->boolean(clear))next.token[0]=0;} valid=valid && target_valid(&next);j->put(root);if(valid)*out=next;return valid; @@ -44,7 +52,7 @@ static bool target_parse(PlaybackJson *j,const char *text,TargetConfig *out){ static bool target_save(const char *path,const TargetConfig *t){ if(!target_valid(t))return false; char tmp[512],data[512];if(snprintf(tmp,sizeof(tmp),"%s.tmp",path)>=(int)sizeof(tmp))return false; - int n=snprintf(data,sizeof(data),"{\"host\":\"%s\",\"port\":%u,\"receiver\":\"%s\",\"token\":\"%s\"}\n",t->host,t->port,t->receiver,t->token); + int n=snprintf(data,sizeof(data),"{\"host\":\"%s\",\"port\":%u,\"piccapPort\":%u,\"receiver\":\"%s\",\"token\":\"%s\"}\n",t->host,t->port,t->piccap_port,t->receiver,t->token); int fd=open(tmp,O_WRONLY|O_CREAT|O_EXCL|O_NOFOLLOW|O_CLOEXEC,0600);if(fd<0)return false; bool ok=write(fd,data,n)==n && fsync(fd)==0;if(close(fd)!=0)ok=false; if(ok)ok=rename(tmp,path)==0; @@ -56,7 +64,7 @@ static bool target_load(PlaybackJson *j,const char *path,TargetConfig *t){ char data[1024];ssize_t n=read(fd,data,sizeof(data)-1);close(fd);if(n<=0 || n==(ssize_t)sizeof(data)-1)return false; data[n]=0;return target_parse(j,data,t); } -static int target_connect(const TargetConfig *t){ +static int target_open(const TargetConfig *t){ if(!target_valid(t))return -1; struct sockaddr_storage storage={0};socklen_t length;int family; struct sockaddr_in *v4=(void*)&storage;struct sockaddr_in6 *v6=(void*)&storage; @@ -66,10 +74,15 @@ static int target_connect(const TargetConfig *t){ int flags=fcntl(fd,F_GETFL,0);if(flags<0 || fcntl(fd,F_SETFL,flags|O_NONBLOCK)<0){close(fd);return -1;} if(connect(fd,(void*)&storage,length)!=0){ if(errno!=EINPROGRESS){close(fd);return -1;} - struct pollfd p={.fd=fd,.events=POLLOUT};int error=0;socklen_t size=sizeof(error); - if(poll(&p,1,1000)<=0 || getsockopt(fd,SOL_SOCKET,SO_ERROR,&error,&size)!=0 || error){close(fd);return -1;} } - if(fcntl(fd,F_SETFL,flags)<0){close(fd);return -1;} + return fd; +} +static int target_connect(const TargetConfig *t){ + int fd=target_open(t);if(fd<0)return -1; + struct pollfd p={.fd=fd,.events=POLLOUT};int error=0;socklen_t size=sizeof(error); + if(poll(&p,1,1000)<=0 || getsockopt(fd,SOL_SOCKET,SO_ERROR,&error,&size)!=0 || error){close(fd);return -1;} + int flags=fcntl(fd,F_GETFL,0); + if(flags<0 || fcntl(fd,F_SETFL,flags & ~O_NONBLOCK)<0){close(fd);return -1;} struct timeval timeout={1,0};setsockopt(fd,SOL_SOCKET,SO_SNDTIMEO,&timeout,sizeof(timeout));setsockopt(fd,SOL_SOCKET,SO_RCVTIMEO,&timeout,sizeof(timeout)); return fd; } diff --git a/native/test_diagnostics.c b/native/test_diagnostics.c new file mode 100644 index 0000000..be7790d --- /dev/null +++ b/native/test_diagnostics.c @@ -0,0 +1,42 @@ +#define _DEFAULT_SOURCE +#include +#include +#include +#include "target.h" +#include "layout.h" +#include "diagnostics.h" +static void fixture(PlaybackJson *json,int kind){ + int server=socket(AF_INET,SOCK_STREAM,0);assert(server>=0); + struct sockaddr_in address={.sin_family=AF_INET,.sin_addr={htonl(INADDR_LOOPBACK)}}; + assert(bind(server,(void*)&address,sizeof(address))==0 && listen(server,1)==0); + socklen_t length=sizeof(address);assert(getsockname(server,(void*)&address,&length)==0); + TargetConfig config=target;config.port=ntohs(address.sin_port);if(kind==1)strcpy(config.token,"fixture-token"); + pid_t child=fork();assert(child>=0); + if(!child){ + int fd=accept(server,NULL,NULL);if(fd<0)_exit(2);char request[512]={0};size_t used=0; + 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 vI}L@W$_#e<6wZXZZdH=2h~R delta 26025 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 diff --git a/tests/flatbuffer-proxy.py b/tests/flatbuffer-proxy.py new file mode 100644 index 0000000..3e2e5dc --- /dev/null +++ b/tests/flatbuffer-proxy.py @@ -0,0 +1,49 @@ +"""Test-only FlatBuffer TCP relay; accepts only the configured TV address.""" +import argparse +import select +import socket +import socketserver + +parser = argparse.ArgumentParser() +parser.add_argument('--bind', required=True) +parser.add_argument('--port', type=int, default=19446) +parser.add_argument('--upstream', required=True) +parser.add_argument('--upstream-port', type=int, default=19400) +args = parser.parse_args() + + +class Relay(socketserver.BaseRequestHandler): + def handle(self): + if self.client_address[0] != args.upstream: + return + transferred = 0 + try: + with socket.create_connection((args.upstream, args.upstream_port), timeout=3) as remote: + self.request.settimeout(3) + while True: + readable, _, _ = select.select([self.request, remote], [], [], 3) + if not readable: + break + for source in readable: + data = source.recv(65536) + if not data: + return + destination = remote if source is self.request else self.request + destination.sendall(data) + if source is self.request: + if not transferred: + print('PicCap FlatBuffer data received', flush=True) + transferred += len(data) + except OSError: + pass + finally: + print(f'FlatBuffer connection closed: {transferred} bytes from TV', flush=True) + + +class Server(socketserver.ThreadingTCPServer): + daemon_threads = True + + +with Server((args.bind, args.port), Relay) as server: + print('FlatBuffer relay ready', flush=True) + server.serve_forever() diff --git a/tests/receiver-ui.test.js b/tests/receiver-ui.test.js new file mode 100644 index 0000000..dccf20a --- /dev/null +++ b/tests/receiver-ui.test.js @@ -0,0 +1,24 @@ +'use strict'; +const assert=require('assert'),fs=require('fs'),vm=require('vm'); +const ids=['host','port','piccapPort','receiver','token','clearToken','endpoint','handover','autostart','error','status','regions','start','stop','refresh','saveTarget','testConnection','testResult','diagnostics']; +const elements={}; +ids.forEach(id=>elements[id]={value:'',textContent:'',disabled:false,checked:false,attributes:{},style:{},addEventListener(){},focus(){},appendChild(){},setAttribute(k,v){this.attributes[k]=v;},getAttribute(k){return this.attributes[k];}}); +const requests=[]; +const status={returnValue:true,version:'0.9.0',host:'127.0.0.1',port:19444,piccapPort:19400,receiver:'HyperHDR',tokenSet:true,piccapInstalled:true,autostart:true,captureState:'Histogram',playbackProtection:'protected',connectionTest:{state:'Passed',ledCount:120,elapsedMs:300,error:''},uid:0}; +class Bridge { + call(uri,data){requests.push({uri,data:JSON.parse(data)});this.onservicecallback(JSON.stringify(uri.endsWith('/status')?status:{returnValue:true}));} + cancel(){} +} +let controls; +const context={PalmServiceBridge:Bridge,document:{getElementById:id=>elements[id],createElement:()=>({style:{}})},window:{},setTimeout:()=>1,clearTimeout(){},setInterval(){},setupRemoteNavigation(list){controls=list;}}; +vm.runInNewContext(fs.readFileSync('app/app.js','utf8'),context); +assert(elements.testResult.textContent.includes('120 LEDs')); +assert(elements.diagnostics.textContent.includes('Root service')); +assert(controls.includes(elements.piccapPort)&&controls.includes(elements.testConnection)); +context.targetDirty=true;elements.testConnection.onclick();assert(elements.error.textContent.includes('Save receiver')); +elements.piccapPort.value='0';elements.saveTarget.onclick();assert(elements.error.textContent.includes('FlatBuffer port')); +elements.piccapPort.value='19446';elements.host.value='10.1.0.100';elements.token.value='';elements.saveTarget.onclick(); +const saved=requests.find(r=>r.uri.endsWith('/settings'));assert.strictEqual(saved.data.piccapPort,19446);assert.strictEqual(saved.data.host,'10.1.0.100');assert(!('token' in saved.data)); +elements.testConnection.onclick();assert(requests.some(r=>r.uri.endsWith('/testConnection'))); +assert.strictEqual(elements.token.value,'');assert(!elements.diagnostics.textContent.includes('fixture-token')); +console.log('PASS: receiver fields, port validation, saved-token retention, test control and diagnostics');