diff --git a/doc/doc_html/DevCommands.html b/doc/doc_html/DevCommands.html index abf72e6465d734336e88153843d76ad9b9b9aa72..e6d6821b59906cd34603b2ddc3fe2ae9f03efddb 100644 --- a/doc/doc_html/DevCommands.html +++ b/doc/doc_html/DevCommands.html @@ -70,7 +70,7 @@ The language device desctructor automatically calls the <i> delete_device() </i> <Li><Strong>Argout:<Br>DEV_VOID</Strong> : none.<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT<Li>Tango::DISABLE</Ul> <Br>  </ul><Br> <Br> @@ -84,7 +84,7 @@ The language device desctructor automatically calls the <i> delete_device() </i> <Li><Strong>Argout:<Br>DEV_STATE</Strong> : State Code<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT<Li>Tango::DISABLE</Ul> <Br>  </ul><Br> <Br> @@ -98,7 +98,7 @@ The language device desctructor automatically calls the <i> delete_device() </i> <Li><Strong>Argout:<Br>CONST_DEV_STRING</Strong> : Status description<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT<Li>Tango::DISABLE</Ul> <Br>  </ul><Br> <Br> @@ -115,7 +115,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -132,7 +132,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -146,7 +146,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -160,7 +160,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -174,7 +174,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -188,7 +188,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -202,7 +202,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -216,7 +216,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -300,7 +300,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_STRING</Strong> : The actual electrometer range<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -315,7 +315,7 @@ Else an exception is thrown.<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -330,7 +330,7 @@ MEASURE, V/F Zero, OFFSET, LEAKAGE or TEST.<Br>  <Li><Strong>Argout:<Br>DEV_STRING</Strong> : The electrometer mode (MEASURE, LEAKAGE ...)<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -344,7 +344,7 @@ MEASURE, V/F Zero, OFFSET, LEAKAGE or TEST.<Br>  <Li><Strong>Argout:<Br>DEV_STRING</Strong> : The electrometer polarity<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -360,7 +360,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -374,7 +374,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_SHORT</Strong> : The MCCE2 cut-off frequency in Hz<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -388,7 +388,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -402,7 +402,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_SHORT</Strong> : The MCCE2 gain<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -416,7 +416,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> diff --git a/doc/doc_html/TangoDevStates.html b/doc/doc_html/TangoDevStates.html index bbc517bc5ed84df2015ddb180f030819924e6c2f..5a688cf32d7e45b17df892197332da6a2263b40e 100644 --- a/doc/doc_html/TangoDevStates.html +++ b/doc/doc_html/TangoDevStates.html @@ -70,6 +70,9 @@ Revision: - Author: xavela <Tr><Td><b>FAULT</b></Td> <Td><Font Size=-1>Internal electrometer interface is not built or a Serial communication error occurred.</Font></Td></Tr> +<Tr><Td><b>DISABLE</b></Td> +<Td><Font Size=-1>No electrometer conected!</Font></Td></Tr> + diff --git a/doc/doc_html/user_guide.html b/doc/doc_html/user_guide.html index e4b311e43ccef7dd2282b07d059b2b2d9183e028..a92f298816e5e7d7eedca58fa3d20e1ddfbdfe9d 100644 --- a/doc/doc_html/user_guide.html +++ b/doc/doc_html/user_guide.html @@ -171,6 +171,9 @@ There is no Class properties.<Br><Br> <Tr><Td><b>FAULT</b></Td> <Td><Font Size=-1>Internal electrometer interface is not built or a Serial communication error occurred.</Font></Td></Tr> +<Tr><Td><b>DISABLE</b></Td> +<Td><Font Size=-1>No electrometer conected!</Font></Td></Tr> + @@ -333,7 +336,7 @@ The language device desctructor automatically calls the <i> delete_device() </i> <Li><Strong>Argout:<Br>DEV_VOID</Strong> : none.<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT<Li>Tango::DISABLE</Ul> <Br>  </ul><Br> <Br> @@ -347,7 +350,7 @@ The language device desctructor automatically calls the <i> delete_device() </i> <Li><Strong>Argout:<Br>DEV_STATE</Strong> : State Code<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT<Li>Tango::DISABLE</Ul> <Br>  </ul><Br> <Br> @@ -361,7 +364,7 @@ The language device desctructor automatically calls the <i> delete_device() </i> <Li><Strong>Argout:<Br>CONST_DEV_STRING</Strong> : Status description<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT<Li>Tango::DISABLE</Ul> <Br>  </ul><Br> <Br> @@ -378,7 +381,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -395,7 +398,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -409,7 +412,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -423,7 +426,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -437,7 +440,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -451,7 +454,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -465,7 +468,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -479,7 +482,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -493,7 +496,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -563,7 +566,7 @@ Throw : <Li><Strong>Argout:<Br>DEV_STRING</Strong> : The actual electrometer range<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -578,7 +581,7 @@ Else an exception is thrown.<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -593,7 +596,7 @@ MEASURE, V/F Zero, OFFSET, LEAKAGE or TEST.<Br>  <Li><Strong>Argout:<Br>DEV_STRING</Strong> : The electrometer mode (MEASURE, LEAKAGE ...)<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -607,7 +610,7 @@ MEASURE, V/F Zero, OFFSET, LEAKAGE or TEST.<Br>  <Li><Strong>Argout:<Br>DEV_STRING</Strong> : The electrometer polarity<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -623,7 +626,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -637,7 +640,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_SHORT</Strong> : The MCCE2 cut-off frequency in Hz<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -651,7 +654,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -665,7 +668,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_SHORT</Strong> : The MCCE2 gain<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> @@ -679,7 +682,7 @@ Value must be set in UPPER case !!!<Br>  <Li><Strong>Argout:<Br>DEV_VOID</Strong> : no argout<Br>  <Li><Strong>Command allowed for: </Strong><Ul> -<Li>Tango::ON<Li>Tango::ALARM<Li>Tango::FAULT</Ul> +<Li>Tango::ON<Li>Tango::ALARM</Ul> <Br>  </ul><Br> <Br> diff --git a/pom.xml b/pom.xml index 2b8d695b41adb593f31a1e51f39842ab4af8383f..f2eb922dcb1a494c77d3f90af6f86e07a655f17e 100644 --- a/pom.xml +++ b/pom.xml @@ -30,8 +30,8 @@ </dependencies> <scm> <connection>${scm.connection.svn.tango-ds}/DeviceClasses/MeasureInstruments/MCCE/NovelecElectrometer/trunk</connection> - <developerConnection>${scm.connection.svn.tango-ds}/DeviceClasses/MeasureInstruments/MCCE/NovelecElectrometer/trunk/</developerConnection> - <url>${scm.connection.svn.tango-ds}/DeviceClasses/MeasureInstruments/MCCE/NovelecElectrometer/trunk/</url> + <developerConnection>${scm.connection.svn.tango-ds}/DeviceClasses/MeasureInstruments/MCCE/NovelecElectrometer/trunk</developerConnection> + <url>${scm.connection.svn.tango-ds}/DeviceClasses/MeasureInstruments/MCCE/NovelecElectrometer/trunk</url> </scm> <developers> <developer> diff --git a/src/MCCE2Electrometers.cpp b/src/MCCE2Electrometers.cpp index 1d5eab50608f7adc8aafc8104d52927fff4fb463..798da60c1ccba682fc7171c727ccc88eaa6610c3 100644 --- a/src/MCCE2Electrometers.cpp +++ b/src/MCCE2Electrometers.cpp @@ -320,10 +320,17 @@ void MCCE2Electrometers::read_range1(Tango::Attribute &attr) { DEBUG_STREAM << "MCCE2Electrometers::read_range1(Tango::Attribute &attr) entering... "<< endl; - if ( this->_updateRange1FromHW && *attr_electrometerChannel_read == ELETRO_CHANNEL_ONE ) + if ( !this->_electrometerCH1 ) { - *attr_range1_read = this->get_range(); - this->_updateRange1FromHW = false; + *attr_range1_read = CORBA::string_dup("Not connected"); + } + else + { + if ( this->_updateRange1FromHW && *attr_electrometerChannel_read == ELETRO_CHANNEL_ONE ) + { + *attr_range1_read = this->get_range(); + this->_updateRange1FromHW = false; + } } attr.set_value(attr_range1_read); @@ -340,10 +347,17 @@ void MCCE2Electrometers::read_range2(Tango::Attribute &attr) { DEBUG_STREAM << "MCCE2Electrometers::read_range2(Tango::Attribute &attr) entering... "<< endl; - if ( this->_updateRange2FromHW && *attr_electrometerChannel_read == ELETRO_CHANNEL_TWO ) + if ( !this->_electrometerCH2 ) { - *attr_range2_read = this->get_range(); - this->_updateRange2FromHW = false; + *attr_range2_read = CORBA::string_dup("Not connected"); + } + else + { + if ( this->_updateRange2FromHW && *attr_electrometerChannel_read == ELETRO_CHANNEL_TWO ) + { + *attr_range2_read = this->get_range(); + this->_updateRange2FromHW = false; + } } attr.set_value(attr_range2_read); @@ -427,37 +441,49 @@ void MCCE2Electrometers::write_electrometerChannel(Tango::WAttribute &attr) { DEBUG_STREAM << "MCCE2Electrometers::write_electrometerChannel(Tango::WAttribute &attr) entering... "<< endl; - if ( !this->_electrometer ) - { - std::string err("There is no electrometer connected or the property\"electrometerTypeCh\" is not set"); - ERROR_STREAM << err << std::endl; - Tango::Except::throw_exception( - "MEMORY_ERROR", - err.c_str(), - "MCCE2Electrometers::write_electrometerChannel()" - ); - } +// if ( !this->_electrometer ) +// { +// std::string err("There is no electrometer connected or the property\"electrometerTypeCh\" is not set"); +// ERROR_STREAM << err << std::endl; +// Tango::Except::throw_exception( +// "MEMORY_ERROR", +// err.c_str(), +// "MCCE2Electrometers::write_electrometerChannel()" +// ); +// } attr.get_write_value(attr_electrometerChannel_write); - if ( attr_electrometerChannel_write == ELETRO_CHANNEL_ONE && this->_electrometerCH1 ) + if ( attr_electrometerChannel_write == ELETRO_CHANNEL_ONE ) { this->_electrometer = this->_electrometerCH1; - //- now force update from HW - this->_updateRange1FromHW = true; - + if ( this->_electrometerCH1 ) + { + //- now force update from HW + this->_updateRange1FromHW = true; + } + else + { + WARN_STREAM << "Cannot control electrometer on this channel : seems that nothing is connected on!" << std::endl; + //- warn nothing is connected on this channel + *attr_range1_read = CORBA::string_dup("Not connected"); + } } - else if ( attr_electrometerChannel_write == ELETRO_CHANNEL_TWO && this->_electrometerCH2 ) + else if ( attr_electrometerChannel_write == ELETRO_CHANNEL_TWO ) { this->_electrometer = this->_electrometerCH2; - //- now force update from HW - this->_updateRange2FromHW = true; + if ( this->_electrometerCH2 ) + { + //- now force update from HW + this->_updateRange2FromHW = true; + } + else + { + WARN_STREAM << "Cannot control electrometer on this channel : seems that nothing is connected on!" << std::endl; + //- warn nothing is connected on this channel + *attr_range2_read = CORBA::string_dup("Not connected"); + } } - else - Tango::Except::throw_exception( - "INVALID_PARAMETER", - "Cannot control electrometer on this channel : seems taht nothing is connected on!", - "MCCE2Electrometers::write_electrometerChannel()"); } //+------------------------------------------------------------------ @@ -1304,18 +1330,26 @@ Tango::DevState MCCE2Electrometers::dev_state() // Add your own code to control device here try { + //- check properties if ( this->_missing_property ) { argout = Tango::FAULT; } - else if ( !this->_electrometer ) + //- check device initialization + else if ( !this->_electrometerCH1 && !this->_electrometerCH2 ) { argout = Tango::FAULT; } - else if( !this->_init_done ) + //- check if an electro is conencted on a channel + else if( attr_electrometerChannel_write == ELETRO_CHANNEL_ONE && !this->_electrometerCH1) { - argout = Tango::ALARM; + argout = Tango::DISABLE; + } + else if( attr_electrometerChannel_write == ELETRO_CHANNEL_TWO && !this->_electrometerCH2) + { + argout = Tango::DISABLE; } + //- check channel number else if ( attr_electrometerChannel_write != ELETRO_CHANNEL_ONE && attr_electrometerChannel_write != ELETRO_CHANNEL_TWO ) { argout = Tango::ALARM; @@ -1400,6 +1434,9 @@ Tango::ConstDevString MCCE2Electrometers::dev_status() { DEBUG_STREAM << "MCCE2Electrometers::dev_status(): entering... !" << endl; + //- clear previous status + this->_statusStr.clear(); + // Add your own code to control device here try { @@ -1407,21 +1444,29 @@ Tango::ConstDevString MCCE2Electrometers::dev_status() { _statusStr = "Device cannot be up while its properties are not set!"; } - else if ( !this->_electrometer ) + //- check device initialization + else if ( !this->_electrometerCH1 && !_electrometerCH2 ) + { + _statusStr = "No electrometer connected!"; + } + + //- check if an electro is connected on a channel + if( attr_electrometerChannel_write == ELETRO_CHANNEL_ONE && !this->_electrometerCH1) { - _statusStr = "There is no link with the Electrometer Library."; + _statusStr += "No electrometer on channel ONE!"; } - else if( !this->_init_done ) + else if( attr_electrometerChannel_write == ELETRO_CHANNEL_TWO && !this->_electrometerCH2) { - _statusStr = "Device is not completely initialised!!!"; + _statusStr += "No electrometer on channel TWO!"; } else if ( attr_electrometerChannel_write != ELETRO_CHANNEL_ONE && attr_electrometerChannel_write != ELETRO_CHANNEL_TWO ) { - _statusStr = "Invalid electrometer channel set!"; + _statusStr += "Invalid electrometer channel set!"; } else { - _statusStr = this->_electrometer->electrometer_status(); + //- add electrometer status info + _statusStr += this->_electrometer->electrometer_status(); } } catch(const electrometer::ElectrometerException& ke) diff --git a/src/MCCE2Electrometers.h b/src/MCCE2Electrometers.h index 1e81393d5f7ace20a94becd5e2dc13174aa2e8bc..9ffdca418797576814d471b15e9d0ef78d19a3ef 100644 --- a/src/MCCE2Electrometers.h +++ b/src/MCCE2Electrometers.h @@ -56,9 +56,10 @@ namespace MCCE2Electrometers_ns /* * Device States Description: -* Tango::ON : Device up and ready -* Tango::ALARM : Device initialisation not complete or a bad channel number is set. -* Tango::FAULT : Internal electrometer interface is not built or a Serial communication error occurred. +* Tango::ON : Device up and ready +* Tango::ALARM : Device initialisation not complete or a bad channel number is set. +* Tango::FAULT : Internal electrometer interface is not built or a Serial communication error occurred. +* Tango::DISABLE : No electrometer conected! */ diff --git a/src/MCCE2ElectrometersStateMachine.cpp b/src/MCCE2ElectrometersStateMachine.cpp index 68e257410a74b9454406951f0bef36c70b92d5dc..492861f933761511551bd0fbedbaee05c70ad0f3 100644 --- a/src/MCCE2ElectrometersStateMachine.cpp +++ b/src/MCCE2ElectrometersStateMachine.cpp @@ -107,9 +107,14 @@ bool MCCE2Electrometers::is_range2_allowed(Tango::AttReqType type) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_RangeUP_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -121,9 +126,14 @@ bool MCCE2Electrometers::is_RangeUP_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_RangeDOWN_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -135,9 +145,14 @@ bool MCCE2Electrometers::is_RangeDOWN_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetZeroVFFunction_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -149,9 +164,14 @@ bool MCCE2Electrometers::is_SetZeroVFFunction_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetOffsetZeroV1Function_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -163,9 +183,14 @@ bool MCCE2Electrometers::is_SetOffsetZeroV1Function_allowed(const CORBA::Any &an //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetLeakageZeroV2Function_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -177,9 +202,14 @@ bool MCCE2Electrometers::is_SetLeakageZeroV2Function_allowed(const CORBA::Any &a //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetTestFunction_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -191,9 +221,14 @@ bool MCCE2Electrometers::is_SetTestFunction_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_MCCE2_ON_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -205,9 +240,14 @@ bool MCCE2Electrometers::is_MCCE2_ON_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_MCCE2_OFF_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -219,9 +259,13 @@ bool MCCE2Electrometers::is_MCCE2_OFF_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_Local_allowed(const CORBA::Any &any) { + if (get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -233,9 +277,13 @@ bool MCCE2Electrometers::is_Local_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_Remote_allowed(const CORBA::Any &any) { + if (get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -247,9 +295,13 @@ bool MCCE2Electrometers::is_Remote_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_Reset_allowed(const CORBA::Any &any) { + if (get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -261,9 +313,13 @@ bool MCCE2Electrometers::is_Reset_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_ClearRegisters_allowed(const CORBA::Any &any) { + if (get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -275,9 +331,14 @@ bool MCCE2Electrometers::is_ClearRegisters_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetMeasureFunction_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -289,9 +350,14 @@ bool MCCE2Electrometers::is_SetMeasureFunction_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_GetRange_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -303,9 +369,14 @@ bool MCCE2Electrometers::is_GetRange_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetRange_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -317,7 +388,8 @@ bool MCCE2Electrometers::is_SetRange_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_GetMode_allowed(const CORBA::Any &any) { - if (get_state() == Tango::RUNNING) + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) { // End of Generated Code @@ -335,9 +407,14 @@ bool MCCE2Electrometers::is_GetMode_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_GetPolarity_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -349,9 +426,14 @@ bool MCCE2Electrometers::is_GetPolarity_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetHzFilter_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -363,9 +445,14 @@ bool MCCE2Electrometers::is_SetHzFilter_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_GetHzFilter_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -377,9 +464,14 @@ bool MCCE2Electrometers::is_GetHzFilter_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_GetGain_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -391,9 +483,14 @@ bool MCCE2Electrometers::is_GetGain_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetGain_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; } //+---------------------------------------------------------------------------- @@ -405,9 +502,14 @@ bool MCCE2Electrometers::is_SetGain_allowed(const CORBA::Any &any) //----------------------------------------------------------------------------- bool MCCE2Electrometers::is_SetPolarity_allowed(const CORBA::Any &any) { + if (get_state() == Tango::FAULT || + get_state() == Tango::DISABLE) + { // End of Generated Code // Re-Start of Generated Code + return false; + } return true; }