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