xref: /rkdeveloptool/RKImage.h (revision 76af099afcbcafd97801028de2ba3421d3c12865)
1*76af099aSliuyi #ifndef RKIMAGE_HEADER
2*76af099aSliuyi #define RKIMAGE_HEADER
3*76af099aSliuyi #include "DefineHeader.h"
4*76af099aSliuyi #include "RKBoot.h"
5*76af099aSliuyi #define  IMAGE_RESERVED_SIZE 61
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 	DWORD  dwBootOffset;
15*76af099aSliuyi 	DWORD  dwBootSize;
16*76af099aSliuyi 	DWORD  dwFWOffset;
17*76af099aSliuyi 	DWORD  dwFWSize;
18*76af099aSliuyi 	BYTE   reserved[IMAGE_RESERVED_SIZE];
19*76af099aSliuyi } STRUCT_RKIMAGE_HEAD, *PSTRUCT_RKIMAGE_HEAD;
20*76af099aSliuyi #pragma pack()
21*76af099aSliuyi class CRKImage
22*76af099aSliuyi {
23*76af099aSliuyi public:
24*76af099aSliuyi 	UINT GetVersion();
25*76af099aSliuyi  	property<CRKImage, UINT, READ_ONLY> Version;
26*76af099aSliuyi 	UINT GetMergeVersion();
27*76af099aSliuyi  	property<CRKImage, UINT, READ_ONLY> MergeVersion;
28*76af099aSliuyi 	STRUCT_RKTIME GetReleaseTime();
29*76af099aSliuyi  	property<CRKImage, STRUCT_RKTIME, READ_ONLY> ReleaseTime;
30*76af099aSliuyi 	ENUM_RKDEVICE_TYPE GetSupportDevice();
31*76af099aSliuyi  	property<CRKImage, ENUM_RKDEVICE_TYPE, READ_ONLY> SupportDevice;
32*76af099aSliuyi 	ENUM_OS_TYPE GetOsType();
33*76af099aSliuyi  	property<CRKImage, ENUM_OS_TYPE, READ_ONLY> OsType;
34*76af099aSliuyi 
35*76af099aSliuyi 	unsigned short GetBackupSize();
36*76af099aSliuyi  	property<CRKImage, unsigned short, READ_ONLY> BackupSize;
37*76af099aSliuyi 	UINT GetBootOffset();
38*76af099aSliuyi  	property<CRKImage, UINT, READ_ONLY> BootOffset;
39*76af099aSliuyi 	UINT GetBootSize();
40*76af099aSliuyi  	property<CRKImage, UINT, READ_ONLY> BootSize;
41*76af099aSliuyi 	UINT GetFWOffset();
42*76af099aSliuyi  	property<CRKImage, UINT, READ_ONLY> FWOffset;
43*76af099aSliuyi 	long long GetFWSize();
44*76af099aSliuyi  	property<CRKImage, long long, READ_ONLY> FWSize;
45*76af099aSliuyi 	bool GetSignFlag();
46*76af099aSliuyi 	property<CRKImage, bool, READ_ONLY> SignFlag;
47*76af099aSliuyi 
48*76af099aSliuyi 	CRKBoot *m_bootObject;
49*76af099aSliuyi 	bool SaveBootFile(string filename);
50*76af099aSliuyi 	bool SaveFWFile(string filename);
51*76af099aSliuyi 	bool GetData(long long dwOffset, DWORD dwSize, PBYTE lpBuffer);
52*76af099aSliuyi 	void GetReservedData(PBYTE &lpData, USHORT &usSize);
53*76af099aSliuyi 	int GetMd5Data(PBYTE &lpMd5, PBYTE &lpSignMd5);
54*76af099aSliuyi 	long long GetImageSize();
55*76af099aSliuyi 	CRKImage(string filename, bool &bCheck);
56*76af099aSliuyi 	~CRKImage();
57*76af099aSliuyi protected:
58*76af099aSliuyi 
59*76af099aSliuyi private:
60*76af099aSliuyi 	DWORD m_version;
61*76af099aSliuyi 	DWORD m_mergeVersion;
62*76af099aSliuyi 	STRUCT_RKTIME m_releaseTime;
63*76af099aSliuyi 	ENUM_RKDEVICE_TYPE m_supportDevice;
64*76af099aSliuyi 	DWORD m_bootOffset;
65*76af099aSliuyi 	DWORD m_bootSize;
66*76af099aSliuyi 	DWORD m_fwOffset;
67*76af099aSliuyi 	long long m_fwSize;
68*76af099aSliuyi 
69*76af099aSliuyi 	BYTE  m_md5[32];
70*76af099aSliuyi 	BYTE  m_signMd5[256];
71*76af099aSliuyi 	BYTE  m_reserved[IMAGE_RESERVED_SIZE];
72*76af099aSliuyi 	bool  m_bSignFlag;
73*76af099aSliuyi 	int   m_signMd5Size;
74*76af099aSliuyi 	FILE *m_pFile;
75*76af099aSliuyi 	long long m_fileSize;
76*76af099aSliuyi };
77*76af099aSliuyi #endif