#include <cstdio>
#include "pressure_sensor.h"

const char* 	GetCurrent		= "$1RD\r";
const double 	Gain			=  0.9375;
const double	Offset			= -3.75;

PressureSensor::PressureSensor(void) : _aUart(*new USART_3)
{
	_aUart.Open(38400);
}

void PressureSensor::Enable(void)
{
}

void PressureSensor::Disable(void)
{
}

double PressureSensor::Pressure(char* buffer)
{
	double currentInMilliamps;
	double pressureInPSI;
	char *ptr = buffer;
	_aUart.Put(GetCurrent);
	for (;;) {
		*ptr = _aUart.Get();
		if (*ptr == 0x0)
			continue;
		else if (*ptr == '\r')
			break;
		else
			ptr++;
	}
	*ptr = 0;
	if (*buffer == '*') {
		sscanf(&buffer[1], "%lf", &currentInMilliamps);
		pressureInPSI = currentInMilliamps * Gain + Offset;
	} else {
		pressureInPSI = 0.0;
	}
	return pressureInPSI;
}


