The .fvf File Format Technical Overview
Binary .fvf (FVF) files are waveform capture archives recorded by portable ScopeMeter test instruments and industrial diagnostic tools. This document provides an overview of how the open-source FVF Viewer parser verifies file integrity, validates horizontal and vertical parameters, decodes waveform samples, and categorizes diagnostic errors and warnings for interoperability.
This technical overview is an independent, unofficial reference
documenting how the open-source FVF Viewer WebAssembly engine
decodes and validates .fvf waveform files for
interoperability. All decoding executes entirely client-side in
your browser with zero server uploads. This documentation is
provided "as is" for diagnostic and troubleshooting purposes
without warranty of completeness. Inspect the complete parser
implementation in the
open-source GitHub repository.
1. Capture Header & Signature Verification
Parsing begins by validating the file header and ensuring the file represents an authentic, supported waveform capture:
-
8-Byte Header Signature: The file must begin with
the characteristic 8-byte ScopeMeter file header signature. Files
shorter than 8 bytes fail with
truncated_capture; files containing at least 8 bytes with an unrecognised signature fail withinvalid_signature, reporting the detected header bytes. -
Capture Version: The capture format version field
in the header is validated. FVF Viewer supports Version 1
captures; alternative or unrecognised version numbers report
unsupported_capture_version. -
Waveform Variant Validation: The header pointer
targets the capture variant descriptor. Valid waveform captures
carry a waveform curve tag; files storing non-waveform payloads
(such as instrument setup or configuration archives) are safely
identified and rejected with
unsupported_capture_variant.
2. Sector Table & Record Architecture
The sector table indexes the waveform channels and locates each channel's parameter block:
-
Sector Table Validation: The parser validates the
sector index table anchoring the channel descriptors before
decoding. Corrupted or unreadable sector indexing halts parsing
with
corrupt_sector_table. - Grammar-Driven Channel Discovery: Rather than relying on fragile fixed file offsets, the parser dynamically walks the sector table, accommodating variations across empirical instrument acquisitions and synthetic test fixtures.
- Contiguous Record Chain: Waveform channel records are stored contiguously across the capture payload. Each channel record contains a channel parameter block, a raw sample payload, and a record trailer. The parser verifies that records chain seamlessly through to the end of the file.
3. Channel Configurations & Capture Envelope
The parser enforces strict envelope bounds derived from ScopeMeter instrument architecture:
- Sample Depth Envelope: Standard physical channel acquisitions store between 500 (minimum envelope) and 250,000 (deep capture envelope) samples per channel. Counts outside this range fail validation.
- Channel Topologies: Supports single-channel, dual-channel, non-sequential subsets (e.g., Channels A, B, and D), and full quad-channel (A, B, C, D) captures.
-
Localized Channel Prefixes: Normalizes channel
labels across language localizations, including English (
Input A–D), German (Eingang A–D), and bracketed notation ([A-D]). -
Derived Math Channels: Best-effort recovery for
mathematical channels (e.g.,
MathorMathematik A-B). Deviating parameter block offsets are handled via payload marker detection without failing the physical channel decode.
4. Timebase Validation & Horizontal Sweep
The horizontal timebase specifies the acquisition sweep rate per horizontal division:
-
Timebase Token Parsing: Timebase tokens are
parsed from the channel header string, matching numeric sweep
intervals and standard duration units (
ns,µs,ms,s,min) per division. Unparseable tokens fail withinvalid_timebase_format. -
Decimal Normalization: Transparently normalizes
both European comma decimals (e.g.,
666,7 ns/div,1,333 us/div) and period decimals (e.g.,1.333 us/div). -
Physical Range Bounds: Sweep speeds must fall
within the physical instrument envelope between
1.0 ns/div and 120.0 s/div (2
minutes per division). Out-of-bounds rates reject with
invalid_timebase_range. -
Step Sequence Verification: Validates sweep rates
against nominal hardware steps (e.g.,
1.0,2.0,5.0intervals) and roll-mode values (1,2,4,5 min/div). In-range non-standard values trigger anon_standard_timebasewarning. -
Timestamp Reconstruction: Each channel's stored
horizontal start and end bounds reconstruct uniform 64-bit
floating point timestamps (Δt interval spacing), preventing
cumulative phase drift across deep sweeps. Invalid time axis spans
report
invalid_time_axis.
5. Sample Value Decoding
Raw sample words are decoded and scaled according to channel classification:
- Physical Analog Channels: Decoded from signed raw integer sample words scaled by the channel's calibrated vertical scale factor into physical signal units.
-
Rail Saturation & Overload Detection:
Instrument clipping rails and overload saturation values are
mapped directly to IEEE 754
NaNvalues, accompanied by asaturated_sampleswarning to signal out-of-range signal saturation. - Derived Math Channels: Converted from fixed-point representations using normalized mantissa scaling to preserve mathematical channel accuracy.
-
Vertical Units: Preserves calibrated vertical
units including
V,mV,kV,A, andmAextracted from channel metadata.
6. Typed Error & Warning Taxonomy
The parser implements a formal, typed error and warning taxonomy. Errors halt parsing with deterministic diagnostics; warnings indicate non-critical deviations while allowing successful waveform visualization:
invalid_signature,
unsupported_capture_version,
unsupported_capture_variant,
truncated_capture, opaque_header,
corrupt_sector_table,
invalid_timebase_format,
invalid_timebase_range,
invalid_time_axis.
saturated_samples,
non_standard_timebase, unknown_unit,
vertical_metadata_mismatch,
derived_record_issue,
derived_legacy_values,
time_axis_span_mismatch,
duplicate_channel, unknown_tag_prefix,
unknown_record, unclassified_tag.
Ready to Inspect Your Waveform Captures?
Open and analyze your .fvf captures directly in your
browser with dual measurement cursors, pan/zoom navigation, and
CSV/PNG export.