changeset 84:c03263186dd7

Rework and cleanup N measurement panels handling. Move logs to dedicated panel.
author Daniele Nicolodi <daniele.nicolodi@obspm.fr>
date Wed, 20 Mar 2013 16:36:36 +0100
parents b7810db29c12
children 6ac1d3de1ae2
files FXAnalyse.c FXAnalyse.h FXAnalyse.uir
diffstat 3 files changed, 279 insertions(+), 369 deletions(-) [+]
line wrap: on
line diff
--- a/FXAnalyse.c	Wed Mar 20 12:34:06 2013 +0100
+++ b/FXAnalyse.c	Wed Mar 20 16:36:36 2013 +0100
@@ -22,11 +22,10 @@
 #define DEDRIFT_DDS_FREQUENCY 70000000
 
 // panel handling stuff
-static PanelHandle MainPanel ;
-static PanelHandle CalcN1Panel ;
-static PanelHandle CalcN2Panel ;
-static PanelHandle CalcN3Panel ;
+static PanelHandle MainPanel;
+static PanelHandle CalcNPanel;
 static PanelHandle EstimateN3Panel;
+static PanelHandle LoggingPanel;
 
 char LogFileName[MAX_PATHNAME_LEN];
 
@@ -52,6 +51,17 @@
 long OldLogFilePtr = 0;
 double Ndiv = 8.0;
 
+int settling = 0;
+
+enum {
+	MEASURING_N_NONE,
+	MEASURING_N_Lo,
+	MEASURING_N_Hg,
+	MEASURING_N_Sr,
+};
+
+int measuring = MEASURING_N_NONE;
+
 enum {
 	N_MEASUREMENT_NONE,
 	N_MEASUREMENT_INIT,
@@ -62,15 +72,13 @@
 	N_MEASUREMENT_FREP_MINUS,
 };
 
-int settling = 0;
-
-int Measuring_1 = FALSE;
-int Measuring_2 = FALSE;											  
-int Measuring_3 = FALSE;
+int Measuring_1 = N_MEASUREMENT_NONE;
+int Measuring_2 = N_MEASUREMENT_NONE;											  
+int Measuring_3 = N_MEASUREMENT_NONE;
 
 double FrequDDS1=110000000.0, FrequDDS4=110000000.0;
-double Slope_1=0.0,Slope_2=0.0,Slope_3=0.0,Beatslope_2=0.0;
-double SlopeTime1=40.0, SlopeTime2=40.0; SlopeTime3=40.0;
+double Slope_1=0.0, Slope_2=0.0, Slope_3=0.0, Beatslope_2=0.0;
+double SlopeTime1=40.0, SlopeTime2=40.0, SlopeTime3=40.0;
 double Ch4Slope = 0.0;
 
 double N_1=0.0, N_2=0.0, N_3=0.0;
@@ -183,7 +191,7 @@
 	msg[len + 1] = '\0';
 	
 	// display message
-	SetCtrlVal(MainPanel, PANEL_LOGGING, msg);
+	SetCtrlVal(LoggingPanel, LOGGING_LOGGING, msg);
 }
 
 
@@ -253,14 +261,12 @@
 	
 	if ((MainPanel = LoadPanel (0, "FXAnalyse.uir", PANEL)) < 0)
 		return -1;
-	if ((CalcN1Panel = LoadPanel (0, "FXAnalyse.uir", CALCN1)) < 0)
-		return -1;
-	if ((CalcN2Panel = LoadPanel (0, "FXAnalyse.uir", CALCN2)) < 0)
-		return -1;
-	if ((CalcN3Panel = LoadPanel (0, "FXAnalyse.uir", CALCN3)) < 0)
+	if ((CalcNPanel = LoadPanel (MainPanel, "FXAnalyse.uir", CALCN)) < 0)
 		return -1;
 	if ((EstimateN3Panel = LoadPanel (MainPanel, "FXAnalyse.uir", ESTIMATEN3)) < 0)
 		return -1;
+	if ((LoggingPanel = LoadPanel (0, "FXAnalyse.uir", LOGGING)) < 0)
+		return -1;
 	
 	DisplayPanel (MainPanel);
 	
@@ -365,7 +371,8 @@
 	return 0;
 }
 
