From ac7b085449fb49f54225d22c7c229da6ad120e2b Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 12 Sep 2021 19:41:12 +0200 Subject: remove PEN_EPOCH mistake and get usertime from the pen --- smartpensyncer.cc | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'smartpensyncer.cc') diff --git a/smartpensyncer.cc b/smartpensyncer.cc index 9149f33..794b7c5 100644 --- a/smartpensyncer.cc +++ b/smartpensyncer.cc @@ -26,7 +26,7 @@ #include "notebookmodel.h" #include "smartpensyncer.h" -#define BUFFER_SIZE 16 * 1024 +#define BUFFER_SIZE 128 * 1024 namespace { class LockFile @@ -108,7 +108,7 @@ Smartpen::PenTime TimestampFile::get() if (_f.open(QIODevice::ReadOnly | QIODevice::Text)) { QString data = QString::fromUtf8(_f.readLine(32)); _f.close(); - return data.toLongLong(); + return data.toULongLong(); } else { qWarning() << "Could not read timestamp file:" << _f.fileName(); } @@ -219,10 +219,22 @@ bool SmartpenSyncer::syncPen() return false; } - TimestampFile lastSyncFile(_penDataDir.filePath(".lastsync")); + // Get the current user time offset from the pen + // and store it so that we have it even when the pen is offline + TimestampFile userTimeFile(_penDataDir.filePath(PEN_USER_TIME_FILE)); + Smartpen::PenTime userTime = _pen->getPenTime(Smartpen::PenUserTime); + userTimeFile.set(userTime); + qDebug() << "pen time base:" << userTime << Smartpen::fromPenTime(userTime, 0); + + Smartpen::PenTime penTime = _pen->getPenTime(Smartpen::PenRtcTime); + qDebug() << "pen current time:" << penTime << Smartpen::fromPenTime(userTime, penTime); + + // Read when is the last time we synchronized with this pen (in PenTime, not user time) + TimestampFile lastSyncFile(_penDataDir.filePath(PEN_LAST_SYNC_FILE)); Smartpen::PenTime lastSync = lastSyncFile.get(); if (lastSync != 0) lastSync += 1; // We want the changes _from_ the last sync + // Ask the pen for all the changes which happened since the last sync time QList changes = _pen->getChangeList(lastSync); Smartpen::PenTime changesEndTime = 0; @@ -269,9 +281,9 @@ bool SmartpenSyncer::syncNotebook(Smartpen::PenTime lastSync, const Smartpen::Ch } } - LockFile lock(notebookDir.filePath(".sync.lck")); + LockFile lock(notebookDir.filePath(PEN_SYNC_LOCK_FILE)); if (!lock.lock()) { - qWarning() << "Notebook is already being synchronized; delete this file if it is not:" << notebookDir.absoluteFilePath(".sync.lck"); + qWarning() << "Notebook is already being synchronized; delete this file if it is not:" << notebookDir.absoluteFilePath(PEN_SYNC_LOCK_FILE); return false; } @@ -293,9 +305,9 @@ bool SmartpenSyncer::syncPaperReplay(Smartpen::PenTime lastSync, const Smartpen: } } - LockFile lock(replayDir.filePath(".sync.lck")); + LockFile lock(replayDir.filePath(PEN_SYNC_LOCK_FILE)); if (!lock.lock()) { - qWarning() << "Paper replay is already being synchronized; delete this file if it is not:" << replayDir.absoluteFilePath(".sync.lck"); + qWarning() << "Paper replay is already being synchronized; delete this file if it is not:" << replayDir.absoluteFilePath(PEN_SYNC_LOCK_FILE); return false; } @@ -319,7 +331,7 @@ bool SmartpenSyncer::extractZip(QByteArray &zipData, QDir &dir) return false; } - QScopedArrayPointer buffer(new char[BUFFER_SIZE]); + QByteArray buffer(BUFFER_SIZE, Qt::Uninitialized); for (bool more=zip.goToFirstFile(); more; more=zip.goToNextFile()) { QString zipName = zip.getCurrentFileName(); @@ -350,7 +362,7 @@ bool SmartpenSyncer::extractZip(QByteArray &zipData, QDir &dir) } while (!zipFile.atEnd()) { - qint64 read = zipFile.read(buffer.data(), BUFFER_SIZE); + qint64 read = zipFile.read(buffer.data(), buffer.size()); if (read <= 0) { qWarning() << "short read on:" << zipName; zipFile.close(); @@ -368,8 +380,6 @@ bool SmartpenSyncer::extractZip(QByteArray &zipData, QDir &dir) zipFile.close(); } - buffer.reset(); - if (zip.getZipError() == UNZ_OK) { return true; } else { -- cgit v1.2.3