--- a/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmssend.cpp Tue Aug 31 16:23:08 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,335 +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 atsmssend.cpp
-// This contains CAtSmsSend which is used to send sms message
-//
-
-//system include
-#include <etelmm.h>
-#include <ctsy/ltsy/cctsydispatchercallback.h>
-
-// user include
-#include "atsmssend.h"
-#include "mslogger.h"
-#include "ltsycommondefine.h"
-#include "atmanager.h"
-#include "commengine.h"
-#include "smsatutil.h"
-
-//Constants
-_LIT8(KSmsSendCommandPdu,"AT+CMGS=%d\r");
-_LIT8(KCMGSResponseString,"+CMGS:");
-_LIT8(KDefaultSCA,"00");
-_LIT8(KSmsEnterPduResponse,">");
-_LIT8(KSendExpectedString,"+CMGS:*");
-const TInt KLtsyOnePause = 100000;
-const TInt KLtsySendSmsWriteTimeOut = 20;
-const TInt KLtsySendSmsReadTimeOut = 30;
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::CAtSmsSend
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsSend::CAtSmsSend(CGlobalPhonemanager& aGloblePhone,
- CCtsyDispatcherCallback& aCtsyDispatcherCallback)
- :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
- {
- LOGTEXT(_L8("CAtSmsSend::CAtSmsSend called"));
- iWriteTimeOut = KLtsySendSmsWriteTimeOut;
- iReadTimeOut = KLtsySendSmsReadTimeOut;
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::~CAtSmsSend
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsSend::~CAtSmsSend()
- {
- LOGTEXT(_L8("CAtSmsSend::~CAtSmsSend called"));
- delete iCallbackTimer;
- iCallbackTimer = NULL;
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::NewLC
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsSend* CAtSmsSend::NewLC(CGlobalPhonemanager& aGloblePhone,
- CCtsyDispatcherCallback& aCtsyDispatcherCallback)
- {
- CAtSmsSend* self = new (ELeave)CAtSmsSend(aGloblePhone,
- aCtsyDispatcherCallback);
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::NewL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-CAtSmsSend* CAtSmsSend::NewL(CGlobalPhonemanager& aGloblePhone,
- CCtsyDispatcherCallback& aCtsyDispatcherCallback)
- {
- CAtSmsSend* self=CAtSmsSend::NewLC(aGloblePhone,aCtsyDispatcherCallback);
- CleanupStack::Pop(self);
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::ConstructL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::ConstructL()
- {
- CAtCommandBase::ConstructL();
- //Create Timer
- iCallbackTimer = CCallbackTimer::NewL(*this);
- //set writing timeout
- iWriteTimeOut = KLtsyDefaultWriteTimeOut;
- AddExpectStringL(KSmsEnterPduResponse);
- AddExpectStringL(KSendExpectedString);
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::StartRequest
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::StartRequest()
- {
- ExecuteCommand();
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::ExecuteCommand
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::ExecuteCommand()
- {
- LOGTEXT(_L8("CAtSmsSend::ExecuteCommand called"));
- LOGTEXT(_L8("SendPDUMessage..."));
-
- iMsgDataAscii.Zero();
- TInt ret = ConfirmSca();
- if(ret == KErrNone)
- {
- //Here is a SCA
- ret = SmsAtUtil::AppendAddressToAscii(iMsgDataAscii,iSmsSendParam.iGsmServiceCentre);
- if( ret!=KErrNone )
- {
- BeginTimer();
- iCallbackVal = ret;
- return;
- }
- }
- else
- {
- //Here is no SCA,usign default SCA
- iMsgDataAscii.Append(KDefaultSCA);
- }
- const TInt msgDataAsciiLen(iMsgDataAscii.Length());
- // Convert PDU to ASCII
- SmsAtUtil::AppendDataToAscii(iMsgDataAscii,iSmsSendParam.iSmsTpdu);
- iState = ESetPDULengthComplete;
- StartWritingPduLength();
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::StartWritingPduLength
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::StartWritingPduLength()
- {
- LOGTEXT(_L8("CAtSmsSend::StartWritingPduLength called"));
- TInt pduLen = iSmsSendParam.iSmsTpdu.Length();
- iTxBuffer.Zero();
- iTxBuffer.Format(KSmsSendCommandPdu,pduLen);
- ClearBuffer();
- iPhoneGlobals.iAtManager->SetSolicitedAtCommand(this);
- iPhoneGlobals.iCommEngine->CommWrite(iTxBuffer);
- StartTimer(iWriteTimeOut);
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::StartWritingPdu
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::StartWritingPdu()
- {
- LOGTEXT(_L8("CAtSmsSend::StartWritingPdu called"));
- iTxBuffer.Zero();
- iTxBuffer.Append(iMsgDataAscii);
- iTxBuffer.Append(KLtsyCtrlZChar);
- ClearBuffer();
- iPhoneGlobals.iAtManager->SetSolicitedAtCommand(this);
- iPhoneGlobals.iCommEngine->CommWrite(iTxBuffer);
- StartTimer(iWriteTimeOut);
- }
-
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::SetMessageParam
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::SetMessageParam(TSmsSendParam aMsgParam)
- {
- iSmsSendParam = aMsgParam;
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::EventSignal
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::EventSignal(TAtEventSource aEventSource, TInt aStatus)
- {
- LOGTEXT3(_L8("CAtSmsSend::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
- if(aStatus == KErrNone)
- {
- if(aEventSource == EWriteCompletion)
- {
- LOGTEXT(_L8("CAtSmsSend::EventSignal,EWriteCompletion!"));
- return;
- }
- else
- {
- if( iState == ESetPDULengthComplete )
- {
- if(iError==KErrNone)
- {
- iState = ESendPDUComplete;
- Complete();
- StartWritingPdu();
- return;
- }
- }
- }
- aStatus = iError;
- }
- Complete();
- iPhoneGlobals.iEventSignalActive = EFalse;
- iCtsyDispatcherCallback.CallbackSmsSendSmsMessageComp(aStatus,iSmsSendResponse.iValRef,
- iSmsSendResponse.iSubmitReport);
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::ParseResponseL
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::ParseResponseL(const TDesC8& /*aResponseBuf*/)
- {
- LOGTEXT(_L8("CAtSmsSend::ParseResponseL called!"));
- if(iState == ESetPDULengthComplete)
- {
- if(CurrentLine().MatchF(KSmsEnterPduResponse) != KErrNotFound)
- {
- iError = KErrNone;
- }
- else
- {
- iError = KErrNotFound;
- }
- }
- else
- {
- iError = KErrNone;
- TPtrC8 responseBuf;
- responseBuf.Set(Buffer());
- TInt pos = responseBuf.FindF(KCMGSResponseString);
- if (pos == KErrNotFound)
- {
- LOGTEXT(_L8("CAtSmsSend::ParseCMGSResponse \"+CMGS:\" not found"));
- iError = KErrNotFound;
- return;
- }
-
- // Locate the message reference number
- // (ie. read in all digits form the first found to the end of the string)
- const TInt bufLength=responseBuf.Length();
- pos += KCMGSResponseString().Length();
- while(pos<bufLength && !(TChar(responseBuf[pos]).IsDigit()))
- ++pos;
- if(pos == bufLength)
- {
- LOGTEXT(_L8("CAtSmsSend::ParseCMGSResponse cannot find any digits after \"+CMS:\" "));
- iError = KErrNotFound;
- return;
- }
-
- // Read message number and store in clients data structure
- TPtrC8 ptr = responseBuf.Mid(pos);
- TLex8 lex(ptr);
- TUint16 val;
- TInt ret = lex.Val(val,EDecimal);
- if(ret != KErrNone)
- {
- LOGTEXT(_L8("CAtSmsSend::ParseCMGSResponse cannot read Message Reference Number"));
- iError = ret;
- return;
- }
- iSmsSendResponse.iValRef = val;
- LOGTEXT2(_L8("CAtSmsSend Message reference number %d"),val);
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::ConfirmSca
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-TInt CAtSmsSend::ConfirmSca()
- {
- if(iSmsSendParam.iGsmServiceCentre.iTelNumber.Length() == 0)
- {
- return KErrNotFound;
- }
- if(!(iSmsSendParam.iGsmServiceCentre.iNumberPlan == RMobilePhone::EIsdnNumberPlan &&
- (iSmsSendParam.iGsmServiceCentre.iTypeOfNumber == RMobilePhone::EInternationalNumber ||
- iSmsSendParam.iGsmServiceCentre.iTypeOfNumber == RMobilePhone::EUnknownNumber)))
- {
- return KErrCorrupt;
- }
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::BeginTimer
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::BeginTimer()
- {
- LOGTEXT(_L8("CAtSmsSend::BeginTimer() called"));
-
- if (iCallbackTimer->IsActive())
- {
- iCallbackTimer->Cancel();
- }
- iCallbackTimer->After(KLtsyOnePause);
- }
-
-// ---------------------------------------------------------------------------
-// CAtSmsSend::TimerRun
-// other items were commented in a header
-// ---------------------------------------------------------------------------
-void CAtSmsSend::TimerRun(TInt aError)
- {
- LOGTEXT(_L8("CAtSmsSend::TimerRun() called"));
- if(aError == KErrNone)
- {
- Complete();
- iPhoneGlobals.iEventSignalActive = EFalse;
- iCtsyDispatcherCallback.CallbackSmsSendSmsMessageComp(iCallbackVal,iSmsSendResponse.iValRef,
- iSmsSendResponse.iSubmitReport);
- }
- }
-
-//End of file