Skip to content

Releases: newton5555/LLRPCSharp

LLRPCSharp v2.0.5

Choose a tag to compare

@github-actions github-actions released this 31 Aug 03:36

LLRPCSharp 2.0.5 Release Notes

Release Date: 2026-08-31
正式版(非预览)。

Reader inventory takeover

  • Added LlrpReader.PrepareInventoryTakeoverAsync(ResourceTakeoverPolicy.ReplaceAll)
    for applications that must explicitly silence an already-running inventory before
    querying or deploying a replacement.
  • The new entry point requires ReplaceAll and uses LLRP identifier-zero deletion
    for all standard ROSpec and AccessSpec resources; the default PreserveForeign
    workflow remains non-destructive toward foreign resources.
  • Managed StartInventoryAsync and ApplySettingsAsync now preflight after the
    selected cleanup phase, so an exclusive takeover does not query the resource graph
    before the device has been silenced.

Diagnostics and compatibility

  • Increased the default high-level request timeout from 10 to 30 seconds for slower
    readers while keeping connection and frame-assembly timers unchanged.
  • Timeout exceptions now include the request message ID, request type, expected
    response type, and a clear missing-response diagnosis.
  • Added regression coverage for cleanup ordering, explicit takeover policy enforcement,
    and timeout diagnostics.

Package boundary

  • LlrpSdk, LlrpSdk.Extensions.Impinj, LlrpSdk.Extensions.Zebra, and
    LlrpDevice.Virtual.Hosting are published at version 2.0.5.

Verification

  • The release build and automated tests are required to pass in the release workflow
    before the packages are published.
  • Physical-reader verification is run against the available reader and recorded
    separately in the reader interoperability evidence.

Full Changelog: v2.0.4...v2.0.5

LLRPCSharp v2.0.4

Choose a tag to compare

@github-actions github-actions released this 27 Aug 05:49

LLRPCSharp 2.0.4 Release Notes

Release Date: 2026-08-27
正式版(非预览)。

Reader configuration safety

  • GPO output updates now remain configuration-only and no longer redeploy the
    managed inventory resource just because an output state changes.
  • Idempotent cleanup recognizes the missing-resource responses used by both
    common LLRP 1.0.1 readers and Zebra readers.
  • Added regression coverage proving that GPO updates do not delete the SDK's
    ROSpec or AccessSpec.

Compatibility and package boundary

  • LLRP 1.0.1, 1.1, and 2.0 SDK baselines remain available.
  • LlrpDevice.Virtual.Hosting remains the public virtual-device entry point.
  • The SDK packages LlrpSdk, LlrpSdk.Extensions.Impinj,
    LlrpSdk.Extensions.Zebra, and LlrpDevice.Virtual.Hosting are published at
    version 2.0.4.

Verification

  • The release build and automated tests are required to pass in the release
    workflow before the packages are published.
  • Physical-reader verification is run against the available reader and is
    recorded separately in the reader interoperability evidence.

Full Changelog: v2.0.3...v2.0.4

LLRPCSharp v2.0.3

Choose a tag to compare

@github-actions github-actions released this 22 Aug 10:49

LLRPCSharp 2.0.3 Release Notes

Release Date: 2026-08-22
正式版(非预览)。

Managed and expert resource control

  • Separates managed desired state from the reader's observed resource snapshot,
    so raw/expert operations no longer silently overwrite the managed intent.
  • Adds explicit resource takeover policy: managed deployment preserves foreign
    ROSpec/AccessSpec resources by default and supports an opt-in ReplaceAll
    policy when full ownership is required.
  • Unifies the managed and expert SDK control planes while preserving the existing
    managed Reader lifecycle and resource services.

Compatibility and package boundary

  • LLRP 1.0.1, 1.1, and 2.0 SDK baselines remain available.
  • LlrpDevice.Virtual.Hosting remains the public virtual-device entry point.
  • The SDK packages LlrpSdk, LlrpSdk.Extensions.Impinj,
    LlrpSdk.Extensions.Zebra, and LlrpDevice.Virtual.Hosting are published at
    version 2.0.3.

Verification

  • Release build and automated tests are required to pass in the release workflow
    before the package is published.
  • Physical-reader verification remains subject to the available hardware and is
    recorded separately in the reader interoperability evidence.

Full Changelog: v2.0.1...v2.0.3

