Skip to content

Commit 3a55bad

Browse files
committed
Rewrite README for OpenView 3; refresh screenshots
- Correct the transport matrix: HealthyPi 5 and both Sensythings speak USB + BLE + Wi-Fi (the old text claimed BLE was Sensything-only) - Document Device Manager (SMP/MCUmgr), Console, Developer and replay - Add a per-board support table, build-from-source and add-a-board sections - Replace the OpenView 2 screenshots with current OpenView 3 captures (desktop Live view, iPad landscape)
1 parent 128929e commit 3a55bad

5 files changed

Lines changed: 147 additions & 53 deletions

File tree

README.md

Lines changed: 147 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,87 +1,151 @@
11
<div align="center">
22

3-
![Protocentral Logo](docs/images/protocentral.png)
3+
![ProtoCentral](docs/images/protocentral.png)
44

55
# OpenView 3
66

7+
**The companion app for ProtoCentral biosignal and sensor boards.**
8+
Stream live data over USB, BLE or Wi-Fi · visualize it in real time · record it to `.hpd` · replay it later.
79

8-
OpenView 3 is a companion application to receive data from various ProtoCentral boards. It visualizes the data in real-time and records it to `.hpd` (BIOSIG) files for later replay.
10+
[![Release builds](https://github.com/Protocentral/protocentral_openview/actions/workflows/release.yml/badge.svg)](https://github.com/Protocentral/protocentral_openview/actions/workflows/release.yml)
11+
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](#license)
912

10-
![Openview Desktop App](docs/images/openview-screen-desktop.png)
13+
[**Download**](https://github.com/Protocentral/protocentral_openview/releases) · [Supported boards](#supported-boards) · [Build from source](#build-from-source) · [Add your own board](#add-your-own-board)
1114

12-
![Openview Mobile App](docs/images/openview-screen-mobile.jpg)
15+
![OpenView live view](docs/images/openview-live-desktop.png)
16+
17+
*Live view — HealthyPi 5 streaming ECG, BioZ/respiration and PPG over BLE*
1318

1419
</div>
1520

16-
OpenView 3 is the current, primary supported app for all ProtoCentral boards. Built on the [Flutter framework](https://flutter.dev/), it runs on Windows, macOS, Linux, Android, and iOS.
21+
---
22+
23+
## What it does
24+
25+
OpenView 3 is a single app for every ProtoCentral board. It receives framed data from
26+
the board, decodes it into signals, plots it live, and writes it to `.hpd` (BIOSIG v1)
27+
files that round-trip with HealthyPi Studio.
28+
29+
It runs on **Windows, macOS, Linux, Android and iOS** from one Flutter codebase.
1730

18-
This repository is the canonical home of OpenView across versions. Earlier releases remain available: OpenView 2 lives on the [`v2` branch](https://github.com/Protocentral/protocentral_openview/tree/v2) (and its releases are tagged `2.x`), and the original Processing-based OpenView 1 is archived at [protocentral_openview_processing](https://github.com/Protocentral/protocentral_openview_processing).
31+
| | |
32+
|---|---|
33+
| **Live view** | Real-time plots of every channel the board exposes, with derived vitals (heart rate, SpO₂, respiration, temperature) shown alongside. |
34+
| **Record & replay** | One-click recording to `.hpd`, a built-in recordings browser, and a replay screen that scrubs through past sessions. |
35+
| **Device Manager** | Firmware and file management for any SMP/MCUmgr-enabled device over BLE — read image slots, upload firmware, browse the device filesystem. |
36+
| **Console** | Raw packet stream with hex dump, including packets the app doesn't recognize — the first place to look when bringing up new firmware. |
37+
| **Developer** | An unfiltered BLE GATT browser for poking at services and characteristics during bring-up. |
1938

20-
OpenView 3 connects over three transports:
39+
## Connecting
2140

22-
* **USB/UART** — desktop only; supported by every board.
23-
* **BLE** — currently available only for the **Sensything** family.
24-
* **Wi-Fi (TCP)** — currently available only for the **Sensything** and **HealthyPi** families.
41+
Three transports, gated per board — the app only offers what the board actually speaks.
2542

26-
## Features:
43+
| Transport | Availability |
44+
|---|---|
45+
| **USB / UART** | Every board. **Desktop only** (Windows, macOS, Linux). |
46+
| **BLE** | HealthyPi 5, Sensything OX, Sensything CAP. All platforms. |
47+
| **Wi-Fi (TCP)** | HealthyPi 5, Sensything OX, Sensything CAP. Enter `host:port` manually. |
2748

28-
* Multiple boards, one unified interface
29-
* Mobile platforms: Android and iOS
30-
* Desktop platforms: Windows, macOS, and Linux
31-
* USB, BLE, and Wi-Fi connectivity
32-
* Code development environment: [Flutter](https://flutter.dev/)
33-
* Records to `.hpd` (BIOSIG) files, round-trip compatible with HealthyPi Studio
34-
* You can add your own board by declaring a descriptor in the source (see `lib/boards/`)
49+
## Supported boards
3550

36-
## Supported Boards
37-
* [HealthyPi 5](https://protocentral.com/product/healthypi-5-vital-signs-monitoring-hat-kit/)
38-
* ProtoCentral Sensything (OX and CAP)
39-
* AFE breakouts: ADS1292R, ADS1293, AFE4490, MAX30001, MAX30003, MAX86150, Pulse Express, TinyGSR
40-
* [TMF8829](https://protocentral.com/) dToF depth-ranging
51+
| Board | USB | BLE | Wi-Fi |
52+
|---|:--:|:--:|:--:|
53+
| [HealthyPi 5](https://protocentral.com/product/healthypi-5-vital-signs-monitoring-hat-kit/) ||||
54+
| Sensything OX ||||
55+
| Sensything CAP ||||
56+
| ADS1292R · ADS1293 · AFE4490 ||||
57+
| MAX30001 · MAX30003 · MAX86150 ||||
58+
| Pulse Express · TinyGSR ||||
59+
| TMF8829 dToF (depth map) ||||
4160

42-
## Installing and using ProtoCentral OpenView 3
61+
Don't see your board? It takes three files and no changes to the app — see
62+
[Add your own board](#add-your-own-board).
4363

44-
You can download the latest version for your operating system from the [Releases](https://github.com/Protocentral/protocentral_openview/releases) page.
64+
## Install
4565

46-
OpenView 3 is written in [Flutter](https://flutter.dev/) and is fully open source. You can compile your own from the source code provided in this GitHub repository.
66+
### Desktop
67+
68+
Download the zip for your OS from the [Releases](https://github.com/Protocentral/protocentral_openview/releases)
69+
page, extract it, and run the app.
70+
71+
### Mobile
72+
73+
<div align="center">
4774

48-
### Using on Desktop Platforms:
75+
[![Google Play](docs/images/play_store.png)](https://play.google.com/store/apps/details?id=com.protocentral.openview) [![App Store](docs/images/appstore.png)](https://apps.apple.com/fi/app/openview/id1667747246)
4976

50-
1. Download the zip file from the [Releases](https://github.com/Protocentral/protocentral_openview/releases) page.
51-
2. Extract the zip file installed
52-
3. Open the app in the folder extracted and run the application
77+
</div>
5378

54-
### Using on Mobile Platforms:
79+
> **Note** — USB is not available on mobile. Use BLE or Wi-Fi.
5580
56-
Download the openview app from the [Google Play](https://play.google.com/store/apps/details?id=com.protocentral.openview) store for Android and from the [Apple App Store](https://apps.apple.com/fi/app/openview/id1667747246) for iOS.
81+
## Screenshots
5782

83+
The same app, the same layout, everywhere — the navigation rail collapses to a bottom bar
84+
on phones.
5885

5986
<div align="center">
6087

61-
[![Download from Google Play](docs/images/play_store.png)](https://play.google.com/store/apps/details?id=com.protocentral.openview) [![Download from App Store](docs/images/appstore.png)](https://apps.apple.com/fi/app/openview/id1667747246)
88+
![OpenView on iPad](docs/images/openview-ipad.png)
89+
90+
*OpenView 3 on iPad (landscape)*
91+
6292
</div>
6393

64-
## Packet Format
94+
## Build from source
95+
96+
OpenView 3 is written in [Flutter](https://flutter.dev/) and is fully open source.
97+
98+
```bash
99+
git clone https://github.com/Protocentral/protocentral_openview.git
100+
cd protocentral_openview
101+
flutter pub get
102+
flutter run -d macos # or windows / linux / <device-id>
103+
```
104+
105+
Release builds:
106+
107+
```bash
108+
flutter build macos # or windows / linux / apk / ios
109+
```
110+
111+
Linux additionally needs `libudev-dev`, `libgtk-3-dev`, `clang`, `cmake`, `ninja-build`
112+
and `pkg-config`. See [.github/workflows/release.yml](.github/workflows/release.yml)
113+
for the exact toolchain each platform is built with.
114+
115+
## Add your own board
116+
117+
A board is **declared, not coded**. Adding one touches three files and needs no changes
118+
to the transport, protocol, UI or recording layers:
65119

66-
ProtoCentral OpenView 3 is compatible with any device that can send data through a serial port over UART/USB/Bluetooth-SPP/BLE
120+
1. Declare a `BoardDescriptor` in `lib/boards/descriptors/<board>.dart` — its channels,
121+
packets, commands, and which transports it speaks.
122+
2. Write pure decoder functions in `lib/boards/decoders/<board>_decoders.dart`
123+
(`Uint8List payload → DecodedPacket`).
124+
3. Register the descriptor in `BoardRegistry.all`.
67125

68-
| Position | Value |
69-
| --------- | ----------|
70-
| 0 | 0x0A | 
71-
| 1 | 0xFA |
72-
| 2 | Payload Length LSB |
73-
| 3 | Payload Length MSB |
74-
| 4 | 0x02 (Type - Data) |
75-
| 5 | Payload 0 |
76-
| .. | Payload (...) |
77-
| n | Payload n+5 |
78-
| (PL Len + 5) | 0x0B |
126+
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the full data path
127+
(Transport → Framer → Router → buffers → UI → Recorder).
79128

80-
For Healthypi 5 firmware version 1.0.0 and above, the data (ECG, Bioz and PPG) are sent as seperate packets. Below are the respective packet formats
129+
## Wire format
130+
131+
Any device that can push bytes over UART/USB/BLE can talk to OpenView. The frame is:
132+
133+
| Position | Value |
134+
|---|---|
135+
| 0 | `0x0A` (start) |
136+
| 1 | `0xFA` (type indicator) |
137+
| 2 | Payload length LSB |
138+
| 3 | Payload length MSB |
139+
| 4 | Packet type |
140+
| 5 … n | Payload |
141+
| last | `0x0B` (stop) |
142+
143+
<details>
144+
<summary><b>HealthyPi 5 packet layouts</b> (firmware ≥ 1.0.0 sends ECG/BioZ and PPG as separate packets)</summary>
81145

82146
```mermaid
83147
packet-beta
84-
title Openview ECG & Bioz Packet
148+
title OpenView ECG & BioZ packet
85149
0-7: "0x0A (START)"
86150
8-15: "0xFA (Type Indicator)"
87151
16-23: "Payload Length LSB"
@@ -107,7 +171,7 @@ For Healthypi 5 firmware version 1.0.0 and above, the data (ECG, Bioz and PPG) a
107171

108172
```mermaid
109173
packet-beta
110-
title Openview PPG Packet
174+
title OpenView PPG packet
111175
0-7: "0x0A (START)"
112176
8-15: "0xFA (Type Indicator)"
113177
16-23: "Payload Length LSB"
@@ -127,13 +191,43 @@ For Healthypi 5 firmware version 1.0.0 and above, the data (ECG, Bioz and PPG) a
127191
200-207: "0x0B (STOP)"
128192
```
129193

130-
# License
194+
</details>
195+
196+
The TMF8829 depth-frame format is documented separately in
197+
[docs/protocols/tmf8829-wire-format.md](docs/protocols/tmf8829-wire-format.md).
198+
199+
## Recording format
200+
201+
Recordings are written as `.hpd` files (BIOSIG v1) — a block-based, append-only format
202+
that is binary-compatible with **HealthyPi Studio**, so files move freely between the
203+
two apps.
204+
205+
## Device Manager (SMP / MCUmgr)
206+
207+
OpenView can manage any device that exposes the standard SMP service over BLE, built on
208+
the [`mcumgr_dart`](https://pub.dev/packages/mcumgr_dart) package:
209+
210+
- **Device info** — echo, task/memory stats, image slots
211+
- **Firmware** — list images and upload new ones
212+
- **Files** — browse and transfer files on the device filesystem
213+
214+
> **Firmware upload works; the full DFU install flow (upload → test → reset → confirm)
215+
> is still work-in-progress and labelled as advanced use in the app.**
216+
217+
## Version history
218+
219+
OpenView has been through three generations. This repository is the canonical home for
220+
all of them:
131221

132-
This software is open source and licensed under the following license:
222+
| Version | Stack | Where |
223+
|---|---|---|
224+
| **OpenView 3** *(current)* | Flutter | `main` — this branch |
225+
| OpenView 2 | Flutter | [`v2` branch](https://github.com/Protocentral/protocentral_openview/tree/v2), releases tagged `2.x` |
226+
| OpenView 1 | Processing | [protocentral_openview_processing](https://github.com/Protocentral/protocentral_openview_processing) (archived) |
133227

134-
MIT License
228+
## License
135229

136-
Copyright (c) 2019 Protocentral
230+
MIT License — Copyright (c) 2019 ProtoCentral
137231

138232
Permission is hereby granted, free of charge, to any person obtaining a copy
139233
of this software and associated documentation files (the "Software"), to deal

docs/images/openview-ipad.png

200 KB
Loading
393 KB
Loading
-754 KB
Binary file not shown.
-275 KB
Binary file not shown.

0 commit comments

Comments
 (0)