cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorewrite.cpp
branchRCL_3
changeset 19 630d2f34d719
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorewrite.cpp	Tue Aug 31 16:23:08 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 <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mpbutil.h> 
+
+//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<KMaxNumberLen> tempNumber;
+	TBuf8<KMaxTextLen>   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