Index: trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/activemirrorcontrol.cpp
===================================================================
--- trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/activemirrorcontrol.cpp	(revision 4472)
+++ trunk/MagicSoft/AMC/activemirrorcontrol/activemirrorcontrol/activemirrorcontrol.cpp	(revision 4473)
@@ -17,4 +17,5 @@
 
 #include "activemirrorcontrol.h"
+#include "amcdefs.h"
 #include "adjustmirrordlg.h"
 #include "amccmdserversocket.h"
@@ -24,4 +25,5 @@
 #include "amcreportsocket.h"
 #include "amcstate.h"
+#include "amccmdstate.h"
 #include "heatstate.h"
 #include "calibratelasermovementdialog.h"
@@ -37,14 +39,20 @@
 #include <qpushbutton.h>
 #include <qspinbox.h>
+#include <qstring.h>
 #include <stdio.h>
 #include <math.h>
 
-extern AMCState*  g_pAMCState;
-extern HEATState* g_pHEATState;
-extern AMCLog*	  g_pLog;
+extern AMCState*    g_pAMCState;
+extern HEATState*   g_pHEATState;
+extern AMCCmdState* g_pAMCCmdState;
+extern AMCLog*	    g_pLog;
 
 
 ActiveMirrorControl::ActiveMirrorControl(QWidget *parent, const char *name) : ActiveMirrorControlBase(parent, name)
 {
+	VersionLabel->setText( AMC_VERSION );
+	VersionDateLabel->setText( __DATE__ );
+	VersionTimeLabel->setText( __TIME__ );
+
 	m_zCCMode = true;
 	qDebug("Connecting AMCState signal");
@@ -52,6 +60,10 @@
 	qDebug("Connecting HEATState signal");
 	connect( g_pHEATState, SIGNAL( stateChanged( int, int  ) ), SLOT( heatStateChangedSlot( int, int)));
+	qDebug("Connecting HEATState signal");
+	connect( g_pAMCCmdState, SIGNAL( stateChanged( int, int  ) ), SLOT( cmdStateChangedSlot( int, int)));
 	qDebug("Setting AMCState");
 	g_pAMCState->setState( AMC_STATE_NOT_AVAILABLE );
+	qDebug("Setting AMCCMDState");
+	g_pAMCCmdState->setState( AMC_CMD_STATE_NOCMD );
 	qDebug("Setting HEATState");
 	g_pHEATState->setState( HEAT_STATE_NOT_AVAILABLE );
@@ -110,4 +122,5 @@
 	CommandTime->setText( dateString );
 	CommandLabel->setText( m_qsCmd );
+	g_pAMCCmdState->setCmd( m_qsCmd, rcvTime );
 	logMessage( m_qsCmd );
 
@@ -115,24 +128,38 @@
 	QString qsCommand;
   qts >> qsCommand;
+
 	if ( qsCommand == "INAMC" )
 	{	
+		g_pAMCCmdState->setState(AMC_CMD_STATE_ACKNOWLEDGED);
 		qDebug("FIX ME: INAMC");
+		g_pAMCCmdState->setState(AMC_CMD_STATE_COMPLETED);
 	}
 	if ( qsCommand == "ADJST" )
 	{	
+		g_pAMCCmdState->setState(AMC_CMD_STATE_ACKNOWLEDGED);
+		g_pAMCCmdState->setState(AMC_CMD_STATE_INVALID);
 		qDebug("FIX ME: ADJST");
-	}
-	if ( qsCommand == "INAMC" )
+		g_pAMCCmdState->setState(AMC_CMD_STATE_COMPLETED);
+	}
+	if ( qsCommand == "LSADJ" )
 	{	
+		g_pAMCCmdState->setState(AMC_CMD_STATE_ACKNOWLEDGED);
+		g_pAMCCmdState->setState(AMC_CMD_STATE_INVALID);
 		qDebug("FIX ME: LSADJ");
+		g_pAMCCmdState->setState(AMC_CMD_STATE_COMPLETED);
 	}
 	if ( qsCommand == "BREAK" )
 	{	
 		qDebug("FIX ME: BREAK");
+		g_pAMCCmdState->setState(AMC_CMD_STATE_ABORTED);
 	}
 	if ( qsCommand == "SHUTD" )
 	{	
+		g_pAMCCmdState->setState(AMC_CMD_STATE_ACKNOWLEDGED);
 		qDebug("FIX ME: SHUTD");
-	}
+		g_pAMCCmdState->setState(AMC_CMD_STATE_COMPLETED);
+	}
+	else
+		g_pAMCCmdState->setState(AMC_CMD_STATE_NOTACKNOWLEDGED);
 	
 }
