#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <errno.h>

#include "flash.h"
#define	TESTBLOCK 0x0E

uint	buff[256];

void main(void)
{
	int	fd = 0;
	int	uTemp = 0;

	fd = open("/dev/flash", O_RDWR);
	if (fd <0)
	{
		printf("Error %d opening /dev/flash\n",fd);
		return;
	}
	else
	{
		printf("Flash Open OK, rc = 0x%X.\n",fd);
	}

	uTemp = lseek(fd, TESTBLOCK*64*1024, 0);
	printf("Seek rc = 0x%X.\n",uTemp);
	
	uTemp = read(fd, buff, 256*4);
	printf("read rc = 0x%X.\n",uTemp);

	printf("First 12 DWORDs from the buff...\n");
	printf("%08X %08X %08X %08X\n",*buff,*(buff+1),*(buff+2),*(buff+3));
	printf("%08X %08X %08X %08X\n",*(buff+4),*(buff+5),*(buff+6),*(buff+7));
	printf("%08X %08X %08X %08X\n",*(buff+8),*(buff+9),*(buff+10),*(buff+11));

	ioctl(fd, CMD_WRITE_DISABLE);

	printf("Press ENTER to do erase/write of block 0x%02X...\n",TESTBLOCK);
	printf("If this flash block is in use, press Ctrl-C NOW!!!\n");
	getchar();

	for (uTemp=0;uTemp<256;uTemp++)
	    *(buff+uTemp) = 0x12345678;
	    
	uTemp = lseek(fd, TESTBLOCK*64*1024, 0);
	printf("Seek rc = 0x%X.\n",uTemp);
	
	ioctl(fd, CMD_WRITE_ENABLE);
	
	uTemp = write(fd,buff,256*4);
	printf("write rc = 0x%X.\n",uTemp);

	ioctl(fd, CMD_WRITE_DISABLE);
	
//	getchar();
	
	if (close(fd) != 0)
		printf("Error closing /dev/flash\n");
}


