Integrate some common codes from tota-ua
[platform/core/system/libtota.git] / ss_engine / fota_common.h
1 /*
2  * libtota
3  *
4  * Copyright (c) 2017 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the License);
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 #ifndef __FOTA_COMMON_H__
20 #define __FOTA_COMMON_H__
21
22 #include <stdio.h>
23 #include "fota_log.h"
24
25 typedef signed char s8;
26 typedef unsigned char u8;
27
28 typedef signed short s16;
29 typedef unsigned short u16;
30
31 typedef signed int s32;
32 typedef unsigned int u32;
33 typedef u32 size_t;
34
35 typedef signed long sl32;
36 typedef unsigned long ul32;
37
38 typedef signed long long s64;
39 typedef unsigned long long u64;
40
41 #ifndef TIME_PROFILING
42         //#define TIME_PROFILING
43 #endif
44 #ifndef HEAP_PROFILING
45         //#define HEAP_PROFILING;
46 #endif
47 #ifndef MEM_PROFILING
48         //#define MEM_PROFILING
49 #endif
50 #ifndef SUPPORT_CONTAINER
51         //#define SUPPORT_CONTAINER
52 #endif
53
54 #define UNUSED(x) (void)(x)
55
56 #define SS_TOTA_VERSION "1.0.18"
57 #define BSDIFF "BSDIFF40"
58 #define IMGDIFF "IMGDIFF2"
59 #define SECTOR_SIZE             512
60 #define SS_KERNEL_DELTA_HEADER          128
61
62 #define SS_COMMON_WORKSPACE                     "/system/opt/usr/data/fota"
63 #define SS_KERNEL_UNPACK_SCRIPT         "unpack.sh"
64 #define SS_KERN_UNPK_SCRIPT_PATH        SS_COMMON_WORKSPACE "/" SS_KERNEL_UNPACK_SCRIPT
65 #define SS_BACKUP_SOURCE                                        SS_COMMON_WORKSPACE "/saved.file"       //How to make sure there is SPACE
66 #define SS_PATCHFILE_SOURCE                             SS_COMMON_WORKSPACE "/patchfile.file"   //define in common place
67 #define SS_PATCHLIST_BKUPLOC                    SS_COMMON_WORKSPACE "/patchlist.txt"
68 #define SS_NEW_COMPRESSED_FILE          SS_COMMON_WORKSPACE "/system.7z"
69 #define SS_KERNEL_WORKSPACE                             SS_COMMON_WORKSPACE "/kernel-work"
70 #define SS_GZIP_TARGET                                                  SS_KERNEL_WORKSPACE "/gzip"
71 #define SS_STAT_TARGET                                                  SS_KERNEL_WORKSPACE "/stat"
72 #define SS_DD_TARGET                                                            SS_KERNEL_WORKSPACE "/dd"
73
74 #define SS_GZIP_SOURCE                                                  "system/bin/gzip"
75 #define SS_STAT_SOURCE                                                  "system/usr/bin/stat"
76 #define SS_DD_SOURCE                                                            "system/bin/dd"
77
78 #define SS_KERNEL_MAGIC                                         "UnpackdzImage"
79 #define SS_KERNEL_NAME                                                  "zImage"
80 #define SS_KERNEL_TARGET_NAME                   "dzImage_final"
81 #define SS_KERNEL_UNPACK_DIR                    SS_KERNEL_NAME "_unpacked"
82 #define SS_PATCHLISTFOLDER                              "/p"
83 #define SS_NEWPATCHFOLDER                                       "/n"
84 #define SS_PATCHLISTFORMAT                              ".txt"
85 #define SS_PATCH_ATTR_FORMAT                    "_attr.txt"
86 #define SS_FSCOUNT_MAGIC_KEY                    "PaTcHCoUnT:"
87 #define SS_FSCOUNT_MAGIG_KEYLEN                 (11)    //length of  SS_FSCOUNT_MAGIC_KEY
88 #define SS_IMAGE_MAGIC_KEY                      "TiZSiG@tOtA_00_:.{0,64}"
89 #define SS_IMAGE_MAGIC_KEY_VAL                         SS_COMMON_WORKSPACE "/delta_sha.txt"
90
91 #define SS_TOKEN_SPACE                                                  " "
92 #define SS_TOKEN_NEWLINE                                        "\n"
93 #define SS_TOEKN_COLON                                                  ":"
94 #define SS_CHAR_FWSLASH                                                 '/'
95 #define SS_FWSLASH                                                                      "/"
96 #define SS_NULLENTRY                                                            "0"
97 #define SS_MAX_NAMELENSUPPORTED                 (200)   //(Tar supports 256, But extra space is used for PartitionName, .delta, /p, so restricting filename max to 200)
98 #define SS_MAX_FILE_PATH                                                (512)
99 #define SS_TOKEN_MAXLINE_LEN                    (1024)
100 #define SS_COMPRESSED_FILE                                      "system.7z"
101
102 #define SS_STRING_DIFF                                                  "DIFF"
103 #define SS_STRING_MOVE                                                  "MOVE"
104 #define SS_STRING_DEL                                                           "DEL"
105 #define SS_STRING_SYM                                                   "SYM"
106 #define SS_STRING_NEW                                                   "NEW"
107 #define SS_STRING_REG                                                           "REG"
108 #define SS_STRING_TPK                                                           "TPK"
109 #define SS_STRING_ZIP                                                           "ZIP"
110 #define SS_STRING_END                                                   "END"
111
112 #ifdef SUPPORT_CONTAINER
113 #define SS_ZIP_SOURCE                                                           "system/usr/bin/zip"
114 #define SS_ZIP_TARGET                                                           "system/opt/data/fota/zip"
115 #define SS_UNZIP_SOURCE                                         "system/usr/bin/unzip"
116 #define SS_UNZIP_TARGET                                         "system/opt/data/fota/unzip"
117 #define SS_FIND_CMD_SOURCE                              "system/usr/bin/find"
118 #define SS_FIND_CMD_TARGET                              "system/opt/data/fota/find"
119 #define SS_ZIP_COMMAND                                                  "/opt/data/fota/zip"
120 #define SS_UNZIP_COMMAND                                        "/opt/data/fota/unzip"
121 #define SS_FIND_COMMAND                                         "/opt/data/fota/find"
122 #define SS_SEPARATOR_TOKEN                              "|"
123 #define SS_NEWLINE_TOKEN                                                "\n"
124 #define SS_FW_SLASH_TOKEN                                       '/'
125 #define SS_CONTAINER_INFO_FILE                  "PATCH.txt"
126 #define SS_CONTAINER_WORKSPACE          SS_COMMON_WORKSPACE "/archive"
127 #define SS_ARCHIVE_WORK_FOLDER          SS_CONTAINER_WORKSPACE "/tpk"
128 #define SS_ARCHIVE_DELTA_FOLDER         SS_CONTAINER_WORKSPACE "/delta"
129 #define SS_ARCHIVE_UNPACK_FOLDER         SS_CONTAINER_WORKSPACE "/unpack"
130 #endif
131
132 #ifdef MEM_PROFILING
133 #define SS_MEMORY_USAGE_LOG                                     SS_COMMON_WORKSPACE "/log_memory"
134 #define SS_MEMORY_PROFILING_SCRIPT      SS_COMMON_WORKSPACE "/mem_use.sh"
135 #endif
136
137 struct tar_Data {
138     int itemSize;
139     int itemOffset;
140     int itemName[256];
141     struct tar_Data *nextnode;
142 };
143 typedef struct tar_Data tar_Data_t;
144
145 #endif                          /* __FOTA_COMMON_H__ */