Commit 7f4bdfa3 authored by Grzegorz Daniluk's avatar Grzegorz Daniluk

fix displaying 64bit values for long distance WR links

parent 3485682c
......@@ -25,6 +25,22 @@
#define UI_REFRESH_PERIOD TICS_PER_SECOND /* 1 sec */
#define PRINT64_FACTOR 1000000000
char* print64(unsigned long long x)
{
uint32_t h_half, l_half;
static char buf[2*10+1]; //2x 32-bit value + \0
if (x < PRINT64_FACTOR)
sprintf(buf, "%u", (uint32_t)x);
else{
h_half = (uint32_t)(x/PRINT64_FACTOR);
l_half = (uint32_t)(x-h_half*PRINT64_FACTOR);
sprintf(buf, "%u%u", h_half, l_half);
}
return buf;
}
extern ptpdexp_sync_state_t cur_servo_state;
extern int wrc_man_phase;
......@@ -132,10 +148,9 @@ void wrc_mon_gui(void)
cprintf(C_BLUE, "\nTiming parameters:\n\n");
cprintf(C_GREY, "Round-trip time (mu): ");
cprintf(C_WHITE, "%9d ps\n", (int32_t) (cur_servo_state.mu));
cprintf(C_WHITE, "%s ps\n", print64(cur_servo_state.mu));
cprintf(C_GREY, "Master-slave delay: ");
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.delay_ms));
cprintf(C_WHITE, "%s ps\n", print64(cur_servo_state.delay_ms));
cprintf(C_GREY, "Master PHY delays: ");
cprintf(C_WHITE, "TX: %d ps, RX: %d ps\n",
(int32_t) cur_servo_state.delta_tx_m,
......@@ -148,12 +163,12 @@ void wrc_mon_gui(void)
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.total_asymmetry));
cprintf(C_GREY, "Cable rtt delay: ");
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.mu) -
(int32_t) cur_servo_state.delta_tx_m -
(int32_t) cur_servo_state.delta_rx_m -
(int32_t) cur_servo_state.delta_tx_s -
(int32_t) cur_servo_state.delta_rx_s);
cprintf(C_WHITE, "%9s ps\n", print64(cur_servo_state.mu -
cur_servo_state.delta_tx_m -
cur_servo_state.delta_rx_m -
cur_servo_state.delta_tx_s -
cur_servo_state.delta_rx_s));
cprintf(C_GREY, "Clock offset: ");
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.cur_offset));
......@@ -201,19 +216,18 @@ int wrc_log_stats(uint8_t onetime)
aux_stat = spll_get_aux_status(0);
mprintf("aux:%x ", aux_stat);
mprintf("sec:%d nsec:%d ", (uint32_t) sec, nsec); /* fixme: clock is not always 125 MHz */
mprintf("mu:%d ", (int32_t) cur_servo_state.mu);
mprintf("dms:%d ", (int32_t) cur_servo_state.delay_ms);
mprintf("mu:%s ", print64(cur_servo_state.mu));
mprintf("dms:%s ", print64(cur_servo_state.delay_ms));
mprintf("dtxm:%d drxm:%d ", (int32_t) cur_servo_state.delta_tx_m,
(int32_t) cur_servo_state.delta_rx_m);
mprintf("dtxs:%d drxs:%d ", (int32_t) cur_servo_state.delta_tx_s,
(int32_t) cur_servo_state.delta_rx_s);
mprintf("asym:%d ", (int32_t) (cur_servo_state.total_asymmetry));
mprintf("crtt:%d ",
(int32_t) (cur_servo_state.mu) -
(int32_t) cur_servo_state.delta_tx_m -
(int32_t) cur_servo_state.delta_rx_m -
(int32_t) cur_servo_state.delta_tx_s -
(int32_t) cur_servo_state.delta_rx_s);
mprintf("crtt:%s ", print64(cur_servo_state.mu -
cur_servo_state.delta_tx_m -
cur_servo_state.delta_rx_m -
cur_servo_state.delta_tx_s -
cur_servo_state.delta_rx_s));
mprintf("cko:%d ", (int32_t) (cur_servo_state.cur_offset));
mprintf("setp:%d ", (int32_t) (cur_servo_state.cur_setpoint));
mprintf("hd:%d md:%d ad:%d ", spll_get_dac(-1), spll_get_dac(0),
......
......@@ -35,6 +35,22 @@ struct pp_instance *ppi = &ppi_static;
static void wrc_mon_std_servo(void);
#define PRINT64_FACTOR 1000000000LL
char* print64(unsigned long long x)
{
uint32_t h_half, l_half;
static char buf[2*10+1]; //2x 32-bit value + \0
if (x < PRINT64_FACTOR)
sprintf(buf, "%u", (uint32_t)x);
else{
l_half = __div64_32(&x, PRINT64_FACTOR);
h_half = (uint32_t) x;
sprintf(buf, "%u%u", h_half, l_half);
}
return buf;
}
int wrc_mon_status()
{
struct pp_state_table_item *ip = NULL;
......@@ -160,10 +176,9 @@ void wrc_mon_gui(void)
cprintf(C_BLUE, "\nTiming parameters:\n\n");
cprintf(C_GREY, "Round-trip time (mu): ");
cprintf(C_WHITE, "%9d ps\n", (int32_t) (cur_servo_state.mu));
cprintf(C_WHITE, "%s ps\n", print64(cur_servo_state.mu));
cprintf(C_GREY, "Master-slave delay: ");
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.delay_ms));
cprintf(C_WHITE, "%s ps\n", print64(cur_servo_state.delay_ms));
cprintf(C_GREY, "Master PHY delays: ");
cprintf(C_WHITE, "TX: %d ps, RX: %d ps\n",
(int32_t) cur_servo_state.delta_tx_m,
......@@ -176,12 +191,11 @@ void wrc_mon_gui(void)
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.total_asymmetry));
cprintf(C_GREY, "Cable rtt delay: ");
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.mu) -
(int32_t) cur_servo_state.delta_tx_m -
(int32_t) cur_servo_state.delta_rx_m -
(int32_t) cur_servo_state.delta_tx_s -
(int32_t) cur_servo_state.delta_rx_s);
cprintf(C_WHITE, "%9d ps\n", print64(cur_servo_state.mu -
cur_servo_state.delta_tx_m -
cur_servo_state.delta_rx_m -
cur_servo_state.delta_tx_s -
cur_servo_state.delta_rx_s));
cprintf(C_GREY, "Clock offset: ");
cprintf(C_WHITE, "%9d ps\n",
(int32_t) (cur_servo_state.cur_offset));
......@@ -266,19 +280,18 @@ int wrc_log_stats(uint8_t onetime)
aux_stat = spll_get_aux_status(0);
pp_printf("aux:%x ", aux_stat);
pp_printf("sec:%d nsec:%d ", (uint32_t) sec, nsec); /* fixme: clock is not always 125 MHz */
pp_printf("mu:%d ", (int32_t) cur_servo_state.mu);
pp_printf("dms:%d ", (int32_t) cur_servo_state.delay_ms);
pp_printf("mu:%d ", print64(cur_servo_state.mu));
pp_printf("dms:%d ", print64(cur_servo_state.delay_ms));
pp_printf("dtxm:%d drxm:%d ", (int32_t) cur_servo_state.delta_tx_m,
(int32_t) cur_servo_state.delta_rx_m);
pp_printf("dtxs:%d drxs:%d ", (int32_t) cur_servo_state.delta_tx_s,
(int32_t) cur_servo_state.delta_rx_s);
pp_printf("asym:%d ", (int32_t) (cur_servo_state.total_asymmetry));
pp_printf("crtt:%d ",
(int32_t) (cur_servo_state.mu) -
(int32_t) cur_servo_state.delta_tx_m -
(int32_t) cur_servo_state.delta_rx_m -
(int32_t) cur_servo_state.delta_tx_s -
(int32_t) cur_servo_state.delta_rx_s);
pp_printf("crtt:%d ", print64(cur_servo_state.mu -
cur_servo_state.delta_tx_m -
cur_servo_state.delta_rx_m -
cur_servo_state.delta_tx_s -
cur_servo_state.delta_rx_s));
pp_printf("cko:%d ", (int32_t) (cur_servo_state.cur_offset));
pp_printf("setp:%d ", (int32_t) (cur_servo_state.cur_setpoint));
pp_printf("hd:%d md:%d ad:%d ", spll_get_dac(-1), spll_get_dac(0),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment