How bibek198/biobridge-gateway works
BioBridge is a browser-based sensor gateway paired with ESP32 firmware and shared C signal-processing code. Its main workflow takes sensor byte streams through transport and descriptor decoding, aligns device clocks, computes derived measurements and alerts, then presents and records the results. Other major capabilities include configurable processing placement, recording replay, clock-sync evaluation, and AI-proposed descriptors checked against captured data. Some subsystem links below rely on the README because their implementation was not sampled.
Main entry points: sessionManager.ts Session manager · node_a/main.cpp ECG node · node_b/main.cpp PPG node · descriptorDriver.ts Descriptor driver
Components 21
Sensor firmware
- ECG node
firmware/src/node_a/main.cpp - PPG node
firmware/src/node_b/main.cpp - Sync node
firmware/src/node_sync/main.cpp - Frame protocol
firmware/lib/bbframe/src/bbframe.c - Edge placement
firmware/src/common/placement.cpp
Browser gateway
- Gateway UI
app/src/App.tsx - Session manager
app/src/session/sessionManager.ts - Device transports
app/src/transports
Decode and timing
- Descriptor driver
app/src/drivers/descriptorDriver.ts - Descriptor compiler
app/src/descriptors/compile.ts - Clock mapping
app/src/time/clock.ts
Compute and research
- Shared DSP
firmware/lib/bbdsp/src/bbdsp.c - Compute pipeline
app/src/compute/pipeline.ts - Browser DSP
app/src/dsp/edgeDsp.ts - Sync evaluation
app/src/sync/evaluate.ts - Descriptor verifier
app/src/verify/verifier.ts
Records and synthesis
- Recording format
app/src/session/recording.ts - Recording storage
app/src/session/recordingStore.ts - Descriptor synthesis
app/src/synth/service.ts
Other components
- Sensor boards
- LLM providers
Connections 25
- Sensor boards → ECG node: samples ECG
- Sensor boards → PPG node: samples PPG
- Sync node → ECG node: timing pulse
- Sync node → PPG node: timing pulse
- ECG node → Frame protocol: encodes frames
firmware/src/node_a/main.cpp - PPG node → Frame protocol: encodes frames
firmware/src/node_b/main.cpp - ECG node → Edge placement: configures placement
firmware/src/node_a/main.cpp - PPG node → Edge placement: configures placement
firmware/src/node_b/main.cpp - Edge placement → Shared DSP: runs algorithms
- ECG node → Device transports: streams serial
- PPG node → Device transports: streams BLE
- Device transports → Descriptor driver: delivers bytes
- Descriptor driver → Descriptor compiler: decodes with
app/src/descriptors/compile.ts - Descriptor driver → Clock mapping: maps timestamps
- Session manager → Descriptor driver: manages connections
app/src/session/sessionManager.ts - Session manager → Compute pipeline: processes readings
app/src/session/sessionManager.ts - Compute pipeline → Browser DSP: runs DSP modules
app/src/session/sessionManager.ts - Session manager → Gateway UI: feeds dashboard
- Session manager → Recording format: serializes recordings
app/src/session/sessionManager.ts - Recording format → Recording storage: stores recordings
- Session manager → Sync evaluation: evaluates alignment
- Session manager → Descriptor verifier: checks data
app/src/session/sessionManager.ts - Descriptor synthesis → Descriptor verifier: validates proposals
app/src/synth/service.ts - Descriptor synthesis → LLM providers: requests proposals
app/src/synth/service.ts - Gateway UI → Session manager: accesses session