[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