From 2000e43dc62d77f4ae1c03289b8bff4fe033fc8b Mon Sep 17 00:00:00 2001
From: Xavier Elattaoui <xavier.elattaoui@synchrotron-soleil.fr>
Date: Tue, 27 Nov 2007 10:17:46 +0000
Subject: [PATCH] xavier : - modif done on Novelec part : init_MCCE2() added

---
 include/AbstractElectrometerClass.h |  8 ++++++--
 include/ElectrometerProtocol.h      |  8 ++++++--
 include/NovelecProtocol.h           |  8 ++++++++
 src/AbstractElectrometerClass.cpp   | 15 ++++++++++++--
 src/ElectrometerProtocol.cpp        | 10 +++++++++
 src/NovelecProtocol.cpp             | 32 +++++++++++++++++++++++++----
 6 files changed, 71 insertions(+), 10 deletions(-)

diff --git a/include/AbstractElectrometerClass.h b/include/AbstractElectrometerClass.h
index 5d88eca..085db96 100644
--- a/include/AbstractElectrometerClass.h
+++ b/include/AbstractElectrometerClass.h
@@ -7,11 +7,14 @@
 //    AbstractElectrometerClass.h
 //
 //
-// $Author: stephle $
+// $Author: xavela $
 //
-// $Revision: 1.1 $
+// $Revision: 1.2 $
 //
 // $Log: not supported by cvs2svn $
+// Revision 1.1  2007/07/09 13:20:35  stephle
+// initial import
+//
 //
 
 // ============================================================================
@@ -114,6 +117,7 @@ public:
 	virtual void set_Measure_function		(void);
 	virtual void mcce_on	(void);
 	virtual void mcce_off	(void);
+	virtual void mcce_init	(void);
 	/**
 	*  \brief Novelec getters and setters
 	*/
diff --git a/include/ElectrometerProtocol.h b/include/ElectrometerProtocol.h
index 358b3d1..36d659c 100644
--- a/include/ElectrometerProtocol.h
+++ b/include/ElectrometerProtocol.h
@@ -10,11 +10,14 @@
 //    X. Elattaoui
 //
 //
-// $Author: stephle $
+// $Author: xavela $
 //
-// $Revision: 1.1 $
+// $Revision: 1.2 $
 //
 // $Log: not supported by cvs2svn $
+// Revision 1.1  2007/07/09 13:20:35  stephle
+// initial import
+//
 //
 // ============================================================================
 
@@ -123,6 +126,7 @@ public:
 	*/
 	virtual void switch_MCCE2_ON		    (void);
 	virtual void switch_MCCE2_OFF		    (void);
+	virtual void init_MCCE2_for_communication		    (void);
 	virtual void unable_zeroVF_func		    (void);
 	virtual void unable_offset_zeroV1_func	(void);
 	virtual void unable_leakage_zeroV2_func	(void);
diff --git a/include/NovelecProtocol.h b/include/NovelecProtocol.h
index 24359ad..26a2f09 100644
--- a/include/NovelecProtocol.h
+++ b/include/NovelecProtocol.h
@@ -87,6 +87,14 @@ public:
 	void set_frequency	(std::string freq);
 	void set_gain		(std::string gain);
 
+	/**
+	*   \brief init the MCCE-2 device :
+	*        - response explicit
+	*        - mode MEASURE OFF
+	*        - clear error(s)
+	*/
+	void init_MCCE2_for_communication(void);
+
 protected :
 	short _devAdd;								//- novelec active channel address
 	short _novType;								//- novelec type number (1 to 5)
diff --git a/src/AbstractElectrometerClass.cpp b/src/AbstractElectrometerClass.cpp
index 5ae0977..f78455e 100644
--- a/src/AbstractElectrometerClass.cpp
+++ b/src/AbstractElectrometerClass.cpp
@@ -9,11 +9,14 @@
 // = AUTHOR
 //    X. Elattaoui
 //
-// $Author: stephle $
+// $Author: xavela $
 //
