linklayercontrol/networkinterfacemgr/netcfgext/src/rconfigdaemon.cpp
changeset 0 af10295192d8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/linklayercontrol/networkinterfacemgr/netcfgext/src/rconfigdaemon.cpp	Tue Jan 26 15:23:49 2010 +0200
@@ -0,0 +1,157 @@
+// Copyright (c) 2003-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:
+// CS_Daemon.CPP
+// 
+//
+
+#include "rconfigdaemon.h"
+#include "rconfigdaemonmess.h"
+
+const TInt KConfigDaemonMajorVersionNumber = 2;
+const TInt KConfigDaemonMinorVersionNumber = 0;
+const TInt KConfigDaemonBuildVersionNumber = 0;
+
+ 	
+TVersion RConfigDaemon::Version() const
+/**
+ * The RConfigDaemon::Version method
+ *
+ * Extract the version of the API
+ *
+ * @internalTechnology
+ *
+ * @return	Version of the API
+ */
+	{
+	return TVersion(KConfigDaemonMajorVersionNumber,KConfigDaemonMinorVersionNumber,KConfigDaemonBuildVersionNumber);
+	}
+
+void RConfigDaemon::Configure(const TDes8& aInfo, TRequestStatus& aStatus )
+/**
+ * The RConfigDaemon::Connect method
+ *
+ * Connect the Handle to the Server
+ * Must be called before all other methods except Version()
+ *
+ * @internalTechnology
+ *
+ * @param aInfo The startup info for the connection
+ * @param aStatus The request status of the active object to be completed
+ *
+ * @return	KErrNone if successful, otherwise the error that occurred
+ */
+	{
+   	SendReceive(EConfigDaemonConfigure,TIpcArgs(&aInfo), aStatus);
+	}
+
+void RConfigDaemon::LinkLayerDown()
+/**
+ * Informs the daemon of the start of link layer renegotiation. 
+ *
+ * @internalTechnology
+ *
+ * @param aStatus Active object iStatus to complete
+ */
+	{
+   	Send(EConfigDaemonLinkLayerDown);		
+	}	
+
+void RConfigDaemon::LinkLayerUp()
+/**
+ * Informs the daemon of the completion of link layer renegotiation. 
+ *
+ * @internalTechnology
+ *
+ * @param aStatus Active object iStatus to complete
+ */
+	{
+   	Send(EConfigDaemonLinkLayerUp);		
+	}	
+
+void RConfigDaemon::Deregister(TInt aCause, TDes8* aActionStatus, TRequestStatus& aStatus)
+/**
+ * Issues a deregistration request. 
+ *
+ * @internalTechnology
+ * @param aCause Specifies what caused the deregister call (idle timer or Stop call)	
+ * @param aActionStatus	Returns the action to be executed by Nifman 
+ *						(shut down the NIF and the agent or keep them up)
+ * @param aStatus Active object iStatus to complete
+ */
+	{
+   	SendReceive(EConfigDaemonDeregister, TIpcArgs(aCause, aActionStatus), aStatus);		
+	}	
+
+void RConfigDaemon::ProgressNotification(TDaemonProgressBuf& aProgressBuf, TRequestStatus& aStatus)
+/**
+ * Issues a progress notification request. This request will be completed when the daemon has 
+ * something to report.
+ *
+ * @internalTechnology
+ * @param aProgressBuf Returns the progress information
+ * @param aStatus Active object iStatus to complete
+ */
+	{
+	SendReceive(EConfigDaemonProgress, TIpcArgs(&aProgressBuf), aStatus);	
+	}	
+
+void RConfigDaemon::Ioctl(TUint aOptionLevel, TUint aOptionName, TRequestStatus& aStatus, TDes8* aDes)
+/**
+  * Issues an asynchronous command. Various option's levels & names could be supported
+  * by the loaded daemon
+  *
+  * @internalTechnology
+  * @return TInt An error code
+  * @param aOptionLevel - Control level
+  * @param aOptionName - Name of control request
+  * @param aStatus - active object iStatus to complete
+  * @param aOption - Buffer for data to be retrieved
+  */
+	{
+  	SendReceive(EConfigDaemonIoctl, TIpcArgs(aOptionLevel, aOptionName, aDes, aDes ? aDes->MaxLength() : 0), aStatus);
+	}
+
+void RConfigDaemon::Cancel(TRequestStatus& aStatus)
+/**
+  * Cancels current request asynchronously => 
+  * just one request at the time could be issued see
+  * CNifConfigurationControl::StoreClientStatus functinon in NIFConfigurationControl.cpp
+  *
+  * @internalTechnology
+  * @param aStatus - active object iStatus to complete
+  * @return TInt An error code
+  */
+	{
+   //!!This async call assumes there will be always place in the daemon queue to send the 
+   //cancel message. The msg queue is 10 requests long, each daemon processes one request at the
+   //time => dangerous situation occures when there'r running more than 3 different links, each
+   //configured by daemon, each having outstanding request 
+   //and we cancel all of them at the same time. Very, very unlikely situation.
+   	SendReceive(EConfigDaemonCancel, TIpcArgs(), aStatus);
+	}
+
+void RConfigDaemon::Cancel(TUint aOpMask, TRequestStatus& aStatus)
+/**
+ * Cancels an asynchronous operation. The operation to be canceled is specified 
+ * in the mask.
+ *
+ * @internalTechnology
+ * @param aOpMask Specifies the operation to be canceled
+ * @param aStatus active object iStatus to complete
+ */
+	{
+   	SendReceive(EConfigDaemonCancelMask, TIpcArgs(aOpMask), aStatus);	
+	}
+
+