LLRPCSharp v2.0.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 12:46

LLRPCSharp 2.0.1 Release Notes

Release Date: 2026-08-20
正式版(非预览)。

Capability-aware reader defaults

  • GetDefaultSettingsAsync() now builds the standard RF baseline from the connected
    reader's advertised capabilities instead of relying on a fixed generic shape.
  • The baseline selects usable antennas, the first RF mode and receive sensitivity,
    the highest advertised transmit power, and the first usable hop/channel entry.
  • Impinj, Zebra, and Seuic extensions can layer verified model/firmware defaults on
    top of that baseline; unknown profiles remain conservative and do not invent vendor
    parameters.
  • The verified Impinj R420 profile now contributes typed reader defaults and enables
    optional report fields only when the capability catalog confirms them.

Compatibility and package boundary

  • LLRP 1.0.1, 1.1, and 2.0 SDK baselines remain compatible with 2.0.0.
  • LlrpDevice.Virtual.Hosting remains the public virtual-device entry point; the
    package version is 2.0.1.
  • The SDK packages LlrpSdk, LlrpSdk.Extensions.Impinj,
    LlrpSdk.Extensions.Zebra, and LlrpDevice.Virtual.Hosting are published at
    version 2.0.1.

Verification

  • SDK Release build: 0 warnings, 0 errors; automated tests: 525/525 passed, 0 skipped.
  • Seuic UF40 192.168.41.148 hardware verification passed with an explicit LLRP 1.0.1
    policy and Seuic extension: 32 unique tags were received on antenna 1 in 10 seconds;
    managed resources were cleared and no tags or reader configuration were written.
  • The Impinj R420 192.168.40.87 was not used for this release smoke because its antenna
    was disconnected; its connection and capability reads remained healthy but produced no
    tag report.

Full Changelog: v2.0.0...v2.0.1

LLRPCSharp v2.0.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 06:28

LLRPCSharp 2.0.0 Release Notes

Release Date: 2026-08-19
正式版(非预览)。

Public virtual-device hosting package

  • 将 LlrpDevice.Virtual.Hosting 定为虚拟设备服务的对外顶层 NuGet 包。
  • IVirtualDeviceHost、VirtualDeviceHostOptions、VirtualDeviceProfiles 和
    VirtualLlrpDeviceHost.Create(...) 组成应用侧稳定入口;客户端不需要直接引用
    LlrpDevice.Server、LlrpDevice.Virtual 或设备端协议项目。
  • Hosting 包内置标准 LLRP 1.0.1 与 Impinj R420 profile,并携带其设备端实现和协议运行时,
    便于 WPF、CLI 与自动化测试以单一包接入。
  • 原有低层 Hosting 类型保留为迁移兼容路径;新应用应优先使用 Hosting-level API。

SDK and device capabilities

  • 保持 LLRP 1.0.1、1.1 和 2.0 协议/SDK 基线,以及 Impinj、Zebra 扩展包。
  • 保持通用 LLRP Device Server、确定性 Virtual Device、标准 Tag Access、生命周期、
    客户端连接和报文观察能力。
  • LlrpVirtualDevice.Cli 继续复用同一 Hosting facade,标准设备和 Impinj R420 模拟设备
    的启动配置保持兼容。

Verification

  • SDK Release 构建:0 警告、0 错误;自动化测试:523/523 通过。
  • Impinj R420 192.168.40.87 的 2.0.0 Release 冒烟通过:LLRP 1.0.1、Impinj 扩展、
    能力/配置读取和标签报告均正常,测试后完成托管资源清理。
  • 平台的 NuGet 模式 Release 构建:0 警告、0 错误;自动化测试:382/382 通过;主客户端
    与 Virtual Device Studio 的 win-x64 自包含单文件发布均成功。

Package boundary

  • 直接面向应用的虚拟设备服务包:LlrpDevice.Virtual.Hosting。
  • LlrpDevice.Server、LlrpDevice.Virtual、LlrpDevice.Virtual.Impinj 和底层协议程序集
    是 Hosting 的实现组成;需要扩展能力时再使用相应的 SDK/扩展包。

Full Changelog: v1.5.0...v2.0.0

LLRPCSharp v1.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 09:15

LLRPCSharp 1.5.0 Release Notes

Release Date: 2026-08-18
正式版(非预览)。

