diff -r 14460bf2a402 -r f50f4094acd7 cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorewrite.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorewrite.cpp Tue Jul 06 15:36:38 2010 +0300 @@ -0,0 +1,311 @@ +// 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 atphbkstorewrite.cpp +// This contains CAtPhbkStoreWrite which is use to write a phonebook Entry +// + +//system include +#include +#include +#include + +//user include +#include "atphbkstorewrite.h" +#include "mslogger.h" + +//constant defination +_LIT8(KPhbkStoreWrite,"AT+CPBW=%d,\"%S\",145,\"%S\"\r"); +_LIT8(KSelAdnPhonebook,"AT+CPBS=\"SM\"\r"); +_LIT8(KSelFdnPhonebook,"AT+CPBS=\"FD\"\r"); +const TInt KMaxNumberLen = 20; +const TInt KMaxTextLen = 14; + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::CAtPhbkStoreWrite +// other items were commented in a header +// --------------------------------------------------------------------------- +CAtPhbkStoreWrite::CAtPhbkStoreWrite(CGlobalPhonemanager& aGloblePhone, + CCtsyDispatcherCallback& aCtsyDispatcherCallback) + :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback) + { + LOGTEXT(_L8("CAtPhbkStoreWrite::CAtPhbkStoreWrite called")); + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::~CAtPhbkStoreWrite +// other items were commented in a header +// --------------------------------------------------------------------------- +CAtPhbkStoreWrite::~CAtPhbkStoreWrite() + { + LOGTEXT(_L8("CAtPhbkStoreWrite::~CAtPhbkStoreWrite called")); + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::NewLC +// other items were commented in a header +// --------------------------------------------------------------------------- +CAtPhbkStoreWrite* CAtPhbkStoreWrite::NewLC(CGlobalPhonemanager& aGloblePhone, + CCtsyDispatcherCallback& aCtsyDispatcherCallback) + { + CAtPhbkStoreWrite* self = new (ELeave)CAtPhbkStoreWrite(aGloblePhone, + aCtsyDispatcherCallback); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::NewL +// other items were commented in a header +// --------------------------------------------------------------------------- +CAtPhbkStoreWrite* CAtPhbkStoreWrite::NewL(CGlobalPhonemanager& aGloblePhone, + CCtsyDispatcherCallback& aCtsyDispatcherCallback) + { + CAtPhbkStoreWrite* self=CAtPhbkStoreWrite::NewLC(aGloblePhone, + aCtsyDispatcherCallback); + CleanupStack::Pop(self); + return self; + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::ConstructL +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::ConstructL() + { + CAtCommandBase::ConstructL(); + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::SetPhonebookType +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType) + { + iPhoneBookType = aPhonebookType; + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::SetPhonebookEntry +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::SetPhonebookEntryL(const TDesC8& aEntry) + { + TInt ret = KErrNone; + TInt retVal = KErrNone; + TUint8 tmpTagValue; + TPtrC16 textPtr; + TUint8 tagValue; + CPhoneBookBuffer::TPhBkTagType tagType; + TUint8 newEntryTag; + newEntryTag = RMobilePhoneBookStore::ETagPBNewEntry; + TUint16 index; + TPtrC16 numPtr; + TPtrC16 type; + // used to write phonebook data + CPhoneBookBuffer* pbBuffer = new(ELeave) CPhoneBookBuffer(); + CleanupStack::PushL(pbBuffer); + + // Set pointer to constant descriptor + TPtr8 dataToSeparate( NULL, 0, 0 ); + dataToSeparate.Set( (TUint8*)aEntry.Ptr(), + aEntry.Length(), aEntry.Length() ); + + // Init and get entry info + pbBuffer->Set( &dataToSeparate ); + pbBuffer->StartRead(); + ret = pbBuffer->GetTagAndType( tmpTagValue, tagType ); + // Ensure, that there is new entry containing data + if ( KErrNone == ret && tmpTagValue == newEntryTag ) + { + // Get the first value from TLV data + ret = pbBuffer->GetTagAndType( tagValue, tagType ); + while(ret == KErrNone) + { + switch ( tagValue ) + { + // Get name + case RMobilePhoneBookStore::ETagPBText: + retVal = pbBuffer->GetValue( textPtr ); + if(retVal == KErrNone) + { + iPhbkEntry.iText = textPtr; + } + break; + // Get number + case RMobilePhoneBookStore::ETagPBNumber: + ret = pbBuffer->GetValue( numPtr ); + if(retVal == KErrNone) + { + iPhbkEntry.iNumber = numPtr; + } + break; + // get the index + case RMobilePhoneBookStore::ETagPBAdnIndex: + retVal = pbBuffer->GetValue(index); + if( retVal == KErrNone ) + { + iPhbkEntry.iIndex = index; + } + break; + // get ETagPBTonNpi , not needed + case RMobilePhoneBookStore::ETagPBTonNpi: + retVal = pbBuffer->GetValue(type); + break; + default: + break; + }//switch + ret = pbBuffer->GetTagAndType( tagValue, tagType ); + }//while + } + CleanupStack::PopAndDestroy(pbBuffer); + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::StartRequest +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::StartRequest() + { + GetMaxNumberLen(); + ExecuteCommand(); + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::ExecuteCommand +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::ExecuteCommand() + { + LOGTEXT(_L8("CAtPhbkStoreWrite::ExecuteCommand called")); + iState = ESetStoreName; + iTxBuffer.Zero(); + if( iPhoneBookType == DispatcherPhonebook::EIccAdn ) + { + iTxBuffer.Copy(KSelAdnPhonebook); + } + else if( iPhoneBookType == DispatcherPhonebook::EIccFdn ) + { + iTxBuffer.Copy(KSelFdnPhonebook); + } + Write(); + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::WriteEntry +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::WriteEntry() + { + LOGTEXT(_L8("CAtPhbkStoreWrite::WriteEntry callded")); + iPhoneGlobals.iEventSignalActive = ETrue; + iTxBuffer.Zero(); + TBuf8 tempNumber; + TBuf8 tempText; + //covert 16 bit to 8 bit + tempNumber.Copy(iPhbkEntry.iNumber); + tempText.Copy(iPhbkEntry.iText); + iTxBuffer.Format(KPhbkStoreWrite,iPhbkEntry.iIndex, + &tempNumber,&tempText); + Write(); + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::EventSignal +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::EventSignal(TAtEventSource aEventSource, TInt aStatus) + { + LOGTEXT3(_L8("CAtPhbkStoreWrite::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource); + + if(aStatus != KErrNone) + { + Complete(); + iPhoneGlobals.iEventSignalActive = EFalse; + iCtsyDispatcherCallback.CallbackPhonebookStoreWriteEntryComp(aStatus,iPhoneBookType,iPhbkEntry.iIndex,iMaxLen); + } + else + { + if( aEventSource== EWriteCompletion ) + { + if( iState==ESetStoreName ) + { + iState = ESetStoreNameComplete; + } + else if( iState==EWriteEntry ) + { + iState = EWriteEntryComplete; + } + } + else + { + if( iState==ESetStoreNameComplete ) + { + Complete(); + iPhoneGlobals.iEventSignalActive = EFalse; + if( iError==KErrNone ) + { + iState = EWriteEntry; + WriteEntry(); + } + else + { + iCtsyDispatcherCallback.CallbackPhonebookStoreWriteEntryComp(iError,iPhoneBookType, + iPhbkEntry.iIndex,iMaxLen); + } + } + else if( iState== EWriteEntryComplete) + { + Complete(); + iPhoneGlobals.iEventSignalActive = EFalse; + iCtsyDispatcherCallback.CallbackPhonebookStoreWriteEntryComp(iError,iPhoneBookType, + iPhbkEntry.iIndex,iMaxLen); + } + } + } + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::ParseResponseL +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::ParseResponseL(const TDesC8& /*aResponseBuf*/) + { + if (CurrentLine().Match(KLtsyOkString) == 0) + { + iError = KErrNone; + } + else + { + iError = KErrGeneral; + } + } + +// --------------------------------------------------------------------------- +// CAtPhbkStoreWrite::GetMaxNumberLen +// other items were commented in a header +// --------------------------------------------------------------------------- +void CAtPhbkStoreWrite::GetMaxNumberLen() + { + if( iPhoneBookType == DispatcherPhonebook::EIccAdn ) + { + iMaxLen = iPhoneGlobals.iPhonebookStoreInfo.iAdnMaximumNumberLength; + } + else if( iPhoneBookType == DispatcherPhonebook::EIccFdn ) + { + iMaxLen = iPhoneGlobals.iPhonebookStoreInfo.iFdnMaximumNumberLength; + } + } + +//End of file