//=========================================================================
// Summary  :
// Filename : MMFluorometer.h
// Author   : nf
// Project  :
// Revision : 1
// Created  : 2001/06/12
// Modified : 2001/06/12
//=========================================================================
// Description :  Depth sensor message
//=========================================================================
#ifndef _MMFluorometer_H
#define _MMFluorometer_H

#include "ModemMessage.h"
#include "MMUtils.h"

#define FluorometerMessageTimeOut 30

//////////////////////////////////////////////
class MMFluorometer : public MMConvertible
{

public:
	MMFluorometer(const ModemMessage *pMM);
	MMFluorometer(float blueScatter, float redScatter, float fluorometry, float temperature);

	virtual const char* pcRead(const char* sourceBuffer);
	virtual char* pcWrite(char* destBuffer) const;
	virtual ModemMessage::Type tGetMessageType() const
		{ return ModemMessage::tMMFluorometer; };

	void setBlueScatter(float scatter)
		{ m_blueScatter = MMUtil::double2short(scatter,MIN_SCATTER,MAX_SCATTER); };
	void setRedScatter(float scatter)
		{ m_redScatter = MMUtil::double2short(scatter,MIN_SCATTER,MAX_SCATTER); };
	void setFluorometry(float flu)
		{ m_fluorometry = MMUtil::double2short(flu,MIN_FLUOROMETRY,MAX_FLUOROMETRY); };
	void setTemperature(float temperature)
		{ m_temperature = MMUtil::double2short(temperature,MIN_TEMP,MAX_TEMP); };

	float getBlueScatter()
		{ return MMUtil::short2double(m_blueScatter,MIN_SCATTER,MAX_SCATTER); };
	float getRedScatter()
		{ return MMUtil::short2double(m_blueScatter,MIN_SCATTER,MAX_SCATTER); };
	float getFluorometry()
		{ return MMUtil::short2double(m_fluorometry,MIN_FLUOROMETRY,MAX_FLUOROMETRY); };
	float getTemperature()
		{ return MMUtil::short2double(m_temperature,MIN_TEMP,MAX_TEMP); };
	
	void toString(char* str);
	virtual int iGetDefaultTimeout() const { return FluorometerMessageTimeOut; };
	static int size() { return 8; };

protected:
	//WARNING! resolution will be limited to
	// (MAX_SCATTER - MIN_SCATTER)/65535
	ushort m_blueScatter;
	ushort m_redScatter;
	//WARNING! resolution will be limited to
	// (MAX_FLUOROMETRY - MIN_FLUOROMETRY)/65535
	ushort m_fluorometry;
	//WARNING! m_temperature resolution will be limited to
	// (MAX_TEMP - MIN_TEMP)/65535 degrees
	ushort m_temperature;
};

#endif
