Skip to content

Architecture

Javier edited this page May 24, 2023 · 4 revisions

This module has been split into multiple tiny libraries in order to decouple logic from each abstraction layer, hoping to maximize reusability. The following image shows the different layers that this module is made of:

  • APP: refers to the user app logic.
  • Iridium: this refers to the Iridium library, which consists in a set of different modules:
    • ISBD (Iridium Short Burst Data): this module implements an abstraction layer in order to send and receive Iridium SBD messages.
    • IVC (Iridium Voice Calling): Iridium voice calling is not supported yet, but it has been included in the diagram to show how the library has been structured to allow a future implementation.
    • ISU (Iridium Subscriber Unit): this module is used to implement all the necessary AT commands specified in the official Iridium ISU AT Command Reference.
    • DTE (Data Terminal Equipment): Used as a middleware between AT-UART and ISU.
  • AT-UART: this layer implements a little set of utils in order to abstract the AT command layer interface, this layer is totally agnostic and tries to be as faithful as possible to the AT Hayes standard.
  • Z-UART: this layer is in charge of managing a low level UART communication using driver specific implementations. Zephyr supports multiple APIs for UART: polling, interrupt and asynchronous (DMA), but this library only supports polling and interrupt driven APIs.