Skip to content

Tags: gotmc/ivi

Tags

v0.29.0

Toggle v0.29.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Update convert to v0.5.1 & query to v0.7.1

v0.28.0

Toggle v0.28.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Fix formatting alignment in tempmon package

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.27.0

Toggle v0.27.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Remove Close() from Transport interface

The IVI driver does not own the transport connection — the caller
created it and is responsible for closing it. Remove Close() from the
Transport interface so that Inherent.Close() only sends the local
control command (SYST:LOC or instrument-specific equivalent) without
closing the underlying connection.

This fixes the issue where sending the local control command and
immediately closing the TCP connection could race on instruments like
the Keysight 33500B, where returning to local mode disconnects the
remote interface.

Callers should defer dev.Close() for the transport and defer
driver.Close() for the IVI local control, in that order.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.26.0

Toggle v0.26.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Fix key33000 compound SCPI commands for multi-channel instruments

Semicolon-separated SCPI commands like "BURS:MODE TRIG;STAT ON" break
when a SOURce[1|2]: channel prefix is prepended — the second part
after the semicolon loses the channel prefix. Send each command
separately with the full channel prefix instead.

Fixes SetOperationMode, SetStandardWaveform, and
ConfigureStandardWaveform for Triangle, RampUp, and RampDown
waveforms on multi-channel 33500B/33600A instruments.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.25.0

Toggle v0.25.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Remove context.Context from dmm, dcpwr, scope, specan, swtch, dsa, an…

…d load interfaces

Complete the context removal across all remaining IVI class interfaces
and their driver implementations. Each driver now manages timeouts
internally via timeout fields and newContext() helpers, matching the
pattern established for fgen in v0.24.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.24.0

Toggle v0.24.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Remove context.Context from IVI interfaces and driver constructors

IVI driver methods no longer accept context.Context. Instead, each
driver manages timeouts internally using a configurable default
(ivi.DefaultTimeout = 10s). Users can override with ivi.WithTimeout().

The Transport interface remains context-aware — context is created
internally by each driver method via newContext() helpers. This
reflects the reality that "cancellation" in the underlying transports
(TCP deadlines, USB timeouts, serial read timeouts) is just timeout
manipulation, not true preemption.

Changes:
- Add Timeout field to DriverConfig and WithTimeout() option
- Add timeout parameter to NewInherent(); defaults to DefaultTimeout
- Remove ctx from Inherent methods (CheckID, Reset, Clear, Disable, etc.)
- Remove ctx from all fgen interfaces (Base, StdFunc, ArbWfm, Trigger,
  StartTrigger, IntTrigger, Burst)
- Remove ctx from New() constructors across all 12 drivers
- Add timeout field and newContext() helpers to fgen drivers (key33220,
  key33000, ds345)
- Update all test files

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.23.0

Toggle v0.23.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Rename Instrument to Transport and update method signatures

Rename ivi.Instrument interface to ivi.Transport to better reflect that
it represents the transport layer abstraction. Replace ReadContext/
WriteContext with ReadBinary/WriteBinary to clearly distinguish binary
data transfers from ASCII command/query operations. Update all drivers,
channel types, and test mocks across the codebase.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.22.0

Toggle v0.22.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Refactor driver constructors to use functional options instead of boo…

…l params

Replace positional bool parameters (idQuery, reset, standalone) with
variadic ivi.DriverOption functional options for self-documenting call
sites. Add options.go with shared DriverOption type, DriverConfig, and
WithIDQuery/WithReset/WithStandalone constructors.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.21.0

Toggle v0.21.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Fix U2751A channel accessor bugs

- ChannelByID: off-by-one in bounds check (> vs >=) would panic when
  id == len(d.channels)
- Channel and ChannelByID: return nil instead of &Channel{} on error,
  consistent with all other drivers

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

v0.20.0

Toggle v0.20.0's commit message

Unverified

This user has not yet uploaded their public signing key.
Simplify Disable to best-effort SYST:LOC without fallback

Replace the fragile SYST:LOC/SYSTem:LOCal fallback with a single
best-effort command. The short and long SCPI forms are equivalent per
IEEE 488.2, so the fallback was meaningless. Errors are now
intentionally ignored since not all instruments support local control
and failure should not prevent closing.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>