Virtual Device SDK 与 CLI

  • 完成单台 Virtual Device 的 SDK/Hosting 生命周期门面,支持创建、启动、停止、
    重启和状态观察。
  • 完成通用 LLRP Device Server 与确定性 Virtual Device 的 1.0.1 设备闭环,覆盖
    ROSpec、AccessSpec、报告、事件、Hold/Release 和标准 Tag Access。
  • 增加独立的 LlrpVirtualDevice.Cli,与客户端 LlrpCli 分离,支持版本化设备配置、
    能力档案、寻卡数据源和 run/live 工作流。
  • 改进 Virtual Device 的标签采样行为,使盘点报告更接近实际设备的多轮采样特征。

CLI 与诊断

  • 增强 pcapng 报文解码路径,支持 Live Shell 和离线工具按消息类型筛选。
  • 统一客户端 CLI 与 Virtual Device CLI 的职责边界,保持协议版本显式选择。
  • CLI 重定向到脚本或 CI 时自动关闭 ANSI 控制码,保证摘要输出稳定可解析。

修复与兼容性

  • 修正 Impinj 配置索引的 base-1 语义。
  • 完善 LLRP 1.0.1 Virtual Device 能力档案和默认 RF/标签数据源。

验证

  • Release 构建:0 警告、0 错误。
  • 自动化测试:519/519 通过,0 失败、0 跳过。
  • Impinj R420(192.168.40.87,固件 6.4.1.240):LLRP 1.0.1 连接、能力/配置读取和
    inventory 标签报告验证通过。

已知限制

  • LLRP 2.0 真实设备互操作仍未完成完整验收。
  • Zebra 扩展仍有部分字段需要逐参数真机抓包标定。

Full Changelog: v1.4.0...v1.5.0

LLRPCSharp v1.4.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 06:29

LLRPCSharp 1.4.0 Release Notes

Release Date: 2026-08-14
正式版(非预览)。

CLI 改造 (WP1-WP8)

版本/厂商对齐 (WP1)

  • --llrp 增加 2.0(修 2->Force20 错映射,补别名 101/11/20)
  • --vendor 增加 zebra
  • Helpers.CreateRegistry() 注册 1.0.1/1.1/2.0 + Impinj + Zebra 全模块
  • encode 加 --llrp 版本感知,消息目录单源(Helpers.CreateEncodeMessage)
  • banner 版本号取程序集版本

Settings 收缩 (WP2)

  • 子命令 7->5:show/validate/apply/edit/save
  • 移除 defaults/load(不保留别名),apply --defaults --yes 吸收原 defaults
  • ManagedSettingsWorkflow.DeployAsync 消除双校验

一段式盘点 (WP3)

  • inventory start --defaults|--settings 部署+启动一段式
  • 与 one-shot inventory 共用 DeployAsync 核心

Manual 命令 (WP4)

  • resources manual enter/exit -> manual on/off/status
  • ManualModeGuard.TryAutoExitManualModeAsync:托管调用自动 off(有资源确认/无资源静默)
  • manual on 自动 sync 前置

Tag Sequence 结构化 (WP5)

  • tag sequence 支持 --read/--write/--erase/--lock/--kill 结构化旗标(保留 --op 兼容)

消重 (WP6)

  • D1:删除死代码 LlrpFrameAnalyzer.cs(从未接线)
  • D2:TagAccessCliRequest.ParseHex 统一到 Helpers.ParseHex
  • D3:standalone 与 Live Shell 的 inspect/decode/validate 合并到 OfflineProtocolTool 共享核
  • D4:encode 消息目录单源(Helpers.CreateEncodeMessage)

编辑器增强 (WP7)

  • E2:能力交叉引用(编辑 RF 索引时就地显示 reader.Capabilities 表)
  • E1:厂商扩展泛化(Impinj + Zebra 分支,删除硬编码 is ImpinjReaderExtension)
  • E4:内联校验(population/ReportEveryN 加 .Validate)
  • E3:变更 diff 预览(RenderReviewDiff)
  • E5:事件开关改 MultiSelectionPrompt 一次勾选
  • E6:导航增强(编号菜单 + Discard 未保存确认)
  • E7:JSON 导入(ImportJson 加载+校验)

文档同步 (WP8)

  • docs/status.md、docs/roadmap.md、docs/guides/cli-user-guide.md、docs/architecture/llrpcli-optimization-plan.md 全部同步

