/*******************************************************************************
 *	HexFile.h	Hex File Access
 *			T.Barnaby,	Beam Ltd,	2008-02-29
 *******************************************************************************
 *
 * Version:	1.0.0
 */
#ifndef _HexFile_h
#define _HexFile_h

#include <stdint.h>
#include <BFile.h>

typedef unsigned char	uchar;

class HexFile {
public:
			HexFile();
	
	void		setAddressRange(uint32_t startAddress, uint32_t endAddress);
	BError		read(BString filename);
	uint32_t	programLowAddress();
	uint32_t	programSize();
	BError		readProgramData(uint32_t address, void* data, uint32_t len);
	BError		writeProgramData(uint32_t address, void* data, uint32_t len);

	void		printInfo();
private:
	uint8_t		hexChar(BString s, int offset);
	BFile		ofile;
	uint32_t	ocpuStartAddress;
	uint32_t	ocpuEndAddress;
	uint8_t		oprogram[64 * 1024];
	uint8_t		odata[64 * 1024];
	uint8_t		oconfig[64];
	uint16_t	oprogramLowAddress;
	uint16_t	oprogramHighAddress;
};

#endif
