Skip to content
/ IOWA Public

This repository contains sample applications illustrating how to use the IOWA SDK as well as the Evaluation IOWA SDK. The IOWA SDK is the most compact C implementation OMA LwM2M protocol.

License

Notifications You must be signed in to change notification settings

IOTEROP/IOWA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IOWA Logo

Ioterop IOWA Ioterop ALASKA DM Platform

IOWA public code

This repository contains a public version of IOWA LwM2M stack, illustrating how to use the LwM2M library.

Don't forget to have a look at the Documentation:

IOWA Doc

This code is provided as-is, under the associated licence (./LICENSE.txt). (This code should not be used in a commercial product and is for personal evaluation ONLY)

With this code, you can jump into LwM2M and validate the build and the execution of the IOWA stack on your device, but with some limitations:

IOWA Eval SDK IOWA Full SDK
Free for Evaluation purpose Contact us
IOWA-based LwM2M Client ✔️ ✔️
IOWA-based LwM2M Server ✔️
IOWA-based Bootstrap Server ✔️
LwM2M 1.0​ ✔️ ✔️
LwM2M 1.1​ ✔️
LwM2M 1.2 ✔️
TLV Data Format ✔️ ✔️
LwM2M 1.1 Data Formats​ ✔️
LwM2M 1.2 Data Formats​ ✔️
Bootstrap ​Support ✔️
Mandatory LwM2M Objects​ ✔️ ✔️
CTO IPSO Objects​ ✔️ ✔️
Other IPSO Objects​ ✔️
Custom Objects Creation ​ ✔️ ✔️
UDP Transport​ ✔️ ✔️
TCP Transport​ ✔️
WebSockets Transport​ ✔️
SMS Transport​ ✔️
COAP Block​-Wise Transfer ✔️
DTLS Support ​ ✔️ ✔️
TLS Support ​ ✔️
OSCORE ✔️
Muti Server Management ​ ✔️ ✔️
Registration Rules Configuration ​ ✔️
Server Access Control ✔️
Firmware Update​ ✔️
MQTT Channels Configuration ​ ✔️
Context Storage ✔️
Power Cycle Management ✔️
Connectivity Management ✔️
Notification Storage ✔️
Asynchronous Response Support ✔️
Payload Streaming ✔️
Source Code & C-Make​ ✔️ ✔️
Full Documentation​ ✔️
Logs ✔️ ✔️
Multithread​ Support ✔️
Python Binding ✔️
LwM2M Object Code Generation Tool ✔️

Sdk samples available on this repository

Category Sample name Purpose
Basic samples 01-baseline_client For creating a working LwM2M Client with IOWA
Basic samples 02-IPSO_client How to add an IPSO temperature sensor Object
Custom Object 03-custom_object_baseline_client How to add a simple custom LwM2M Object
Custom Object 04-custom_object_dynamic How to make the values exposed by the custom Object dynamic
Custom Object 06-custom_object_multiple_rsc_inst Another custom object sample, multiple resources, multiples instances
Secure client 07-secure_client_mbedtls3 Sample client with PSK security over mbedtls3
Secure client 08-secure_client_tinydtls Sample client with PSK security with tinydtls

Extra IOWA Sdk samples (available on request)

Category Sample name Purpose
Full SDK only secure_client How to use secure communications.
Full SDK only fwupdate_push_client How to receive Firmware Updates in push mode.
Full SDK only fwupdate_pull_client How to receive Firmware Updates in pull mode. This sample demonstrates the CoAP APIs.
Full SDK only timestamp_IPSO How to timestamp values in IPSO sensors.
Full SDK only timestamp_custom_objects How to timestamp values in custom LwM2M Objects.
Full SDK only streamable_resources How to work with large values like images or file contents.
Full SDK only asynchronous_resources How to work with time consuming value retrieval.
Full SDK only low_MTU_client How to use adapt to limited network MTU.
Full SDK only adaptive_client How to adapt to degraded network conditions by modifying the CoAP timers.
And many more ...

QuickStart Guide

All the samples can be built/run on Windows and Linux. Other platforms and OS are available in:

Ioterop Github

If you prefer, a Docker version is available in the docker folder.

Tutorials

You can find some interesting tutorials on Hackster.io:

Compile Samples

Initial setup: Don't forget to clone this repository:

git clone https://github.com/IOTEROP/IOWA.git

On Linux

Prerequisites: An x86-64 computer with a Linux distribution installed, the cmake utility, the make utility and a C compiler.

To compile the 08-secure_client_tinydtls sample, you will also need git to be installed.

  1. Inside the IOWA repository, create a build folder

    mkdir build

  2. Go to this folder

    cd build

  3. Launch cmake in debug mode

    cmake -DCMAKE_BUILD_TYPE=Debug ..

    The last parameter point to the folder containing the CMakeLists.txt file of your target. In this case the one at the root of the repo.

  4. Compile the samples.

    make -j 4

    (The -j 4 parameter enables four parallel compilations, could be replaced with make -j$(nproc))

    (After making some modifications to the code, only the step 4 is required)

  5. Jump into the associated directory. E.g:

    cd samples/01-baseline_client

  6. Run the sample. E.g:

    ./baseline_client

On Windows

Using Visual Studio Code
  1. Install the Microsoft C++ compiler as explained here: https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=vs-2022
    1. Select the "Build Tools for Visual Studio 2022".
    2. In the Installer, make sure the following optional features are checked:
      • MSVC v142 - VS 2022 C++ x64/x86 build tools (Note that the version may differ)
      • Windows 10 SDK
      • C++ CMake tools for Windows
  2. Install Visual Studio Code from https://code.visualstudio.com/
  3. Launch Visual Studio Code.
  4. Go to the "Extensions" panel (Ctrl+Shift+X) on the left side.
  5. Install the "C/C++", "CMake", and "CMake Tools" extensions
  6. Open the folder containing the IOWA SDK ("File" menu -> "Open Folder..." or "Ctrl+K Ctrl+O")
  7. Open the CMake panel on the left side.
  8. On the top bar of the CMake panel, click on the icon "Configure All Projects".
  9. When prompted to select a kit, choose one of the Visual Studio Build Tools.
  10. On the top bar of the CMake panel, click on the icon "Build All Projects".
  11. Click on the sample of your choice.
  12. Right-click on the application and select "Run in terminal"
Using Visual Studio with C++ support.

Visual Studio version must be at least 2017 for the CMake support.

  1. In the Visual Studio menu bar, go to "File", "Open", "Folder". Select the IOWA folder.
  2. In the "Solution Explorer" windows, right-click on "CMakeList.txt" and choose "Set as Startup Item".
  3. In the Visual Studio menu bar, go to "Build", "Build All"

IOWA ALASKA Device Management Platform

You can interact with the samples or your device with ALASKA Platform

Click on the button below to jump to the ALASKA Platform

Ioterop ALASKA DM Platform

Let's Get Programming !

About

This repository contains sample applications illustrating how to use the IOWA SDK as well as the Evaluation IOWA SDK. The IOWA SDK is the most compact C implementation OMA LwM2M protocol.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published