--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsatplugin/atmisccmdplugin/src/ussdsendmessageimpl.cpp Fri May 28 17:03:06 2010 +0300
@@ -0,0 +1,94 @@
+/* Copyright (c) 2010 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 :
+ *
+ */
+
+#include "ussdsendmessageimpl.h"
+
+#include "cusdcommandhandler.h"
+#include "debug.h"
+
+CUSSDSendMessageImpl* CUSSDSendMessageImpl::NewL(MUSSDCallback* aCallback,
+ RMobileUssdMessaging& aUssdSession)
+ {
+ TRACE_FUNC_ENTRY
+ CUSSDSendMessageImpl* self = new(ELeave) CUSSDSendMessageImpl(aCallback, aUssdSession);
+ TRACE_FUNC_EXIT
+ return self;
+ }
+
+CUSSDSendMessageImpl::CUSSDSendMessageImpl(MUSSDCallback* aCallback,
+ RMobileUssdMessaging& aUssdSession):
+ CActive(CActive::EPriorityStandard),
+ iCallback(aCallback),
+ iUssdSession(aUssdSession)
+ {
+ TRACE_FUNC_ENTRY
+ CActiveScheduler::Add(this);
+ TRACE_FUNC_EXIT
+ }
+
+void CUSSDSendMessageImpl::RunL()
+ {
+ TRACE_FUNC_ENTRY
+ iCallback->HandleSendMessageComplete(iStatus.Int());
+ TRACE_FUNC_EXIT
+ }
+
+void CUSSDSendMessageImpl::DoCancel()
+ {
+ TRACE_FUNC_ENTRY
+ iUssdSession.CancelAsyncRequest(EMobileUssdMessagingSendMessage);
+ TRACE_FUNC_EXIT
+ }
+
+TInt CUSSDSendMessageImpl::SendUSSDCmd(const TDesC8& aCmd,
+ RMobileUssdMessaging::TMobileUssdAttributesV1& aUSSDAttribute)
+ {
+ TRACE_FUNC_ENTRY
+ TInt retCode = KErrNone;
+ if(!IsActive())
+ {
+ // Get USSD messaging caps
+ RMobileUssdMessaging::TMobileUssdCapsV1 ussdCaps;
+ RMobileUssdMessaging::TMobileUssdCapsV1Pckg ussdCapsPckg(ussdCaps);
+
+ iUssdSession.GetCaps(ussdCapsPckg);
+ ussdCaps=ussdCapsPckg();
+
+ if(ussdCaps.iUssdFormat != RMobileUssdMessaging::KCapsPackedString)
+ {
+ retCode = KErrArgument;
+ }
+ else
+ {
+ // we only support packed strings?
+ aUSSDAttribute.iFormat = RMobileUssdMessaging::EFormatPackedString;
+ TPckg<RMobileUssdMessaging::TMobileUssdAttributesV1> msgAttributes(aUSSDAttribute);
+ iUssdSession.SendMessage(iStatus, aCmd, msgAttributes);
+ SetActive();
+ }
+ }
+ else
+ {
+ retCode = KErrInUse;
+ }
+ TRACE_FUNC_EXIT
+ return retCode;
+ }
+
+CUSSDSendMessageImpl::~CUSSDSendMessageImpl()
+ {
+ TRACE_FUNC_ENTRY
+ Cancel();
+ TRACE_FUNC_EXIT
+ }