Getting started

Quick start

From unboxing to running code — four steps.

1. Install software

Download AISCToolkit for Windows. Includes WinUSB drivers, OmniControlPanel GUI, and the AISC Script compiler. Requires Windows 7 or later.

2. Connect the board

Plug in via USB. Windows installs the WinUSB driver automatically on first connection. The board LED blinks twice when the firmware handshake completes.

3. Open OmniControlPanel

Launch the GUI, select your board from the device list, and start reading analog inputs or toggling digital outputs — no code required for initial testing.

4. Integrate the DLL

Add AISClib.dll as a reference in your C# project. Call Connect(), then use any API function. The example project in the download package demonstrates every function.

Hardware docs

Datasheets

DocumentContents
Omni One Datasheet Electrical specs, pinout, connector table, absolute maximum ratings, mechanical drawing Request PDF
Omni Plus Datasheet Omni One specs plus relay wiring diagrams, isolation ratings, and mains safety guidance Request PDF
Token Plus Datasheet Dual-processor architecture, SPI command reference, web API endpoint list, and enclosure dimensions Request PDF
USB Protocol Reference Complete frame format, all command IDs, request/response byte maps for custom host implementations Request PDF

Software

Downloads

PackageContentsPlatform
AISCToolkit OmniControlPanel, AISC Script compiler, WinUSB drivers, C# example projects Windows 7/10/11 Request
AISClib.dll (x64) .NET wrapper DLL for direct USB communication. Exposes all API functions. Windows x64 Request
Omni firmware source TivaWare-based C firmware for Code Composer Studio. All command handlers included. Cross-platform (CCS) Request
Token Plus firmware ESP8266 (Arduino SDK) + MSP430 (Energia) source code with SPI protocol implementation Arduino IDE / Energia Request

Reference

AISClib.dll API reference

Initialize the connection with Connect(), then call any function. All functions block until the board responds (typical round-trip under 5ms over USB Full Speed).

FunctionParametersReturnsDescription
Analog I/O
ReadAI(ch)ch: 1–8floatRead analog input in volts. Range: ±20V. 12-bit resolution.
Digital I/O
ReadDI(ch)ch: 1–8int (0/1)Read optoisolated digital input state
WriteIO(ch, val)ch: 1–8, val: 0/1voidSet LSD digital output state
Relay — Omni Plus only
WriteRly(ch, state)ch: 1–4, state: 0/1voidOpen (0) or close (1) relay contact
ReadRly(ch)ch: 1–4int (0/1)Read current relay state
UART
ConfigUART(port, baud)port: 1–2, baud ratevoidSet UART baud rate (300–921600)
UARTWrite(port, data)port: 1–2, byte[]voidTransmit bytes
UARTRead(port)port: 1–2byte[]Read available bytes from receive buffer
SPI
ConfigSPI(cs, mode, freq)cs: 1–5, mode: 0–3, HzvoidConfigure chip-select, CPOL/CPHA, clock frequency
SPITransfer(cs, tx)cs: 1–5, byte[]byte[]Full-duplex transfer, returns simultaneously received bytes
I2C
ConfigI2C(addr, speed)7-bit addr, 100k/400kvoidSet target address and bus speed
I2CWrite(data)byte[]boolWrite bytes; returns false if NAK received
I2CRead(count)count: 1–255byte[]Read N bytes from the configured address
CAN
WriteCAN(id, data)11/29-bit ID, byte[]voidTransmit CAN frame (standard or extended)
ReadCAN()CANFrameRead oldest pending frame. Returns null if buffer empty.
System
Connect()boolOpen USB connection. Returns false if no board found.
Disconnect()voidRelease USB handle
GetDeviceInfo()DeviceInfoFirmware version, board type, capability flags

Language reference

AISC Script

AISC Script is an assembly-like language for standalone board programs. Programs are compiled by AISCToolkit and stored in the board's EEPROM. Base address: 0x20000004.

