xref: /rkdeveloptool/DefineHeader.h (revision c30d921c26f1105311971e7cc3731cac267aae66)
1 #ifndef DEFINE_HEADER
2 #define DEFINE_HEADER
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <stdarg.h>
6 #include <string.h>
7 #include <sys/stat.h>
8 #include <dirent.h>
9 #include <time.h>
10 #include <unistd.h>
11 #include <iconv.h>
12 #include <wchar.h>
13 #include <errno.h>
14 #include <pthread.h>
15 #include <libusb.h>
16 
17 #include "Property.hpp"
18 #include <list>
19 #include <vector>
20 #include <set>
21 #include <string>
22 #include <sstream>
23 #include <algorithm>
24 using namespace std;
25 typedef unsigned char BYTE, *PBYTE;
26 typedef unsigned char UCHAR;
27 typedef unsigned short WCHAR;
28 typedef unsigned short USHORT;
29 typedef unsigned int	UINT;
30 typedef unsigned int	DWORD;
31 #define ALIGN(x, a)		__ALIGN_MASK((x), (a) - 1)
32 #define __ALIGN_MASK(x, mask)	(((x) + (mask)) & ~(mask))
33 #define RK28_SEC2_RESERVED_LEN 473
34 #define CHIPINFO_LEN 16
35 #define RK28_SEC3_RESERVED_LEN 382
36 #define RKDEVICE_SN_LEN 60
37 #define RKDEVICE_UID_LEN 30
38 #define RKDEVICE_MAC_LEN 6
39 #define RKDEVICE_WIFI_LEN 6
40 #define RKDEVICE_BT_LEN 6
41 #define RKDEVICE_IMEI_LEN 15
42 typedef enum{
43 	RKNONE_DEVICE = 0,
44 	RK27_DEVICE = 0x10,
45 	RKCAYMAN_DEVICE,
46 	RK28_DEVICE = 0x20,
47 	RK281X_DEVICE,
48 	RKPANDA_DEVICE,
49 	RKNANO_DEVICE = 0x30,
50 	RKSMART_DEVICE,
51 	RKCROWN_DEVICE = 0x40,
52 	RK29_DEVICE = 0x50,
53 	RK292X_DEVICE,
54 	RK30_DEVICE = 0x60,
55 	RK30B_DEVICE,
56 	RK31_DEVICE = 0x70,
57 	RK32_DEVICE = 0x80
58 } ENUM_RKDEVICE_TYPE;
59 typedef enum{
60 	RK_OS = 0,
61 	ANDROID_OS = 0x1
62 } ENUM_OS_TYPE;
63 
64 typedef enum{
65 	RKUSB_NONE = 0x0,
66 	RKUSB_MASKROM = 0x01,
67 	RKUSB_LOADER = 0x02,
68 	RKUSB_MSC = 0x04
69 } ENUM_RKUSB_TYPE;
70 typedef enum{
71 	ENTRY471 = 1,
72 	ENTRY472 = 2,
73 	ENTRYLOADER = 4
74 } ENUM_RKBOOTENTRY;
75 
76 #pragma pack(1)
77 typedef struct{
78 	USHORT	usYear;
79 	BYTE	ucMonth;
80 	BYTE  	ucDay;
81 	BYTE  	ucHour;
82 	BYTE  	ucMinute;
83 	BYTE  	ucSecond;
84 } STRUCT_RKTIME, *PSTRUCT_RKTIME;
85 
86 typedef struct{
87 	char szItemName[20];
88 	char szItemValue[256];
89 } STRUCT_CONFIG_ITEM, *PSTRUCT_CONFIG_ITEM;
90 typedef struct
91 {
92 	char szItemName[64];
93 	UINT uiItemOffset;
94 	UINT uiItemSize;
95 }STRUCT_PARAM_ITEM,*PSTRUCT_PARAM_ITEM;
96 typedef struct _STRUCT_RKDEVICE_DESC{
97 	USHORT usVid;
98 	USHORT usPid;
99 	USHORT usbcdUsb;
100 	UINT     uiLocationID;
101 	ENUM_RKUSB_TYPE emUsbType;
102 	ENUM_RKDEVICE_TYPE emDeviceType;
103 	void   *pUsbHandle;
104 } STRUCT_RKDEVICE_DESC, *PSTRUCT_RKDEVICE_DESC;
105 typedef	struct {
106 	DWORD	dwTag;
107 	BYTE	reserved[4];
108 	UINT	uiRc4Flag;
109 	USHORT	usBootCode1Offset;
110 	USHORT	usBootCode2Offset;
111 	BYTE	reserved1[490];
112 	USHORT  usBootDataSize;
113 	USHORT	usBootCodeSize;
114 	USHORT	usCrc;
115 } RK28_IDB_SEC0, *PRK28_IDB_SEC0;
116 
117 typedef struct {
118 	USHORT  usSysReservedBlock;
119 	USHORT  usDisk0Size;
120 	USHORT  usDisk1Size;
121 	USHORT  usDisk2Size;
122 	USHORT  usDisk3Size;
123 	UINT	uiChipTag;
124 	UINT	uiMachineId;
125 	USHORT	usLoaderYear;
126 	USHORT	usLoaderDate;
127 	USHORT	usLoaderVer;
128 	USHORT  usLastLoaderVer;
129 	USHORT  usReadWriteTimes;
130 	DWORD	dwFwVer;
131 	USHORT  usMachineInfoLen;
132 	UCHAR	ucMachineInfo[30];
133 	USHORT	usManufactoryInfoLen;
134 	UCHAR	ucManufactoryInfo[30];
135 	USHORT	usFlashInfoOffset;
136 	USHORT	usFlashInfoLen;
137 	UCHAR	reserved[384];
138 	UINT	uiFlashSize;
139 	BYTE    reserved1;
140 	BYTE    bAccessTime;
141 	USHORT  usBlockSize;
142 	BYTE    bPageSize;
143 	BYTE    bECCBits;
144 	BYTE    reserved2[8];
145 	USHORT  usIdBlock0;
146 	USHORT  usIdBlock1;
147 	USHORT  usIdBlock2;
148 	USHORT  usIdBlock3;
149 	USHORT  usIdBlock4;
150 } RK28_IDB_SEC1, *PRK28_IDB_SEC1;
151 
152 typedef struct {
153 	USHORT  usInfoSize;
154 	BYTE    bChipInfo[CHIPINFO_LEN];
155 	BYTE    reserved[RK28_SEC2_RESERVED_LEN];
156 	char    szVcTag[3];
157 	USHORT  usSec0Crc;
158 	USHORT  usSec1Crc;
159 	UINT	uiBootCodeCrc;
160 	USHORT  usSec3CustomDataOffset;
161 	USHORT  usSec3CustomDataSize;
162 	char    szCrcTag[4];
163 	USHORT  usSec3Crc;
164 } RK28_IDB_SEC2, *PRK28_IDB_SEC2;
165 
166 typedef struct {
167 	USHORT  usSNSize;
168 	BYTE    sn[RKDEVICE_SN_LEN];
169 	BYTE    reserved[RK28_SEC3_RESERVED_LEN];
170 	BYTE	wifiSize;
171 	BYTE	wifiAddr[RKDEVICE_WIFI_LEN];
172 	BYTE	imeiSize;
173 	BYTE	imei[RKDEVICE_IMEI_LEN];
174 	BYTE	uidSize;
175 	BYTE	uid[RKDEVICE_UID_LEN];
176 	BYTE    blueToothSize;
177 	BYTE	blueToothAddr[RKDEVICE_BT_LEN];
178 	BYTE	macSize;
179 	BYTE	macAddr[RKDEVICE_MAC_LEN];
180 } RK28_IDB_SEC3, *PRK28_IDB_SEC3;
181 #pragma pack()
182 typedef list<STRUCT_RKDEVICE_DESC> RKDEVICE_DESC_SET;
183 typedef RKDEVICE_DESC_SET::iterator device_list_iter;
184 typedef vector<string> STRING_VECTOR;
185 typedef vector<UINT> UINT_VECTOR;
186 typedef vector<STRUCT_CONFIG_ITEM> CONFIG_ITEM_VECTOR;
187 typedef vector<STRUCT_PARAM_ITEM> PARAM_ITEM_VECTOR;
188 typedef enum{
189 	TESTDEVICE_PROGRESS,
190 	DOWNLOADIMAGE_PROGRESS,
191 	CHECKIMAGE_PROGRESS,
192 	TAGBADBLOCK_PROGRESS,
193 	TESTBLOCK_PROGRESS,
194 	ERASEFLASH_PROGRESS,
195 	ERASESYSTEM_PROGRESS,
196 	LOWERFORMAT_PROGRESS,
197 	ERASEUSERDATA_PROGRESS
198 } ENUM_PROGRESS_PROMPT;
199 
200 typedef enum{
201 	CALL_FIRST,
202 	CALL_MIDDLE,
203 	CALL_LAST
204 } ENUM_CALL_STEP;
205 
206 typedef void (*ProgressPromptCB)(DWORD deviceLayer, ENUM_PROGRESS_PROMPT promptID, long long totalValue, long long currentValue, ENUM_CALL_STEP emCall);
207 
208 bool WideStringToString(wchar_t *pszSrc, char *&pszDest);
209 bool StringToWideString(char *pszSrc, wchar_t *&pszDest);
210 #endif