--- 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;
+ }
+