Design goals¶
The IOCOM library connects IO devices to control computer in a heterogeneous network environment. The same library code run on computers and micro controllers.
Connect distributed IO devices to controller
Make it simple, reliable and fast.
Open source, free to use also as part of commercial code.
No compromises. Only one simple way to the specific job.
Reference implementation and documented protocol to connect the devices.
Code can be ported to any system with standard C compiler and sufficient resources.
Data is seen as memory blocks. Memory blocks are plain byte arrays.
Memory blocks are transferred to one direction only.
Application never locks up. If communication doesn’t keep up with changes by application, frames are dropped.
Preserve order of changes and data transfer synchronization, so that application will know that whole memory block is up to date.
Low small transaction latency. Typical goal is around 1 milliseconds, depending on hardware.
High through output in bigger transactions.
Large address space size. Typically 32k bytes for 8/16 bit micro-controllers and 2GB for 32/64 bit systems. Practical maximum memory block size is set by available system memory.
Point to point connection over TCP socket or full duplex serial communication.
Low overhead. Small message headers, transfer only changes, compress transferred data.
Secure TLS connections and device identification when needed.
RTOS multi-threading support, when needed.
180812, updated 20.5.2020/pekka