--- a/telephonyserverplugins/simtsy/src/CSimNtRas.cpp Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/simtsy/src/CSimNtRas.cpp Thu May 06 15:10:38 2010 +0100
@@ -1,228 +1,228 @@
-// Copyright (c) 1997-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 contains the implementation of the CSimNtRas class.
-//
-//
-
-/**
- @file
-*/
-
-#include "CSimNtras.h"
-#include "Simlog.h"
-
-_LIT8(KNtRasWriteText,"CLIENT"); // < Solicitation text, send to start the NTRas server
-_LIT8(KNtRasReceiveText,"SERVER"); // < NTRas server response, indicating the PPP session can commence.
-const TInt KNtRasServerResponseTimeout=5; // < Connection attempt time out value in seconds.
-
-const TDataBits KDefaultDataBits=EData8; // < Default configuration is 8N1
-const TParity KDefaultParity=EParityNone; // < Default configuration is 8N1
-const TStopBits KDefaultStopBits=EStop1; // < Default configuration is 8N1
-const TText8 KDefaultXon=17; // < Default XON character is <ctrl>Q
-const TText8 KDefaultXoff=19; // < Default XOFF character is <ctrl>S
-const TInt KTxMaxRetries=3; // < Maximum number of transmit retries before giving up
-
-CSimNtRas* CSimNtRas::NewL(CSimPhone* aPhone)
-/**
- * Standard two phase constructor.
- */
- {
- CSimNtRas* self=new(ELeave) CSimNtRas(aPhone);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop();
- return self;
- }
-
-CSimNtRas::CSimNtRas(CSimPhone* aPhone)
- : iPhone(aPhone), iPortOpen(EFalse)
-/**
- * Trivial first phase constructor.
- */
- {
- }
-
-void CSimNtRas::ConstructL()
-/**
- * Second phase constructor. Create heap-based objects, in this instance the timer
- * and the Comm Port classes.
- */
- {
- iTimer=CSimTimer::NewL(iPhone);
- CommConstructL(CActive::EPriorityStandard,CActive::EPriorityStandard);
- }
-
-CSimNtRas::~CSimNtRas()
-/**
- * Standard destructor. Close Comm Port and destroy heap-based objects.
- */
- {
- if(iPortOpen)
- {
- CommCancel();
- CommClose();
- }
- delete iTimer;
- }
-
-TInt CSimNtRas::Connect(const TDesC& aCsyName, const TDesC& aPort,
- const TCommConfigV01& aConfig, MNTRasCallBack* aCallback)
-/**
- * Attempt to connect to an NT Ras "Cable Connection" service.
- * @param aCsyName The CSY to be used for the connection.
- * @param aPort The Port to be used for the connection.
- * @param aConfig The port configuration to be used for the connection.
- * @param aCallback The callback class that must be signalled when the connection completes.
- * @return TInt Standard error value.
- */
- {
- LOGDATA1("Starting to attempt a NT RAS Connection");
- iReadBuf.Zero();
- iInputBuf.Zero();
-
-// Open and configuration the port
- TInt ret=CommOpen(aCsyName,aPort,ECommShared);
- if(ret!=KErrNone)
- return ret;
- iPortOpen=ETrue;
-
- TCommConfig configPckg;
- TCommConfigV01& config=configPckg();
- iCommPort.Config(configPckg);
-
- config.iDataBits=KDefaultDataBits;
- config.iParity=KDefaultParity;
- config.iStopBits=KDefaultStopBits;
- config.iXonChar=KDefaultXon;
- config.iXoffChar=KDefaultXoff;
- config.iTerminatorCount=0;
- config.iSpecialRate=0;
-
- config.iRate=aConfig.iRate;
- config.iHandshake=aConfig.iHandshake;
- ret=iCommPort.SetConfig(configPckg);
- if(ret!=KErrNone)
- return ret;
-
-// Power up the port ready for receives and transmits
- CommReadReady();
- CommWriteReady();
-
- iAttemptCnt=0;
- iCallback=aCallback;
- CommReadOneOrMore(iReadBuf);
- AttemptConnect();
- return KErrNone;
- }
-
-void CSimNtRas::AttemptConnect()
-/**
- * Transmit "CLIENT" and attempt a connection
- */
- {
- LOGDATA1("NTRAS Writing CLIENT...");
- iAttemptCnt++;
- // Send the soliciting message, and await the NT Ras server's response.
- CommWrite(KNtRasWriteText);
- iTimer->Start(KNtRasServerResponseTimeout,this);
- }
-
-void CSimNtRas::Cancel()
-/**
- * Cancel any outstanding comm port reads, writes or timer requests.
- */
- {
- iTimer->Cancel();
- CommCancel();
- }
-
-void CSimNtRas::Terminate()
-/**
- * Terminate the NTRas connection. If opened, cancel any outstanding requests and close
- * the port. Also, cancel any outstanding timer request.
- */
- {
- if(iPortOpen)
- {
- CommCancel();
- CommClose();
- }
- iTimer->Cancel();
- }
-
-void CSimNtRas::CommReadComplete(TInt aStatus)
-/**
- * Serial port read completion callback. If there's no read error, append the read
- * data to the input buffer and scan for the server's response.
- * If no match is found, re-post the read.
- * @param aStatus Standard error value, indicating the result of the read request.
- */
- {
- LOGDATA2("NTRAS Rx Completion: %S",&iInputBuf);
- if(aStatus!=KErrNone)
- {
- iTimer->Cancel();
- iCallback->NTRasCallBack(aStatus);
- return;
- }
-
- if((iInputBuf.Length()+iReadBuf.Length())>KInputBufferSize)
- {
- iTimer->Cancel();
- iCallback->NTRasCallBack(KErrNotFound);
- return;
- }
-
- iInputBuf.Append(iReadBuf);
- TInt pos=iInputBuf.FindF(KNtRasReceiveText);
- if(pos>=0)
- {
- iTimer->Cancel();
- iCallback->NTRasCallBack(KErrNone);
- LOGDATA1("NTRAS Received SERVER!");
- return;
- }
-
- CommReadOneOrMore(iReadBuf);
- }
-
-void CSimNtRas::CommWriteComplete(TInt aStatus)
-/**
- * Serial port write completion callback. Terminate the connection attempt if an error
- * has occurred.
- */
- {
- LOGDATA1("NTRAS Write Completion");
- if(aStatus!=KErrNone)
- {
- iTimer->Cancel();
- iCallback->NTRasCallBack(aStatus);
- }
- }
-
-void CSimNtRas::TimerCallBack(TInt /*aId*/)
-/**
- * Timer expired callback. Give up the attempted connection with a time-out error.
- */
- {
- LOGDATA1("NTRAS Timeout Occurred");
- CommWriteCancel();
- if(iAttemptCnt<KTxMaxRetries)
- AttemptConnect();
- else
- {
- CommReadCancel();
- iCallback->NTRasCallBack(KErrTimedOut);
- }
- }
+// Copyright (c) 1997-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 contains the implementation of the CSimNtRas class.
+//
+//
+
+/**
+ @file
+*/
+
+#include "CSimNtras.h"
+#include "Simlog.h"
+
+_LIT8(KNtRasWriteText,"CLIENT"); // < Solicitation text, send to start the NTRas server
+_LIT8(KNtRasReceiveText,"SERVER"); // < NTRas server response, indicating the PPP session can commence.
+const TInt KNtRasServerResponseTimeout=5; // < Connection attempt time out value in seconds.
+
+const TDataBits KDefaultDataBits=EData8; // < Default configuration is 8N1
+const TParity KDefaultParity=EParityNone; // < Default configuration is 8N1
+const TStopBits KDefaultStopBits=EStop1; // < Default configuration is 8N1
+const TText8 KDefaultXon=17; // < Default XON character is <ctrl>Q
+const TText8 KDefaultXoff=19; // < Default XOFF character is <ctrl>S
+const TInt KTxMaxRetries=3; // < Maximum number of transmit retries before giving up
+
+CSimNtRas* CSimNtRas::NewL(CSimPhone* aPhone)
+/**
+ * Standard two phase constructor.
+ */
+ {
+ CSimNtRas* self=new(ELeave) CSimNtRas(aPhone);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop();
+ return self;
+ }
+
+CSimNtRas::CSimNtRas(CSimPhone* aPhone)
+ : iPhone(aPhone), iPortOpen(EFalse)
+/**
+ * Trivial first phase constructor.
+ */
+ {
+ }
+
+void CSimNtRas::ConstructL()
+/**
+ * Second phase constructor. Create heap-based objects, in this instance the timer
+ * and the Comm Port classes.
+ */
+ {
+ iTimer=CSimTimer::NewL(iPhone);
+ CommConstructL(CActive::EPriorityStandard,CActive::EPriorityStandard);
+ }
+
+CSimNtRas::~CSimNtRas()
+/**
+ * Standard destructor. Close Comm Port and destroy heap-based objects.
+ */
+ {
+ if(iPortOpen)
+ {
+ CommCancel();
+ CommClose();
+ }
+ delete iTimer;
+ }
+
+TInt CSimNtRas::Connect(const TDesC& aCsyName, const TDesC& aPort,
+ const TCommConfigV01& aConfig, MNTRasCallBack* aCallback)
+/**
+ * Attempt to connect to an NT Ras "Cable Connection" service.
+ * @param aCsyName The CSY to be used for the connection.
+ * @param aPort The Port to be used for the connection.
+ * @param aConfig The port configuration to be used for the connection.
+ * @param aCallback The callback class that must be signalled when the connection completes.
+ * @return TInt Standard error value.
+ */
+ {
+ LOGDATA1("Starting to attempt a NT RAS Connection");
+ iReadBuf.Zero();
+ iInputBuf.Zero();
+
+// Open and configuration the port
+ TInt ret=CommOpen(aCsyName,aPort,ECommShared);
+ if(ret!=KErrNone)
+ return ret;
+ iPortOpen=ETrue;
+
+ TCommConfig configPckg;
+ TCommConfigV01& config=configPckg();
+ iCommPort.Config(configPckg);
+
+ config.iDataBits=KDefaultDataBits;
+ config.iParity=KDefaultParity;
+ config.iStopBits=KDefaultStopBits;
+ config.iXonChar=KDefaultXon;
+ config.iXoffChar=KDefaultXoff;
+ config.iTerminatorCount=0;
+ config.iSpecialRate=0;
+
+ config.iRate=aConfig.iRate;
+ config.iHandshake=aConfig.iHandshake;
+ ret=iCommPort.SetConfig(configPckg);
+ if(ret!=KErrNone)
+ return ret;
+
+// Power up the port ready for receives and transmits
+ CommReadReady();
+ CommWriteReady();
+
+ iAttemptCnt=0;
+ iCallback=aCallback;
+ CommReadOneOrMore(iReadBuf);
+ AttemptConnect();
+ return KErrNone;
+ }
+
+void CSimNtRas::AttemptConnect()
+/**
+ * Transmit "CLIENT" and attempt a connection
+ */
+ {
+ LOGDATA1("NTRAS Writing CLIENT...");
+ iAttemptCnt++;
+ // Send the soliciting message, and await the NT Ras server's response.
+ CommWrite(KNtRasWriteText);
+ iTimer->Start(KNtRasServerResponseTimeout,this);
+ }
+
+void CSimNtRas::Cancel()
+/**
+ * Cancel any outstanding comm port reads, writes or timer requests.
+ */
+ {
+ iTimer->Cancel();
+ CommCancel();
+ }
+
+void CSimNtRas::Terminate()
+/**
+ * Terminate the NTRas connection. If opened, cancel any outstanding requests and close
+ * the port. Also, cancel any outstanding timer request.
+ */
+ {
+ if(iPortOpen)
+ {
+ CommCancel();
+ CommClose();
+ }
+ iTimer->Cancel();
+ }
+
+void CSimNtRas::CommReadComplete(TInt aStatus)
+/**
+ * Serial port read completion callback. If there's no read error, append the read
+ * data to the input buffer and scan for the server's response.
+ * If no match is found, re-post the read.
+ * @param aStatus Standard error value, indicating the result of the read request.
+ */
+ {
+ LOGDATA2("NTRAS Rx Completion: %S",&iInputBuf);
+ if(aStatus!=KErrNone)
+ {
+ iTimer->Cancel();
+ iCallback->NTRasCallBack(aStatus);
+ return;
+ }
+
+ if((iInputBuf.Length()+iReadBuf.Length())>KInputBufferSize)
+ {
+ iTimer->Cancel();
+ iCallback->NTRasCallBack(KErrNotFound);
+ return;
+ }
+
+ iInputBuf.Append(iReadBuf);
+ TInt pos=iInputBuf.FindF(KNtRasReceiveText);
+ if(pos>=0)
+ {
+ iTimer->Cancel();
+ iCallback->NTRasCallBack(KErrNone);
+ LOGDATA1("NTRAS Received SERVER!");
+ return;
+ }
+
+ CommReadOneOrMore(iReadBuf);
+ }
+
+void CSimNtRas::CommWriteComplete(TInt aStatus)
+/**
+ * Serial port write completion callback. Terminate the connection attempt if an error
+ * has occurred.
+ */
+ {
+ LOGDATA1("NTRAS Write Completion");
+ if(aStatus!=KErrNone)
+ {
+ iTimer->Cancel();
+ iCallback->NTRasCallBack(aStatus);
+ }
+ }
+
+void CSimNtRas::TimerCallBack(TInt /*aId*/)
+/**
+ * Timer expired callback. Give up the attempted connection with a time-out error.
+ */
+ {
+ LOGDATA1("NTRAS Timeout Occurred");
+ CommWriteCancel();
+ if(iAttemptCnt<KTxMaxRetries)
+ AttemptConnect();
+ else
+ {
+ CommReadCancel();
+ iCallback->NTRasCallBack(KErrTimedOut);
+ }
+ }