diff -r 630d2f34d719 -r 07a122eea281 cbsref/csyrefplugins/csy27010/src/Mux0710Protocol.cpp --- a/cbsref/csyrefplugins/csy27010/src/Mux0710Protocol.cpp Tue Aug 31 16:23:08 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1034 +0,0 @@ -// -// * Copyright 2004 Neusoft America Inc. -// * All rights reserved. -// * This component and the accompanying materials are made available -// * under the terms of the Eclipse Public License v1.0 -// * which accompanies this distribution, and is available -// * at the URL "http://www.eclipse.org/legal/epl-v10.html". -// * -// * Contributors: -// * Keith Collins (Neusoft America Inc.) original software development and additional code and modifications. -// * Thomas Gahagen (Neusoft America Inc.) additional code and modifications. -// * Zhen Yuan (Neusoft America Inc.) additional code and modifications. -// * -// * Description: This file contains the implementation for the Mux0710Protocol class. -// - -// Mux0710Protocol.cpp - -/** @file Mux0710Protocol.cpp - * - */ - -#include "Mux0710Protocol.h" -#include "Portfactory.h" -#include "PortC32Interface.h" -#include "CsyMsgBufBPFrame.h" -#include "ChannelMgrCmdData.h" -#include "CommFrameWriterAo.h" -#include "CommFrameReaderAo.h" -#include "ChannelMgrCtrl.h" -#include "CsyDebugLogger.h" - -// AT Commands -_LIT8(KATCmdAttention, "ATE0\r"); -_LIT8(KATCmdDisableEcho, "ATE0Q0V1\r"); -_LIT8(KATCmdReset, "AT%b\r"); -_LIT8(KATCmdSleep, "AT%SLEEP=0\r"); - -const TInt KRetryCount = 2; - -CMux0710Protocol* CMux0710Protocol::NewL(CPortFactory& aPortFactory) -/** - * This static method uses 2-phase construction to create an instance of - * this class. - * - * @return Pointer to the created object - */ - { - _LOG_L4C1("CMux0710Protocol::NewL"); - - CMux0710Protocol* p = new(ELeave) CMux0710Protocol(aPortFactory); - CleanupStack::PushL(p); - p->ConstructL(); - CleanupStack::Pop(p); - return p; - } - -CMux0710Protocol::~CMux0710Protocol() -/** - * Destructor. - */ - { - _LOG_L4C1("CMux0710Protocol::~CMux0710Protocol"); - - // Release Free Frame Memory - CCsyMsgBufBpFrame* aBpFrame; - iFreeFrameBufIter.SetToFirst(); - while ((aBpFrame = iFreeFrameBufIter++) != NULL) - { - iFreeFrameBufList.Remove(*aBpFrame); - delete aBpFrame; - } - - delete iTimeouter; - } - -CMux0710Protocol::CMux0710Protocol(CPortFactory& aPortFactory) -/** - * Constructor. - * - */ - : iPortFactory(aPortFactory), - iMuxMgrState(ECsyWaitingForFlushResp), - iFreeFrameBufList(_FOFF(CCsyMsgBufBpFrame, iMsgLink)), - iFreeFrameBufIter(iFreeFrameBufList), - iRetryCount(KRetryCount) - {} - -void CMux0710Protocol::ConstructL() -/** - * Allocate the memory for the free frames list. - */ - { - _LOG_L4C1("CMux0710Protocol::ConstructL"); - - iTimeouter = CActiveTimeouter::NewL(*this); - - // allocate memory for the free frame buffer - for (TUint i=0; i < KMaxFreeFrames; i++) - { - CCsyMsgBufBpFrame* aBpFrame = CCsyMsgBufBpFrame::NewL(); - iFreeFrameBufList.AddLast(*aBpFrame); - } - iFreeFrameCount = KMaxFreeFrames; - } - -CCsyMsgBufBpFrame* CMux0710Protocol::GetFreeFrameBuf(TBool aCheckFlowControlThresholds) -/** - * Get a free frame buffer and then remove the buffer from - * the free list. - * - * @return - Pointer to a frame buffer or NULL - */ - { - _LOG_L4C2(">>CMux0710Protocol::GetFreeFrameBuf [aCheckFlowControlThresholds=%d]", - aCheckFlowControlThresholds); - - CCsyMsgBufBpFrame* frame = NULL; - if (!iFreeFrameBufList.IsEmpty()) - { - frame = iFreeFrameBufList.First(); - if (frame) - { - iFreeFrameBufList.Remove(*frame); - iFreeFrameCount--; - _LOG_L4C2("iFreeFrameCount=%d",iFreeFrameCount); - - if ((aCheckFlowControlThresholds)&&(iFreeFrameCount < KStopDataDlcsThreshold)) - { - // Need to enforce some flow control - iEnforcingFlowControl = ETrue; - - if (iFreeFrameCount == 1) - { - // Only one frame free - that can be used to send the MSC command - _LOG_L4C1("Drastic action! - 1 frame free"); - iPortFactory.StopAnyDlc(); - } - else - { - _LOG_L4C2("Less than %d frames free",KStopDataDlcsThreshold); - iPortFactory.FindActiveDataDlcToStop(); - } - } - - frame->iMsg.Zero(); - frame->MsgDlc() = KCtrlChannelDlcNum; - frame->CompleteWhenSent() = ETrue; - } - } - - _LOG_L4C2("<>CMux0710Protocol::AddFrameFreeQ [aBpFrame=0x%x]",aBpFrame); - - iFreeFrameBufList.AddLast(*aBpFrame); - - if (iEnforcingFlowControl) - { - if (iFreeFrameCount >= KStartDataDlcsThreshold) - { - // Release flow control - _LOG_L4C2("More than %d frames free", - KStartDataDlcsThreshold); - - // re-enable a data dlc (note only re-enable one dlc at a time) - iEnforcingFlowControl = iPortFactory.FindDlcToEnable(); - _LOG_L4C2("iEnforcingFlowControl=%d",iEnforcingFlowControl); - } - } - - iFreeFrameCount++; - //MAF __ASSERT_DEBUG((iFreeFrameCount <= KMaxFreeFrames),PANIC(KPanicIllegalState)); - - _LOG_L4C2("<>CMux0710Protocol::Create0710DataFrames [aDlcNum=%d]", - aDlcNum); - - TInt ret = KErrNone; - - TInt msgLength = aMsgBuf.Length(); - TInt offset = 0; - TInt frameLength = 0; - TInt maxFrameLength = KMaxFrameSize; - - TBool beginFlag = ETrue; - TBool endFlag = EFalse; - - _LOG_L4C2("msgLength = %d", msgLength); - if (msgLength > 0) - { - while ((msgLength > 0)&&(ret == KErrNone)) - { - CCsyMsgBufBpFrame* bpFrame = GetFreeFrameBuf(); - if (bpFrame) - { - // Set up the frame - bpFrame->MsgDlc() = aDlcNum; - - if (msgLength > maxFrameLength) - { - _LOG_L4C3("Fragmenting (%d > %d)",msgLength,maxFrameLength); - - frameLength = maxFrameLength; - bpFrame->CompleteWhenSent() = EFalse; - } - else - { - _LOG_L4C1("No Fragment"); - - frameLength = msgLength; - bpFrame->CompleteWhenSent() = ETrue; - endFlag = ETrue; - } - - // Test for convergence layer 4 - CPortC32InterfaceBase* port = - iPortFactory.FindPortC32Interface(aDlcNum); - if (port) - { - if (port->GetClientType() == CPortFactory::EC32ClientIpNif) - { - _LOG_L4C1("Layer 4 frame"); - - Create0710UIHLayer4FrameFromMsg(aMsgBuf, offset, - bpFrame, frameLength, aDlcNum, beginFlag, endFlag); - - // No longer the beginning - beginFlag = EFalse; - } - else - { - _LOG_L4C1("Normal frame"); - - Create0710UIHFrameFromMsg( - aMsgBuf, offset, bpFrame, frameLength, aDlcNum); - } - - _LOG_L4C1("Writing the frame"); - ret = iCommWriter->Write(bpFrame); - } - else - { - _LOG_L1C2("** No port defined for aDlcNum=%d", - aDlcNum); - } - } - else - { - // error no free frame available - _LOG_L1C1("** No free frame buffer **"); - ret = KErrNoMemory; - } - - msgLength -= frameLength; - offset += maxFrameLength; - } - } - else - { - ret = KErrArgument; - } - - _LOG_L4C2("<>CMux0710Protocol::Create0710UIHFrameFromMsg [aOffset=%d,aLength=%d]",aOffset,aLength); - - aFrameBuf->iMsg.Zero(); - - // set initial length for headers -#ifdef _27010ADVANCEOPTION - aFrameBuf->iMsg.SetLength(3); -#else - aFrameBuf->iMsg.SetLength(4); -#endif - - // Octet 0 = Start Flag - aFrameBuf->iMsg[0] = KCsy0710StartEndFlag; - - // Octet 1 = Non-extended Address, Command/Response, DLCI number - aFrameBuf->iMsg[1] = (TUint8) ((aDlcNum << 2) | 0x03); // Set the DLCI, EA, C/R - - // Octet 2 = Control Field = Frame Type (UIH) - aFrameBuf->iMsg[2] = (TUint8) KCsy0710CTLUIH; - - -#ifdef _27010ADVANCEOPTION - TInt checksumLength = 2; -#else - // Octet 3 = Length indicator - // ASSUME only 1 byte needed for length size - // 27.010 supports 7 bits in Octet 3 to indicate a length up to 128 bytes long - aFrameBuf->iMsg[3] = (TUint8) ((aLength << 1) | KCsy0710EA); - - - // CRC Frame check : Basic Option -> for Addr, Control, Length Fields only - // length = 3 bytes [Addr(1) + Control(1) + Length (1)] - TInt checksumLength = 3; -#endif - TUint8 checksum; - checksum = (TUint8) CalcFCS(&aFrameBuf->iMsg[0], checksumLength); - - // Octet 5-x - //CCsyMsgBufClient* csyMsgBufClient = STATIC_CAST(CCsyMsgBufClient*, aMsgBuf); - const TUint8* temp = &aMsgBuf[aOffset]; - aFrameBuf->iMsg.Append(temp, aLength); - TInt tempLength = aFrameBuf->iMsg.Length(); - aFrameBuf->iMsg.SetLength(tempLength + 2); - aFrameBuf->iMsg[tempLength] = checksum; - aFrameBuf->iMsg[tempLength+1] = KCsy0710StartEndFlag; - - _LOG_L4C1("<>CMux0710Protocol::Create0710UIHLayer4FrameFromMsg [aOffset=%d,aLength=%d]",aOffset,aLength); - _LOG_L4C3("[aLayer4Begin=%d,aLayer4End=%d]",aLayer4Begin,aLayer4End); - - //aFrameBuf->iMsg.Zero(); - this is done in GetFreeFrameBuf - - // set initial length for headers - aFrameBuf->iMsg.SetLength(3); - - // Octet 0 = Start Flag - aFrameBuf->iMsg[0] = KCsy0710StartEndFlag; - - // Octet 1 = Non-extended Address, Command/Response, DLCI number - aFrameBuf->iMsg[1] = (TUint8) ((aDlcNum << 2) | 0x03); // Set the DLCI, EA, C/R - - // Octet 2 = Control Field = Frame Type (UIH) - aFrameBuf->iMsg[2] = (TUint8) KCsy0710CTLUIH; - - TInt checksumLength = 2; - TUint8 checksum; - checksum = (TUint8) CalcFCS(&aFrameBuf->iMsg[0], checksumLength); - - // Octet 5-x - // Build the Convergence Layer 4 byte - TUint8 tempLayer4Byte = 0x01; // Default Middle Frame fragment - if (aLayer4Begin && aLayer4End) // Begin and End - Single Frame Message - { - tempLayer4Byte = 0xC1; // MAF magic numbers - } - else if (aLayer4Begin) // Begin Frame - { - tempLayer4Byte = 0x41; - } - else if (aLayer4End) // End Frame - { - tempLayer4Byte = 0x81; - } - aFrameBuf->iMsg.Append(tempLayer4Byte); - - const TUint8* temp = &aMsgBuf[aOffset]; - aFrameBuf->iMsg.Append(temp, aLength); - TInt tempLength = aFrameBuf->iMsg.Length(); - - aFrameBuf->iMsg.SetLength(tempLength + 2); - aFrameBuf->iMsg[tempLength] = checksum; - aFrameBuf->iMsg[tempLength+1] = KCsy0710StartEndFlag; - - DumpFrame(aFrameBuf); - - _LOG_L4C1("<>CMux0710Protocol::Create0710ControlFrame [aDlcNum=%d]",aDlcNum); - - TInt ret = KErrNone; - - if (iMaxRetriesReached == EFalse) - { - - #ifdef _27010ADVANCEOPTION - TUint8 tempArray[15]; // MAF magic numbers - #else - TUint8 tempArray[8]; - #endif - - // Octet 0 = Start Flag - tempArray[0] = KCsy0710StartEndFlag; - - // Octet 1 = Non-extended Address, initiating end (Command/Response), DLCI number - tempArray[1] = (TUint8) ((aDlcNum << 2) | 0x03); // Set the DLCI, EA, C/R - - // Octet 2 = Frame Type - switch (aFrameType) - { - case ESABM: - _LOG_L3C1("ESABM"); - tempArray[2] = (TUint8) KCsy0710CTLSABM; - tempArray[2] |= KCsy0710PollFinal; - break; - case EUA: - _LOG_L3C1("EUA"); - tempArray[1] = (TUint8) ((aDlcNum << 2) | 0x01); // Set the DLCI, EA - tempArray[2] = (TUint8) KCsy0710CTLUA; - break; - case EDM: - _LOG_L3C1("EDM"); - tempArray[1] = (TUint8) ((aDlcNum << 2) | 0x01); // Set the DLCI, EA - tempArray[2] = (TUint8) KCsy0710CTLDM; - break; - case EDISC: - _LOG_L3C1("EDISC"); - tempArray[2] = (TUint8) KCsy0710CTLDISC; - tempArray[2] |= KCsy0710PollFinal; - break; - case EUIH: - _LOG_L3C1("EUIH"); - tempArray[2] = (TUint8) KCsy0710CTLUIH; - tempArray[2] |= KCsy0710PollFinal; // no pollbit - break; - case EUI: - _LOG_L3C1("EUI"); - tempArray[2] = (TUint8) KCsy0710CTLUI; - break; - default: - _LOG_L1C2("** Unknown FrameType=%d **",aFrameType); - ret = KErrGeneral; - break; - } - - #ifndef _27010ADVANCEOPTION - - (void) aType; //to hide warning. - (void) aV24Signals; //to hide warning. - - // Octet 3 = Length1 indicator octet1 - tempArray[3] = (TUint8) 0x01; // zero length and set EA bit - - // CRC Frame check : Basic Option -> for Addr, Control, Length Fields only - // length = 4 bytes [Addr(1) + Control(1) + Length (2)] - TInt length = 3; - tempArray[4] = (TUint8) CalcFCS(tempArray, length); - tempArray[5] = KCsy0710StartEndFlag; - - // For this call of GetFreeFrameBuf do not check the low frame threshold - // since control frame and it could be related to an already occurring flow - // control action anyway. - CCsyMsgBufBpFrame* ctrlFrame = GetFreeFrameBuf(EFalse); - if (ctrlFrame) - { - ctrlFrame->iMsg.Copy(tempArray, 6); - iCommWriter->Write(ctrlFrame); // MAF should be high priority frame - } - #else - - if (aFrameType == EUIH) - { - // Set the DLCI to 0 - tempArray[1] = 0x03; // Set the DLCI to 0, EA, C/R - } - - TUint8 checkSum; - TInt length = 2; - checkSum = (TUint8) CalcFCS(tempArray, length); - - if (aFrameType == EUIH) - { - // Only two types of control UIH supported - if (aType == EParamNeg) - { - _LOG_L3C1("Param Negotiate"); - - tempArray[3] = KCsy0710CTLUIH_DlcParamNegotiate; - tempArray[4] = 0x11; // i.e 8 bytes, EA - tempArray[5] = aDlcNum; - tempArray[6] = (KPNClBits << 4) + KPNFrameType; - tempArray[7] = KPNDlcPriority; - tempArray[8] = KPNAckTimer; - tempArray[9] = KPNMaxFrameSize & 0x00ff; - tempArray[10] = KPNMaxFrameSize >> 8; - tempArray[11] = KPNMaxRetransmissions; - tempArray[12] = KPNWindowSize; - tempArray[13] = checkSum; - tempArray[14] = KCsy0710StartEndFlag; - - iParamNegotiateDlcNum = aDlcNum; - } - else - { - _LOG_L3C2("MSC aV24Signals=0x%x", aV24Signals); - - tempArray[3] = KCsy0710CTLUIH_ModemStatusCmd; - tempArray[4] = 0x05; // i.e 2 bytes, EA - tempArray[5] = (TUint8) ((aDlcNum << 2) | 0x03); // Set the DLCI, EA, 1 - tempArray[6] = aV24Signals; - tempArray[7] = checkSum; - tempArray[8] = KCsy0710StartEndFlag; - } - } - else - { - tempArray[3] = checkSum; - tempArray[4] = KCsy0710StartEndFlag; - } - - CCsyMsgBufBpFrame* ctrlFrame = GetFreeFrameBuf(EFalse); - if (ctrlFrame) - { - #ifdef _27010ADVANCEOPTION - if (aFrameType == EUIH) - { - if (aType == EParamNeg) - { - ctrlFrame->iMsg.Copy(tempArray, 15); - } - else - { - ctrlFrame->iMsg.Copy(tempArray, 9); - } - } - else - { - ctrlFrame->iMsg.Copy(tempArray, 5); - } - #else - ctrlFrame->iMsg.Copy(tempArray, 5); - #endif - - _LOG_L3C1("Write the frame"); - iCommWriter->Write(ctrlFrame); // MAF should be high priority frame - } - #endif - else - { // no memory available - _LOG_L1C1("** No Memory Available **"); - ret = KErrNoMemory; - } - } - else - { - _LOG_L1C1("** Max Retries Reached **"); - ret = KErrTimedOut; - } - _LOG_L4C2("<>CMux0710Protocol::SwitchToMuxMode"); - -#ifdef __CSY_PROTOTYPE__ - iMuxMgrState = ECsyMuxEnabled; -#else - - if(iMuxMgrState == ECsyWaitingForFlushResp) - { - //flush the read queue. - iTimeouter->Start(KOneSecond); - return KErrNone; - } - else - { - iTimeouter->Start(KTwoSeconds); - } - - TInt ret = KErrNone; - - CCsyMsgBufBpFrame* initBuf = GetFreeFrameBuf(); - if (initBuf) - { - -#ifdef USE_TI_CONDAT_STACK - if(iMuxMgrState == ECsyWaitingForResetResp) - { - //when using the TI stack we first attempt to reset the board using at%b. - _LOG_L3C1("Sending AT reset command"); - TBuf8<16> aBuf(KATCmdReset); - initBuf->iMsg.Copy(aBuf); - iMuxMgrState = ECsyWaitingForResetResp; - } - else if(iMuxMgrState == ECsyWaitingForSleepResp) - { - //Need to ensure that the TI stack will not timeout in the lull between commands - _LOG_L3C1("Sending AT sleep command"); - TBuf8<16> aBuf(KATCmdSleep); - initBuf->iMsg.Copy(aBuf); - iMuxMgrState = ECsyWaitingForSleepResp; - } - else - { -#endif - _LOG_L3C1("Sending AT"); - TBuf8<16> aBuf(KATCmdAttention); - initBuf->iMsg.Copy(aBuf); - iMuxMgrState = ECsyWaitingForAttentionResp; - -#ifdef USE_TI_CONDAT_STACK - } -#endif - iResponseStr.Zero(); - - // call comm write to xmit frame - // comm writer's RunL will run when frame has been xmitted by LDD - // and return the frame buffer to the free list - ret = iCommWriter->Write(initBuf); - } - else - { - _LOG_L1C1("** No Memory Available **"); - ret = KErrNoMemory; - } -#endif - - _LOG_L4C2("<>CMux0710Protocol::ParseATResponse [iMuxMgrState = %d, aResp=%S]", - iMuxMgrState,&aResp); - - //Response string not always read in one go so concatonate it together to form full response string. - TInt appendsize = iResponseStr.MaxSize() - iResponseStr.Length(); - iResponseStr.Append(aResp.LeftTPtr(appendsize)); - _LOG_L4C2("Result string concatenated = %S",&iResponseStr); - - if(iMuxMgrState == ECsyWaitingForFlushResp) - { - _LOG_L4C2("Flushed comm port on opening = %S",&iResponseStr); - return KErrNotFound; - } - -#ifdef USE_TI_CONDAT_STACK - if(iMuxMgrState == ECsyWaitingForResetResp) - { - if(iResponseStr.Find(KATInitialised) != KErrNotFound) - { - //got match - reset Rsp string to enter normal loop handle - _LOG_L3C1("Board has successfully been reset."); - iResponseStr = _L8("OK"); - iRetryCount = 0; // stop retries of the reset - } - } - - if(iMuxMgrState == ECsyWaitingForSleepResp) - { - if(iResponseStr.Find(_L8("OK")) != KErrNotFound) - { - //got match - sleep acknowledged - _LOG_L3C1("Board has had sleep timeout disabled."); - iRetryCount = 0; //stop retries of the sleep; - } - } -#endif - - TInt ret = KErrNone; - - // all AT responses should contain an "OK" keyword - if ((iResponseStr.Find(_L8("OK")) != KErrNotFound) || - (iResponseStr.Find(_L8("ERROR")) != KErrNotFound)) - { - if (iResponseStr.Find(_L8("ERROR")) != KErrNotFound) - { -#ifdef USE_TI_CONDAT_STACK - if(iMuxMgrState == ECsyWaitingForResetResp) - { - _LOG_L3C1("*******TI Board failed to reset (AT%b) - continue anyway as may already be in a stable state.*******"); - iRetryCount--; - } - else if (iMuxMgrState == ECsyWaitingForSleepResp) - { - _LOG_L3C1("*******TI Board failed to acknowledge sleep disable (AT%SLEEP=0) - continue anyway as may already be in a stable state.*******"); - iRetryCount--; - } - else - { - _LOG_L3C1("****************** Received ERROR back ****************"); - } -#else - _LOG_L3C1("****************** Received ERROR back ****************"); -#endif - } - iTimeouter->Stop(); - - switch (iMuxMgrState) - { -#ifdef USE_TI_CONDAT_STACK - case ECsyWaitingForResetResp: - { - _LOG_L3C1("ECsyWaitingForResetResp - Start proper init sequence."); - if(iRetryCount>0) - iMuxMgrState = ECsyWaitingForResetResp; //try reset command again - else - { - iMuxMgrState = ECsyWaitingForSleepResp; - iRetryCount = KRetryCount; - } - SwitchToMuxMode(); - } - break; - - case ECsyWaitingForSleepResp: - { - iResponseStr.Zero(); - _LOG_L3C1("ECsyWaitingForSleepResp"); - if(iRetryCount>0) - iMuxMgrState = ECsyWaitingForSleepResp; - else - iMuxMgrState = ECsyWaitingForAttentionResp; - SwitchToMuxMode(); - } - break; -#endif - case ECsyWaitingForAttentionResp: - { - iResponseStr.Zero(); - CCsyMsgBufBpFrame* atCmdBuf = GetFreeFrameBuf(); - if (atCmdBuf) - { - _LOG_L3C1("Writing ATE0 command"); - atCmdBuf->iMsg.Copy(KATCmdDisableEcho); - iCommWriter->Write(atCmdBuf); - iMuxMgrState = ECsyWaitingForEchoDisableResp; - } - - iTimeouter->Start(KTwoSeconds); - } - break; - - case ECsyWaitingForEchoDisableResp: - { - iResponseStr.Zero(); - CCsyMsgBufBpFrame* atCmdBuf = GetFreeFrameBuf(); - if (atCmdBuf) - { - _LOG_L3C1("Writing CMUX cmd"); - atCmdBuf->iMsg.Copy(KCsyDefaultATEnterMuxModeCmd); - iCommWriter->Write(atCmdBuf); - iMuxMgrState = ECsyWaitingForCmuxResp; - } - - iTimeouter->Start(KTwoSeconds); - } - break; - - case ECsyWaitingForCmuxResp: - { - iResponseStr.Zero(); - _LOG_L3C1("Got CMUX response"); - iMuxMgrState = ECsyMuxEnabled; - - // start the connect process for the control, command & data channels - iPortFactory.ConnectControlChannel(); - } - break; - - default: - _LOG_L3C2("** Invalid Mux Mgr State = %d **", iMuxMgrState); - ret = KErrGeneral; - break; - } - } - else - { - ret = KErrNotFound; - } - - _LOG_L4C2("<>CMux0710Protocol::TimedOut [iMuxMgrState=%d]",iMuxMgrState); - - switch (iMuxMgrState) - { - - case ECsyWaitingForFlushResp: - { - //read queue has just been flushed, now start switch to MUX mode - _LOG_L3C1("ECsyWaitingForFlushResp"); -#ifdef USE_TI_CONDAT_STACK - iMuxMgrState = ECsyWaitingForResetResp; -#else - iMuxMgrState = ECsyWaitingForAttentionResp; -#endif - SwitchToMuxMode(); - } - break; -#ifdef USE_TI_CONDAT_STACK - case ECsyWaitingForResetResp: - { - _LOG_L3C1("ECsyWaitingForResetResp"); - if(--iRetryCount>0) - iMuxMgrState = ECsyWaitingForResetResp; //try reset command again - else - iMuxMgrState = ECsyWaitingForSleepResp; - SwitchToMuxMode(); - } - break; - - case ECsyWaitingForSleepResp: - { - _LOG_L3C1("ECsyWaitingForSleepResp"); - if(--iRetryCount>0) - iMuxMgrState = ECsyWaitingForSleepResp; //try sleep command again - else - iMuxMgrState = ECsyWaitingForAttentionResp; - SwitchToMuxMode(); - } - break; -#endif - case ECsyWaitingForAttentionResp: - { - if (++iAtResponseTimeout < KAtResponseTimeoutLimit) - { - _LOG_L3C2("ECsyWaitingForAttentionResp [timeout:%d]",iAtResponseTimeout); - SwitchToMuxMode(); - } - else - { - _LOG_L3C2("Max retries [%d] reached for At Response", KAtResponseTimeoutLimit); - - iMaxRetriesReached = ETrue; - //call to scheduler DoCancel required here - iPortFactory.ChannelCtrlDoCancel(); - } - } - break; - - case ECsyWaitingForEchoDisableResp: - { - _LOG_L3C1("ECsyWaitingForEchoDisableResp"); - iResponseStr.Zero(); - CCsyMsgBufBpFrame* atCmdBuf = NULL; - atCmdBuf = GetFreeFrameBuf(); - if (atCmdBuf) - { - TBuf8<16> tempBuf(KATCmdDisableEcho); - atCmdBuf->iMsg.Copy(tempBuf); - iCommWriter->Write(atCmdBuf); - } - - iTimeouter->Start(KOneSecond); - } - break; - - case ECsyWaitingForCmuxResp: - { - _LOG_L3C1("ECsyWaitingForCmuxResp"); - iResponseStr.Zero(); - CCsyMsgBufBpFrame* atCmdBuf = GetFreeFrameBuf(); - if (atCmdBuf) - { - _LOG_L3C1("Writing CMUX cmd"); - atCmdBuf->iMsg.Copy(KCsyDefaultATEnterMuxModeCmd); - iCommWriter->Write(atCmdBuf); - iMuxMgrState = ECsyWaitingForCmuxResp; - } - iTimeouter->Start(KTwoSeconds); - } - break; - - default: - _LOG_L1C2("** Invalid Mux Mgr State = %d **", iMuxMgrState); - break; - } - - _LOG_L4C1("<>CMux0710Protocol::DumpFrame"); - - TInt packetLen = aFrameBuf->iMsg.Length(); - _LOG_L4C2("frame length %d",packetLen); - - TBuf8<256> logBuf; - TBuf8<256> logBuf2; - - logBuf.Copy(_L8(" ")); - logBuf2.Copy(_L8(" ")); - _LOG_L4C1(""); - - for (TInt i = 0; i <= packetLen; i++) - { - if (i >= packetLen) - { - logBuf.Append(logBuf2); - _LOG_L4C2("%S",&logBuf); - break; - } - if (((i % 16) == 0) && (i > 0)) - { - logBuf.Append(logBuf2); - _LOG_L4C2("%S",&logBuf); - logBuf.Copy(_L8(" ")); - logBuf2.Copy(_L8(" ")); - } - logBuf.AppendFormat(_L8("%02X "), aFrameBuf->iMsg[i]); - if (TChar(aFrameBuf->iMsg[i]).IsPrint()) - logBuf2.AppendFormat(_L8("%c"), aFrameBuf->iMsg[i]); - else - logBuf2.Append(_L8(".")); - } - - _LOG_L4C1("<