14d5ea236Sopenharmony_ci/* 24d5ea236Sopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd. 34d5ea236Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44d5ea236Sopenharmony_ci * you may not use this file except in compliance with the License. 54d5ea236Sopenharmony_ci * You may obtain a copy of the License at 64d5ea236Sopenharmony_ci * 74d5ea236Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84d5ea236Sopenharmony_ci * 94d5ea236Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104d5ea236Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114d5ea236Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124d5ea236Sopenharmony_ci * See the License for the specific language governing permissions and 134d5ea236Sopenharmony_ci * limitations under the License. 144d5ea236Sopenharmony_ci */ 154d5ea236Sopenharmony_ci 164d5ea236Sopenharmony_ci/** 174d5ea236Sopenharmony_ci * @addtogroup OTA 184d5ea236Sopenharmony_ci * @{ 194d5ea236Sopenharmony_ci * 204d5ea236Sopenharmony_ci * @brief Provides system upgrades. 214d5ea236Sopenharmony_ci * 224d5ea236Sopenharmony_ci * @since 1.0 234d5ea236Sopenharmony_ci * @version 1.0 244d5ea236Sopenharmony_ci */ 254d5ea236Sopenharmony_ci 264d5ea236Sopenharmony_ci /** 274d5ea236Sopenharmony_ci * @file hota_updater.h 284d5ea236Sopenharmony_ci * 294d5ea236Sopenharmony_ci * @brief Defines the functions for system upgrades. 304d5ea236Sopenharmony_ci * 314d5ea236Sopenharmony_ci * @since 1.0 324d5ea236Sopenharmony_ci * @version 1.0 334d5ea236Sopenharmony_ci */ 344d5ea236Sopenharmony_ci#ifndef OHOS_LITE_HOTA_UPDATER_H 354d5ea236Sopenharmony_ci#define OHOS_LITE_HOTA_UPDATER_H 364d5ea236Sopenharmony_ci 374d5ea236Sopenharmony_ci#ifdef __cplusplus 384d5ea236Sopenharmony_ci#if __cplusplus 394d5ea236Sopenharmony_ciextern "C" { 404d5ea236Sopenharmony_ci#endif 414d5ea236Sopenharmony_ci#endif /* End of #ifdef __cplusplus */ 424d5ea236Sopenharmony_ci 434d5ea236Sopenharmony_ci#define USE_DEFAULT_PKG 1 444d5ea236Sopenharmony_ci#define NOT_USE_DEFAULT_PKG 0 454d5ea236Sopenharmony_ci 464d5ea236Sopenharmony_citypedef enum { 474d5ea236Sopenharmony_ci HOTA_NOT_INIT = 0X01, 484d5ea236Sopenharmony_ci HOTA_INITED = 0x02, 494d5ea236Sopenharmony_ci HOTA_TRANSPORT_INFO_DONE = 0x03, 504d5ea236Sopenharmony_ci HOTA_TRANSPORT_ALL_DONE = 0x04, 514d5ea236Sopenharmony_ci HOTA_FAILED = 0x05, 524d5ea236Sopenharmony_ci HOTA_CANCELED = 0x06 534d5ea236Sopenharmony_ci} HotaStatus; 544d5ea236Sopenharmony_ci 554d5ea236Sopenharmony_citypedef enum { 564d5ea236Sopenharmony_ci HOTA_DATA_COMMON_ERR = 0, 574d5ea236Sopenharmony_ci HOTA_DATA_WRITE_ERR = 1, 584d5ea236Sopenharmony_ci HOTA_VERSION_INVALID = 2, 594d5ea236Sopenharmony_ci HOTA_DATA_SIGN_CHECK_ERR = 3, 604d5ea236Sopenharmony_ci HOTA_DATA_VERIFY_HASH_ERR = 4, 614d5ea236Sopenharmony_ci HOTA_DATA_COPY_TO_BUFFER_ERR = 5 624d5ea236Sopenharmony_ci} HotaErrorCode; 634d5ea236Sopenharmony_ci 644d5ea236Sopenharmony_citypedef void (*ErrorCallBackFunc)(HotaErrorCode errorCode); 654d5ea236Sopenharmony_citypedef void (*StatusCallBackFunc)(HotaStatus status); 664d5ea236Sopenharmony_ci 674d5ea236Sopenharmony_ci/** 684d5ea236Sopenharmony_ci * @brief Sets the switch for using the default upgrade package format. 694d5ea236Sopenharmony_ci * 704d5ea236Sopenharmony_ci * You can call this function to choose the default upgrade package format when developing the system upgrade 714d5ea236Sopenharmony_ci * capability. \n 724d5ea236Sopenharmony_ci * If the default upgrade package format is used, the system ensures the security and integrity of the 734d5ea236Sopenharmony_ci * upgrade package. \n 744d5ea236Sopenharmony_ci * If it is not used, you need to ensure the security and integrity of the upgrade package you have chosen. 754d5ea236Sopenharmony_ci * To be specific, you need to call the {@link HotaRead} function to read the data that has been written into 764d5ea236Sopenharmony_ci * flash memory, and then verify the data. \n 774d5ea236Sopenharmony_ci * 784d5ea236Sopenharmony_ci * @param flag Specifies whether to use the default system upgrade package format. The value <b>1</b> (default value) 794d5ea236Sopenharmony_ci * means to use it, and <b>0</b> means not to use it. 804d5ea236Sopenharmony_ci * 814d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 824d5ea236Sopenharmony_ci * 834d5ea236Sopenharmony_ci * @since 1.0 844d5ea236Sopenharmony_ci * @version 1.0 854d5ea236Sopenharmony_ci */ 864d5ea236Sopenharmony_ciint HotaSetPackageType(unsigned int flag); 874d5ea236Sopenharmony_ci 884d5ea236Sopenharmony_ci/** 894d5ea236Sopenharmony_ci * @brief Obtains the index of the A/B partition to be upgraded. 904d5ea236Sopenharmony_ci * 914d5ea236Sopenharmony_ci * In the A/B upgrade scenario, you can use this function to determine whether partition A or B will be upgraded. \n 924d5ea236Sopenharmony_ci * 934d5ea236Sopenharmony_ci * @param index Indicates the index of a partition. The value <b>1</b> means partition A, and <b>2</b> 944d5ea236Sopenharmony_ci * means partition B. 954d5ea236Sopenharmony_ci * 964d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 974d5ea236Sopenharmony_ci * 984d5ea236Sopenharmony_ci * @since 1.0 994d5ea236Sopenharmony_ci * @version 1.0 1004d5ea236Sopenharmony_ci */ 1014d5ea236Sopenharmony_ciint HotaGetUpdateIndex(unsigned int *index); 1024d5ea236Sopenharmony_ci 1034d5ea236Sopenharmony_ci/** 1044d5ea236Sopenharmony_ci * @brief Initializes the OTA module. 1054d5ea236Sopenharmony_ci * 1064d5ea236Sopenharmony_ci * @param errorCallback Indicates the callback invoked when an error occurs during the upgrade. 1074d5ea236Sopenharmony_ci * This parameter can be null. 1084d5ea236Sopenharmony_ci * @param statusCallback Indicates the callback invoked when the upgrade status changes. This parameter can be null. 1094d5ea236Sopenharmony_ci * 1104d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 1114d5ea236Sopenharmony_ci * 1124d5ea236Sopenharmony_ci * @since 1.0 1134d5ea236Sopenharmony_ci * @version 1.0 1144d5ea236Sopenharmony_ci */ 1154d5ea236Sopenharmony_ciint HotaInit(ErrorCallBackFunc errorCallback, StatusCallBackFunc statusCallback); 1164d5ea236Sopenharmony_ci 1174d5ea236Sopenharmony_ci/** 1184d5ea236Sopenharmony_ci * @brief Writes specified data into flash memory. 1194d5ea236Sopenharmony_ci * 1204d5ea236Sopenharmony_ci * @param buffer Indicates the data to be written into flash memory. 1214d5ea236Sopenharmony_ci * @param offset Indicates the offset from where to start writing data. 1224d5ea236Sopenharmony_ci * @param buffSize Indicates the size of the data to be written. 1234d5ea236Sopenharmony_ci * 1244d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 1254d5ea236Sopenharmony_ci * 1264d5ea236Sopenharmony_ci * @since 1.0 1274d5ea236Sopenharmony_ci * @version 1.0 1284d5ea236Sopenharmony_ci */ 1294d5ea236Sopenharmony_ciint HotaWrite(unsigned char *buffer, unsigned int offset, unsigned int buffSize); 1304d5ea236Sopenharmony_ci 1314d5ea236Sopenharmony_ci/** 1324d5ea236Sopenharmony_ci * @brief Reads the data that has been written into flash memory. 1334d5ea236Sopenharmony_ci * 1344d5ea236Sopenharmony_ci * This function is required for verifying data correctness when the default upgrade package format is not used. \n 1354d5ea236Sopenharmony_ci * It is not required when the default upgrade package format is used. \n 1364d5ea236Sopenharmony_ci * 1374d5ea236Sopenharmony_ci * @param offset Indicates the offset from where to start reading data. 1384d5ea236Sopenharmony_ci * @param bufLen Indicates the length of the data to be read. 1394d5ea236Sopenharmony_ci * @param buf Indicates the buffer to store the data that has been read. 1404d5ea236Sopenharmony_ci * 1414d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 1424d5ea236Sopenharmony_ci * 1434d5ea236Sopenharmony_ci * @since 1.0 1444d5ea236Sopenharmony_ci * @version 1.0 1454d5ea236Sopenharmony_ci */ 1464d5ea236Sopenharmony_ciint HotaRead(unsigned int offset, unsigned int bufLen, unsigned char *buf); 1474d5ea236Sopenharmony_ci 1484d5ea236Sopenharmony_ci/** 1494d5ea236Sopenharmony_ci * @brief Cancels an upgrade. 1504d5ea236Sopenharmony_ci * 1514d5ea236Sopenharmony_ci * If an upgrade fails or is interrupted, you can use this function to cancel it. \n 1524d5ea236Sopenharmony_ci * 1534d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 1544d5ea236Sopenharmony_ci * 1554d5ea236Sopenharmony_ci * @since 1.0 1564d5ea236Sopenharmony_ci * @version 1.0 1574d5ea236Sopenharmony_ci */ 1584d5ea236Sopenharmony_ciint HotaCancel(void); 1594d5ea236Sopenharmony_ci 1604d5ea236Sopenharmony_ci/** 1614d5ea236Sopenharmony_ci * @brief Sets the system state to be upgrading after data has been written into flash memory by {@link HotaWrite}. 1624d5ea236Sopenharmony_ci * 1634d5ea236Sopenharmony_ci * After this operation is successful, you need to call the {@link HotaRestart} function to complete the upgrade. \n 1644d5ea236Sopenharmony_ci * 1654d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 1664d5ea236Sopenharmony_ci * 1674d5ea236Sopenharmony_ci * @since 1.0 1684d5ea236Sopenharmony_ci * @version 1.0 1694d5ea236Sopenharmony_ci */ 1704d5ea236Sopenharmony_ciint HotaSetBootSettings(void); 1714d5ea236Sopenharmony_ci 1724d5ea236Sopenharmony_ci/** 1734d5ea236Sopenharmony_ci * @brief Restarts the system after an upgrade. 1744d5ea236Sopenharmony_ci * 1754d5ea236Sopenharmony_ci * You need to call this function after you have called the {@link HotaSetBootSettings} function. \n 1764d5ea236Sopenharmony_ci * 1774d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 1784d5ea236Sopenharmony_ci * 1794d5ea236Sopenharmony_ci * @since 1.0 1804d5ea236Sopenharmony_ci * @version 1.0 1814d5ea236Sopenharmony_ci */ 1824d5ea236Sopenharmony_ciint HotaRestart(void); 1834d5ea236Sopenharmony_ci 1844d5ea236Sopenharmony_ci/** 1854d5ea236Sopenharmony_ci * @brief get update ability. 1864d5ea236Sopenharmony_ci * 1874d5ea236Sopenharmony_ci * You need to call this function when update process init. \n 1884d5ea236Sopenharmony_ci * 1894d5ea236Sopenharmony_ci * @return Returns update abilty. 1904d5ea236Sopenharmony_ci * 1914d5ea236Sopenharmony_ci * @since 1.0 1924d5ea236Sopenharmony_ci * @version 1.0 1934d5ea236Sopenharmony_ci */ 1944d5ea236Sopenharmony_ciint HotaGetUpdateAbility(void); 1954d5ea236Sopenharmony_ci 1964d5ea236Sopenharmony_ci/** 1974d5ea236Sopenharmony_ci * @brief get ota package update path. 1984d5ea236Sopenharmony_ci * 1994d5ea236Sopenharmony_ci * You need to call this function before update process. \n 2004d5ea236Sopenharmony_ci * 2014d5ea236Sopenharmony_ci * @param path Indicates where ota package you place. 2024d5ea236Sopenharmony_ci * @param len Indicates path len. 2034d5ea236Sopenharmony_ci * 2044d5ea236Sopenharmony_ci * @return Returns <b>0</b> if the operation is successful; returns <b>-1</b> otherwise. 2054d5ea236Sopenharmony_ci * 2064d5ea236Sopenharmony_ci * @since 1.0 2074d5ea236Sopenharmony_ci * @version 1.0 2084d5ea236Sopenharmony_ci */ 2094d5ea236Sopenharmony_ciint HotaGetOtaPkgPath(char *path, int len); 2104d5ea236Sopenharmony_ci 2114d5ea236Sopenharmony_ci/** 2124d5ea236Sopenharmony_ci * @brief judge device can auto reboot. 2134d5ea236Sopenharmony_ci * 2144d5ea236Sopenharmony_ci * You need to call this function when update process init.\n 2154d5ea236Sopenharmony_ci * 2164d5ea236Sopenharmony_ci * @return Returns <b>1</b> if device can auto update; returns <b>0</b> if device can not auto update. 2174d5ea236Sopenharmony_ci * 2184d5ea236Sopenharmony_ci * @since 1.0 2194d5ea236Sopenharmony_ci * @version 1.0 2204d5ea236Sopenharmony_ci */ 2214d5ea236Sopenharmony_ciint HotaIsDeviceCanReboot(void); 2224d5ea236Sopenharmony_ci 2234d5ea236Sopenharmony_ci/** 2244d5ea236Sopenharmony_ci * @brief judge is develop mode now. 2254d5ea236Sopenharmony_ci * 2264d5ea236Sopenharmony_ci * You need to call this function to get develop mode.\n 2274d5ea236Sopenharmony_ci * 2284d5ea236Sopenharmony_ci * @return Returns <b>1</b> if device is develop mode; returns <b>0</b> if device is not develop mode. 2294d5ea236Sopenharmony_ci * 2304d5ea236Sopenharmony_ci * @since 1.0 2314d5ea236Sopenharmony_ci * @version 1.0 2324d5ea236Sopenharmony_ci */ 2334d5ea236Sopenharmony_ciint HotaIsDevelopMode(void); 2344d5ea236Sopenharmony_ci 2354d5ea236Sopenharmony_ci/** 2364d5ea236Sopenharmony_ci * @brief get update status. 2374d5ea236Sopenharmony_ci * 2384d5ea236Sopenharmony_ci * You need to call this function when update process .\n 2394d5ea236Sopenharmony_ci * 2404d5ea236Sopenharmony_ci * @return Returns UpdateStatus if the operation is successful; returns <b>-1</b> otherwise. 2414d5ea236Sopenharmony_ci * 2424d5ea236Sopenharmony_ci * @since 1.0 2434d5ea236Sopenharmony_ci * @version 1.0 2444d5ea236Sopenharmony_ci */ 2454d5ea236Sopenharmony_ciint HotaGetUpdateStatus(void); 2464d5ea236Sopenharmony_ci 2474d5ea236Sopenharmony_ci/** 2484d5ea236Sopenharmony_ci * @brief reboot and clean userdata. 2494d5ea236Sopenharmony_ci * 2504d5ea236Sopenharmony_ci * You need to call this function when update process .\n 2514d5ea236Sopenharmony_ci * 2524d5ea236Sopenharmony_ci * @return Returns UpdateStatus if the operation is successful; returns <b>-1</b> otherwise. 2534d5ea236Sopenharmony_ci * 2544d5ea236Sopenharmony_ci * @since 1.0 2554d5ea236Sopenharmony_ci * @version 1.0 2564d5ea236Sopenharmony_ci */ 2574d5ea236Sopenharmony_ciint HotaRebootAndCleanUserData(void); 2584d5ea236Sopenharmony_ci 2594d5ea236Sopenharmony_ci/** 2604d5ea236Sopenharmony_ci * @brief reboot and clean cache. 2614d5ea236Sopenharmony_ci * 2624d5ea236Sopenharmony_ci * You need to call this function when update process .\n 2634d5ea236Sopenharmony_ci * 2644d5ea236Sopenharmony_ci * @return Returns UpdateStatus if the operation is successful; returns <b>-1</b> otherwise. 2654d5ea236Sopenharmony_ci * 2664d5ea236Sopenharmony_ci * @since 1.0 2674d5ea236Sopenharmony_ci * @version 1.0 2684d5ea236Sopenharmony_ci */ 2694d5ea236Sopenharmony_ciint HotaRebootAndCleanCache(void); 2704d5ea236Sopenharmony_ci 2714d5ea236Sopenharmony_ci 2724d5ea236Sopenharmony_ci#ifdef __cplusplus 2734d5ea236Sopenharmony_ci#if __cplusplus 2744d5ea236Sopenharmony_ci} 2754d5ea236Sopenharmony_ci#endif 2764d5ea236Sopenharmony_ci#endif /* End of #ifdef __cplusplus */ 2774d5ea236Sopenharmony_ci 2784d5ea236Sopenharmony_ci#endif /* End of #ifndef OHOS_LITE_HOTA_UPDATER_H */ 2794d5ea236Sopenharmony_ci/** @} */ 280