diff options
author | Shane Kearns <shane.kearns@accenture.com> | 2009-12-18 17:24:56 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@sosco.com> | 2009-12-21 15:08:52 (GMT) |
commit | f61a32948da3cac4b83123267ae8c5d2fa0525f6 (patch) | |
tree | 18cc0b85c785ecc0a59fc5d1a3ec8dc463ad007b /tools/runonphone/trk/trkdevice.h | |
parent | 4d20d1f9a307b8c3b032fd548bdfd077a91440f3 (diff) | |
download | Qt-f61a32948da3cac4b83123267ae8c5d2fa0525f6.zip Qt-f61a32948da3cac4b83123267ae8c5d2fa0525f6.tar.gz Qt-f61a32948da3cac4b83123267ae8c5d2fa0525f6.tar.bz2 |
Tool for launching symbian apps on the phone from windows command line
The tool uses TRK to launch the application.
TRK is a debug agent, available as a signed package for consumer phones.
For Nokia phones, it is distributed with carbide; for other manufacturers
it can be downloaded from their developer websites.
The launcher code is reused from Qt creator, with a patch to allow us
to pass command line arguments to the process being launched.
The "make run" target is enhanced to support running on target as well as
the emulator. Like the "make sis" target, the last platform to have been
built is the one that will be launched.
The runonphone tool needs to be built in a Qt environment configured for
windows, and requires at least windows XP (Symbian development requires
windows XP SP2). Current proposal is to include a statically linked exe
in the bin directory for binary packages.
Reviewed-by: Janne Koskinen
Diffstat (limited to 'tools/runonphone/trk/trkdevice.h')
-rw-r--r-- | tools/runonphone/trk/trkdevice.h | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/tools/runonphone/trk/trkdevice.h b/tools/runonphone/trk/trkdevice.h new file mode 100644 index 0000000..632dea1 --- /dev/null +++ b/tools/runonphone/trk/trkdevice.h @@ -0,0 +1,121 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef TRKDEVICE_H +#define TRKDEVICE_H + +#include "callback.h" + +#include <QtCore/QObject> +#include <QtCore/QVariant> +#include <QtCore/QByteArray> +#include <QtCore/QSharedPointer> + +QT_BEGIN_NAMESPACE +class QIODevice; +QT_END_NAMESPACE + +namespace trk { + +struct TrkResult; +struct TrkMessage; +struct TrkDevicePrivate; + +/* TrkDevice: Implements a Windows COM or Linux device for + * Trk communications. Provides synchronous write and asynchronous + * read operation. + * The serialFrames property specifies whether packets are encapsulated in + * "0x90 <length>" frames, which is currently the case for serial ports. + * Contains a write message queue allowing + * for queueing messages with a notification callback. If the message receives + * an ACK, the callback is invoked. + * The special message TRK_WRITE_QUEUE_NOOP_CODE code can be used for synchronisation. + * The respective message will not be sent, the callback is just invoked. */ + +enum { TRK_WRITE_QUEUE_NOOP_CODE = 0x7f }; + +typedef trk::Callback<const TrkResult &> TrkCallback; + +class TrkDevice : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool serialFrame READ serialFrame WRITE setSerialFrame) + Q_PROPERTY(bool verbose READ verbose WRITE setVerbose) +public: + explicit TrkDevice(QObject *parent = 0); + virtual ~TrkDevice(); + + bool open(const QString &port, QString *errorMessage); + bool isOpen() const; + + QString errorString() const; + + bool serialFrame() const; + void setSerialFrame(bool f); + + int verbose() const; + void setVerbose(int b); + + // Enqueue a message with a notification callback. + void sendTrkMessage(unsigned char code, + TrkCallback callBack = TrkCallback(), + const QByteArray &data = QByteArray(), + const QVariant &cookie = QVariant()); + + // Enqeue an initial ping + void sendTrkInitialPing(); + + // Send an Ack synchronously, bypassing the queue + bool sendTrkAck(unsigned char token); + +signals: + void messageReceived(const trk::TrkResult &result); + // Emitted with the contents of messages enclosed in 07e, not for log output + void rawDataReceived(const QByteArray &data); + void error(const QString &msg); + void logMessage(const QString &msg); + +private slots: + void slotMessageReceived(const trk::TrkResult &result, const QByteArray &a); + +protected slots: + void emitError(const QString &msg); + void emitLogMessage(const QString &msg); + +public slots: + void close(); + +private: + void readMessages(); + TrkDevicePrivate *d; +}; + +} // namespace trk + +#endif // TRKDEVICE_H |