January 30, 2017

IoTivity-Constrained: A Flexible Framework for Tiny Devices


IoTivity Constrained
We talk with Kishen Maloor, lead developer and maintainer of the IoTivity-Constrained project, about the project’s architecture, features, and uses.

The future of IoT will be connected by tiny, resource-constrained edge devices, says Kishen Maloor, Senior Software Engineer at the Intel Open Source Technology Center. And, the IoTivity-Constrained project is a small-footprint implementation of the Open Connectivity Foundation’s (OCF) standards that’s designed to run on just such devices.

In his upcoming talk at Embedded Linux Conference + OpenIoT Summit, Kishen, who is lead developer and maintainer of the IoTivity-Constrained project, will present the project’s architecture, features, and uses. We spoke with Kishen to get a preview of his talk and more information about this lightweight, customizable framework for IoT.


Kishen Maloor
Kishen Maloor, Senior Software Engineer at the Intel Open Source Technology Center

Linux.com: Please fill us in on the IoTivity-Constrained project. What is it? What are its goals?

Kishen Maloor: The future of IoT will be driven in part by vast numbers of tiny, connected sensors or embedded computing devices situated on the edge of the network, enabling novel experiences. The Open Connectivity Foundation (OCF) standards for connectivity and interoperability aim to contribute to this vision.

The IoTivity-Constrained project is a small-footprint implementation of the OCF standards and is tailored to run on such tiny, resource-constrained hardware and software environments. Its goal is to deliver a flexible and royalty-free software framework for developing IoT applications across a wide range of devices, operating systems, and network stacks.

Linux.com: What problems does the project seek to address?

Kishen: IoTivity-Constrained’s design and implementation address the following concerns.

  • Flash/RAM constraints: These restrict the workload of an application. There is usually no support for dynamic memory allocation. Software must be modular with the ability to include only the desired features for an application. It must further be able to identify and pre-allocate a set of resources.

  • Low frequency/Low power CPUs: These require that hot spots in code be lightweight and efficient, with minimal copy operations.

  • Battery-powered devices: Software must take advantage of known idle periods to put the CPU to sleep.

  • Single stack, diverse deployments: There are a multitude of software infrastructures (OS, libraries) to choose from in the embedded space, with variations in design and APIs that software built against one does not easily port over to another. Greater reuse and developer participation makes for more robust implementations. It is therefore desirable to have a single framework as a base, which can also be easily customized to any chosen platform.

  • OCF spec compliance: OCF has laid out a certification process to verify compliance with its specification and guarantee interoperability between OCF devices in the marketplace. Participation in this program is mandatory for vendors seeking to ship OCF-enabled products. It is hence useful for developers to rely on a framework that accurately represents all of the constructs of the OCF spec, and that is maintained for spec compliance. This would simplify their process of getting their products certified by OCF.

In addressing the above requirements, IoTivity-Constrained contains a common core that encompasses most of its features in a way that is OS-agnostic, lightweight, modular, and efficient, and with a set of simple interfaces to platform specific functionality.

Linux.com: Who is the IoTivity-Constrained project aimed at? What are some example use cases?

Kishen: IoTivity-Constrained is aimed at IoT product companies who want to develop IoT applications on their platforms and deploy their products into the OCF ecosystem. As an industry-led consortium with a number of stakeholders from various vertical markets, OCF aims to target a variety of IoT applications across the consumer, industrial, and healthcare domains.

IoTivity-Constrained can be employed in all those applications but is particularly helpful in products where resource utilization, energy efficiency, and customization are essential factors. Direct use cases are in sensing and actuation applications in wearables, homes and buildings for climate control, energy monitoring, appliance control, etc.

As a simple use case, in the morning, an alarm goes off on your smart watch (and you don’t hit the snooze button), your smart lights turn on, and your smart coffee machine is signaled to start brewing coffee. All three devices in this example may have come from different manufacturers, and might employ different platforms. However, they may all contain long-running IoTivity-Constrained applications that issue requests to achieve the desired functionality.

The possibilities are endless as any other enablers (IFTTT recipes, machine learning, etc.) are effectively application code that an IoT product might use to its advantage for differentiation.

Linux.com: Can you explain how IoTivity-Constrained works in conjunction with Zephyr RTOS and other real-time operating systems?

Kishen: IoTivity-Constrained’s core framework interacts with platform-specific functionality via a set of abstract interfaces. A set of implementations of these interfaces for a platform constitutes a “port.” IoTivity-Constrained contains a few sample ports for Zephyr, Apache Mynewt, RIOT OS, Contiki and Linux. Each port interfaces with the native network stack and subsystems of its respective platform. Apart from giving developers the opportunity to get started with building and testing the included samples, they also serve to demonstrate the general ease of porting and customizing the framework.

Linux.com: What are some future development plans for the project?

Kishen: One of our plans is to more closely examine any special requirements for applications in the industrial and healthcare domains and appropriately extend IoTivity-Constrained to meet those. Other possibilities include addition of higher-level components such as a rule-engine that may be harnessed by applications to assist in the actuation process.

Embedded Linux Conference + OpenIoT Summit North America will be held on February 21-23, 2017 in Portland, Oregon. Check out over 130 sessions on the Linux kernel, embedded development & systems, and the latest on the open Internet of Things.

Linux.com readers can register now with the discount code, LINUXRD5, for 5% off the attendee registration price. Register now>>

Click Here!