diff --git a/ShimmerCapture/README.md b/ShimmerCapture/README.md index 48b7042..fd36deb 100644 --- a/ShimmerCapture/README.md +++ b/ShimmerCapture/README.md @@ -488,14 +488,16 @@ Three things that take the sensor's link exclusively for a while. (The red LED used to be here too; it is on **General** now, because nothing about it is a test.) -**Link speed** free-runs the firmware's data-rate test for five seconds and +**Throughput** free-runs the firmware's data-rate test for five seconds and counts what arrives, which is the only honest way to know a link's throughput: BLE negotiates its connection interval with the host's own Bluetooth stack, so -two hosts and the same sensor can differ severalfold. It is Bluetooth-only — -the dock command set has no data-rate test — and refused while the sensor is -sensing or a transfer is running, because it saturates the link on purpose. The -figure lands in the SD card tab's stats and drives its download estimates, so -measuring once after connecting makes those estimates worth reading. +two hosts and the same sensor can differ severalfold. It is named for what it +measures rather than for a link, but on this sensor only the Bluetooth ones can +run it — the dock command set has no data-rate test at all. It is refused +while the sensor is sensing or a transfer is running, because it saturates the +link on purpose. The figure lands in the +SD card tab's stats and drives its download estimates, so measuring once after +connecting makes those estimates worth reading. It used to sit beside the connect buttons. It is here now because it is a test that holds the link, which is what everything else on this tab does, and it diff --git a/ShimmerCapture/index.html b/ShimmerCapture/index.html index 14ee66a..5d90723 100644 --- a/ShimmerCapture/index.html +++ b/ShimmerCapture/index.html @@ -964,7 +964,7 @@

Shimmer Capture

gating machinery with them. The connect row is where the eye should land on the primary action. -->
-
Link speed
+
Throughput test
not measured
@@ -1783,7 +1783,7 @@

Shimmer Capture

