Commit b7ab94bc authored by Omar Gabella's avatar Omar Gabella

Full WRPC for Bases to test with Full-WRS

parent bb9aecbb
......@@ -33,9 +33,9 @@ static struct wr_operations wrpc_wr_operations = {
.locking_poll = wrpc_spll_locking_poll,
.locking_disable = wrpc_spll_locking_disable,
.enable_ptracker = wrpc_spll_enable_ptracker,
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
.adjust_in_progress_bc = wrpc_adjust_in_progress_bc,
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// .adjust_in_progress_bc = wrpc_adjust_in_progress_bc,
//#endif // BROADCAST_BASE && BC_EXTRA_MON
.adjust_in_progress = wrpc_adjust_in_progress,
.adjust_counters = wrpc_adjust_counters,
.adjust_phase = wrpc_adjust_phase,
......
......@@ -76,15 +76,15 @@ int wrpc_adjust_in_progress(void)
int wrpc_adjust_in_progress_bc(struct pp_instance *ppi)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
if (shw_pps_gen_busy())
WR_DSPOR(ppi)->ctr_pps_gen_busy++;
else if (spll_shifter_busy(0))
WR_DSPOR(ppi)->ctr_spll_shifter_busy++;
else
WR_DSPOR(ppi)->ctr_not_busy++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// if (shw_pps_gen_busy())
// WR_DSPOR(ppi)->ctr_pps_gen_busy++;
// else if (spll_shifter_busy(0))
// WR_DSPOR(ppi)->ctr_spll_shifter_busy++;
// else
// WR_DSPOR(ppi)->ctr_not_busy++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
return shw_pps_gen_busy() || spll_shifter_busy(0);
}
......
......@@ -9,10 +9,10 @@
#ifndef __PPSI_CONSTANTS_H__
#define __PPSI_CONSTANTS_H__
#ifdef BROADCAST
//#ifdef BROADCAST
/* Counter to reboot the wr_servo if the TRACK_PHASE is not reached */
#define WR_SERVO_MAX_NO_CONVERGE_COUNT 100
#endif // BROADCAST
//#define WR_SERVO_MAX_NO_CONVERGE_COUNT 100
//#endif // BROADCAST
/* general purpose constants */
#define PP_NSEC_PER_SEC (1000*1000*1000)
......@@ -32,11 +32,11 @@
#define PP_DEFAULT_DELAYREQ_INTERVAL 0
#define PP_DEFAULT_SYNC_INTERVAL 0 /* -7 in 802.1AS */
#define PP_DEFAULT_SYNC_RECEIPT_TIMEOUT 3
#ifdef BROADCAST
#define PP_DEFAULT_ANNOUNCE_RECEIPT_TIMEOUT 450 /* 3 by default */
#else
//#ifdef BROADCAST
//#define PP_DEFAULT_ANNOUNCE_RECEIPT_TIMEOUT 450 /* 3 by default */
//#else
#define PP_DEFAULT_ANNOUNCE_RECEIPT_TIMEOUT 20 /* 3 by default */
#endif // BROADCAST
//#endif // BROADCAST
/* Clock classes (pag 55, PTP-2008). See ppsi-manual for an explanation */
#define PP_CLASS_SLAVE_ONLY 255
......
......@@ -15,10 +15,10 @@
*/
int wr_calibrated(struct pp_instance *ppi, unsigned char *pkt, int plen)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibrated_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibrated_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
struct wr_dsport *wrp = WR_DSPOR(ppi);
MsgSignaling wrsig_msg;
......
......@@ -15,10 +15,10 @@
*/
int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_00++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_00++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
struct wr_dsport *wrp = WR_DSPOR(ppi);
int sendmsg = 0;
uint32_t delta;
......@@ -49,10 +49,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
switch (wrp->wrPortState) {
case WR_PORT_CALIBRATION_0:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_0++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_0++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* enable pattern sending */
if (wrp->ops->calib_pattern_enable(ppi, 0, 0, 0) ==
WR_HW_CALIB_OK)
......@@ -61,10 +61,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
break;
case WR_PORT_CALIBRATION_1:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* enable Tx calibration */
if (wrp->ops->calib_enable(ppi, WR_HW_CALIB_TX)
== WR_HW_CALIB_OK)
......@@ -73,10 +73,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
break;
case WR_PORT_CALIBRATION_2:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* wait until Tx calibration is finished */
if (wrp->ops->calib_poll(ppi, WR_HW_CALIB_TX, &delta) ==
WR_HW_CALIB_READY) {
......@@ -95,10 +95,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
}
case WR_PORT_CALIBRATION_3:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_3++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_3++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* disable Tx calibration */
if (wrp->ops->calib_disable(ppi, WR_HW_CALIB_TX)
== WR_HW_CALIB_OK)
......@@ -107,10 +107,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
break;
case WR_PORT_CALIBRATION_4:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_4++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_4++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* disable pattern sending */
if (wrp->ops->calib_pattern_disable(ppi) == WR_HW_CALIB_OK)
wrp->wrPortState = WR_PORT_CALIBRATION_5;
......@@ -118,10 +118,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
break;
case WR_PORT_CALIBRATION_5:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_5++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_5++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* enable Rx calibration using the pattern sent by other port */
if (wrp->ops->calib_enable(ppi, WR_HW_CALIB_RX) ==
WR_HW_CALIB_OK)
......@@ -130,10 +130,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
break;
case WR_PORT_CALIBRATION_6:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_6++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_6++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* wait until Rx calibration is finished */
if (wrp->ops->calib_poll(ppi, WR_HW_CALIB_RX, &delta) ==
WR_HW_CALIB_READY) {
......@@ -153,10 +153,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
}
case WR_PORT_CALIBRATION_7:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_7++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_7++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* disable Rx calibration */
if (wrp->ops->calib_disable(ppi, WR_HW_CALIB_RX)
== WR_HW_CALIB_OK)
......@@ -164,10 +164,10 @@ int wr_calibration(struct pp_instance *ppi, unsigned char *pkt, int plen)
else
break;
case WR_PORT_CALIBRATION_8:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_calibration_8++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_calibration_8++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* send deltas to the other port and go to the next state */
//#ifndef BROADCAST
......
......@@ -15,10 +15,10 @@
*/
int wr_link_on(struct pp_instance *ppi, unsigned char *pkt, int plen)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_link_on_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_link_on_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
struct wr_dsport *wrp = WR_DSPOR(ppi);
int e = 0;
......@@ -40,10 +40,10 @@ int wr_link_on(struct pp_instance *ppi, unsigned char *pkt, int plen)
if (wrp->wrMode == WR_SLAVE)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_link_on_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_link_on_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
ppi->next_state = PPS_SLAVE;
}
else
......
......@@ -15,10 +15,10 @@
*/
int wr_locked(struct pp_instance *ppi, unsigned char *pkt, int plen)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_locked_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_locked_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
int e = 0, sendmsg = 0;
MsgSignaling wrsig_msg;
struct wr_dsport *wrp = WR_DSPOR(ppi);
......@@ -54,10 +54,10 @@ int wr_locked(struct pp_instance *ppi, unsigned char *pkt, int plen)
// DSPOR(ppi)->portIdentity.clockIdentity.id,
// PP_CLOCK_IDENTITY_LENGTH)==0)
// {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_locked_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_locked_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
// ppi->next_state = WRS_RESP_CALIB_REQ;
// }
//#else
......
......@@ -24,24 +24,24 @@ int wr_present(struct pp_instance *ppi, unsigned char *pkt, int plen)
MsgSignaling wrsig_msg;
if (ppi->is_new_state) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_0_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_0_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->wrStateRetry = WR_STATE_RETRY;
sendmsg = 1;
} else if (pp_timeout(ppi, PP_TO_EXT_0)) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_0_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_0_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
if (wr_handshake_retry(ppi))
sendmsg = 1;
else
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_0_3++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_0_3++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
return 0; /* non-wr already */
}
......@@ -50,41 +50,41 @@ int wr_present(struct pp_instance *ppi, unsigned char *pkt, int plen)
ppi->next_state = WRS_S_LOCK;
#else
if (sendmsg) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_0_4++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_0_4++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
__pp_timeout_set(ppi, PP_TO_EXT_0, WR_WRS_PRESENT_TIMEOUT_MS);
e = msg_issue_wrsig(ppi, SLAVE_PRESENT);
}
if (ppi->received_ptp_header.messageType == PPM_SIGNALING) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
msg_unpack_wrsig(ppi, pkt, &wrsig_msg,
&(wrp->msgTmpWrMessageID));
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
if (wrp->msgTmpWrMessageID == LOCK)
{
//#ifdef BROADCAST_BASE
#ifdef BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_3++;
#endif // BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_3++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
// if (memcmp(ppi->received_ptp_header.targetIdentity.clockIdentity.id,
// DSPOR(ppi)->portIdentity.clockIdentity.id,
// PP_CLOCK_IDENTITY_LENGTH)==0)
// {
#ifdef BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_4++;
#endif // BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_4++;
//#endif // BC_EXTRA_MON
// ppi->next_state = WRS_S_LOCK;
// }
//#else
......@@ -96,19 +96,19 @@ int wr_present(struct pp_instance *ppi, unsigned char *pkt, int plen)
if (e == 0)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_00_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_00_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
st_com_execute_slave(ppi);
}
else {
/* nothing, just stay here again */
}
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_present_00_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_present_00_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
ppi->next_delay = WR_DSPOR(ppi)->wrStateTimeout;
return e;
......
......@@ -11,10 +11,10 @@
int wr_resp_calib_req(struct pp_instance *ppi, unsigned char *pkt, int plen)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_resp_calib_req_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_resp_calib_req_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
struct wr_dsport *wrp = WR_DSPOR(ppi);
MsgSignaling wrsig_msg;
int e = 0, enable = 0;
......@@ -56,10 +56,10 @@ int wr_resp_calib_req(struct pp_instance *ppi, unsigned char *pkt, int plen)
// {
// if (send_pattern)
// wrp->ops->calib_pattern_disable(ppi);
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_resp_calib_req_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_resp_calib_req_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
// ppi->next_state = WRS_CALIBRATION;
// }
//#else
......
......@@ -11,34 +11,34 @@
int wr_s_lock(struct pp_instance *ppi, unsigned char *pkt, int plen)
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_s_lock_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_s_lock_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
struct wr_dsport *wrp = WR_DSPOR(ppi);
int enable = 0;
int poll_ret;
if (ppi->is_new_state) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_s_lock_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_s_lock_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->wrStateRetry = WR_STATE_RETRY;
enable = 1;
} else if (pp_timeout(ppi, PP_TO_EXT_0)) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_s_lock_3++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_s_lock_3++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->locking_disable(ppi);
if (wr_handshake_retry(ppi))
{
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_s_lock_4++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_s_lock_4++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
enable = 1;
}
else
......@@ -46,10 +46,10 @@ int wr_s_lock(struct pp_instance *ppi, unsigned char *pkt, int plen)
}
if (enable) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_s_lock_5++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_s_lock_5++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->locking_enable(ppi);
__pp_timeout_set(ppi, PP_TO_EXT_0, WR_S_LOCK_TIMEOUT_MS);
}
......@@ -58,17 +58,17 @@ int wr_s_lock(struct pp_instance *ppi, unsigned char *pkt, int plen)
poll_ret = wrp->ops->locking_poll(ppi, 0);
if (poll_ret == WR_SPLL_READY) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_s_lock_6++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_s_lock_6++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
ppi->next_state = WRS_LOCKED;
wrp->ops->locking_disable(ppi);
} else if (poll_ret == WR_SPLL_CALIB_NOT_READY) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_s_lock_7++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_s_lock_7++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* rxts_calibration not ready, enter the same state without
* a delay */
ppi->next_delay = 0;
......
......@@ -60,9 +60,9 @@ struct wr_dsport {
UInteger16 ctr_consecutive_incorrect_timestamp;
#endif // BROADCAST_NODE
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
UInteger32 ctr_wr_present_0_1;
/* UInteger32 ctr_wr_present_0_1;
UInteger32 ctr_wr_present_0_2;
UInteger32 ctr_wr_present_0_3;
UInteger32 ctr_wr_present_0_4;
......@@ -120,7 +120,8 @@ struct wr_dsport {
UInteger32 ctr_wr_servo_init_0;
UInteger32 ctr_wr_servo_init_1;
UInteger32 servo_flags_at_init;
#endif // BROADCAST_BASE && BC_EXTRA_MON
*/
//#endif // BROADCAST_BASE && BC_EXTRA_MON
};
/* This uppercase name matches "DSPOR(ppi)" used by standard protocol */
......@@ -179,9 +180,9 @@ struct wr_operations {
int (*enable_ptracker)(struct pp_instance *ppi);
int (*adjust_in_progress)(void);
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
int (*adjust_in_progress_bc)(struct pp_instance *ppi);
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// int (*adjust_in_progress_bc)(struct pp_instance *ppi);
//#endif // BROADCAST_BASE && BC_EXTRA_MON
int (*adjust_counters)(int64_t adjust_sec, int32_t adjust_nsec);
int (*adjust_phase)(int32_t phase_ps);
......
......@@ -125,7 +125,7 @@ enum {
WR_PORT_CALIBRATION_8,
/* A special send-sync-only state for absolute calibration */
WRS_ABSCAL,
#ifdef BROADCAST
#ifdef BROADCAST_NODE
/* A special send-sync-only state for broadcast mode */
WRS_BROADCAST = 188, // -> BC in hexadecimal
#endif // BROADCAST
......
......@@ -47,10 +47,10 @@ static const char *servo_name[] = {
static int tracking_enabled = 1;
extern struct wrs_shm_head *ppsi_head;
#ifdef BROADCAST
//#ifdef BROADCAST
/* Counter */
Integer8 no_converge_counter;
#endif // BROADCAST
// Integer8 no_converge_counter;
//#endif // BROADCAST
void wr_servo_enable_tracking(int enable)
{
......@@ -169,10 +169,10 @@ void wr_servo_reset(struct pp_instance *ppi)
/* shmem unlock */
wrs_shm_write(ppsi_head, WRS_SHM_WRITE_END);
#ifdef BROADCAST
//#ifdef BROADCAST
/* Restart counter */
no_converge_counter = 0;
#endif // BROADCAST
// no_converge_counter = 0;
//#endif // BROADCAST
}
static inline int32_t delta_to_ps(struct FixedDelta d)
......@@ -187,10 +187,10 @@ int wr_servo_init(struct pp_instance *ppi)
struct wr_dsport *wrp = WR_DSPOR(ppi);
struct wr_servo_state *s =
&((struct wr_data *)ppi->ext_data)->servo_state;
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_servo_init_0++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_servo_init_0++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* shmem lock */
wrs_shm_write(ppsi_head, WRS_SHM_WRITE_BEGIN);
/* Determine the alpha coefficient */
......@@ -220,20 +220,20 @@ int wr_servo_init(struct pp_instance *ppi)
strcpy(s->servo_state_name, "Uninitialized");
s->flags |= WR_FLAG_VALID;
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_servo_init_1++;
WR_DSPOR(ppi)->servo_flags_at_init = s->flags;
#endif // BROADCAST_BASE && BC_EXTRA_MON
// WR_DSPOR(ppi)->ctr_wr_servo_init_1++;
// WR_DSPOR(ppi)->servo_flags_at_init = s->flags;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
s->update_count = 0;
ppi->t_ops->get(ppi, &s->update_time);
s->tracking_enabled = tracking_enabled;
#ifdef BROADCAST
//#ifdef BROADCAST
/* Restart counter */
no_converge_counter = 0;
#endif // BROADCAST
// no_converge_counter = 0;
//#endif // BROADCAST
got_sync = 0;
......@@ -591,11 +591,11 @@ int wr_servo_update(struct pp_instance *ppi)
}
/* After each action on the hardware, we must verify if it is over. */
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
if (!wrp->ops->adjust_in_progress_bc(ppi)) {
#else
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// if (!wrp->ops->adjust_in_progress_bc(ppi)) {
//#else
if (!wrp->ops->adjust_in_progress()) {
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#endif // BROADCAST_BASE && BC_EXTRA_MON
s->flags &= ~WR_FLAG_WAIT_HW;
} else {
pp_diag(ppi, servo, 1, "servo:busy\n");
......@@ -621,27 +621,27 @@ int wr_servo_update(struct pp_instance *ppi)
/* update string state name */
strcpy(s->servo_state_name, servo_name[s->state]);
#ifdef BROADCAST
/* Reboot the White Rabbit Link Setup if the counter reach a threshold and
* does not converge. */
if(no_converge_counter > WR_SERVO_MAX_NO_CONVERGE_COUNT)
{
WR_DSPOR(ppi)->wrModeOn = FALSE;
WR_DSPOR(ppi)->parentWrModeOn = FALSE;
shw_pps_gen_enable_output(0);
wr_servo_reset(ppi);
pp_diag(ppi, servo, 1, "wr_servo does not converge, countdown exceeded. Reboot WR.\n");
return 0;
}
no_converge_counter++;
#endif // BROADCAST
//#ifdef BROADCAST
// /* Reboot the White Rabbit Link Setup if the counter reach a threshold and
// * does not converge. */
// if(no_converge_counter > WR_SERVO_MAX_NO_CONVERGE_COUNT)
// {
// WR_DSPOR(ppi)->wrModeOn = FALSE;
// WR_DSPOR(ppi)->parentWrModeOn = FALSE;
// shw_pps_gen_enable_output(0);
// wr_servo_reset(ppi);
// pp_diag(ppi, servo, 1, "wr_servo does not converge, countdown exceeded. Reboot WR.\n");
// return 0;
// }
// no_converge_counter++;
//#endif // BROADCAST
switch (s->state) {
case WR_SYNC_TAI:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_sync_tai++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_sync_tai++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->adjust_counters(ts_offset.secs, 0);
s->flags |= WR_FLAG_WAIT_HW;
/*
......@@ -653,10 +653,10 @@ int wr_servo_update(struct pp_instance *ppi)
break;
case WR_SYNC_NSEC:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_sync_nsec++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_sync_nsec++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->adjust_counters(0, ts_offset_ticks);
s->flags |= WR_FLAG_WAIT_HW;
......@@ -664,10 +664,10 @@ int wr_servo_update(struct pp_instance *ppi)
break;
case WR_SYNC_PHASE:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_sync_phase++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_sync_phase++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
pp_diag(ppi, servo, 2, "oldsetp %i, offset %i:%04i\n",
s->cur_setpoint, ts_offset_ticks,
......@@ -693,56 +693,56 @@ int wr_servo_update(struct pp_instance *ppi)
break;
case WR_WAIT_OFFSET_STABLE:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_0++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_0++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
/* ts_to_picos() below returns phase alone */
remaining_offset = abs(ts_offset_picos);
if(remaining_offset < WR_SERVO_OFFSET_STABILITY_THRESHOLD) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_1++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_1++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
wrp->ops->enable_timing_output(ppi, 1);
s->delta_ms_prev = s->delta_ms;
s->state = WR_TRACK_PHASE;
} else {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_2++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_2++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
s->missed_iters++;
}
if (s->missed_iters >= 10) {
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_3++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_wait_offset_stable_3++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
s->missed_iters = 0;
s->state = WR_SYNC_PHASE;
}
break;
case WR_TRACK_PHASE:
#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
/* ONLY FOR TESTS */
WR_DSPOR(ppi)->ctr_wr_track_phase++;
#endif // BROADCAST_BASE && BC_EXTRA_MON
//#if defined(BROADCAST_BASE) && defined(BC_EXTRA_MON)
// /* ONLY FOR TESTS */
// WR_DSPOR(ppi)->ctr_wr_track_phase++;
//#endif // BROADCAST_BASE && BC_EXTRA_MON
s->skew = s->delta_ms - s->delta_ms_prev;
#ifdef BROADCAST
/* TRACK_PHASE reached, counter to zero. */
no_converge_counter = 0;
//int64_t remaining_offset = abs(ts_to_picos(ts_offset_hw));
remaining_offset = abs(ts_offset_picos);
if(remaining_offset > 16000)/* REF_CLOCK_PERIOD_PS */
s->state = WR_SYNC_TAI;
#endif // BROADCAST
//#ifdef BROADCAST
// /* TRACK_PHASE reached, counter to zero. */
// no_converge_counter = 0;
//
// //int64_t remaining_offset = abs(ts_to_picos(ts_offset_hw));
// remaining_offset = abs(ts_offset_picos);
//
// if(remaining_offset > 16000)/* REF_CLOCK_PERIOD_PS */
// s->state = WR_SYNC_TAI;
//#endif // BROADCAST
/* Can be disabled for manually tweaking and testing */
if(tracking_enabled) {
......
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