-int  CVICALLBACK CB_OnEventMain(int panel, int event, void *callbackData, int eventData1, int eventData2)
+int CVICALLBACK CB_OnEventMain(int panel, int event,
+		void *callbackData, int eventData1, int eventData2)
 {
 	int ActiveControl ;
 	int StepIndex ;
@@ -757,7 +764,7 @@
 						if ((utc - t1_1) > SlopeTime1) {
 							Slope_1 = stat_math1.slope;
 							Ch4Slope =  stat_ch4.slope;
-							SetCtrlVal(CalcN1Panel, CALCN1_SLOPE, Slope_1);
+							SetCtrlVal(CalcNPanel, CALCN_SLOPE, Slope_1);
 							
 							// frep positive step
 							DDS4xAD9912_FrequencyRampe(&DDS4xAD9912,1, FrequDDS1,(FrequDDS1+DeltakHz_1*1000), Step1/Ndiv);
@@ -849,7 +856,7 @@
 							
 							// compute N1
 							N_1 = Signe1 * (2*Ndiv * DeltakHz_1 * 1000)/(Frepminus_1 - Frepplus_1 - Slope_1 * (t3_1 - t2_1));
-							SetCtrlVal(CalcN1Panel, CALCN1_N, N_1);
+							SetCtrlVal(CalcNPanel, CALCN_N, N_1);
 						
 							t1_1 = 0.0;
 							t2_1 = 0.0;
@@ -905,7 +912,7 @@
 						if ((utc - t1_2) > SlopeTime2) {
 							Slope_2 = stat_math1.slope;
 							Beatslope_2 = stat_ch2.slope;
-							SetCtrlVal(CalcN2Panel, CALCN2_SLOPE, Beatslope_2);
+							SetCtrlVal(CalcNPanel, CALCN_SLOPE, Beatslope_2);
 							
 							// frep positive step
 							double fDDS1 = FrequDDS1 + DeltakHz_2 * 1000;
@@ -1016,7 +1023,7 @@
 
 							// compute N2
 							N_2 = (Signe2)*(-DeltaDDS3+Delta10K_Plus-Delta10K_Minus-Beatslope_2*(t3_2-t2_2) )/(Frepminus_2-Frepplus_2-Slope_2*(t3_2-t2_2));
-							SetCtrlVal(CalcN2Panel, CALCN2_N, N_2);
+							SetCtrlVal(CalcNPanel, CALCN_N, N_2);
 							
 							// back to nominal frequency
 							DDS4xAD9912_FrequencyRampe (&DDS4xAD9912, 1, FrequDDS1-DeltakHz_2*1000,FrequDDS1, Step2/Ndiv );
@@ -1157,7 +1164,7 @@
 							
 							// compute N3
 							N_3 = 1000.0 * DeltakHz_3 / (Frepplus_3 - Frepminus_3 + (2 * N3/N1 * Ndiv * DeltakHz_3 * 1000));
-							SetCtrlVal(CalcN3Panel, CALCN3_N, N_3);
+							SetCtrlVal(CalcNPanel, CALCN_N, N_3);
 							
 							t1_3=0.0;
 							t2_3=0.0;
@@ -1701,20 +1708,21 @@
 int CVICALLBACK CB_OnAcceptN (int panel, int control, int event,
 		void *callbackData, int eventData1, int eventData2)
 {
-	switch (event)
-	{
+	switch (event) {
 		case EVENT_COMMIT:
-			if (panel == CalcN1Panel) {
-				N1 = round(N_1);
-				SetCtrlVal(MainPanel, PANEL_N1CHOICE, N1);
-			}
-			if (panel == CalcN2Panel) {
-				N2 = round(N_2);
-				SetCtrlVal(MainPanel, PANEL_N2CHOICE, N2);
-			}
-			if (panel == CalcN3Panel) {
-				N3 = round(N_3);
-				SetCtrlVal(MainPanel, PANEL_N3CHOICE, N3);
+			switch (measuring) {
+				case MEASURING_N_Lo:
+					N1 = round(N_1);
+					SetCtrlVal(MainPanel, PANEL_N1CHOICE, N1);
+					break;
+				case MEASURING_N_Hg:
+					N2 = round(N_2);
+					SetCtrlVal(MainPanel, PANEL_N2CHOICE, N2);
+					break;
+				case MEASURING_N_Sr:
+					N3 = round(N_3);
+					SetCtrlVal(MainPanel, PANEL_N3CHOICE, N3);
+					break;
 			} 
 			break;
 	}
@@ -1726,54 +1734,47 @@
 		void *callbackData, int eventData1, int eventData2)
 {
 
-	int PanelIsVisible, PanelTop, PanelLeft, PanelWidth ;
+	int visible;
 	
-	switch (event)
-		{
+	switch (event) {
 		case EVENT_COMMIT:
-			
-			if (control==PANEL_N1CALCULUS){
-				GetPanelAttribute (CalcN1Panel, ATTR_VISIBLE , &PanelIsVisible);
-				if (PanelIsVisible) {
-				}
-				else {
-					GetPanelAttribute (MainPanel, ATTR_TOP,   &PanelTop) ;
-					GetPanelAttribute (MainPanel, ATTR_LEFT,  &PanelLeft) ;
-					GetPanelAttribute (MainPanel, ATTR_WIDTH, &PanelWidth) ;
-					SetPanelAttribute (CalcN1Panel, ATTR_TOP, PanelTop+170 ) ;
-					SetPanelAttribute (CalcN1Panel, ATTR_LEFT, PanelLeft+PanelWidth+4 ) ;
-					DisplayPanel(CalcN1Panel) ;
-				} 
-				}
-			if (control==PANEL_N2CALCULUS){
-				GetPanelAttribute (CalcN2Panel, ATTR_VISIBLE , &PanelIsVisible);
-				if (PanelIsVisible) {
-				}
-				else {
-					GetPanelAttribute (MainPanel, ATTR_TOP,   &PanelTop) ;
-					GetPanelAttribute (MainPanel, ATTR_LEFT,  &PanelLeft) ;
-					GetPanelAttribute (MainPanel, ATTR_WIDTH, &PanelWidth) ;
-					SetPanelAttribute (CalcN2Panel, ATTR_TOP, PanelTop+310 ) ;
-					SetPanelAttribute (CalcN2Panel, ATTR_LEFT, PanelLeft+PanelWidth+4 ) ;
-					DisplayPanel(CalcN2Panel) ;
-				} 
-				}
-			if (control==PANEL_N3CALCULUS){
-				GetPanelAttribute (CalcN3Panel, ATTR_VISIBLE , &PanelIsVisible);
-				if (PanelIsVisible) {
-				}
-				else {
-					GetPanelAttribute (MainPanel, ATTR_TOP,   &PanelTop) ;
-					GetPanelAttribute (MainPanel, ATTR_LEFT,  &PanelLeft) ;
-					GetPanelAttribute (MainPanel, ATTR_WIDTH, &PanelWidth) ;
-					SetPanelAttribute (CalcN3Panel, ATTR_TOP, PanelTop+480 ) ;
-					SetPanelAttribute (CalcN3Panel, ATTR_LEFT, PanelLeft+PanelWidth+4 ) ;
-					DisplayPanel(CalcN3Panel) ;
-				} 
-				}
+			switch (control) {
+				case PANEL_N1CALCULUS:
+					GetPanelAttribute(CalcNPanel, ATTR_VISIBLE, &visible);
+					if (! visible) {
+						measuring = MEASURING_N_Lo;
+						SetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, DeltaT_1);
+						SetCtrlVal(CalcNPanel, CALCN_SLOPETIME, SlopeTime1);
+						SetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, DeltakHz_1);
+						SetPanelAttribute(CalcNPanel, ATTR_TITLE, "Calculate N_Lo");
+						DisplayPanel(CalcNPanel);
+					}
+					break;
+				case PANEL_N2CALCULUS:
+					GetPanelAttribute(CalcNPanel, ATTR_VISIBLE, &visible);
+					if (! visible) {
+						measuring = MEASURING_N_Hg;
+						SetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, DeltaT_2);
+						SetCtrlVal(CalcNPanel, CALCN_SLOPETIME, SlopeTime2);
+						SetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, DeltakHz_2);
+						SetPanelAttribute(CalcNPanel, ATTR_TITLE, "Calculate N_Hg");
+						DisplayPanel(CalcNPanel);
+					} 
+					break;
+				case PANEL_N3CALCULUS:
+					GetPanelAttribute(CalcNPanel, ATTR_VISIBLE, &visible);
+					if (! visible) {
+						measuring = MEASURING_N_Sr;
+						SetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, DeltaT_3);
+						SetCtrlVal(CalcNPanel, CALCN_SLOPETIME, SlopeTime3);
+						SetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, DeltakHz_3);
+						SetPanelAttribute(CalcNPanel, ATTR_TITLE, "Calculate N_Sr");
+						DisplayPanel(CalcNPanel);
+					}
+					break;
+			}
 			break;
-		}
-	
+	}
 	return 0;
 }
 
