@gtec-neurotechnology/amplifier-contract
v1.0.0
Published
The amplifier contract for g.tec devices: the interface a UI drives (IGtecAmplifier), and the adapter surface the BLE implementations share
Maintainers
Readme
@gtec-neurotechnology/amplifier-contract
The contract between a user interface and a g.tec amplifier.
- The package root is what a UI imports:
IGtecAmplifier, the prompts the UI implements (IAmplifierPrompts), and the types around them, and the list of supported devices. Nothing here names a transport, an operating system or a native library. ./adapteris the low-level surface the BLE implementations share (IGtecBleAdapter, its results, events and enums) and the battery reporting rule. A UI has no reason to import it.
npm install @gtec-neurotechnology/amplifier-contractThe implementations are @gtec-neurotechnology/ble-chromium (browsers),
@gtec-neurotechnology/ble-mobile (React Native) and
@gtec-neurotechnology/ble-tauri (Tauri apps); @gtec-neurotechnology/ble
picks the right one for the host.
Connecting
The application injects an implementation of IGtecAmplifier chosen by
the host it runs in. Connecting has one start and one end on every host:
const result = await amplifier.connect(prompts)
// result.outcome: 'connected' | 'cancelled' | 'failed'A browser asks through its own chooser and never calls the prompts; a
phone or a desktop scans and calls prompts.pickDevice with a list that
grows as devices turn up. Samples are µV everywhere. The battery is a
capability, reported when it changes and at most once a minute, never a
sample channel. Each sample's timestamp is ms since the app's session
zero (@gtec-neurotechnology/gpype-clock), NaN before a session.
Supported devices
SUPPORTED_DEVICE_PREFIXES is the list of BLE devices g.Pype supports, by
the name prefix they advertise: UN- (Unicorn), U8- (BCI Core-8) and
U4- (BCI Core-4). Every implementation lists and opens only those
(isSupportedDevice); there is no option to show others, and a device with
no name is never listed. A UI shows what the amplifier hands it and keeps
no list of its own. A family is added or dropped by a release of this
package.
Renamed events
The adapters' data events were renamed. A listener on an old name never fires, so the adapters print a console warning, once per name, the first time something listens to one:
| Old event | Listen to instead |
|---|---|
| dataAvailable | eegAvailable for the EEG channels only (recommended), or mixedDataAvailable for every channel (EEG mixed with counter, battery and validity) |
| dataAvailableBatched | mixedDataAvailableBatched: every channel; for EEG only, eegAvailable |
Do not assume where the EEG sits in a mixed sample: take eegAvailable, or
locate channels by getDeviceInformation().channelTypes.
License
© g.tec medical engineering GmbH. g.tec Non-Commercial License (GNCL) v1.0, with an additional permission to include this package, compiled or bundled, in an application you distribute for private or educational purposes. Using such an application commercially requires a g.Pype Runtime licence. See LICENSE-GNCL.txt.