新增根级在线一次性命令

  • llrp status -- 连接 -> 身份/协商/扩展 -> 断开,默认 JSON
  • llrp caps -- 连接 -> GET_READER_CAPABILITIES -> 断开,默认 JSON
  • 均支持 --llrp/--vendor/--output json|table

Zebra 真机修复

  • 修 MotoTagPhase(subtype 709)/BrandIDCheckStatus(712) 的 reserved 位数
    (PDF 多算 16/24 位,实机 payload 分别为 2/1 字节)
  • definitions/extensions/zebra.yml 修正 + regenerate(2 个 codec 文件)
  • Zebra 报告能力闭环验证:开 EnablePhase -> 报告带 MotoTagPhase -> SDK 投影 zebra.phase
  • 8 个 Zebra 能力参数全部强类型解码
  • 设备确认为 LLRP 1.0.1(GET_SUPPORTED_VERSION 回 M_UnsupportedVersion)

LiveSmoke 诊断增强

  • --dump-frames:始终 dump 所有帧 hex + 版本字段
  • --zebra-include-phase/--zebra-include-zone:开启 Zebra 报告参数
  • Zebra 报告扩展打印(DescribeZebraReportExtensions)

文档

  • 新增 docs/references/zebra/llrp-1.0.1-definition-drift.md:Zebra ICG 与 yml 定义偏差汇总
  • 新增 docs/architecture/cli-dedup-d1-d3-plan.md:D1/D3 消重执行计划
  • 新增 docs/architecture/llrpcli-remaining-workplan.md:WP4 收尾 + WP7 详细计划
  • 更新 docs/acceptance/reader-interoperability.md:Impinj + Zebra 真机证据

验证

  • 全解决方案构建 0 警告 0 错误
  • LlrpCli.Tests 32/32 通过(含 5 个新增测试)
  • 全部测试项目通过
  • 真机验证:Impinj R420 (192.168.40.87) + Zebra FX9600 (192.168.40.88)

已知限制

  • Zebra 定义的 reserved 位数与官方 ICG 存在系统性偏移,仅部分参数经实机字节级验证
  • LLRP 2.0 真机互操作未验证

Full Changelog: v1.3.0...v1.4.0

LLRPCSharp v1.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Aug 12:23

LLRPCSharp 1.3.0 Release Notes

Release Date: 2026-08-12
正式版(非预览): NuGet 包版本与 GitHub Release 均不标记 prerelease。

新能力

  • CLI Live Shell 增强 Reader 配置检查能力:status 会展示更完整的 Reader
    配置、ROSpec 和 AccessSpec 信息,便于人工测试时直接确认设备当前状态。
  • CLI Settings 与 Inventory 流程继续保持简洁入口,补充现有设备配置检查、
    settings 应用和 inventory 启动之间的操作说明。
  • SDK 托管 Inventory 增加配置归一化路径,减少不同 Reader 固件对 ROSpec
    可选字段和默认值处理差异带来的启动失败。

修复与兼容性

  • 加固 InventorySession 报告分发:托管盘点报告在 Reader 省略可选
    ROSpecID 时仍可被当前 session 正确接收。
  • 改善 ROSpec 兼容性:应用层设置会经过统一归一化后再编译为 1.0.1 / 1.1
    协议对象,降低跨设备行为差异。
  • Virtual Reader 增补配置与报告模拟能力,用于覆盖真实设备上暴露出的边界场景。
  • CI / Release workflow 明确只运行自动化和虚拟测试项目,不在远端执行
    LlrpSdk.Hardware.Tests 真机验收。

文档

  • 更新 CLI 用户手册,说明 Live Shell 中 status、caps、settings、
    inventory 的推荐使用路径。
  • 更新 SDK API 文档,补充托管 Inventory 与 Reader 配置行为说明。
  • 同步 docs/status.md、showcase 和架构文档中的当前能力边界。

验证

  • 解决方案构建与自动化测试需在发布前通过。
  • 发布前仍需执行本地真机冒烟:
    dotnet run --project tools/LlrpSdk.LiveSmoke -- <real-reader-ip> --inventory

Full Changelog: v1.2.1...v1.3.0

LLRPCSharp v1.2.1

Choose a tag to compare

@github-actions github-actions released this 11 Aug 14:23