@@ -1781,19 +1782,30 @@
 int CVICALLBACK CB_OnStartNCalculus (int panel, int control, int event,
 		void *callbackData, int eventData1, int eventData2)
 {
-	
-	switch (event)
-	{
+	switch (event) {
 		case EVENT_COMMIT:
-			if (panel == CalcN1Panel)
-				Measuring_1 = TRUE;
-			if (panel == CalcN2Panel)
-				Measuring_2 = TRUE;
-			if (panel == CalcN3Panel)
-				Measuring_3 = TRUE;
-		break;
+			switch (measuring) {
+				case MEASURING_N_Lo:
+					GetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, &DeltaT_1);
+					GetCtrlVal(CalcNPanel, CALCN_SLOPETIME, &SlopeTime1);
+					GetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, &DeltakHz_1);
+					Measuring_1 = TRUE;
+					break;
+				case MEASURING_N_Hg:
+					GetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, &DeltaT_2);
+					GetCtrlVal(CalcNPanel, CALCN_SLOPETIME, &SlopeTime2);
+					GetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, &DeltakHz_2);
+					Measuring_2 = TRUE;
+					break;
+				case MEASURING_N_Sr:
+					GetCtrlVal(CalcNPanel, CALCN_INTEGRATIONTIME, &DeltaT_3);
+					GetCtrlVal(CalcNPanel, CALCN_SLOPETIME, &SlopeTime3);
+					GetCtrlVal(CalcNPanel, CALCN_DELTAFREQ, &DeltakHz_3);
+					Measuring_3 = TRUE;
+					break;
+			}
+			break;
 	}
-	
 	return 0;
 }
 
@@ -1802,94 +1814,29 @@
 int CVICALLBACK CB_OnNStop (int panel, int control, int event,
 		void *callbackData, int eventData1, int eventData2)
 {
-	int PanelIsVisible;
-	
-	switch (event)
-	{
-		case EVENT_COMMIT:
-			if (panel == CalcN1Panel) {
-				GetPanelAttribute (CalcN1Panel, ATTR_VISIBLE, &PanelIsVisible);
-				if (PanelIsVisible)
-					HidePanel(CalcN1Panel);
-				
-				Measuring_1 = FALSE;
-					
-				SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1) ;
-				DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, FrequDDS1);
-				SetCtrlVal(MainPanel, PANEL_DDS2, FrequencyDDSBesInit) ;
-				DDS4xAD9912_SetFrequency(&DDS4xAD9912, 2, FrequencyDDSBesInit); 
-			}	
-			if (panel == CalcN2Panel) {
-				GetPanelAttribute (CalcN2Panel, ATTR_VISIBLE, &PanelIsVisible);
-				if (PanelIsVisible)
-					HidePanel(CalcN2Panel);
-				
-				Measuring_2 = FALSE;
-				
-				SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1) ;
-				DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, FrequDDS1);
-				SetCtrlVal(MainPanel, PANEL_DDS2, FrequencyDDSBesInit) ;
-				DDS4xAD9912_SetFrequency(&DDS4xAD9912, 2, FrequencyDDSBesInit);
-				SetCtrlVal(MainPanel, PANEL_DDS3, FrequencyDDS3Init) ;
-				DDS4xAD9912_SetFrequency(&DDS4xAD9912, 3, FrequencyDDS3Init); 
-			}
-			if (panel == CalcN3Panel) {		
-				GetPanelAttribute (CalcN3Panel, ATTR_VISIBLE, &PanelIsVisible);
-				if (PanelIsVisible)										  
-					HidePanel(CalcN3Panel);
-				
-				Measuring_3 = FALSE;
-			}
-		break;
-	}
-	return 0;
-}
-
-
-int  CVICALLBACK CB_OnIntegrationTime (int panel, int control, int event, 
-		 void *callbackData, int eventData1, int eventData2)
-{
-	double Time ;
-	
 	switch (event) {
 		case EVENT_COMMIT:
-			if (panel == CalcN1Panel) {
-				GetCtrlVal(CalcN1Panel, CALCN1_INTEGRATIONTIME, &Time) ;
-				DeltaT_1=Time;
-			}
-			if (panel == CalcN2Panel) {
-				GetCtrlVal(CalcN2Panel, CALCN2_INTEGRATIONTIME, &Time) ;
-				DeltaT_2=Time;
-			}
-			if (panel == CalcN3Panel) {
-				GetCtrlVal(CalcN3Panel, CALCN3_INTEGRATIONTIME, &Time) ;
-				DeltaT_3=Time;
-			}
-			break;
-	}
-	return 0;
-}
-
-
-int  CVICALLBACK CB_OnDeltaFreq (int panel, int control, int event, 
-		 void *callbackData, int eventData1, int eventData2)
-{
-	double Frequ ;
-	
-	switch (event)
-	{
-		case EVENT_COMMIT:
-			if (panel == CalcN1Panel) {
-				GetCtrlVal(CalcN1Panel, CALCN1_DELTAFREQ, &Frequ);
-				DeltakHz_1 = Frequ;
-			}
-			if (panel == CalcN2Panel) {
-				GetCtrlVal(CalcN2Panel, CALCN2_DELTAFREQ, &Frequ) ;
-				DeltakHz_2=Frequ;
-			}
-			if (panel == CalcN3Panel) {
-				GetCtrlVal(CalcN3Panel, CALCN3_DELTAFREQ, &Frequ) ;
-				DeltakHz_3=Frequ;
+			HidePanel(CalcNPanel);
+			switch (measuring) {
+				case MEASURING_N_Lo:
+					Measuring_1 = FALSE;
+					SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1);
+					DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, FrequDDS1);
+					SetCtrlVal(MainPanel, PANEL_DDS2, FrequencyDDSBesInit);
+					DDS4xAD9912_SetFrequency(&DDS4xAD9912, 2, FrequencyDDSBesInit);
+					break;
+				case MEASURING_N_Hg:
+					Measuring_2 = FALSE;
+					SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1);
+					DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, FrequDDS1);
+					SetCtrlVal(MainPanel, PANEL_DDS2, FrequencyDDSBesInit);
+					DDS4xAD9912_SetFrequency(&DDS4xAD9912, 2, FrequencyDDSBesInit);
+					SetCtrlVal(MainPanel, PANEL_DDS3, FrequencyDDS3Init);
+					DDS4xAD9912_SetFrequency(&DDS4xAD9912, 3, FrequencyDDS3Init);
+					break;
+				case MEASURING_N_Sr:
+					Measuring_3 = FALSE;
+					break;
 			}
 			break;
 	}
