summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBaili Feng <bailif@codeaurora.org>2018-01-11 15:25:27 +0800
committerBaili Feng <bailif@codeaurora.org>2018-01-11 19:44:11 +0800
commit52f5cfe9d7d9a6c4a2c7f047bd01cd85ed25d2d9 (patch)
treedd09447429adacf36a85d23339d9b39e696be8cd
parentc98dcaa84072a901167d0083fc3fef6b98077052 (diff)
downloadgps-52f5cfe9d7d9a6c4a2c7f047bd01cd85ed25d2d9.tar.gz
init condition with attr CLOCK_MONOTONIC
Use MONOTONIC time to keep consistence with pthread_cond_timedwait. CRs-fixed: 2169171 Change-Id: I25f308ff343e2f9f938275a572fbff35b659e782
-rw-r--r--gnss/GnssAdapter.cpp13
-rw-r--r--utils/loc_log.cpp13
-rw-r--r--utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h7
-rw-r--r--utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp7
4 files changed, 25 insertions, 15 deletions
diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp
index c1e55ad..d30094d 100644
--- a/gnss/GnssAdapter.cpp
+++ b/gnss/GnssAdapter.cpp
@@ -81,6 +81,13 @@ GnssAdapter::GnssAdapter() :
LOC_LOGD("%s]: Constructor %p", __func__, this);
mUlpPositionMode.mode = LOC_POSITION_MODE_INVALID;
+ pthread_condattr_t condAttr;
+ pthread_condattr_init(&condAttr);
+ pthread_condattr_setclock(&condAttr, CLOCK_MONOTONIC);
+ pthread_cond_init(&mNiData.session.tCond, &condAttr);
+ pthread_cond_init(&mNiData.sessionEs.tCond, &condAttr);
+ pthread_condattr_destroy(&condAttr);
+
/* Set ATL open/close callbacks */
AgpsAtlOpenStatusCb atlOpenStatusCb =
[this](int handle, int isSuccess, char* apn,
@@ -2268,9 +2275,9 @@ GnssAdapter::reportNmea(const char* nmea, size_t length)
GnssNmeaNotification nmeaNotification = {};
nmeaNotification.size = sizeof(GnssNmeaNotification);
- struct timespec tv;
- clock_gettime(CLOCK_MONOTONIC, &tv);
- int64_t now = tv.tv_sec * 1000LL + tv.tv_nsec / 1000000LL;
+ struct timeval tv;
+ gettimeofday(&tv, (struct timezone *) NULL);
+ int64_t now = tv.tv_sec * 1000LL + tv.tv_usec / 1000;
nmeaNotification.timestamp = now;
nmeaNotification.nmea = nmea;
nmeaNotification.length = length;
diff --git a/utils/loc_log.cpp b/utils/loc_log.cpp
index ca78f15..9fad9e6 100644
--- a/utils/loc_log.cpp
+++ b/utils/loc_log.cpp
@@ -165,15 +165,15 @@ RETURN VALUE
===========================================================================*/
char *loc_get_time(char *time_string, size_t buf_size)
{
- struct timespec now; /* sec and usec */
+ struct timeval now; /* sec and usec */
struct tm now_tm; /* broken-down time */
char hms_string[80]; /* HH:MM:SS */
- clock_gettime(CLOCK_MONOTONIC, &now);
+ gettimeofday(&now, NULL);
localtime_r(&now.tv_sec, &now_tm);
strftime(hms_string, sizeof hms_string, "%H:%M:%S", &now_tm);
- snprintf(time_string, buf_size, "%s.%03d", hms_string, (int) (now.tv_nsec / 1000000LL));
+ snprintf(time_string, buf_size, "%s.%03d", hms_string, (int) (now.tv_usec / 1000));
return time_string;
}
@@ -224,13 +224,14 @@ SIDE EFFECTS
===========================================================================*/
char * get_timestamp(char *str, unsigned long buf_size)
{
- struct timespec tv;
+ struct timeval tv;
+ struct timezone tz;
int hh, mm, ss;
- clock_gettime(CLOCK_MONOTONIC, &tv);
+ gettimeofday(&tv, &tz);
hh = tv.tv_sec/3600%24;
mm = (tv.tv_sec%3600)/60;
ss = tv.tv_sec%60;
- snprintf(str, buf_size, "%02d:%02d:%02d.%06ld", hh, mm, ss, tv.tv_nsec / 1000);
+ snprintf(str, buf_size, "%02d:%02d:%02d.%06ld", hh, mm, ss, tv.tv_usec);
return str;
}
diff --git a/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h b/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h
index 39e33dc..9a806bf 100644
--- a/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h
+++ b/utils/platform_lib_abstractions/loc_pla/include/platform_lib_macros.h
@@ -52,13 +52,14 @@ extern "C" {
// LE targets with no logcat support
#define TS_PRINTF(format, x...) \
{ \
- struct timespec tv; \
+ struct timeval tv; \
+ struct timezone tz; \
int hh, mm, ss; \
- clock_gettime(CLOCK_MONOTONIC, &tv); \
+ gettimeofday(&tv, &tz); \
hh = tv.tv_sec/3600%24; \
mm = (tv.tv_sec%3600)/60; \
ss = tv.tv_sec%60; \
- fprintf(stdout,"%02d:%02d:%02d.%06ld]" format "\n", hh, mm, ss, tv.tv_nsec/1000, ##x); \
+ fprintf(stdout,"%02d:%02d:%02d.%06ld]" format "\n", hh, mm, ss, tv.tv_usec, ##x); \
}
#define ALOGE(format, x...) TS_PRINTF("E/%s (%d): " format , LOG_TAG, getpid(), ##x)
diff --git a/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp b/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp
index fb4f2fe..3cb51a3 100644
--- a/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp
+++ b/utils/platform_lib_abstractions/loc_pla/src/platform_lib_log_util.cpp
@@ -30,13 +30,14 @@
char * get_timestamp(char *str, unsigned long buf_size)
{
- struct timespec tv;
+ struct timeval tv;
+ struct timezone tz;
int hh, mm, ss;
- clock_gettime(CLOCK_MONOTONIC, &tv);
+ gettimeofday(&tv, &tz);
hh = tv.tv_sec/3600%24;
mm = (tv.tv_sec%3600)/60;
ss = tv.tv_sec%60;
- snprintf(str, buf_size, "%02d:%02d:%02d.%06ld", hh, mm, ss, tv.tv_nsec / 1000);
+ snprintf(str, buf_size, "%02d:%02d:%02d.%06ld", hh, mm, ss, tv.tv_usec);
return str;
}