Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
P
PPSi
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
40
Issues
40
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
PPSi
Commits
b7ab94bc
Commit
b7ab94bc
authored
Jan 05, 2023
by
Omar Gabella
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Full WRPC for Bases to test with Full-WRS
parent
bb9aecbb
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
205 additions
and
204 deletions
+205
-204
wrc_ptp_ppsi.c
arch-wrpc/wrc_ptp_ppsi.c
+3
-3
wrpc-spll.c
arch-wrpc/wrpc-spll.c
+8
-8
constants.h
include/ppsi/constants.h
+7
-7
state-wr-calibrated.c
proto-ext-whiterabbit/state-wr-calibrated.c
+3
-3
state-wr-calibration.c
proto-ext-whiterabbit/state-wr-calibration.c
+30
-30
state-wr-link-on.c
proto-ext-whiterabbit/state-wr-link-on.c
+6
-6
state-wr-locked.c
proto-ext-whiterabbit/state-wr-locked.c
+7
-7
state-wr-present.c
proto-ext-whiterabbit/state-wr-present.c
+30
-30
state-wr-resp-calib-req.c
proto-ext-whiterabbit/state-wr-resp-calib-req.c
+6
-6
state-wr-s-lock.c
proto-ext-whiterabbit/state-wr-s-lock.c
+21
-21
wr-api.h
proto-ext-whiterabbit/wr-api.h
+7
-6
wr-constants.h
proto-ext-whiterabbit/wr-constants.h
+1
-1
wr-servo.c
proto-ext-whiterabbit/wr-servo.c
+76
-76
No files found.
arch-wrpc/wrc_ptp_ppsi.c
View file @
b7ab94bc
...
...
@@ -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
,
...
...
arch-wrpc/wrpc-spll.c
View file @
b7ab94bc
...
...
@@ -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
);
}
...
...
include/ppsi/constants.h
View file @
b7ab94bc
...
...
@@ -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
...
...
proto-ext-whiterabbit/state-wr-calibrated.c
View file @
b7ab94bc
...
...
@@ -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
;
...
...
proto-ext-whiterabbit/state-wr-calibration.c
View file @
b7ab94bc
...
...
@@ -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
...
...
proto-ext-whiterabbit/state-wr-link-on.c
View file @
b7ab94bc
...
...
@@ -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
...
...
proto-ext-whiterabbit/state-wr-locked.c
View file @
b7ab94bc
...
...
@@ -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
...
...
proto-ext-whiterabbit/state-wr-present.c
View file @
b7ab94bc
...
...
@@ -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
;
...
...
proto-ext-whiterabbit/state-wr-resp-calib-req.c
View file @
b7ab94bc
...
...
@@ -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
...
...
proto-ext-whiterabbit/state-wr-s-lock.c
View file @
b7ab94bc
...
...
@@ -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
;
...
...
proto-ext-whiterabbit/wr-api.h
View file @
b7ab94bc
...
...
@@ -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
);
...
...
proto-ext-whiterabbit/wr-constants.h
View file @
b7ab94bc
...
...
@@ -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
...
...
proto-ext-whiterabbit/wr-servo.c
View file @
b7ab94bc
...
...
@@ -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 */