/****************************************************************************/
/* Copyright 2010 MBARI.                                                    */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
#include "analog.h"
#include "p24Fxxxx.h"

#include "serial.h"
#include "stdio.h"
#include "sys_defs.h"
#include "errors.h"
#include "spi_io.h"
#include "stdlib.h"

static char msg_buff[64]; // 

#define ADC_LSB 0.000038147

double anaConvSample(int chan, unsigned int sample, int type)
{
 	double value;	
	float convfact[8] = {0};
	

	switch (type) 
	{
		case 0: // 16-bit word
		{
			convfact[0] = 1;
			convfact[1] = 1;
			convfact[2] = 1;
			convfact[3] = 1;
			convfact[4] = 1;
			convfact[5] = 1;
			convfact[6] = 1;
			convfact[7] = 1;
			break;
		}
		case 1: // Raw voltage measured by ADC
		{
			convfact[0] = ADC_LSB;
			convfact[1] = ADC_LSB;
			convfact[2] = ADC_LSB;
			convfact[3] = ADC_LSB;
			convfact[4] = ADC_LSB;
			convfact[5] = ADC_LSB;
			convfact[6] = ADC_LSB;
			convfact[7] = ADC_LSB;
			
			break;
		}
		case 2: // Converted to real world value
		{
			convfact[0] = ADC_LSB * 2.5;    // change typed in constants to an array...
			convfact[1] = ADC_LSB * 11.963;
			convfact[2] = ADC_LSB * 5;
			convfact[3] = ADC_LSB * 1.649;
			convfact[4] = ADC_LSB * 3.75;
			convfact[5] = ADC_LSB * 2.465;
			convfact[6] = ADC_LSB * 1;
			convfact[7] = ADC_LSB * 5.994;
			break;
		}
		default: return -1;
	}
	

	switch (chan)
	{
		case 0:
		{
			value = convfact[chan] * sample;
			break;
		}
		case 1:
		{
			value = convfact[chan] * sample;
			break;
		}
		case 2:
		{
			value = convfact[chan] * sample;
			break;
		}
		case 3:
		{
			value = convfact[chan] * sample;
			break;
		}
		case 4:
		{
			value = convfact[chan] * sample;
			break;
		}
		case 5:
		{
			value = convfact[chan] * sample;
			break;
		}
		case 6:
		{
			value = convfact[chan] * sample;
			break;
		}
		case 7:
		{
			value = convfact[chan] * sample;
			break;
		}
		default: return -1;
	}

	return value;
}





