10.2. Custom Hardware Support

Anjay can be used on a number of different platforms. By default, the library targets POSIX-like operating systems and their standard interfaces for networking, multithreading, etc., which means that Anjay can be easily compiled to run on many OSs, including:

  • Linux,

  • macOS,

  • FreeBSD,

  • Windows (compiled using MSYS2).

For embedded platforms, AVSystem provides a couple of integration layers and example applications for many popular SDKs and prototyping kits:

Target platform/SDK

Integration layer

Example application

Zephyr and nRF Connect SDK

Anjay-zephyr

Anjay-zephyr-client

mbedOS

Anjay-mbedos

Anjay-mbedos-client

STM32Cube w/ FreeRTOS and X-CUBE-CELLULAR

contained in the app

Anjay-freertos-client

ESP-IDF

contained in the app

Anjay-esp32-client

If desired platform isn’t listed above, it means that custom implementation for time, threading, networking and (D)TLS APIs must be provided as described in Porting guide for non-POSIX platforms. Integrating with networking peripherals and APIs (e.g. cellular modems) is often nontrivial, thus AVSystem is open to provide help with developing code tailored for specific platform. In such case, please visit our contact page.

We can also assist with making many improvements and optimizations, even if the basic functionality works out of the box. For example, Anjay-zephyr contains code specific to the nRF9160 SoC which is capable of encrypting network traffic directly on the modem instead of using additional (D)TLS library, which normally is a part of the application. Thanks to that we were able to completely remove mbedTLS library, saving 80 kB of flash memory, and use nRF9160’s ability to cache (D)TLS sessions over power cycles, greatly reducing the overhead of secure connections.