Commit 722a56f7 authored by Marco Bartolini's avatar Marco Bartolini
Browse files

better management of MinorServo checkScan when ASAP requested

parent 3147e96a
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -37,16 +37,16 @@ class MedMinorServoScan
        MedMinorServoPosition getStartPosition(){return m_start_position;};
        MedMinorServoPosition getStopPosition(){return m_stop_position;};
        string getAxisCode(){return m_axis_code;};
        ACS::Time getStartingTime(){return m_starting_time;};
        ACS::Time getStartingTime();
        ACS::Time getMovementTime();
        ACS::Time getTotalTime(){return m_total_time;};
        bool was_elevation_tracking(){ return m_was_tracking;};
    private:
        MedMinorServoPosition m_central_position, m_start_position, m_stop_position;
        ACS::Time m_starting_time, m_total_time;
        double m_range, m_min_time, m_max_time;
        double m_range, m_min_time, m_max_time, m_min_start_time;
        string m_axis_code;
        bool m_initialized, m_was_tracking;
        bool m_initialized, m_was_tracking, m_asap;
};

#endif
+29 −7
Original line number Diff line number Diff line
@@ -38,8 +38,10 @@ MedMinorServoScan::init(const MedMinorServoPosition central_position,
        TIMEVALUE now;
        IRA::CIRATools::getTime(now);
        m_starting_time = now.value().value;
        m_asap = true;
    }else{
        m_starting_time = starting_time;
        m_asap = false;
    }
    m_range = range;
    m_total_time = total_time;
@@ -119,16 +121,19 @@ throw (MinorServoErrors::ScanErrorEx)
    /**
     * check that we can reach start position in time
     */
    double min_start_time = MedMinorServoGeometry::min_time(m_central_position,
    m_min_start_time = MedMinorServoGeometry::min_time(m_central_position,
                                                            m_start_position);
    if(!m_asap)
    {
        TIMEVALUE now;
        IRA::CIRATools::getTime(now);
    if((m_starting_time + START_SCAN_TOLERANCE) >= (now.value().value + min_start_time * 10000000))
        if((m_starting_time + START_SCAN_TOLERANCE) >= (now.value().value + m_min_start_time * 10000000))
        {
            CUSTOM_LOG(LM_FULL_INFO, "MedMinorServoControl::MedMinorServoScan::check()",
                  (LM_NOTICE, "Cannot reach start position in time"));
            return false;
        }
    }
    /**
     * check that we can perform the scan with given speed
     */
@@ -149,6 +154,23 @@ throw (MinorServoErrors::ScanErrorEx)
    return true;
}

ACS::Time 
MedMinorServoScan::getStartingTime()
{
    if(!(m_initialized))
        THROW_EX(MinorServoErrors, ScanErrorEx, "Scan is not initialized", true);
    if(m_asap)
    {
        m_min_start_time = MedMinorServoGeometry::min_time(m_central_position,
                                                            m_start_position);
        TIMEVALUE now;
        IRA::CIRATools::getTime(now);
        m_starting_time = now.value().value;
        m_starting_time += (ACS::Time)(m_min_start_time * 10000000) + START_SCAN_TOLERANCE;
    }
    return m_starting_time;
}

ACS::Time 
MedMinorServoScan::getMovementTime()
{