Namespace Wss.CoreModule
Classes
AmpCurveParams
Piecewise amplitude curve parameters used to map mA to 0..255. mA <= LowThreshold: out = pow(mA / LowConst, ExpPower) + 1 mA > LowThreshold: out = ((mA + LinearOffset) / LinearSlope) + 1
ContactConfigDefinition
Describes a contact configuration to create on the WSS device.
CoreConfig
Represents the core configuration persisted to stimConfig.json.
Includes device-count, firmware, target-address, and amplitude-curve settings.
CoreConfigController
Controls loading, validating, reading, and writing a configuration JSON file. Thread-safe. Ensures a valid default config exists on disk.
CreateEventRequest
Describes an event to create on the WSS device.
DictConfigBase
Base class for JSON-backed configuration objects that expose dotted-key access. Wraps a Newtonsoft.Json.Linq.JObject and provides thread-safe getters/setters and persistence.
EventPulseWidths
Holds pulse-width values for an event definition.
JsonReader
Lightweight helpers for loading and saving JSON configuration files. Provides typed object and Newtonsoft.Json.Linq.JObject utilities and ensures parent directories exist before writes.
Log
Lightweight, host-agnostic logger.
- Works in plain .NET via Console/Debug.
- Detects Unity at runtime via reflection and forwards to UnityEngine.Debug.
- Exposes a pluggable sink/event so hosts can capture logs.
ModuleSettings
Strongly-typed snapshot of settings returned by a ModuleQuery-like payload. Includes a safe decoder for the data-only payload and helpers for selecting amplitude mapping behavior (e.g., 10 mA vs 72 mA based on HW flags).
ScheduleDefinition
Describes a schedule to create on the WSS device.
SerialPortTransport
Serial-port implementation of ITransport for WSS communications. Wraps System.IO.Ports.SerialPort and exposes an event-driven receive API that works well in Unity/.NET Standard 2.0.
SerialPortTransportOptions
Holds connection settings for SerialPortTransport.
StimParamsBasicExtensions
Convenience extension methods over IStimParamsCore that forward to the optional BASIC layer (IBasicStimulation).
StreamChangeRequest
Describes a streaming update for PA, PW, and IPI groups.
TestModeTransport
In-memory transport for debugging and unit tests. No real I/O. Features: artificial latency, jitter, inbound chunking, and drop simulation. Default auto-responder validates checksum, flips sender/target, and echoes or replaces payload.
TestModeTransportOptions
Holds behavior settings for TestModeTransport.
WSSVersionHandler
Handles firmware version parsing and feature availability based on known supported versions.
Waveform
Waveform container holding cathodic and anodic shape arrays and a computed total area.
WaveformBuilder
Utility for constructing charge-balanced stimulation waveforms. Given a cathodic shape, it computes a matching anodic recharge segment and exposes helpers to retrieve shapes and total area.
WssClient
Low-level protocol client. Frames commands using an IFrameCodec,
sends them over an ITransport, and correlates responses by
(target,msgId).
WssClientOptions
Holds behavioral settings for WssClient.
WssFrameCodec
Frame codec implementing a SLIP-like protocol:
- END (
0xC0) terminates a frame. - ESC (
0xDB) escapes special bytes inside the frame. - END_SUB (
0xDC) represents END when escaped. - ESC_SUB (
0xDD) represents ESC when escaped.
[sender][target][payload...][checksum][END].
The checksum is computed over all bytes except the last two (checksum + END).
WssStimulationCore
Stimulation core that manages connection, setup (via a queued step runner), and a background streaming loop. Public mutator methods enqueue device edits and return immediately.
WssStimulationCoreOptions
Holds startup and default stimulation settings for WssStimulationCore.
Interfaces
IBasicStimulation
Basic stimulation operations that upload or select waveforms and manage board configuration. Calls are non-blocking; implementations may enqueue setup steps and return immediately.
ICoreConfig
Read-only view of core configuration values loaded from a JSON config file.
IFrameCodec
Contract for framing and deframing messages over byte-stream transports (Serial, BLE, TCP).
IStimulationCore
Stimulation core lifecycle and control surface. Implementations manage connection, setup, and a background streaming loop. Public mutators should enqueue edits and return immediately.
ITransport
Abstraction over a byte-stream transport (e.g., Serial, Bluetooth, TCP). Implementations surface incoming bytes via BytesReceived and provide async connect/disconnect/send operations.
Enums
Log.LogLevel
Log severity.
ModuleSettings.FingerswitchConfig
Fingerswitch operating mode, when present.
ModuleSettings.HwConfigFlags
Hardware configuration flags reported by the device. Each bit defines an independent setting; the on-wire value is the sum of set bits. In particular, bit 1 (value 2) indicates 10 mA PA mode and bit 2 (value 4) indicates 10 ms pulse guard.
ModuleSettings.ParameterStepKind
Which parameter the front-panel step affects (PA or PW).
WSSLimits
Device- and protocol-level numeric limits and sizes used by the WSS stack. Values reflect firmware constraints such as maximum pulse width and buffer sizes.
WSSMessageIDs
Protocol message identifiers used by the firmware. Values correspond to on-wire command codes.
WSSVersionHandler.SupportedVersions
Enum representing known supported WSS firmware versions. Integer values correspond to internal numeric codes.
WssTarget
Addresses for targeting individual units or broadcasting to all. Values are on-wire destination IDs used by commands.