From 214d998b6347d845d78e58f8683422630dba0c36 Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Mon, 28 Sep 2009 14:49:44 +0200 Subject: [PATCH] debugger: let debugger console directly communicate with TRK --- src/plugins/debugger/gdb/trkgdbadapter.cpp | 20 ++++++++++++++++---- src/plugins/debugger/gdb/trkgdbadapter.h | 1 + 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/plugins/debugger/gdb/trkgdbadapter.cpp b/src/plugins/debugger/gdb/trkgdbadapter.cpp index 3853978c1d1..ed0f9eb1eef 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/trkgdbadapter.cpp @@ -133,8 +133,7 @@ TrkGdbAdapter::TrkGdbAdapter(GdbEngine *engine, const TrkOptionsPtr &options) : connect(&m_trkDevice, SIGNAL(error(QString)), this, SLOT(handleTrkError(QString))); - if (m_verbose > 1) - m_trkDevice.setVerbose(true); + m_trkDevice.setVerbose(m_verbose); m_trkDevice.setSerialFrame(m_options->mode != TrkOptions::BlueTooth); connect(&m_trkDevice, SIGNAL(logMessage(QString)), @@ -1202,7 +1201,7 @@ void TrkGdbAdapter::handleReadMemoryUnbuffered(const TrkResult &result) void TrkGdbAdapter::handleStepInto(const TrkResult &result) { if (result.errorCode()) { - logMessage("ERROR: " + result.errorString() + "in handleStepInto"); + logMessage("ERROR: " + result.errorString() + " in handleStepInto"); // Try fallback with Step Over QByteArray ba = trkStepRangeMessage(0x11); // options "step over" sendTrkMessage(0x19, TrkCB(handleStepInto2), ba, "Step range"); @@ -1215,7 +1214,7 @@ void TrkGdbAdapter::handleStepInto(const TrkResult &result) void TrkGdbAdapter::handleStepInto2(const TrkResult &result) { if (result.errorCode()) { - logMessage("ERROR: " + result.errorString() + "in handleStepInto2"); + logMessage("ERROR: " + result.errorString() + " in handleStepInto2"); // Try fallback with Continue sendTrkMessage(0x18, TrkCallback(), trkContinueMessage(), "CONTINUE"); //sendGdbServerMessage("S05", "Stepping finished"); @@ -1625,9 +1624,22 @@ QByteArray TrkGdbAdapter::readAllStandardOutput() void TrkGdbAdapter::write(const QByteArray &data) { + // Write magic packets directly to TRK. + if (data.startsWith("@#")) { + QByteArray ba = QByteArray::fromHex(data.mid(2)); + qDebug() << "Writing: " << quoteUnprintableLatin1(ba); + if (ba.size() >= 1) + sendTrkMessage(ba.at(0), TrkCB(handleDirectTrk), ba.mid(1)); + return; + } m_gdbProc.write(data, data.size()); } +void TrkGdbAdapter::handleDirectTrk(const TrkResult &result) +{ + logMessage("HANDLE DIRECT TRK: " + stringFromArray(result.data)); +} + void TrkGdbAdapter::setWorkingDirectory(const QString &dir) { m_gdbProc.setWorkingDirectory(dir); diff --git a/src/plugins/debugger/gdb/trkgdbadapter.h b/src/plugins/debugger/gdb/trkgdbadapter.h index 5b3ea34f8d3..78653d02a8b 100644 --- a/src/plugins/debugger/gdb/trkgdbadapter.h +++ b/src/plugins/debugger/gdb/trkgdbadapter.h @@ -150,6 +150,7 @@ public: void handleDisconnect(const TrkResult &result); void handleDeleteProcess(const TrkResult &result); void handleDeleteProcess2(const TrkResult &result); + void handleDirectTrk(const TrkResult &response); void handleAndReportCreateProcess(const TrkResult &result); void handleAndReportReadRegistersAfterStop(const TrkResult &result); -- GitLab