The sensing backend behind RuntimeFrontendController.
virtual void set_listener(IRuntimeListener *listener)=0
Install the event sink, or nullptr to detach.
virtual bool set_traffic_generator_mode_runtime(RuntimeTrafficMode mode)
Change the internal traffic generator packet type while running.
virtual void loop()=0
Advance runtime work and drain deferred events.
virtual void set_services_armed(bool armed)=0
Gate the runtime-owned services without tearing the runtime down.
virtual RuntimeCapabilities get_capabilities() const =0
What this backend actually supports.
virtual bool is_calibrating() const =0
True while startup calibration is running and detection is not yet valid.
virtual void shutdown()=0
Stop sensing and release everything setup() acquired.
virtual ~IEspectreRuntime()=default
virtual bool setup()=0
Bring the runtime up: radio hooks, CSI capture, detector, traffic.
virtual bool set_detection_algorithm_runtime(DetectionAlgorithm algorithm)=0
Switch detector while running, rebuilding detector state.
virtual bool set_motion_hits_runtime(uint8_t motion_on_hits, uint8_t motion_off_hits)=0
Retune the hit filter while running.
virtual RuntimeDiagnosticsSnapshot get_diagnostics() const
Capture, traffic, and link counters for diagnostic frontends.
virtual bool trigger_recalibration()=0
Restart startup calibration against the current ambient channel.
virtual bool set_csi_traffic_mode_runtime(CsiTrafficMode mode)
Switch who owns the CSI-bearing traffic while running.
virtual void set_live_telemetry_enabled(bool enabled)=0
Enable or suppress the high-rate on_live_telemetry() stream.
virtual bool set_threshold_runtime(float threshold)=0
Retune the motion threshold while running.
virtual RuntimeSnapshot get_snapshot() const =0
Current sensing state.
Everything the runtime tells your firmware.
constexpr uint8_t RUNTIME_MOTION_ON_HITS_DEFAULT
constexpr uint8_t RUNTIME_STREAM_TX_BATCH_RECORDS_DEFAULT
constexpr uint8_t RUNTIME_HAMPEL_WINDOW_DEFAULT
constexpr float RUNTIME_SEGMENTATION_THRESHOLD_DEFAULT
constexpr uint32_t RUNTIME_PUBLISH_INTERVAL_MS_DEFAULT
constexpr uint16_t RUNTIME_STREAM_COLLECTOR_PORT_DEFAULT
constexpr uint8_t RUNTIME_MOTION_OFF_HITS_DEFAULT
constexpr uint32_t RUNTIME_STREAM_LOG_INTERVAL_MS_DEFAULT
RuntimeProfile
Which runtime backend the controller builds.
@ SENSING
Detect motion on-device and report state.
constexpr uint32_t RUNTIME_SEGMENTATION_WINDOW_SIZE_MS_DEFAULT
RuntimeTrafficMode
Which packet the internal generator sends to solicit CSI from the AP.
constexpr uint32_t RUNTIME_CSI_TARGET_PPS_DEFAULT
constexpr const char *const RUNTIME_CSI_TRAFFIC_MULTICAST_GROUP_DEFAULT
CsiTrafficMode
Where the CSI-bearing traffic comes from.
@ INTERNAL
The runtime generates its own traffic at csi_target_pps.
constexpr bool RUNTIME_LOWPASS_ENABLED_DEFAULT
constexpr float RUNTIME_LOWPASS_CUTOFF_DEFAULT
constexpr uint16_t RUNTIME_CSI_TRAFFIC_UDP_PORT_DEFAULT
constexpr uint32_t RUNTIME_EVALUATION_INTERVAL_MS_DEFAULT
WifiBandPolicy
Wi-Fi band selection requested by the embedding frontend.
@ BAND_5G
Restrict association to 5 GHz.
@ AUTO
Let a dual-band radio choose between 2.4 GHz and 5 GHz.
@ BAND_2G
Restrict association to 2.4 GHz.
DetectionAlgorithm
Which detector runs.
@ LIGHTWEIGHT
Lightweight feature fusion.
constexpr float RUNTIME_HAMPEL_THRESHOLD_DEFAULT
constexpr bool RUNTIME_HAMPEL_ENABLED_DEFAULT
The schema behind RuntimeConfig: enums, defaults, and valid ranges.
What a runtime actually offers its frontend.
Everything the runtime needs to know before setup().
std::string csi_traffic_multicast_group
IPv4 multicast group joined by the UDP listener in external and pacing.
uint8_t hampel_window
Hampel window in samples (3..11).
CsiTrafficMode csi_traffic_mode
Where the CSI-bearing traffic comes from.
uint32_t csi_target_pps
Target CSI sensing cadence, in packets per second.
uint32_t stream_log_interval_ms
RuntimeProfile::STREAM only: interval between stream status logs, in ms (100..60000).
uint32_t segmentation_window_size_ms
Detector window duration in milliseconds (1000..2000).
RuntimeProfile runtime_profile
Which backend to build: motion sensing, or raw CSI streaming to a collector.
uint16_t csi_traffic_udp_port
UDP port used by the external and pacing CSI traffic modes.
bool hampel_enabled
Enable Hampel outlier rejection on the turbulence stream.
float hampel_threshold
Hampel MAD multiplier (1.0..10.0).
DetectionAlgorithm detection_algorithm
Detection profile to run.
std::string csi_traffic_expected_payload
Payload marker that identifies accepted external CSI traffic (0..16 bytes).
uint8_t motion_off_hits
Consecutive below-threshold evaluations before clearing motion (1..20).
float segmentation_threshold
Motion probability threshold, on the same 0..1 scale as RuntimeSnapshot::movement_metric.
RuntimeTrafficMode traffic_generator_mode
Which packet the internal generator sends to solicit CSI.
bool lowpass_enabled
Enable the low-pass filter on the turbulence stream.
WifiBandPolicy wifi_band_policy
Band available to the station while the runtime keeps the PHY at HT20.
uint32_t publish_interval_ms
Milliseconds between IRuntimeListener::on_periodic_update() callbacks.
uint64_t device_id
Stable device identity used by the ESPectre Protocol and CSI streaming.
uint8_t motion_on_hits
Consecutive above-threshold evaluations before reporting motion (1..20).
float lowpass_cutoff
Low-pass cutoff in Hz (5.0..20.0).
uint8_t stream_tx_batch_records
RuntimeProfile::STREAM only: CSI records coalesced into one datagram (1..7).
uint32_t evaluation_interval_ms
Detector evaluation cadence in milliseconds.
bool runtime_detector_selection_enabled
Advertise runtime detector switching.
uint16_t collector_port
RuntimeProfile::STREAM only: UDP port of the host CSI collector (1..65535).
Low-frequency counters and radio state used by optional diagnostic surfaces.
A consistent view of the sensing state at one instant.