Bläddra i källkod

Tiva/SPI-Info implementiert.

Rind 4 år sedan
förälder
incheckning
32baeea093
4 ändrade filer med 287 tillägg och 10 borttagningar
  1. 3 0
      README.md
  2. 19 4
      src/qappctrl.cpp
  3. 80 6
      src/qappctrl.h
  4. 185 0
      src/qsysinfo.cpp

+ 3 - 0
README.md

@@ -21,9 +21,11 @@ libgfaqt.so (-lgfaqt)
 
 **Implementiert:**
 
+* QML-Wrapper für System-Informationen.
 * QML-Wrapper für App-Control.
 * QML-Wrapper für Hotplug-Events.
 * QML-Wrapper für MySql-Info.
+* QML-Wrapper für Tiva/SPI-Info.
 
 ---
 
@@ -38,3 +40,4 @@ libgfaqt.so (-lgfaqt)
 * **1.1.0**
 	* Q-App-Control-Funktion zum Beenden eines Prozesses im Zombie-State hinzugefügt.
 	* MySql-Info implementiert.
+	* Tiva/SPI-Info implementiert.

+ 19 - 4
src/qappctrl.cpp

@@ -68,7 +68,7 @@ bool QGfaAppCtrl::Create(appid_t nAppID, const char *pszDisplayName, int nTimerI
 		{
 			m_nAppID = nAppID;
 			m_nHeavyLoadUpdateIntervalUs = nHeavyLoadUpdateIntervalMs * 1000;
-			::GfaIpcAppCtrlSubscribeSysEvents(m_hAC, GFA_APPCTRL_SYSEVENT_ALL_STG_DEV | GFA_APPCTRL_SYSEVENT_ALL_MYSQL);
+			::GfaIpcAppCtrlSubscribeSysEvents(m_hAC, GFA_APPCTRL_SYSEVENT_ALL_STG_DEV | GFA_APPCTRL_SYSEVENT_ALL_MYSQL | GFA_APPCTRL_SYSEVENT_ALL_TIVA);
 			m_nTimerID = startTimer(nTimerIntMs, Qt::CoarseTimer);
 			
 			bool bBootFromEmmc;
@@ -102,9 +102,9 @@ void QGfaAppCtrl::RegisterQmlTypes(QQmlEngine &rEng, int nVerMajor, int nVerMino
 	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"));
 	qmlRegisterUncreatableType<QGfaAppCtrl>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaAppCtrl", QStringLiteral("class not creatable in QML"));
-//	qmlRegisterUncreatableType<QGfaMySqlSchemaTreeItem>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaStgDevList", QStringLiteral("class not creatable in QML"));
-	qmlRegisterUncreatableType<QGfaMySqlSchemaModel>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaStgDevList", QStringLiteral("class not creatable in QML"));
-	qmlRegisterUncreatableType<QGfaMySqlInfo>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaStgDevList", QStringLiteral("class not creatable in QML"));
+	qmlRegisterUncreatableType<QGfaMySqlSchemaModel>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaMySqlSchemaModel", QStringLiteral("class not creatable in QML"));
+	qmlRegisterUncreatableType<QGfaMySqlInfo>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QGfaMySqlInfo", QStringLiteral("class not creatable in QML"));
+	qmlRegisterUncreatableType<QTivaInfo>("com.gfa.ipc.appctrl", nVerMajor, nVerMinor, "QTivaInfo", QStringLiteral("class not creatable in QML"));
 
 	rEng.rootContext()->setContextProperty(QStringLiteral("qGfaAppCtrl"), this);
 }
@@ -194,6 +194,7 @@ void QGfaAppCtrl::timerEvent(QTimerEvent *event)
 			if(m_bSysInfoRunning)
 			{
 				GFA_SYSINFO_DATABASE sdb;
+				GFA_SYSINFO_SPI spi;
 				nMySqlNotProcessed = GFA_APPCTRL_SYSEVENT_ALL_MYSQL;
 				
 				while((nSysEvt = ::GfaIpcAppCtrlGetNextSysEvt(hAI)))
@@ -263,6 +264,19 @@ void QGfaAppCtrl::timerEvent(QTimerEvent *event)
 							nMySqlNotProcessed &= ~GFA_APPCTRL_SYSEVENT_MYSQL_DATABASE_EVT;
 						}
 						break;
+
+					/////////////////////////////////////////////////////////
+
+					case GFA_APPCTRL_SYSEVENT_TIVA_EVT:
+						if(::GfaIpcAppCtrlGetSysSPI(m_hAC, &spi))
+							m_sysInfo.UpdateSpiInfo(spi, false);
+						else
+							m_sysInfo.ResetSpiInfo();
+						break;
+
+					case GFA_APPCTRL_SYSEVENT_TIVA_RST:
+						m_sysInfo.ResetSpiInfo();
+						break;
 					}
 				}
 				
