From 52f5cfe9d7d9a6c4a2c7f047bd01cd85ed25d2d9 Mon Sep 17 00:00:00 2001 From: Baili Feng Date: Thu, 11 Jan 2018 15:25:27 +0800 Subject: [PATCH] init condition with attr CLOCK_MONOTONIC Use MONOTONIC time to keep consistence with pthread_cond_timedwait. CRs-fixed: 2169171 Change-Id: I25f308ff343e2f9f938275a572fbff35b659e782 --- gnss/GnssAdapter.cpp | 13 ++++++++++--- utils/loc_log.cpp | 13 +++++++------ .../loc_pla/include/platform_lib_macros.h | 7 ++++--- .../loc_pla/src/platform_lib_log_util.cpp | 7 ++++--- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/gnss/GnssAdapter.cpp b/gnss/GnssAdapter.cpp index c1e55ad1..d30094d2 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 ca78f155..9fad9e6e 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 39e33dcc..9a806bf4 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 fb4f2fe0..3cb51a30 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; }