diff options
author | Shane Kearns <shane.kearns@sosco.com> | 2010-01-20 15:30:37 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@sosco.com> | 2010-01-20 20:31:22 (GMT) |
commit | cd5e75810d59ab6e92c88189015aee77448160e4 (patch) | |
tree | 8f5d99e9b24643d3f080a11fbabc1ac22651e458 | |
parent | 9bfabc79567355bc0e5502bfc04e74e70e3488b4 (diff) | |
download | Qt-cd5e75810d59ab6e92c88189015aee77448160e4.zip Qt-cd5e75810d59ab6e92c88189015aee77448160e4.tar.gz Qt-cd5e75810d59ab6e92c88189015aee77448160e4.tar.bz2 |
1st attempt at USB serial port enumerator for linux
Enumerate the ACM ports which are created in /dev after plugging in the
phone.
Tested on Kubuntu (karmic koala), using 5800XM and N95.
Linux has two USB drivers of interest.
1: CDC-ACM, this loads automatically, and creates /dev/ttyACM<n> for
the USB modem interface
2: USBSERIAL, this needs to be loaded manually using modprobe, and
creates /dev/ttyUSB<n> for each ACM interface on the phone
The second ttyUSB port is the one we need, this enumerator does not
pick the correct port yet. (1st port is ECACM:0, i.e. the modem, 2nd
port is ECACM:1, i.e. the general purpose port used by TRK)
according to lsusb, the 1st ACM descriptor has:
class 2 (comms)
subclass 2 (abstract - modem)
protocol 1 (AT commands)
2nd ACM descriptor has:
class 2 (comms)
subclass 2 (abstract - modem)
protocol 255 (vendor specific)
Linux 2.6.33 RC3 has a hardcoded list of nokia phones in cdc-acm.c for which
the protocol 255 ACM port will be recognised as a second ttyACM
Task-number: QTBUG-7446
Reviewed-by: Miikka Heikkinen
-rw-r--r-- | tools/runonphone/main.cpp | 4 | ||||
-rw-r--r-- | tools/runonphone/runonphone.pro | 6 | ||||
-rw-r--r-- | tools/runonphone/serenum_stub.cpp | 53 | ||||
-rw-r--r-- | tools/runonphone/serenum_unix.cpp | 64 |
4 files changed, 127 insertions, 0 deletions
diff --git a/tools/runonphone/main.cpp b/tools/runonphone/main.cpp index d8c306f..c7fc43f 100644 --- a/tools/runonphone/main.cpp +++ b/tools/runonphone/main.cpp @@ -175,7 +175,11 @@ int main(int argc, char *argv[]) } if(loglevel > 0) outstream << "Connecting to target via " << serialPortName << endl; +#ifdef Q_OS_WIN launcher->setTrkServerName(QString("\\\\.\\") + serialPortName); +#else + launcher->setTrkServerName(serialPortName); +#endif launcher->setFileName(QString("c:\\sys\\bin\\") + exeFile); launcher->setCommandLineArgs(cmdLine); diff --git a/tools/runonphone/runonphone.pro b/tools/runonphone/runonphone.pro index cf0c055..cb27d1b 100644 --- a/tools/runonphone/runonphone.pro +++ b/tools/runonphone/runonphone.pro @@ -18,3 +18,9 @@ windows { -luuid \ -ladvapi32 } +unix:!symbian { + SOURCES += serenum_unix.cpp +} +else { + SOURCES += serenum_stub.cpp +} diff --git a/tools/runonphone/serenum_stub.cpp b/tools/runonphone/serenum_stub.cpp new file mode 100644 index 0000000..f39765e --- /dev/null +++ b/tools/runonphone/serenum_stub.cpp @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** 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 tools applications of the Qt Toolkit. +** +** $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$ +** +****************************************************************************/ + +#include "serenum.h" +#include <QByteArray> +#include <QString> +#include <QDebug> + +QList<SerialPortId> enumerateSerialPorts() +{ + QList<SerialPortId> list; + qWarning() << "enumerateSerialPorts not implemented" << endl; + return list; +} + diff --git a/tools/runonphone/serenum_unix.cpp b/tools/runonphone/serenum_unix.cpp new file mode 100644 index 0000000..ca6c437 --- /dev/null +++ b/tools/runonphone/serenum_unix.cpp @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** 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 tools applications of the Qt Toolkit. +** +** $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$ +** +****************************************************************************/ + +#include "serenum.h" +#include <QByteArray> +#include <QString> +#include <QDebug> +#include <QFileInfo> +#include <QDir> + +QList<SerialPortId> enumerateSerialPorts() +{ + QList<SerialPortId> list; + QDir dir("/dev/serial/by-id/"); + QFileInfoList ports(dir.entryInfoList()); + foreach(QFileInfo info, ports) { + if (!info.isDir()) { + SerialPortId id; + id.friendlyName = info.fileName(); + id.portName = info.canonicalFilePath(); + list << id; + } + } + return list; +} + |