$("applyNote").textContent = plan.blocked; } else if (linkTesting) { $("applyNote").textContent = - "Waiting for the link-speed test to finish — it saturates the link on purpose, which is the whole point of it."; + "Waiting for the throughput test to finish — it saturates the link on purpose, which is the whole point of it."; } else if (sdBusy) { /* Not the firmware refusing this time — the page is. One link, one conversation: a configuration write in the middle of a file @@ -3654,7 +3654,7 @@

Shimmer Capture

three (see its setEnabled call), so leaving them unsaid greyed the card out with no reason on screen. */ if (linkTesting) { - return "The link-speed test is running. It saturates the link on purpose — wait the few seconds for it to finish."; + return "The throughput test is running. It saturates the link on purpose — wait the few seconds for it to finish."; } if (brandBusy) { return "A device-naming write is using the link. A download and a name write cannot share it — wait for it to finish."; @@ -3856,7 +3856,7 @@

Shimmer Capture

return "The sensor is sensing, and the firmware refuses every configuration command while it is. Stop the stream before reading or writing calibration."; } if (linkTesting) { - return "The link-speed test is running. It saturates the link on purpose — wait the few seconds for it to finish."; + return "The throughput test is running. It saturates the link on purpose — wait the few seconds for it to finish."; } if (sdBusy) { return "An SD card transfer is using the link. A calibration write and a download cannot share it — wait for the transfer to finish."; @@ -3902,7 +3902,7 @@

Shimmer Capture

return "The sensor is sensing, and the firmware refuses a self-test while it is — the test takes the whole sensor over for up to a minute. Stop the stream first."; } if (linkTesting) { - return "The link-speed test is running. It saturates the link on purpose — wait the few seconds for it to finish."; + return "The throughput test is running. It saturates the link on purpose — wait the few seconds for it to finish."; } if (sdBusy) { return "An SD card transfer is using the link. A report printed into the middle of a block stream would interleave with it — wait for the transfer to finish."; @@ -3974,7 +3974,7 @@

Shimmer Capture

if (!client) return "disconnected"; if (testBusy) return "the self-test is running"; if (streaming || sdLogging) return "the sensor is sensing"; - if (linkTesting) return "the link-speed test is running"; + if (linkTesting) return "the throughput test is running"; if (sdBusy) return "an SD card transfer is using the link"; if (brandBusy) return "a device-naming write is using the link"; if (calibBusy) return "a calibration write is using the link"; @@ -4094,7 +4094,7 @@

Shimmer Capture

return "The sensor is sensing. New names only take effect when it restarts, and the firmware skips a restart while it is sensing so a recording can never be truncated — stop the stream before changing the names."; } if (linkTesting) { - return "The link-speed test is running. It saturates the link on purpose — wait the few seconds for it to finish."; + return "The throughput test is running. It saturates the link on purpose — wait the few seconds for it to finish."; } if (sdBusy) { return "An SD card transfer is using the link. A name write and a download cannot share it — wait for the transfer to finish."; diff --git a/common/dev/verify.mjs b/common/dev/verify.mjs index f72f996..64426ee 100644 --- a/common/dev/verify.mjs +++ b/common/dev/verify.mjs @@ -209,7 +209,7 @@ check( linkOrder.ids.join(" → "), ); -// --- 4. the link-speed button's new home, before anything is connected ---- +// --- 4. the throughput button's new home, before anything is connected ---- const linkIdle = await evaluate(` const sdk = await import('/vendor/shimmer-web-sdk.esm.js'); const btn = document.getElementById('btnLinkTest'); @@ -234,7 +234,7 @@ check( /* Twice moved: out of the SD panel, then out of the connect column. It is a test that takes the link exclusively, which is what the Test tab is for, and its result is still read by the SD panel's own estimates. */ - "the link-speed button lives in the Test tab, not the SD panel or the connect column", + "the throughput button lives in the Test tab, not the SD panel or the connect column", linkIdle.inTestTab && linkIdle.notInLinkCard && linkIdle.notInSdPanel && @@ -905,7 +905,7 @@ check( `${sdDelete.before.length} → ${sdDelete.after.length} files, ${sdDelete.deleteCmds} SD_DELETE commands`, ); -// ---- the link-speed test +// ---- the throughput test const sdLink = await evaluate(` await window.sdBrowser.measureLinkSpeed(1200); // The event log flushes on an animation frame, so the last lines are not @@ -915,11 +915,11 @@ const sdLink = await evaluate(` on: window.mockTransport.writes.some(w => w.bytes[0] === 0xA4 && w.bytes[1] === 1), off: window.mockTransport.writes.some(w => w.bytes[0] === 0xA4 && w.bytes[1] === 0), guide: [...document.querySelectorAll('#log .log-line')].map(l => l.textContent) - .filter(l => /raw link speed: |as a guide|currently on this card/.test(l)) }; + .filter(l => /raw throughput: |as a guide|currently on this card/.test(l)) }; `); const linkKBps = Number(/^([\d.]+) KB\/s$/.exec(sdLink.link)?.[1]); check( - "the link-speed test runs the firmware data-rate test and reports a plausible rate", + "the throughput test runs the firmware data-rate test and reports a plausible rate", sdLink.on && sdLink.off && linkKBps > 100 && @@ -951,7 +951,7 @@ const linkBtn = await evaluate(` noteAfter: document.getElementById('linkTestNote').textContent }; `); check( - "the link-speed button works from the Test tab and reports beside itself", + "the throughput button works from the Test tab and reports beside itself", linkBtn.before.inTestTab && !linkBtn.before.disabled && linkBtn.before.note === "" && @@ -965,7 +965,7 @@ check( "and while it runs it names itself as the thing holding the link", linkBtn.during.disabled && /^(measuring…|[\d.]+ KB\/s …)$/.test(linkBtn.during.pill) && - /link-speed test/.test(linkBtn.during.applyNote) && + /throughput test/.test(linkBtn.during.applyNote) && /Measuring/.test(linkBtn.during.note), `${linkBtn.during.pill} | ${linkBtn.during.applyNote}`, ); @@ -1085,7 +1085,7 @@ check( sdWhileStreaming.banner.slice(0, 80) + "…", ); check( - "the link-speed test is refused while streaming, and says why rather than just greying", + "the throughput test is refused while streaming, and says why rather than just greying", sdWhileStreaming.linkTestRoleGone && sdWhileStreaming.linkTest && /deliberately saturates the link/.test(sdWhileStreaming.linkTestNote) && @@ -4260,7 +4260,7 @@ const skip = await evaluate(` `); check( "a sample is skipped, with the reason, while another panel holds the link", - /skipped/i.test(skip.status) && /link-speed/i.test(skip.status), + /skipped/i.test(skip.status) && /throughput/i.test(skip.status), skip.status.slice(0, 90), ); await send("Emulation.setTimezoneOverride", { timezoneId: "" }); diff --git a/common/sd-browser.js b/common/sd-browser.js index cb10ff0..774329e 100644 --- a/common/sd-browser.js +++ b/common/sd-browser.js @@ -308,7 +308,7 @@ export function createSdBrowser(host, opts = {}) { stat("capacity", "Card capacity"), stat("files", "Files"), stat("bytes", "Total size"), - stat("link", "Link speed"), + stat("link", "Link throughput"), ); const setStat = (key, text) => { @@ -994,7 +994,7 @@ export function createSdBrowser(host, opts = {}) { } setBusy(true); log.log( - `measuring raw link speed (${(durationMs / 1000).toFixed(0)} s, firmware data-rate test)…`, + `measuring raw throughput (${(durationMs / 1000).toFixed(0)} s, firmware data-rate test)…`, ); try { const res = await client.runDataRateTest(durationMs, (bytes, ms) => { @@ -1005,7 +1005,7 @@ export function createSdBrowser(host, opts = {}) { setStat("link", `${res.kBps.toFixed(1)} KB/s`); reportLinkSpeed(res.kBps, true); log.log( - `raw link speed: ${res.kBps.toFixed(1)} KB/s ` + + `raw throughput: ${res.kBps.toFixed(1)} KB/s ` + `(${fmtBytes(res.bytesReceived)} in ${(res.durationMs / 1000).toFixed(1)}s).`, ); if (res.kBps > 0) { @@ -1024,7 +1024,7 @@ export function createSdBrowser(host, opts = {}) { } return res; } catch (err) { - log.error(`Link speed test failed: ${err?.message ?? err}`); + log.error(`Throughput test failed: ${err?.message ?? err}`); reportLinkSpeed(null, true); return null; } finally {