forked from qt-creator/qt-creator
debugger: rename TrkFunctor1 into Callback
This commit is contained in:
@@ -87,7 +87,6 @@ include(cdb/cdb.pri)
|
|||||||
include(gdb/gdb.pri)
|
include(gdb/gdb.pri)
|
||||||
include(script/script.pri)
|
include(script/script.pri)
|
||||||
include(tcf/tcf.pri)
|
include(tcf/tcf.pri)
|
||||||
include(symbian/symbian.pri)
|
|
||||||
include(shared/shared.pri)
|
include(shared/shared.pri)
|
||||||
|
|
||||||
OTHER_FILES += Debugger.pluginspec
|
OTHER_FILES += Debugger.pluginspec
|
||||||
|
|||||||
@@ -27,50 +27,50 @@
|
|||||||
**
|
**
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#ifndef DEBUGGER_TRK_FUNCTOR_H
|
#ifndef DEBUGGER_CALLBACK_H
|
||||||
#define DEBUGGER_TRK_FUNCTOR_H
|
#define DEBUGGER_CALLBACK_H
|
||||||
|
|
||||||
#include <QtGlobal>
|
#include <QtGlobal>
|
||||||
|
|
||||||
|
namespace Debugger {
|
||||||
// FIXME: rename into something less TRK-specific
|
|
||||||
|
|
||||||
namespace trk {
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
/* Helper class for the 1-argument functor:
|
/* Helper class for the 1-argument functor:
|
||||||
* Cloneable base class for the implementation which is
|
* Cloneable base class for the implementation which is
|
||||||
* invokeable with the argument. */
|
* invokeable with the argument. */
|
||||||
template <class Argument>
|
template <class Argument>
|
||||||
class TrkFunctor1ImplBase {
|
class CallbackImplBase
|
||||||
Q_DISABLE_COPY(TrkFunctor1ImplBase)
|
{
|
||||||
|
Q_DISABLE_COPY(CallbackImplBase)
|
||||||
public:
|
public:
|
||||||
TrkFunctor1ImplBase() {}
|
CallbackImplBase() {}
|
||||||
virtual TrkFunctor1ImplBase *clone() const = 0;
|
virtual CallbackImplBase *clone() const = 0;
|
||||||
virtual void invoke(Argument a) = 0;
|
virtual void invoke(Argument a) = 0;
|
||||||
virtual ~TrkFunctor1ImplBase() {}
|
virtual ~CallbackImplBase() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Helper class for the 1-argument functor: Implementation for
|
/* Helper class for the 1-argument functor: Implementation for
|
||||||
* a class instance with a member function pointer. */
|
* a class instance with a member function pointer. */
|
||||||
template <class Klass, class Argument>
|
template <class Class, class Argument>
|
||||||
class TrkFunctor1MemberPtrImpl : public TrkFunctor1ImplBase<Argument> {
|
class CallbackMemberPtrImpl : public CallbackImplBase<Argument>
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
typedef void (Klass::*MemberFuncPtr)(Argument);
|
typedef void (Class::*MemberFuncPtr)(Argument);
|
||||||
|
|
||||||
explicit TrkFunctor1MemberPtrImpl(Klass *instance,
|
CallbackMemberPtrImpl(Class *instance,
|
||||||
MemberFuncPtr memberFunc) :
|
MemberFuncPtr memberFunc) :
|
||||||
m_instance(instance),
|
m_instance(instance),
|
||||||
m_memberFunc(memberFunc) {}
|
m_memberFunc(memberFunc) {}
|
||||||
|
|
||||||
virtual TrkFunctor1ImplBase<Argument> *clone() const
|
virtual CallbackImplBase<Argument> *clone() const
|
||||||
{
|
{
|
||||||
return new TrkFunctor1MemberPtrImpl<Klass, Argument>(m_instance, m_memberFunc);
|
return new CallbackMemberPtrImpl<Class, Argument>(m_instance, m_memberFunc);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void invoke(Argument a)
|
virtual void invoke(Argument a)
|
||||||
{ (m_instance->*m_memberFunc)(a); }
|
{ (m_instance->*m_memberFunc)(a); }
|
||||||
private:
|
private:
|
||||||
Klass *m_instance;
|
Class *m_instance;
|
||||||
MemberFuncPtr m_memberFunc;
|
MemberFuncPtr m_memberFunc;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -85,33 +85,34 @@ public:
|
|||||||
};
|
};
|
||||||
...
|
...
|
||||||
Foo foo;
|
Foo foo;
|
||||||
TrkFunctor1<const std::string &> f1(&foo, &Foo::print);
|
Callback<const std::string &> f1(&foo, &Foo::print);
|
||||||
f1("test");
|
f1("test");
|
||||||
\endcode */
|
\endcode */
|
||||||
|
|
||||||
template <class Argument>
|
template <class Argument>
|
||||||
class TrkFunctor1 {
|
class Callback
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
TrkFunctor1() : m_impl(0) {}
|
Callback() : m_impl(0) {}
|
||||||
|
|
||||||
template <class Klass>
|
template <class Class>
|
||||||
TrkFunctor1(Klass *instance,
|
Callback(Class *instance, void (Class::*memberFunc)(Argument)) :
|
||||||
void (Klass::*memberFunc)(Argument)) :
|
m_impl(new Internal::CallbackMemberPtrImpl<Class,Argument>(instance, memberFunc))
|
||||||
m_impl(new Internal::TrkFunctor1MemberPtrImpl<Klass,Argument>(instance, memberFunc)) {}
|
{}
|
||||||
|
|
||||||
~TrkFunctor1()
|
~Callback()
|
||||||
{
|
{
|
||||||
clean();
|
clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
TrkFunctor1(const TrkFunctor1 &rhs) :
|
Callback(const Callback &rhs) :
|
||||||
m_impl(0)
|
m_impl(0)
|
||||||
{
|
{
|
||||||
if (rhs.m_impl)
|
if (rhs.m_impl)
|
||||||
m_impl = rhs.m_impl->clone();
|
m_impl = rhs.m_impl->clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
TrkFunctor1 &operator=(const TrkFunctor1 &rhs)
|
Callback &operator=(const Callback &rhs)
|
||||||
{
|
{
|
||||||
if (this != &rhs) {
|
if (this != &rhs) {
|
||||||
clean();
|
clean();
|
||||||
@@ -121,7 +122,7 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline bool isNull() const { return m_impl == 0; }
|
bool isNull() const { return m_impl == 0; }
|
||||||
operator bool() const { return !isNull(); }
|
operator bool() const { return !isNull(); }
|
||||||
|
|
||||||
void operator()(Argument a)
|
void operator()(Argument a)
|
||||||
@@ -139,9 +140,9 @@ private:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Internal::TrkFunctor1ImplBase<Argument> *m_impl;
|
Internal::CallbackImplBase<Argument> *m_impl;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace trk
|
} // namespace Debugger
|
||||||
|
|
||||||
#endif // _TRK_FUNCTOR_H_
|
#endif // DEBUGGER_CALLBACK_H
|
||||||
@@ -3,11 +3,21 @@ HEADERS += \
|
|||||||
$$PWD/gdbmi.h \
|
$$PWD/gdbmi.h \
|
||||||
$$PWD/gdbengine.h \
|
$$PWD/gdbengine.h \
|
||||||
$$PWD/gdboptionspage.h \
|
$$PWD/gdboptionspage.h \
|
||||||
|
$$PWD/callback.h \
|
||||||
|
$$PWD/trkutils.h \
|
||||||
|
$$PWD/trkclient.h \
|
||||||
|
$$PWD/symbianadapter.h \
|
||||||
|
#$$PWD/gdboptionspage.h \
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
$$PWD/gdbmi.cpp \
|
$$PWD/gdbmi.cpp \
|
||||||
$$PWD/gdbengine.cpp \
|
$$PWD/gdbengine.cpp \
|
||||||
$$PWD/gdboptionspage.cpp \
|
$$PWD/gdboptionspage.cpp \
|
||||||
|
$$PWD/trkutils.cpp \
|
||||||
|
$$PWD/trkclient.cpp \
|
||||||
|
$$PWD/symbianadapter.cpp \
|
||||||
|
$$PWD/symbianengine.cpp \
|
||||||
|
#$$PWD/gdboptionspage.cpp \
|
||||||
|
|
||||||
FORMS += $$PWD/gdboptionspage.ui
|
FORMS += $$PWD/gdboptionspage.ui
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#include "symbianadapter.h"
|
#include "symbianadapter.h"
|
||||||
#ifndef STANDALONE_RUNNER
|
#ifndef STANDALONE_RUNNER
|
||||||
#include "gdb/gdbengine.h"
|
#include "gdbengine.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TrkCB(s) TrkCallback(this, &SymbianAdapter::s)
|
#define TrkCB(s) TrkCallback(this, &SymbianAdapter::s)
|
||||||
@@ -75,7 +75,7 @@ SymbianAdapter::SymbianAdapter()
|
|||||||
m_gdbAckMode = true;
|
m_gdbAckMode = true;
|
||||||
m_verbose = 2;
|
m_verbose = 2;
|
||||||
m_serialFrame = false;
|
m_serialFrame = false;
|
||||||
m_bufferedMemoryRead = true;
|
m_bufferedMemoryRead = false;
|
||||||
m_rfcommDevice = "/dev/rfcomm0";
|
m_rfcommDevice = "/dev/rfcomm0";
|
||||||
|
|
||||||
uid_t userId = getuid();
|
uid_t userId = getuid();
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
#include "trkutils.h"
|
#include "trkutils.h"
|
||||||
#include "trkclient.h"
|
#include "trkclient.h"
|
||||||
#include "../gdb/gdbprocessbase.h"
|
#include "gdbprocessbase.h"
|
||||||
|
|
||||||
#include <QtCore/QDebug>
|
#include <QtCore/QDebug>
|
||||||
#include <QtCore/QDir>
|
#include <QtCore/QDir>
|
||||||
@@ -79,8 +79,8 @@ class SymbianAdapter : public GdbProcessBase
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
typedef trk::TrkResult TrkResult;
|
typedef trk::TrkResult TrkResult;
|
||||||
typedef trk::TrkFunctor1<const TrkResult &> TrkCallback;
|
typedef Callback<const TrkResult &> TrkCallback;
|
||||||
typedef trk::TrkFunctor1<const GdbResult &> GdbCallback;
|
typedef Callback<const GdbResult &> GdbCallback;
|
||||||
|
|
||||||
SymbianAdapter();
|
SymbianAdapter();
|
||||||
~SymbianAdapter();
|
~SymbianAdapter();
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
#define QT_NO_CAST_FROM_ASCII
|
#define QT_NO_CAST_FROM_ASCII
|
||||||
|
|
||||||
#include "gdb/gdbengine.h"
|
#include "gdbengine.h"
|
||||||
#include "symbianadapter.h"
|
#include "symbianadapter.h"
|
||||||
#include "debuggermanager.h"
|
#include "debuggermanager.h"
|
||||||
|
|
||||||
|
|||||||
@@ -52,14 +52,17 @@ enum { TimerInterval = 100 };
|
|||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
|
|
||||||
// Format windows error from GetLastError() value: TODO: Use the one provided by the utisl lib.
|
// Format windows error from GetLastError() value:
|
||||||
|
// TODO: Use the one provided by the utils lib.
|
||||||
QString winErrorMessage(unsigned long error)
|
QString winErrorMessage(unsigned long error)
|
||||||
{
|
{
|
||||||
QString rc = QString::fromLatin1("#%1: ").arg(error);
|
QString rc = QString::fromLatin1("#%1: ").arg(error);
|
||||||
ushort *lpMsgBuf;
|
ushort *lpMsgBuf;
|
||||||
|
|
||||||
const int len = FormatMessage(
|
const int len = FormatMessage(
|
||||||
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
FORMAT_MESSAGE_ALLOCATE_BUFFER
|
||||||
|
| FORMAT_MESSAGE_FROM_SYSTEM
|
||||||
|
| FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||||
NULL, error, 0, (LPTSTR)&lpMsgBuf, 0, NULL);
|
NULL, error, 0, (LPTSTR)&lpMsgBuf, 0, NULL);
|
||||||
if (len) {
|
if (len) {
|
||||||
rc = QString::fromUtf16(lpMsgBuf, len);
|
rc = QString::fromUtf16(lpMsgBuf, len);
|
||||||
@@ -106,19 +109,17 @@ namespace trk {
|
|||||||
* of the answer. */
|
* of the answer. */
|
||||||
struct TrkMessage
|
struct TrkMessage
|
||||||
{
|
{
|
||||||
typedef TrkFunctor1<const TrkResult &> Callback;
|
|
||||||
|
|
||||||
explicit TrkMessage(byte code = 0u, byte token = 0u,
|
explicit TrkMessage(byte code = 0u, byte token = 0u,
|
||||||
Callback callback = Callback());
|
TrkCallback callback = TrkCallback());
|
||||||
|
|
||||||
byte code;
|
byte code;
|
||||||
byte token;
|
byte token;
|
||||||
QByteArray data;
|
QByteArray data;
|
||||||
QVariant cookie;
|
QVariant cookie;
|
||||||
Callback callback;
|
TrkCallback callback;
|
||||||
};
|
};
|
||||||
|
|
||||||
TrkMessage::TrkMessage(byte c, byte t, Callback cb) :
|
TrkMessage::TrkMessage(byte c, byte t, TrkCallback cb) :
|
||||||
code(c),
|
code(c),
|
||||||
token(t),
|
token(t),
|
||||||
callback(cb)
|
callback(cb)
|
||||||
@@ -135,12 +136,10 @@ TrkMessage::TrkMessage(byte c, byte t, Callback cb) :
|
|||||||
class TrkWriteQueue
|
class TrkWriteQueue
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef TrkDevice::Callback Callback;
|
|
||||||
|
|
||||||
TrkWriteQueue();
|
TrkWriteQueue();
|
||||||
|
|
||||||
// Enqueue messages.
|
// Enqueue messages.
|
||||||
void queueTrkMessage(byte code, Callback callback,
|
void queueTrkMessage(byte code, TrkCallback callback,
|
||||||
const QByteArray &data, const QVariant &cookie);
|
const QByteArray &data, const QVariant &cookie);
|
||||||
void queueTrkInitialPing();
|
void queueTrkInitialPing();
|
||||||
|
|
||||||
@@ -179,7 +178,7 @@ byte TrkWriteQueue::nextTrkWriteToken()
|
|||||||
return trkWriteToken;
|
return trkWriteToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrkWriteQueue::queueTrkMessage(byte code, Callback callback,
|
void TrkWriteQueue::queueTrkMessage(byte code, TrkCallback callback,
|
||||||
const QByteArray &data, const QVariant &cookie)
|
const QByteArray &data, const QVariant &cookie)
|
||||||
{
|
{
|
||||||
const byte token = code == TRK_WRITE_QUEUE_NOOP_CODE ?
|
const byte token = code == TRK_WRITE_QUEUE_NOOP_CODE ?
|
||||||
@@ -509,7 +508,7 @@ void TrkDevice::emitError(const QString &s)
|
|||||||
emit error(s);
|
emit error(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrkDevice::sendTrkMessage(byte code, Callback callback,
|
void TrkDevice::sendTrkMessage(byte code, TrkCallback callback,
|
||||||
const QByteArray &data, const QVariant &cookie)
|
const QByteArray &data, const QVariant &cookie)
|
||||||
{
|
{
|
||||||
d->queue.queueTrkMessage(code, callback, data, cookie);
|
d->queue.queueTrkMessage(code, callback, data, cookie);
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
#ifndef TRKDEVICE_H
|
#ifndef TRKDEVICE_H
|
||||||
#define TRKDEVICE_H
|
#define TRKDEVICE_H
|
||||||
|
|
||||||
#include "trkfunctor.h"
|
#include "callback.h"
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/QVariant>
|
#include <QtCore/QVariant>
|
||||||
@@ -60,6 +60,8 @@ struct TrkDevicePrivate;
|
|||||||
|
|
||||||
enum { TRK_WRITE_QUEUE_NOOP_CODE = 0x7f };
|
enum { TRK_WRITE_QUEUE_NOOP_CODE = 0x7f };
|
||||||
|
|
||||||
|
typedef Debugger::Callback<const TrkResult &> TrkCallback;
|
||||||
|
|
||||||
class TrkDevice : public QObject
|
class TrkDevice : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -83,9 +85,6 @@ public:
|
|||||||
|
|
||||||
bool write(const QByteArray &data, QString *errorMessage);
|
bool write(const QByteArray &data, QString *errorMessage);
|
||||||
|
|
||||||
// Construct as 'TrkWriteQueueDevice::Callback(instance, &Klass::method);'
|
|
||||||
typedef TrkFunctor1<const TrkResult &> Callback;
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void messageReceived(const trk::TrkResult &result);
|
void messageReceived(const trk::TrkResult &result);
|
||||||
// Emitted with the contents of messages enclosed in 07e, not for log output
|
// Emitted with the contents of messages enclosed in 07e, not for log output
|
||||||
@@ -102,7 +101,7 @@ public:
|
|||||||
|
|
||||||
// Enqueue a message with a notification callback.
|
// Enqueue a message with a notification callback.
|
||||||
void sendTrkMessage(unsigned char code,
|
void sendTrkMessage(unsigned char code,
|
||||||
Callback callBack = Callback(),
|
TrkCallback callBack = TrkCallback(),
|
||||||
const QByteArray &data = QByteArray(),
|
const QByteArray &data = QByteArray(),
|
||||||
const QVariant &cookie = QVariant());
|
const QVariant &cookie = QVariant());
|
||||||
|
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ class Adapter : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef TrkFunctor1<const TrkResult &> Callback;
|
typedef Debugger::Callback<const TrkResult &> TrkCallback;
|
||||||
|
|
||||||
Adapter();
|
Adapter();
|
||||||
~Adapter();
|
~Adapter();
|
||||||
@@ -129,7 +129,7 @@ private:
|
|||||||
|
|
||||||
bool openTrkPort(const QString &port, QString *errorMessage); // or server name for local server
|
bool openTrkPort(const QString &port, QString *errorMessage); // or server name for local server
|
||||||
void sendTrkMessage(byte code,
|
void sendTrkMessage(byte code,
|
||||||
Callback callBack = Callback(),
|
TrkCallback callBack = TrkCallback(),
|
||||||
const QByteArray &data = QByteArray(),
|
const QByteArray &data = QByteArray(),
|
||||||
const QVariant &cookie = QVariant(),
|
const QVariant &cookie = QVariant(),
|
||||||
bool invokeOnFailure = false);
|
bool invokeOnFailure = false);
|
||||||
@@ -261,9 +261,9 @@ void Adapter::startServer()
|
|||||||
|
|
||||||
sendTrkInitialPing();
|
sendTrkInitialPing();
|
||||||
sendTrkMessage(0x01); // Connect
|
sendTrkMessage(0x01); // Connect
|
||||||
sendTrkMessage(0x05, Callback(this, &Adapter::handleSupportMask));
|
sendTrkMessage(0x05, TrkCallback(this, &Adapter::handleSupportMask));
|
||||||
sendTrkMessage(0x06, Callback(this, &Adapter::handleCpuType));
|
sendTrkMessage(0x06, TrkCallback(this, &Adapter::handleCpuType));
|
||||||
sendTrkMessage(0x04, Callback(this, &Adapter::handleTrkVersions)); // Versions
|
sendTrkMessage(0x04, TrkCallback(this, &Adapter::handleTrkVersions)); // Versions
|
||||||
//sendTrkMessage(0x09); // Unrecognized command
|
//sendTrkMessage(0x09); // Unrecognized command
|
||||||
//sendTrkMessage(0x4a, 0,
|
//sendTrkMessage(0x4a, 0,
|
||||||
// "10 " + formatString("C:\\data\\usingdlls.sisx")); // Open File
|
// "10 " + formatString("C:\\data\\usingdlls.sisx")); // Open File
|
||||||
@@ -427,7 +427,7 @@ void Adapter::sendGdbMessage(const QByteArray &msg, const QByteArray &logNote)
|
|||||||
void Adapter::sendGdbMessageAfterSync(const QByteArray &msg, const QByteArray &logNote)
|
void Adapter::sendGdbMessageAfterSync(const QByteArray &msg, const QByteArray &logNote)
|
||||||
{
|
{
|
||||||
QByteArray ba = msg + char(1) + logNote;
|
QByteArray ba = msg + char(1) + logNote;
|
||||||
sendTrkMessage(TRK_WRITE_QUEUE_NOOP_CODE, Callback(this, &Adapter::reportToGdb), "", ba); // Answer gdb
|
sendTrkMessage(TRK_WRITE_QUEUE_NOOP_CODE, TrkCallback(this, &Adapter::reportToGdb), "", ba); // Answer gdb
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adapter::reportToGdb(const TrkResult &result)
|
void Adapter::reportToGdb(const TrkResult &result)
|
||||||
@@ -492,7 +492,7 @@ void Adapter::handleGdbResponse(const QByteArray &response)
|
|||||||
appendInt(&ba, 0); // end address
|
appendInt(&ba, 0); // end address
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
appendInt(&ba, m_session.tid);
|
appendInt(&ba, m_session.tid);
|
||||||
sendTrkMessage(0x18, Callback(), ba);
|
sendTrkMessage(0x18, TrkCallback(), ba);
|
||||||
// FIXME: should be triggered by real stop
|
// FIXME: should be triggered by real stop
|
||||||
//sendGdbMessageAfterSync("S11", "target stopped");
|
//sendGdbMessageAfterSync("S11", "target stopped");
|
||||||
}
|
}
|
||||||
@@ -508,7 +508,7 @@ void Adapter::handleGdbResponse(const QByteArray &response)
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
appendInt(&ba, m_session.tid);
|
appendInt(&ba, m_session.tid);
|
||||||
sendTrkMessage(0x18, Callback(this, &Adapter::handleSignalContinue), ba, signalNumber); // Continue
|
sendTrkMessage(0x18, TrkCallback(this, &Adapter::handleSignalContinue), ba, signalNumber); // Continue
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (response.startsWith("D")) {
|
else if (response.startsWith("D")) {
|
||||||
@@ -529,7 +529,7 @@ void Adapter::handleGdbResponse(const QByteArray &response)
|
|||||||
appendShort(&ba, RegisterCount - 1); // last register
|
appendShort(&ba, RegisterCount - 1); // last register
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
appendInt(&ba, m_session.tid);
|
appendInt(&ba, m_session.tid);
|
||||||
sendTrkMessage(0x12, Callback(this, &Adapter::handleAndReportReadRegisters), ba, QVariant(), true);
|
sendTrkMessage(0x12, TrkCallback(this, &Adapter::handleAndReportReadRegisters), ba, QVariant(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (response.startsWith("Hc")) {
|
else if (response.startsWith("Hc")) {
|
||||||
@@ -562,7 +562,7 @@ void Adapter::handleGdbResponse(const QByteArray &response)
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendByte(&ba, 0); // Sub-command: Delete Process
|
appendByte(&ba, 0); // Sub-command: Delete Process
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
sendTrkMessage(0x41, Callback(), ba, "Delete process"); // Delete Item
|
sendTrkMessage(0x41, TrkCallback(), ba, "Delete process"); // Delete Item
|
||||||
sendGdbMessageAfterSync("", "process killed");
|
sendGdbMessageAfterSync("", "process killed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -740,7 +740,7 @@ void Adapter::handleGdbResponse(const QByteArray &response)
|
|||||||
appendInt(&ba, m_snapshot.registers[RegisterPC] + 4); // end address
|
appendInt(&ba, m_snapshot.registers[RegisterPC] + 4); // end address
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
appendInt(&ba, m_session.tid);
|
appendInt(&ba, m_session.tid);
|
||||||
sendTrkMessage(0x19, Callback(), ba, "Step range");
|
sendTrkMessage(0x19, TrkCallback(), ba, "Step range");
|
||||||
// FIXME: should be triggered by "real" stop"
|
// FIXME: should be triggered by "real" stop"
|
||||||
//sendGdbMessageAfterSync("S05", "target halted");
|
//sendGdbMessageAfterSync("S05", "target halted");
|
||||||
}
|
}
|
||||||
@@ -762,7 +762,7 @@ void Adapter::handleGdbResponse(const QByteArray &response)
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendByte(&ba, 0); // Sub-command: Delete Process
|
appendByte(&ba, 0); // Sub-command: Delete Process
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
sendTrkMessage(0x41, Callback(), ba, "Delete process"); // Delete Item
|
sendTrkMessage(0x41, TrkCallback(), ba, "Delete process"); // Delete Item
|
||||||
sendGdbMessageAfterSync("", "process killed");
|
sendGdbMessageAfterSync("", "process killed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -789,7 +789,7 @@ void Adapter::handleGdbResponse(const QByteArray &response)
|
|||||||
// [1B 09 82 00 78 67 43 40 00 00 00 01 00 00 00 00
|
// [1B 09 82 00 78 67 43 40 00 00 00 01 00 00 00 00
|
||||||
// 00 00 01 B5 FF FF FF FF]
|
// 00 00 01 B5 FF FF FF FF]
|
||||||
const QByteArray ba = breakpointTrkMessage(addr, len, m_session.pid);
|
const QByteArray ba = breakpointTrkMessage(addr, len, m_session.pid);
|
||||||
sendTrkMessage(0x1B, Callback(this, &Adapter::handleAndReportSetBreakpoint), ba);
|
sendTrkMessage(0x1B, TrkCallback(this, &Adapter::handleAndReportSetBreakpoint), ba);
|
||||||
//m_session.toekn
|
//m_session.toekn
|
||||||
|
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
@@ -852,7 +852,7 @@ bool Adapter::openTrkPort(const QString &port, QString *errorMessage)
|
|||||||
return m_trkDevice->open(port, errorMessage);
|
return m_trkDevice->open(port, errorMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adapter::sendTrkMessage(byte code, Callback callBack,
|
void Adapter::sendTrkMessage(byte code, TrkCallback callBack,
|
||||||
const QByteArray &data, const QVariant &cookie, bool invokeOnFailure)
|
const QByteArray &data, const QVariant &cookie, bool invokeOnFailure)
|
||||||
{
|
{
|
||||||
if (m_useSocket)
|
if (m_useSocket)
|
||||||
@@ -874,13 +874,13 @@ void Adapter::sendTrkContinue()
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
appendInt(&ba, m_session.tid);
|
appendInt(&ba, m_session.tid);
|
||||||
sendTrkMessage(0x18, Callback(), ba, "CONTINUE");
|
sendTrkMessage(0x18, TrkCallback(), ba, "CONTINUE");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adapter::waitForTrkFinished()
|
void Adapter::waitForTrkFinished()
|
||||||
{
|
{
|
||||||
// initiate one last roundtrip to ensure all is flushed
|
// initiate one last roundtrip to ensure all is flushed
|
||||||
sendTrkMessage(0x0, Callback(this, &Adapter::handleWaitForFinished));
|
sendTrkMessage(0x0, TrkCallback(this, &Adapter::handleWaitForFinished));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adapter::sendTrkAck(byte token)
|
void Adapter::sendTrkAck(byte token)
|
||||||
@@ -1032,7 +1032,7 @@ void Adapter::setTrkBreakpoint(const Breakpoint &bp)
|
|||||||
// [1B 09 82 00 78 67 43 40 00 00 00 01 00 00 00 00
|
// [1B 09 82 00 78 67 43 40 00 00 00 01 00 00 00 00
|
||||||
// 00 00 01 B5 FF FF FF FF]
|
// 00 00 01 B5 FF FF FF FF]
|
||||||
const QByteArray ba = breakpointTrkMessage(m_session.codeseg + bp.offset, 1, m_session.pid);
|
const QByteArray ba = breakpointTrkMessage(m_session.codeseg + bp.offset, 1, m_session.pid);
|
||||||
sendTrkMessage(0x1B, Callback(this, &Adapter::handleSetTrkBreakpoint), ba);
|
sendTrkMessage(0x1B, TrkCallback(this, &Adapter::handleSetTrkBreakpoint), ba);
|
||||||
|
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
// Command: 0x80 Acknowledge
|
// Command: 0x80 Acknowledge
|
||||||
@@ -1088,10 +1088,10 @@ void Adapter::handleCreateProcess(const TrkResult &result)
|
|||||||
// Command: 0x42 Read Info
|
// Command: 0x42 Read Info
|
||||||
// [42 0C 00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F
|
// [42 0C 00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F
|
||||||
// 72 70 68 69 63 44 4C 4C 32 2E 64 6C 6C 00]
|
// 72 70 68 69 63 44 4C 4C 32 2E 64 6C 6C 00]
|
||||||
sendTrkMessage(0x42, Callback(this, &Adapter::handleReadInfo),
|
sendTrkMessage(0x42, TrkCallback(this, &Adapter::handleReadInfo),
|
||||||
"00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F "
|
"00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F "
|
||||||
"72 70 68 69 63 44 4C 4C 32 2E 64 6C 6C 00");
|
"72 70 68 69 63 44 4C 4C 32 2E 64 6C 6C 00");
|
||||||
//sendTrkMessage(0x42, Callback(this, &Adapter::handleReadInfo),
|
//sendTrkMessage(0x42, TrkCallback(this, &Adapter::handleReadInfo),
|
||||||
// "00 01 00 00 00 00");
|
// "00 01 00 00 00 00");
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
// Command: 0x80 Acknowledge
|
// Command: 0x80 Acknowledge
|
||||||
@@ -1103,7 +1103,7 @@ void Adapter::handleCreateProcess(const TrkResult &result)
|
|||||||
// Command: 0x42 Read Info
|
// Command: 0x42 Read Info
|
||||||
// [42 0D 00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F
|
// [42 0D 00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F
|
||||||
// 72 70 68 69 63 44 4C 4C 31 2E 64 6C 6C 00]
|
// 72 70 68 69 63 44 4C 4C 31 2E 64 6C 6C 00]
|
||||||
sendTrkMessage(0x42, Callback(this, &Adapter::handleReadInfo),
|
sendTrkMessage(0x42, TrkCallback(this, &Adapter::handleReadInfo),
|
||||||
"00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F "
|
"00 06 00 00 00 00 00 14 50 6F 6C 79 6D 6F "
|
||||||
"72 70 68 69 63 44 4C 4C 31 2E 64 6C 6C 00");
|
"72 70 68 69 63 44 4C 4C 31 2E 64 6C 6C 00");
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
@@ -1112,7 +1112,7 @@ void Adapter::handleCreateProcess(const TrkResult &result)
|
|||||||
// [80 0D 20]
|
// [80 0D 20]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//sendTrkMessage(0x18, Callback(this, &Adapter::handleStop),
|
//sendTrkMessage(0x18, TrkCallback(this, &Adapter::handleStop),
|
||||||
// "01 " + formatInt(m_session.pid) + formatInt(m_session.tid));
|
// "01 " + formatInt(m_session.pid) + formatInt(m_session.tid));
|
||||||
|
|
||||||
//---IDE------------------------------------------------------
|
//---IDE------------------------------------------------------
|
||||||
@@ -1123,8 +1123,8 @@ void Adapter::handleCreateProcess(const TrkResult &result)
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
appendInt(&ba, m_session.tid);
|
appendInt(&ba, m_session.tid);
|
||||||
sendTrkMessage(0x18, Callback(this, &Adapter::handleContinue), ba);
|
sendTrkMessage(0x18, TrkCallback(this, &Adapter::handleContinue), ba);
|
||||||
//sendTrkMessage(0x18, Callback(this, &Adapter::handleContinue),
|
//sendTrkMessage(0x18, TrkCallback(this, &Adapter::handleContinue),
|
||||||
// formatInt(m_session.pid) + "ff ff ff ff");
|
// formatInt(m_session.pid) + "ff ff ff ff");
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
// Command: 0x80 Acknowledge
|
// Command: 0x80 Acknowledge
|
||||||
@@ -1267,7 +1267,7 @@ void Adapter::clearTrkBreakpoint(const Breakpoint &bp)
|
|||||||
appendByte(&ba, 0x00);
|
appendByte(&ba, 0x00);
|
||||||
appendShort(&ba, bp.number);
|
appendShort(&ba, bp.number);
|
||||||
appendInt(&ba, m_session.codeseg + bp.offset);
|
appendInt(&ba, m_session.codeseg + bp.offset);
|
||||||
sendTrkMessage(0x1C, Callback(this, &Adapter::handleClearBreakpoint), ba);
|
sendTrkMessage(0x1C, TrkCallback(this, &Adapter::handleClearBreakpoint), ba);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adapter::handleClearBreakpoint(const TrkResult &result)
|
void Adapter::handleClearBreakpoint(const TrkResult &result)
|
||||||
@@ -1341,7 +1341,7 @@ void Adapter::cleanUp()
|
|||||||
appendByte(&ba, 0x00);
|
appendByte(&ba, 0x00);
|
||||||
appendByte(&ba, 0x00);
|
appendByte(&ba, 0x00);
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
sendTrkMessage(0x41, Callback(), ba, "Delete process");
|
sendTrkMessage(0x41, TrkCallback(), ba, "Delete process");
|
||||||
|
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
// Command: 0x80 Acknowledge
|
// Command: 0x80 Acknowledge
|
||||||
@@ -1351,7 +1351,7 @@ void Adapter::cleanUp()
|
|||||||
foreach (const Breakpoint &bp, m_breakpoints)
|
foreach (const Breakpoint &bp, m_breakpoints)
|
||||||
clearTrkBreakpoint(bp);
|
clearTrkBreakpoint(bp);
|
||||||
|
|
||||||
sendTrkMessage(0x02, Callback(this, &Adapter::handleDisconnect));
|
sendTrkMessage(0x02, TrkCallback(this, &Adapter::handleDisconnect));
|
||||||
m_startInferiorTriggered = false;
|
m_startInferiorTriggered = false;
|
||||||
//---IDE------------------------------------------------------
|
//---IDE------------------------------------------------------
|
||||||
// Command: 0x1C Clear Break
|
// Command: 0x1C Clear Break
|
||||||
@@ -1382,7 +1382,7 @@ void Adapter::cleanUp()
|
|||||||
//---IDE------------------------------------------------------
|
//---IDE------------------------------------------------------
|
||||||
// Command: 0x02 Disconnect
|
// Command: 0x02 Disconnect
|
||||||
// [02 27]
|
// [02 27]
|
||||||
// sendTrkMessage(0x02, Callback(this, &Adapter::handleDisconnect));
|
// sendTrkMessage(0x02, TrkCallback(this, &Adapter::handleDisconnect));
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
// Command: 0x80 Acknowledge
|
// Command: 0x80 Acknowledge
|
||||||
// Error: 0x00
|
// Error: 0x00
|
||||||
@@ -1413,17 +1413,17 @@ void Adapter::readMemory(uint addr, uint len)
|
|||||||
if (!m_snapshot.memory.contains(blockaddr)) {
|
if (!m_snapshot.memory.contains(blockaddr)) {
|
||||||
if (m_verbose)
|
if (m_verbose)
|
||||||
logMessage(QString::fromLatin1("Requesting buffered memory %1 bytes from 0x%2").arg(MemoryChunkSize).arg(blockaddr, 0, 16));
|
logMessage(QString::fromLatin1("Requesting buffered memory %1 bytes from 0x%2").arg(MemoryChunkSize).arg(blockaddr, 0, 16));
|
||||||
sendTrkMessage(0x10, Callback(this, &Adapter::handleReadMemoryBuffered),
|
sendTrkMessage(0x10, TrkCallback(this, &Adapter::handleReadMemoryBuffered),
|
||||||
memoryRequestTrkMessage(blockaddr, MemoryChunkSize, m_session.pid, m_session.tid),
|
memoryRequestTrkMessage(blockaddr, MemoryChunkSize, m_session.pid, m_session.tid),
|
||||||
QVariant(blockaddr), true);
|
QVariant(blockaddr), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const qulonglong cookie = (qulonglong(addr) << 32) + len;
|
const qulonglong cookie = (qulonglong(addr) << 32) + len;
|
||||||
sendTrkMessage(TRK_WRITE_QUEUE_NOOP_CODE, Callback(this, &Adapter::reportReadMemoryBuffered), QByteArray(), cookie);
|
sendTrkMessage(TRK_WRITE_QUEUE_NOOP_CODE, TrkCallback(this, &Adapter::reportReadMemoryBuffered), QByteArray(), cookie);
|
||||||
} else {
|
} else {
|
||||||
if (m_verbose)
|
if (m_verbose)
|
||||||
logMessage(QString::fromLatin1("Requesting unbuffered memory %1 bytes from 0x%2").arg(len).arg(addr, 0, 16));
|
logMessage(QString::fromLatin1("Requesting unbuffered memory %1 bytes from 0x%2").arg(len).arg(addr, 0, 16));
|
||||||
sendTrkMessage(0x10, Callback(this, &Adapter::handleReadMemoryUnbuffered),
|
sendTrkMessage(0x10, TrkCallback(this, &Adapter::handleReadMemoryUnbuffered),
|
||||||
memoryRequestTrkMessage(addr, len, m_session.pid, m_session.tid),
|
memoryRequestTrkMessage(addr, len, m_session.pid, m_session.tid),
|
||||||
QVariant(addr), true);
|
QVariant(addr), true);
|
||||||
}
|
}
|
||||||
@@ -1446,7 +1446,7 @@ void Adapter::startInferiorIfNeeded()
|
|||||||
|
|
||||||
QByteArray file("C:\\sys\\bin\\filebrowseapp.exe");
|
QByteArray file("C:\\sys\\bin\\filebrowseapp.exe");
|
||||||
appendString(&ba, file, TargetByteOrder);
|
appendString(&ba, file, TargetByteOrder);
|
||||||
sendTrkMessage(0x40, Callback(this, &Adapter::handleCreateProcess), ba); // Create Item
|
sendTrkMessage(0x40, TrkCallback(this, &Adapter::handleCreateProcess), ba); // Create Item
|
||||||
}
|
}
|
||||||
|
|
||||||
void Adapter::interruptInferior()
|
void Adapter::interruptInferior()
|
||||||
@@ -1456,7 +1456,7 @@ void Adapter::interruptInferior()
|
|||||||
appendByte(&ba, 1);
|
appendByte(&ba, 1);
|
||||||
appendInt(&ba, m_session.pid);
|
appendInt(&ba, m_session.pid);
|
||||||
appendInt(&ba, m_session.tid); // threadID: 4 bytes Variable number of bytes.
|
appendInt(&ba, m_session.tid); // threadID: 4 bytes Variable number of bytes.
|
||||||
sendTrkMessage(0x1A, Callback(), ba, "Interrupting...");
|
sendTrkMessage(0x1A, TrkCallback(), ba, "Interrupting...");
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool readAdapterArgs(const QStringList &args, AdapterOptions *o)
|
static bool readAdapterArgs(const QStringList &args, AdapterOptions *o)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ win32:CONFIG+=console
|
|||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
$$DEBUGGERHOME/trkutils.h \
|
$$DEBUGGERHOME/trkutils.h \
|
||||||
$$DEBUGGERHOME/trkfunctor.h \
|
$$DEBUGGERHOME/callback.h \
|
||||||
$$PWD/trkdevice.h \
|
$$PWD/trkdevice.h \
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
|
|||||||
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
namespace trk {
|
namespace trk {
|
||||||
|
|
||||||
typedef TrkWriteQueueDevice::Callback Callback;
|
typedef TrkWriteQueueDevice::TrkCallback TrkCallback;
|
||||||
|
|
||||||
struct LauncherPrivate {
|
struct LauncherPrivate {
|
||||||
struct CopyState {
|
struct CopyState {
|
||||||
@@ -125,9 +125,9 @@ bool Launcher::startServer(QString *errorMessage)
|
|||||||
return false;
|
return false;
|
||||||
d->m_device.sendTrkInitialPing();
|
d->m_device.sendTrkInitialPing();
|
||||||
d->m_device.sendTrkMessage(TrkConnect); // Connect
|
d->m_device.sendTrkMessage(TrkConnect); // Connect
|
||||||
d->m_device.sendTrkMessage(TrkSupported, Callback(this, &Launcher::handleSupportMask));
|
d->m_device.sendTrkMessage(TrkSupported, TrkCallback(this, &Launcher::handleSupportMask));
|
||||||
d->m_device.sendTrkMessage(TrkCpuType, Callback(this, &Launcher::handleCpuType));
|
d->m_device.sendTrkMessage(TrkCpuType, TrkCallback(this, &Launcher::handleCpuType));
|
||||||
d->m_device.sendTrkMessage(TrkVersions, Callback(this, &Launcher::handleTrkVersion));
|
d->m_device.sendTrkMessage(TrkVersions, TrkCallback(this, &Launcher::handleTrkVersion));
|
||||||
if (d->m_fileName.isEmpty())
|
if (d->m_fileName.isEmpty())
|
||||||
return true;
|
return true;
|
||||||
if (!d->m_copyState.sourceFileName.isEmpty() && !d->m_copyState.destinationFileName.isEmpty())
|
if (!d->m_copyState.sourceFileName.isEmpty() && !d->m_copyState.destinationFileName.isEmpty())
|
||||||
@@ -160,7 +160,7 @@ void Launcher::logMessage(const QString &msg)
|
|||||||
void Launcher::waitForTrkFinished(const TrkResult &result)
|
void Launcher::waitForTrkFinished(const TrkResult &result)
|
||||||
{
|
{
|
||||||
Q_UNUSED(result)
|
Q_UNUSED(result)
|
||||||
d->m_device.sendTrkMessage(TrkPing, Callback(this, &Launcher::handleWaitForFinished));
|
d->m_device.sendTrkMessage(TrkPing, TrkCallback(this, &Launcher::handleWaitForFinished));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Launcher::terminate()
|
void Launcher::terminate()
|
||||||
@@ -169,7 +169,7 @@ void Launcher::terminate()
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendShort(&ba, 0x0000, TargetByteOrder);
|
appendShort(&ba, 0x0000, TargetByteOrder);
|
||||||
appendInt(&ba, d->m_session.pid, TargetByteOrder);
|
appendInt(&ba, d->m_session.pid, TargetByteOrder);
|
||||||
d->m_device.sendTrkMessage(TrkDeleteItem, Callback(this, &Launcher::waitForTrkFinished), ba);
|
d->m_device.sendTrkMessage(TrkDeleteItem, TrkCallback(this, &Launcher::waitForTrkFinished), ba);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Launcher::handleResult(const TrkResult &result)
|
void Launcher::handleResult(const TrkResult &result)
|
||||||
@@ -240,7 +240,7 @@ void Launcher::handleResult(const TrkResult &result)
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendInt(&ba, d->m_session.pid);
|
appendInt(&ba, d->m_session.pid);
|
||||||
appendInt(&ba, d->m_session.tid);
|
appendInt(&ba, d->m_session.tid);
|
||||||
d->m_device.sendTrkMessage(TrkContinue, Callback(), ba, "CONTINUE");
|
d->m_device.sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
|
||||||
//d->m_device.sendTrkAck(result.token)
|
//d->m_device.sendTrkAck(result.token)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -253,7 +253,7 @@ void Launcher::handleResult(const TrkResult &result)
|
|||||||
arg(name));
|
arg(name));
|
||||||
d->m_device.sendTrkAck(result.token);
|
d->m_device.sendTrkAck(result.token);
|
||||||
if (itemType == 0) { // process
|
if (itemType == 0) { // process
|
||||||
d->m_device.sendTrkMessage(TrkDisconnect, Callback(this, &Launcher::waitForTrkFinished));
|
d->m_device.sendTrkMessage(TrkDisconnect, TrkCallback(this, &Launcher::waitForTrkFinished));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -296,7 +296,7 @@ void Launcher::handleTrkVersion(const TrkResult &result)
|
|||||||
<< " float size: " << d->m_session.fpTypeSize
|
<< " float size: " << d->m_session.fpTypeSize
|
||||||
<< " Trk: v" << trkMajor << '.' << trkMinor << " Protocol: " << protocolMajor << '.' << protocolMinor;
|
<< " Trk: v" << trkMajor << '.' << trkMinor << " Protocol: " << protocolMajor << '.' << protocolMinor;
|
||||||
qWarning("%s", qPrintable(msg));
|
qWarning("%s", qPrintable(msg));
|
||||||
d->m_device.sendTrkMessage(TrkPing, Callback(this, &Launcher::waitForTrkFinished));
|
d->m_device.sendTrkMessage(TrkPing, TrkCallback(this, &Launcher::waitForTrkFinished));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -335,12 +335,12 @@ void Launcher::continueCopying()
|
|||||||
appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
|
appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
|
||||||
appendString(&ba, d->m_copyState.data->mid(d->m_copyState.position, BLOCKSIZE), TargetByteOrder, false);
|
appendString(&ba, d->m_copyState.data->mid(d->m_copyState.position, BLOCKSIZE), TargetByteOrder, false);
|
||||||
d->m_copyState.position += BLOCKSIZE;
|
d->m_copyState.position += BLOCKSIZE;
|
||||||
d->m_device.sendTrkMessage(TrkWriteFile, Callback(this, &Launcher::handleCopy), ba);
|
d->m_device.sendTrkMessage(TrkWriteFile, TrkCallback(this, &Launcher::handleCopy), ba);
|
||||||
} else {
|
} else {
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
|
appendInt(&ba, d->m_copyState.copyFileHandle, TargetByteOrder);
|
||||||
appendInt(&ba, QDateTime::currentDateTime().toTime_t(), TargetByteOrder);
|
appendInt(&ba, QDateTime::currentDateTime().toTime_t(), TargetByteOrder);
|
||||||
d->m_device.sendTrkMessage(TrkCloseFile, Callback(this, &Launcher::handleFileCreated), ba);
|
d->m_device.sendTrkMessage(TrkCloseFile, TrkCallback(this, &Launcher::handleFileCreated), ba);
|
||||||
delete d->m_copyState.data;
|
delete d->m_copyState.data;
|
||||||
d->m_copyState.data = 0;
|
d->m_copyState.data = 0;
|
||||||
}
|
}
|
||||||
@@ -388,7 +388,7 @@ void Launcher::handleCreateProcess(const TrkResult &result)
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendInt(&ba, d->m_session.pid);
|
appendInt(&ba, d->m_session.pid);
|
||||||
appendInt(&ba, d->m_session.tid);
|
appendInt(&ba, d->m_session.tid);
|
||||||
d->m_device.sendTrkMessage(TrkContinue, Callback(), ba, "CONTINUE");
|
d->m_device.sendTrkMessage(TrkContinue, TrkCallback(), ba, "CONTINUE");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Launcher::handleWaitForFinished(const TrkResult &result)
|
void Launcher::handleWaitForFinished(const TrkResult &result)
|
||||||
@@ -423,7 +423,7 @@ void Launcher::cleanUp()
|
|||||||
appendByte(&ba, 0x00);
|
appendByte(&ba, 0x00);
|
||||||
appendByte(&ba, 0x00);
|
appendByte(&ba, 0x00);
|
||||||
appendInt(&ba, d->m_session.pid);
|
appendInt(&ba, d->m_session.pid);
|
||||||
d->m_device.sendTrkMessage(TrkDeleteItem, Callback(), ba, "Delete process");
|
d->m_device.sendTrkMessage(TrkDeleteItem, TrkCallback(), ba, "Delete process");
|
||||||
|
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
// Command: 0x80 Acknowledge
|
// Command: 0x80 Acknowledge
|
||||||
@@ -459,7 +459,7 @@ void Launcher::cleanUp()
|
|||||||
//---IDE------------------------------------------------------
|
//---IDE------------------------------------------------------
|
||||||
// Command: 0x02 Disconnect
|
// Command: 0x02 Disconnect
|
||||||
// [02 27]
|
// [02 27]
|
||||||
// sendTrkMessage(0x02, Callback(this, &Launcher::handleDisconnect));
|
// sendTrkMessage(0x02, TrkCallback(this, &Launcher::handleDisconnect));
|
||||||
//---TRK------------------------------------------------------
|
//---TRK------------------------------------------------------
|
||||||
// Command: 0x80 Acknowledge
|
// Command: 0x80 Acknowledge
|
||||||
// Error: 0x00
|
// Error: 0x00
|
||||||
@@ -471,7 +471,7 @@ void Launcher::copyFileToRemote()
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendByte(&ba, 0x10);
|
appendByte(&ba, 0x10);
|
||||||
appendString(&ba, d->m_copyState.destinationFileName.toLocal8Bit(), TargetByteOrder, false);
|
appendString(&ba, d->m_copyState.destinationFileName.toLocal8Bit(), TargetByteOrder, false);
|
||||||
d->m_device.sendTrkMessage(TrkOpenFile, Callback(this, &Launcher::handleFileCreation), ba);
|
d->m_device.sendTrkMessage(TrkOpenFile, TrkCallback(this, &Launcher::handleFileCreation), ba);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Launcher::installRemotePackageSilently(const QString &fileName)
|
void Launcher::installRemotePackageSilently(const QString &fileName)
|
||||||
@@ -480,7 +480,7 @@ void Launcher::installRemotePackageSilently(const QString &fileName)
|
|||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
appendByte(&ba, 'C');
|
appendByte(&ba, 'C');
|
||||||
appendString(&ba, fileName.toLocal8Bit(), TargetByteOrder, false);
|
appendString(&ba, fileName.toLocal8Bit(), TargetByteOrder, false);
|
||||||
d->m_device.sendTrkMessage(TrkInstallFile, Callback(this, &Launcher::handleInstallPackageFinished), ba);
|
d->m_device.sendTrkMessage(TrkInstallFile, TrkCallback(this, &Launcher::handleInstallPackageFinished), ba);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Launcher::handleInstallPackageFinished(const TrkResult &)
|
void Launcher::handleInstallPackageFinished(const TrkResult &)
|
||||||
@@ -501,7 +501,7 @@ void Launcher::startInferiorIfNeeded()
|
|||||||
appendByte(&ba, 0); // ?
|
appendByte(&ba, 0); // ?
|
||||||
appendByte(&ba, 0); // ?
|
appendByte(&ba, 0); // ?
|
||||||
appendString(&ba, d->m_fileName.toLocal8Bit(), TargetByteOrder);
|
appendString(&ba, d->m_fileName.toLocal8Bit(), TargetByteOrder);
|
||||||
d->m_device.sendTrkMessage(TrkCreateItem, Callback(this, &Launcher::handleCreateProcess), ba); // Create Item
|
d->m_device.sendTrkMessage(TrkCreateItem, TrkCallback(this, &Launcher::handleCreateProcess), ba); // Create Item
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -339,24 +339,23 @@ void TrkDevice::emitError(const QString &s)
|
|||||||
|
|
||||||
/* A message to be send to TRK, triggering a callback on receipt
|
/* A message to be send to TRK, triggering a callback on receipt
|
||||||
* of the answer. */
|
* of the answer. */
|
||||||
|
typedef Debugger::Callback<const TrkResult &> TrkCallback;
|
||||||
struct TrkMessage {
|
struct TrkMessage {
|
||||||
typedef TrkFunctor1<const TrkResult &> Callback;
|
|
||||||
|
|
||||||
explicit TrkMessage(unsigned char code = 0u,
|
explicit TrkMessage(unsigned char code = 0u,
|
||||||
unsigned char token = 0u,
|
unsigned char token = 0u,
|
||||||
Callback callback = Callback());
|
TrkCallback callback = TrkCallback());
|
||||||
|
|
||||||
unsigned char code;
|
unsigned char code;
|
||||||
unsigned char token;
|
unsigned char token;
|
||||||
QByteArray data;
|
QByteArray data;
|
||||||
QVariant cookie;
|
QVariant cookie;
|
||||||
Callback callback;
|
TrkCallback callback;
|
||||||
bool invokeOnNAK;
|
bool invokeOnNAK;
|
||||||
};
|
};
|
||||||
|
|
||||||
TrkMessage::TrkMessage(unsigned char c,
|
TrkMessage::TrkMessage(unsigned char c,
|
||||||
unsigned char t,
|
unsigned char t,
|
||||||
Callback cb) :
|
TrkCallback cb) :
|
||||||
code(c),
|
code(c),
|
||||||
token(t),
|
token(t),
|
||||||
callback(cb),
|
callback(cb),
|
||||||
@@ -371,12 +370,10 @@ typedef QSharedPointer<TrkMessage> SharedPointerTrkMessage;
|
|||||||
|
|
||||||
class TrkWriteQueue {
|
class TrkWriteQueue {
|
||||||
public:
|
public:
|
||||||
typedef TrkWriteQueueDevice::Callback Callback;
|
|
||||||
|
|
||||||
TrkWriteQueue();
|
TrkWriteQueue();
|
||||||
|
|
||||||
// Enqueue messages.
|
// Enqueue messages.
|
||||||
void queueTrkMessage(unsigned char code, Callback callback,
|
void queueTrkMessage(unsigned char code, TrkCallback callback,
|
||||||
const QByteArray &data, const QVariant &cookie,
|
const QByteArray &data, const QVariant &cookie,
|
||||||
bool invokeOnNAK);
|
bool invokeOnNAK);
|
||||||
void queueTrkInitialPing();
|
void queueTrkInitialPing();
|
||||||
@@ -419,7 +416,7 @@ unsigned char TrkWriteQueue::nextTrkWriteToken()
|
|||||||
return trkWriteToken;
|
return trkWriteToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrkWriteQueue::queueTrkMessage(unsigned char code, Callback callback,
|
void TrkWriteQueue::queueTrkMessage(unsigned char code, TrkCallback callback,
|
||||||
const QByteArray &data, const QVariant &cookie,
|
const QByteArray &data, const QVariant &cookie,
|
||||||
bool invokeOnNAK)
|
bool invokeOnNAK)
|
||||||
{
|
{
|
||||||
@@ -515,7 +512,7 @@ TrkWriteQueueDevice::~TrkWriteQueueDevice()
|
|||||||
delete qd;
|
delete qd;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrkWriteQueueDevice::sendTrkMessage(unsigned char code, Callback callback,
|
void TrkWriteQueueDevice::sendTrkMessage(unsigned char code, TrkCallback callback,
|
||||||
const QByteArray &data, const QVariant &cookie,
|
const QByteArray &data, const QVariant &cookie,
|
||||||
bool invokeOnNAK)
|
bool invokeOnNAK)
|
||||||
{
|
{
|
||||||
@@ -620,7 +617,7 @@ void TrkWriteQueueIODevice::setVerbose(bool b)
|
|||||||
d->verbose = b;
|
d->verbose = b;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrkWriteQueueIODevice::sendTrkMessage(unsigned char code, Callback callback,
|
void TrkWriteQueueIODevice::sendTrkMessage(unsigned char code, TrkCallback callback,
|
||||||
const QByteArray &data, const QVariant &cookie,
|
const QByteArray &data, const QVariant &cookie,
|
||||||
bool invokeOnNAK)
|
bool invokeOnNAK)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
#ifndef TRKDEVICE_H
|
#ifndef TRKDEVICE_H
|
||||||
#define TRKDEVICE_H
|
#define TRKDEVICE_H
|
||||||
|
|
||||||
#include "trkfunctor.h"
|
#include "callback.h"
|
||||||
|
|
||||||
#include <QtCore/QObject>
|
#include <QtCore/QObject>
|
||||||
#include <QtCore/QVariant>
|
#include <QtCore/QVariant>
|
||||||
@@ -111,12 +111,12 @@ public:
|
|||||||
explicit TrkWriteQueueDevice(QObject *parent = 0);
|
explicit TrkWriteQueueDevice(QObject *parent = 0);
|
||||||
virtual ~TrkWriteQueueDevice();
|
virtual ~TrkWriteQueueDevice();
|
||||||
|
|
||||||
// Construct as 'TrkWriteQueueDevice::Callback(instance, &Class::method);'
|
// Construct as 'TrkWriteQueueDevice::TrkCallback(instance, &Class::method);'
|
||||||
typedef TrkFunctor1<const TrkResult &> Callback;
|
typedef Debugger::Callback<const TrkResult &> TrkCallback;
|
||||||
|
|
||||||
// Enqueue a message with a notification callback.
|
// Enqueue a message with a notification callback.
|
||||||
void sendTrkMessage(unsigned char code,
|
void sendTrkMessage(unsigned char code,
|
||||||
Callback callBack = Callback(),
|
TrkCallback callBack = TrkCallback(),
|
||||||
const QByteArray &data = QByteArray(),
|
const QByteArray &data = QByteArray(),
|
||||||
const QVariant &cookie = QVariant(),
|
const QVariant &cookie = QVariant(),
|
||||||
// Invoke callback on receiving NAK, too.
|
// Invoke callback on receiving NAK, too.
|
||||||
@@ -155,7 +155,7 @@ class TrkWriteQueueIODevice : public QObject
|
|||||||
Q_PROPERTY(bool serialFrame READ serialFrame WRITE setSerialFrame)
|
Q_PROPERTY(bool serialFrame READ serialFrame WRITE setSerialFrame)
|
||||||
Q_PROPERTY(bool verbose READ verbose WRITE setVerbose)
|
Q_PROPERTY(bool verbose READ verbose WRITE setVerbose)
|
||||||
public:
|
public:
|
||||||
typedef TrkFunctor1<const TrkResult &> Callback;
|
typedef Debugger::Callback<const TrkResult &> TrkCallback;
|
||||||
|
|
||||||
explicit TrkWriteQueueIODevice(const QSharedPointer<QIODevice> &device,
|
explicit TrkWriteQueueIODevice(const QSharedPointer<QIODevice> &device,
|
||||||
QObject *parent = 0);
|
QObject *parent = 0);
|
||||||
@@ -168,7 +168,7 @@ public:
|
|||||||
void setVerbose(bool b);
|
void setVerbose(bool b);
|
||||||
|
|
||||||
void sendTrkMessage(unsigned char code,
|
void sendTrkMessage(unsigned char code,
|
||||||
Callback callback = Callback(),
|
TrkCallback callback = TrkCallback(),
|
||||||
const QByteArray &data = QByteArray(),
|
const QByteArray &data = QByteArray(),
|
||||||
const QVariant &cookie = QVariant(),
|
const QVariant &cookie = QVariant(),
|
||||||
bool invokeOnNAK = false);
|
bool invokeOnNAK = false);
|
||||||
|
|||||||
@@ -10,6 +10,6 @@ SOURCES += \
|
|||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
$$DEBUGGERHOME/trkutils.h \
|
$$DEBUGGERHOME/trkutils.h \
|
||||||
$$DEBUGGERHOME/trkfunctor.h \
|
$$DEBUGGERHOME/callback.h \
|
||||||
$$PWD/trkdevice.h \
|
$$PWD/trkdevice.h \
|
||||||
$$PWD/launcher.h
|
$$PWD/launcher.h
|
||||||
|
|||||||
Reference in New Issue
Block a user