9b909002be
Replace the bare TCP-connect probe in ModbusDriverProbe with a two-phase check: TCP connect via ModbusTcpTransport (keeps the same SocketException / timeout / generic error paths and messages), then a one-shot FC03 Read Holding Registers (qty 1 @ addr 0). A normal response → Ok=true "Modbus FC03 OK"; a Modbus exception PDU → Ok=true "Modbus FC03 OK (device returned exception PDU)"; any other failure after TCP succeeds → Ok=false "Reachable at host:port but Modbus FC03 handshake failed: …". Add ModbusDriverProbeTests (6 tests) covering invalid JSON, missing host/port, closed port, TCP-accept-then-close, canned MBAP happy path, and Modbus exception PDU path. All 277 Modbus tests green.