Joseph Doherty
c48f299994
test(ablegacy): bit write surfaces device rejection status (review)
...
Adds `Bit_write_surfaces_device_rejection_status` to AbLegacyBitRmwTests,
verifying that a non-zero libplctag status returned by the parent-word write
in WriteBitInWordAsync propagates as a non-Good OPC UA StatusCode rather than
being silently swallowed. Added a minimal `WriteStatusOverride` hook to
FakeAbLegacyTag (test-project-only) so the read half of the RMW still
returns 0/Good while the write half returns the seeded error code.
2026-06-17 12:02:10 -04:00
Joseph Doherty
340c145e87
fix(twincat): dispose bit-RMW locks on shutdown + guard null parent read (review)
2026-06-17 12:01:55 -04:00
Joseph Doherty
a73e20fb28
feat(twincat): BOOL-within-word writes via driver-level parent-word RMW
2026-06-17 11:55:44 -04:00
Joseph Doherty
5c6b7cd6f9
feat(ablegacy): B/I/O-file bit-within-word writes via existing RMW path
2026-06-17 11:54:03 -04:00
Joseph Doherty
988a7a938f
fix(s7): UInt64 box cast + Timer/Counter transient-write returns BadNotWritable (final review)
...
M1: add missing (object) cast to UInt64 arm of DecodeScalarBlock switch expression,
matching the Int64 arm style and the comment that each arm is boxed explicitly.
M2: short-circuit Timer/Counter writes in WriteAsync to BadNotWritable before
WriteOneAsync, so transient equipment-tag refs (Writable=true from parser) return
the same status code as authored tags rejected at init — documented in the docs.
Adds 6 pure unit tests pinning the area-detection precondition the guard relies on.
EncodeScalarBlock Timer/Counter throws remain as the defensive backstop.
2026-06-17 06:31:41 -04:00
Joseph Doherty
11e8e4302d
fix(s7): Counter raw-word note + reject Writable Timer/Counter + Timer time-base tests (bundle review)
2026-06-17 06:18:48 -04:00
Joseph Doherty
8cfb8e920e
feat(s7): Timer/Counter read (read-only) + route Timer/Counter through buffer path
2026-06-17 06:03:47 -04:00
Joseph Doherty
5db08e9e85
feat(s7): DateTime (S7 DATE_AND_TIME) scalar read+write via S7.Net.Types.DateTime
2026-06-17 05:54:08 -04:00
Joseph Doherty
1e5fec2f85
feat(s7): String (S7 STRING) scalar read+write via S7.Net.Types.S7String
2026-06-17 05:50:49 -04:00
Joseph Doherty
286be5df88
feat(s7): byte-buffer codec dispatch + Int64/UInt64/LReal scalar read+write
2026-06-17 05:38:18 -04:00
Joseph Doherty
06b858eb02
feat(s7): unblock wide-type/Timer-Counter init guards + fix Int64/UInt64 node mapping
2026-06-17 05:24:48 -04:00
Joseph Doherty
0f92e9e238
fix(adminui): reject AbLegacy array length >256 at author-time (review I-3)
v2-ci / build (push) Failing after 1m3s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
2026-06-16 22:31:42 -04:00
Joseph Doherty
3bb2031d1d
fix(opcua): array equipment-tag nodes are read-only (array writes out of scope, review M-1)
2026-06-16 22:31:15 -04:00
Joseph Doherty
5f7a2acd27
fix(abcip): isArray:true without a positive arrayLength is scalar (review I-2 consistency)
2026-06-16 22:30:11 -04:00
Joseph Doherty
94e8c55b5c
fix(abcip): explicit IsArray flag so 1-element arrays read as arrays (review I-1)
2026-06-16 22:14:41 -04:00
Joseph Doherty
ce5d46be08
fix(ablegacy): gate array read on isArray:true; 1-element arrays + assumption comments (review C-2/I-3)
2026-06-16 22:14:36 -04:00
Joseph Doherty
3bbe39c166
fix(s7): treat ArrayCount>=1 as array so 1-element arrays read as arrays (review I-2)
2026-06-16 22:12:30 -04:00
Joseph Doherty
49ac1392a8
fix(modbus): gate array read on isArray:true; 1-element arrays (review C-1)
2026-06-16 22:12:18 -04:00
Joseph Doherty
3e74239532
feat(twincat): 1-D array symbol read via ADS + IsArray discovery
2026-06-16 21:59:17 -04:00
Joseph Doherty
950069392c
feat(ablegacy): PCCC multi-element file array read + IsArray discovery
2026-06-16 21:55:41 -04:00
Joseph Doherty
f4d5a5ee9c
feat(abcip): 1-D array read via libplctag + IsArray discovery
2026-06-16 21:55:20 -04:00
Joseph Doherty
a82c22c645
feat(s7): 1-D array block read + decode loop + IsArray discovery
2026-06-16 21:54:50 -04:00
Joseph Doherty
8d3dc32148
feat(modbus): String + BitInRegister array decode + equipment-tag arrayLength
...
- DecodeRegisterArray: add String and BitInRegister cases replacing the
default:throw; each element decoded by reusing DecodeRegister on its
contiguous register slice → string[] / bool[]
- ModbusEquipmentTagParser.TryParse: read optional arrayLength key from
TagConfig JSON and thread it into ModbusTagDefinition.ArrayCount
(null when absent or zero, preserving scalar behaviour)
- ModbusArrayTests: 8 new tests covering the two decode cases and the
equipment-tag parser/resolver path; 285/285 green
2026-06-16 21:51:55 -04:00
Joseph Doherty
c2006dfb57
feat(adminui): driver-agnostic isArray/arrayLength Tag-modal control
2026-06-16 21:50:27 -04:00
Joseph Doherty
eb8a8dc19d
test(runtime): cover disabled-array + zero-length in artifact parity round-trip (review)
2026-06-16 21:45:19 -04:00
Joseph Doherty
0a747c343d
feat(runtime): decode IsArray/ArrayLength byte-parity in DeploymentArtifact
2026-06-16 21:40:22 -04:00
Joseph Doherty
584e9f2aee
test(opcua): applier forwards array params + overflow rows + doc fix (review)
...
Extends RecordingSink to capture isArray/arrayLength per EnsureVariable call,
adds two applier-level tests asserting the wire-through for array and scalar
plans, adds float/overflow InlineData rows to ExtractTagArray theory, and
corrects the ExtractTagArray XML-doc wording (null => unbounded ArrayDimensions=[0]).
2026-06-16 21:36:38 -04:00
Joseph Doherty
71cc417182
feat(opcua): EquipmentTagPlan IsArray/ArrayLength + composer ExtractTagArray + applier wire-in
2026-06-16 21:27:43 -04:00
Joseph Doherty
3172b7bdee
test(opcua): cover null-arrayLength dimension + tighten scalar assertion (review)
2026-06-16 21:22:43 -04:00
Joseph Doherty
a792820283
feat(opcua): EnsureVariable array params (ValueRank=OneDimension + ArrayDimensions)
2026-06-16 21:16:07 -04:00
Joseph Doherty
6855be288f
feat(focas): per-axis auto-scale from cnc_getfigure figures (manual config = fallback)
2026-06-16 19:52:45 -04:00
Joseph Doherty
a40c77de87
fix(adminui): flip remaining ModbusTcp test seeds + doc comments to Modbus (review)
2026-06-16 19:51:56 -04:00
Joseph Doherty
bec37848d5
fix(galaxy): degrade all parent-cycle members to root (review)
2026-06-16 19:51:20 -04:00
Joseph Doherty
21c7645da8
feat(galaxy): nest gobject browse tree by parent_gobject_id (degrade-to-flat)
2026-06-16 19:41:26 -04:00
Joseph Doherty
8b4675b1a5
fix(adminui): canonicalize Modbus driver-type string on "Modbus" (was ModbusTcp)
2026-06-16 19:39:41 -04:00
Joseph Doherty
3fcbc70cba
feat(focas): add cnc_getfigure per-axis position-figure client binding
2026-06-16 19:38:49 -04:00
Joseph Doherty
4675bd6139
test(client-ui): cover Confirm missing-ConditionId + Shelve/Confirm exception paths (review)
2026-06-16 18:34:30 -04:00
Joseph Doherty
4f55d894a2
feat(client-ui): AlarmsViewModel Shelve/Confirm methods + CanShelve/CanConfirm
2026-06-16 18:23:11 -04:00
Joseph Doherty
8980adceb3
test(client-ui): track Shelve/Confirm calls + exceptions in FakeOpcUaClientService
2026-06-16 18:19:29 -04:00
Joseph Doherty
23f353e79b
test(adminui): close Phase 6 review test-gaps + Enterprise-delete warning
2026-06-16 17:10:40 -04:00
Joseph Doherty
069a5f3165
feat(adminui): Galaxy picker pre-fills native-alarm fields from IsAlarm
2026-06-16 16:55:05 -04:00
Joseph Doherty
c00a547191
feat(adminui): isHistorized + historianTagname as first-class Tag fields
2026-06-16 16:44:46 -04:00
Joseph Doherty
c98625fd9f
feat(adminui): create-new-script from the inline virtual-tag panel
2026-06-16 16:44:14 -04:00
Joseph Doherty
526eebb3bb
feat(adminui): UNS-tree delete for Cluster + Enterprise (refuse-if-children, no rowversion)
2026-06-16 16:35:07 -04:00
Joseph Doherty
6a8020e7e7
feat(adminui): native-alarm HistorizeToAveva opt-out
2026-06-16 16:27:31 -04:00
Joseph Doherty
72d414ada7
feat(adminui): typed TagConfig editors for OpcUaClient + Historian
2026-06-16 16:25:19 -04:00
Joseph Doherty
1164d423b6
fix(probe): Galaxy gRPC ping — drop invalid Retry, treat MxGatewayAuth exceptions as reachable (live /run)
...
v2-ci / build (push) Failing after 44s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped
Two bugs caught by live verification against the mxaccessgw at 10.100.0.48:5120:
- MaxAttempts=1 produced an invalid Polly RetryStrategyOptions -> the probe failed
on every real gateway. Removed the Retry override (matches GalaxyDriver); fail-fast
is already guaranteed by the TCP preflight + the per-call deadline.
- A rejected key surfaces as a typed MxGatewayAuthenticationException, not a raw
RpcException, so 'auth-rejection = reachable' was bypassed. Catch the typed auth/
authorization exceptions -> Ok=true.
Adds DriverProbeHandshakeE2eTests: direct-probe, skip-gated cross-protocol green/red
discrimination (Modbus, OpcUaClient, Galaxy + a local real OPC UA server).
2026-06-16 07:32:59 -04:00
Joseph Doherty
2d688c2a6d
feat(probe): Galaxy Test-Connect does a gRPC ping (auth-rejection counts as reachable)
2026-06-16 06:48:40 -04:00
Joseph Doherty
b663ae6eff
feat(probe): TwinCAT Test-Connect does an ADS ReadState (degrade-guarded)
2026-06-16 06:48:22 -04:00
Joseph Doherty
5ed0276ffb
feat(probe): FOCAS Test-Connect attempts a cnc_allclibhndl3 handshake (degrade-guarded)
2026-06-16 06:45:19 -04:00