From f5a431dba2594c5f28b1be4c08b0a23e1ccdbb3d Mon Sep 17 00:00:00 2001 From: Aurelio Colosimo <aurelio@aureliocolosimo.it> Date: Mon, 13 May 2013 12:43:44 +0200 Subject: [PATCH] monitor/monitor_ppsi.c: show synchronization status when WR mode is Off Signed-off-by: Aurelio Colosimo <aurelio@aureliocolosimo.it> --- monitor/monitor_ppsi.c | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/monitor/monitor_ppsi.c b/monitor/monitor_ppsi.c index 1777b34df..793834999 100644 --- a/monitor/monitor_ppsi.c +++ b/monitor/monitor_ppsi.c @@ -29,6 +29,12 @@ struct ptpdexp_sync_state_t; extern ptpdexp_sync_state_t cur_servo_state; extern int wrc_man_phase; +extern struct pp_servo servo; +extern struct pp_instance ppi_static; +struct pp_instance *ppi = &ppi_static; + +static void wrc_mon_std_servo(void); + void wrc_mon_gui(void) { static uint32_t last = 0; @@ -70,6 +76,11 @@ void wrc_mon_gui(void) minic_get_stats(&tx, &rx); cprintf(C_GREY, "(RX: %d, TX: %d), mode: ", rx, tx); + if (!WR_DSPOR(ppi)->wrModeOn) { + wrc_mon_std_servo(); + return; + } + switch (ptp_mode) { case WRC_MODE_GM: case WRC_MODE_MASTER: @@ -177,6 +188,43 @@ void wrc_mon_gui(void) return; } +static inline cprintf_ti(int color, struct TimeInternal *ti) +{ + if ((ti->seconds > 0) || + ((ti->seconds == 0) && (ti->nanoseconds >= 0))) + cprintf(color, "%2i.%09i s", ti->seconds, ti->nanoseconds); + else { + if (ti->seconds == 0) + cprintf(color, "-%i.%09i s", ti->seconds, -ti->nanoseconds); + else + cprintf(color, "%2i.%09i s", ti->seconds, -ti->nanoseconds); + } + +} + +static void wrc_mon_std_servo(void) +{ + cprintf(C_RED, "WR Off"); + + /* show standard servo */ + cprintf(C_BLUE, "\n\nSynchronization status:\n\n"); + + cprintf(C_GREY, "Clock offset: "); + + if (DSCUR(ppi)->offsetFromMaster.seconds) + cprintf_ti(C_WHITE, &DSCUR(ppi)->offsetFromMaster); + else { + cprintf(C_WHITE, "%9i ns", DSCUR(ppi)->offsetFromMaster.nanoseconds); + + cprintf(C_GREY, "\nOne-way delay averaged: "); + cprintf(C_WHITE, "%9i ns", DSCUR(ppi)->meanPathDelay.nanoseconds); + + cprintf(C_GREY, "\nObserved drift: "); + cprintf(C_WHITE, "%9i ns", SRV(ppi)->obs_drift); + } +} + + int wrc_log_stats(uint8_t onetime) { static uint32_t last = 0; -- GitLab