RfConfigSnapshot

RfConfigSnapshot is the serializable RF-state helper used by FtmwPreset. It captures the subset of an RfConfig that belongs to a stored preset — the up- and down-conversion mixer settings, the AWG and chirp multipliers, and the desired clock frequencies for each clock role — without touching the runtime, hardware-derived state that an RfConfig accumulates while an experiment is configured. The snapshot is value-typed: it holds plain data members and is freely copied between presets, dialog tabs, and the persistence layer.

The snapshot deliberately does not record which physical clock implements each role. That information lives in the owning HardwareLoadout’s hardware map. When a snapshot is applied back to an RfConfig via applyTo, the receiving config is responsible for translating the snapshot’s role-keyed clock entries into calls against whatever clock hardware is currently active.

Serialization is performed by the free functions in the BC::Loadout namespace declared alongside HardwareLoadout: rfConfigScalarsMap flattens the scalar fields, and rfConfigClocksArray flattens the clock table. LoadoutManager writes these maps under each preset’s rfScalars and rfClocks QSettings sub-groups; see LoadoutManager for the storage layout and the FTMW Presets chapter for the user-facing model.

API Reference

struct RfConfigSnapshot

Serializable snapshot of the persistable fields of an RfConfig.

RfConfigSnapshot captures only the subset of RfConfig state that belongs to a stored FTMW preset: the up- and down-conversion mixer settings, the AWG and chirp multipliers, and the desired clock frequencies for each clock role. Hardware identity (which physical clock implements which role) is recorded separately in the loadout’s hardware map and is not part of the snapshot.

FtmwPreset owns one RfConfigSnapshot. The loadout persistence layer converts snapshots to and from SettingsStorage::SettingsMap records via the BC::Loadout::rfConfigScalarsMap, BC::Loadout::rfConfigClocksArray, and BC::Loadout::rfConfigSnapshotFromMaps helpers.

Public Functions

void applyTo(RfConfig &c) const

Apply the snapshot’s fields to c, leaving non-persisted state untouched.

Public Members

bool commonUpDownLO = {false}

Whether the upconversion and downconversion local oscillators share the same clock source.

double awgMult = {1.0}

AWG output multiplier applied before the upconversion mixer.

RfConfig::Sideband upMixSideband = {RfConfig::UpperSideband}

Sideband selection for the upconversion mixer.

double chirpMult = {1.0}

Frequency multiplier applied to the chirp before downconversion.

RfConfig::Sideband downMixSideband = {RfConfig::UpperSideband}

Sideband selection for the downconversion mixer.

QHash<RfConfig::ClockType, RfConfig::ClockFreq> clocks

Desired frequency for each populated clock role.

Public Static Functions

static RfConfigSnapshot fromRfConfig(const RfConfig &c)

Build a snapshot from the persistable fields of c.