[Pkg-running-devel] [openambit] 52/131: Added functionality to store id returned from movescount Implements #12

Christian Perrier bubulle at moszumanska.debian.org
Thu Jul 17 20:19:10 UTC 2014


This is an automated email from the git hooks/post-receive script.

bubulle pushed a commit to branch master
in repository openambit.

commit 36c57d7c9f9a7d027d1f15e4775e5082ffe155a1
Author: Emil Ljungdahl <emil at kratern.se>
Date:   Tue Jan 14 21:36:53 2014 +0100

    Added functionality to store id returned from movescount
    Implements #12
---
 src/openambit/devicemanager.cpp |   8 ++++
 src/openambit/devicemanager.h   |   1 +
 src/openambit/logentry.cpp      |   5 ++
 src/openambit/logentry.h        |   1 +
 src/openambit/logstore.cpp      | 103 ++++++++++++++++++++++++++++------------
 src/openambit/logstore.h        |   8 +++-
 6 files changed, 94 insertions(+), 32 deletions(-)

diff --git a/src/openambit/devicemanager.cpp b/src/openambit/devicemanager.cpp
index c45f5da..7c3578e 100644
--- a/src/openambit/devicemanager.cpp
+++ b/src/openambit/devicemanager.cpp
@@ -45,6 +45,9 @@ void DeviceManager::start()
     // Connect udev listener, fire a chargeTimerHit (implicit device detect), if hit
     udevListener = new UdevListener();
     connect(udevListener, SIGNAL(deviceEvent()), this, SLOT(chargeTimerHit()));
+
+    // Connect movescount Id feedback to local handler
+    connect(movesCount, SIGNAL(logMoveID(QString,QDateTime,QString)), this, SLOT(logMovescountID(QString,QDateTime,QString)));
 }
 
 void DeviceManager::detect()
@@ -158,6 +161,11 @@ void DeviceManager::chargeTimerHit()
     }
 }
 
