summaryrefslogtreecommitdiff
path: root/logger/test
diff options
context:
space:
mode:
authorHelmut Schmidt <Helmut.3.Schmidt@continental-corporation.com>2015-11-27 16:04:51 +0100
committerHelmut Schmidt <Helmut.3.Schmidt@continental-corporation.com>2015-11-27 16:04:51 +0100
commit9d2766a3c3caa53900401e2adb44d4132a42ce08 (patch)
tree154c2ac0b5323813cd27135f21a14993a09f65f7 /logger/test
parente275e806be3866e2905cf9f30d90001d74080a91 (diff)
downloadpositioning-9d2766a3c3caa53900401e2adb44d4132a42ce08.tar.gz
GT-3206 GNSS API: Extend API to provide sensor status information
Diffstat (limited to 'logger/test')
-rw-r--r--logger/test/log-gnss-sns.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/logger/test/log-gnss-sns.cpp b/logger/test/log-gnss-sns.cpp
index 6f98a5c..171cbd7 100644
--- a/logger/test/log-gnss-sns.cpp
+++ b/logger/test/log-gnss-sns.cpp
@@ -34,13 +34,15 @@
#include "gnss-init.h"
#include "gnss.h"
+#include "gnss-status.h"
#include "sns-init.h"
#define GNSS_INIT_MAX_RETRIES 30
-//global variable to control the main loop - will be set by signal handlers
+//global variable to control the main loop - will be set by signal handlers or status callback
static volatile bool sigint = false;
static volatile bool sigterm = false;
+static volatile bool gnss_failure = false;
static void sigHandler (int sig, siginfo_t *siginfo, void *context)
{
@@ -87,6 +89,20 @@ static void cbPosition(const TGNSSPosition position[], uint16_t numElements)
gnssPositionLog(gnsslogGetTimestamp(), position, numElements);
}
+static void cbGNSSStatus(const TGNSSStatus *status)
+{
+ if (status && (status->validityBits & GNSSSTATUS_STATUS_VALID))
+ {
+ char status_string[64];
+ sprintf(status_string, "#GNSS Status: %d", status->status);
+ poslogAddString(status_string);
+ if (status->status == GNSS_STATUS_FAILURE)
+ {
+ gnss_failure = true;
+ }
+ }
+}
+
static void cbAccel(const TAccelerationData accelerationData[], uint16_t numElements)
{
accelerationDataLog(snslogGetTimestamp(), accelerationData, numElements);
@@ -169,11 +185,12 @@ int main()
poslogAddString("#INF gnssInit() success");
gnssRegisterTimeCallback(&cbTime);
gnssRegisterPositionCallback(&cbPosition);
+ gnssRegisterStatusCallback(&cbGNSSStatus);
}
if (is_sns_init_ok || is_gnss_init_ok)
{
- while(!sigint && !sigterm)
+ while(!sigint && !sigterm && !gnss_failure)
{
sleep(1);
}
@@ -190,6 +207,10 @@ int main()
{
poslogAddString("#SIGINT");
}
+ if (gnss_failure)
+ {
+ poslogAddString("#GNSS_STATUS_FAILURE");
+ }
if (is_sns_init_ok)
{
if (is_sns_accel_init_ok)
@@ -206,6 +227,7 @@ int main()
}
if (is_gnss_init_ok)
{
+ gnssDeregisterStatusCallback(&cbGNSSStatus);
gnssDeregisterPositionCallback(&cbPosition);
gnssDeregisterTimeCallback(&cbTime);
gnssDestroy();