[Pkg-running-devel] [openambit] 113/131: Use new cadence parameters in header

Christian Perrier bubulle at moszumanska.debian.org
Thu Jul 17 20:19:16 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 b89a1f656b6176afe65841f406bf9f94606ba8d6
Author: Emil Ljungdahl <emil at kratern.se>
Date:   Tue May 27 22:08:48 2014 +0200

    Use new cadence parameters in header
---
 src/openambit/logstore.cpp                  | 65 ++++++++++++++++++++++-------
 src/openambit/movescount/movescountjson.cpp |  4 +-
 src/openambit/movescount/movescountxml.cpp  |  5 ++-
 3 files changed, 54 insertions(+), 20 deletions(-)

diff --git a/src/openambit/logstore.cpp b/src/openambit/logstore.cpp
index 0d9c9c2..502ad2e 100644
--- a/src/openambit/logstore.cpp
+++ b/src/openambit/logstore.cpp
@@ -562,6 +562,22 @@ void LogStore::XMLReader::readLogHeader()
                 }
             }
         }
+        else if (xml.name() == "Cadence") {
+            while (xml.readNextStartElement()) {
+                if (xml.name() == "Avg") {
+                    logEntry->logEntry->header.cadence_avg = xml.readElementText().toUInt();
+                }
+                else if (xml.name() == "Max") {
+                    logEntry->logEntry->header.cadence_max = xml.readElementText().toUInt();
+                }
+                else if (xml.name() == "MaxTime") {
+                    logEntry->logEntry->header.cadence_max_time = xml.readElementText().toUInt();
+                }
+                else {
+                    xml.skipCurrentElement();
+                }
+            }
+        }
         else if (xml.name() == "Altitude") {
             while (xml.readNextStartElement()) {
                 if (xml.name() == "Max") {
@@ -670,7 +686,14 @@ void LogStore::XMLReader::readLogHeader()
         else if (xml.name() == "Unknown3") {
             QByteArray val = xml.readElementText().toLocal8Bit();
             const char *c_str = val.data();
-            for (int i=0; i<6 && i<val.length()/2; i++) {
+            // Handle previously unknown cadence data
+            if (val.length() == 12) {
+                sscanf(c_str, "%2hhx", &logEntry->logEntry->header.cadence_max);
+                c_str += 2 * sizeof(char);
+                sscanf(c_str, "%2hhx", &logEntry->logEntry->header.cadence_avg);
+                c_str += 2 * sizeof(char);
+            }
+            for (int i=0; i<4 && i<val.length()/2; i++) {
                 sscanf(c_str, "%2hhx", &logEntry->logEntry->header.unknown3[i]);
                 c_str += 2 * sizeof(char);
             }
@@ -678,7 +701,18 @@ void LogStore::XMLReader::readLogHeader()
         else if (xml.name() == "Unknown4") {
             QByteArray val = xml.readElementText().toLocal8Bit();
             const char *c_str = val.data();
-            for (int i=0; i<8 && i<val.length()/2; i++) {
+            // Handle previously unknown cadence data
+            if (val.length() == 16) {
+                uint32_t cadence_max_time = 0;
+                uint8_t tmpval;
+                for (int i=0; i<4; i++) {
+                    sscanf(c_str, "%2hhx", &tmpval);
+                    cadence_max_time |= (tmpval << (8*(3-i)));
+                    c_str += 2 * sizeof(char);
+                }
+                logEntry->logEntry->header.cadence_max_time = cadence_max_time;
+            }
+            for (int i=0; i<4 && i<val.length()/2; i++) {
                 sscanf(c_str, "%2hhx", &logEntry->logEntry->header.unknown4[i]);
                 c_str += 2 * sizeof(char);
             }
@@ -1316,6 +1350,11 @@ bool LogStore::XMLWriter::writeLogEntry()
     xml.writeTextElement("Max", QString("%1").arg(logEntry->header.speed_max));
     xml.writeTextElement("MaxTime", QString("%1").arg(logEntry->header.speed_max_time));
     xml.writeEndElement();
+    xml.writeStartElement("Cadence");
+    xml.writeTextElement("Avg", QString("%1").arg(logEntry->header.cadence_avg));
+    xml.writeTextElement("Max", QString("%1").arg(logEntry->header.cadence_max));
+    xml.writeTextElement("MaxTime", QString("%1").arg(logEntry->header.cadence_max_time));
+    xml.writeEndElement();
     xml.writeStartElement("Altitude");
     xml.writeTextElement("Max", QString("%1").arg(logEntry->header.altitude_max));
     xml.writeTextElement("Min", QString("%1").arg(logEntry->header.altitude_min));
@@ -1355,21 +1394,15 @@ bool LogStore::XMLWriter::writeLogEntry()
     xml.writeTextElement("Unknown1", hexstring);
     hexstring = hexstring.sprintf("%02x", logEntry->header.unknown2);
     xml.writeTextElement("Unknown2", hexstring);
-    hexstring = hexstring.sprintf("%02x%02x%02x%02x%02x%02x", logEntry->header.unknown3[0],
-                                                              logEntry->header.unknown3[1],
-                                                              logEntry->header.unknown3[2],
-                                                              logEntry->header.unknown3[3],
-                                                              logEntry->header.unknown3[4],
-                                                              logEntry->header.unknown3[5]);
+    hexstring = hexstring.sprintf("%02x%02x%02x%02x", logEntry->header.unknown3[0],
+                                                      logEntry->header.unknown3[1],
+                                                      logEntry->header.unknown3[2],
+                                                      logEntry->header.unknown3[3]);
     xml.writeTextElement("Unknown3", hexstring);
-    hexstring = hexstring.sprintf("%02x%02x%02x%02x%02x%02x%02x%02x", logEntry->header.unknown4[0],
-                                                                      logEntry->header.unknown4[1],
-                                                                      logEntry->header.unknown4[2],
-                                                                      logEntry->header.unknown4[3],
-                                                                      logEntry->header.unknown4[4],
-                                                                      logEntry->header.unknown4[5],
-                                                                      logEntry->header.unknown4[6],
-                                                                      logEntry->header.unknown4[7]);
+    hexstring = hexstring.sprintf("%02x%02x%02x%02x", logEntry->header.unknown4[0],
+                                                      logEntry->header.unknown4[1],
+                                                      logEntry->header.unknown4[2],
+                                                      logEntry->header.unknown4[3]);
     xml.writeTextElement("Unknown4", hexstring);
     hexstring = hexstring.sprintf("%02x%02x%02x%02x", logEntry->header.unknown5[0],
                                                       logEntry->header.unknown5[1],
diff --git a/src/openambit/movescount/movescountjson.cpp b/src/openambit/movescount/movescountjson.cpp
index 1503dd9..bbb30b7 100644
--- a/src/openambit/movescount/movescountjson.cpp
+++ b/src/openambit/movescount/movescountjson.cpp
@@ -233,7 +233,7 @@ int MovesCountJSON::generateLogData(LogEntry *logEntry, QByteArray &output)
     content.insert("ActivityID", logEntry->logEntry->header.activity_type);
     content.insert("AscentAltitude", (double)logEntry->logEntry->header.ascent);
     content.insert("AscentTime", (double)logEntry->logEntry->header.ascent_time/1000.0);
-    content.insert("AvgCadence", QVariant::Invalid);
+    content.insert("AvgCadence", logEntry->logEntry->header.cadence_avg);
     content.insert("AvgHR", logEntry->logEntry->header.heartrate_avg);
     content.insert("AvgSpeed", (double)logEntry->logEntry->header.speed_avg/3600.0);
     content.insert("DescentAltitude", (double)logEntry->logEntry->header.descent);
@@ -261,7 +261,7 @@ int MovesCountJSON::generateLogData(LogEntry *logEntry, QByteArray &output)
     if (logEntry->logEntry->header.altitude_min >= -1000 && logEntry->logEntry->header.altitude_min <= 10000)
         content.insert("LowAltitude", (double)logEntry->logEntry->header.altitude_min);
     content.insert("Marks", marksContent);
-    content.insert("MaxCadence", QVariant::Invalid);
+    content.insert("MaxCadence", logEntry->logEntry->header.cadence_max);
     content.insert("MaxSpeed", (double)logEntry->logEntry->header.speed_max/3600.0);
     if (logEntry->logEntry->header.temperature_max >= -1000 && logEntry->logEntry->header.temperature_max <= 1000) {
         content.insert("MaxTemp", (double)logEntry->logEntry->header.temperature_max/10.0);
diff --git a/src/openambit/movescount/movescountxml.cpp b/src/openambit/movescount/movescountxml.cpp
index b23b6e2..523bfd1 100644
--- a/src/openambit/movescount/movescountxml.cpp
+++ b/src/openambit/movescount/movescountxml.cpp
@@ -217,9 +217,10 @@ bool MovesCountXML::XMLWriter::writeLogEntry()
     xml.writeTextElement("Max", QString::number((double)logEntry->logEntry->header.speed_max/3600.0, 'g', 16));
     xml.writeTextElement("MaxTime", QString::number((double)logEntry->logEntry->header.speed_max_time/1000.0, 'g', 16));
     xml.writeEndElement();
-    // We have no idea about cadence yet, but we better include an empty tag!
     xml.writeStartElement("Cadence");
-    xml.writeTextElement("MaxTime", QString::number(0));
+    xml.writeTextElement("Avg", QString::number((double)logEntry->logEntry->header.cadence_avg/60.0, 'g', 16));
+    xml.writeTextElement("Max", QString::number((double)logEntry->logEntry->header.cadence_max/60.0, 'g', 16));
+    xml.writeTextElement("MaxTime", QString::number((double)logEntry->logEntry->header.cadence_max_time/1000.0, 'g', 16));
     xml.writeEndElement();
     xml.writeStartElement("Altitude");
     xml.writeTextElement("Max", QString("%1").arg(logEntry->logEntry->header.altitude_max));

-- 
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