+void DeviceManager::logMovescountID(QString device, QDateTime time, QString moveID)
+{
+    logStore.storeMovescountId(device, time, moveID);
+}
+
 int DeviceManager::log_skip_cb(void *ref, ambit_log_header_t *log_header)
 {
     DeviceManager *manager = static_cast<DeviceManager*> (ref);
diff --git a/src/openambit/devicemanager.h b/src/openambit/devicemanager.h
index 5b12301..ee3203f 100644
--- a/src/openambit/devicemanager.h
+++ b/src/openambit/devicemanager.h
@@ -57,6 +57,7 @@ public slots:
 
 private slots:
     void chargeTimerHit();
+    void logMovescountID(QString device, QDateTime time, QString moveID);
 
 private:
     static int log_skip_cb(void *ref, ambit_log_header_t *log_header);
diff --git a/src/openambit/logentry.cpp b/src/openambit/logentry.cpp
index 6ff627d..57131a6 100644
--- a/src/openambit/logentry.cpp
+++ b/src/openambit/logentry.cpp
@@ -32,6 +32,10 @@ LogEntry::LogEntry(const LogEntry &other)
 {
     u_int32_t i;
 
+    device = other.device;
+    time = other.time;
+    movescountId = other.movescountId;
+
     if (other.deviceInfo != NULL) {
         deviceInfo = (ambit_device_info_t*)malloc(sizeof(ambit_device_info_t));
         memcpy(deviceInfo, other.deviceInfo, sizeof(ambit_device_info_t));
@@ -84,6 +88,7 @@ LogEntry& LogEntry::operator=(const LogEntry &rhs)
 
     std::swap(device, tmp.device);
     std::swap(time, tmp.time);
+    std::swap(movescountId, tmp.movescountId);
     std::swap(deviceInfo, tmp.deviceInfo);
     std::swap(personalSettings, tmp.personalSettings);
     std::swap(logEntry, tmp.logEntry);
diff --git a/src/openambit/logentry.h b/src/openambit/logentry.h
index 3267b68..73f08c4 100644
--- a/src/openambit/logentry.h
+++ b/src/openambit/logentry.h
@@ -36,6 +36,7 @@ public:
 
     QString device;
     QDateTime time;
+    QString movescountId;
     ambit_device_info_t *deviceInfo;
     ambit_personal_settings_t *personalSettings;
     ambit_log_entry_t *logEntry;
diff --git a/src/openambit/logstore.cpp b/src/openambit/logstore.cpp
index 34ad849..0d9c9c2 100644
--- a/src/openambit/logstore.cpp
+++ b/src/openambit/logstore.cpp
@@ -96,23 +96,28 @@ LogStore::LogStore(QObject *parent) :
 
 LogEntry *LogStore::store(ambit_device_info_t *deviceInfo, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry)
 {
-    LogEntry *retEntry = new LogEntry();
     QDateTime dateTime(QDate(logEntry->header.date_time.year, logEntry->header.date_time.month, logEntry->header.date_time.day),
                        QTime(logEntry->header.date_time.hour, logEntry->header.date_time.minute, logEntry->header.date_time.msec/1000));
 
-    XMLWriter writer(deviceInfo, dateTime, personalSettings, logEntry);
-    QFile logfile(logEntryPath(QString(deviceInfo->serial), dateTime));
-    logfile.open(QIODevice::WriteOnly);
-    writer.write(&logfile);
-    logfile.close();
-    logfile.open(QIODevice::ReadOnly);
-    XMLReader reader(retEntry);
-    if (!reader.read(&logfile)) {
+    return storeInternal(QString(deviceInfo->serial), dateTime, deviceInfo, personalSettings, logEntry);
+}
+
+LogEntry *LogStore::store(LogEntry *entry)
+{
+    return storeInternal(entry->device, entry->time, entry->deviceInfo, entry->personalSettings, entry->logEntry, entry->movescountId);
+}
+
+void LogStore::storeMovescountId(QString device, QDateTime time, QString movescountId)
+{
+    LogEntry *entry, *retEntry;
+
+    if ((entry = read(device, time)) != NULL) {
+        entry->movescountId = movescountId;
+
+        retEntry = store(entry);
         delete retEntry;
-        retEntry = NULL;
+        delete entry;
     }
-
-    return retEntry;
 }
 
 bool LogStore::logExists(QString device, ambit_log_header_t *logHeader)
@@ -125,31 +130,17 @@ bool LogStore::logExists(QString device, ambit_log_header_t *logHeader)
 
 LogEntry *LogStore::read(QString device, QDateTime time)
 {
-    return read(logEntryPath(device, time));
+    return readInternal(logEntryPath(device, time));
 }
 
 LogEntry *LogStore::read(LogDirEntry dirEntry)
 {
-    return read(dirEntry.filename);
+    return readInternal(storagePath + "/" + dirEntry.filename);
 }
 
 LogEntry *LogStore::read(QString filename)
 {
-    LogEntry *retEntry = new LogEntry();
-
-    if (QFile::exists(storagePath + "/" + filename)) {
-        QFile logfile(storagePath + "/" + filename);
-        logfile.open(QIODevice::ReadOnly);
-        XMLReader reader(retEntry);
-        if (!reader.read(&logfile)) {
-            QString error = reader.errorString();
-            qDebug() << error;
-            delete retEntry;
-            retEntry = NULL;
-        }
-    }
-
-    return retEntry;
+    return readInternal(storagePath + "/" + filename);
 }
 
 QList<LogStore::LogDirEntry> LogStore::dir(QString device)
@@ -186,6 +177,45 @@ QString LogStore::logEntryPath(QString device, QDateTime time)
     return storagePath + "/log_" + device + "_" + time.toString("yyyy_MM_dd_hh_mm_ss") + ".log";
 }
 
+LogEntry *LogStore::storeInternal(QString serial, QDateTime dateTime, ambit_device_info_t *deviceInfo, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry, QString movescountId)
+{
+    LogEntry *retEntry = new LogEntry();
+
+    XMLWriter writer(deviceInfo, dateTime, movescountId, personalSettings, logEntry);
+    QFile logfile(logEntryPath(serial, dateTime));
+    logfile.open(QIODevice::WriteOnly);
+    writer.write(&logfile);
+    logfile.close();
+    logfile.open(QIODevice::ReadOnly);
+    XMLReader reader(retEntry);
+    if (!reader.read(&logfile)) {
+        delete retEntry;
+        retEntry = NULL;
+    }
+
+    return retEntry;
+}
+
+LogEntry *LogStore::readInternal(QString path)
+{
+    LogEntry *retEntry = NULL;
+
+    if (QFile::exists(path)) {
+        retEntry = new LogEntry();
+        QFile logfile(path);
+        logfile.open(QIODevice::ReadOnly);
+        XMLReader reader(retEntry);
+        if (!reader.read(&logfile)) {
+            QString error = reader.errorString();
+            qDebug() << error;
+            delete retEntry;
+            retEntry = NULL;
+        }
+    }
+
+    return retEntry;
+}
+
 
 
 LogStore::XMLReader::XMLReader(LogEntry *logEntry) : logEntry(logEntry)
@@ -227,6 +257,9 @@ void LogStore::XMLReader::readRoot()
         else if (xml.name() == "Time") {
             readTime();
         }
+        else if (xml.name() == "MovescountId") {
+            readMovescountId();
+        }
         else if (xml.name() == "DeviceInfo") {
             readDeviceInfo();
         }
@@ -257,6 +290,13 @@ void LogStore::XMLReader::readTime()
     logEntry->time = QDateTime::fromString(datestring, Qt::ISODate);
 }
 
+void LogStore::XMLReader::readMovescountId()
+{
+    Q_ASSERT(xml.isStartElement() && xml.name() == "MovescountId");
+
+    logEntry->movescountId = xml.readElementText();
+}
+
 void LogStore::XMLReader::readDeviceInfo()
 {
     QRegExp versionRX("([0-9]+)\\.([0-9]+)\\.([0-9]+)");
@@ -1158,8 +1198,8 @@ void LogStore::XMLReader::readPeriodicSample(QList<ambit_log_sample_periodic_val
 }
 
 
-LogStore::XMLWriter::XMLWriter(ambit_device_info_t *deviceInfo, QDateTime time, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry) :
-    deviceInfo(deviceInfo), time(time), personalSettings(personalSettings), logEntry(logEntry)
+LogStore::XMLWriter::XMLWriter(ambit_device_info_t *deviceInfo, QDateTime time, QString movescountId, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry) :
+    deviceInfo(deviceInfo), time(time), movescountId(movescountId), personalSettings(personalSettings), logEntry(logEntry)
 {
     xml.setAutoFormatting(true);
 }
@@ -1177,6 +1217,7 @@ bool LogStore::XMLWriter::write(QIODevice *device)
 
     xml.writeTextElement("SerialNumber", QString("%1").arg(deviceInfo->serial));
     xml.writeTextElement("Time", time.toString(Qt::ISODate));
+    xml.writeTextElement("MovescountId", QString("%1").arg(movescountId));
     ret = writeDeviceInfo();
     ret = writePersonalSettings();
     if (ret) {
diff --git a/src/openambit/logstore.h b/src/openambit/logstore.h
index 32e5443..1ada21f 100644
--- a/src/openambit/logstore.h
+++ b/src/openambit/logstore.h
@@ -46,6 +46,8 @@ public:
 
     explicit LogStore(QObject *parent = 0);
     LogEntry *store(ambit_device_info_t *deviceInfo, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry);
+    LogEntry *store(LogEntry *entry);
+    void storeMovescountId(QString device, QDateTime time, QString movescountId);
     bool logExists(QString device, ambit_log_header_t *logHeader);
     LogEntry *read(QString device, QDateTime time);
     LogEntry *read(LogDirEntry dirEntry);
@@ -57,6 +59,8 @@ public slots:
 
 private:
     QString logEntryPath(QString device, QDateTime time);
+    LogEntry *storeInternal(QString serial, QDateTime dateTime, ambit_device_info_t *deviceInfo, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry, QString movescountId = "");
+    LogEntry *readInternal(QString path);
 
     QString storagePath;
 
@@ -71,6 +75,7 @@ private:
         void readRoot();
         void readSerial();
         void readTime();
+        void readMovescountId();
         void readDeviceInfo();
         void readPersonalSettings();
         void readLog();
@@ -84,7 +89,7 @@ private:
     class XMLWriter
     {
     public:
-        XMLWriter(ambit_device_info_t *deviceInfo, QDateTime time, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry);
+        XMLWriter(ambit_device_info_t *deviceInfo, QDateTime time, QString movescountId, ambit_personal_settings_t *personalSettings, ambit_log_entry_t *logEntry);
         bool write(QIODevice *device);
 
     private:
@@ -96,6 +101,7 @@ private:
 
         ambit_device_info_t *deviceInfo;
         QDateTime time;
+        QString movescountId;
         QXmlStreamWriter xml;
         ambit_personal_settings_t *personalSettings;
         ambit_log_entry_t *logEntry;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-running/openambit.git



More information about the Pkg-running-devel mailing list