Skip to main content

1 Reading Samples

Reading signal data in impulse using specialized interfaces at different abstraction levels: IReadableSamples for signal access, IReadableValue for single values, IReadableSample for complete samples with metadata. Covers signal characteristics (process types, signal types, tags, scale, format specifiers), domain values, sample access methods, type-specific value handling, structured data, attachments, and enumerations with practical examples.

2 Iterating Samples

Sample iteration in impulse using two complementary approaches: pointers (IPointer, ISamplePointer, IGroupPointer) for interactive navigation with random access, and iterators (ISamplePointerIterator) for systematic bidirectional traversal. Details positioning methods, edge detection for logic signals, sample traversal across discrete and continuous signals, and performance optimization strategies with practical code examples.

3 Writing Samples

Writing signal data in impulse using type-specific writer interfaces (IIntegerSamplesWriter, IFloatSamplesWriter, ILogicSamplesWriter, IStructSamplesWriter) that ensure correct encoding and efficient storage. Covers writer lifecycle (open-write-close pattern), position management with domain bases, sample tagging, groups and transactions, continuous vs. discrete signals, and performance optimization with practical code examples and best practices.

4 Building Records

Building hierarchical record structures in impulse using IRecordProducer for multi-domain records or ISingleDomainRecordProducer for single-domain cases. Covers record initialization, creating scopes and signals with metadata, obtaining writers for signal population, domain handling (time, frequency), and applying changes. Includes practical examples for organizing simulation and measurement data with best practices for efficient record design.

5 Property Models

The impulse property system uses IPropertyModel to configure framework components with typed properties, validation rules, default values, and UI metadata. Covers creating property models with the factory pattern, working with typed properties (boolean, integer, double, enumerations), implementing validation with lambda expressions, defining option lists for dropdowns, and accessing properties in functional blocks for runtime configuration without code modification.

6 Implementing a Record Reader

Implementing custom readers in impulse by extending AbstractSingleDomainRecordReader or AbstractRecordReader to bridge external data formats and impulse’s record structure. Covers reader lifecycle (initialization, record creation, parsing, writing, finalization), input stream processing with buffering, signal population using writers, format detection, property models for configuration, progress reporting, and error handling with examples for text, binary, and compressed formats.