diff -r eede1356aa52 -r 0ba996a9b75d cbsatplugin/atmisccmdplugin/src/cgmrcommandhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cbsatplugin/atmisccmdplugin/src/cgmrcommandhandler.cpp Thu Aug 19 10:05:41 2010 +0300 @@ -0,0 +1,123 @@ +/* + * 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 + +#include "cgmrcommandhandler.h" + +#include "atmisccmdpluginconsts.h" +#include "debug.h" + +CCGMRCommandHandler* CCGMRCommandHandler::NewL(MATMiscCmdPlugin* aCallback, TAtCommandParser& aATCmdParser, RMobilePhone& aPhone) + { + TRACE_FUNC_ENTRY + CCGMRCommandHandler* self = new (ELeave) CCGMRCommandHandler(aCallback, aATCmdParser, aPhone); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + TRACE_FUNC_EXIT + return self; + } + +CCGMRCommandHandler::CCGMRCommandHandler(MATMiscCmdPlugin* aCallback, TAtCommandParser& aATCmdParser, RMobilePhone& aPhone) : + CATCmdSyncBase(aCallback, aATCmdParser, aPhone) + { + TRACE_FUNC_ENTRY + TRACE_FUNC_EXIT + } + +void CCGMRCommandHandler::ConstructL() + { + TRACE_FUNC_ENTRY + iReply.CreateL(KDefaultCmdBufLength); + TRACE_FUNC_EXIT + } + +CCGMRCommandHandler::~CCGMRCommandHandler() + { + TRACE_FUNC_ENTRY + iReply.Close(); + TRACE_FUNC_EXIT + } + +void CCGMRCommandHandler::HandleCommand(const TDesC8& /*aCmd*/, RBuf8& /*aReply*/, TBool /*aReplyNeeded*/) + { + TRACE_FUNC_ENTRY + + TAtCommandParser::TCommandHandlerType cmdHandlerType = iATCmdParser.CommandHandlerType(); + + switch (cmdHandlerType) + { + case (TAtCommandParser::ECmdHandlerTypeTest): + { + iCallback->CreateReplyAndComplete( EReplyTypeOk ); + break; + } + case (TAtCommandParser::ECmdHandlerTypeBase): + { + TInt replyType = EReplyTypeOk; + if (iReply.Length() == 0) + { + replyType = GetSoftwareVersion(); + } + + if ( (EReplyTypeOk != replyType) ) + { + iCallback->CreateCMEReplyAndComplete(KErrUnknown); + } + else + { + iCallback->CreateReplyAndComplete( EReplyTypeOk, iReply); + } + break; + } + default: + { + iCallback->CreateReplyAndComplete(EReplyTypeError); + break; + } + } + TRACE_FUNC_EXIT + } + +TInt CCGMRCommandHandler::GetSoftwareVersion() + { + TRACE_FUNC_ENTRY + iReply.Append( KCRLF ); + + // Get software version (e.g. 010.009) + TBuf swVersion; + TInt errorCode = SysUtil::GetSWVersion( swVersion ); + + if (KErrNone == errorCode) + { + TLex8 lex(swVersion.Collapse()); + lex.SkipCharacters(); + TPtrC8 token = lex.MarkedToken(); + iReply.Append(token); + + iReply.Append( KCRLF ); + TRACE_FUNC_EXIT + return EReplyTypeOk; + } + else + { + TRACE_FUNC_EXIT + return EReplyTypeError; + } + } + + +