cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsreceive.cpp
branchRCL_3
changeset 20 07a122eea281
parent 19 630d2f34d719
child 21 4814c5a49428
--- a/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsreceive.cpp	Tue Aug 31 16:23:08 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,317 +0,0 @@
-// 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:
-// @file atsmsreceive.cpp
-// This contains CAtSmsReceive which received incoming messages
-// 
-
-//system include
-#include <etelmm.h>
-#include <ctsy/ltsy/cctsydispatchercallback.h>
-
-//user include 
-#include "atsmsreceive.h"
-#include "atsmsstoreread.h"
-#include "atsmsack.h"
-#include "atmanager.h"
-#include "activecommandstore.h"
-#include "mslogger.h"
-#include "smsatutil.h"
-
-//constant defination
-_LIT8(KCMTMatchString,"+CMT:*");
-_LIT8(KCMTResponseString,"+CMT:");
-_LIT8(KAsterisk,"*");
-
-#ifdef _DEBUG
-const TInt KLogMaxCharNumPerLine = 160;
-#endif
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::CAtSmsReceive
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsReceive::CAtSmsReceive(CGlobalPhonemanager& aGloblePhone, 
-                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
-                             :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
-	{
-	LOGTEXT(_L8("CAtSmsReceive::CAtSmsReceive called"));
-	iAtType = ELtsyAT_Sms_ReceiveMessage;
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::~CAtSmsReceive
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsReceive::~CAtSmsReceive()
-	{
-	LOGTEXT(_L8("CAtSmsReceive::~CAtSmsReceive called"));
-	RemoveAllExpectString();
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::NewLC
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsReceive* CAtSmsReceive::NewLC(CGlobalPhonemanager& aGloblePhone, 
-                                    CCtsyDispatcherCallback& aCtsyDispatcherCallback)
-	{
-	CAtSmsReceive* self = new (ELeave)CAtSmsReceive(aGloblePhone, 
-                                                    aCtsyDispatcherCallback);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::NewL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsReceive* CAtSmsReceive::NewL(CGlobalPhonemanager& aGloblePhone, 
-                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
-	{
-	CAtSmsReceive* self=CAtSmsReceive::NewLC(aGloblePhone, 
-                                             aCtsyDispatcherCallback);
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::ConstructL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsReceive::ConstructL()
-	{
-	CAtCommandBase::ConstructL();
-	//Add expecting string
-	RemoveAllExpectString();
-	AddExpectStringL(KCMTMatchString);
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::StartRequest
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsReceive::StartRequest()
-	{
-	iState = EReceiveReady;
-	iPhoneGlobals.iAtManager->GetActiveCommandStore()->AddUnsolicitedAtCommand(this);
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::ExecuteCommand
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsReceive::ExecuteCommand()
-	{
-	
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::EventSignal
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsReceive::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
-/**
- * Handle the events from the comm port
- *ValidateExpectString
- * @param aSource denotes if event is due to read, write or timeout
- */
-	{
-	if(aStatus != KErrNone)
-		{
-		iCtsyDispatcherCallback.CallbackSmsNotifyReceiveSmsMessageInd(iError,EFalse,iMsgReceive);
-		return;
-		}
-	
-	if( iState == EReceiveReady )
-		{
-		LOGTEXT(_L8("CAtSmsReceive::EventSigna,EReadCompletion"));
-		//Handle CMT response
-		if (iError == KErrNone)
-			{
-             //want to read the second line
-			TRAPD(err,AddExpectStringL(KAsterisk));
-			if( err==KErrNone )
-				{
-				// Wait for the reception of the second line
-				iState=EWaitForCmtSecondLine;
-				return;
-				}
-			else
-				{
-				iError = err;
-				}
-			}
-		iCtsyDispatcherCallback.CallbackSmsNotifyReceiveSmsMessageInd(iError,EFalse,iMsgReceive);
-		}
-	else if( iState == EWaitForCmtSecondLine )
-		{
-		LOGTEXT(_L8("CAtSmsReceiveMessage::EventSignal EWaitForCmtSecondLine"));
-        RemoveExpectString(KAsterisk);
-		iCtsyDispatcherCallback.CallbackSmsNotifyReceiveSmsMessageInd(iError,EFalse,iMsgReceive);
-		// We've got the PDU, and will delete the buffer when the line is parsed
-		if(iPhoneGlobals.iEventSignalActive == EFalse)
-			{
-		    ClearBuffer();
-			}
-		iState = EReceiveReady;
-		}
-     
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::CMTResponseFirstLineL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void  CAtSmsReceive::CMTResponseFirstLineL()
-	{
-	LOGTEXT(_L8("CAtSmsReceive::CMTResponseFirstLineL Enter funciton"));
-	iError = KErrNone;
-	TPtrC8 firstLineBuf;
-	firstLineBuf.Set(Buffer());
-	TInt pos = firstLineBuf.FindF(KCMTResponseString);
-	if (pos == KErrNotFound)
-		{
-		LOGTEXT(_L8("CAtSmsReceive::CMTResponseFirstLineL()\tError - Cannot find '+CMT:' string"));
-		iError = KErrNotFound;
-		return;
-		}
-	//skip the string of +CMT:
-	pos += KCMTResponseString().Length();
-	//skip a  "," character
-	while(!(TChar(firstLineBuf[pos]).IsDigit()))
-		{
-		++pos;
-		}
-	TInt lenPos = firstLineBuf.Length()-pos;
-	TPtrC8 pduLenBuf;
-	pduLenBuf.Set(firstLineBuf.Right(lenPos));
-	
-	
-	TLex8 lex(pduLenBuf);
-	TUint16 val;
-	TInt ret = lex.Val(val,EDecimal);
-	if(ret != KErrNone)
-		{
-		iError = ret;
-		return;
-		}
-	iPduLen = val;
-    LOGTEXT2(_L8("New SMS detected of length %d"),iPduLen);
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::CMTResponseSecondLineL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void  CAtSmsReceive::CMTResponseSecondLineL() 
-	{
-	LOGTEXT(_L8("CAtSmsReceive::CMTResponseSecondLineL Enter funciton"));
-	iError = KErrNone;
-	iAttr.iFlags=0;
-	TPtrC8 secondLineBuf;
-	secondLineBuf.Set(CurrentLine());
-	
-#ifdef _DEBUG
-	TInt totalLen = secondLineBuf.Length();
-	if(totalLen <= KLogMaxCharNumPerLine)
-		{
-		LOGTEXT2(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL\tSecondLine=%S"),&secondLineBuf);
-		}
-	else
-		{
-		TInt lines = (totalLen/KLogMaxCharNumPerLine);
-		TInt remainingStrNum = (totalLen%KLogMaxCharNumPerLine);
-		for(TInt i = 0; i < lines; i++)
-			{
-			TPtrC8 line(secondLineBuf.Mid(i*KLogMaxCharNumPerLine,KLogMaxCharNumPerLine));
-			LOGTEXT2(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL \tSecondLine line=%S"),&line);
-			}
-		
-		TPtrC8 remaining(secondLineBuf.Right(remainingStrNum));
-		
-		LOGTEXT2(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL \tSecondLine line=%S"),&remaining);
-		}
-#endif  
-	// Buffer size calculated as follows;
-	//   (max pdu size + max prefixed SCA size) * number of ASCII chars used to code an octet
-	TBuf8<(RMobileSmsMessaging::KGsmTpduSize+12)*2> localPdu;	
-	localPdu.Copy(secondLineBuf);
-	//  The CMT frame sometimes contains odd number of nibbles which
-	// causes panic in ConvertAsciiToBinary() method. This type of
-	// frames will simply be discarded.
-	if(localPdu.Length() < (iPduLen*2))
-		{
-		iError = KErrUnderflow;
-		User::Leave(KErrUnderflow);
-		}
-		
-	//
-	// Check if we have a prefixed SCA on our pdu.
-	// If we do then remove it.
-	
-	if(localPdu.Length() > (iPduLen*2))
-		{
-		TInt ret = SmsAtUtil::ReadAndRemoveAddressFromAscii(localPdu,iAttr.iGsmServiceCentre);
-		if(ret !=KErrNone)
-			{
-			LOGTEXT(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL Failed to read and remove SCA from PDU"));
-			iError = ret;
-			return;
-			}
-		else
-			{
-			iMsgReceive.iServiceCentre = iAttr.iGsmServiceCentre.iTelNumber;    //for iServiceCentre
-			iMsgReceive.iMobileScNPI = iAttr.iGsmServiceCentre.iNumberPlan;
-			iMsgReceive.iMobileScTON = iAttr.iGsmServiceCentre.iTypeOfNumber;
-			iAttr.iFlags|= RMobileSmsMessaging::KGsmServiceCentre;
-			}
-		}
-	//
-	// Convert received pdu from ASCII into binary
-	TInt ret = SmsAtUtil::ConvertAsciiToBinary(localPdu,iPdu);
-	if (ret!=KErrNone)
-		{
-		LOGTEXT(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL Failed to code PDU into binary"));
-		iError = ret;
-		return;
-		}
-	else
-		{
-		iAttr.iDataFormat=RMobileSmsMessaging::EFormatGsmTpdu;
-		iAttr.iFlags|=RMobileSmsMessaging::KSmsDataFormat;
-		iAttr.iStatus = RMobileSmsMessaging::EMtMessageUnstoredClientAck;
-		iAttr.iFlags|=RMobileSmsMessaging::KIncomingStatus;
-		}
-
-	LOGTEXT2(_L8("Received PDU String is %S"),&iPdu);
-	iMsgReceive.iSmsMsg = iPdu;
-	}
-
-// ---------------------------------------------------------------------------
-// CAtSmsReceive::ParseResponseL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsReceive::ParseResponseL(const TDesC8& /*aResponseBuf*/)
-	{
-	if(iState == EReceiveReady)
-		{
-		CMTResponseFirstLineL();
-		}
-	else if(iState == EWaitForCmtSecondLine)
-		{
-		CMTResponseSecondLineL();
-		}
-	}
-
-//End of file