diff -r 14460bf2a402 -r f50f4094acd7 cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atswitchonlinemode.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atswitchonlinemode.cpp Tue Jul 06 15:36:38 2010 +0300 @@ -0,0 +1,227 @@ +// Copyright (c) 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 contains CATSwitchOnLineMode which switch to online mode +// + +#include "atswitchonlinemode.h" +#include "mslogger.h" +#include "commengine.h" +#include "tsyconfg.h" + +// Class CATSwitchOnLineMode +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::NewL +// other items were commented in a header +// --------------------------------------------------------------------------- +CATSwitchOnLineMode* CATSwitchOnLineMode::NewL(CGlobalPhonemanager& aGloblePhone, + CCtsyDispatcherCallback& aCtsyDispatcherCallback) + { + CATSwitchOnLineMode* self = new(ELeave) CATSwitchOnLineMode(aGloblePhone, + aCtsyDispatcherCallback); + CleanupStack::PushL(self ); + self->ConstructL(); + CleanupStack::Pop(self ); + return self ; + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::CATSwitchOnLineMode +// other items were commented in a header +// --------------------------------------------------------------------------- +CATSwitchOnLineMode::CATSwitchOnLineMode(CGlobalPhonemanager& aGloblePhone, + CCtsyDispatcherCallback& aCtsyDispatcherCallback) + :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback) + { + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::ConstructL +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::ConstructL() + { + CAtCommandBase::ConstructL(); + RemoveAllExpectString(); + AddExpectStringL(KLtsyNoCarrierString()); + iWhichTimer = ETimerNone; + iCallbackTimer = CCallbackTimer::NewL(*this); + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::~CATSwitchOnLineMode +// other items were commented in a header +// --------------------------------------------------------------------------- +CATSwitchOnLineMode::~CATSwitchOnLineMode() + { + if(iCallbackTimer) + { + iCallbackTimer->Cancel(); + delete iCallbackTimer; + iCallbackTimer = NULL; + } + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::ExecuteCommand +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::ExecuteCommand() + { + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::ParseResponseL +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::ParseResponseL(const TDesC8& /*aResponseBuf*/) + { + if(CurrentLine().Match(KLtsyNoCarrierString) == 0) + { + iError = KErrNone; + } + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::StartSwitchOnLineModeL +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::StartSwitchOnLineMode(CAtCommandBase* aAtCommandBase, + MAtCommandExecuteObserver* aAtCommandObserver) + { + iAtCommandBase = aAtCommandBase; + iAtCommandObserver = aAtCommandObserver; + RemoveAtCommandObserver(); + iPhoneGlobals.iCommEngine->CommCancel(); // This required to avoid a panic in C32 when we call iIo->ConfigurePort + TCommConfig configPckg; + TInt ret = KErrNone; + ret = iPhoneGlobals.iConfiguration->PortConfig(configPckg,EConfigTypeHangUp); + if (ret==KErrNone) + ret = iPhoneGlobals.iCommEngine->ConfigurePort(configPckg); + if (ret!=KErrNone) + { + iAtCommandBase->EventSignal(EWriteCompletion,ret); + } + iPhoneGlobals.iCommEngine->DropDtr(); + iWhichTimer = ETimerDrop; + StartTimer(500000L); + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::EventSignal +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus) + { + if(KErrNone ==aStatus) + { + aStatus = iError; + } + CAtCommandBase::Complete(); + if(KErrNone ==aStatus) + { + //iPhoneGlobals.iPhoneStatus.iMode = RPhone::EModeOnlineCommand; + Disable(); + StartTimer(1000000L); + iWhichTimer = ETimerWait; + } + else + { + Disable(); + iPhoneGlobals.iEventSignalActive = EFalse; + iAtCommandBase->EventSignal(EWriteCompletion,KErrNotReady); + } + + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::Enable +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::Enable() + { + AddUnsolicitedAtCommand(); + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::Disable +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::Disable() + { + RemoveAtCommand(); + } +// --------------------------------------------------------------------------- +// CATSwitchOnLineMode::StartTimer +// other items were commented in a header +// --------------------------------------------------------------------------- +void CATSwitchOnLineMode::StartTimer(const TInt aTimeout) + { + if (iCallbackTimer->IsActive()) + iCallbackTimer->Cancel(); + iCallbackTimer->After(aTimeout); + } +/** + * + * + */ +void CATSwitchOnLineMode::TimerRun(TInt aError) + { + if(aError == KErrNone) + { + switch(iWhichTimer) + { + case ETimerDrop: + LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerDrop time out.")); + iPhoneGlobals.iCommEngine->RaiseDTR(); + iPhoneGlobals.iPhoneStatus.iMode = RPhone::EModeOnlineCommand; + iPhoneGlobals.iEventSignalActive = ETrue; + iWhichTimer = ETimerRaise; + StartTimer(1000000L); + break; + case ETimerRaise: + LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerRaise time out.")); + iPhoneGlobals.iCommEngine->ResetBuffers(); + iWhichTimer = ETimerReset; + StartTimer(1000000L); + break; + case ETimerReset: + LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerReset time out.")); + ClearBuffer(); + iPhoneGlobals.iCommEngine->Read(); + iWhichTimer = ETimerRead; + Enable(); + StartTimer(1000000L); + break; + case ETimerRead: + LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerRead time out.")); + StartTimer(1000000L); + iWhichTimer = ETimerWait; + break; + case ETimerWait: + LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerWait time out.")); + if(iAtCommandObserver) + { + SetAtCommandObserver(iAtCommandObserver); + } + Disable(); + iAtCommandBase->StartRequest(); + iWhichTimer = ETimerNone; + break; + default: + Disable(); + iPhoneGlobals.iEventSignalActive = EFalse; + iAtCommandBase->EventSignal(EWriteCompletion,KErrNotReady); + break; + } + } + else + { + Disable(); + iPhoneGlobals.iEventSignalActive = EFalse; + iAtCommandBase->EventSignal(EWriteCompletion,KErrNotReady); + } + } +// +// End of file