[Pkg-running-devel] [openambit] 10/131: Take care of unknown data in XML generation [touch: 9]

Christian Perrier bubulle at moszumanska.debian.org
Thu Jul 17 20:19:06 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 ac443cd6fd1f9290b7691ba32856f572bf7ff305
Author: Emil Ljungdahl <emil at kratern.se>
Date:   Thu Dec 12 20:00:30 2013 +0100

    Take care of unknown data in XML generation
    [touch: 9]
---
 src/openambit/logentry.cpp   | 11 ++++++++
 src/openambit/logstore.cpp   | 62 ++++++++++++++++++++++++++++++++------------
 src/openambit/movescount.cpp |  2 ++
 3 files changed, 58 insertions(+), 17 deletions(-)

diff --git a/src/openambit/logentry.cpp b/src/openambit/logentry.cpp
index c687d0c..b09dfcd 100644
--- a/src/openambit/logentry.cpp
+++ b/src/openambit/logentry.cpp
@@ -56,6 +56,12 @@ LogEntry::LogEntry(const LogEntry &other)
                         memcpy(logEntry->samples[i].u.gps_base.satellites, other.logEntry->samples[i].u.gps_base.satellites, sizeof(ambit_log_gps_satellite_t)*logEntry->samples[i].u.gps_base.satellites_count);
                     }
                 }
+                if (other.logEntry->samples[i].type == ambit_log_sample_type_unknown) {
+                    if (other.logEntry->samples[i].u.unknown.datalen > 0 && other.logEntry->samples[i].u.unknown.data != NULL) {
+                        logEntry->samples[i].u.unknown.data = (uint8_t*)malloc(other.logEntry->samples[i].u.unknown.datalen);
+                        memcpy(logEntry->samples[i].u.unknown.data, other.logEntry->samples[i].u.unknown.data, other.logEntry->samples[i].u.unknown.datalen);
+                    }
+                }
             }
         }
     }
@@ -95,6 +101,11 @@ LogEntry::~LogEntry()
                         free(logEntry->samples[i].u.gps_base.satellites);
                     }
                 }
+                if (logEntry->samples[i].type == ambit_log_sample_type_unknown) {
+                    if (logEntry->samples[i].u.unknown.data != NULL) {
+                        free(logEntry->samples[i].u.unknown.data);
+                    }
+                }
             }
             free(logEntry->samples);
         }
diff --git a/src/openambit/logstore.cpp b/src/openambit/logstore.cpp
index e57f089..8e43407 100644
--- a/src/openambit/logstore.cpp
+++ b/src/openambit/logstore.cpp
@@ -48,6 +48,7 @@ static sample_type_names_t sampleTypeNames[] = {
     { ambit_log_sample_type_time, "time" },
     { ambit_log_sample_type_activity, "activity" },
     { ambit_log_sample_type_position, "position" },
+    { ambit_log_sample_type_unknown, "unknown" },
     { (ambit_log_sample_type_t)0, "" }
 };
 
@@ -893,6 +894,23 @@ void LogStore::XMLReader::readLogSamples()
                             xml.skipCurrentElement();
                         }
                         break;
+                    case ambit_log_sample_type_unknown:
+                        if (xml.name() == "Data") {
+                            QByteArray val = xml.readElementText().toLocal8Bit();
+                            const char *c_str = val.data();
+                            if (val.length() >= 2) {
+                                logEntry->logEntry->samples[sampleCount].u.unknown.data = (uint8_t*)malloc(val.length()/2);
+                                for (int i=0; i<val.length()/2; i++) {
+                                    sscanf(c_str, "%2hhx", &logEntry->logEntry->samples[sampleCount].u.unknown.data[i]);
+                                    c_str += 2 * sizeof(char);
+                                }
+                            }
+                        }
+                        else {
+                            /* Should not get here! */
+                            xml.skipCurrentElement();
+                        }
+                        break;
                     default:
                         xml.skipCurrentElement();
                     }
@@ -1436,6 +1454,15 @@ bool LogStore::XMLWriter::writeLogSample(ambit_log_sample_t *sample)
         xml.writeTextElement("Latitude", QString("%1").arg(sample->u.position.latitude));
         xml.writeTextElement("Longitude", QString("%1").arg(sample->u.position.longitude));
         break;
+    case ambit_log_sample_type_unknown:
+    {
+        QString data = "";
+        for (size_t i=0; i<sample->u.unknown.datalen; i++) {
+            data += data.sprintf("%02x", sample->u.unknown.data[i]);
+        }
+        xml.writeTextElement("Data", data);
+        break;
+    }
     }
 
     xml.writeEndElement();
@@ -1517,23 +1544,24 @@ bool LogStore::XMLWriter::writePeriodicSample(ambit_log_sample_t *sample)
             break;
         case ambit_log_sample_periodic_type_snr:
         {
-            QString snr = QString("%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x")
-                                           .arg(value->u.snr[0])
-                                           .arg(value->u.snr[1])
-                                           .arg(value->u.snr[2])
-                                           .arg(value->u.snr[3])
-                                           .arg(value->u.snr[4])
-                                           .arg(value->u.snr[5])
-                                           .arg(value->u.snr[6])
-                                           .arg(value->u.snr[7])
-                                           .arg(value->u.snr[8])
-                                           .arg(value->u.snr[9])
-                                           .arg(value->u.snr[10])
-                                           .arg(value->u.snr[11])
-                                           .arg(value->u.snr[12])
-                                           .arg(value->u.snr[13])
-                                           .arg(value->u.snr[14])
-                                           .arg(value->u.snr[15]);
+            QString format;
+            QString snr = format.sprintf("%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
+                                         value->u.snr[0],
+                                         value->u.snr[1],
+                                         value->u.snr[2],
+                                         value->u.snr[3],
+                                         value->u.snr[4],
+                                         value->u.snr[5],
+                                         value->u.snr[6],
+                                         value->u.snr[7],
+                                         value->u.snr[8],
+                                         value->u.snr[9],
+                                         value->u.snr[10],
+                                         value->u.snr[11],
+                                         value->u.snr[12],
+                                         value->u.snr[13],
+                                         value->u.snr[14],
+                                         value->u.snr[15]);
             xml.writeTextElement("SNR", snr);
             break;
         }
diff --git a/src/openambit/movescount.cpp b/src/openambit/movescount.cpp
index f9ae122..37cc842 100644
--- a/src/openambit/movescount.cpp
+++ b/src/openambit/movescount.cpp
@@ -591,6 +591,8 @@ bool MovesCount::XMLWriter::writeLogSample(ambit_log_sample_t *sample, QList<qui
     case ambit_log_sample_type_position:
         //! TODO: Unknown representation!
         break;
+    default:
+        break;
     }
 
     return true;

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