[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