@@ -1967,55 +1914,17 @@
 }
 
 
-int  CVICALLBACK CB_OnSlopeTime (int panel, int control, int event, 
-		 void *callbackData, int eventData1, int eventData2)
-{
-	double Time ;
-	
-	switch (event)
-	{
-		case EVENT_COMMIT:
-			if (panel == CalcN1Panel) {
-				GetCtrlVal(CalcN1Panel, CALCN1_SLOPETIME, &Time);
-				SlopeTime1=Time;
-			}
-			if (panel == CalcN2Panel) {
-				GetCtrlVal(CalcN2Panel, CALCN2_SLOPETIME, &Time);
-				SlopeTime2=Time;
-			}
-			if (panel == CalcN3Panel) {
-				GetCtrlVal(CalcN3Panel, CALCN3_SLOPETIME, &Time);
-				SlopeTime3=Time;
-			}
-			break;
-	}
-	return 0;
-}
-
-
  int  CVICALLBACK CB_OnChangeNdiv (int panel, int control, int event, 
 		 void *callbackData, int eventData1, int eventData2)
 {
-	double NewN ;
-	
-	switch (event)
-		{
+	switch (event) {
 		case EVENT_COMMIT:
-			   if (control==PANEL_CHANGENDIV){ 
-				GetCtrlVal(MainPanel, PANEL_CHANGENDIV, &NewN) ;
-				Ndiv=NewN;
-				FrequDDS1=880000000.0/Ndiv;
-				DeltakHz_1=1800.0*8/Ndiv;
-				DeltakHz_2=1500.0*8/Ndiv;
-				SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1) ;
-				DDS4xAD9912_SetFrequency(&DDS4xAD9912,1,FrequDDS1);
-				SetCtrlVal(CalcN1Panel, CALCN1_DELTAFREQ, DeltakHz_1) ;
-				SetCtrlVal(CalcN2Panel, CALCN2_DELTAFREQ, DeltakHz_2) ; 
-			   }
-
+			GetCtrlVal(MainPanel, PANEL_CHANGENDIV, &Ndiv);
+			FrequDDS1 = 880000000.0 / Ndiv;
+			SetCtrlVal(MainPanel, PANEL_DDS1, FrequDDS1);
+			DDS4xAD9912_SetFrequency(&DDS4xAD9912, 1, FrequDDS1);
 			break;
-			
-		}
+	}
 	return 0;
 }
 
@@ -2306,3 +2215,26 @@
 	return 0;
 }
 
+int CVICALLBACK CB_ShowLog (int panel, int control, int event,
+		void *callbackData, int eventData1, int eventData2)
+{
+	switch (event)
+	{
+		case EVENT_COMMIT:
+			SetPanelAttribute(LoggingPanel, ATTR_VISIBLE, 1);
+			break;
+	}
+	return 0;
+}
+
+int CVICALLBACK CB_OnLoggingPanelEvent(int panel, int event,
+		void *callbackData, int eventData1, int eventData2)
+{
+	switch (event)
+	{
+		case EVENT_CLOSE:
+			SetPanelAttribute(LoggingPanel, ATTR_VISIBLE, 0);
+			break;
+	}
+	return 0;
+}
--- a/FXAnalyse.h	Wed Mar 20 12:34:06 2013 +0100
+++ b/FXAnalyse.h	Wed Mar 20 16:36:36 2013 +0100
@@ -14,37 +14,17 @@
 
      /* Panels and Controls: */
 
-#define  CALCN1                           1
-#define  CALCN1_N                         2       /* control type: numeric, callback function: (none) */
-#define  CALCN1_ACCEPTN                   3       /* control type: command, callback function: CB_OnAcceptN */
-#define  CALCN1_SLOPE                     4       /* control type: numeric, callback function: (none) */
-#define  CALCN1_DELTAFREQ                 5       /* control type: numeric, callback function: CB_OnDeltaFreq */
-#define  CALCN1_SLOPETIME                 6       /* control type: numeric, callback function: CB_OnSlopeTime */
-#define  CALCN1_INTEGRATIONTIME           7       /* control type: numeric, callback function: CB_OnIntegrationTime */
-#define  CALCN1_STOP                      8       /* control type: command, callback function: CB_OnNStop */
-#define  CALCN1_START                     9       /* control type: command, callback function: CB_OnStartNCalculus */
+#define  CALCN                            1
+#define  CALCN_N                          2       /* control type: numeric, callback function: (none) */
+#define  CALCN_STOP                       3       /* control type: command, callback function: CB_OnNStop */
+#define  CALCN_SLOPETIME                  4       /* control type: numeric, callback function: (none) */
+#define  CALCN_INTEGRATIONTIME            5       /* control type: numeric, callback function: (none) */
+#define  CALCN_DELTAFREQ                  6       /* control type: numeric, callback function: (none) */
+#define  CALCN_START                      7       /* control type: command, callback function: CB_OnStartNCalculus */
+#define  CALCN_ACCEPTN                    8       /* control type: command, callback function: CB_OnAcceptN */
+#define  CALCN_SLOPE                      9       /* control type: numeric, callback function: (none) */
 