InstructionSyntaxDescription
INTINT nameDeclare an integer variable
READAIREADAI ch, varRead analog input ch (1–8) into variable
READDIOREADDIO ch, varRead digital input ch (1–8) into variable
WRITEDIOWRITEDIO ch, valWrite digital output ch (1–8) with value 0 or 1
ADDADD var, valvar = var + val
SUBSUB var, valvar = var − val
MULMUL var, valvar = var × val
DIVDIV var, valvar = var ÷ val
WAITWAIT msDelay for N milliseconds
JMPJMP labelUnconditional jump
JEGJEG var, val, labelJump if var ≥ val
JELJEL var, val, labelJump if var ≤ val
JEJE var, val, labelJump if var == val
JNEJNE var, val, labelJump if var != val
TAGTAG0:Define a jump label (TAG0 through TAG9)
; Read AI channel 1, toggle DO 1 when signal exceeds ~2.4V INT reading TAG0: READAI 1, reading JEG reading, 5000, TAG1 ; 5000 ≈ 2.4V in ADC counts WRITEDIO 1, 0 ; output off JMP TAG0 TAG1: WRITEDIO 1, 1 ; output on WAIT 100 JMP TAG0

Low-level reference

USB frame protocol

For host applications not using AISClib.dll. All communication uses USB Bulk transfers (64-byte packets, Full Speed).

Frame structure (bytes): H0 H1 H2 H3 AC Ty1 TY0 ID1 ID0 DL1 DL0 [data...] H0–H3 Magic header: 0xAA 0x55 0xAA 0x55 AC Acknowledgment / control byte Ty1TY0 Command type (big-endian 16-bit) ID1ID0 Command ID (big-endian 16-bit) DL1DL0 Data length (little-endian 16-bit)
TypeCommand
0x0001GetDeviceInfo — returns firmware version and board identifier
0x0002DIO Config — set channel directions and pull configuration
0x0003Digital I/O — read DI channels or write DO channels
0x0004Analog Config — set ADC sample rate and channel enable mask
0x0005Read AI — returns raw ADC values for all enabled channels
0x0006SPI Transfer — full-duplex, specify chip-select ID and data payload
0x0007I2C — combined write/read with repeated-start support
0x0008UART — configure port or queue transmit/receive data
0x000ACAN Transmit — send standard or extended CAN frame
0x000BCAN Receive — dequeue pending received frames

WiFi development

Token Plus firmware development

The ESP8266 firmware uses the Arduino SDK / Espressif RTOS SDK. The MSP430 firmware uses Energia (TI's Arduino-compatible IDE for MSP430).

ESP8266 SPI driver

4 MHz HSPI master driver for the ESP8266-to-MSP430 link. Full-duplex, configurable CPOL/CPHA. Use spi_master_op() for transactions. The MSP430 acts as SPI slave on the same bus.

HTTP client

Async HTTP GET/POST client with 5 KB max payload. Callback-based response handling. Supports posting sensor readings to external endpoints or receiving commands from a cloud service.

MSP430 flash tool

MSPFlasher protocol for in-system programming via UART. Mass erase followed by Intel HEX download. Checksum verification (CKL/CKH) confirms successful write. Contact us for firmware images.

Support

Frequently asked questions

Does AISClib.dll work on 64-bit Windows?
Yes. Both x86 and x64 builds are provided. Ensure your .NET project targets the matching architecture, or use AnyCPU with the x64 DLL for 64-bit hosts.
Can the Omni boards be used without Windows?
AISClib.dll is Windows-only. For other operating systems, you can implement the USB Bulk command protocol directly in any language that supports USB HID or WinUSB-compatible communication. The full protocol reference is available on request.
What IDE is needed for native firmware development?
Texas Instruments Code Composer Studio (CCS) with the TivaWare SDK. CCS is a free download from TI. The on-board JTAG debugger connects to CCS via USB — no external programmer is needed.
How do I update Token Plus firmware?
The ESP8266 firmware supports OTA updates through the device web interface. The MSP430 firmware is updated via the MSPFlasher UART protocol. Contact us to obtain firmware update files.
Are hardware design files available?
Schematics, gerber files, and BOMs are available to customers under a limited license. Contact us to request design file access.