@@ -165,9 +192,9 @@
   qts >> iStateDAQ >> iStateCAOS >> iStateDrive >> iStateStarGuider;
   int iStateCaCo, iStateCalib, iStateSentinel, iStateHVPS, iStateLid;
-  int iStateLV, iStateCool, iStateHV, iStateDC, iStateLEDs;
-  int iStateFADCFans, iStateCalCan, iStateCalIO, iStateCalLV;
+  int iStateLV, iStateCool, iStateHV, iStateDC, iStateCaosLEDs;
+  int iStateFADCFans, iStateCalCan, iStateCalIO, iStateCalLV, iStateAMCLEDs;
   qts >> iStateCaCo >> iStateCalib >> iStateSentinel >> iStateHVPS >> iStateLid;
-  qts >> iStateLV >> iStateCool >> iStateHV >> iStateDC >> iStateLEDs;
-  qts >> iStateFADCFans >> iStateCalCan >> iStateCalIO >> iStateCalLV;
+  qts >> iStateLV >> iStateCool >> iStateHV >> iStateDC >> iStateCaosLEDs;
+  qts >> iStateFADCFans >> iStateCalCan >> iStateCalIO >> iStateCalLV >> iStateAMCLEDs;
   int iStateAMC, iStateHEAT;
   qts >> iStateAMC >> iStateHEAT;
@@ -214,5 +241,5 @@
 			qsLID.sprintf("Unknown");
   }
-  switch (iStateLEDs)
+  switch (iStateAMCLEDs)
 	{
 		case 0:
@@ -339,5 +366,6 @@
 		LaserAdjustButton->setEnabled( true );
 		CenterAllButton->setEnabled( true );
-		CalButton->setEnabled( true );
+//		CalButton->setEnabled( true );
+		DefocusButton->setEnabled( true );
 		m_zCCMode = false;
 		m_iStoredState = g_pAMCState->getState( );
@@ -351,5 +379,6 @@
 		LaserAdjustButton->setEnabled( false );
 		CenterAllButton->setEnabled( false );
-		CalButton->setEnabled( false );
+//		CalButton->setEnabled( false );
+		DefocusButton->setEnabled( false );
 		m_zCCMode = true;
 		g_pAMCState->setState( m_iStoredState );
@@ -367,6 +396,6 @@
   StateLabel->setText( g_pAMCState->getText( p_iNewState ) );
 
-	if ( ( p_iNewState == AMC_STATE_READJUST ) && m_zAutoFocus )
-     adjustSlot();
+//	if ( ( p_iNewState == AMC_STATE_READJUST ) && m_zAutoFocus )
+//     adjustSlot();
 }
 
@@ -379,4 +408,14 @@
 //	StateLCD->display( p_iNewState );
 //  StateLabel->setText( g_pHEATState->getText( p_iNewState) );
+}
+
+void ActiveMirrorControl::cmdStateChangedSlot( int p_iOldState, int p_iNewState )
+{
+	QString qsMsg;
+  qsMsg.sprintf("Cmd State changed: %d -> %d", p_iOldState, p_iNewState );
+	g_pLog->logInfo( "ActiveMirrorControl::cmdStateChangedSlot", qsMsg );
+
+	CmdStateLCD->display( p_iNewState );
+  CmdStateLabel->setText( g_pHEATState->getText( p_iNewState) );
 }
 
@@ -465,5 +504,4 @@
 	pDialog->setText( qsMsg );
 
-	qsMsg;
   qsMsg.sprintf("Adjust for Zd: %6.2f Az: %6.2f using LUT %s", dZd, dAz, qsLUTName.latin1());
 	g_pLog->logInfo( "ActiveMirrorControl::adjustSlot", qsMsg );
@@ -497,5 +535,5 @@
 
 	QString qsMsg;
-  qsMsg.sprintf("Laser adjust for Zd: %6.2f Az: 6.2f", dZd, dAz);
+  qsMsg.sprintf("Laser adjust for Zd: %6.2f Az: %6.2f", dZd, dAz);
 	g_pLog->logInfo( "ActiveMirrorControl::laserAdjustSlot", qsMsg );
 
@@ -588,2 +626,14 @@
   m_zAutoFocus = p_zOn;
 }
+/** No descriptions */
+void ActiveMirrorControl::defocusSlot()
+{
+//	enableButtons( false );
+  QString qsMsg("Defocusing all mirrors");
+	AMCProgDlg* pDialog = new AMCProgDlg( DEFOCUS_THREAD_CTRL, this, qsMsg, true );
+	pDialog->setText( qsMsg );
+	pDialog->start();
+	pDialog->exec();
+	delete pDialog;
+
+}