-#define  CALCN2                           2
-#define  CALCN2_SLOPE                     2       /* control type: numeric, callback function: (none) */
-#define  CALCN2_DELTAFREQ                 3       /* control type: numeric, callback function: CB_OnDeltaFreq */
-#define  CALCN2_INTEGRATIONTIME           4       /* control type: numeric, callback function: CB_OnIntegrationTime */
-#define  CALCN2_N                         5       /* control type: numeric, callback function: (none) */
-#define  CALCN2_STOP                      6       /* control type: command, callback function: CB_OnNStop */
-#define  CALCN2_START                     7       /* control type: command, callback function: CB_OnStartNCalculus */
-#define  CALCN2_ACCEPTN                   8       /* control type: command, callback function: CB_OnAcceptN */
-#define  CALCN2_SLOPETIME                 9       /* control type: numeric, callback function: CB_OnSlopeTime */
-
-#define  CALCN3                           3
-#define  CALCN3_SLOPE                     2       /* control type: numeric, callback function: (none) */
-#define  CALCN3_DELTAFREQ                 3       /* control type: numeric, callback function: CB_OnDeltaFreq */
-#define  CALCN3_INTEGRATIONTIME           4       /* control type: numeric, callback function: CB_OnIntegrationTime */
-#define  CALCN3_N                         5       /* control type: numeric, callback function: (none) */
-#define  CALCN3_STOP                      6       /* control type: command, callback function: CB_OnNStop */
-#define  CALCN3_START                     7       /* control type: command, callback function: CB_OnStartNCalculus */
-#define  CALCN3_ACCEPTN                   8       /* control type: command, callback function: CB_OnAcceptN */
-#define  CALCN3_SLOPETIME                 9       /* control type: numeric, callback function: CB_OnSlopeTime */
-
-#define  ESTIMATEN3                       4
+#define  ESTIMATEN3                       2
 #define  ESTIMATEN3_N                     2       /* control type: numeric, callback function: (none) */
 #define  ESTIMATEN3_ESTIMATE              3       /* control type: command, callback function: CB_OnNEstimate */
 #define  ESTIMATEN3_FREP                  4       /* control type: numeric, callback function: (none) */
@@ -52,7 +32,10 @@
 #define  ESTIMATEN3_CANCEL                6       /* control type: command, callback function: CB_OnNEstimateCancel */
 #define  ESTIMATEN3_WAVELENGTH            7       /* control type: numeric, callback function: (none) */
 
-#define  PANEL                            5       /* callback function: CB_OnEventMain */
+#define  LOGGING                          3       /* callback function: CB_OnLoggingPanelEvent */
+#define  LOGGING_LOGGING                  2       /* control type: textBox, callback function: (none) */
+
+#define  PANEL                            4       /* callback function: CB_OnEventMain */
 #define  PANEL_QUITBUTTON                 2       /* control type: command, callback function: QuitCallback */
 #define  PANEL_STARTBUTTON                3       /* control type: command, callback function: CB_OnStart */
 #define  PANEL_STOPBUTTON                 4       /* control type: command, callback function: CB_OnStop */
@@ -60,119 +43,115 @@
 #define  PANEL_FREQ3                      6       /* control type: numeric, callback function: (none) */
 #define  PANEL_FREQ2                      7       /* control type: numeric, callback function: (none) */
 #define  PANEL_FREQ1                      8       /* control type: numeric, callback function: (none) */
