/*
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:   
* This file was autogenerated by rpcgen, but should be modified by the developer.
* Make sure you don't use the -component_mod flag in future or this file will be overwritten.
* Wed Oct 01 09:46:52 2003
*
*/




#ifndef __CSMNCONTROLLER_H__
#define __CSMNCONTROLLER_H__


/****************************************************************************************
 * 
 * Local Includes
 * 
 ***************************************************************************************/
#include "mncontroller.h"
#include "../DynamicsConfigurationLibrary/CDynamicsConfigFile.h"
#include "../ProcessLibrary/proclib.h"
#include "../DynamicsCommandWrapper/CDynamicsCommand.h"


/****************************************************************************************
 * 
 * Definition: CSMncontroller
 * 
 ***************************************************************************************/
class CSMncontroller
{
public:
	// Standard Methods
	CSMncontroller();
	~CSMncontroller();
	int GetKey();
	void SetKey( int aKey );

	// RPC Service Methods
	TResult cstr_createagent( void );
	int dstr_removeagent( int aArgs, int *aDeleteInstance );
	TResult startmobileagent( int aArgs );
	TResult stopmobileagent( int aArgs );
	TResult getmobileagentstatus( int aArgs );
	TResult setsingleoption( TOptionDesc aArgs );
	TResult removesingleoption( TOptionDesc aArgs );
	TResult addlistoption( TOptionDesc aArgs );
	TResult removelistoption( TOptionDesc aArgs );
	TResult sethomeaddress( THomeAddressDesc aArgs );
	TResult getcareofaddress( int aArgs );
	TMobileNodeStatus getstatus( int aArgs );
	TResult connect( TTunnelingModeDesc aArgs );
	TResult disconnect( int aArgs );
	TResult confirm( int aArgs );
	TResult rescaninterfaces( int aArgs );
	TResult setfapolicy( TPolicyRequest aArgs );
	TResult getfapolicy( int aArgs );
	TForeignAgentList listforeignagents( int aArgs );
	TForeignAgentInfo getforeignagentinfo( TForeignAgentInfoRequest aArgs );
	void settimeout( TTimeoutRequest aArgs );

private:
	TResult SetInterfaceAddress( char *aInterfaceName, int aAddress );
	struct in_addr GetNetworkAddressFromHostAddress( int aAddress, int aNetmask );

	int iKey;
	int iDynamicsCallTimeout;
	CDynamicsConfigFile iDynamicsConfigFile;
	CAProcess *iAgentProcess;
	CDynamicsCommand iDynamicsCommand;
};

#endif
