1/*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16#ifndef FIRMWARE_COMPONENT_H
17#define FIRMWARE_COMPONENT_H
18
19#include <string>
20
21#include "package_type.h"
22#include "update_define.h"
23#include "upgrade_status.h"
24
25namespace OHOS {
26namespace UpdateEngine {
27struct FirmwareComponent {
28    int32_t id = 0;
29
30    std::string versionId;           // 标识包的唯一性
31    int32_t packageIndex = 0;        // 包的安装顺序
32    PackageType versionPackageType = PackageType::DYNAMIC;
33
34    std::string targetBlVersionNumber;
35    std::string targetBlDisplayVersionNumber;
36
37    std::string versionNumber; // 包文件本身的versionNumber
38
39    std::string blVersionInfo;
40    std::string componentId;
41    std::string descriptPackageId;
42    std::string changelogUrl;
43    int32_t blVersionType = 0;
44
45    bool isNeedRestart;
46    int32_t patchType = 0;
47    std::string url;
48    std::string reserveUrl;
49    int32_t storageType = 0; // 内测或商用版本
50
51    std::string fileName;   // 包的名字,来自filelist
52    int64_t size = 0;       // 包大小,来自filelist
53    std::string verifyInfo; // 包的sha256值,来自filelist
54    std::string spath;
55
56    UpgradeStatus status = UpgradeStatus::INIT;
57    int32_t progress = 0;
58
59    std::string ToString()
60    {
61        return std::string("FirmwareComponent: ")
62        .append("id=").append(std::to_string(id)).append(",")
63        .append("versionId=").append(versionId).append(",")
64        .append("packageIndex=").append(std::to_string(packageIndex)).append(",")
65        .append("versionPackageType=").append(std::to_string(CAST_INT(versionPackageType))).append(",")
66        .append("targetBlVersionNumber=").append(targetBlVersionNumber).append(",")
67        .append("targetBlDisplayVersionNumber=").append(targetBlDisplayVersionNumber).append(",")
68        .append("versionNumber=").append(versionNumber).append(",")
69        .append("blVersionInfo=").append(blVersionInfo).append(",")
70        .append("componentId=").append(componentId).append(",")
71        .append("descriptPackageId=").append(descriptPackageId).append(",")
72        .append("changelogUrl=").append(changelogUrl).append(",")
73        .append("blVersionType=").append(std::to_string(blVersionType)).append(",")
74        .append("isNeedRestart=").append(std::to_string(isNeedRestart)).append(",")
75        .append("patchType=").append(std::to_string(patchType)).append(",")
76        .append("url=").append(url).append(",")
77        .append("reserveUrl=").append(reserveUrl).append(",")
78        .append("storageType=").append(std::to_string(storageType)).append(",")
79        .append("fileName=").append(fileName).append(",")
80        .append("size=").append(std::to_string(size)).append(",")
81        .append("verifyInfo=").append(verifyInfo).append(",")
82        .append("spath=").append(spath).append(",")
83        .append("status=").append(std::to_string(CAST_INT(status))).append(",")
84        .append("progress=").append(std::to_string(progress));
85    }
86};
87} // namespace UpdateEngine
88} // namespace OHOS
89#endif // FIRMWARE_COMPONENT_H
90