///////////////////////////////////////////////////////////////////////////////////////////
//
//                             Test NXT File I/O Functions
//
// Tests the capability to access the NXT file system fro RobotC.
//
// The NXT has a file system capable of storing up to 64 files in it's flash memory. The
// files are preserved across power off periods on the NXT.
//
// Filenames are limited to 15 characters on the NXT. There is a 3 character file extension.
///////////////////////////////////////////////////////////////////////////////////////////

#pragma platform(NXT)     // This program only works on NXT -- generate error for other platforms

const string sFileName = "testFile.dat";

TFileIOResult nIoResult;
TFileHandle hFileHandle;
long  nParmToWriteLong 	= 12345678;
int nFileSize 					= 35;
float nParmToWriteFloat = (float) 12.34;
int   nParmToWrite 			= 1234;
int   nParmToWriteByte 	= 12;


{
	short nParmToReadWord = 0;
	long  nParmToReadLong = 0;
	int   nParmToReadByte = 0;
	float fParmToReadFloat = 0;

	CloseAllHandles(nIoResult);
	wait1Msec(500);
	PlaySoundFile("Woops.rso");
	wait1Msec(11);
	PlaySoundFile("Woops.rso");


	//
	// Deletes an existing file
	//
	Delete(sFileName, nIoResult);
	hFileHandle = 0;
  OpenWrite(  hFileHandle, nIoResult, sFileName, nFileSize);
  WriteByte(  hFileHandle, nIoResult, nParmToWriteByte);
  WriteShort( hFileHandle, nIoResult, nParmToWrite);
  WriteLong(  hFileHandle, nIoResult, nParmToWrite);
  WriteLong(  hFileHandle, nIoResult, nParmToWriteLong);
  WriteFloat( hFileHandle, nIoResult, nParmToWrite);
  WriteFloat( hFileHandle, nIoResult, nParmToWriteFloat);
  WriteString(hFileHandle, nIoResult, "String Constant");
  Close(hFileHandle, nIoResult);

	Delete("testFile2.dat", nIoResult);
  Rename("testFile2.dat", nIoResult, sFileName);

  OpenRead(hFileHandle, nIoResult, "testFile2.dat", nFileSize);
  ReadByte(hFileHandle, nIoResult,  nParmToReadByte);
  ReadShort(hFileHandle, nIoResult, nParmToReadWord);
  ReadLong(hFileHandle, nIoResult,  nParmToReadLong);
  ReadLong(hFileHandle, nIoResult,  nParmToReadLong);
  ReadFloat(hFileHandle, nIoResult, fParmToReadFloat);
  ReadFloat(hFileHandle, nIoResult, fParmToReadFloat);
  Close(hFileHandle, nIoResult);
  while (bSoundActive)
  {
 	}
  return;
}