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