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