diff options
author | Helmut Schmidt <Helmut.3.Schmidt@continental-corporation.com> | 2015-11-27 16:04:51 +0100 |
---|---|---|
committer | Helmut Schmidt <Helmut.3.Schmidt@continental-corporation.com> | 2015-11-27 16:04:51 +0100 |
commit | 9d2766a3c3caa53900401e2adb44d4132a42ce08 (patch) | |
tree | 154c2ac0b5323813cd27135f21a14993a09f65f7 /logger/test | |
parent | e275e806be3866e2905cf9f30d90001d74080a91 (diff) | |
download | positioning-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.cpp | 26 |
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(); |