From e9cf99b5ce6e965c239d76da4ead43de450e057d Mon Sep 17 00:00:00 2001 From: hanxudong159 <42986190+han-xudong@users.noreply.github.com> Date: Tue, 27 Oct 2026 14:13:30 +0800 Subject: [PATCH] fix: support legacy devices without prodname (0.3.1) --- CHANGELOG.md | 6 ++++++ CMakeLists.txt | 2 +- CONTRIBUTING.md | 4 ++-- core/MANIFEST.sha256 | 2 +- core/UPSTREAM | 4 ++-- core/netft/src/detail/xml_config.cpp | 5 +++++ pixi.toml | 2 +- tools/sync_core.py | 4 ++-- 8 files changed, 20 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b0d84c..10162c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project are documented in this file. ## Unreleased +## 0.3.1 - 2026-10-27 + +### Fixed + +- Integrate netft-cpp 0.3.5 so legacy devices that omit `prodname` can connect using their valid calibration. Missing product names display as `ATI Net F/T`; required calibration and malformed-name checks remain enforced. + ## 0.3.0 - 2026-10-08 ### Added diff --git a/CMakeLists.txt b/CMakeLists.txt index 2243049..aed207b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ if(POLICY CMP0091) cmake_policy(SET CMP0091 NEW) endif() -project(netft_cli VERSION 0.3.0 LANGUAGES CXX) +project(netft_cli VERSION 0.3.1 LANGUAGES CXX) if(MSVC) set(CMAKE_MSVC_RUNTIME_LIBRARY diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b274096..543839f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -68,12 +68,12 @@ Never commit a laboratory sensor address, credentials, recordings, or private ne ## Core synchronization -The private core snapshot comes from [netft-cpp](https://github.com/netft/netft-cpp). The current synchronization command accepts the netft-cpp `v0.3.4` release at commit `1ce68a08a9387d9a36d22c3c259e44533199c347`; it applies the checksum-pinned `core/ADAPTATIONS.patch` to reproduce the existing adapted snapshot. +The private core snapshot comes from [netft-cpp](https://github.com/netft/netft-cpp). The current synchronization command accepts the netft-cpp `v0.3.5` release at commit `d2ea470267d9fb5dc4d1ee53b9ce268a831c60dc`; it applies the checksum-pinned `core/ADAPTATIONS.patch` to reproduce the existing adapted snapshot. To reproduce the current snapshot from a clean checkout at that exact tag: ```bash -python tools/sync_core.py sync --source --tag v0.3.4 +python tools/sync_core.py sync --source --tag v0.3.5 python tools/sync_core.py verify ``` diff --git a/core/MANIFEST.sha256 b/core/MANIFEST.sha256 index 160febc..16d4763 100644 --- a/core/MANIFEST.sha256 +++ b/core/MANIFEST.sha256 @@ -17,7 +17,7 @@ fe9034a4a32138c3469005a44a1fbd61cfe41df25207723635a22e8ed376dbf5 src/detail/seq 78098e0c98c84103653b7aa9e2baf689cde656b52e1e13873f7491aed7f35ff5 src/detail/udp_transport.hpp f6e7e14de70a366e3d25b139dee8f061cdfff4c5173c78b831e564125b81d4b2 src/detail/udp_transport_posix.cpp d48e67880a9c0db5f2c9b4045cc7caddb7fdfbb934cb676d25914c9cf2d5cfe5 src/detail/udp_transport_windows.cpp -95a05fe378b735b433ea10f438e9f5338120830e054b30ed11cd8db12d760cea src/detail/xml_config.cpp +68ccc1db7f8b7e9a86ce56ae64bbe841e08cc6342742bbb39b99306f3f345ed8 src/detail/xml_config.cpp f10ff61cd2cc645abca23a7abce37439273569c6fe139a4fb07041532edb908d src/detail/xml_config.hpp 5a25276d0307c6a341aaee525cc9a66f00cda06e30bd345716ff5ee17a57e3e7 src/discovery.cpp 2598c182a2322925c2d99e1d0bba3b57215e451ba1ecc8df6b108b885f089c1f src/status.cpp diff --git a/core/UPSTREAM b/core/UPSTREAM index 79956b4..ba8d3ff 100644 --- a/core/UPSTREAM +++ b/core/UPSTREAM @@ -1,6 +1,6 @@ repository=https://github.com/netft/netft-cpp.git -tag=v0.3.4 -commit=1ce68a08a9387d9a36d22c3c259e44533199c347 +tag=v0.3.5 +commit=d2ea470267d9fb5dc4d1ee53b9ce268a831c60dc paths=LICENSE,include,src adaptation_path=ADAPTATIONS.patch adaptation_format=git-diff-unified-zero diff --git a/core/netft/src/detail/xml_config.cpp b/core/netft/src/detail/xml_config.cpp index dd40fef..48a3d0a 100644 --- a/core/netft/src/detail/xml_config.cpp +++ b/core/netft/src/detail/xml_config.cpp @@ -208,6 +208,11 @@ RequiredFields extract_required_fields(std::string_view xml) { } for (std::size_t index = 0; index < kRequiredTags.size(); ++index) { if (!seen[index]) { + // Legacy firmware may omit the display name; calibration fields remain mandatory. + if (index == 0) { + fields[index] = "ATI Net F/T"; + continue; + } throw DiscoveryError("sensor configuration field '" + std::string{kRequiredTags[index]} + "' must appear exactly once"); } diff --git a/pixi.toml b/pixi.toml index 2b24966..e094bcb 100644 --- a/pixi.toml +++ b/pixi.toml @@ -1,6 +1,6 @@ [workspace] name = "netft-cli" -version = "0.3.0" +version = "0.3.1" channels = ["conda-forge"] platforms = ["linux-64", "linux-aarch64"] diff --git a/tools/sync_core.py b/tools/sync_core.py index 65f31dd..357004f 100644 --- a/tools/sync_core.py +++ b/tools/sync_core.py @@ -10,8 +10,8 @@ from typing import Sequence REQUIRED_REPOSITORY = "https://github.com/netft/netft-cpp.git" -REQUIRED_TAG = "v0.3.4" -REQUIRED_COMMIT = "1ce68a08a9387d9a36d22c3c259e44533199c347" +REQUIRED_TAG = "v0.3.5" +REQUIRED_COMMIT = "d2ea470267d9fb5dc4d1ee53b9ce268a831c60dc" SELECTED = ("LICENSE", "include", "src") ADAPTATION_NAME = "ADAPTATIONS.patch" ADAPTATION_FORMAT = "git-diff-unified-zero"