// diskTest.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "diskTest.h"
#include <stdio.h>
#include <Windows.h>

void CreateFilename( char fileName[80], BOOL Flash, int fileNum );
int WriteToFlash(unsigned int* data, int numValues, int fileNum);
int WriteToUSBDisk(unsigned int* data, int numValues, int fileNum);

int WINAPI WinMain(	HINSTANCE hInstance,
					HINSTANCE hPrevInstance,
					LPTSTR    lpCmdLine,
					int       nCmdShow)
{
	int				i, j,
					numValues;
	unsigned int*	pData = 0;
	DWORD			time1, time2, dwTemp;

	printf("Disk function test program\n");
	printf("Built %s %s\n\n",__DATE__,__TIME__); 

	numValues = 5000000;
	pData = new unsigned int[numValues];
	for(i=0; i<10; i++)
	{
		for(j=0; j<numValues; j++)
			*(pData + i) = j * (i + 1);

		time1 = GetTickCount();
		WriteToFlash(pData, numValues, i);
		time2 = GetTickCount();
		dwTemp = time2 - time1;
		DEBUGMSG(1, (TEXT("Write to flash time  = %d mSec\n"), dwTemp));	

		time1 = GetTickCount();
		WriteToUSBDisk(pData, numValues, i);
		time2 = GetTickCount();
		dwTemp = time2 - time1;
		DEBUGMSG(1, (TEXT("Write to USB Disk time  = %d mSec\n"), dwTemp));	

		DEBUGMSG(1, (_T("Wrote file number %d\n"), i));
	}
	
	return 0;
}

void CreateFilename( char fileName[80], BOOL Flash, int fileNum )
{
	// routine to create a file name

	char	cTemp[10];

	__time64_t t64Time;
    
	struct tm timeNow;
    
	_time64( &t64Time );
	if( (_localtime64_s(&timeNow, &t64Time)) !=0)
	{
		// process error
	}
	
	if(Flash == TRUE)
		strcpy(fileName, "\\Storage Card\\McStar\\Data\\file");
	else
		strcpy(fileName, "\\Hard Disk\\McStar\\Data\\file");

	strcat(fileName, _itoa(fileNum, cTemp, 10));

/*	_itoa(timeNow.tm_year, cTemp, 10);
	strcat(cTemp, "-");
	strcat(fileName, cTemp);
	_itoa(timeNow.tm_yday, cTemp, 10);
	strcat(cTemp, "-");
	strcat(fileName, cTemp);
	_itoa(timeNow.tm_hour, cTemp, 10);
	strcat(cTemp, "-");
	strcat(fileName, cTemp);
	_itoa(timeNow.tm_min, cTemp, 10);
	strcat(cTemp, "-");
	strcat(fileName, cTemp);
	_itoa(timeNow.tm_sec, cTemp, 10);
	strcat(fileName, cTemp);
	strcat(fileName, ".");
	_itoa(fileNum, cTemp, 20);
	strcat(fileName, cTemp);
*/
	return;
}

int WriteToFlash(unsigned int* data, int numValues, int fileNum)
{
	char	fileName[80];
	int		numWritten;
	FILE	*outFile;

	CreateFilename( fileName, TRUE, fileNum );
	outFile = fopen( fileName, "ab" );

	numWritten = fwrite(data, sizeof(int), numValues, outFile);
//	DEBUGMSG(1, (_T("Wrote %d samples to flash \n"), numWritten));

	fclose(outFile);

	return numWritten;
}

int WriteToUSBDisk(unsigned int* data, int numValues, int fileNum)
{
	char	fileName[80];
	int		numWritten;
	FILE	*outFile;

	CreateFilename( fileName, FALSE, fileNum );
	outFile = fopen( fileName, "ab");

	numWritten = fwrite(data, sizeof(int), numValues, outFile);
	fclose(outFile);

	return numWritten;
}

