You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+49-7Lines changed: 49 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
**A professional-grade telemetry decoding and analysis workbench for satellite, aerospace, automotive, and industrial test engineers.**
4
4
5
-
SignalBench is a high-performance, engineer-grade telemetry workbench designed for mission-critical test campaigns. It supports everything from CubeSat missions to complex flight test systems, providing robust decoding for CSV, binary logs, and live network or serial streams. Decode, visualize, and analyze telemetry without the need for custom scripting.
5
+
SignalBench is a high-performance, engineer-grade telemetry workbench designed for mission-critical test campaigns. It supports everything from CubeSat missions to complex flight test systems, providing robust decoding for delimited text files (e.g., CSV, TSV), binary logs, and live network or serial streams. Decode, visualize, and analyze telemetry without the need for custom scripting.
6
6
7
7
## 🏗️ Project Structure
8
8
@@ -24,8 +24,8 @@ The project has recently undergone a major architectural overhaul to support a "
24
24
## 🚀 Features
25
25
26
26
-**Workspace-Centric UI**: Top-level tabbed architecture. Each tab is a complete workspace with its own independent data source (File, Serial, or Network), signal selection sidebar, and plot configuration.
27
-
-**Intelligent Data Import**: Specialized, format-aware dialogs for CSVand Binary data. Includes live data previews, delimiter/header configuration, and validation to prevent malformed imports.
28
-
-**Binary Telemetry Mapping**: Full control over binary decoding via YAML-defined packet schemas. Supports custom timestamp field selection from any numeric field in the schema.
27
+
-**Intelligent Data Import**: Specialized, format-aware dialogs for Delimited Text (CSV, TSV, etc.) and Binary data. Includes live data previews, custom delimiter/header configuration, and validation.
28
+
-**DSDL-Lite Binary Decoding**: Full control over binary decoding via YAML-defined packet schemas with support for scaling, units, and nested fields.
29
29
-**Live Network Streaming**: Connect via **TCP (Client)** or **UDP (Listener)** to decode and visualize data in real-time.
30
30
-**Live Serial Streaming**: Connect to COM ports with full control over Baud Rate, Parity, and Stop Bits.
31
31
-**High Performance**: Handles large files (> 500K+ records) and high-frequency streams efficiently using a Hybrid (In-Memory/SQLite) data store.
@@ -34,6 +34,50 @@ The project has recently undergone a major architectural overhaul to support a "
34
34
-**Data Logging**: Record raw network or serial streams directly to disk while visualizing.
35
35
-**Session Management**: Save and restore workspace sessions (`.sbs` files). Supports multi-tab persistence, embedded schemas, and **automatic restoration** of the last session on startup.
36
36
37
+
## 📄 DSDL-Lite Packet Schema
38
+
39
+
SignalBench uses a professional-grade YAML schema format inspired by industry standards like DSDL (Data Structure Definition Language). This allows you to define complex binary packets with support for nested groups, linear transformations, and categorical mappings.
40
+
41
+
### Key Capabilities
42
+
-**Recursive Namespacing**: Group related signals into hierarchies (e.g., `Battery/Cell1/Voltage`).
43
+
-**Linear Transformation**: Automatically convert raw integers to physical values using `scale` and `offset` (`PhysicalValue = (Raw * Scale) + Offset`).
44
+
-**Categorical Lookup**: Map numeric status codes to human-readable strings (Enums).
45
+
-**Physical Metadata**: Assign units (V, A, Hz, °C) that are displayed throughout the UI and statistics panels.
46
+
47
+
### Comprehensive Schema Example
48
+
```yaml
49
+
packet:
50
+
name: "FlightController"
51
+
endianness: little
52
+
fields:
53
+
- name: "system_status"
54
+
type: uint8
55
+
lookup:
56
+
0: "BOOTING"
57
+
1: "READY"
58
+
2: "FAULT"
59
+
60
+
- name: "battery"
61
+
fields: # Nested Group
62
+
- name: "voltage"
63
+
type: uint16
64
+
scale: 0.001# Convert mV to V
65
+
unit: "V"
66
+
- name: "current"
67
+
type: int16
68
+
scale: 0.1
69
+
unit: "A"
70
+
71
+
- name: "environment"
72
+
fields:
73
+
- name: "temperature"
74
+
type: int16
75
+
scale: 0.01
76
+
offset: -40.0
77
+
unit: "°C"
78
+
description: "Internal ambient temperature"
79
+
```
80
+
37
81
## 🚀 Getting Started (Quick Start)
38
82
39
83
### 1. Load a Packet Schema
@@ -42,8 +86,8 @@ Before loading binary data or streaming, the app needs to know the structure of
42
86
* Define or select a `.yaml` schema file.
43
87
44
88
### 2. Import Static Telemetry Data
45
-
***CSV Import**: Click the **CSV File icon** in the **DATA FILE** group.
46
-
* Select your file, configure the **Delimiter** and **Has Header** settings.
89
+
* **Delimited Text File Import**: Click the **Text File icon** in the **DATA FILE** group.
90
+
* Select your file, configure the **Delimiter** (Comma, Semicolon, Pipe, Tab, etc.) and **Has Header** settings.
47
91
* The preview grid will update automatically to validate your settings.
48
92
* **Binary Import**: Click the **Binary File icon** (identified by the '101' badge).
49
93
* Select your file and a corresponding schema.
@@ -70,11 +114,9 @@ Streaming settings are **per-workspace (per-tab)**. You can stream from multiple
70
114
71
115
- **Platform**: Windows, Linux, macOS (Cross-platform via Avalonia)
72
116
- **Runtime**: .NET 9.0 SDK
73
-
-**Hardware**: Serial port access or Network (Ethernet/WiFi) connectivity
0 commit comments