LLRPCSharp 1.2.1 Release Notes

Release Date: 2026-08-11
正式版(非预览): NuGet 包版本与 GitHub Release 均不标记 prerelease。

🐛 修复

  • 修复 Reader 级配置查询与回写时丢失 RFTransmitter.HopTableID 的问题。
    AntennaConfigurationSettings.HopTableId 现在会从设备快照完整映射,并在
    SET_READER_CONFIG 时按原值写回;LLRP 1.0.1 与 1.1 Adapter 行为一致。
  • 增加标准 LLRP 读写器的回写一致性测试,覆盖查询、应用和再次查询的跳频表、
    信道及发射功率字段。
  • CLI Settings 保持无草稿的简化流程,新增 settings apply <file> --yes 和
    settings defaults --yes,应用设置后仍需单独执行 inventory start。

✅ 验证

  • 解决方案构建与自动化测试通过。
  • 标准 LLRP 设备 192.168.40.88 真机验证通过:查询 Reader 级天线配置后以
    相同值回写,HopTableID、ChannelIndex 和 TransmitPower 保持一致。
  • 标准 LLRP 设备真机盘点冒烟通过,收到标签并完成托管 ROSpec 清理。

Full Changelog: v1.2.0...v1.2.1

LLRPCSharp v1.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 12:23

LLRPCSharp 1.2.0 Release Notes

Release Date: 2026-08-07
正式版(非预览):NuGet 包版本与 GitHub Release 均不标记 prerelease。

✨ 新能力(LLRP 1.0.1 完成度收尾)

  • CLOSE_CONNECTION 接收侧:消息泵识别设备主动关闭,best-effort 回
    CLOSE_CONNECTION_RESPONSE,ConnectionChanged 携带
    DeviceInitiatedClose,应用可区分"设备主动关闭"与"网络故障"。
  • ENABLE_EVENTS_AND_REPORTS 重连放行:重连后若设备配置了
    HoldEventsAndReportsUponReconnect=true,SDK 在状态同步后发送 ENABLE
    释放被挂起的事件/报告(内部逻辑,不新增公开 API);Impinj R430 真机验证。
  • LLRP 标准能力门控投影到 ReaderCapabilities:
    • SupportsClientRequestOpSpec(客户端请求式访问):R430 固件 6.4.1.240
      实测拒绝 ClientRequestOpSpec,SDK 不接线、仅提供门控
    • CanDoRfSurvey(RF 调查):R430 实测 false,Impinj 设备普遍不支持
  • ReaderExceptionOccurred 事件:暴露 Reader 内部异常(ReaderExceptionEvent,
    Message + ROSpec/SpecIndex/天线/AccessSpec 上下文),1.0.1/1.1 均接线。
  • TagReport.PcBits:投影 C1G2_PC(EPC 长度/编码类型信息,变长 EPC
    场景必需),配合 IncludePcBits 请求。

🛠 测试与工具

  • 修复 LlrpNet.ProtocolGenerator.Tests 本地卡死:子进程管道从
    ReadToEndAsync + 同步 WaitForExit 改为事件驱动排空,9 个测试 5 秒通过
    (此前本地整套测试跑不完)。
  • LlrpSdk.Hardware.Tests 新增真机用例:hold=true 重连报告恢复
    (Impinj R430,固件 6.4.1.240 验证通过)。
  • 探针工具 tools/LlrpSdk.Probe.ClientRequestOp:实测 CLIENT_REQUEST_OP
    支持矩阵,可换 IP 复测其他型号。

📚 Documentation

  • 新增 docs/coverage/llrp101-sdk-coverage.md:LLRP 1.0.1 SDK 完成度审计
    (协议层 42 消息 / 111 参数全覆盖;SDK 层 42/42 有业务路径或已定案)。
  • 新增 docs/coverage/impinj-extension-coverage.md:Impinj 扩展完成度
    (消息级 4/4;参数级 47/104 有 SDK 路径;R420 固件 6.4.1.240 验收基准)。
  • docs/status.md / docs/roadmap.md:同步完成度结论与剩余待办。

⚠️ 注意事项

  • 版本号 1.2.0 为产品版本(正式版),与 LLRP 1.0.1 协议版本号无关。
  • 本版为 dev 分支合并后的首个正式版;无已知破坏性 API 变更。

Full Changelog: v0.9.0...v1.2.0