#ifndef CONEREADER_H
#define CONEREADER_H

//#include "ONEReader.h"
#include "CGOReader.h"

class CONEReader : public CCGOReader
{
public:
	CONEReader(CReader *Owner, CBaseCommunication *Communicator);
	virtual ~CONEReader(void);

	virtual CJ_RESULT BuildReaderInfo();
protected:
	virtual void SetHWString(char *String);
	virtual void GetProductString(uint8_t *Product);
	virtual void CompressModifyStructure(CCID_Message& Message);
#ifdef WITH_SECODER_INFO_OVERRIDE
	virtual CJ_RESULT KTLightCall(uint8_t *sad, uint8_t *dad, uint8_t *cmd, uint16_t lenc, int32_t Lc, uint8_t *data_ptr, int32_t Le, uint8_t *response, uint16_t *lenr);
#endif
	virtual uint32_t GetReadersInputBufferSize();

	virtual CJ_RESULT CtSetMFT(const uint8_t *const pData, uint32_t DataLen, uint32_t* Result);
	virtual CJ_RESULT CtGetMFT(cj_MFT_Info* const pData, uint32_t* const pNumElemnts);
};


class CCYOReader: public  CONEReader 
{
public:
	CCYOReader(CReader* Owner, CBaseCommunication* Communicator);
	virtual ~CCYOReader(void);

	virtual CJ_RESULT BuildReaderInfo();
protected:
	virtual void SetHWString(char* String);
	virtual void GetProductString(uint8_t* Product);
	virtual void CompressModifyStructure(CCID_Message& Message);
#ifdef WITH_SECODER_INFO_OVERRIDE
	virtual CJ_RESULT KTLightCall(uint8_t* sad, uint8_t* dad, uint8_t* cmd, uint16_t lenc, int32_t Lc, uint8_t* data_ptr, int32_t Le, uint8_t* response, uint16_t* lenr);
#endif
	virtual uint32_t GetReadersInputBufferSize();

	virtual CJ_RESULT CtSetMFT(const uint8_t* const pData, uint32_t DataLen, uint32_t* Result);
	virtual CJ_RESULT CtGetMFT(cj_MFT_Info* const pData, uint32_t* const pNumElemnts);
};



#endif