@@ -282,6 +296,7 @@ void QGfaAppCtrl::timerEvent(QTimerEvent *event)
 			else
 			{
 				m_mySqlInfo.onMySqlInitEvent(false);
+				m_sysInfo.ResetSpiInfo();
 			}
 
 			nAppIdSrc = m_nEvtSrcs;

+ 80 - 6
src/qappctrl.h

@@ -239,6 +239,63 @@ private:
 
 /////////////////////////////////////////////////////////////////////////////
 
+class QTivaInfo : public QObject
+{
+    Q_OBJECT
+	Q_PROPERTY(quint64 upTime READ upTime NOTIFY upTimeChanged)
+	Q_PROPERTY(qint32 hwVersion READ hwVersion NOTIFY hwVersionChanged)
+	Q_PROPERTY(qint32 swVersion READ swVersion NOTIFY swVersionChanged)
+	Q_PROPERTY(double voltPowSup READ voltPowSup NOTIFY voltPowSupChanged)
+	Q_PROPERTY(double voltBakBat READ voltBakBat NOTIFY voltBakBatChanged)
+	Q_PROPERTY(double voltSys READ voltSys NOTIFY voltSysChanged)
+	Q_PROPERTY(double voltBat READ voltBat NOTIFY voltBatChanged)
+	Q_PROPERTY(double tempBoard READ tempBoard NOTIFY tempBoardChanged)
+	Q_PROPERTY(double tempTiva READ tempTiva NOTIFY tempTivaChanged)
+
+public:
+	explicit QTivaInfo(QObject *pParent = NULL);
+	virtual ~QTivaInfo(void);
+
+	void UpdateSpiInfo(const GFA_SYSINFO_SPI &spi, bool bReset);
+	void ResetSpiInfo(void);
+
+signals:
+	void upTimeChanged(quint64 val);
+	void hwVersionChanged(qint32 val);
+	void swVersionChanged(qint32 val);
+	void voltPowSupChanged(double val);
+	void voltBakBatChanged(double val);
+	void voltSysChanged(double val);
+	void voltBatChanged(double val);
+	void tempBoardChanged(double val);
+	void tempTivaChanged(double val);
+
+private:
+	quint64 upTime(void) const;
+	void setUpTime(quint64 val);
+	qint32 hwVersion(void) const;
+	void setHwVersion(qint32 val);
+	qint32 swVersion(void) const;
+	void setSwVersion(qint32 val);
+	double voltPowSup(void) const;
+	void setVoltPowSup(float val);
+	double voltBakBat(void) const;
+	void setVoltBakBat(float val);
+	double voltSys(void) const;
+	void setVoltSys(float val);
+	double voltBat(void) const;
+	void setVoltBat(float val);
+	double tempBoard(void) const;
+	void setTempBoard(float val);
+	double tempTiva(void) const;
+	void setTempTiva(float val);
+
+private:
+	GFA_SYSINFO_SPI m_spiShadow;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
 class QGfaSysInfo : public QObject
 {
     Q_OBJECT
@@ -250,6 +307,7 @@ class QGfaSysInfo : public QObject
 	Q_PROPERTY(quint64 memCached READ memCached NOTIFY memCachedChanged)
     Q_PROPERTY(QGfaStgDevList *stgDev READ stgDev CONSTANT)
     Q_PROPERTY(bool bootFromEmmc READ bootFromEmmc NOTIFY bootFromEmmcChanged)
+    Q_PROPERTY(QTivaInfo *tivaInfo READ tivaInfo CONSTANT)
 
 public:
 	explicit QGfaSysInfo(QObject *pParent = NULL);
@@ -273,6 +331,7 @@ private:
 	quint64 memCached(void) const;
 	QGfaStgDevList* stgDev(void);
 	bool bootFromEmmc(void) const;
+	QTivaInfo* tivaInfo(void);
 
 public:
 	void setSysMemInfo(LPCGFA_APPCTRL_SYSMEM psm, bool bDoHeavyLoadUpdate = false);
@@ -280,22 +339,36 @@ public:
 	void setBootFromEmmc(bool bootFromEmmc);
 
 	inline void diskAdded(int nIndex, const GFA_SYSINFO_DISK &disk) {
-		return m_stgDevList.diskAdded(nIndex, disk);}
+		return m_stgDevList.diskAdded(nIndex, disk);
+	}
 
 	inline void diskRemoved(int nIndex, const GFA_SYSINFO_DISK &disk) {
-		return m_stgDevList.diskRemoved(nIndex, disk);}
+		return m_stgDevList.diskRemoved(nIndex, disk);
+	}
 
 	inline void partitionAdded(int nIndex, const GFA_SYSINFO_PARTITION &part) {
-		return m_stgDevList.partitionAdded(nIndex, part);}
+		return m_stgDevList.partitionAdded(nIndex, part);
+	}
 		
 	inline void partitionRemoved(int nIndex, const GFA_SYSINFO_PARTITION &part) {
-		return m_stgDevList.partitionRemoved(nIndex, part);}
+		return m_stgDevList.partitionRemoved(nIndex, part);
+	}
 
 	inline void mountAdded(int nIndex, const GFA_SYSINFO_PARTITION &part) {
-		return m_stgDevList.mountAdded(nIndex, part);}
+		return m_stgDevList.mountAdded(nIndex, part);
+	}
 
 	inline void mountRemoved(int nIndex, const GFA_SYSINFO_PARTITION &part) {
-		return m_stgDevList.mountRemoved(nIndex, part);}
+		return m_stgDevList.mountRemoved(nIndex, part);
+	}
+
+	inline void UpdateSpiInfo(const GFA_SYSINFO_SPI &spi, bool bReset) {
+		return m_tivaInfo.UpdateSpiInfo(spi, bReset);
+	}
+	
+	inline void ResetSpiInfo(void) {
+		m_tivaInfo.ResetSpiInfo();
+	}
 
 private:
 	bool m_bSysInfoRunning;
