4 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 #ifndef __FOTA_COMMON_H__
20 #define __FOTA_COMMON_H__
25 typedef signed char s8;
26 typedef unsigned char u8;
28 typedef signed short s16;
29 typedef unsigned short u16;
31 typedef signed int s32;
32 typedef unsigned int u32;
35 typedef signed long sl32;
36 typedef unsigned long ul32;
38 typedef signed long long s64;
39 typedef unsigned long long u64;
41 #ifndef TIME_PROFILING
42 //#define TIME_PROFILING
44 #ifndef HEAP_PROFILING
45 //#define HEAP_PROFILING;
48 //#define MEM_PROFILING
50 #ifndef SUPPORT_CONTAINER
51 //#define SUPPORT_CONTAINER
54 #define UNUSED(x) (void)(x)
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
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"
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"
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"
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"
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"
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"
133 #define SS_MEMORY_USAGE_LOG SS_COMMON_WORKSPACE "/log_memory"
134 #define SS_MEMORY_PROFILING_SCRIPT SS_COMMON_WORKSPACE "/mem_use.sh"
141 struct tar_Data *nextnode;
143 typedef struct tar_Data tar_Data_t;
145 #endif /* __FOTA_COMMON_H__ */