Integrating Acklio FullSDK
๐ค Acronyms? See the Glossary
๐ค System Integrator, Embedded Application Developer
Acklio FullSDK Deliverables on GitLabโ
Acklio FullSDK is hosted on our GitLab repository in two main folders:
- Click here to access the repository for the STM FullSDK Reference Implementation which corresponds to the use of a Nucleo STM32L476RG board to simulate a device.
- Click here to access the repository for the WL55 FullSDK Reference Implementation which corresponds to the use of a Nucleo STM32WL55JC board to simulate a device.
Acklio FullSDK is a library that is a set of binary files containing the implementation that runs a stack.
It is hosted on our GitLab repository, where its content is shared among two main subfolders according to the two deployment possibilities:
- As embedded SDK within an AT Modem โ Find the corresponding files in the subfolders named ATModem.
- As SDK deployed on a standalone device โ Find the corresponding files in the subfolders named FreeRTOS_IPv6UDP.
Whatever the implementation is, each version contains the following:
- Several header files corresponding to Acklio FullSDK interfaces (these header files are provided depending on the application use case).
- A position independent static library
- A reference implementation of the level 2 adaptation layer, provided in the delivery package.
- The source code of a sample bare-metal application, provided in the delivery package.
- Readme files with detailed documentation.
FullSDK Interfaces and Header Filesโ
Open these folders on GitLab:
- Third_Party/FullSDK/inc for the STM FullSDK Reference Implementation.
- Third_Party/FullSDK/inc for the WL55 FullSDK Reference Implementation.
The following header files are provided for the SCHC interfaces, depending on the application use case.
File Name | API | Opensource Example |
---|---|---|
fullsdkmgt.h | Management interface | Add ATModem Reference Design using ST stack v2.1.0 |
fullsdkdtg.h | Datagram interface | FreeRTOS IPV6/UDP client and server |
fullsdknet.h | Network interface | FreeRTOS IPV6/UDP client and server |
fullsdkextapi.h | Network configuration interface | FreeRTOS IPV6/UDP client and server |
fullsdkl2a.h | Level 2 adaptation (L2A) interface | Add ATModem Reference Design using ST stack v2.1.0 |
fullsdkstats.h | FullSDK statistics interface | Add ATModem Reference Design using ST stack v2.1.0 |
fullsdkschc.h | Advanced SCHC configuration interface | Add ATModem Reference Design using ST stack v2.1.0 |
The Level 2 adaptation (L2A) interface is implemented by the integrator, since it depends on the layer being used.
Required Memoryโ
Flash and RAM consumption (in bytes) are as follows.
Flashย sizeย (bytes) | RAM size (bytes) |
---|---|
30000-35000 | 2500 + (4๏นก (max_mtu_size + max_app_payload_len + max_proto_size )) |
The size required for Flash and RAM may vary depending on the extension interface which itself depends on the application.
The size required for RAM highly depends on:
- The LPWAN maximum transmission unit (MTU)
- The maximum application payload size
For example, if LoRaWAN is used as L2 technology (whose maximum MTU is 242 bytes) and the application expects to send and receive 1KB of payload then
2500 + (4 * (242 + 1024 + 128)) = 8076 bytes
of total RAM will be required.
Bare Metal Projectโ
Bare metal refers to run a program or a software directly on the hardware level without the support of any operating system.
In a bare metal project where lowering power consumption is important, the application architecture is usually based on a main loop that enters sleep mode after initialization. It exits from sleep mode when an interrupt occurs.
Each interrupt service routine signals to the main loop that an event occured, and that some processing is required. It is then up to the main loop to call the function that performs such processing.
Once the required processing has been done, the main loop enters sleep mode again.
Acklio FullSDK can easily be integrated in such an architecture. The callback called by the SDK to signal that processing must be performed can set a flag. This flag is checked by the main loop each time it comes out of sleep mode. If the flag is set, the main loop calls the associated processing function.
RTOS Projectโ
Real-Time Operating System
In an RTOS project, the user can rely on various facilities provided by the RTOS: threads, semaphores, etc.
In such a project, Acklio FullSDK would run in one thread. This thread would wait on a semaphore (for example). The implementation of the callback requesting processing would give the semaphore.
The current version of Acklio FullSDK provides a reference multi-threaded UDP client application using FreeRTOS as a real time operating system and uIP as an IP stack.