PLAIN can map an ADC value as a easyIPC object and access it directly. The design here should be recognizable for anyone that have used Modbus or CANopen in the past. Modbus, as an example, can map its registers into easyIPC registers.
We do however also support User instructions. As we add modules that enable themselves as part of PLAIN Assembly they can also add their own specialized instructions. This creates challenges of it’s own where we need to real-time linker to convert category codes or reject an application as it is downloaded.
The way this works is that the new instruction is a callback into C/C++ code with the instruction itself as the only parameter. The more complex part is adding this to the Assembler and Compiler (and not only the VM).
The idea is that we use an XML script to describe our VM. This will describe the added instructions and be required by the Assembler. A specialized utility can generate C tables needed to add the same information into the firmware library.