#pragma once

#include "GobiApiService.h"

class CFuncList;

class CGobiApiPds : public CGobiApiService
{
public:
	CGobiApiPds(HMODULE hQCDll);
	~CGobiApiPds(void);

	BOOL GetAvailFuncList(CFuncList* pFuncList);
	UINT ExecuteFunctions(CFuncList* pFuncList, UINT &nTotalExec);

protected:
	static const TableFuncEntry m_TableFunc[];

	static BOOL FuncGetPDSState(CParamList* pParams = NULL);
	static BOOL FuncSetPDSState(CParamList* pParams = NULL);
	static BOOL FuncStartPDSTrackingSession(CParamList* pParams = NULL);
	static BOOL FuncStopPDSTrackingSession(CParamList* pParams = NULL);
	static BOOL FuncPDSInjectTimeReference(CParamList* pParams = NULL);
	static BOOL FuncGetPDSDefaults(CParamList* pParams = NULL);
	static BOOL FuncSetPDSDefaults(CParamList* pParams = NULL);
	static BOOL FuncGetXTRAAutomaticDownload(CParamList* pParams = NULL);
	static BOOL FuncSetXTRAAutomaticDownload(CParamList* pParams = NULL);
	static BOOL FuncGetXTRANetwork(CParamList* pParams = NULL);
	static BOOL FuncSetXTRANetwork(CParamList* pParams = NULL);
	static BOOL FuncGetXTRAValidity(CParamList* pParams = NULL);
	static BOOL FuncForceXTRADownload(CParamList* pParams = NULL);
	static BOOL FuncGetAGPSConfig(CParamList* pParams = NULL);
	static BOOL FuncSetAGPSConfig(CParamList* pParams = NULL);
	static BOOL FuncGetServiceAutomaticTracking(CParamList* pParams = NULL);
	static BOOL FuncSetServiceAutomaticTracking(CParamList* pParams = NULL);
	static BOOL FuncGetPortAutomaticTracking(CParamList* pParams = NULL);
	static BOOL FuncSetPortAutomaticTracking(CParamList* pParams = NULL);
	static BOOL FuncResetPDSData(CParamList* pParams = NULL);
	static BOOL FuncGetXTRADataState(CParamList* pParams = NULL);
	static BOOL FuncSetXTRADataState(CParamList* pParams = NULL);
	static BOOL FuncGetXTRATimeState(CParamList* pParams = NULL);
	static BOOL FuncSetXTRATimeState(CParamList* pParams = NULL);
	static BOOL FuncGetWiFiState(CParamList* pParams = NULL);
	static BOOL FuncSetWiFiState(CParamList* pParams = NULL);
	static BOOL FuncSetNMEACallback(CParamList* pParams = NULL);
	static BOOL FuncSetNMEAPlusCallback(CParamList* pParams = NULL);
	static BOOL FuncSetPDSStateCallback(CParamList* pParams = NULL);
	static BOOL FuncLTEGetAGPSConfig(CParamList* pParams = NULL);
	static BOOL FuncLTESetAGPSConfig(CParamList* pParams = NULL);
    static BOOL FuncGetAGPSProtocol(CParamList* pParams = NULL);
    static BOOL FuncSetAGPSProtocol(CParamList* pParams = NULL);

	static CParamList m_sSetPostionMothodState;
	static CParamList m_sSetPDSState;
	static CParamList m_sPDSInjectTimeReference;
	static CParamList m_sSetPDSDefaults;
	static CParamList m_sSetXTRAAutomaticDownload;
	static CParamList m_sSetXTRANetwork;
	static CParamList m_sSetAGPSConfig;
	static CParamList m_sSetServiceAutomaticTracking;
	static CParamList m_sSetPortAutomaticTracking;
	static CParamList m_sResetPDSData;
	static CParamList m_sSetNMEACallback;
	static CParamList m_sSetNMEAPlusCallback;
	static CParamList m_sSetPDSStateCallback;
	static CParamList m_sLTEGetAGPSConfig;
	static CParamList m_sLTESetAGPSConfig;
    static CParamList m_sAGPSProtocol;
};
