mtptransports/mtpptpiptransport/ptpipcontroller/inc/cptpipcontroller.h
changeset 0 d0791faffa3f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mtptransports/mtpptpiptransport/ptpipcontroller/inc/cptpipcontroller.h	Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,194 @@
+// Copyright (c) 2006-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 defines the API for cptpipcontroller.dll
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef __CPTPIPCONTROLLER_H__
+#define __CPTPIPCONTROLLER_H__
+
+#include <e32base.h>	
+
+#include <e32property.h>
+#include "centralrepository.h"
+#include "cptpipsockethandler.h"
+#include <mtp/cptpiphostfilterinterface.h>
+#include <mtp/rmtpclient.h>
+#include "mptpipcontroller.h"
+#include "cptpipinitcmdreq.h"
+#include "cptpipinitcmdack.h"
+#include "tptpipinitevtreq.h"
+#include "tptpipinitfailed.h"
+#include <mtp/cmtptypestring.h>
+#include "cptpiptimer.h"
+#include "mtpdebug.h"
+
+
+  enum TInitFailReason
+        {
+        /**
+        Responder impliments a device bonding mechanism and initiator requesting 
+        the connection is not one of the 'allowed' device. see annex 5.3 for more 
+        detail on bonding mechanism.
+        */
+        EInitFailRejected,        
+        /**
+         Responder has too many active connections. The Initiator  may try to 
+         establish a connection latter.
+        */
+        EInitFailBusy,
+        /**
+        Covers all other rejection cases.
+        */
+        EInitFailUnSpecified,
+
+ 		};
+ 		
+enum TParameter
+{
+	/*
+	This parameter defines the Device Friendly Name MTP device property 
+	value. It is implemented as a string and has a maximum length of 254 
+	characters. The parameter value specified in the initialisation file 
+	may be overwritten in the course of MTP operational processing, if an 
+	MTP SetDevicePropValue specifying the Device Friendly Name device 
+	property is received.
+	*/
+	EDeviceFriendlyName  = 0x00000000
+}; 		
+
+
+class CPTPIPController : public MPTPIPController,public CActive
+{
+public:	 
+	IMPORT_C static CPTPIPController* NewL();
+	IMPORT_C static CPTPIPController* NewLC();
+	IMPORT_C ~CPTPIPController();
+			
+	IMPORT_C void SocketAccepted(TRequestStatus& aStatus);		
+	IMPORT_C void StopTransport();						
+	IMPORT_C TInt SetDeviceGUID(TDesC8& aDeviceGUID);
+	IMPORT_C void SetDeviceFriendlyName(TDesC16* aDeviceFriendlyName);
+	IMPORT_C RSocket& NewSocketL();
+			
+	IMPORT_C void OnTimeOut();
+										
+private:
+	TBool CompareHost(RSocket& aSocket);				
+	TInt PublishSocketNamePair();		
+	void CheckAndHandleErrorL(TInt aError);
+	TInt EnableSocketTransfer();		
+	TBool Validate();
+	void Schedule();
+			
+	TInt ParseInitPacketL();
+	TInt ParseEvtPacket();
+			
+	void RunL();
+	void DoCancel();	    	    
+	TInt RunError(TInt aErr);
+			
+	void CheckInitFailL(TInt aError);	    
+	CPTPIPController();
+	void ConstructL();
+	void BuildInitAckL();
+	void BuildInitFailL(TInitFailReason aReason);
+	void StartTimer(TInt aSecond);
+	TInt CheckMTPConnection();
+	void Reset();
+			
+	 enum TPTPIPControllerStates
+		{
+		/*EIdle:The Controller just got constructed, and any time
+		Listener will notify about new socket. */ 
+		EIdle,
+		
+	  /*EInitCommandAwaited:When SocketHandler is waiting for 
+	   InitCommandRequest to be sent over Command socket
+	   No socket connection request is validated at this state*/
+		EInitCommandAwaited,
+	 
+	 /*EInitCommandRead:When the InitCommandRequest is successfully
+	  read from the socket
+	  */
+		EInitCommandRead,
+		
+		
+		/*EFilterConsentAwaited:Controller is waiting for approval from Filter*/
+		EFilterConsentAwaited,
+		
+		
+		/*EWaitForInitFail:Filter has rejected the Connection request.Init Nack
+		built,Wait for Init NAck to be written and failure to connect reported*/
+		EWaitForInitFail,
+		
+		/*EWaitForInitCommandAck:Filter has accepted the conenction request.InitAck
+		built,Wait for Init Ack to be written*/
+		EWaitForInitCommandAck,       		                            
+		
+	 
+	  /*EInitEvtAwaited:When Socket Handler is waiting for InitEventRequest
+	   * No socket connection request is validated at this state*/
+		EInitEvtAwaited,
+		
+	  
+	 /*EInitEventRead:InitEventRequest read
+	  *No socket connection request is validated at this state */           
+		EInitEventRead,       		       	       	 
+						
+						 
+	 /*EConnected:Socket connection requests are not to be validated in this 
+	  state and the message Device Busy to be sent*/
+		EPTPIPConnected           
+		};
+		   
+private:
+		
+	CPTPIPSocketHandler* iCmdHandler,*iEvtHandler;
+	CPTPIPHostFilterInterface* iFilter;
+	TPTPIPControllerStates iCtrlState;
+	RProperty iProperty,iConnectionState;		
+	RMTPClient iMTP;
+	TBool iIsConnectedToMTP;
+	TMTPTypeUint128 iHostGUID;	
+	TDesC* iHostFriendlyName;							
+	TRequestStatus* iCallerStatus;		
+	CPTPIPInitCmdRequest* iInitCmdReq;
+	TPTPIPInitEvtRequest iInitEvtReq;
+	TPTPIPInitFailed iInitFailed;
+	CPTPIPInitCmdAck* iInitCmdAck;	
+	CRepository* iRepository;							
+	TMTPTypeUint128 iDeviceGUID;
+	HBufC16* iDeviceFriendlyName;		
+	RSocket iDummySocket;
+	TInt iCounter;
+	CPTPIPTimer* iTimer;
+	TUid iTransportId;			
+			
+	/**
+	FLOGGER debug trace member variable.
+	*/
+	__FLOG_DECLARATION_MEMBER;    
+			
+};
+
+
+#endif  // __CPTPIPCONTROLLER_H__
+
+