@@ -306,6 +379,7 @@ private:
 	quint64 m_nMemBuffers;
 	quint64 m_nMemCached;
 	QGfaStgDevList m_stgDevList;
+	QTivaInfo m_tivaInfo;
 	bool m_bootFromEmmc;
 };
 

+ 185 - 0
src/qsysinfo.cpp

@@ -296,6 +296,186 @@ void QGfaStgDevList::updateModel(void)
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 
+QTivaInfo::QTivaInfo(QObject *pParent) : 	QObject(pParent)
+{
+	memset(&m_spiShadow, 0, sizeof(m_spiShadow));
+}
+
+QTivaInfo::~QTivaInfo(void)
+{
+}
+
+quint64 QTivaInfo::upTime(void) const
+{
+	return m_spiShadow.nUptimeSec;
+}
+
+void QTivaInfo::setUpTime(quint64 val)
+{
+	if(m_spiShadow.nUptimeSec != val)
+	{
+		m_spiShadow.nUptimeSec = val;
+		emit upTimeChanged(m_spiShadow.nUptimeSec);
+	}
+}
+
+qint32 QTivaInfo::hwVersion(void) const
+{
+	return m_spiShadow.nHwVersion;
+}
+
+void QTivaInfo::setHwVersion(qint32 val)
+{
+	if(m_spiShadow.nHwVersion != val)
+	{
+		m_spiShadow.nHwVersion = val;
+		emit hwVersionChanged(m_spiShadow.nHwVersion);
+	}
+}
+
+qint32 QTivaInfo::swVersion(void) const
+{
+	return m_spiShadow.nSwVersion;
+}
+
+void QTivaInfo::setSwVersion(qint32 val)
+{
+	if(m_spiShadow.nSwVersion != val)
+	{
+		m_spiShadow.nSwVersion = val;
+		emit swVersionChanged(m_spiShadow.nSwVersion);
+	}
+}
+
+double QTivaInfo::voltPowSup(void) const
+{
+	return (double)m_spiShadow.adc.fVoltagePowerSupply;
+}
+
+void QTivaInfo::setVoltPowSup(float val)
+{
+	if(m_spiShadow.adc.fVoltagePowerSupply != val)
+	{
+		m_spiShadow.adc.fVoltagePowerSupply = val;
+		emit voltPowSupChanged((double)m_spiShadow.adc.fVoltagePowerSupply);
+	}
+}
+
+double QTivaInfo::voltBakBat(void) const
+{
+	return (double)m_spiShadow.adc.fVoltageBackupBattery;
+}
+
+void QTivaInfo::setVoltBakBat(float val)
+{
+	if(m_spiShadow.adc.fVoltageBackupBattery != val)
+	{
+		m_spiShadow.adc.fVoltageBackupBattery = val;
+		emit voltBakBatChanged((double)m_spiShadow.adc.fVoltageBackupBattery);
+	}
+}
+
+double QTivaInfo::voltSys(void) const
+{
+	return (double)m_spiShadow.adc.fVoltageSys;
+}
+
+void QTivaInfo::setVoltSys(float val)
+{
+	if(m_spiShadow.adc.fVoltageSys != val)
+	{
+		m_spiShadow.adc.fVoltageSys = val;
+		emit voltSysChanged((double)m_spiShadow.adc.fVoltageSys);
+	}
+}
+
+double QTivaInfo::voltBat(void) const
+{
+	return (double)m_spiShadow.adc.fVoltageBattery;
+}
+
+void QTivaInfo::setVoltBat(float val)
+{
+	if(m_spiShadow.adc.fVoltageBattery != val)
+	{
+		m_spiShadow.adc.fVoltageBattery = val;
+		emit voltBatChanged((double)m_spiShadow.adc.fVoltageBattery);
+	}
+}
+
+double QTivaInfo::tempBoard(void) const
+{
+	return (double)m_spiShadow.adc.fTemperatureBoard;
+}
+
+void QTivaInfo::setTempBoard(float val)
+{
+	if(m_spiShadow.adc.fTemperatureBoard != val)
+	{
+		m_spiShadow.adc.fTemperatureBoard = val;
+		emit tempBoardChanged((double)m_spiShadow.adc.fTemperatureBoard);
+	}
+}
+
+double QTivaInfo::tempTiva(void) const
+{
+	return (double)m_spiShadow.adc.fTemperatureTiva;
+}
+
+void QTivaInfo::setTempTiva(float val)
+{
+	if(m_spiShadow.adc.fTemperatureTiva != val)
+	{
+		m_spiShadow.adc.fTemperatureTiva = val;
+		emit tempTivaChanged((double)m_spiShadow.adc.fTemperatureTiva);
+	}
+}
+
+void QTivaInfo::UpdateSpiInfo(const GFA_SYSINFO_SPI &spi, bool bReset)
+{
+	if(bReset)
+	{
+		setUpTime(0);
+		setHwVersion(0);
+		setSwVersion(0);
+		setVoltPowSup(0.f);
+		setVoltBakBat(0.f);
+		setVoltSys(0.f);
+		setVoltBat(0.f);
+		setTempBoard(0.f);
+		setTempTiva(0.f);
+	}
+	else
+	{
+		setUpTime(spi.nUptimeSec);
+		setHwVersion(spi.nHwVersion);
+		setSwVersion(spi.nSwVersion);
+		setVoltPowSup(spi.adc.fVoltagePowerSupply);
+		setVoltBakBat(spi.adc.fVoltageBackupBattery);
+		setVoltSys(spi.adc.fVoltageSys);
+		setVoltBat(spi.adc.fVoltageBattery);
+		setTempBoard(spi.adc.fTemperatureBoard);
+		setTempTiva(spi.adc.fTemperatureTiva);
+	}
+}
+
+void QTivaInfo::ResetSpiInfo(void)
+{
+	setUpTime(0);
+	setHwVersion(0);
+	setSwVersion(0);
+	setVoltPowSup(0.f);
+	setVoltBakBat(0.f);
+	setVoltSys(0.f);
+	setVoltBat(0.f);
+	setTempBoard(0.f);
+	setTempTiva(0.f);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
 QGfaSysInfo::QGfaSysInfo(QObject *pParent) : 	QObject(pParent),
 												m_bSysInfoRunning(false),
 												m_nMemTotal(0),
@@ -451,6 +631,11 @@ QGfaStgDevList* QGfaSysInfo::stgDev(void)
 	return &m_stgDevList;
 }
 
+QTivaInfo* QGfaSysInfo::tivaInfo(void)
+{
+	return &m_tivaInfo;
+}
+
 bool QGfaSysInfo::bootFromEmmc(void) const
 {
 	return m_bootFromEmmc;