maemodebugsupport.h 3.72 KB
Newer Older
ck's avatar
ck committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Creator.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** 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.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights.  These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
** $QT_END_LICENSE$
**
****************************************************************************/

#ifndef MAEMODEBUGSUPPORT_H
#define MAEMODEBUGSUPPORT_H

#include "maemodeviceconfigurations.h"
39
#include "maemorunconfiguration.h"
ck's avatar
ck committed
40 41 42 43

#include <coreplugin/ssh/sftpdefs.h>

#include <QtCore/QObject>
44
#include <QtCore/QPointer>
ck's avatar
ck committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
#include <QtCore/QSharedPointer>

namespace Core { class SftpChannel; }

namespace Debugger {
class DebuggerRunControl;
}

namespace ProjectExplorer { class RunControl; }

namespace Qt4ProjectManager {
namespace Internal {

class MaemoRunConfiguration;
class MaemoSshRunner;

class MaemoDebugSupport : public QObject
{
    Q_OBJECT
public:
    static ProjectExplorer::RunControl *createDebugRunControl(MaemoRunConfiguration *runConfig);

    MaemoDebugSupport(MaemoRunConfiguration *runConfig,
        Debugger::DebuggerRunControl *runControl);
    ~MaemoDebugSupport();

    static QString uploadDir(const MaemoDeviceConfig &devConf);

private slots:
    void handleAdapterSetupRequested();
    void handleSshError(const QString &error);
    void startExecution();
    void handleSftpChannelInitialized();
    void handleSftpChannelInitializationFailed(const QString &error);
    void handleSftpJobFinished(Core::SftpJobId job, const QString &error);
    void handleDebuggingFinished();
    void handleRemoteOutput(const QByteArray &output);
    void handleRemoteErrorOutput(const QByteArray &output);
83
    void handleProgressReport(const QString &progressOutput);
ck's avatar
ck committed
84 85

private:
86 87 88 89 90
    enum State {
        Inactive, StartingRunner, InitializingUploader, UploadingDumpers,
        DumpersUploaded, StartingRemoteProcess, Debugging
    };

91
    static QString environment(const MaemoRunConfiguration *rc);
92

ck's avatar
ck committed
93 94 95
    void handleAdapterSetupFailed(const QString &error);
    void handleAdapterSetupDone();
    void startDebugging();
96
    bool useGdb() const;
97
    void setState(State newState);
98
    bool setPort(int &port);
ck's avatar
ck committed
99

100
    const QPointer<Debugger::DebuggerRunControl> m_runControl;
ck's avatar
ck committed
101 102 103
    MaemoRunConfiguration * const m_runConfig;
    const MaemoDeviceConfig m_deviceConfig;
    MaemoSshRunner * const m_runner;
104
    const MaemoRunConfiguration::DebuggingType m_debuggingType;
ck's avatar
ck committed
105 106 107

    QSharedPointer<Core::SftpChannel> m_uploader;
    Core::SftpJobId m_uploadJob;
108
    QByteArray m_gdbserverOutput;
109
    State m_state;
110 111
    int m_gdbServerPort;
    int m_qmlPort;
ck's avatar
ck committed
112 113 114 115 116 117
};

} // namespace Internal
} // namespace Qt4ProjectManager

#endif // MAEMODEBUGSUPPORT_H