le_avc_interface.h
Go to the documentation of this file.
36 * server, download/install packages and reboots the target if needed. Thus, if no control app for37 * the AirVantage service is present on the target, the daemon is still able to update the target.39 * User agreements are persistent to reboot/update, they are stored in the file system. The default40 * settings are only applied when the target boots the first time or when the configuration file is41 * missing or corrupted. In all other cases, default configuration never overwrites the current one.43 * When writing a control app for the AirVantage Service, it is up to the developer to ensure that44 * user agreements have been enabled for all actions the control app performs. Otherwise, avcService59 * notification is connection pending or by accepting or deferring the operation if the notification64 * Whether avcService should forward these notifications to an app or act on these notifications by119 * @c avcService will open a session to proceed with the download. In this case, a session started125 * le_avc_GetUpdateType(). App updates can call le_avc_GetAppUpdateName() to retrieve the App name.130 * specified number of minutes. After the defer time has elapsed, the pending download notification131 * will be re-sent again to all registered apps. le_avc_AcceptDownload() can be used to accept the138 * If an uninstall is pending, then le_avc_AcceptUninstall() can be used to allow the uninstall to139 * proceed. To defer the decision, le_avc_DeferUninstall() can be used to defer the uninstall for141 * uninstalled after le_avc_AcceptUninstall() is called. le_avc_AcceptUninstall() is only used to142 * signal the server to start downloading the new application. To proceed with an upgrade process,143 * accept the uninstall of the existing version followed by accepting the download and install of191 * @note Even if an App calls le_avc_AcceptInstall(), the install may still be blocked by another193 * le_avc_DeferInstall() to defer the install for the specified number of minutes. After the defer194 * time has elapsed, the pending install notification will be re-sent to allow Apps to make a new208 * After accepting the install or when the install is automatic, the install process is launched 2209 * seconds later by disconnecting the device from the AirVantage server if it's still connected and215 * is active. An App should start an AirVantage session before accepting an App install/uninstall,219 * then any pending downloads and installs will happen automatically, subject to any restrictions224 * In case of any error incurred during App download/install, an error code will be set which can be241 * An App can add a session control handler using le_avc_AddSessionRequestEventHandler(). Requests242 * by user Apps to open or close session will be forwarded to the session control handler. If no App256 * - If the user agreements are enabled, the previous @c PENDING notification is sent to the App,260 * |--------------------------------|-------------------------------------------------------------|--------------------------|262 * | @c LE_AVC_DOWNLOAD_IN_PROGRESS | @c LE_AVC_DOWNLOAD_PENDING with remaining bytes to download | Accept download |263 * | @c LE_AVC_DOWNLOAD_COMPLETE | @c LE_AVC_DOWNLOAD_PENDING with zero bytes to download | Accept download |271 * minutes). The @c PENDING notification will only be sent when the suspention is finished. Trying274 * all suspend/resume information stored by avcService is erased. So if developer updates firmware275 * or legato (via ethernet or ecm etc.) in the middle of any update initiated by avcService, this281 * (@c LE_AVC_DOWNLOAD_PENDING notification is sent to registered apps), an app can get the download288 * - when a download is suspended by an app, the platform will automatically resume the download.289 * - when a download is suspended because of network loss, the platform will automatically resume311 * |-----------------------|----------------------------|----------------------------------------|349 * Polling timers sets the time that the Target will communicate with the AirVantage Server to check357 * initiate a session when it starts the count (at 0 minutes) and then again at the specified time362 * The polling timer accepts ranges from 0 to 525600 minutes. The polling timer does not get reset364 * connect to the AVC Server upon startup of the app. For example, if the polling timer is set to 1365 * hour then and the target reboots at the 20 minute mark, the polling timer will still initiate a366 * connection at the 1 hour mark. If the target is powered off or in the middle of rebooting at the367 * 1 hour mark, as soon as the app is started again, the polling timer will initiate a connection to370 * Polling timer initiated sessions will be disconnected after 20 seconds of inactivity. This does371 * not apply to AirVantage sessions that have been initiated by an app. The app is responsible for372 * disconnecting the session it initiates within a reasonable timeframe. Leaving the session open379 * Writing to the polling timer stops the current polling timer if it is running and starts a timer380 * with the new value. The next connection will be initiated when the new polling timer reaches it's389 * The timers are tried in sequence until a connection is established, or all enabled retry timers390 * are exhausted. After all the enabled timers are exhausted, a new session must be initiated again402 * Example of calling retry timers, the session will be retried after 15 minutes, 1 hour, 4 hours,411 * The AirVantage server can request to reboot the device. If a reboot is requested a notification412 * is sent to the registered Apps. The App can either accept the reboot with le_avc_AcceptReboot()414 * has elapsed, the pending reboot notification will be re-sent. This allows the registered app to437 * By default the AirVantage connection uses the default mobile data profile and the default route440 * If the user wishes to control the network configuration, e.g. to use the AirVantage agent with449 * The data connection service should then be configured before launching the AirVantage connection:460 * 300 seconds to establish a connection. Download will also be aborted, if the download speed is483 * After an AirVantage session is started, if there's no activity between the device and the server486 * /apps/avcService/activityTimeout. The activity timer is initialized only when the @c avcService525 //--------------------------------------------------------------------------------------------------529 //--------------------------------------------------------------------------------------------------532 //--------------------------------------------------------------------------------------------------535 * Connect the current client thread to the service providing this API. Block until the service is538 * For each thread that wants to use this API, either ConnectService or TryConnectService must be539 * called before any other functions in this API. Normally, ConnectService is automatically called544 //--------------------------------------------------------------------------------------------------550 //--------------------------------------------------------------------------------------------------553 * Try to connect the current client thread to the service providing this API. Return with an error556 * For each thread that wants to use this API, either ConnectService or TryConnectService must be557 * called before any other functions in this API. Normally, ConnectService is automatically called566 * - LE_NOT_PERMITTED if the client interface is not bound to any service (doesn't have a binding).569 //--------------------------------------------------------------------------------------------------575 //--------------------------------------------------------------------------------------------------579 * When a server connection is lost, call this handler then exit with LE_FATAL. If a program wants582 //--------------------------------------------------------------------------------------------------589 //--------------------------------------------------------------------------------------------------595 * longer a connection to the service, and the functions in this API can't be used. For details, see600 //--------------------------------------------------------------------------------------------------607 //--------------------------------------------------------------------------------------------------613 //--------------------------------------------------------------------------------------------------616 //--------------------------------------------------------------------------------------------------620 //--------------------------------------------------------------------------------------------------623 //--------------------------------------------------------------------------------------------------627 //--------------------------------------------------------------------------------------------------630 //--------------------------------------------------------------------------------------------------634 //--------------------------------------------------------------------------------------------------637 //--------------------------------------------------------------------------------------------------645 //--------------------------------------------------------------------------------------------------648 //--------------------------------------------------------------------------------------------------653 //--------------------------------------------------------------------------------------------------656 //--------------------------------------------------------------------------------------------------660 //--------------------------------------------------------------------------------------------------663 //--------------------------------------------------------------------------------------------------667 //--------------------------------------------------------------------------------------------------670 //--------------------------------------------------------------------------------------------------674 //--------------------------------------------------------------------------------------------------677 //--------------------------------------------------------------------------------------------------681 //--------------------------------------------------------------------------------------------------684 //--------------------------------------------------------------------------------------------------688 //--------------------------------------------------------------------------------------------------691 //--------------------------------------------------------------------------------------------------695 //--------------------------------------------------------------------------------------------------698 //--------------------------------------------------------------------------------------------------702 //--------------------------------------------------------------------------------------------------705 //--------------------------------------------------------------------------------------------------709 //--------------------------------------------------------------------------------------------------712 //--------------------------------------------------------------------------------------------------716 //--------------------------------------------------------------------------------------------------719 //--------------------------------------------------------------------------------------------------725 //--------------------------------------------------------------------------------------------------734 //--------------------------------------------------------------------------------------------------738 //--------------------------------------------------------------------------------------------------745 //--------------------------------------------------------------------------------------------------751 //--------------------------------------------------------------------------------------------------760 //--------------------------------------------------------------------------------------------------764 //--------------------------------------------------------------------------------------------------771 //--------------------------------------------------------------------------------------------------777 //--------------------------------------------------------------------------------------------------786 //--------------------------------------------------------------------------------------------------790 //--------------------------------------------------------------------------------------------------797 //--------------------------------------------------------------------------------------------------808 //--------------------------------------------------------------------------------------------------814 //--------------------------------------------------------------------------------------------------830 * @note DM servers may have different capabilities in terms of which LWM2M objects they support.834 * @note To initiate a session with AirVantage server, it's preferable to use le_avc_StartSession()845 //--------------------------------------------------------------------------------------------------855 //--------------------------------------------------------------------------------------------------860 * otherwise if the user agreement is disabled, a new connection is automatically initiated in order868 //--------------------------------------------------------------------------------------------------874 //--------------------------------------------------------------------------------------------------876 * Send a specific message to the server to be sure that the route between the device and the server878 * This API needs to be called when any package download is over (successfully or not) and before887 //--------------------------------------------------------------------------------------------------893 //--------------------------------------------------------------------------------------------------901 //--------------------------------------------------------------------------------------------------908 //--------------------------------------------------------------------------------------------------916 //--------------------------------------------------------------------------------------------------922 //--------------------------------------------------------------------------------------------------930 //--------------------------------------------------------------------------------------------------937 //--------------------------------------------------------------------------------------------------945 //--------------------------------------------------------------------------------------------------951 //--------------------------------------------------------------------------------------------------959 //--------------------------------------------------------------------------------------------------966 //--------------------------------------------------------------------------------------------------974 //--------------------------------------------------------------------------------------------------980 //--------------------------------------------------------------------------------------------------988 //--------------------------------------------------------------------------------------------------995 //--------------------------------------------------------------------------------------------------1006 //--------------------------------------------------------------------------------------------------1012 //--------------------------------------------------------------------------------------------------1020 //--------------------------------------------------------------------------------------------------1027 //--------------------------------------------------------------------------------------------------1035 //--------------------------------------------------------------------------------------------------1042 //--------------------------------------------------------------------------------------------------1050 //--------------------------------------------------------------------------------------------------1059 //--------------------------------------------------------------------------------------------------1067 //--------------------------------------------------------------------------------------------------1073 //--------------------------------------------------------------------------------------------------1077 //--------------------------------------------------------------------------------------------------1084 //--------------------------------------------------------------------------------------------------1092 //--------------------------------------------------------------------------------------------------1098 //--------------------------------------------------------------------------------------------------1106 //--------------------------------------------------------------------------------------------------1112 //--------------------------------------------------------------------------------------------------1119 //--------------------------------------------------------------------------------------------------1125 //--------------------------------------------------------------------------------------------------1134 //--------------------------------------------------------------------------------------------------1141 //--------------------------------------------------------------------------------------------------1150 //--------------------------------------------------------------------------------------------------1159 //--------------------------------------------------------------------------------------------------1168 //--------------------------------------------------------------------------------------------------1185 //--------------------------------------------------------------------------------------------------1193 //--------------------------------------------------------------------------------------------------1204 //--------------------------------------------------------------------------------------------------1212 //--------------------------------------------------------------------------------------------------1219 //--------------------------------------------------------------------------------------------------1228 //--------------------------------------------------------------------------------------------------1237 //--------------------------------------------------------------------------------------------------1250 //--------------------------------------------------------------------------------------------------1256 //--------------------------------------------------------------------------------------------------1264 //--------------------------------------------------------------------------------------------------1273 //--------------------------------------------------------------------------------------------------1281 //--------------------------------------------------------------------------------------------------1290 //--------------------------------------------------------------------------------------------------1299 //--------------------------------------------------------------------------------------------------1316 //--------------------------------------------------------------------------------------------------1321 * When data need to be sent by the client, a check is made between this NAT timeout value and the1328 //--------------------------------------------------------------------------------------------------1335 //--------------------------------------------------------------------------------------------------1343 //--------------------------------------------------------------------------------------------------le_result_t le_avc_SetPollingTimer(uint32_t pollingTimer)le_result_t le_avc_StartSession(void)void(* le_avc_DisconnectHandler_t)(void *)Definition: le_avc_interface.h:530le_avc_ErrorCode_t le_avc_GetErrorCode(void)le_result_t le_avc_GetPollingTimer(uint32_t *pollingTimerPtr)le_avc_StatusEventHandlerRef_t le_avc_AddStatusEventHandler(le_avc_StatusHandlerFunc_t handlerPtr, void *contextPtr)le_result_t le_avc_ReadLwm2mResource(uint16_t objectId, uint16_t objectInstanceId, uint16_t resourceId, uint16_t resourceInstanceId, char *data, size_t dataSize)struct le_avc_CommInfoHandler * le_avc_CommInfoHandlerRef_tDefinition: le_avc_common.h:557le_result_t le_avc_GetUserAgreement(le_avc_UserAgreement_t updateStatus, bool *enablePtr)le_avc_SessionRequestEventHandlerRef_t le_avc_AddSessionRequestEventHandler(le_avc_SessionRequestHandlerFunc_t handlerPtr, void *contextPtr)le_result_t le_avc_DeferInstall(uint32_t deferMinutes)le_result_t le_avc_GetApnConfig(char *apnName, size_t apnNameSize, char *userName, size_t userNameSize, char *userPwd, size_t userPwdSize)le_result_t le_avc_DeferUninstall(uint32_t deferMinutes)le_result_t le_avc_AcceptInstall(void)le_avc_BlockRequestRef_t le_avc_BlockInstall(void)le_result_t le_avc_SetUserAgreement(le_avc_UserAgreement_t updateStatus, bool enable)le_avc_CommInfoHandlerRef_t le_avc_AddCommInfoHandler(le_avc_CommInfoHandlerFunc_t handlerPtr, void *contextPtr)void(* le_avc_CommInfoHandlerFunc_t)(uint8_t code, const char *LE_NONNULL str, void *contextPtr)Definition: le_avc_common.h:610void le_avc_SetNatTimeout(uint32_t timeout)uint16_t le_avc_GetHttpStatus(void)le_result_t le_avc_DeferConnect(uint32_t deferMinutes)bool le_avc_IsSessionStarted(uint16_t serverId)le_result_t le_avc_SetApnConfig(const char *LE_NONNULL apnName, const char *LE_NONNULL userName, const char *LE_NONNULL userPwd)le_result_t le_avc_TryConnectService(void)le_result_t le_avc_AcceptUninstall(void)le_result_t le_avc_GetUpdateType(le_avc_UpdateType_t *updateTypePtr)le_result_t le_avc_GetAppUpdateName(char *updateName, size_t updateNameSize)void le_avc_ConnectService(void)void le_avc_UnblockInstall(le_avc_BlockRequestRef_t blockRef)struct le_avc_BlockRequest * le_avc_BlockRequestRef_tDefinition: le_avc_common.h:565le_result_t le_avc_SetRetryTimers(const uint16_t *timerValuePtr, size_t timerValueSize)le_result_t le_avc_GetRetryTimers(uint16_t *timerValuePtr, size_t *timerValueSizePtr)void le_avc_DisconnectService(void)void(* le_avc_StatusHandlerFunc_t)(le_avc_Status_t updateStatus, int32_t totalNumBytes, int32_t progress, void *contextPtr)Definition: le_avc_common.h:574le_result_t le_avc_DeferDownload(uint32_t deferMinutes)void(* le_avc_SessionRequestHandlerFunc_t)(le_avc_SessionRequest_t request, void *contextPtr)Definition: le_avc_common.h:597struct le_avc_SessionRequestEventHandler * le_avc_SessionRequestEventHandlerRef_tDefinition: le_avc_common.h:549void le_avc_RemoveStatusEventHandler(le_avc_StatusEventHandlerRef_t handlerRef)struct le_avc_StatusEventHandler * le_avc_StatusEventHandlerRef_tDefinition: le_avc_common.h:541le_result_t le_avc_AcceptDownload(void)void le_avc_RemoveCommInfoHandler(le_avc_CommInfoHandlerRef_t handlerRef)void le_avc_RemoveSessionRequestEventHandler(le_avc_SessionRequestEventHandlerRef_t handlerRef)le_result_t le_avc_StartDmSession(uint16_t serverId, bool isAutoDisconnect)le_avc_CredentialStatus_t le_avc_GetCredentialStatus(void)le_result_t le_avc_StopSession(void)le_result_t le_avc_AcceptReboot(void)LE_FULL_API void le_avc_SetServerDisconnectHandler(le_avc_DisconnectHandler_t disconnectHandler, void *contextPtr)le_avc_SessionType_t le_avc_GetSessionType(void)le_result_t le_avc_CheckRoute(void)le_result_t le_avc_DeferReboot(uint32_t deferMinutes)