telephonyserverplugins/multimodetsy/Multimode/Mimsi.cpp
branchopencode
changeset 24 6638e7f4bd8f
parent 0 3553901f7fa8
--- a/telephonyserverplugins/multimodetsy/Multimode/Mimsi.cpp	Mon May 03 13:37:20 2010 +0300
+++ b/telephonyserverplugins/multimodetsy/Multimode/Mimsi.cpp	Thu May 06 15:10:38 2010 +0100
@@ -1,206 +1,206 @@
-// Copyright (c) 2000-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:
-// Deal with Network & Operator information
-// 
-//
-
-#include <et_phone.h>
-#include "mimsi.h"
-#include "mSLOGGER.H"
-#include "ATIO.H"
-#include "Matstd.h"
-
-
-// Get the IMSI for from the phone
-// NB - not supported by all phones.
-
-_LIT8(KGetSubscriberIdCommand,"AT+CIMI");
-
-inline CATSubscriberId::CATSubscriberId(CATIO* aIo, CTelObject* aTelObject, CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
-	: CATCommands(aIo,aTelObject,aInit,aPhoneGlobals)
-	{}
-
-CATSubscriberId* CATSubscriberId::NewL(CATIO* aIo,CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
-	{
-	CATSubscriberId* netInfo = new(ELeave) CATSubscriberId(aIo, aTelObject, aInit, aPhoneGlobals);
-	CleanupStack::PushL(netInfo);
-	netInfo->ConstructL();
-	CleanupStack::Pop();
-	return netInfo;
-	}
-
-CATSubscriberId::~CATSubscriberId()
-	{
-	iIo->RemoveExpectStrings(this);
-	}
-
-void CATSubscriberId::Start(TTsyReqHandle aTsyReqHandle,TAny* aParam)
-	{
-	LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tStarting Subscriber Id"));
-	iReturnPtr=static_cast<RMobilePhone::TMobilePhoneSubscriberId*>(aParam);
-	iReqHandle = aTsyReqHandle;
-	WriteExpectingResults(KGetSubscriberIdCommand, 3);
-	__ASSERT_ALWAYS(iIo->AddExpectString(this,KNotifyMeIfErrorString), Panic(EGeneral));
-	iState=EATImsiWaitForWriteComplete;
-	}
-
-void CATSubscriberId::EventSignal(TEventSource aSource)
-	{
-	if (aSource==ETimeOutCompletion)
-		{
-		LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tTimeout Error during IMSI read"));
-		RemoveStdExpectStrings();
-		Complete(KErrTimedOut,aSource);
-		return;
-		}
-
-	switch(iState)
-		{
-		case EATImsiWaitForWriteComplete:
-		__ASSERT_ALWAYS(aSource==EWriteCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
-			{
-			iIo->WriteAndTimerCancel(this);
-			StandardWriteCompletionHandler(aSource, 5);
-			iState=EATImsiReadComplete;
-			}
-		break;
-
-		case EATImsiReadComplete:
-		__ASSERT_ALWAYS(aSource==EReadCompletion,Panic(EATCommand_IllegalCompletionReadExpected));
-			{
-			iIo->WriteAndTimerCancel(this);
-			TInt ret(ValidateExpectString());
-			RemoveStdExpectStrings();
-			if (ret==KErrNone)
-				TRAP(ret,ParseResponseL());
-			Complete(ret,aSource);
-			}
-			break;
-	
-		case EATWaitForStopState:
-			__ASSERT_ALWAYS(aSource==EReadCompletion, Panic(EATCommand_IllegalCompletionReadExpected));
-			{
-			iIo->WriteAndTimerCancel(this);
-			Complete(KErrCancel, aSource);
-			}
-			break;
-
-
-		default:
-			break;
-		}//switch
-	}//EventSignal
-
-void CATSubscriberId::Stop(TTsyReqHandle aTsyReqHandle)
-	{
-	__ASSERT_ALWAYS(aTsyReqHandle == iReqHandle, Panic(EIllegalTsyReqHandle));
-	LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tCancel called."));
-	switch(iState)
-		{
-		case EATNotInProgress:
-		case EATImsiWaitForWriteComplete:
-			{
-			LOGTEXT2(_L8("Current state TSY is cancelling from %d"), iState);
-			Complete(KErrCancel, EReadCompletion);
-			}
-			break;
-
-		default:
-			{
-			LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tStop, now waiting for expected modem response"));
-			AddStdExpectStrings();
-			iIo->SetTimeOut(this);
-			iState = EATWaitForStopState;
-			}
-			break;
-
-		}
-	}
-
-
-void CATSubscriberId::Complete(TInt aError,TEventSource aSource)
-	{
-	if (aError==KErrNone)
-		iState = EATCompleted;
-	else if (aError==KErrGeneral)
-		{	// +CIMI not supported by the phone, transmogrify into KErrNotSupported
-		iState = EATNotSupported;
-		aError = KErrNotSupported;
-		}
-	else
-		{
-// This flag is set in CATCommands::Complete now.
-//		iPhoneGlobals->iPhoneStatus.iInitStatus=EPhoneNotInitialised;
-		iState = EATNotInProgress;
-		}
-	iIo->WriteAndTimerCancel(this);
-	iIo->RemoveExpectStrings(this);
-	iOKExpectString = NULL;
-	iErrorExpectString = NULL;
-	CATCommands::Complete(aError,aSource);
-	LOGTEXT2(_L8("MmTsy:CATSubscriberId:\tCATSubscriberId completed with error code : %d"), aError);
-	if (iReqHandle)
-		iTelObject->ReqCompleted(iReqHandle, aError);
-	if (aSource==EWriteCompletion)
-		iIo->Read();
-	}
-
-void CATSubscriberId::CompleteWithIOError(TEventSource /*aSource*/,TInt aStatus)
-	{
-	if (iState!=EATNotInProgress)
-		{
-		iIo->WriteAndTimerCancel(this);
-		iState = EATNotInProgress;
-		if (iReqHandle)
-			iTelObject->ReqCompleted(iReqHandle, aStatus);
-		}
-	}
-
-void CATSubscriberId::ParseResponseL()
-/**
- * This function parses the phone's response, copying it into the iImsi buffer.  This buffer is
- * only 15 characters long, and the Siemens S25 returns a 16 character long IMSI.  Other phones
- * return only the leftmost 15 characters.  This function takes this into account by returning
- * only the leftmost 15 characters of the phone's response.
-**/
-	{
-	ParseBufferLC();
-	TDblQueIter<CATParamListEntry> iter(iRxResults);
-	CATParamListEntry* entry=iter++;
-	if (entry==NULL)
-		User::Leave(KErrGeneral);
-
-	if(entry->iResultPtr.Length() > RMobilePhone::KIMSISize)
-		iImsi.Copy(entry->iResultPtr.Left(RMobilePhone::KIMSISize));
-	else
-		iImsi.Copy(entry->iResultPtr);
-
-	if (iter++!=NULL)
-		User::Leave(KErrGeneral);
-	*iReturnPtr=iImsi;
-
-	CleanupStack::PopAndDestroy();
-	}
-
-TBool CATSubscriberId::CachedValue(TDes& aImsi)
-//
-// return the cached value if we have it
-//
-	{
-	if (iState!=EATCompleted)
-		return EFalse;
-	aImsi=iImsi;
-	return ETrue;
-	}
-
+// Copyright (c) 2000-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:
+// Deal with Network & Operator information
+// 
+//
+
+#include <et_phone.h>
+#include "mimsi.h"
+#include "mSLOGGER.H"
+#include "ATIO.H"
+#include "Matstd.h"
+
+
+// Get the IMSI for from the phone
+// NB - not supported by all phones.
+
+_LIT8(KGetSubscriberIdCommand,"AT+CIMI");
+
+inline CATSubscriberId::CATSubscriberId(CATIO* aIo, CTelObject* aTelObject, CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
+	: CATCommands(aIo,aTelObject,aInit,aPhoneGlobals)
+	{}
+
+CATSubscriberId* CATSubscriberId::NewL(CATIO* aIo,CTelObject* aTelObject,CATInit* aInit,CPhoneGlobals* aPhoneGlobals)
+	{
+	CATSubscriberId* netInfo = new(ELeave) CATSubscriberId(aIo, aTelObject, aInit, aPhoneGlobals);
+	CleanupStack::PushL(netInfo);
+	netInfo->ConstructL();
+	CleanupStack::Pop();
+	return netInfo;
+	}
+
+CATSubscriberId::~CATSubscriberId()
+	{
+	iIo->RemoveExpectStrings(this);
+	}
+
+void CATSubscriberId::Start(TTsyReqHandle aTsyReqHandle,TAny* aParam)
+	{
+	LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tStarting Subscriber Id"));
+	iReturnPtr=static_cast<RMobilePhone::TMobilePhoneSubscriberId*>(aParam);
+	iReqHandle = aTsyReqHandle;
+	WriteExpectingResults(KGetSubscriberIdCommand, 3);
+	__ASSERT_ALWAYS(iIo->AddExpectString(this,KNotifyMeIfErrorString), Panic(EGeneral));
+	iState=EATImsiWaitForWriteComplete;
+	}
+
+void CATSubscriberId::EventSignal(TEventSource aSource)
+	{
+	if (aSource==ETimeOutCompletion)
+		{
+		LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tTimeout Error during IMSI read"));
+		RemoveStdExpectStrings();
+		Complete(KErrTimedOut,aSource);
+		return;
+		}
+
+	switch(iState)
+		{
+		case EATImsiWaitForWriteComplete:
+		__ASSERT_ALWAYS(aSource==EWriteCompletion,Panic(EATCommand_IllegalCompletionWriteExpected));
+			{
+			iIo->WriteAndTimerCancel(this);
+			StandardWriteCompletionHandler(aSource, 5);
+			iState=EATImsiReadComplete;
+			}
+		break;
+
+		case EATImsiReadComplete:
+		__ASSERT_ALWAYS(aSource==EReadCompletion,Panic(EATCommand_IllegalCompletionReadExpected));
+			{
+			iIo->WriteAndTimerCancel(this);
+			TInt ret(ValidateExpectString());
+			RemoveStdExpectStrings();
+			if (ret==KErrNone)
+				TRAP(ret,ParseResponseL());
+			Complete(ret,aSource);
+			}
+			break;
+	
+		case EATWaitForStopState:
+			__ASSERT_ALWAYS(aSource==EReadCompletion, Panic(EATCommand_IllegalCompletionReadExpected));
+			{
+			iIo->WriteAndTimerCancel(this);
+			Complete(KErrCancel, aSource);
+			}
+			break;
+
+
+		default:
+			break;
+		}//switch
+	}//EventSignal
+
+void CATSubscriberId::Stop(TTsyReqHandle aTsyReqHandle)
+	{
+	__ASSERT_ALWAYS(aTsyReqHandle == iReqHandle, Panic(EIllegalTsyReqHandle));
+	LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tCancel called."));
+	switch(iState)
+		{
+		case EATNotInProgress:
+		case EATImsiWaitForWriteComplete:
+			{
+			LOGTEXT2(_L8("Current state TSY is cancelling from %d"), iState);
+			Complete(KErrCancel, EReadCompletion);
+			}
+			break;
+
+		default:
+			{
+			LOGTEXT(_L8("MmTsy:\tCATSubscriberId:\tStop, now waiting for expected modem response"));
+			AddStdExpectStrings();
+			iIo->SetTimeOut(this);
+			iState = EATWaitForStopState;
+			}
+			break;
+
+		}
+	}
+
+
+void CATSubscriberId::Complete(TInt aError,TEventSource aSource)
+	{
+	if (aError==KErrNone)
+		iState = EATCompleted;
+	else if (aError==KErrGeneral)
+		{	// +CIMI not supported by the phone, transmogrify into KErrNotSupported
+		iState = EATNotSupported;
+		aError = KErrNotSupported;
+		}
+	else
+		{
+// This flag is set in CATCommands::Complete now.
+//		iPhoneGlobals->iPhoneStatus.iInitStatus=EPhoneNotInitialised;
+		iState = EATNotInProgress;
+		}
+	iIo->WriteAndTimerCancel(this);
+	iIo->RemoveExpectStrings(this);
+	iOKExpectString = NULL;
+	iErrorExpectString = NULL;
+	CATCommands::Complete(aError,aSource);
+	LOGTEXT2(_L8("MmTsy:CATSubscriberId:\tCATSubscriberId completed with error code : %d"), aError);
+	if (iReqHandle)
+		iTelObject->ReqCompleted(iReqHandle, aError);
+	if (aSource==EWriteCompletion)
+		iIo->Read();
+	}
+
+void CATSubscriberId::CompleteWithIOError(TEventSource /*aSource*/,TInt aStatus)
+	{
+	if (iState!=EATNotInProgress)
+		{
+		iIo->WriteAndTimerCancel(this);
+		iState = EATNotInProgress;
+		if (iReqHandle)
+			iTelObject->ReqCompleted(iReqHandle, aStatus);
+		}
+	}
+
+void CATSubscriberId::ParseResponseL()
+/**
+ * This function parses the phone's response, copying it into the iImsi buffer.  This buffer is
+ * only 15 characters long, and the Siemens S25 returns a 16 character long IMSI.  Other phones
+ * return only the leftmost 15 characters.  This function takes this into account by returning
+ * only the leftmost 15 characters of the phone's response.
+**/
+	{
+	ParseBufferLC();
+	TDblQueIter<CATParamListEntry> iter(iRxResults);
+	CATParamListEntry* entry=iter++;
+	if (entry==NULL)
+		User::Leave(KErrGeneral);
+
+	if(entry->iResultPtr.Length() > RMobilePhone::KIMSISize)
+		iImsi.Copy(entry->iResultPtr.Left(RMobilePhone::KIMSISize));
+	else
+		iImsi.Copy(entry->iResultPtr);
+
+	if (iter++!=NULL)
+		User::Leave(KErrGeneral);
+	*iReturnPtr=iImsi;
+
+	CleanupStack::PopAndDestroy();
+	}
+
+TBool CATSubscriberId::CachedValue(TDes& aImsi)
+//
+// return the cached value if we have it
+//
+	{
+	if (iState!=EATCompleted)
+		return EFalse;
+	aImsi=iImsi;
+	return ETrue;
+	}
+