// 7kXMLParsor.h: interface for the C7kXMLParsor class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_7KXMLPARSOR_H__98CC1B85_C4D4_4FA5_9B82_EFC02877E58A__INCLUDED_)
#define AFX_7KXMLPARSOR_H__98CC1B85_C4D4_4FA5_9B82_EFC02877E58A__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class C7kXMLParsor  
{
public:
	DWORD GetRxStabilizationTypes(DWORD *pTypes);
	DWORD GetTxStabilizationTypes(DWORD * pTypes);
	DWORD GetTxBeamSteeringParams(DWORD * pSteerable, double * pMaxX, double * pMinX, double * pMaxZ, double * pMinZ);
	DWORD GetPingRate(double * pMinPingRate, double * pMaxPingRate);
	DWORD GetRange(float * pMinRange, float * pMaxRange);
	DWORD GetPulseLength(float * pMinPulseLength, float * pMaxPulseLength);
	DWORD GetGain(float * pMinGain, float * pMaxGain);
	DWORD GetPower(float * pMinPower, float * pMaxPower);
	DWORD GetSampleRate(float * pSampleRate);
	DWORD GetFrequency(double * pMinFrequency, double * pMaxFrequency, BOOL * pChirp);
	DWORD GetTxBeamSpacing(float * pBeamSpacing, BOOL * pUniform);
	DWORD GetTxBeamWidth(double * pMaxx, double * pMinx, double * pMaxz, double * pMinz, BOOL * pVariable);
	DWORD GetTxBeams(DWORD * pTxBeams);
	DWORD GetRxBeamPositions(double * pFirstBeam, double * pLastBeam);
	DWORD GetRxBeamWidth(float * pAcross, BOOL * pUniformAcross, float * pAlong, BOOL * pUniformAlong);
	DWORD GetRxBeamSpacing(float * pBeamSpacing, BOOL * pUniform);
	DWORD GetRxBeams(DWORD * pRxBeams);
	DWORD GetRxElements(DWORD * pRxElements);
	DWORD GetArrayType(DWORD * pArrayType);
	DWORD GetSonarType(DWORD * pSonarType);
	DWORD GetRxLastBeamPos(double * pLast);
	DWORD GetRxFirstBeamPos(double * pFirst);
	DWORD GetSystemText(char * pText, DWORD dwTextLength);
	DWORD GetText(char * pTagName, char * pText, DWORD dwValueLength);
	DWORD GetAttributeValue(char *pTagName, char *pAttribute, char *pValue, DWORD dwValueLength);
	DWORD GetDeviceID(DWORD * pDeviceID);
	DWORD GetEnumerator(WORD *pEnumerator);
	DWORD GetMinRange(double * pMinRange);
	DWORD GetMaxRange(double *pMaxRange);
	DWORD GetMinGain(double * pMinGain);
	DWORD GetMaxGain(double *pMaxGain);
	DWORD GetMinPower(double * pMinPower);
	DWORD GetMaxPower(double *pMaxPower);
	DWORD GetMinPulseLength(double * pMinPulseLength);
	DWORD GetMaxPulseLength(double *pMaxPulseLength);
	DWORD Set7001Info(char * pInfo);
	C7kXMLParsor();
	virtual ~C7kXMLParsor();

protected:
  DWORD FindAttribute(char * pAttribute);
  DWORD FindTag(char * pName);
  DWORD GetAttributeData(char * pValue, DWORD dwValueLength);
  
  char * m_pXML;
  DWORD m_dwSystems;

private:
  DWORD m_dwRecIdx;
  DWORD m_dwLength;
};

#endif // !defined(AFX_7KXMLPARSOR_H__98CC1B85_C4D4_4FA5_9B82_EFC02877E58A__INCLUDED_)
