#ifndef _DRVEEP_H
#define _DRVEEP_H

/****************************************************************************
 *
 * Projekt			:	Glacier Batterieboxdeckel Prüfgerät
 * Dateiname		:	drvEep.h
 * Autor			:	orginal MHoffmann, abgeändert für dieses Projekt Irene Saxer
 * Erstellungsdatum	:	17.04.2019
 * Beschreibung		:	"Treiber fuer Zugriffe auf das externe EEprom"
 *
 *
 * Versionsgeschichte
 * 	Revision 1.0	17.04.2019 SAI erste Version
 *
 ****************************************************************************/

/****************************************************************************/
/* COMPILER Direktiven */

/****************************************************************************/
/* INCLUDE Dateien */
#include "Common.h"
#include "DrvRtc.h"

/****************************************************************************/
/* KONSTANTEN */
#define EE_CMD_READ		0x03	//daten lesen
#define EE_CMD_WRITE	0x02	//daten schreiben
#define EE_CMD_WREN		0x06	//schreiboperationen einmalig erlauben
#define EE_CMD_WRDI		0x04	//schreiboperationen verbieten
#define EE_CMD_RDSR 	0x05	//status lesen
#define EE_CMD_WRSR 	0x01	//status schreiben
#define EE_CMD_PE		0x42	//page erase
#define EE_CMD_SE		0xd7	//sector erase
#define EE_CMD_CE		0xc7	//chip erase
#define EE_CMD_RDID		0xab	//aus deep-power-down aufwachen und signatur lesen
#define EE_CMD_DPD		0xb9	//deep-power-down modus aktivieren

#define EE_PAGE_SIZE    256		//Byte
#define EE_DATA_SIZE    131072	//Byte

/****************************************************************************/
/* Globale Variablen */
typedef struct
{
	uint8_t		u8_Cmd;		//Kommandobyte
	uint32_t	u32_Addr;	//Eepromadresse (17 Bit)
	uint8_t    *pu8_Data;	//Zeiger auf Daten
	uint16_t	u16_Len;	//Datenlaenge (max 256)
}TEeXfer;
/****************************************************************************/
/* Funktionen */
void DrvEep_Init(void);
uint8_t DrvEep_GetStatus(void);
void DrvEep_WrEn(void);
void DrvEep_CE(void);
void DrvEep_Read(uint32_t u32_Addr, uint8_t* pu8_Data, uint16_t u16_Len);
void DrvEep_Write(uint32_t u32_Addr, uint8_t* pu8_Data, uint16_t u16_Len);
uint64_t DrvEep_ToSec(tDateTime DT);

#endif	// #define _DRVEEP_H
