Commit b76bc950 authored by Maciej Lipinski's avatar Maciej Lipinski

making use of the new get_backup_state communication with SoffPLL

parent d9211696
...@@ -126,7 +126,7 @@ struct wr_operations { ...@@ -126,7 +126,7 @@ struct wr_operations {
int (*enable_timing_output)(struct pp_instance *ppi, int enable); int (*enable_timing_output)(struct pp_instance *ppi, int enable);
int (*active_poll)(void); int (*active_poll)(void);
int (*backup_state)(int channel, uint32_t *good_phase_val, int *swover_flag, int (*backup_state)(int channel, uint32_t *good_phase_val, int *swover_flag,
int *resync_flag) int *resync_flag);
}; };
......
...@@ -472,52 +472,51 @@ int wr_servo_update(struct pp_instance *ppi) ...@@ -472,52 +472,51 @@ int wr_servo_update(struct pp_instance *ppi)
if(tracking_enabled) { if(tracking_enabled) {
// just follow the changes of deltaMS // just follow the changes of deltaMS
int32_t offset_change = (s->delta_ms - s->delta_ms_prev); int32_t offset_change = (s->delta_ms - s->delta_ms_prev);
ss = (struct wrs_socket*)NP(ppi)->ch[PP_NP_GEN].arch_data; int ret = 0;
pp_diag(ppi, servo, 1, "in servo cur_setpoint(before update)=%d, "
"update =%d, cur_dmtd_phase = %d\n",
s->cur_setpoint, offset_change , ss->dmtd_phase);
pp_diag(ppi, servo, 1, "in servo cur_setpoint(before update)=%d, "
"update =%d\n", s->cur_setpoint, offset_change);
///testing s->cur_setpoint += offset_change;// (s->delta_ms - s->delta_ms_prev);
int tmp_phase=0, tmp_swover_flag=0, tmp_resync_flag=0;
wrp->ops->backup_state(ppi->port_idx, &tmp_phase,&tmp_swover_flag,&tmp_resync_flag); //if ret is not zero, it means something is to be done for backup stuff
pp_diag(ppi, servo, 1,"\n\ntesting bkcup state func: good_phase=%d, swover=%d, resync=%d\n\n", ret = wrp->ops->adjust_phase(s->cur_setpoint, ppi->port_idx);
tmp_phase, tmp_swover_flag, tmp_resync_flag);
// default, might change if resync requested from backup_state
/// //////////////////////////////////////////////////////////////////// s->next_state = WR_TRACK_PHASE;
s->state = WR_WAIT_SYNC_IDLE;
s->cur_setpoint += offset_change;// (s->delta_ms - s->delta_ms_prev);
tmp_setpoint = (int32_t)wrp->ops->adjust_phase(s->cur_setpoint, ppi->port_idx); if(ret) // check what is up
if(tmp_setpoint > 0)
{ {
uint32_t phase=0;
pp_diag(ppi, servo, 1, "@Switchover: good_phase_val=%d," int swover=0, resync=0;
" cur_setpoint=%d, ptp_offset: %d, ts_offset=%d\n", ss = (struct wrs_socket*)NP(ppi)->ch[PP_NP_GEN].arch_data;
(int)tmp_setpoint,(int)s->cur_setpoint ,(int)(s->delta_ms - s->delta_ms_prev),
(int)ts_offset_hw.phase);
s->cur_setpoint = tmp_setpoint + ts_offset_hw.phase;
pp_diag(ppi, servo, 1, "@Switchover: cur_setpoint=%d\n",(int)s->cur_setpoint);
tmp_setpoint = wrp->ops->adjust_phase(s->cur_setpoint, ppi->port_idx);
s->next_state = WR_TRACK_PHASE; wrp->ops->backup_state(ppi->port_idx, &phase,&swover,&resync);
s->state = WR_WAIT_SYNC_IDLE;
} pp_diag(ppi, servo, 1, "backup_state: good_phase_val=%d,"
else if(tmp_setpoint < 0) " cur_setpoint=%d, offset_change: %d, ts_offset=%d, "
{ " dmtd_phase=%d\n",
pp_diag(ppi, servo, 1, "@UpdateBackup: good_phase_val=%d," phase,s->cur_setpoint ,offset_change, ts_offset_hw.phase,
" cur_setpoint=%d, ptp_offset: %d, ts_offset=%d\n", ss->dmtd_phase);
(int)tmp_setpoint,(int)s->cur_setpoint ,(int)(s->delta_ms - s->delta_ms_prev), if(swover) // switchover occured and this is the new active channel
(int)ts_offset_hw.phase); {
s->state = WR_SYNC_PHASE; pp_diag(ppi, servo, 1, "@Switchover\n");
if(s->cur_setpoint < 0)
{
pp_diag(ppi, servo, 1, "we have a problem.. "
"setpoint is negative: %d \n",s->cur_setpoint);
}
else
s->cur_setpoint = phase + ts_offset_hw.phase;
}
else if(resync) // this is backup and needs resynchronization
{
pp_diag(ppi, servo, 1, "@Resync\n");
s->state = WR_SYNC_PHASE;
}
} }
else
{
s->next_state = WR_TRACK_PHASE;
s->state = WR_WAIT_SYNC_IDLE;
}
s->delta_ms_prev = s->delta_ms; s->delta_ms_prev = s->delta_ms;
s->last_tics = tics; s->last_tics = tics;
} }
......
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