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