#pragma once

#include "GobiApiService.h"

class CFuncList;

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

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

protected:

	static const TableFuncEntry m_TableFunc[];

	static BOOL FuncGetServingNetwork(CParamList* pParams = NULL);
	static BOOL FuncSwiGetServingNetwork(CParamList* pParams = NULL);
	static BOOL FuncGetServingNetworkCapabilities(CParamList* pParams = NULL);
	static BOOL FuncGetSignalStrengths(CParamList* pParams = NULL);
	static BOOL FuncPerformNetworkScan(CParamList* pParams = NULL);
	static BOOL FuncPerformNetworkRATScan(CParamList* pParams = NULL);
	static BOOL FuncInitiateNetworkRegistration(CParamList* pParams = NULL);
	static BOOL FuncInitiateDomainAttach(CParamList* pParams = NULL);
	static BOOL FuncGetHomeNetwork(CParamList* pParams = NULL);
	static BOOL FuncGetNetworkPreference(CParamList* pParams = NULL);
	static BOOL FuncSetNetworkPreference(CParamList* pParams = NULL);
	static BOOL FuncSetCDMANetworkParameters(CParamList* pParams = NULL);
	static BOOL FuncGetCDMANetworkParameters(CParamList* pParams = NULL);
	static BOOL FuncSetACCOLC(CParamList* pParams = NULL);
	static BOOL FuncGetACCOLC(CParamList* pParams = NULL);
	static BOOL FuncGetANAAAAuthenticationStatus(CParamList* pParams = NULL);
	static BOOL FuncGetRFInfo(CParamList* pParams = NULL);
	static BOOL FuncGetPLMNMode(CParamList* pParams = NULL);
	static BOOL FuncGetPLMNName(CParamList* pParams = NULL);
	static BOOL FuncSwiGetSignalStrengthInfo(CParamList* pParams = NULL);
	static BOOL FuncSetPLMNModeCallback(CParamList* pParams = NULL);
	static BOOL FuncSetSignalStrengthCallback(CParamList* pParams = NULL);
	static BOOL FuncSetRoamingIndicatorCallback(CParamList* pParams = NULL);
	static BOOL FuncSetDataCapabilitiesCallback(CParamList* pParams = NULL);
	static BOOL FuncSetRFInfoCallback(CParamList* pParams = NULL);
	static BOOL FuncSetLURejectCallback(CParamList* pParams = NULL);
	static BOOL FuncSwiSetEcioCallback(CParamList* pParams = NULL);
	static BOOL FuncSwiSetSnirCallback(CParamList* pParams = NULL);
	static BOOL FuncSwiSetErrorRateCallback(CParamList* pParams = NULL);
	static BOOL FuncSwiSetRsrqCallback(CParamList* pParams = NULL);
	static BOOL FuncSwiSetSignalStrengthInfoCallback(CParamList* pParams = NULL);

	static CParamList m_sSetNetworkPrefParams;
	static CParamList m_sSetCDMANetworkParameters;
	static CParamList m_sSetACCOLC;
	static CParamList m_sInitiateNetworkRegistration;
	static CParamList m_sInitiateDomainAttach;
	static CParamList m_sGetPLMNName;
	static CParamList m_sSetSignalStrengthCallback;
	static CParamList m_sSetRoamingIndicatorCallback;
	static CParamList m_sSetDataCapabilitiesCallback;
	static CParamList m_sSetRFInfoCallback;
	static CParamList m_sSetLURejectCallback;
	static CParamList m_sSetPLMNModeCallback;
	static CParamList m_sSwiSetEcioCallback;
	static CParamList m_sSwiSetSnirCallback;
	static CParamList m_sSwiSetErrorRateCallback;
	static CParamList m_sSwiSetRsrqCallback;
	static CParamList m_sSwiSetSignalStrengthInfoCallback;
};
