Jelajahi Sumber

Qml-Objekt für Wlan-Status.

Rind 1 tahun lalu
induk
melakukan
b59cd76524
4 mengubah file dengan 195 tambahan dan 41 penghapusan
  1. 0 40
      builddbg.sh
  2. 1 0
      src/qappctrl.cpp
  3. 53 0
      src/qappctrl.h
  4. 141 1
      src/qwlaninfo.cpp

+ 0 - 40
builddbg.sh

@@ -1,40 +0,0 @@
-#!/bin/bash
-set -e
-set -o pipefail
-
-#########################################################################################
-#########################################################################################
-#########################################################################################
-
-CWD=$(pwd)
-MAKE=/usr/bin/make
-PROJ=/home/wrk/share/gfaqt/gfaqt.pro
-CRTINST=/home/wrk/share/gfalibtools/create.sh
-INSTDIR=$CWD/install
-
-rm -f $INSTDIR/*.sh
-
-#########################################################################################
-#########################################################################################
-#########################################################################################
-# Sitara
-
-QMAKE=/opt/GfA/TC_L44104_C493_QT57_V02/usr/bin/qmake
-SPEC=devices/linux-buildroot-g++
-
-#########################################################################################
-# Debug
-
-BASENAMEDBG="libgfaqtd.so.1.7.0-install-debug"
-
-BUILDDIR=Debug/Sitara_1
-mkdir -p $BUILDDIR
-cd $BUILDDIR
-$QMAKE $PROJ -spec $SPEC CONFIG+=debug CONFIG+=qml_debug && $MAKE qmake_all
-$MAKE clean -j2
-$MAKE -j2
-$MAKE install_toolchain
-$CRTINST $(pwd) $CWD debug $SPEC
-cd $CWD
-cd $INSTDIR
-./$BASENAMEDBG"-toolchain.sh"

+ 1 - 0
src/qappctrl.cpp

@@ -99,6 +99,7 @@ void QGfaAppCtrl::Release(void)
 void QGfaAppCtrl::RegisterQmlTypes(QQmlEngine &rEng, int nVerMajor, int nVerMinor)
 {
 	qmlRegisterUncreatableType<QGfaStgDevList>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaStgDevList", QStringLiteral("class not creatable in QML"));
+	qmlRegisterUncreatableType<QGfaWlanConnInfo>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaWlanConnInfo", QStringLiteral("class not creatable in QML"));
 	qmlRegisterUncreatableType<QGfaWlanMonSchemaModel>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaWlanMonSchemaModel", QStringLiteral("class not creatable in QML"));
 	qmlRegisterUncreatableType<QGfaSysInfo>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaSysInfo", QStringLiteral("class not creatable in QML"));
 	qmlRegisterUncreatableType<QGfaAppInfo>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaAppInfo", QStringLiteral("class not creatable in QML"));

+ 53 - 0
src/qappctrl.h

@@ -886,10 +886,59 @@ private:
 
 /////////////////////////////////////////////////////////////////////////////
 
+class QGfaWlanConnInfo : public QObject
+{
+    Q_OBJECT
+	Q_PROPERTY(bool connected READ connected NOTIFY connectedChanged)
+	Q_PROPERTY(int channel READ channel NOTIFY channelChanged)
+	Q_PROPERTY(unsigned int qualPerc READ qualPerc NOTIFY qualPercChanged)
+	Q_PROPERTY(int qualBars READ qualBars  NOTIFY qualBarsChanged)
+	Q_PROPERTY(QString essid READ essid NOTIFY essidChanged)
+	Q_PROPERTY(QString macAddr READ macAddr NOTIFY macAddrChanged)
+	Q_PROPERTY(QString frequency READ frequency NOTIFY frequencyChanged)
+
+public:
+	explicit QGfaWlanConnInfo(QObject *pParent = NULL);
+	~QGfaWlanConnInfo(void);
+
+	bool fromWifiScanResults(const CGfaWifiScanResults &wsr);
+	void clear(void);
+
+signals:
+	void connectedChanged(bool connected);
+	void channelChanged(int channel);
+	void qualPercChanged(unsigned int qualPerc);
+	void qualBarsChanged(int qualBars);
+	void essidChanged(const QString &essid);
+	void macAddrChanged(const QString &macAddr);
+	void frequencyChanged(const QString &frequency);
+
+private:
+	bool connected(void) const;
+	QString essid(void) const;
+	QString macAddr(void) const;
+	QString frequency(void) const;
+	int channel(void) const;
+	unsigned int qualPerc(void) const;
+	int qualBars(void) const;
+	
+private:
+	bool m_connected;
+	QString m_essid;
+	QString m_macAddr;
+	QString m_frequency;
+	int m_channel;
+	unsigned int m_qualPerc;
+	int m_qualBars;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
 class QGfaWlanMonSchemaModel : public QAbstractTableModel
 {
     Q_OBJECT
 	Q_PROPERTY(bool scanning READ scanning NOTIFY scanningChanged)
+	Q_PROPERTY(QGfaWlanConnInfo *wlanConnInfo READ wlanConnInfo CONSTANT)
 
 public:
 	typedef struct _WLAN_SCAN_RESULT
@@ -913,6 +962,7 @@ public:
 		QString qualStr;
 		QString cipherStr;
 		QString cipherStrWpa;
+		QString modeStr;
 		uint32_t qualPerc;
 		int32_t qualBars;
 	}WLAN_SCAN_RESULT;
@@ -950,6 +1000,7 @@ public:
 	Q_INVOKABLE void startScan(void);
 	Q_INVOKABLE void clearAll(void);
 	Q_INVOKABLE bool setWpaSuppConfig(int cellIndex, QString passphrase);
+	Q_INVOKABLE void updateConnectionInfo(QString interface);
 	void updateModel(void);
 
 	int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;
@@ -959,6 +1010,7 @@ public:
 
 private:
 	bool scanning(void) const;
+	QGfaWlanConnInfo* wlanConnInfo(void);
 
 signals:
 	void scanStarted(void);
@@ -970,6 +1022,7 @@ private:
 	std::vector<WLAN_SCAN_RESULT> m_scanRes;
 	CGfaWifiMon m_wlMon;
 	bool m_bScanning;
+	QGfaWlanConnInfo m_wci;
 };
 
 /////////////////////////////////////////////////////////////////////////////

+ 141 - 1
src/qwlaninfo.cpp

@@ -14,6 +14,128 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 
+QGfaWlanConnInfo::QGfaWlanConnInfo(QObject *pParent) : QObject(pParent)
+{
+    setObjectName("QGfaWlanConnInfo");
+    clear();
+}
+
+QGfaWlanConnInfo::~QGfaWlanConnInfo(void)
+{
+}
+
+void QGfaWlanConnInfo::clear(void)
+{
+	m_connected = false;
+	m_essid.clear();
+	m_macAddr.clear();
+	m_frequency.clear();
+	m_channel = -1;
+	m_qualPerc = 0;
+	m_qualBars = 0;
+
+	emit connectedChanged(m_connected);
+	emit essidChanged(m_essid);
+	emit macAddrChanged(m_macAddr);
+	emit frequencyChanged(m_frequency);
+	emit channelChanged(m_channel);
+	emit qualPercChanged(m_qualPerc);
+	emit qualBarsChanged(m_qualBars);
+}
+
+bool QGfaWlanConnInfo::fromWifiScanResults(const CGfaWifiScanResults &wsr)
+{
+	bool bv = wsr.GetConnected();
+	if(m_connected != bv)
+	{
+		m_connected = bv;
+		emit connectedChanged(m_connected);
+	}
+
+	QString sv = QString::fromStdString(wsr.GetESSID());
+	if(m_essid != sv)
+	{
+		m_essid = sv;
+		emit essidChanged(m_essid);
+	}
+
+	sv = QString::fromStdString(wsr.GetMACAddrStr());
+	if(m_macAddr != sv)
+	{
+		m_macAddr = sv;
+		emit macAddrChanged(m_macAddr);
+	}
+
+	sv = QString::fromStdString(wsr.GetFreqStr());
+	if(m_frequency != sv)
+	{
+		m_frequency = sv;
+		emit frequencyChanged(m_frequency);
+	}
+
+	int iv = wsr.GetChannel();
+	if(m_channel != iv)
+	{
+		m_channel = iv;
+		emit channelChanged(m_channel);
+	}
+
+	unsigned int uv = wsr.GetQualityPercent();
+	if(m_qualPerc != uv)
+	{
+		m_qualPerc = uv;
+		emit qualPercChanged(m_qualPerc);
+	}
+
+	iv = wsr.GetQualityBars();
+	if(m_qualBars != iv)
+	{
+		m_qualBars = iv;
+		emit qualBarsChanged(m_qualBars);
+	}
+
+	return true;
+}
+
+bool QGfaWlanConnInfo::connected(void) const
+{
+	return m_connected;
+}
+
+QString QGfaWlanConnInfo::essid(void) const
+{
+	return m_essid;
+}
+
+QString QGfaWlanConnInfo::macAddr(void) const
+{
+	return m_macAddr;
+}
+
+QString QGfaWlanConnInfo::frequency(void) const
+{
+	return m_frequency;
+}
+
+int QGfaWlanConnInfo::channel(void) const
+{
+	return m_channel;
+}
+
+unsigned int QGfaWlanConnInfo::qualPerc(void) const
+{
+	return m_qualPerc;
+}
+
+int QGfaWlanConnInfo::qualBars(void) const
+{
+	return m_qualBars;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
 const QGfaWlanMonSchemaModel::WLAN_MON_ROLES QGfaWlanMonSchemaModel::m_roles[] =
 {
 	{WLR_ESSID,			"EssID"},
@@ -34,7 +156,7 @@ const QGfaWlanMonSchemaModel::WLAN_MON_ROLES QGfaWlanMonSchemaModel::m_roles[] =
 
 /////////////////////////////////////////////////////////////////////////////
 
-QGfaWlanMonSchemaModel::QGfaWlanMonSchemaModel(QObject *pParent) : 	QAbstractTableModel(pParent), m_bScanning(false)
+QGfaWlanMonSchemaModel::QGfaWlanMonSchemaModel(QObject *pParent) : 	QAbstractTableModel(pParent), m_bScanning(false), m_wci(pParent)
 {
     setObjectName("QGfaWlanMonSchemaModel");
 	static_assert(_countof(m_roles) == (WLR_LAST - WLR_ESSID), "enum WlanModelRoles does not match array 'QGfaWlanMonSchemaModel::m_roles[]'!");
@@ -88,6 +210,7 @@ QVariant QGfaWlanMonSchemaModel::data(const QModelIndex &index, int role) const
 		val = wsr.channel;
 		break;
 	case WLR_MODE_STR:
+		val = wsr.modeStr;
 		break;
 	case WLR_ENCRYPTED:
 		val = wsr.encrypted;
@@ -129,6 +252,17 @@ QHash<int, QByteArray> QGfaWlanMonSchemaModel::roleNames(void) const
 
 /////////////////////////////////////////////////////////////////////////////
 
+void QGfaWlanMonSchemaModel::updateConnectionInfo(QString interface)
+{
+	CGfaWifiScanResults wsr;
+	if(m_wlMon.GetConnectionInfo(interface.toStdString().c_str(), wsr))
+		m_wci.fromWifiScanResults(wsr);
+	else
+		m_wci.clear();
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
 void QGfaWlanMonSchemaModel::startScan(void)
 {
 	if(m_wlMon.IwSocketOpen())
@@ -150,6 +284,11 @@ bool QGfaWlanMonSchemaModel::scanning(void) const
 	return m_bScanning;
 }
 
+QGfaWlanConnInfo* QGfaWlanMonSchemaModel::wlanConnInfo(void)
+{
+	return &m_wci;
+}
+
 void QGfaWlanMonSchemaModel::updateModel(void)
 {
 	beginResetModel();
@@ -166,6 +305,7 @@ void QGfaWlanMonSchemaModel::updateModel(void)
 		wsr.essid	= QString::fromStdString(m_wlMon.GetESSID(i));
 		wsr.macStr	= QString::fromStdString(m_wlMon.GetMACAddrStr(i));
 		wsr.qualStr = QString::fromStdString(m_wlMon.GetQualityStr(i));
+		wsr.modeStr = QString::fromStdString(m_wlMon.GetOpModeStr(i));
 		wsr.qualPerc = m_wlMon.GetQualityPercent(i);
 		wsr.qualBars = m_wlMon.GetQualityBars(i);
 		wsr.connected = m_wlMon.GetConnected(i);