nuttx-apps/include/lte/lte_fwupdate.h

156 lines
4.8 KiB
C
Raw Normal View History

/****************************************************************************
* apps/include/lte/lte_fwupdate.h
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership. The
* ASF licenses this file to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
****************************************************************************/
#ifndef __APPS_INCLUDE_LTE_LTE_FWUPDATE_H
#define __APPS_INCLUDE_LTE_LTE_FWUPDATE_H
/* API call type
*
* | Sync API |
* | ----------------------------- |
* | ltefwupdate_initialize |
* | ltefwupdate_injectrest |
* | ltefwupdate_injected_datasize |
* | ltefwupdate_execute |
* | ltefwupdate_result |
*
* attention
* This API notifies the progress of the update by the callback set by
* lte_set_report_restart(). You must call lte_set_report_restart()
* before lte_power_on().
*/
/****************************************************************************
* Included Files
****************************************************************************/
#include <stdint.h>
#include <nuttx/wireless/lte/lte.h>
#include "lte_fw_def.h"
#ifdef __cplusplus
#define EXTERN extern "C"
extern "C"
{
#else
#define EXTERN extern
#endif
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
/* Initialze injection delta image to LTE modem.
*
* Initialize LTE modem delta image injection with some data of top of delta
* image.
*
* [in] initial_data: Pointer to top data of update image.
* [in] len: Size of initial_data.
*
* Return value : Positive value is the injected length. Negative value is
* any error. In error case, the value can be below values.
*
* - LTEFW_RESULT_NOT_ENOUGH_INJECTSTORAGE
* - LTEFW_RESULT_DELTAIMAGE_HDR_CRC_ERROR
* - LTEFW_RESULT_DELTAIMAGE_HDR_UNSUPPORTED
* - EINVAL
* - ENODATA
*
*/
int ltefwupdate_initialize(FAR const char *initial_data, int len);
/* Inject rest delta image to LTE modem.
*
* Inject the rest of the delta image following the data injected
* by the ltefwupdate_initialize() and ltefwupdate_injectrest() functions.
*
* [in] rest_data: Pointer to top data of update image.
* [in] len: Size of initial_data.
*
* Return value : Positive value is the injected length. Negative value is
* any error. In error case, the value can be below values.
*
* - LTEFW_RESULT_NOT_ENOUGH_INJECTSTORAGE
* - LTEFW_RESULT_DELTAIMAGE_HDR_CRC_ERROR
* - LTEFW_RESULT_DELTAIMAGE_HDR_UNSUPPORTED
* - EINVAL
* - ENODATA
*
*/
int ltefwupdate_injectrest(FAR const char *rest_data, int len);
/* Get length of injected delta image file.
*
* On success, The length of injected data to the modem is returned.
* On failure, a negative value is returned according to <errno.h>.
*/
int ltefwupdate_injected_datasize(void);
/* Execute delta update.
* attention When this function is executed, the modem is automatically
* rebooted multiple times. The progress of the update can be checked by
* the callback set by lte_set_report_restart().
* Before executing this function, the modem must be woken up using
* lte_acquire_wakelock() to safely update the modem. Then
* lte_release_wakelock() is executed when the callback set by
* lte_set_report_restart() is called.
*
* On success, 0 is returned. On failure,
* negative value is returned as below values.
*
* - LTEFW_RESULT_PRECHK_SET_DELTAIMAGE_FAILED
* - LTEFW_RESULT_PRECHK_DELTAIMAGE_MISSING
* - LTEFW_RESULT_PRECHK_OOM
* - LTEFW_RESULT_PRECHK_SIZE_ERROR
* - LTEFW_RESULT_PRECHK_PKG_ERROR
* - LTEFW_RESULT_PRECHK_CRC_ERROR
* - -EPERM
*
*/
int ltefwupdate_execute(void);
/* Get the result of delta update.
* Execute this function after LTE_RESTART_MODEM_UPDATED is
* notified to the callback set by lte_set_report_restart().
*
* On success, 0 is returned. On failure,
* negative value is returned as below values.
* - LTEFW_RESULT_OK
* - LTEFW_RESULT_DELTAUPDATE_FAILED
* - LTEFW_RESULT_DELTAUPDATE_NORESULT
*
*/
int ltefwupdate_result(void);
#undef EXTERN
#ifdef __cplusplus
}
#endif
#endif /* __APPS_INCLUDE_LTE_LTE_FWUPDATE_H */