AirVantage Migration

AirVantage Version 2 changes the way that the Legato AF connects to the AirVantage Cloud service.

Comparison of Changes

The following are a comparison of high level changes within AirVantage. For the complete description of the new AirVantage 2.0 features see AirVantage Connector.

AVC 1.0 AVC 2.0
Asset model defined in .cdef Asset model defined in code on the fly
AssetData Resource paths are LWM2M standard formatted AssetData Resource paths are Unix Path Formatted
AssetData Permissions are write only AssetData Permissions are read/write allowing dynamic updates
Authentication Failures are retried immediately Authentication failures are retried 2s later
Device reconnects in 20s after a FOTA update No device reconnection, Apps can initiate the connection.
TimeSeries resources are part of AssetData TimeSeries resources can be used separate from Asset Data
TimeSeries data points can only be pushed one at a time TimeSeries can accommodate multiple data points pushed and acknowledge at one time

Migrating from AVC 1.0 to AVC 2.0

AVC 1.0 configurations are automatically migrated to AVC 2.0 when Legato AF 17.05+ is upgraded on your target.

To re-import AVC 1.0 configuration again (if there are any issues) then the system:/apps/avcService/config/imported System Tree value must be set to false and Legato AF must be restarted (legato restart)

# config set system:/apps/avcService/config/imported false bool

Asset Data

AirVantage 2.0 now supports dynamic asset data models, meaning that you no longer need to set the model in your control apps .cdef at build time. Now you are able to define and update the model dynamically at compile time. You can now create get or set jobs for your assets from the server.

In AVC 2.0 system data (assets) are dynamically created/assigned on the fly and are identified by their unique resource paths (e.g., /myApp/Room/Kitchen/Temperature). Calling the le_avdata_CreateResource(/myApp/Room/Kitchen/Temperature) will create a new asset.

Note
the assets section in the .cdef file has been removed and assets can no longer be defined through the .cdef. To add asset data to the app model, the manifest.app must be hand edited.

Data Model

There is no longer a need to create a data model and the section has been removed from the .cdef. You are now able to call functions to work with variables, settings, and commands.

Command Arguments

In AVC 2.0 commands with arguments are able to be used, whereas we do not have such provision in AVC 1.0.

See AirVantage System and click on Applicative Command to find more details on sending commands from AirVantage.

Resource Paths

The resource paths are now formatted in the traditional *nix path standard, instead of the LWM2M standard.

AVC 1.0

le_${APP_NAME}.1000.0.0

AVC 2.0

/myApp/Room/Kitchen/Temperature

Time Series

TimeSeries provides the ability to collect an app data set periodically, store the data locally, and then send all data to the server based on a specified trigger event (e.g., collect driving behavior during a trip, and send all data only when the car is parked).

To use a TimeSeries you can push the changes within your App, TimeSeries no longer depends on the asset that were defined in the Component.cdef.

There is now no need to turn on the observe function before pushing TimeSeries data to the AirVantage Server.

Example of pushing data to the AirVantage server:

static void PushCallbackHandler
(
le_avdata_PushStatus_t status,
void* contextPtr
)
{
if (status == LE_AVDATA_SENT_SUCCESS)
{
// data pushed successfully
}
}
 
static void SendData()
{
struct timeval tv;
uint64_t utcMilliSec;
le_result_t result;
 
le_avdata_RecordRef_t recRef = le_avdata_CreateRecord();
 
gettimeofday(&tv, NULL);
utcMilliSec = (uint64_t)(tv.tv_sec) * 1000 + (uint64_t)(tv.tv_usec) / 1000; // get current time
result = le_avdata_RecordFloat(recRef, "speed", 0.08, utcMilliSec);
 
if (result == LE_OK)
{
le_avdata_PushRecord(recRef, PushCallbackHandler, NULL);
}
 
le_avdata_DeleteRecord(recRef);
}