64 lines
1.4 KiB
C++
64 lines
1.4 KiB
C++
#pragma once
|
|
|
|
#include "HexRecord.h"
|
|
#include <QString>
|
|
#include <QList>
|
|
#include <QFile>
|
|
|
|
#define HEX_FILE_HEADER_CODE (int)0xBAADBEEF
|
|
|
|
|
|
|
|
class CHexFile
|
|
{
|
|
|
|
enum eHexFileStatus
|
|
{
|
|
STATUS_OK,
|
|
STATUS_OK_LAST_INDEX,
|
|
ERR_INDEX_OUT_OF_BOUND
|
|
};
|
|
|
|
public:
|
|
CHexFile(void);
|
|
~CHexFile(void);
|
|
|
|
int OpenDataFile(QString FilePath, bool CloseIfAlreadyParsed = true);
|
|
int CloseDataFile();
|
|
int CloseOpenedHexFile();
|
|
int ParseData(void);
|
|
unsigned int GetNBRecords(void);
|
|
unsigned long GetFileSize(void);
|
|
unsigned int GetFirmwareSize(void){return mFirmwareDataSize;}
|
|
unsigned int GetDataCRC32(void);
|
|
bool HexFileLoaded(void){return mFileOpened;}
|
|
bool HexDataValid(void){return mFileParsed;}
|
|
unsigned long GetTotalParsedRecords(void){return mTotalParsedRecords;}
|
|
QByteArray GetRawData(bool IncludeHeader = true);
|
|
int FilterRecords(unsigned int StartAddress, unsigned int EndAddress);
|
|
|
|
|
|
|
|
CHexRecord * GetRecord(int RecordIndex, int &Status);
|
|
unsigned long mDiscardedRecords;
|
|
unsigned long mTotalParsedRecords;
|
|
|
|
QString GetHexFileInfoString();
|
|
|
|
private:
|
|
QFile *mHexfileHandle;
|
|
bool mFileOpened;
|
|
bool mFileParsed;
|
|
bool mRecordsListValid;
|
|
//CArray<CHexRecord*,CHexRecord*> mRecordsList;
|
|
QList<CHexRecord*> mRecordsList;
|
|
// CHexRecord* mRecordsTable[0x3000];
|
|
unsigned int mRecordsTableSize;
|
|
unsigned int mHighAddress;
|
|
unsigned long mHexFileSize;
|
|
unsigned int mFirmwareDataSize;
|
|
unsigned int mFirmwareCRC;
|
|
|
|
|
|
};
|