#pragma once

#include "GobiApiService.h"

class CFuncList;

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

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

protected:
	static const TableFuncEntry m_TableFunc[];

	static BOOL FuncGetIPAddress(CParamList* pParams = NULL);
    static BOOL FuncGetIPAddressLTE(CParamList* pParams = NULL);
	static BOOL FuncGetIPConfiguration(CParamList* pParams = NULL);
	static BOOL FuncGetPacketStatus(CParamList* pParams = NULL);
	static BOOL FuncGetByteTotals(CParamList* pParams = NULL);
	static BOOL FuncGetDataBearerTechnology(CParamList* pParams = NULL);
	static BOOL FuncSwiGetCurrentDataBearerTechnology(CParamList* pParams = NULL);
	static BOOL FuncGetDormancyState(CParamList* pParams = NULL);
	static BOOL FuncGetConnectionRate(CParamList* pParams = NULL);
	static BOOL FuncGetDefaultProfile(CParamList* pParams = NULL);
    static BOOL FuncGetDefaultProfileLTE(CParamList* pParams = NULL);
	static BOOL FuncSetDefaultProfile(CParamList* pParams = NULL);
	static BOOL FuncGetAutoconnect(CParamList* pParams = NULL);
	static BOOL FuncSetAutoconnect(CParamList* pParams = NULL);
	static BOOL FuncSetMobileIp(CParamList* pParams = NULL);
	static BOOL FuncGetMobileIp(CParamList* pParams = NULL);
	static BOOL FuncSetActiveMobileIpProfile(CParamList* pParams = NULL);
	static BOOL FuncGetActiveMobileIpProfile(CParamList* pParams = NULL);
	static BOOL FuncSetMobileIpProfile(CParamList* pParams = NULL);
	static BOOL FuncGetMobileIpProfile(CParamList* pParams = NULL);
	static BOOL FuncGetMobileIpProfile2(CParamList* pParams = NULL);
	static BOOL FuncSetMobileIpParameters(CParamList* pParams = NULL);
	static BOOL FuncGetMobileIpParameters(CParamList* pParams = NULL);
	static BOOL FuncGetLastMobileIpError(CParamList* pParams = NULL);
	static BOOL FuncSetDataBearerCallback(CParamList* pParams = NULL);
	static BOOL FuncSwiSetCurrentDataBearerCallback(CParamList* pParams = NULL);
	static BOOL FuncSetDormancyStatusCallback(CParamList* pParams = NULL);
	static BOOL FuncSetByteTotalsCallback(CParamList* pParams = NULL);
	static BOOL FuncSetMobileIPStatusCallback(CParamList* pParams = NULL);
	static BOOL FuncStartDataSession2(CParamList* pParams = NULL);	
    static BOOL FuncStartDataSessionLTE(CParamList* pParams = NULL);
	static BOOL FuncStopDataSession(CParamList* pParams = NULL);
	static BOOL FuncGetSessionState(CParamList* pParams = NULL);
	static BOOL FuncGetSessionDuration(CParamList* pParams = NULL);
	static BOOL FuncSetSessionStateCallback(CParamList* pParams = NULL);
	static BOOL FuncSwiGoDormant(CParamList* pParams = NULL);
	static BOOL FuncGetEnhancedAutoconnect(CParamList* pParams = NULL);
	static BOOL FuncSetEnhancedAutoconnect(CParamList* pParams = NULL);
	static BOOL FuncGetDNSSettings(CParamList* pParams = NULL);
	static BOOL FuncSetDNSSettings(CParamList* pParams = NULL);
    static BOOL FuncGetDNSIPv6Settings(CParamList* pParams = NULL);
    static BOOL FuncSetDNSIPv6Settings(CParamList* pParams = NULL);
    static BOOL FuncSetDefaultIPv6Profile(CParamList* pParams = NULL);
    static BOOL FuncGetDefaultIPv6Profile(CParamList* pParams = NULL);
	static BOOL FuncSwiGetApn(CParamList* pParams = NULL);

	static CParamList m_sStartDataSession;
	static CParamList m_sEnableAutoconnect;
	static CParamList m_sGetDefaultProfile;
	static CParamList m_sStopDataSession;
	static CParamList m_sSetDefaultProfile;
	static CParamList m_sSetMobileIp;
	static CParamList m_sSetActiveMobileIpProfile;
	static CParamList m_sSetMobileIpProfile;
	static CParamList m_sGetMobileIpProfile;
	static CParamList m_sGetMobileIpProfile2;
	static CParamList m_sSetMobileIpParameters;
	static CParamList m_sSetByteTotalCallback;
	static CParamList m_sSetMobileIpStatusCallback;
	static CParamList m_sSetSessionStateCallback;
	static CParamList m_sSetDormacyStatusCallback;
	static CParamList m_sSetDataBearerCallback;
	static CParamList m_sSwiSetCurrentDataBearerCallback;
	static CParamList m_sSetEnhancedAutoconnect;
	static CParamList m_sSetDNSSettings;
    static CParamList m_sSetDNSIPv6Settings;
    static CParamList m_sSetDefaultIPv6Profile;
	static CParamList m_sSwiGetApn;
};
