herosdevices.hardware.menlo.mixins ================================== .. py:module:: herosdevices.hardware.menlo.mixins .. autoapi-nested-parse:: Reusable node-shape mixins shared across Menlo Systems functional-layer modules. Menlo's device tree repeats several node shapes (current-controlled laser diodes, frequency-distribution blocks, PID control loops, ...) under different node names in different modules. Each mixin here models one such shape, taking the owning module and the shape's relative node path, so a module can compose as many instances as its own tree needs - e.g. :py:class:`~herosdevices.hardware.menlo.dual_laser_lock.DualLaserLock` needs two :py:class:`FrequencyDistribution` instances, one per wavelength. Module Contents --------------- .. py:class:: CurrentControl(module: herosdevices.hardware.menlo.functional_layer.FunctionalLayerModule, relative_path: str) Bases: :py:obj:`_NodeGroup` Laser-diode current control (`setCurrentD1/D2/D3`), e.g. an `amp*` node on a CW channel. .. py:property:: set_current_d1 :type: float Current setpoint of the first diode stage. .. py:property:: set_current_d2 :type: float Current setpoint of the second diode stage. .. py:property:: set_current_d3 :type: float Current setpoint of the third diode stage. .. py:class:: FrequencyDistribution(module: herosdevices.hardware.menlo.functional_layer.FunctionalLayerModule, relative_path: str) Bases: :py:obj:`_NodeGroup` Frequency-distribution block (`attenuation`/`counterInputFilter`/`ofdOutputFilter`). Shared shape across a CW channel's `frequencyDistribution`, CEO's `frequencyDistributionCeoBeat`, RR's `frequencyDistributionOpticalBeat`/`frequencyDistributionRfBeat`, and the per-wavelength `frequencyDistribution` nodes on combo CW channels. .. py:property:: attenuation :type: int Attenuation applied to the beat signal before it reaches the loop electronics. .. py:property:: counter_input_filter_enabled :type: bool Whether the beat-frequency counter's input filter is enabled. .. py:property:: ofd_output_filter_enabled :type: bool Whether the optical frequency divider output filter is enabled. .. py:class:: SelectMonitor(module: herosdevices.hardware.menlo.functional_layer.FunctionalLayerModule, relative_path: str) Bases: :py:obj:`_NodeGroup` Channel-select monitor. CW channels and `CEO` expose a single `hfsChannelSelected`; `RepetitionRate` exposes two (`hfs1ChannelSelected`/`hfs2ChannelSelected`) instead. All three properties are always defined here; which ones actually resolve on the device depends on which module composes this mixin. .. py:property:: hfs_channel_selected :type: int Selected HFS reference channel. .. py:property:: hfs1_channel_selected :type: int Selected HFS reference channel for the first sub-channel. .. py:property:: hfs2_channel_selected :type: int Selected HFS reference channel for the second sub-channel. .. py:class:: FrequencyControl(module: herosdevices.hardware.menlo.functional_layer.FunctionalLayerModule, relative_path: str) Bases: :py:obj:`_NodeGroup` Frequency-control loop shape (gain/setpoint/slope/corner-frequency/handover/slow-branch-enable knobs). Shared by a CW channel's `frequencyControl` and RR's `controlSettingsDualLock`/`controlSettingsSingleLock`. .. py:property:: p_gain :type: float Proportional gain of the loop. .. py:property:: set_point :type: float Setpoint of the loop. .. py:property:: signal_slope :type: int Sign/slope of the error signal used by the loop, i.e. the loop's polarity convention. Inferred name and semantics from context; verify against vendor documentation before relying on the exact meaning of the value. .. py:property:: fs_corner_frequencies :type: Any Corner frequencies of the loop's feed-forward stage. .. py:property:: int3_handover_freq :type: float Handover frequency between the loop's integrator stages. .. py:property:: slow_branch_enabled :type: bool Whether the loop's slow feedback branch is enabled. .. py:class:: Tec(module: herosdevices.hardware.menlo.functional_layer.FunctionalLayerModule, relative_path: str) Bases: :py:obj:`_NodeGroup` Thermo-electric cooler status/control (`i_actual`/`t_actual_il`/`t_actual_ool`/`t_set`/`tecOn`). .. py:property:: i_actual :type: float Actual TEC current. Read-only. .. py:property:: t_actual_il :type: float Actual temperature, in-loop sensor. Read-only. .. py:property:: t_actual_ool :type: float Actual temperature, out-of-loop sensor. Read-only. .. py:property:: t_set :type: float Target temperature. .. py:property:: tec_on :type: bool Whether the TEC is enabled.