/*	Copyright Š2006. The Regents of the University of California (Regents). All Rights Reserved. Permission to use, copy, 
*	modify, and distribute this software and its documentation for educational, research, and not-for-profit purposes, 
*	without fee and without a signed licensing agreement, is hereby granted, provided that the above copyright notice, 
*	this paragraph and the following two paragraphs appear in all copies, modifications, and distributions. 
*	Contact The Office of Technology Licensing, UC Berkeley, 2150 Shattuck Avenue, Suite 510, Berkeley, CA 94720-1620, 
*	(510) 643-7201, for commercial licensing opportunities. Created by Evan Sperber, Bustamante Group, 
*	University of California, Berkeley. IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, 
*	INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, 
*	EVEN IF REGENTS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*	REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 
*	AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED 
*	"AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
*/

#include <stdio.h>
#include <ltdata.h>
#include <ltcontrol.h>

#include <Carbon/Carbon.h>

//============================Function Prototypes:
int openDataFile( void* dataRef );////////////////
int writeDataFile( void* dataRef );///////////////
int closeDataFile( void* dataRef );///////////////
void writeHeader( void* dataRef );///////////////
int writePrefFile( void* dataRef );///////////////
int readPrefFile( void* dataRef );////////////////
int writeCommentsFile( void* dataRef );///////////
int readCalibFile( void* dataRef );///////////////
int readDataLine( void* dataRef );////////////////
int readCalibLine( void* dataRef );///////////////
int setWriteSpeedSlow( void* dataRef );///////////
int setWriteSpeedFast( void* dataRef );///////////
int cycleFileStream( void* dataRef );/////////////
void initCommentsFile( void* dataRef );///////////
//=============================Function Prototypes

FILE *fpd;	//Pointer to data file stream
FILE *fpp;	//Pointer to pref file stream
FILE *fpc;	//Pointer to comments file stream
FILE *fpa;	//Pointer to calibration file stream

char localBuffer[1000000];
char tempBuffer[1028];

static int localRecentIndex;

enum{ kMaxCycleCount = 65535 };	//for calculating cycle count rollovers

int bytesWritten;
int currrentLocInFileCycle;
static int skipLine;	//flag ON to skip a line after reducing time resolution to prevent apparent time regression in
					//data file.
//enum {kMaxBytesPerFile = 1000000 };