ICI, Intelligent C-programmable I/O (i:zi)

The Intelligent C-programmable I/O (ICI) is a framework that allows users to format and process data in the RF module. ICI has access to resources such as the processing engine, the digital and RF interface, timers and memory. It enables network designers to create any sensor or controller interface, and, it can also pre-process data  (Mist computing). All is programmed in high-level C code.

ICI is available on the RIIoT SPR Module and on the RIIM IPM Module.

You can explore and test a number of ICI examples using the RIIM SDK, created to help the customer better understand the benefits and functionality of ICI. The examples include:

  • OTA update example – Demonstrates the efficient Over-The-Air functionality.
  • Large network example – This example was made to see the formation, topology, and status of a large (or small) network.
  • UART example – This example demonstrates the use of UART, including, UART setup, UART transmission and callback function, and UART reception with callback function and timeout.
  • Interfacing all sensors on the sensor board – This example interfaces all functions on the Radiocrafts sensor board. The application reads data from all sensors present on the sensor board.
  • Cloud Example – This example demonstrates how you can connect the RIIM development kit to the cloud. Radiocrafts uses “ThingsBoard” as a cloud application in this example.
  • Local Sensors Example – This example demonstrates how to interface sensors via various interfaces.

Read more about the RIIM SDK examples here.

You can download the RIIM SDK here and start creating your own highly efficient RF networks!

Three typical use cases for ICI:

  • Sensor and/or controller interface directly to the module, removing the need for external circuits
  • Mist computing to reduce bandwidth requirements and for fast response to local events
  • Set up and manage the RF network

The Radiocrafts modules with ICI support are Over The Air (OTA) upgradable. This means that the user can update the user defined ICI firmware when the network is deployed and in full operation, so new sensors/controllers can be added when the need arises.

ICI uses an event handling architecture to enable “If-this-than-that” programming using high level API modules. Almost any application can be created in less than 100 lines of code.

The event handler reacts to a defined trigger and then performs the actions defined by the user. All code is hosted on the RF module.

This high-level abstraction layer in ICI allows designers with no understanding of a real time operating system — or knowledge of the chip-set architecture — to create an intelligent network node. For example, intelligent node coding can include:

  • Initiating transmit to base-station based on local triggers
  • Interfacing with any sensor or actuator, including complex bus interfaces
  • Initiating complex event-driven control and/or transmit functions
  • Processing of local signals
  • Supporting advanced security measures
  • Logging local data
  • Creating local alarms
  • Supporting an advanced RF protocol

An ICI code example

Example code to setup an application with I2C, GPIO, and periodic timer.

void Setup()
{
// I2C clock speed to the SHT35 sensor
I2C.init(I2C_400KHZ);
// setup the button GPIO and event detection
GPIO.setDirection(GPIO_0, PIN_INPUT);
GPIO.setHandler(GPIO_0, FALLING_EDGE, sendData);
// setup periodic timer events
readSensorTimer = Timer.create(PERIODIC, 30 * SECOND, readSensor);
Timer.start(readSensorTimer);
}

If you are interested in the RIIoT™ Network solution that includes ICI, please click here.

If you want to know more about the RIIM™ Network solution that includes ICI, please click here.