fvf • viewer
Technical Overview • Parser & Validation Reference

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.

Unofficial Interoperability Reference

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 with invalid_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., Math or Mathematik 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 with invalid_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.0 intervals) and roll-mode values (1, 2, 4, 5 min/div). In-range non-standard values trigger a non_standard_timebase warning.
  • 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 NaN values, accompanied by a saturated_samples warning 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, and mA extracted 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:

Fatal Errors
FvfError Codes

invalid_signature, unsupported_capture_version, unsupported_capture_variant, truncated_capture, opaque_header, corrupt_sector_table, invalid_timebase_format, invalid_timebase_range, invalid_time_axis.

Non-Fatal Warnings
ParseWarning Codes

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.

Open the viewer