Management Interface Functions
The header file for the Management interface is fullsdkmgt.h
.
The management interface has two roles:
- Configure the Acklio FullSDK stack.
- Provide the stack with resources required at execution time: processing time, memory and timers.
The management interface functions must be used to configure the stack before any functions of any interface are called.
The SCHC Management interface section for information on error messages.
Initialization​
The first function that must be called is mgt_initialize()
.
This function must be provided with:
- A list of callbacks
- A pointer to a memory block
- The maximum MTU size
- The maximum payload size
List of Callbacks​
Each callback will be called for a specific event.
Callback | Event |
---|---|
mgt_processing_required | Informs the application that one of the layers in the Acklio FullSDK stack has to perform some processing. The application must call the mgt_process() function as soon as possible but not from within the callback. |
mgt_connectivity_state | Informs the application about any modification of the connectivity state. The application should not try to send a message until connectivity is available. |
mgt_start_timer | Informs the application that a timer should be started. Timer period and ID are specified by the callback parameters. When the timer period expires, the mgt_timer_timeout() function must be called with the same ID used for the start timer. |
mgt_stop_timer | Informs the application that a timer must be stopped. Timer ID is specified by the callback parameter. |
mgt_sync_bootstrap_result (optional) | Informs the application about the result of the synchronization with the SCHC gateway. This callback is triggered when a response is received following a call to mgt_sync_boostrap() . Note that synchronization is an extended feature of Acklio FullSDK.This callback can be omitted (i.e. set to NULL ) when sync is not used or when the SCHC gateway does not support it. |
Pointer​
The initialization function must be provided with a pointer to a memory block allocated for the stack and the size of the memory block.
The application that integrates Acklio FullSDK stack has to allocate some memory (based on a formula, see below) from the volatile memory of the execution environment, and then provide it to the stack.
The formula is the following:
(4 * (max_mtu_size + max_app_payload_len + max_proto_size))
where:
max_mtu_size
is the maximum MTU size of the L2 technology used;max_app_payload_len
is the maximum payload length that the application expects to send and receive;max_proto_size
is predefined asMGT_PROTO_SIZE
infullsdkmgt.h
.
Maximum Sizes​
Finally, the initialization function must be completed with:
- The maximum MTU size of the L2 technology used;
- The maximum payload size that the application expects to send and receive.
Synchronization Bootstrap​
This function is used to synchronize the SDK with the SCHC gateway. It is optional.
mgt_sync_bootstrap()
must be provided with the following parameters:
Parameter | Description |
---|---|
retransmission_delay | The delay (in ms) between each request retransmission. |
max_retrans | The maximum number of request retransmission before considering that the synchronization has failed. |
See Layers and interfaces for a diagram with all the layers.
Processing​
This refers to the paradigm above.
Every time a layer of Acklio FullSDK stack needs to perform a processing as the result of some event, the mgt_processing_required
callback is called.
It is then up to the application to call the mgt_process()
function as soon as possible. but not from within the callback.
Callback Usage​
A general rule is that the mgt_processing_required
callback must not call the mgt_process()
function.
Actually, a callback called by the Acklio FullSDK stack must not call any Acklio FullSDK function.
Polling​
While using L2 technology having quasi-bidirectional links, which is the case with LoRaWAN in class A, polling packets must be send in order to trigger downlink packet reception.
Two functions are dedicated for that purpose:
mgt_enable_polling()
function must be called once aftermgt_initialize()
to activate implicit polling mechanism inside the Acklio FullSDK stack. The aim being to retrieve the downlink packets, in particular when they are fragmented.mgt_trigger_polling()
function must be called every time the application want to trigger explicitly a polling frame. The aim being to generate a downlink possibility (fport: 0
with no payload for LoRaWAN, etc.).
These functions have no use for Class C and the Class B is not supported.
Version​
The mgt_get_version()
function returns the version of the FullSDK library as a null-terminated string.
Quality of Service​
This function is available only with fragmentation, with the direction set to "uplink".
The mgt_set_qos()
function sets the current class of service, that defines:
- Which fragmentation profile is used
- If the fragmentation has to be overridden
The supported QoS values are:
- QOS_NO_RELIABILTY
- QOS_NETWORK_RELIABILITY
- QOS_SYSTEMATIC_REPORT
It returns the status of the service:MGT_SUCCESS
if the service is as expected, else MGT_ERROR
.