File indexing completed on 2024-05-12 05:37:20
0001 /* 0002 SPDX-FileCopyrightText: 2007 Petri Damsten <damu@iki.fi> 0003 SPDX-FileCopyrightText: 2007 Christopher Blauvelt <cblauvelt@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only 0006 */ 0007 0008 #include "hddtemp.h" 0009 0010 #include <QTcpSocket> 0011 0012 #include <QTimerEvent> 0013 0014 #include <QDebug> 0015 0016 HddTemp::HddTemp(QObject *parent) 0017 : QObject(parent) 0018 { 0019 updateData(); 0020 } 0021 0022 HddTemp::~HddTemp() 0023 { 0024 } 0025 0026 QStringList HddTemp::sources() 0027 { 0028 updateData(); 0029 return m_data.keys(); 0030 } 0031 0032 void HddTemp::timerEvent(QTimerEvent *event) 0033 { 0034 killTimer(event->timerId()); 0035 m_cacheValid = false; 0036 } 0037 0038 bool HddTemp::updateData() 0039 { 0040 if (m_cacheValid) { 0041 return true; 0042 } 0043 0044 if (m_failCount > 4) { 0045 return false; 0046 } 0047 0048 QTcpSocket socket; 0049 QString data; 0050 0051 socket.connectToHost(QStringLiteral("localhost"), 7634); 0052 if (socket.waitForConnected(500)) { 0053 while (data.length() < 1024) { 0054 if (!socket.waitForReadyRead(500)) { 0055 if (data.length() > 0) { 0056 break; 0057 } else { 0058 // qDebug() << socket.errorString(); 0059 return false; 0060 } 0061 } 0062 data += QString(socket.readAll()); 0063 } 0064 socket.disconnectFromHost(); 0065 // on success retry fail count 0066 m_failCount = 0; 0067 } else { 0068 m_failCount++; 0069 // qDebug() << socket.errorString(); 0070 return false; 0071 } 0072 const QStringList list = data.split('|'); 0073 int i = 1; 0074 m_data.clear(); 0075 while (i + 4 < list.size()) { 0076 m_data[list[i]].append(list[i + 2]); 0077 m_data[list[i]].append(list[i + 3]); 0078 i += 5; 0079 } 0080 m_cacheValid = true; 0081 startTimer(0); 0082 0083 return true; 0084 } 0085 0086 QVariant HddTemp::data(const QString source, const DataType type) const 0087 { 0088 return m_data[source][type]; 0089 }