-// $Revision: 1.1 $
+// $Revision: 1.2 $
 //
 // $Log: not supported by cvs2svn $
+// Revision 1.1  2007/07/09 13:20:37  stephle
+// initial import
+//
 //
 // ============================================================================
 
@@ -567,3 +570,11 @@ void AbstractElectrometerClass::mcce_off (void)
 	_electrometerProtocol->switch_MCCE2_OFF( );
 }
 
+// ============================================================================
+// AbstractElectrometerClass::mcce_init
+// ============================================================================
+void AbstractElectrometerClass::mcce_init (void) 
+{
+	_electrometerProtocol->init_MCCE2_for_communication( );
+}
+
diff --git a/src/ElectrometerProtocol.cpp b/src/ElectrometerProtocol.cpp
index f57aae0..ab4431e 100644
--- a/src/ElectrometerProtocol.cpp
+++ b/src/ElectrometerProtocol.cpp
@@ -218,6 +218,16 @@ void ElectrometerProtocol::switch_MCCE2_OFF (void)
 											"ElectrometerProtocol::switch_MCCE2_OFF( ).");
 }
 
+// ============================================================================
+// ElectrometerProtocol::init_MCCE2_for_communication
+// ============================================================================
+void ElectrometerProtocol::init_MCCE2_for_communication (void) 
+{
+	throw electrometer::ElectrometerException("COMMAND_NOT_SUPPORTED", 
+											"This Electrometer does not support this command.",
+											"ElectrometerProtocol::init_MCCE2_for_communication( ).");
+}
+
 // ============================================================================
 // ElectrometerProtocol::autoRange_ON
 // ============================================================================
diff --git a/src/NovelecProtocol.cpp b/src/NovelecProtocol.cpp
index 72513f9..162eab5 100644
--- a/src/NovelecProtocol.cpp
+++ b/src/NovelecProtocol.cpp
@@ -55,8 +55,8 @@ NovelecProtocol::NovelecProtocol (std::string& serial_device_name, short devAddr
 	_novType(novelecType),
 	_is_measure_mode_on(false)
 {
-std::stringstream explicite_resp;
-std::string tmp("no data");
+//std::stringstream explicite_resp;
+//std::string tmp("no data");
 
 	std::cout << "NovelecProtocol::NovelecProtocol <-" << std::endl;
 
@@ -64,7 +64,32 @@ std::string tmp("no data");
 	_rangeParameterNum	= _novType + 2;
 
 	//- CMD to enable PROG cmds
-	this->switch_MCCE2_OFF();
+//-XE	this->switch_MCCE2_OFF();  //- this command is now called in the MCCE2 device !
+/*
+	//- Clear error registers
+	this->clear_registers();
+
+	//- send cmd to have an explicite response :
+	explicite_resp << _devAdd << " PROG " << RESPONSE_LGTH_CMD_NUM << " 1" << END_OF_LINE << std::endl;
+	tmp = _communication_link->write_read(explicite_resp.str());
+	//- check only the command response
+	check_command(tmp);
+	//- if no error
+	_is_explicite_resp_enabled = true;
+*/
+	std::cout << "NovelecProtocol::NovelecProtocol ->" << std::endl;
+}
+
+// ============================================================================
+// NovelecProtocol::NovelecProtocol
+// ============================================================================
+void NovelecProtocol::init_MCCE2_for_communication(void)
+{
+std::stringstream explicite_resp;
+std::string tmp("no data");
+
+	//- CMD to enable PROG cmds
+	this->switch_MCCE2_OFF();  //- this command is now called in the MCCE2 device !
 
 	//- Clear error registers
 	this->clear_registers();
@@ -77,7 +102,6 @@ std::string tmp("no data");
 	//- if no error
 	_is_explicite_resp_enabled = true;
 
-	std::cout << "NovelecProtocol::NovelecProtocol ->" << std::endl;
 }
 
 // ============================================================================
-- 
GitLab