S1-b: IF-LOC v1.0 locator simulator + round-trip test

Reference implementation of the frozen IF-LOC v1.0 contract
(meta/contracts/ble-device-interface.md): byte-accurate codec for the
telemetry, capture-trigger, and capture-result frames, plus a
LocatorSimulator that replays a canned locate session over a
transport-agnostic loopback link. Unblocks App development without
firmware (Risk R-3, SRS S3.1).

Plain net9.0 (not a MAUI head) so it builds/runs headless under the QA
gate without the Android/iOS workloads; qa-gate.sh auto-discovers
*.Tests.csproj under app/tests/. Round-trip test asserts field-level
fidelity (every SRS S3.1 telemetry + capture-result field), sentinels,
endianness (incl. RFC 4122 big-endian pointId), the REJECTED path, and
exactly-once capture correlation (no silent drop, SRS-LOG-7). 8/8 green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Brent Perteet
2026-08-20 13:10:24 -05:00
parent dc3a45e699
commit 0b4fb83546
6 changed files with 785 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<!--
IF-LOC locator simulator + wire codec.
Deliberately a plain net9.0 library (NOT a MAUI target head) so it builds and runs
headless in CI without the Android/iOS workloads. It is the reference implementation
of the frozen IF-LOC v1.0 contract (meta/contracts/ble-device-interface.md) and exists
to unblock App development without firmware (Risk R-3, SRS §3.1).
-->
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
<RootNamespace>IfLoc.Sim</RootNamespace>
</PropertyGroup>
</Project>