/*
CLASS
AvTrakIF

DESCRIPTION
AvTrak instrument interface. This interface is a merger of the AcousticModemIF
and the UsblIF, which in principal are the two independent devices that will be
replaced by this device.

AUTHOR
Martin

 */

#include "InstrumentIF.idl"
#include "TimeIF.idl"

interface AvTrakIF {

	typedef sequence<char, 256> AvTrakString;

	struct SCL_SAN_RECORD {
		// Data from WinFrog
		float wfTime;    // Timestamp
		float wfLat;     // Latitude
		float wfLong;    // Longitude
		float wfSlant;   // Slant range
	};

	enum SCL_CMD_TYPE {
		REQ_STAT,
		REQ_SAN_ON,
		REQ_SAN_OFF,
		ABORT_MISSION,
		START_SURVEY,
		INVALID_CMD
	};

	typedef sequence<char, 32> String32;

	/////////////////////////////////////////////////////////
	// Return true if device is ready to go, otherwise false
	boolean ready();

	DeviceIF::Status set_time(in AvTrakString str, in TimeIF::TimeSpec time );



	DeviceIF::Status sendStatus(in short address);
	DeviceIF::Status getSANFix(out SCL_SAN_RECORD sanFix, out boolean newData);
	DeviceIF::Status getSCLCmd(out SCL_CMD_TYPE cmd, out boolean newCmd);
	DeviceIF::Status sendSMS(in short address, in AvTrakString msg, in short nbytes);
	DeviceIF::Status sendSCLCmd(in short address, in SCL_CMD_TYPE cmd);
	DeviceIF::Status measureRange(in short address );
	DeviceIF::Status requestStatus(in short address);
	DeviceIF::Status requestLocalStatus();




};
