diff options
-rw-r--r-- | libgpsd_core.c | 1 | ||||
-rw-r--r-- | ppsthread.c | 6 | ||||
-rw-r--r-- | ppsthread.h | 2 | ||||
-rw-r--r-- | timehint.c | 4 |
4 files changed, 5 insertions, 8 deletions
diff --git a/libgpsd_core.c b/libgpsd_core.c index ce023f63..306bca13 100644 --- a/libgpsd_core.c +++ b/libgpsd_core.c @@ -422,7 +422,6 @@ void gpsd_clear(struct gps_device_t *session) memset((void *)&session->pps_thread, 0, sizeof(session->pps_thread)); session->pps_thread.devicefd = session->gpsdata.gps_fd; session->pps_thread.devicename = session->gpsdata.dev.path; - session->pps_thread.pps_hook = NULL; session->pps_thread.log_hook = ppsthread_log; session->pps_thread.context = (void *)session; #endif /* PPS_ENABLE */ diff --git a/ppsthread.c b/ppsthread.c index 1f770074..1b9aba03 100644 --- a/ppsthread.c +++ b/ppsthread.c @@ -758,8 +758,7 @@ static void *gpsd_ppsmonitor(void *arg) * a few more sanity checks * call the report hook with our PPS report */ - while (thread_context->report_hook != NULL - || thread_context->pps_hook != NULL) { + while (thread_context->report_hook != NULL) { bool ok = false; char *log = NULL; char *edge_str = ""; @@ -1149,8 +1148,6 @@ static void *gpsd_ppsmonitor(void *arg) log1 = thread_context->report_hook(thread_context, &ppstimes); else log1 = "no report hook"; - if (thread_context->pps_hook != NULL) - thread_context->pps_hook(thread_context, &ppstimes); thread_lock(thread_context); thread_context->ppsout_last = ppstimes; thread_context->ppsout_count++; @@ -1233,7 +1230,6 @@ void pps_thread_deactivate(volatile struct pps_thread_t *pps_thread) /* cleanly terminate PPS thread */ { pps_thread->report_hook = NULL; - pps_thread->pps_hook = NULL; } void pps_thread_fixin(volatile struct pps_thread_t *pps_thread, diff --git a/ppsthread.h b/ppsthread.h index a115163a..e5134e79 100644 --- a/ppsthread.h +++ b/ppsthread.h @@ -27,8 +27,6 @@ struct pps_thread_t { char *devicename; char *(*report_hook)(volatile struct pps_thread_t *, struct timedelta_t *); - void (*pps_hook)(volatile struct pps_thread_t *, - struct timedelta_t *); void (*log_hook)(volatile struct pps_thread_t *, int errlevel, const char *fmt, ...); void (*wrap_hook)(volatile struct pps_thread_t *); @@ -381,6 +381,10 @@ static char *report_hook(volatile struct pps_thread_t *pps_thread, if (session->shm_pps != NULL) (void)ntpshm_put(session, session->shm_pps, td); + /* session context might have a hook set, too */ + if (session->context->pps_hook != NULL) + session->context->pps_hook(session, td); + return log1; } #endif /* PPS_ENABLE */ |