Loading Medicina/Servers/MedicinaMinorServo/include/MedMinorServoScan.hpp +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading Medicina/Servers/MedicinaMinorServo/src/MedMinorServoScan.cpp +29 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */ Loading @@ -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() { Loading Loading
Medicina/Servers/MedicinaMinorServo/include/MedMinorServoScan.hpp +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading
Medicina/Servers/MedicinaMinorServo/src/MedMinorServoScan.cpp +29 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 */ Loading @@ -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() { Loading