import java.util.*;

class WrenDAQRecord {
	public String serialNumber;
	public int elapsed_time_ms;
	public int pulse_ms[];
	public int pulse_count[];
	public int adc[];
	public double adcVoltage[];
	public int thermocouple_temperature_C;
	public String wrenDAQrecord;
	public boolean isValid;
	public Date rxDate;

	public String toString() {
		return "Received at: " + rxDate + ", " + elapsed_time_ms + " milliseconds since last record\n";
	}

	public boolean isValid() {
		return isValid;
	}


	public String sqlValues() {
/*
		NumberFormat format = new DecimalFormat("0.0");
		StringBuffer s=new StringBuffer();
		
		for ( int i=0 ; i<3 ; i++ ) {
			s.append(format.format(windSpeed[i]) + ",");
			s.append(format.format(windGust[i]) + ",");
			s.append(windCount[i] + ",");
		}
		
		s.append(windDirection + "," + temperature + ",");
		
		for ( int i=0 ; i<8 ; i++ ) {
			s.append(adc[i] + ",");
		}

		s.append(format.format(batteryVoltage));

//		System.out.println("StringBuffer=" + s);

		return s.toString();
*/
		return "no sql here";
	}
	
	/** Convert a 10 bit ADC value to a 0-5 voltage 
	 *
	 * @param adc 10 bit ADC value
	 * @return voltage
	 */
	protected double adcToVoltage(int adc) {
		return (5.0 / 1023.0) * (double) adc;
	}

	protected int getOnboardTemperatureC() {
		return (int) (100.0*adcVoltage[9]-273.15);
	}

	public WrenDAQRecord(String line) {
		pulse_ms=new int[2];
		pulse_count=new int[2];
		adc=new int[10];
		adcVoltage=new double[10];
		isValid=true;
		rxDate=new Date();

		/* complete record */
		wrenDAQrecord=line;

		try {
			/* tokenize at commas */
			String rec[]=line.split(",");

			if ( 17 != rec.length ) {
				System.err.println("WrenDAQ record contains " + rec.length + " elements, which is not 17 elements!");
				isValid=false;
				return;
			}


			for ( int i=0 ; i<rec.length ; i++ ) {
				rec[i]=rec[i].trim();
//				System.out.println("[" + i + "] " + rec[i] );
			}

			serialNumber=rec[0];
			elapsed_time_ms=Integer.parseInt(rec[1]);

			/* frequency inputs */
			pulse_ms[0]=   Integer.parseInt(rec[2]);
			pulse_count[0]=Integer.parseInt(rec[3]);
			pulse_ms[1]=   Integer.parseInt(rec[4]);
			pulse_count[1]=Integer.parseInt(rec[5]);

			/* analog inputs */
			for ( int i=0 ; i<10 ; i++ ) {
				adc[i]=Integer.parseInt(rec[6+i]);
				adcVoltage[i]=adcToVoltage(adc[i]);
			}

			thermocouple_temperature_C=Integer.parseInt(rec[16]);

		} catch ( Exception e ) {
			System.err.println("Error parsing line: " + line );
			System.err.println("Exception: " + e);
			isValid=false;
		}


	}
}
