qmi.instruments.nkt_photonics.adjustik

QMI driver for the NKT Photonics Instruments “Adjustik” laser driver.

The communication protocol to the laser driver is documented in the “Software Development Kit for NKT Photonics Instruments - Instruction Manual” document, v2.1.3, Oct 2018. [Reference 1].

Chapter 2 of this document describes the NKT Photonics Interbus protocol (physical, framing, CRC, etc.)

module type standard address section description

20h 0Fh 6.2 Koheras AdjustiK/BoostiK System (K81-1 to K83-1) 34h 80h 6.3 Koheras ADJUSTIK/ACOUSTIK System (K822/K852) 21h 0Ah 6.4 Koheras BasiK Module (K80-1) 36h 01h (default; settable) 6.5 Koheras BASIK MIKRO Module (K0x2) 33h 01h (default; settable) 6.6 Koheras BASIK MIKRO Module (K1x2) 70h 02h 6.7 BoostiK OEM Amplifier (N83) 60h 15h 6.7 BoostiK OEM Amplifier (N83)

Chapter 6 of this document describes the Register Files for different devices.

Classes

KoherasAdjustikLaser(context, name, transport)

class qmi.instruments.nkt_photonics.adjustik.KoherasAdjustikLaser(context: QMI_Context, name: str, transport: str)
open() None

Connect to the instrument hardware.

When this method returns, the instrument must be ready for interaction via calls to instrument-specific methods.

Subclasses can extend this method to implement instrument-specific initialization. If they do, they should call super().open() as a last statement.

close() None

Close the connection to the instrument hardware and release associated resources.

When this method returns, the instrument must not be used again unless it is first re-opened by calling the open() method.

Subclasses can extend this method if they have specific resources to close. If they do, they should call super().close() as a last statement.

get_basik_module_type() int

Return BASIK module type. Should be 0x33.

get_basik_emission() int

Emission status.

enable_basik_emission() None

Enable basik emission.

disable_basik_emission() None

Disable basik emission.

get_basik_setup_bits() int

Return the setup bits.

bit 0: - bit 1: wide wavelength modulation range bit 2: enable external wavelength modulation bit 3: wavelength modulation DC coupled bit 4: enable internal wavelength modulation bit 5: enable modulation output bit 6: - bit 7: - bit 8: pump operation constant current bit 9: external amplitude modulation source

set_basik_setup_bits(bits: int) None

Set the setup bits.

get_basik_output_power_setpoint_mW() float

Return the output power setpoint, in [mW].

set_basik_output_power_setpoint_mW(power: float) None

Set the the output power setpoint, in [mW].

get_basik_output_power_setpoint_dBm() float

Return the output power setpoint, in [dBm].

Should be equal to 10.0 * log10(output_power_setpoint_mW).

set_basik_output_power_setpoint_dBm(power: float) None

Set the output power setpoint, in [dBm].

Should be equal to 10.0 * log10(output_power_setpoint_mW).

get_basik_wavelength_offset_setpoint() float

Return the wavelength offset setpoint, in [pm].

set_basik_wavelength_offset_setpoint(setpoint: float) None

Set the wavelength offset setpoint, in [pm].

get_basik_user_area() bytes

Return the 240-byte user area contents.

get_basik_status_bits() int

Return BASIC module type.

get_basik_output_power_mW() float

Return the output power readout, in [mW].

get_basik_output_power_dBm() float

Return the output power readout, in [dBm].

Should be equal to 10.0 * log10(output_power_mW).

get_basik_standard_wavelength() float

Return the standard wavelength, in [pm].

get_basik_wavelength_offset() float

Return the wavelength offset, in [pm].

get_basik_module_temperature() float

Return the module temperature, in [°C].

get_basik_module_supply_voltage() float

Return the module supply voltage, in [V].

get_basik_module_wavelength_modulation_enabled() int

Undocumented: wavelength modulation on?

get_basik_wavelength_modulation_frequency() Tuple[float, float]

Return the two wavelength modulation frequencies, in ([Hz], [Hz]).

set_basik_wavelength_modulation_frequency(freq0: float, freq1: float) None

Set the wavelength modulation frequency, in [Hz].

get_basik_wavelength_modulation_level() float

Return the wavelength modulation level, in [%].

set_basik_wavelength_modulation_level(level: float) None

Set the wavelength modulation level, in [%].

get_basik_wavelength_modulation_offset() float

Return the wavelength modulation offset, in [%].

set_basik_wavelength_modulation_offset(offset: float) None

Set the wavelength modulation offset, in [%].

get_basik_amplitude_modulation_frequency() Tuple[float, float]

Return the two amplitude modulation frequencies, in ([Hz], [Hz]).

get_basik_amplitude_modulation_depth() float

Return the amplitude modulation depth, in [%].

get_basik_modulation_setup_bits() int

Return the modulation setup bits.

set_basik_modulation_setup_bits(bits: int) None

Set the modulation setup bits.

get_adjustik_module_type() int

Return ADJUSTIK module type. Should be 0x34.

force_unlock() None

Forcefully unlock the remote object.

This unlocks the object, regardless of who owns the lock. This allows you to unlock an object if the locking proxy has been destroyed without unlocking.

Use this with care.

Do not override this stub method in subclasses. It has already been implemented in QMI_RpcProxy.

classmethod get_category() str | None

Return the optional name of the category this object belongs to.

A category name is a free-form string that has no special significance. Its purpose is to distinguish between groups of RPC objects that fulfill similar roles.

get_name() str

Return the name of this object.

Returns:

name attribute.

get_signals() list[SignalDescription]

Return a list of signals that can be published by this object.

Returns:

List consisting of qmi_signals attributes.

is_locked() bool

Query if the remote object is locked.

Do not override this stub method in subclasses. It has already been implemented in QMI_RpcProxy.

is_open() bool

Return True if the instrument is open (ready for interaction).

lock(timeout: float = 0.0, lock_token: str | None = None) bool

Lock the remote object. If timeout is given, try every 0.1s within the given timeout value. The remote object can be locked with an optional custom lock token by giving a string into lock_token keyword argument.

If successful, this proxy is the only proxy that can invoke RPC methods on the remote object; other proxies will receive an “object is locked” response. The return value indicates if the lock was granted; a denied lock means the object was already locked by another proxy.

Do not override this stub method in subclasses. It has already been implemented in QMI_RpcProxy.

release_rpc_object() None

Give a warning if the instrument is removed while still open.

unlock(lock_token: str | None = None) bool

Unlock the remote object.

Without optional parameters, this is only allowed by the proxy that initially locked the object. By giving the lock token as an input parameter, the specific object locked by this token can be unlocked. The return value indicates if the unlocking was successful.

Do not override this stub method in subclasses. It has already been implemented in QMI_RpcProxy.