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
50
Issues
50
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
a148cb45
Commit
a148cb45
authored
Feb 14, 2017
by
José Luis Gutiérrez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
HSR: Redbox behaviour
Trying to make it work as a redbox for PTP
parent
b7437664
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
34 additions
and
23 deletions
+34
-23
wrs-startup.c
arch-wrs/wrs-startup.c
+1
-1
state-wr-link-on.c
proto-ext-whiterabbit/state-wr-link-on.c
+6
-6
wr-servo.c
proto-ext-whiterabbit/wr-servo.c
+11
-9
state-listening.c
proto-standard/state-listening.c
+5
-5
state-pmaster.c
proto-standard/state-pmaster.c
+11
-2
No files found.
arch-wrs/wrs-startup.c
View file @
a148cb45
...
...
@@ -220,7 +220,7 @@ int main(int argc, char **argv)
// ppi->slave_prio = 0; /*ML: by default primary slave*/
if
((
i
==
0
||
i
==
1
)
&&
ppg
->
rt_opts
->
wr_hsr
==
PPSI_EXT_HSR_ENA
)
if
((
i
==
0
||
i
==
1
||
i
==
2
)
&&
ppg
->
rt_opts
->
wr_hsr
==
PPSI_EXT_HSR_ENA
)
// i==2 added for HSR in HSR1 and HSR2 new change.
ppi
->
is_HSR
=
1
;
else
ppi
->
is_HSR
=
0
;
...
...
proto-ext-whiterabbit/state-wr-link-on.c
View file @
a148cb45
...
...
@@ -22,12 +22,12 @@ int wr_link_on(struct pp_instance *ppi, unsigned char *pkt, int plen)
// if(ppi->slave_prio == 0)
wrp
->
ops
->
enable_ptracker
(
ppi
);
// might need change
if
(
wrp
->
wrMode
==
WR_MASTER
)
{
e
=
msg_issue_wrsig
(
ppi
,
WR_MODE_ON
);
ppi
->
master_only
=
0
;
ppi
->
slave_only
=
0
;
ppi
->
backup_only
=
1
;
}
//
if (wrp->wrMode == WR_MASTER) {
//
e = msg_issue_wrsig(ppi, WR_MODE_ON);
//
ppi->master_only = 0;
//
ppi->slave_only = 0;
//
ppi->backup_only = 1;
//
}
wrp
->
parentWrModeOn
=
TRUE
;
wrp
->
wrPortState
=
WRS_WR_LINK_ON
;
...
...
proto-ext-whiterabbit/wr-servo.c
View file @
a148cb45
...
...
@@ -379,7 +379,7 @@ int wr_servo_update(struct pp_instance *ppi)
s
->
t3
.
correct
,
s
->
t4
.
correct
,
s
->
t5
.
correct
,
s
->
t6
.
correct
);
return
0
;
/* GUTI HACK: removing it, sometimes fixes some stuff
swithover related to mErr & bErr*/
//
swithover related to mErr & bErr*/
}
errcount
=
0
;
...
...
@@ -401,7 +401,8 @@ int wr_servo_update(struct pp_instance *ppi)
+
s
->
delta_tx_m
+
s
->
delta_rx_s
+
ph_adjust
;
ppi
->
link_delay
=
(
int64_t
)((
delay_ms_fix
));
pp_printf
(
"port %d delay = %d
\n
"
,
ppi
->
port_idx
,
ppi
->
link_delay
);
//pp_printf("port %d delay = %d\n", ppi->port_idx, ppi->link_delay);
pp_diag
(
ppi
,
servo
,
1
,
"port %d delay = %d
\n
"
,
ppi
->
port_idx
,
ppi
->
link_delay
);
if
(
__PP_DIAG_ALLOW_FLAGS
(
pp_global_flags
,
pp_dt_servo
,
1
))
{
dump_timestamp
(
ppi
,
"servo:t1"
,
s
->
t1
);
...
...
@@ -414,11 +415,12 @@ int wr_servo_update(struct pp_instance *ppi)
ts_offset
=
ts_add
(
ts_sub
(
s
->
t1
,
s
->
t2
),
ts_add
(
ppi
->
p2p_cField
,
picos_to_ts
(
delay_ms_fix
)));
//pp_printf("port %d ts_offset = %d:%d:%d\n",ppi->port_idx, ts_offset.seconds, ts_offset.nanoseconds, ts_offset.phase);
pp_printf
(
"port %d cField = %d:%d:%d
\n
"
,
ppi
->
port_idx
,
ppi
->
p2p_cField
.
seconds
,
ppi
->
p2p_cField
.
nanoseconds
,
ppi
->
p2p_cField
.
phase
);
//if((ts_offset.seconds<0) || (ts_offset.nanoseconds == 999999999)) {
//pp_printf("ts_offset %d:%d\n", ts_offset.seconds, ts_offset.nanoseconds );
//pp_printf("port %d cField = %d:%d:%d\n",ppi->port_idx, ppi->p2p_cField.seconds, ppi->p2p_cField.nanoseconds, ppi->p2p_cField.phase);
pp_diag
(
ppi
,
servo
,
1
,
"port %d cField = %d:%d:%d
\n
"
,
ppi
->
port_idx
,
ppi
->
p2p_cField
.
seconds
,
ppi
->
p2p_cField
.
nanoseconds
,
ppi
->
p2p_cField
.
phase
);
if
((
ts_offset
.
seconds
<
0
)
||
(
ts_offset
.
nanoseconds
==
999999999
))
{
pp_diag
(
ppi
,
servo
,
"ts_offset %d:%d
\n
"
,
ts_offset
.
seconds
,
ts_offset
.
nanoseconds
);
//return -1;
//
}
}
ts_offset_hw
=
ts_hardwarize
(
ts_offset
,
s
->
clock_period_ps
);
pp_diag
(
ppi
,
servo
,
1
,
"offset: %d [hw:%d]
\n
"
,
(
ts_offset
.
phase
+
ts_offset
.
nanoseconds
*
1000
),
...
...
@@ -575,7 +577,7 @@ int wr_servo_update(struct pp_instance *ppi)
s
->
missed_iters
++
;
}
if
(
s
->
missed_iters
>=
10
)
if
(
s
->
missed_iters
>=
5
)
// <- orig. 10
s
->
state
=
WR_SYNC_TAI
;
break
;
}
...
...
@@ -589,8 +591,8 @@ int wr_servo_update(struct pp_instance *ppi)
cur_servo_state
.
cur_skew
=
s
->
delta_ms
-
s
->
delta_ms_prev
;
}
if
(
ts_offset_hw
.
seconds
!=
0
||
ts_offset_hw
.
nanoseconds
!=
0
)
s
->
state
=
WR_SYNC_TAI
;
//if (ts_offset_hw.seconds !=0 || ts_offset_hw.nanoseconds != 0) // jlgr
//
s->state = WR_SYNC_TAI;
if
(
tracking_enabled
)
{
// just follow the changes of deltaMS
...
...
proto-standard/state-listening.c
View file @
a148cb45
...
...
@@ -17,11 +17,11 @@ int pp_listening(struct pp_instance *ppi, unsigned char *pkt, int plen)
struct
wr_dsport
*
wrp_hsr1
=
WR_DSPOR
(
INST
(
ppi
->
glbs
,
1
));
struct
wr_dsport
*
wrp_hsr2
=
WR_DSPOR
(
INST
(
ppi
->
glbs
,
2
));
if
(
wrp_hsr0
->
wrModeOn
||
wrp_hsr1
->
wrModeOn
||
wrp_hsr2
->
wrModeOn
)
{
ppi
->
master_only
=
1
;
ppi
->
slave_only
=
0
;
ppi
->
backup_only
=
0
;
}
//
if(wrp_hsr0->wrModeOn || wrp_hsr1->wrModeOn || wrp_hsr2->wrModeOn) {
//
ppi->master_only = 1;
//
ppi->slave_only = 0;
//
ppi->backup_only = 0;
//
}
if
(
pp_hooks
.
listening
)
e
=
pp_hooks
.
listening
(
ppi
,
pkt
,
plen
);
...
...
proto-standard/state-pmaster.c
View file @
a148cb45
...
...
@@ -19,7 +19,15 @@ int pp_pmaster(struct pp_instance *ppi, unsigned char *pkt, int plen)
struct
wr_dsport
*
wrp_hsr1
=
WR_DSPOR
(
INST
(
ppi
->
glbs
,
1
));
struct
wr_dsport
*
wrp_hsr2
=
WR_DSPOR
(
INST
(
ppi
->
glbs
,
2
));
if
((
wrp_hsr0
->
wrModeOn
||
wrp_hsr1
->
wrModeOn
||
wrp_hsr2
->
wrModeOn
)
/* for HSR nodes.
* If we are a HSR-PTP-Redbox we are:
* **** PORT **** MODE ****
* **** 0 **** slave ****
* **** 1 **** master ****
* **** 2 **** master ****
* FIXME: Same code for HSR-PTP-Node and HSR-PTP-Redbox
* /
/*if((wrp_hsr0->wrModeOn || wrp_hsr1->wrModeOn || wrp_hsr2->wrModeOn)
&& ppi->is_HSR){
ppi->master_only = 0;
ppi->slave_only = 0;
...
...
@@ -27,7 +35,8 @@ int pp_pmaster(struct pp_instance *ppi, unsigned char *pkt, int plen)
ppi->slave_prio = 0;
ppi->next_state = PPS_SLAVE;
return 0;
}
}*/
ppi
->
next_state
=
PPS_MASTER
;
// FIXME: same as above...
/* TO BE CHECK */
if
(
!
ppi
->
is_HSR
&&
ppi
->
master_only
){
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment