/******************************************************************************************************
 * *********Basic Program for reading and writing to EEPROM*************************************
 */

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_gpio.h"
#include "inc/hw_ints.h"
#include "driverlib/gpio.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/eeprom.h"
#include "utils/uartstdio.h"

/**************************************************************************************
 *
 * Variables
 *
 * ************************************************************************************
 */

#define E2PROM_TEST_ADDRESS 0x0000

struct E2PROM
{
    uint8_t value1;
    uint8_t value2;
    uint16_t value3;
    uint8_t value4[12];
};


/*************************************************************************************************************
 * main.c
**************************************************************************************************/



int main(void) {
    uint32_t e2size,e2block;
    // 80 MHZ system clock
    SysCtlClockSet(SYSCTL_SYSDIV_2_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);

    /* EEPROM SETTINGS */
       SysCtlPeripheralEnable(SYSCTL_PERIPH_EEPROM0); // EEPROM activate
       EEPROMInit(); // EEPROM start

       /* UART SETTINGS */
           SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
           GPIOPinConfigure(GPIO_PA0_U0RX);
           GPIOPinConfigure(GPIO_PA1_U0TX);
           GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
           UARTStdioConfig(GPIO_PORTA_BASE,115200,SysCtlClockGet());

           /***************Main Action ****************/

               UARTprintf("EEPROM Test Program \r\n");


               e2size = EEPROMSizeGet(); // Get EEPROM Size
               UARTprintf("EEPROM Size %d bytes\n", e2size);

               e2block = EEPROMBlockCountGet(); // Get EEPROM Block Count
               UARTprintf("EEPROM Blok Count: %d\n", e2block);
	return 0;
}
