master/fsm_slave_config.c
changeset 1904 2fadf016d9be
parent 1896 1d4bca6ba543
child 1921 d9cf40facbc4
child 1987 f452c93f7723
equal deleted inserted replaced
1903:5b526d0f5a5d 1904:2fadf016d9be
   414     fsm->state = ec_fsm_slave_config_state_dc_read_offset;
   414     fsm->state = ec_fsm_slave_config_state_dc_read_offset;
   415 }
   415 }
   416 
   416 
   417 /*****************************************************************************/
   417 /*****************************************************************************/
   418 
   418 
   419 #define ABS(X) ((X) >= 0 ? (X) : -(X))
       
   420 
       
   421 /** Configure 32 bit time offset.
   419 /** Configure 32 bit time offset.
   422  */
   420  */
   423 u64 ec_fsm_slave_config_dc_offset32(
   421 u64 ec_fsm_slave_config_dc_offset32(
   424         ec_fsm_slave_config_t *fsm, /**< slave state machine */
   422         ec_fsm_slave_config_t *fsm, /**< slave state machine */
   425         u64 system_time, /**< System time register. */
   423         u64 system_time, /**< System time register. */
   443         EC_DBG("Slave %u: system_time=%u (corrected with %u),"
   441         EC_DBG("Slave %u: system_time=%u (corrected with %u),"
   444                 " app_time=%u, diff=%i\n",
   442                 " app_time=%u, diff=%i\n",
   445                 slave->ring_position, system_time32, correction,
   443                 slave->ring_position, system_time32, correction,
   446                 (u32) slave->master->app_time, time_diff);
   444                 (u32) slave->master->app_time, time_diff);
   447 
   445 
   448     if (ABS(time_diff) > EC_SYSTEM_TIME_TOLERANCE_NS) {
   446     if (EC_ABS(time_diff) > EC_SYSTEM_TIME_TOLERANCE_NS) {
   449         new_offset = time_diff + old_offset32;
   447         new_offset = time_diff + old_offset32;
   450         if (slave->master->debug_level)
   448         if (slave->master->debug_level)
   451             EC_DBG("Slave %u: Setting time offset to %u (was %u)\n",
   449             EC_DBG("Slave %u: Setting time offset to %u (was %u)\n",
   452                     slave->ring_position, new_offset, old_offset32);
   450                     slave->ring_position, new_offset, old_offset32);
   453         return (u64) new_offset;
   451         return (u64) new_offset;
   484                 " app_time=%llu, diff=%lli\n",
   482                 " app_time=%llu, diff=%lli\n",
   485                 slave->ring_position, system_time, correction,
   483                 slave->ring_position, system_time, correction,
   486                 slave->master->app_time, time_diff);
   484                 slave->master->app_time, time_diff);
   487 
   485 
   488 
   486 
   489     if (ABS(time_diff) > EC_SYSTEM_TIME_TOLERANCE_NS) {
   487     if (EC_ABS(time_diff) > EC_SYSTEM_TIME_TOLERANCE_NS) {
   490         new_offset = time_diff + old_offset;
   488         new_offset = time_diff + old_offset;
   491         if (slave->master->debug_level)
   489         if (slave->master->debug_level)
   492             EC_DBG("Slave %u: Setting time offset to %llu (was %llu)\n",
   490             EC_DBG("Slave %u: Setting time offset to %llu (was %llu)\n",
   493                     slave->ring_position, new_offset, old_offset);
   491                     slave->ring_position, new_offset, old_offset);
   494     } else {
   492     } else {