xref: /rkdeveloptool/RKBoot.h (revision 76af099afcbcafd97801028de2ba3421d3c12865)
1*76af099aSliuyi #ifndef RKBOOT_HEADER
2*76af099aSliuyi #define RKBOOT_HEADER
3*76af099aSliuyi #include "DefineHeader.h"
4*76af099aSliuyi 
5*76af099aSliuyi #define  BOOT_RESERVED_SIZE 57
6*76af099aSliuyi #pragma pack(1)
7*76af099aSliuyi typedef struct  {
8*76af099aSliuyi 	UINT uiTag;
9*76af099aSliuyi 	USHORT usSize;
10*76af099aSliuyi 	DWORD  dwVersion;
11*76af099aSliuyi 	DWORD  dwMergeVersion;
12*76af099aSliuyi 	STRUCT_RKTIME stReleaseTime;
13*76af099aSliuyi 	ENUM_RKDEVICE_TYPE emSupportChip;
14*76af099aSliuyi 	UCHAR uc471EntryCount;
15*76af099aSliuyi 	DWORD dw471EntryOffset;
16*76af099aSliuyi 	UCHAR uc471EntrySize;
17*76af099aSliuyi 	UCHAR uc472EntryCount;
18*76af099aSliuyi 	DWORD dw472EntryOffset;
19*76af099aSliuyi 	UCHAR uc472EntrySize;
20*76af099aSliuyi 	UCHAR ucLoaderEntryCount;
21*76af099aSliuyi 	DWORD dwLoaderEntryOffset;
22*76af099aSliuyi 	UCHAR ucLoaderEntrySize;
23*76af099aSliuyi 	UCHAR ucSignFlag;
24*76af099aSliuyi 	UCHAR ucRc4Flag;
25*76af099aSliuyi 	UCHAR reserved[BOOT_RESERVED_SIZE];
26*76af099aSliuyi } STRUCT_RKBOOT_HEAD, *PSTRUCT_RKBOOT_HEAD;
27*76af099aSliuyi 
28*76af099aSliuyi typedef struct  {
29*76af099aSliuyi 	UCHAR ucSize;
30*76af099aSliuyi 	ENUM_RKBOOTENTRY emType;
31*76af099aSliuyi 	WCHAR szName[20];
32*76af099aSliuyi 	DWORD dwDataOffset;
33*76af099aSliuyi 	DWORD dwDataSize;
34*76af099aSliuyi 	DWORD dwDataDelay;
35*76af099aSliuyi } STRUCT_RKBOOT_ENTRY, *PSTRUCT_RKBOOT_ENTRY;
36*76af099aSliuyi 
37*76af099aSliuyi 
38*76af099aSliuyi #pragma pack()
39*76af099aSliuyi class CRKBoot {
40*76af099aSliuyi public:
41*76af099aSliuyi 	bool GetRc4DisableFlag();
42*76af099aSliuyi  	property<CRKBoot, bool, READ_ONLY> Rc4DisableFlag;
43*76af099aSliuyi 	bool GetSignFlag();
44*76af099aSliuyi  	property<CRKBoot, bool, READ_ONLY> SignFlag;
45*76af099aSliuyi 	UINT GetVersion();
46*76af099aSliuyi  	property<CRKBoot, UINT, READ_ONLY> Version;
47*76af099aSliuyi 	UINT GetMergeVersion();
48*76af099aSliuyi  	property<CRKBoot, UINT, READ_ONLY> MergeVersion;
49*76af099aSliuyi 	STRUCT_RKTIME GetReleaseTime();
50*76af099aSliuyi  	property<CRKBoot, STRUCT_RKTIME, READ_ONLY> ReleaseTime;
51*76af099aSliuyi 	ENUM_RKDEVICE_TYPE GetSupportDevice();
52*76af099aSliuyi  	property<CRKBoot, ENUM_RKDEVICE_TYPE, READ_ONLY> SupportDevice;
53*76af099aSliuyi 	unsigned char GetEntry471Count();
54*76af099aSliuyi  	property<CRKBoot, unsigned char, READ_ONLY> Entry471Count;
55*76af099aSliuyi 	unsigned char GetEntry472Count();
56*76af099aSliuyi  	property<CRKBoot, unsigned char, READ_ONLY> Entry472Count;
57*76af099aSliuyi 	unsigned char GetEntryLoaderCount();
58*76af099aSliuyi  	property<CRKBoot, unsigned char, READ_ONLY> EntryLoaderCount;
59*76af099aSliuyi 	bool CrcCheck();
60*76af099aSliuyi 	bool SaveEntryFile(ENUM_RKBOOTENTRY type, UCHAR ucIndex, string fileName);
61*76af099aSliuyi 	bool GetEntryProperty(ENUM_RKBOOTENTRY type, UCHAR ucIndex, DWORD &dwSize, DWORD &dwDelay, char *pName = NULL);
62*76af099aSliuyi 	char GetIndexByName(ENUM_RKBOOTENTRY type, char *pName);
63*76af099aSliuyi 	bool GetEntryData(ENUM_RKBOOTENTRY type, UCHAR ucIndex, PBYTE lpData);
64*76af099aSliuyi 	CRKBoot(PBYTE lpBootData, DWORD dwBootSize, bool &bCheck);
65*76af099aSliuyi 	~CRKBoot();
66*76af099aSliuyi protected:
67*76af099aSliuyi private:
68*76af099aSliuyi 	bool m_bRc4Disable;
69*76af099aSliuyi 	bool m_bSignFlag;
70*76af099aSliuyi 	DWORD m_version;
71*76af099aSliuyi 	DWORD m_mergeVersion;
72*76af099aSliuyi 	STRUCT_RKTIME m_releaseTime;
73*76af099aSliuyi 	ENUM_RKDEVICE_TYPE m_supportDevice;
74*76af099aSliuyi 	DWORD m_471Offset;
75*76af099aSliuyi 	UCHAR m_471Size;
76*76af099aSliuyi 	UCHAR m_471Count;
77*76af099aSliuyi 	DWORD m_472Offset;
78*76af099aSliuyi 	UCHAR m_472Size;
79*76af099aSliuyi 	UCHAR m_472Count;
80*76af099aSliuyi 	DWORD m_loaderOffset;
81*76af099aSliuyi 	UCHAR m_loaderSize;
82*76af099aSliuyi 	UCHAR m_loaderCount;
83*76af099aSliuyi 	BYTE  m_crc[4];
84*76af099aSliuyi 	PBYTE m_BootData;
85*76af099aSliuyi 	DWORD m_BootSize;
86*76af099aSliuyi 	USHORT m_BootHeadSize;
87*76af099aSliuyi 	void WCHAR_To_wchar(WCHAR *src, wchar_t *dst, int len);
88*76af099aSliuyi 	void WCHAR_To_char(WCHAR *src, char *dst, int len);
89*76af099aSliuyi };
90*76af099aSliuyi 
91*76af099aSliuyi #endif