-#define  PANEL_CHECKBOX_DDSSRALLAN        9       /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_DDSHGALLAN        10      /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_DDSSRPLOT         11      /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH1ALLAN        12      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_CHECKBOX_DDSHGPLOT         13      /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_FREQ4ALLAN        14      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_CHECKBOX_FREQ3ALLAN        15      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_CHECKBOX_FREQ4PLOT         16      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_FREQ2ALLAN        17      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_CHECKBOX_FREQ3PLOT         18      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_CORRFREQU         19      /* control type: radioButton, callback function: CB_OnCROX */
-#define  PANEL_CHECKBOX_FREQ1ALLAN        20      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_CHECKBOX_FREQ2PLOT         21      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_MATH1PLOT         22      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_FREQ1PLOT         23      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_TIMER                      24      /* control type: timer, callback function: CB_OnTimer */
-#define  PANEL_DDS2                       25      /* control type: numeric, callback function: CB_ChangeDDSOut */
-#define  PANEL_TEXTMSG                    26      /* control type: textMsg, callback function: (none) */
-#define  PANEL_TEXTMSG_2                  27      /* control type: textMsg, callback function: (none) */
-#define  PANEL_SLOPETIME                  28      /* control type: numeric, callback function: CB_ChangeSlopeTime */
-#define  PANEL_DDS1                       29      /* control type: numeric, callback function: CB_ChangeDDSOut */
-#define  PANEL_SPLITTER                   30      /* control type: splitter, callback function: (none) */
-#define  PANEL_CHANGENDIV                 31      /* control type: numeric, callback function: CB_OnChangeNdiv */
-#define  PANEL_N3CHOICE                   32      /* control type: numeric, callback function: CB_ChangeN */
-#define  PANEL_N3CALCULUS                 33      /* control type: command, callback function: CB_OnNCalculus */
-#define  PANEL_N1CHOICE                   34      /* control type: numeric, callback function: CB_ChangeN */
-#define  PANEL_N2CHOICE                   35      /* control type: numeric, callback function: CB_ChangeN */
-#define  PANEL_N2CALCULUS                 36      /* control type: command, callback function: CB_OnNCalculus */
-#define  PANEL_DDS4STEP                   37      /* control type: ring, callback function: CB_ChangeDDSStep */
-#define  PANEL_DDS3STEP                   38      /* control type: ring, callback function: CB_ChangeDDSStep */
-#define  PANEL_DDS2STEP                   39      /* control type: ring, callback function: CB_ChangeDDSStep */
-#define  PANEL_CENTERFREQUENCY            40      /* control type: numeric, callback function: (none) */
-#define  PANEL_SLOPE_APPLIED              41      /* control type: numeric, callback function: CB_SetSlope */
-#define  PANEL_MATH4                      42      /* control type: numeric, callback function: (none) */
-#define  PANEL_MATH5                      43      /* control type: numeric, callback function: (none) */
-#define  PANEL_MATH3                      44      /* control type: numeric, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH5PLOT         45      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_MATH4PLOT         46      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_MATH4ALLAN        47      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_DDS1STEP                   48      /* control type: ring, callback function: CB_ChangeDDSStep */
-#define  PANEL_TEXTMSG_15                 49      /* control type: textMsg, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH5ALLAN        50      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_CHECKBOX_MATH3PLOT         51      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_MATH5SAVE         52      /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH4SAVE         53      /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH3ALLAN        54      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_MATHSTRING4                55      /* control type: string, callback function: CB_ChangeMath */
-#define  PANEL_TEXTMSG_17                 56      /* control type: textMsg, callback function: (none) */
-#define  PANEL_MATH2                      57      /* control type: numeric, callback function: (none) */
-#define  PANEL_SPLITTER_15                58      /* control type: splitter, callback function: (none) */
-#define  PANEL_SPLITTER_12                59      /* control type: splitter, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH2PLOT         60      /* control type: radioButton, callback function: CB_OnFreqPlot */
-#define  PANEL_CHECKBOX_MATH3SAVE         61      /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH2SAVE         62      /* control type: radioButton, callback function: (none) */
-#define  PANEL_CHECKBOX_MATH2ALLAN        63      /* control type: radioButton, callback function: CB_OnAllanPlot */
-#define  PANEL_TEXTMSG_7                  64      /* control type: textMsg, callback function: (none) */
-#define  PANEL_MATHSTRING3                65      /* control type: string, callback function: CB_ChangeMath */
-#define  PANEL_MATH1                      66      /* control type: numeric, callback function: (none) */
-#define  PANEL_SPLITTER_6                 67      /* control type: splitter, callback function: (none) */
-#define  PANEL_TEXTMSG_18                 68      /* control type: textMsg, callback function: (none) */
-#define  PANEL_TEXTMSG_6                  69      /* control type: textMsg, callback function: (none) */
-#define  PANEL_TEXTMSG_8                  70      /* control type: textMsg, callback function: (none) */
-#define  PANEL_TEXTMSG_19                 71      /* control type: textMsg, callback function: (none) */
-#define  PANEL_MATHSTRING1                72      /* control type: string, callback function: CB_ChangeMath */
-#define  PANEL_TEXTMSG_9                  73      /* control type: textMsg, callback function: (none) */
-#define  PANEL_TEXTMSG_10                 74      /* control type: textMsg, callback function: (none) */
-#define  PANEL_MATHSTRING2                75      /* control type: string, callback function: CB_ChangeMath */
-#define  PANEL_TEXTMSG_16                 76      /* control type: textMsg, callback function: (none) */
-#define  PANEL_SPLITTER_11                77      /* control type: splitter, callback function: (none) */
-#define  PANEL_SPLITTER_16                78      /* control type: splitter, callback function: (none) */
-#define  PANEL_SPLITTER_9                 79      /* control type: splitter, callback function: (none) */
-#define  PANEL_SPLITTER_3                 80      /* control type: splitter, callback function: (none) */
-#define  PANEL_MINUS10KDDS1               81      /* control type: command, callback function: CB_OnMinus10k */
-#define  PANEL_MINUS10KDDS4               82      /* control type: command, callback function: CB_OnMinus10k */
-#define  PANEL_MINUS10KDDS3               83      /* control type: command, callback function: CB_OnMinus10k */
-#define  PANEL_MINUS10KDDS2               84      /* control type: command, callback function: CB_OnMinus10k */
-#define  PANEL_PLUS10KDDS4                85      /* control type: command, callback function: CB_OnPlus10k */
-#define  PANEL_PLUS10KDDS3                86      /* control type: command, callback function: CB_OnPlus10k */
-#define  PANEL_PLUS10KDDS1                87      /* control type: command, callback function: CB_OnPlus10k */
-#define  PANEL_PLUS10KDDS2                88      /* control type: command, callback function: CB_OnPlus10k */
-#define  PANEL_TEXTMSG_11                 89      /* control type: textMsg, callback function: (none) */
-#define  PANEL_MATHSTRING5                90      /* control type: textBox, callback function: CB_ChangeMath */
-#define  PANEL_SPLITTER_8                 91      /* control type: splitter, callback function: (none) */
-#define  PANEL_MJD                        92      /* control type: numeric, callback function: (none) */
-#define  PANEL_UTC                        93      /* control type: numeric, callback function: (none) */
-#define  PANEL_TIME                       94      /* control type: string, callback function: (none) */
-#define  PANEL_DATE                       95      /* control type: string, callback function: (none) */
-#define  PANEL_SPLITTER_14                96      /* control type: splitter, callback function: (none) */
-#define  PANEL_SPLITTER_13                97      /* control type: splitter, callback function: (none) */
-#define  PANEL_DDS4                       98      /* control type: numeric, callback function: CB_ChangeDDSOut */
-#define  PANEL_SPLITTER_2                 99      /* control type: splitter, callback function: (none) */
-#define  PANEL_DDS3                       100     /* control type: numeric, callback function: CB_ChangeDDSOut */
-#define  PANEL_N1CALCULUS                 101     /* control type: command, callback function: CB_OnNCalculus */
-#define  PANEL_FINDSIGN3                  102     /* control type: command, callback function: CB_OnFindSign */
-#define  PANEL_SIGN3                      103     /* control type: numeric, callback function: (none) */
-#define  PANEL_FINDSIGN2                  104     /* control type: command, callback function: CB_OnFindSign */
-#define  PANEL_SIGN2                      105     /* control type: numeric, callback function: (none) */
-#define  PANEL_FINDSIGN1                  106     /* control type: command, callback function: CB_OnFindSign */
-#define  PANEL_SIGN1                      107     /* control type: numeric, callback function: (none) */
-#define  PANEL_FIND10K3                   108     /* control type: command, callback function: CB_OnFind275K */
-#define  PANEL_FIND275K2                  109     /* control type: command, callback function: CB_OnFind275K */
-#define  PANEL_RESETSLOPE                 110     /* control type: command, callback function: CB_OnResetSlope */
-#define  PANEL_CHECKBOX_STOPIFAUTODE      111     /* control type: radioButton, callback function: CB_OnStopSlopeCancellingOnUnlocked */
-#define  PANEL_CHECKBOX_RECENTER          112     /* control type: radioButton, callback function: CB_OnReCentering */
-#define  PANEL_CHECKBOX_KEEPSLOPE         113     /* control type: radioButton, callback function: CB_OnCROX */
-#define  PANEL_CHECKBOX_KEEP              114     /* control type: radioButton, callback function: CB_OnCROX */
-#define  PANEL_SLOPE_REFERENCE            115     /* control type: ring, callback function: CB_OnSlopeReference */
-#define  PANEL_ESTIMATE_N3                116     /* control type: command, callback function: CB_OnEstimateN */
-#define  PANEL_INVERT_SLOPE_SIGN          117     /* control type: radioButton, callback function: CB_InvertSlopeSign */
-#define  PANEL_MEASURE_SLOPE              118     /* control type: LED, callback function: CB_MeasureSlope */
-#define  PANEL_SLOPE_MEASURED             119     /* control type: numeric, callback function: (none) */
-#define  PANEL_RESET_DEDRIFT_DDS          120     /* control type: command, callback function: CB_ResetDedriftDDS */
-#define  PANEL_LOGGING                    121     /* control type: textBox, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH1ALLAN        9       /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_CHECKBOX_FREQ4ALLAN        10      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_CHECKBOX_FREQ3ALLAN        11      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_CHECKBOX_FREQ4PLOT         12      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_FREQ2ALLAN        13      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_CHECKBOX_FREQ3PLOT         14      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_CORRFREQU         15      /* control type: radioButton, callback function: CB_OnCROX */
+#define  PANEL_CHECKBOX_FREQ1ALLAN        16      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_CHECKBOX_FREQ2PLOT         17      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_MATH1PLOT         18      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_FREQ1PLOT         19      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_TIMER                      20      /* control type: timer, callback function: CB_OnTimer */
+#define  PANEL_DDS2                       21      /* control type: numeric, callback function: CB_ChangeDDSOut */
+#define  PANEL_TEXTMSG                    22      /* control type: textMsg, callback function: (none) */
+#define  PANEL_TEXTMSG_2                  23      /* control type: textMsg, callback function: (none) */
+#define  PANEL_SLOPETIME                  24      /* control type: numeric, callback function: CB_ChangeSlopeTime */
+#define  PANEL_DDS1                       25      /* control type: numeric, callback function: CB_ChangeDDSOut */
+#define  PANEL_SPLITTER                   26      /* control type: splitter, callback function: (none) */
+#define  PANEL_CHANGENDIV                 27      /* control type: numeric, callback function: CB_OnChangeNdiv */
+#define  PANEL_N3CHOICE                   28      /* control type: numeric, callback function: CB_ChangeN */
+#define  PANEL_N3CALCULUS                 29      /* control type: command, callback function: CB_OnNCalculus */
+#define  PANEL_N1CHOICE                   30      /* control type: numeric, callback function: CB_ChangeN */
+#define  PANEL_N2CHOICE                   31      /* control type: numeric, callback function: CB_ChangeN */
+#define  PANEL_N2CALCULUS                 32      /* control type: command, callback function: CB_OnNCalculus */
+#define  PANEL_DDS4STEP                   33      /* control type: ring, callback function: CB_ChangeDDSStep */
+#define  PANEL_DDS3STEP                   34      /* control type: ring, callback function: CB_ChangeDDSStep */
+#define  PANEL_DDS2STEP                   35      /* control type: ring, callback function: CB_ChangeDDSStep */
+#define  PANEL_CENTERFREQUENCY            36      /* control type: numeric, callback function: (none) */
+#define  PANEL_SLOPE_APPLIED              37      /* control type: numeric, callback function: CB_SetSlope */
+#define  PANEL_MATH4                      38      /* control type: numeric, callback function: (none) */
+#define  PANEL_MATH5                      39      /* control type: numeric, callback function: (none) */
+#define  PANEL_MATH3                      40      /* control type: numeric, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH5PLOT         41      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_MATH4PLOT         42      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_MATH4ALLAN        43      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_DDS1STEP                   44      /* control type: ring, callback function: CB_ChangeDDSStep */
+#define  PANEL_TEXTMSG_15                 45      /* control type: textMsg, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH5ALLAN        46      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_CHECKBOX_MATH3PLOT         47      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_MATH5SAVE         48      /* control type: radioButton, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH4SAVE         49      /* control type: radioButton, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH3ALLAN        50      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_MATHSTRING4                51      /* control type: string, callback function: CB_ChangeMath */
+#define  PANEL_TEXTMSG_17                 52      /* control type: textMsg, callback function: (none) */
+#define  PANEL_MATH2                      53      /* control type: numeric, callback function: (none) */
+#define  PANEL_SPLITTER_15                54      /* control type: splitter, callback function: (none) */
+#define  PANEL_SPLITTER_12                55      /* control type: splitter, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH2PLOT         56      /* control type: radioButton, callback function: CB_OnFreqPlot */
+#define  PANEL_CHECKBOX_MATH3SAVE         57      /* control type: radioButton, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH2SAVE         58      /* control type: radioButton, callback function: (none) */
+#define  PANEL_CHECKBOX_MATH2ALLAN        59      /* control type: radioButton, callback function: CB_OnAllanPlot */
+#define  PANEL_TEXTMSG_7                  60      /* control type: textMsg, callback function: (none) */
+#define  PANEL_MATHSTRING3                61      /* control type: string, callback function: CB_ChangeMath */
+#define  PANEL_MATH1                      62      /* control type: numeric, callback function: (none) */
+#define  PANEL_SPLITTER_6                 63      /* control type: splitter, callback function: (none) */
+#define  PANEL_TEXTMSG_18                 64      /* control type: textMsg, callback function: (none) */
+#define  PANEL_TEXTMSG_6                  65      /* control type: textMsg, callback function: (none) */
+#define  PANEL_TEXTMSG_8                  66      /* control type: textMsg, callback function: (none) */
+#define  PANEL_TEXTMSG_19                 67      /* control type: textMsg, callback function: (none) */
+#define  PANEL_MATHSTRING1                68      /* control type: string, callback function: CB_ChangeMath */
+#define  PANEL_TEXTMSG_9                  69      /* control type: textMsg, callback function: (none) */
+#define  PANEL_TEXTMSG_10                 70      /* control type: textMsg, callback function: (none) */
+#define  PANEL_MATHSTRING2                71      /* control type: string, callback function: CB_ChangeMath */
+#define  PANEL_TEXTMSG_16                 72      /* control type: textMsg, callback function: (none) */
+#define  PANEL_SPLITTER_11                73      /* control type: splitter, callback function: (none) */
+#define  PANEL_SPLITTER_16                74      /* control type: splitter, callback function: (none) */
+#define  PANEL_SPLITTER_9                 75      /* control type: splitter, callback function: (none) */
+#define  PANEL_SPLITTER_3                 76      /* control type: splitter, callback function: (none) */
+#define  PANEL_MINUS10KDDS1               77      /* control type: command, callback function: CB_OnMinus10k */
+#define  PANEL_MINUS10KDDS4               78      /* control type: command, callback function: CB_OnMinus10k */
+#define  PANEL_MINUS10KDDS3               79      /* control type: command, callback function: CB_OnMinus10k */
+#define  PANEL_MINUS10KDDS2               80      /* control type: command, callback function: CB_OnMinus10k */
+#define  PANEL_PLUS10KDDS4                81      /* control type: command, callback function: CB_OnPlus10k */
+#define  PANEL_PLUS10KDDS3                82      /* control type: command, callback function: CB_OnPlus10k */
+#define  PANEL_PLUS10KDDS1                83      /* control type: command, callback function: CB_OnPlus10k */
+#define  PANEL_PLUS10KDDS2                84      /* control type: command, callback function: CB_OnPlus10k */
+#define  PANEL_TEXTMSG_11                 85      /* control type: textMsg, callback function: (none) */
+#define  PANEL_MATHSTRING5                86      /* control type: textBox, callback function: CB_ChangeMath */
+#define  PANEL_SPLITTER_8                 87      /* control type: splitter, callback function: (none) */
+#define  PANEL_MJD                        88      /* control type: numeric, callback function: (none) */
+#define  PANEL_UTC                        89      /* control type: numeric, callback function: (none) */
+#define  PANEL_TIME                       90      /* control type: string, callback function: (none) */
+#define  PANEL_DATE                       91      /* control type: string, callback function: (none) */
+#define  PANEL_SPLITTER_14                92      /* control type: splitter, callback function: (none) */
+#define  PANEL_SPLITTER_13                93      /* control type: splitter, callback function: (none) */
+#define  PANEL_DDS4                       94      /* control type: numeric, callback function: CB_ChangeDDSOut */
+#define  PANEL_SPLITTER_2                 95      /* control type: splitter, callback function: (none) */
+#define  PANEL_DDS3                       96      /* control type: numeric, callback function: CB_ChangeDDSOut */
+#define  PANEL_N1CALCULUS                 97      /* control type: command, callback function: CB_OnNCalculus */
+#define  PANEL_FINDSIGN3                  98      /* control type: command, callback function: CB_OnFindSign */
+#define  PANEL_SIGN3                      99      /* control type: numeric, callback function: (none) */
+#define  PANEL_FINDSIGN2                  100     /* control type: command, callback function: CB_OnFindSign */
+#define  PANEL_SIGN2                      101     /* control type: numeric, callback function: (none) */
+#define  PANEL_FINDSIGN1                  102     /* control type: command, callback function: CB_OnFindSign */
+#define  PANEL_SIGN1                      103     /* control type: numeric, callback function: (none) */
+#define  PANEL_FIND10K3                   104     /* control type: command, callback function: CB_OnFind275K */
+#define  PANEL_FIND275K2                  105     /* control type: command, callback function: CB_OnFind275K */
+#define  PANEL_RESETSLOPE                 106     /* control type: command, callback function: CB_OnResetSlope */
+#define  PANEL_CHECKBOX_STOPIFAUTODE      107     /* control type: radioButton, callback function: CB_OnStopSlopeCancellingOnUnlocked */
+#define  PANEL_CHECKBOX_RECENTER          108     /* control type: radioButton, callback function: CB_OnReCentering */
+#define  PANEL_CHECKBOX_KEEPSLOPE         109     /* control type: radioButton, callback function: CB_OnCROX */
+#define  PANEL_CHECKBOX_KEEP              110     /* control type: radioButton, callback function: CB_OnCROX */
+#define  PANEL_SLOPE_REFERENCE            111     /* control type: ring, callback function: CB_OnSlopeReference */
+#define  PANEL_ESTIMATE_N3                112     /* control type: command, callback function: CB_OnEstimateN */
+#define  PANEL_INVERT_SLOPE_SIGN          113     /* control type: radioButton, callback function: CB_InvertSlopeSign */
+#define  PANEL_MEASURE_SLOPE              114     /* control type: LED, callback function: CB_MeasureSlope */
+#define  PANEL_SLOPE_MEASURED             115     /* control type: numeric, callback function: (none) */
+#define  PANEL_RESET_DEDRIFT_DDS          116     /* control type: command, callback function: CB_ResetDedriftDDS */
+#define  PANEL_SHOWLOG                    117     /* control type: command, callback function: CB_ShowLog */
 
 
      /* Menu Bars, Menus, and Menu Items: */
@@ -193,13 +172,12 @@
 int  CVICALLBACK CB_OnAllanPlot(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnChangeNdiv(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnCROX(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
-int  CVICALLBACK CB_OnDeltaFreq(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnEstimateN(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnEventMain(int panel, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnFind275K(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnFindSign(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnFreqPlot(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
-int  CVICALLBACK CB_OnIntegrationTime(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
+int  CVICALLBACK CB_OnLoggingPanelEvent(int panel, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnMinus10k(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnNCalculus(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnNEstimate(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
@@ -210,7 +188,6 @@
 int  CVICALLBACK CB_OnReCentering(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnResetSlope(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnSlopeReference(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
-int  CVICALLBACK CB_OnSlopeTime(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnStart(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnStartNCalculus(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_OnStop(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
@@ -218,6 +195,7 @@
 int  CVICALLBACK CB_OnTimer(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_ResetDedriftDDS(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK CB_SetSlope(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
+int  CVICALLBACK CB_ShowLog(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 int  CVICALLBACK QuitCallback(int panel, int control, int event, void *callbackData, int eventData1, int eventData2);
 
 
Binary file FXAnalyse.uir has changed