diff -r 000000000000 -r 7f656887cf89 commands/btraceout/btraceout.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/commands/btraceout/btraceout.cpp Wed Jun 23 15:52:26 2010 +0100 @@ -0,0 +1,190 @@ +// btraceout.cpp +// +// Copyright (c) 2009 - 2010 Accenture. All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the "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: +// Accenture - Initial contribution +// + +#include +#include + +using namespace IoUtils; + +class CCmdBtraceout : public CCommandBase + { +public: + static CCommandBase* NewLC(); + ~CCmdBtraceout(); +private: + CCmdBtraceout(); +private: // From CCommandBase. + virtual const TDesC& Name() const; + virtual void DoRunL(); + virtual void ArgumentsL(RCommandArgumentList& aArguments); + virtual void OptionsL(RCommandOptionList& aOptions); +private: + TUint iCategory; + TUint iSubcategory; + TUint iArg1; + TUint iArg2; + TUint iArg3; + TBool iStdin; + TUint iFilterUid; + TBool iTruncate; + }; + +CCommandBase* CCmdBtraceout::NewLC() + { + CCmdBtraceout* self = new(ELeave) CCmdBtraceout(); + CleanupStack::PushL(self); + self->BaseConstructL(); + return self; + } + +CCmdBtraceout::~CCmdBtraceout() + { + } + +CCmdBtraceout::CCmdBtraceout() + { + } + +const TDesC& CCmdBtraceout::Name() const + { + _LIT(KName, "btraceout"); + return KName; + } + +void CCmdBtraceout::ArgumentsL(RCommandArgumentList& aArguments) + { + aArguments.AppendUintL(iCategory, _L("category")); + aArguments.AppendUintL(iSubcategory, _L("subcategory")); + aArguments.AppendUintL(iArg1, _L("arg_1")); + aArguments.AppendUintL(iArg2, _L("arg_2")); + aArguments.AppendUintL(iArg3, _L("arg_3")); + } + +void CCmdBtraceout::OptionsL(RCommandOptionList& aOptions) + { + aOptions.AppendBoolL(iStdin, _L("stdin")); + aOptions.AppendBoolL(iTruncate, _L("truncate")); + aOptions.AppendUintL(iFilterUid, _L("filter")); + } + + +EXE_BOILER_PLATE(CCmdBtraceout) + +void CCmdBtraceout::DoRunL() + { + if (iStdin) + { + CTextBuffer* buffer = CTextBuffer::NewLC(512); + Stdin().SetReadMode(RIoReadHandle::EOneOrMore); + TBuf<256> buf; + while (Stdin().Read(buf) == KErrNone) + { + buffer->AppendL(buf); + } + RBuf8 data; + data.CreateL(buffer->Length()); + data.Copy(buffer->Descriptor()); // This will collapse us back to real 8-bit data + + if (iTruncate) + { + if (iOptions.IsPresent(&iFilterUid)) + { + if (iArguments.IsPresent(3)) + { + PrintWarning(_L("Ignoring 'arg_2' (%u) and all following arguments"), iArg2); + } + BTraceFilteredN(iCategory, iSubcategory, iFilterUid, iArg1, data.Ptr(), data.Size()); + } + else + { + if (iArguments.IsPresent(3)) + { + PrintWarning(_L("Ignoring 'arg_3' (%u)"), iArg3); + } + BTraceN(iCategory, iSubcategory, iArg1, iArg2, data.Ptr(), data.Size()); + } + } + else + { + if (iOptions.IsPresent(&iFilterUid)) + { + if (iArguments.IsPresent(2)) + { + PrintWarning(_L("Ignoring 'arg_1' (%u) and all following arguments"), iArg1); + } + BTraceFilteredBig(iCategory, iSubcategory, iFilterUid, data.Ptr(), data.Size()); + } + else + { + if (iArguments.IsPresent(3)) + { + PrintWarning(_L("Ignoring 'arg_2' (%u) and all following arguments"), iArg2); + } + BTraceBig(iCategory, iSubcategory, iArg1, data.Ptr(), data.Size()); + } + } + + data.Close(); + CleanupStack::PopAndDestroy(buffer); + } + else + { + if (iArguments.IsPresent(4)) + { + if (iOptions.IsPresent(&iFilterUid)) + { + if (iArguments.IsPresent(3)) + { + PrintWarning(_L("Ignoring 'arg_3' (%u)"), iArg3); + } + BTraceFiltered12(iCategory, iSubcategory, iFilterUid, iArg1, iArg2); + } + else + { + BTrace12(iCategory, iSubcategory, iArg1, iArg2, iArg3); + } + } + else if (iArguments.IsPresent(3)) + { + if (iOptions.IsPresent(&iFilterUid)) + { + BTraceFiltered12(iCategory, iSubcategory, iFilterUid, iArg1, iArg2); + } + else + { + BTrace8(iCategory, iSubcategory, iArg1, iArg2); + } + } + else if (iArguments.IsPresent(2)) + { + if (iOptions.IsPresent(&iFilterUid)) + { + BTraceFiltered8(iCategory, iSubcategory, iFilterUid, iArg1); + } + else + { + BTrace4(iCategory, iSubcategory, iArg1); + } + } + else + { + if (iOptions.IsPresent(&iFilterUid)) + { + BTraceFiltered4(iCategory, iSubcategory, iFilterUid); + } + else + { + BTrace0(iCategory, iSubcategory); + } + } + } + }