1240 diff_ms = (datagram->jiffies_received - fsm->jiffies_start) * 1000 / HZ; |
1240 diff_ms = (datagram->jiffies_received - fsm->jiffies_start) * 1000 / HZ; |
1241 |
1241 |
1242 if (abs_sync_diff > EC_DC_MAX_SYNC_DIFF_NS) { |
1242 if (abs_sync_diff > EC_DC_MAX_SYNC_DIFF_NS) { |
1243 |
1243 |
1244 if (diff_ms >= EC_DC_SYNC_WAIT_MS) { |
1244 if (diff_ms >= EC_DC_SYNC_WAIT_MS) { |
1245 EC_SLAVE_WARN(slave, "Slave did not sync after %u ms.\n", |
1245 EC_SLAVE_WARN(slave, "Slave did not sync after %lu ms.\n", |
1246 (u32) diff_ms); |
1246 diff_ms); |
1247 } else { |
1247 } else { |
1248 EC_SLAVE_DBG(slave, 1, "Sync after %4u ms: %10u ns\n", |
1248 EC_SLAVE_DBG(slave, 1, "Sync after %4lu ms: %10u ns\n", |
1249 (u32) diff_ms, abs_sync_diff); |
1249 diff_ms, abs_sync_diff); |
1250 |
1250 |
1251 // check synchrony again |
1251 // check synchrony again |
1252 ec_datagram_fprd(datagram, slave->station_address, 0x092c, 4); |
1252 ec_datagram_fprd(datagram, slave->station_address, 0x092c, 4); |
1253 fsm->retries = EC_FSM_RETRIES; |
1253 fsm->retries = EC_FSM_RETRIES; |
1254 return; |
1254 return; |
1255 } |
1255 } |
1256 } else { |
1256 } else { |
1257 EC_SLAVE_DBG(slave, 1, "%u ns difference after %u ms.\n", |
1257 EC_SLAVE_DBG(slave, 1, "%u ns difference after %lu ms.\n", |
1258 abs_sync_diff, (u32) diff_ms); |
1258 abs_sync_diff, diff_ms); |
1259 } |
1259 } |
1260 |
1260 |
1261 // set DC start time |
1261 // set DC start time |
1262 start_time = master->app_time + EC_DC_START_OFFSET; // now + X ns |
1262 start_time = master->app_time + EC_DC_START_OFFSET; // now + X ns |
1263 // FIXME use slave's local system time here? |
1263 // FIXME use slave's local system time here? |