diff --git a/MAC/Navigator/colorDB/Lofar colors b/MAC/Navigator/colorDB/Lofar colors
index 0bc8d4da9ecf9645a4b842b3f4a019cd68b229d6..fb2bbad484d960017feb62b7aa34ec51be89127f 100644
--- a/MAC/Navigator/colorDB/Lofar colors	
+++ b/MAC/Navigator/colorDB/Lofar colors	
@@ -1,4 +1,4 @@
-7
+9
 "Lofar_background_dark" N {41,104,235}
 "Lofar_background_light" N {114,164,242}
 "Lofar_device_active" N {51,204,0}
@@ -6,3 +6,5 @@
 "Lofar_cep_IO" N {255,158,156}
 "Lofar_cep_Switch" N {198,255,231}
 "Lofar_cep_BG" N {156,158,255}
+"Lofar_device_inactive" N {192,192,192}
+"Lofar_device_invalid" N {255,0,255}
diff --git a/MAC/Navigator/config/progs.station b/MAC/Navigator/config/progs.station
index c2f27620e0d3e6f356af12a467e4ff0c3bfa62db..856e44aee0928e8090112956d4284f572ee34b3a 100644
--- a/MAC/Navigator/config/progs.station
+++ b/MAC/Navigator/config/progs.station
@@ -10,6 +10,5 @@ PVSS00ctrl       | always |      30 |        3 |        1 |-f pvss_scripts.lst
 PVSS00sim        | always |      30 |        3 |        1 |
 PVSS00dist       | always |      30 |        3 |        1 |
 PVSS00NG         | manual |      30 |        2 |        2 |
-PVSS00NG         | manual |      30 |        2 |        2 |
 PVSS00NV         | manual |      30 |        3 |        1 |-p EnablePropertySets.pnl -iconBar -menuBar
 
diff --git a/MAC/Navigator/panels/nav_usr/CS1/controller-overview.pnl b/MAC/Navigator/panels/nav_usr/CS1/controller-overview.pnl
index 9539cbc0b0f993fce6e087d1f29f80ff30ed3220..285c098bdfbc62d4e419237639fb143b5ca0ca44 100644
--- a/MAC/Navigator/panels/nav_usr/CS1/controller-overview.pnl
+++ b/MAC/Navigator/panels/nav_usr/CS1/controller-overview.pnl
@@ -1,35 +1,175 @@
 V 10
 1
-LANG:1 8 (NoName)
-PANEL,293 76 611 516 N "_3DFace" 0
+LANG:1 13 ObsCtrl_State
+PANEL,424 247 950 741 N "_3DFace" 1
+"$datapoint"
 "main()
 {
-	string query = \"SELECT '_online.._value' FROM 'LOFAR_*.state' WHERE _DPT = \\\"CalCtrl\\\" OR _DPT = \\\"DigBoardCtrl\\\" OR _DPT = \\\"BeamCtrl\\\" OR _DPT = \\\"ObsCtrl\\\"\";
-	dpQueryConnectAll(
-		\"updateControllersTable\",
-		true, 
-		\"ControllerStateQuery\",
-		query);
+	// check if this panel is placed on the right datapoint
+	navViewCheckDpType($datapoint,\"ObsCtrl\");  
+  // get obsname from dp
+	string obsName= getPathComponent($datapoint,3);
+	//DebugTN(\"Observation: \"+obsName);
+	
+	setValue(\"txt_Observation\",\"text\",obsName);
 
+	// load propertyset from datapoint
+	navPMLloadPropertySet($datapoint);
+	
+	showLogging();
+	
+	// check if the requiered datapoint for this view are enabled and accessible
+	if (dpAccessable($datapoint + \".state\") && dpAccessable($datapoint + \".error\")) {
+		dpConnect(\"updateObsCtrl\", $datapoint + \".state:_online.._value\",
+		                           $datapoint + \".error:_online.._value\",
+		                           $datapoint + \".state:_online.._invalid\");
+  } else {
+    setValue(\"ObsCtrl_border\", \"backCol\", \"_dpdoesnotexist\");
+  }  
+}
+
+updateObsCtrl(string dp1, string state,
+							string dp2, string error,
+							string dp3, bool invalid)
+{
+
+	string SymbolCol;
+	if (invalid) 
+	{
+		SymbolCol=\"Lofar_device_invalid\";
+  } else {
+		SymbolCol=\"Lofar_device_active\";	  
+  }
+	setValue(\"ObsCtrl_border\", \"backCol\", SymbolCol);
+  setValue(\"txt_State\", \"text\", state);
+  setValue(\"txt_Error\", \"text\", error);	
+}
+
+
+
+" 0
+"main()
+{
+  navPMLunloadPropertySet($datapoint);
 }" 0
-EE E E 1 0 0 0  10 10
+E E E 1 0 0 0  10 10
 "" 0 1
-E"updateControllersTable(string identifier, dyn_dyn_anytype result)
+E"#uses \"nav_usr/CS1/CS1_Common.ctl\"
+showLogging()
 {
-	if(identifier == \"ControllerStateQuery\")
-	{
-		TableControllers.deleteAllLines();
-	  for(int i=2; i<=dynlen(result);i++)
-	  {
-	  	string tempName = dpSubStr(result[i][1],DPSUB_DP);
-		  dyn_string dpElements = splitDatapointPath(tempName);
-	  	string ctrlName = dpElements[dynlen(dpElements)];
-			TableControllers.appendLine(\"Controller\",ctrlName);
-			TableControllers.updateLine(1,\"Controller\",ctrlName,\"Status\",result[i][2]);
+	//DebugTN(\"startLogging\");
+	
+	string dpLog = $datapoint+\".logmsg\";
+
+	string systemName = dpSubStr(dpLog,DPSUB_SYS);
+  string bareDP     = dpSubStr(dpLog,DPSUB_DP_EL_CONF_DET_ATT);
+
+  obs_table_logging.deleteAllLines();
+ 
+  if(dpExists(dpLog))
+  {
+
+		// initialize the logging table with historical data:
+		dyn_dyn_anytype tab;
+		int z;
+		time tStart;
+		time tStop;
+		tStop = getCurrentTime();
+		tStart = tStop - 3*3600; // three hours of history
+	
+		string query = \"SELECT ALL '_original.._value' FROM '\" + dpLog + \"' REMOTE'\"+systemName +\"' TIMERANGE(\\\"\" +
+			formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+			formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 100\";
+			
+		//DebugTN(\"Query: \" + query);
+		dpQuery(query, tab);
+		//DebugTN(\"Found: \" + tab + \" length: \" + dynlen(tab));
+	 	 
+	 	
+		for(z=2;z<dynlen(tab);z++)
+		{
+			addLogMessage(tab[z][2]);
 		}
+	
+		// connect to logging
+		dpConnect(\"updateLogging\",dpLog);
 	}
 }
-" 0
+
+//
+// Update logging callback
+//
+updateLogging(string dpe, string dpv)
+{
+  //DebugTN(\"LogMsg: \"+dpv);
+  if (dpv != \"\") {
+    addLogMessage(dpv);
+  }
+}
+
+//
+// Add logMsg to table.
+//
+addLogMessage(string msg)
+{
+  //split lines like:
+  // 13-11-06 10:06:00.519|INFO|MAC.GCF.PAL.SAL|Set value of property 'MCU001:LOFAR_PermSW_MACScheduler.OTDB.lastPoll'|GSA_Service.cc:661
+  // into relevant pieces
+
+  if (msg != \"\") {
+    //DebugTN(\"msg: \" + msg);
+
+    dyn_string msgParts;
+    string dateTime=\"\";
+    string level=\"\";
+    string source=\"\";
+    string logMsg=\"\";
+    string codeLine=\"\";
+    bool error=false;
+
+    msgParts = strsplit(msg,\"|\");
+
+    if (dynlen(msgParts) >=2) {
+      dateTime = msgParts[2];
+    } else {
+    	error=true;
+   	}
+    if (dynlen(msgParts) >=3) {
+      level    = msgParts[3];
+    } else {
+    	error=true;
+   	}
+    if (dynlen(msgParts) >=4) {
+      source   = msgParts[4];
+    } else {
+    	error=true;
+   	}
+
+    if (dynlen(msgParts) >=5) {
+      logMsg = msgParts[5];
+    } else {
+    	error=true;
+   	}
+
+    if (dynlen(msgParts) >=6) {
+      codeLine = msgParts[6];
+    } else {
+    	error=true;
+   	}
+	
+	
+    //DebugTN(\"dateTime: \" + dateTime);
+    //DebugTN(\"level: \" + level);
+    //DebugTN(\"source: \" + source);
+    //DebugTN(\"logMsg: \" + logMsg);
+    //DebugTN(\"codeLine: \" + codeLine);
+
+		if (!error && logMsg != \"\") {
+	    obs_table_logging.appendLine(\"time\",dateTime,\"level\",level,\"source\",source,\"message\",logMsg,\"code\",codeLine);
+  	  obs_table_logging.lineVisible(-1);
+  	 }
+  }
+}" 0
  2
 "CBRef""1"
 "EClose"E
@@ -38,65 +178,166 @@ DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
 LAYER, 0 
 1
 LANG:1 6 Layer1
-2 0
-"Text1"
+6 45
+"ObsCtrl_border"
 ""
-1 10 10 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+1 10 85 E E E 1 E 1 E N "_WindowText" E N "Lofar_device_active" E E
  E E
-1 0 0 0 0 0
+24 0 0 0 0 0
 EE E
 0
 1
 LANG:1 0 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 0 1 E U  0 E 12 12 270 44
-0 2 0 "s" 0 0 0 192 0 0  12 12
- 1
+E E 0 1 1 0 1 E U  1 E 10 10 260 85
+1 46 4 "" 0
+0
+1 47 4 "" 1
+0
+1 48 4 "" 4
+0
+1 49 4 "" 5
+0
+1 50 4 "" 6
+0
+1 51 4 "" 7
+0
+1 52 4 "" 8
+0
+1 53 4 "" 10
+0
+1 54 4 "" 11
+0
+1 57 5 "" 0
+0
+1 58 5 "" 1
+0
+1 59 5 "" 4
+0
+1 60 5 "" 5
+0
+1 61 5 "" 6
+0
+1 62 5 "" 7
+0
+1 63 5 "" 8
+0
+1 64 5 "" 10
+0
+1 65 5 "" 11
+0
+1 68 6 "" 0
+0
+1 69 6 "" 1
+0
+1 70 6 "" 4
+0
+1 71 6 "" 5
+0
+1 72 6 "" 6
+0
+1 73 6 "" 7
+0
+1 74 6 "" 8
+0
+1 75 6 "" 10
+0
+1 76 6 "" 11
+0
+1 79 7 "" 0
+0
+1 80 7 "" 1
+0
+1 81 7 "" 4
+0
+1 82 7 "" 5
+0
+1 83 7 "" 6
+0
+1 84 7 "" 7
+0
+1 85 7 "" 8
+0
+1 86 7 "" 10
+0
+1 87 7 "" 11
+0
+6 66
+"Observation_border"
+""
+1 10 114 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+29 0 0 0 0 0
+EE E
+0
 1
-LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-240-100-100-*-*-iso8859-1|-27,0,0,0,700,0,0,0,0,3,2,1,34,Arial
-0 ""
+LANG:1 0 
 1
-LANG:1 19 Controller overview
-2 10
-"Text6"
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 10 89 940 114
+2 67
+"Text2"
 ""
-1 10 70 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+1 10 89 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
  E E
-11 0 0 0 0 0
+30 0 0 0 0 0
 EE E
 0
 1
 LANG:1 0 
 1
 "dashclr"N "_Transparent"
-E E 0 1 1 0 1 E U  0 E 12 72 92 90
-0 2 0 "s" 0 0 0 192 0 0  12 72
+E E 0 1 1 0 1 E U  0 E 12 91 133 113
+0 2 0 "s" 0 0 0 192 0 0  12 91
  1
 1
-LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-15,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-160-100-100-*-*-iso8859-1|-19,0,0,0,700,0,0,0,0,3,2,1,34,Arial
 0 ""
 1
-LANG:1 11 Controllers
-4 12
-"Line1"
+LANG:1 12 Observation:
+2 68
+"txt_Observation"
 ""
-1 10 50 E E E 1 E 1 E N "_WindowText" E N {255,255,255} E E
+1 141 91 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
  E E
-13 0 0 0 0 0
+31 0 0 0 0 0
 EE E
 0
 1
 LANG:1 0 
 1
 "dashclr"N "_Transparent"
-E E 0 3 2 0 1 E  940 50 10 50
-25 9
-"TableControllers"
+E E 0 1 1 0 1 E U  0 E 143 93 287 111
+0 2 0 "s" 0 0 0 192 0 0  143 93
+ 1
+1
+LANG:1 107 -microsoft windows-Arial-normal-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,400,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 17 <ObservationName>
+1 55 4 "" 2
+0
+1 56 4 "" 9
+0
+1 66 5 "" 2
+0
+1 67 5 "" 9
+0
+1 77 6 "" 2
+0
+1 78 6 "" 9
+0
+1 88 7 "" 2
+0
+1 89 7 "" 9
+0
+25 90
+"obs_table_logging"
 ""
-1 5 -1327 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+1 365 -129 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
  E E
-10 0 0 0 0 0
+32 0 0 0 0 0
 EE E
 0
 1
@@ -105,23 +346,29 @@ LANG:1 0
 1
 LANG:1 106 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,0,0,0,0,Arial
 0 ""
-8 98 482 735
-E E 1 0 1 2 4 "Controller" 0 1 0 "s" 1
-LANG:1 10 Controller
+268 8 942 87
+E E 1 0 1 5 1 "time" 0 1 0 "s" 1
+LANG:1 4 time
 E1
 LANG:1 0 
- 225 "Status" 0 1 0 "s" 1
-LANG:1 6 Status
+ 150 "level" 0 1 0 "s" 1
+LANG:1 5 level
 E1
 LANG:1 0 
- 225 26 26 "" 1 1
+ 70 "source" 0 1 0 "s" 1
+LANG:1 6 source
+E1
+LANG:1 0 
+ 200 "message" 0 1 0 "s" 1
+LANG:1 7 message
+E1
+LANG:1 0 
+ 1000 "code" 0 1 0 "s" 1
+LANG:1 4 code
+E1
+LANG:1 0 
+ 200 16 16 "" 1 1
 LANG:1 2 #1
-"" 1 1
-LANG:1 2 #2
-"" 1 1
-LANG:1 2 #3
-"" 1 1
-LANG:1 2 #4
 8 30 1
 LANG:1 106 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,0,0,0,0,Arial
 0 ""
@@ -131,6 +378,106 @@ LANG:1 106 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-
 LAYER, 1 
 1
 LANG:1 6 Layer2
+2 0
+"Text1"
+""
+1 12 10 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+1 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 14 12 85 34
+0 2 0 "s" 0 0 0 192 0 0  14 12
+ 1
+1
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-160-100-100-*-*-iso8859-1|-19,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 7 ObsCtrl
+2 13
+"ObsCtrl_state"
+""
+1 17 35 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+14 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 19 37 78 58
+0 2 0 "s" 0 0 0 64 0 0  19 37
+ 1
+1
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 7 State :
+2 35
+"txt_State"
+""
+1 67 35 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+23 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 69 37 84 53
+0 2 0 "s" 0 0 0 192 0 0  69 37
+ 1
+1
+LANG:1 107 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 3 txt
+2 14
+"ObsCtrl_Error"
+""
+1 17 56 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+15 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 19 58 58 74
+0 2 0 "s" 0 0 0 192 0 0  19 58
+ 1
+1
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 7 Error :
+2 36
+"txt_Error"
+""
+1 67 55 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+24 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 69 57 84 73
+0 2 0 "s" 0 0 0 192 0 0  69 57
+ 1
+1
+LANG:1 107 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 3 txt
 0
 LAYER, 2 
 1
@@ -156,4 +503,24 @@ LAYER, 7
 1
 LANG:1 6 Layer8
 0
+3 4 "station_4"
+"objects\\nav_usr\\CS1\\Station_ctrl_view.pnl" 180 601 T 25 1 0 1  294 139  
+2
+"$Station""CS016"
+"$datapoint""$datapoint"
+3 5 "Station_3"
+"objects\\nav_usr\\CS1\\Station_ctrl_view.pnl" 183 432 T 26 1 0 1  -173 308  
+2
+"$Station""CS010"
+"$datapoint""$datapoint"
+3 6 "Station_2"
+"objects\\nav_usr\\CS1\\Station_ctrl_view.pnl" 487 270 T 27 1 0 1  -13 163  
+2
+"$Station""CS008"
+"$datapoint""$datapoint"
+3 7 "Station_1"
+"objects\\nav_usr\\CS1\\Station_ctrl_view.pnl" 195 216 T 28 1 0 1  -185 217  
+2
+"$Station""CS001"
+"$datapoint""$datapoint"
 0
\ No newline at end of file
diff --git a/MAC/Navigator/panels/nav_usr/CS1/software-overview.pnl b/MAC/Navigator/panels/nav_usr/CS1/software-overview.pnl
index a0d938076ec404f20cad41245a9095e1dfffe94e..d241269a21b4ec2dc8d338ff798d924487d4c69c 100644
--- a/MAC/Navigator/panels/nav_usr/CS1/software-overview.pnl
+++ b/MAC/Navigator/panels/nav_usr/CS1/software-overview.pnl
@@ -1,7 +1,7 @@
 V 10
 1
 LANG:1 8 (NoName)
-PANEL,312 176 950 741 N "_3DFace" 0
+PANEL,352 226 1026 741 N "_3DFace" 0
 "main()
 {
 	dpConnect(\"updateObservationsTable\",\"LOFAR_PermSW_MACScheduler.activeObservations:_online.._value\");
diff --git a/MAC/Navigator/panels/nav_usr/CS1/station-overview.pnl b/MAC/Navigator/panels/nav_usr/CS1/station-overview.pnl
index 075048350e70d13979a09c53540ad2a75281356d..163c895b52b42f1607de67893a337c72388daa66 100644
--- a/MAC/Navigator/panels/nav_usr/CS1/station-overview.pnl
+++ b/MAC/Navigator/panels/nav_usr/CS1/station-overview.pnl
@@ -1,7 +1,7 @@
 V 10
 1
 LANG:1 8 (NoName)
-PANEL,391 228 950 741 N "_3DFace" 1
+PANEL,275 931 950 741 N "_3DFace" 1
 "$datapoint"
 "main()
 {
diff --git a/MAC/Navigator/panels/objects/nav_usr/CS1/Station_ctrl_view.pnl b/MAC/Navigator/panels/objects/nav_usr/CS1/Station_ctrl_view.pnl
new file mode 100644
index 0000000000000000000000000000000000000000..f7b3ab691634120a6d81b9173bcb834510f72aba
--- /dev/null
+++ b/MAC/Navigator/panels/objects/nav_usr/CS1/Station_ctrl_view.pnl
@@ -0,0 +1,570 @@
+V 10
+1
+LANG:1 20 StationCtrlViewPanel
+PANEL,416 258 484 325 N "_3DFace" 2
+"$Station"
+"$datapoint"
+"main()
+{
+	txt_Controller.text = \"StationCtrl\"; 
+  txt_Station.text = $Station;
+	obsName          = getPathComponent($datapoint,3);
+	baseDP           = $Station+\":LOFAR\";
+	BeamCtrlDP       = baseDP+\"_ObsSW_\"+obsName+\"_BeamCtrl\";
+	CalCtrlDP        = baseDP+\"_PermSW_CalCtrl\";
+	DigBoardCtrlDP   = baseDP+\"_PermSW_DigBoardCtrl\";
+	StationCtrlDP    = baseDP+\"_PermSW_StationCtrl\";	
+	
+	// load propertysets from datapoints
+	navPMLloadPropertySet(BeamCtrlDP);
+	navPMLloadPropertySet(CalCtrlDP);
+	navPMLloadPropertySet(DigBoardCtrlDP);
+	navPMLloadPropertySet(StationCtrlDP);
+
+	DebugTN(\"init entered\");
+  logThreadID=startThread(\"connectLogDP\");  
+  DebugTN(\"ThreadId: \"+$Station+ \": \"+logThreadID);
+
+	selectedDP=StationCtrlDP+\".logmsg\";
+
+  	
+	// check if the requiered datapoint for this view are enabled and accessible
+	if (dpAccessable(StationCtrlDP+\".state\") && dpAccessable(StationCtrlDP + \".error\")) {
+	  dpConnect(\"updateStationCtrlTable\",StationCtrlDP + \".state\",
+ 	                             	       StationCtrlDP + \".error\",
+ 	                             	       StationCtrlDP + \".state:_online.._invalid\");
+ 	} else {
+    setValue(\"StationCtrlLight\", \"backCol\", \"_dpdoesnotexist\");
+		StationCtrlTable.appendLine(\"Controller\",\"StationCtrl\",\"Status\",\"\",\"Error\",\"\");
+  }	
+
+	// check if the requiered datapoint for this view are enabled and accessible
+	if (dpAccessable(DigBoardCtrlDP+\".state\") && dpAccessable(DigBoardCtrlDP + \".error\")) {
+	  dpConnect(\"updateDigBoardCtrlTable\",DigBoardCtrlDP + \".state\",
+	                             	        DigBoardCtrlDP + \".error\",
+ 	                             	        DigBoardCtrlDP + \".state:_online.._invalid\");
+ 	} else {
+    setValue(\"DigBoardCtrlLight\", \"backCol\", \"_dpdoesnotexist\");
+		StationCtrlTable.appendLine(\"Controller\",\"DigBoardCtrl\",\"Status\",\"\",\"Error\",\"\");
+  }	
+
+	// check if the requiered datapoint for this view are enabled and accessible
+	if (dpAccessable(BeamCtrlDP+\".state\") && dpAccessable(BeamCtrlDP + \".error\")) {
+		dpConnect(\"updateBeamCtrlTable\",BeamCtrlDP + \".state\",
+ 	                              	  BeamCtrlDP + \".error\",
+ 	                              	  BeamCtrlDP + \".state:_online.._invalid\");
+ 	} else {
+    setValue(\"BeamCtrlLight\", \"backCol\", \"_dpdoesnotexist\");
+		StationCtrlTable.appendLine(\"Controller\",\"BeamCtrl\",\"Status\",\"\",\"Error\",\"\");
+  }	
+
+	// check if the requiered datapoint for this view are enabled and accessible
+	if (dpAccessable(CalCtrlDP+\".state\") && dpAccessable(CalCtrlDP + \".error\")) {
+		dpConnect(\"updateCalCtrlTable\",CalCtrlDP + \".state\",
+ 	                             	   CalCtrlDP + \".error\",
+ 	                             	   CalCtrlDP + \".state:_online.._invalid\");
+ 	} else {
+    setValue(\"CalCtrlLight\", \"backCol\", \"_dpdoesnotexist\");
+		StationCtrlTable.appendLine(\"Controller\",\"CalCtrl\",\"Status\",\"\",\"Error\",\"\");
+  }	
+
+
+}
+
+updateBeamCtrlTable(string dp1, string state, 
+                    string dp2, string error,
+                    string dp3, bool invalid)
+{
+	string SymbolCol;
+	if (invalid) 
+	{
+		SymbolCol=\"Lofar_device_invalid\";
+  } else {
+		SymbolCol=\"Lofar_device_active\";	  
+  }
+  setValue(\"BeamCtrlLight\", \"backCol\", SymbolCol);
+	StationCtrlTable.updateLine(1,\"Controller\",\"BeamCtrl\",\"Status\",state,\"Error\",error);
+}
+
+updateCalCtrlTable(string dp1, string state, 
+                   string dp2, string error,
+                   string dp3, bool invalid)
+{
+	string SymbolCol;
+	if (invalid) 
+	{
+		SymbolCol=\"Lofar_device_invalid\";
+  } else {
+		SymbolCol=\"Lofar_device_active\";	  
+  }
+  setValue(\"CalCtrlLight\", \"backCol\", SymbolCol);
+	StationCtrlTable.updateLine(1,\"Controller\",\"CalCtrl\",\"Status\",state,\"Error\",error);
+}
+
+updateDigBoardCtrlTable(string dp1, string state, 
+												string dp2, string error,
+												string dp3, bool invalid)
+{
+	string SymbolCol;
+	if (invalid) 
+	{
+		SymbolCol=\"Lofar_device_invalid\";
+  } else {
+		SymbolCol=\"Lofar_device_active\";	  
+  }
+  setValue(\"DigBoardCtrlLight\", \"backCol\", SymbolCol);
+	StationCtrlTable.updateLine(1,\"Controller\",\"DigBoardCtrl\",\"Status\",state,\"Error\",error);
+}
+
+updateStationCtrlTable(string dp1, string state, 
+                       string dp2, string error,
+                       string dp3, bool invalid)
+{
+	string SymbolCol;
+	if (invalid) 
+	{
+		SymbolCol=\"Lofar_device_invalid\";
+  } else {
+		SymbolCol=\"Lofar_device_active\";	  
+  }
+  setValue(\"StationCtrlLight\", \"backCol\", SymbolCol);
+	StationCtrlTable.updateLine(1,\"Controller\",\"StationCtrl\",\"Status\",state,\"Error\",error);
+}
+" 0
+"main()
+{
+	navPMLunloadPropertySet(BeamCtrlDP);
+	navPMLunloadPropertySet(CalCtrlDP);
+	navPMLunloadPropertySet(DigBoardCtrlDP);
+	navPMLunloadPropertySet(StationCtrlDP);
+}" 0
+E E E 1 0 0 0  5 320
+"" 0 1
+E"#uses \"nav_usr/CS1/CS1_Common.ctl\"
+
+string obsName;
+string baseDP;
+string BeamCtrlDP;
+string CalCtrlDP;
+string DigBoardCtrlDP;
+string StationCtrlDP;
+string selectedDP=StationCtrlDP+\".logmsg\";
+string previouslySelectedDP=\"\";
+int logThreadID;
+
+void connectLogDP()
+{
+	while(1)
+	{
+		delay(0,100);
+		if (selectedDP != previouslySelectedDP)
+		{
+			if(previouslySelectedDP != \"\" && dpExists(previouslySelectedDP))
+				dpDisconnect(\"updateLogging\",previouslySelectedDP);
+		 
+		 	if (dpExists(selectedDP)) {
+		 		dpConnect(\"updateLogging\",selectedDP);
+		 		showLogging();
+		 	}
+		 	previouslySelectedDP=selectedDP;
+		}
+	}
+}
+
+showLogging()
+{
+	//DebugTN(\"startLogging\");
+	dyn_string dp = strsplit(dpSubStr(selectedDP,DPSUB_DP),\"_\");
+	txt_Controller.text = dp[dynlen(dp)]; 
+	
+
+ 	// get the systemname and systemnameless part of the datapoint
+	string systemName = dpSubStr(selectedDP,DPSUB_SYS);
+  string bareDP     = dpSubStr(selectedDP,DPSUB_DP_EL_CONF_DET_ATT);
+ 
+ 	
+
+  // clear the table from the old logging
+  table_logging.deleteAllLines();
+
+  // if the datapoint exists, try to get some of the historical data on this point
+  // fill the table with it and do a dpConnect so that new changes will be added to the table 
+  if(dpExists(selectedDP))
+  {
+
+		// initialize the logging table with historical data:
+		dyn_dyn_anytype tab;
+		int z;
+		time tStart;
+		time tStop;
+		tStop = getCurrentTime();
+		tStart = tStop - 48*3600; // 2 days of history
+	
+		string query = \"SELECT ALL '_original.._value' FROM '\" + selectedDP + \"' REMOTE'\"+systemName +\"' TIMERANGE(\\\"\" +
+			formatTime(\"%Y.%m.%d %H:%M:%S\",tStart) + \"\\\",\\\"\" +
+			formatTime(\"%Y.%m.%d %H:%M:%S\",tStop) + \"\\\",1,0) LAST 100\";
+			
+		DebugTN(\"Query: \" + query);
+		dpQuery(query, tab);
+		DebugTN(\"Found: \" + tab + \" length: \" + dynlen(tab));
+	 	 
+	 	
+		for(z=2;z<dynlen(tab);z++)
+		{
+			addLogMessage(tab[z][2]);
+		}
+	}
+}
+
+//
+// Update logging callback
+//
+updateLogging(string dpe, string dpv)
+{
+  //DebugTN(\"LogMsg: \"+dpv);
+  if (dpv != \"\") {
+    addLogMessage(dpv);
+  }
+}
+
+//
+// Add logMsg to table, We assume the tablename is table_logging
+//
+addLogMessage(string msg)
+{
+  //split lines like:
+  // 13-11-06 10:06:00.519|INFO|MAC.GCF.PAL.SAL|Set value of property 'MCU001:LOFAR_PermSW_MACScheduler.OTDB.lastPoll'|GSA_Service.cc:661
+  // into relevant pieces
+
+  if (msg != \"\") {
+    //DebugTN(\"msg: \" + msg);
+
+    dyn_string msgParts;
+    string dateTime=\"\";
+    string level=\"\";
+    string source=\"\";
+    string logMsg=\"\";
+    string codeLine=\"\";
+    bool error=false;
+
+    msgParts = strsplit(msg,\"|\");
+
+    if (dynlen(msgParts) >=2) {
+      dateTime = msgParts[2];
+    } else {
+    	error=true;
+   	}
+    if (dynlen(msgParts) >=3) {
+      level    = msgParts[3];
+    } else {
+    	error=true;
+   	}
+    if (dynlen(msgParts) >=4) {
+      source   = msgParts[4];
+    } else {
+    	error=true;
+   	}
+
+    if (dynlen(msgParts) >=5) {
+      logMsg = msgParts[5];
+    } else {
+    	error=true;
+   	}
+
+    if (dynlen(msgParts) >=6) {
+      codeLine = msgParts[6];
+    } else {
+    	error=true;
+   	}
+	
+	
+    //DebugTN(\"dateTime: \" + dateTime);
+    //DebugTN(\"level: \" + level);
+    //DebugTN(\"source: \" + source);
+    //DebugTN(\"logMsg: \" + logMsg);
+    //DebugTN(\"codeLine: \" + codeLine);
+
+		if (!error && logMsg != \"\") {
+	    table_logging.appendLine(\"time\",dateTime,\"level\",level,\"source\",source,\"message\",logMsg,\"code\",codeLine);
+  	  table_logging.lineVisible(-1);
+  	 }
+  }
+}
+" 0
+ 2
+"CBRef""1"
+"EClose"E
+""
+DISPLAY_LAYER, 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
+LAYER, 0 
+1
+LANG:1 6 Layer1
+6 0
+"Border1"
+""
+1 5 310 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+1 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 2 1 0 1 E U  0 E 5 5 470 310
+2 1
+"StationName"
+""
+1 12 10 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+2 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 14 12 110 38
+0 2 0 "s" 0 0 0 64 0 0  14 12
+ 1
+1
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-160-100-100-*-*-iso8859-1|-19,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 8 Station:
+2 4
+"txt_Station"
+""
+1 95 12 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+5 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 97 14 183 30
+0 2 0 "s" 0 0 0 64 0 0  97 14
+ 1
+1
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 9 <Station>
+7 5
+"StationCtrlLight"
+""
+1 17 58 E E E 1 E 1 E N "_WindowText" E N "Lofar_device_active" E E
+ E E
+6 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E "main()
+{
+  selectedDP=StationCtrlDP+\".logmsg\";
+}" 0
+ 0 1 1 0 1 E U  1 E 17 60 5 5
+7 6
+"DigBoardCtrlLight"
+""
+1 17 74 E E E 1 E 1 E N "_WindowText" E N "Lofar_device_active" E E
+ E E
+7 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E "main()
+{
+  selectedDP=DigBoardCtrlDP+\".logmsg\";
+}" 0
+ 0 1 1 0 1 E U  1 E 17 76 5 5
+7 7
+"BeamCtrlLight"
+""
+1 17 90 E E E 1 E 1 E N "_WindowText" E N "Lofar_device_active" E E
+ E E
+8 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E "main()
+{
+  selectedDP=BeamCtrlDP+\".logmsg\";
+}" 0
+ 0 1 1 0 1 E U  1 E 17 92 5 5
+7 8
+"CalCtrlLight"
+""
+1 17 106 E E E 1 E 1 E N "_WindowText" E N "Lofar_device_active" E E
+ E E
+9 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E "main()
+{
+  selectedDP=CalCtrlDP+\".logmsg\";
+}" 0
+ 0 1 1 0 1 E U  1 E 17 108 5 5
+2 10
+"Text1"
+""
+1 10 125 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+11 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 12 127 121 146
+0 2 0 "s" 0 0 0 192 0 0  12 127
+ 1
+1
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-140-100-100-*-*-iso8859-1|-16,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 13 Logging from:
+2 11
+"txt_Controller"
+""
+1 121 127 E E E 1 E 1 E N "_WindowText" E N "_Transparent" E E
+ E E
+12 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+1
+"dashclr"N "_Transparent"
+E E 0 1 1 0 1 E U  0 E 123 129 200 145
+0 2 0 "s" 0 0 0 192 0 0  123 129
+ 1
+1
+LANG:1 105 -microsoft windows-Arial-bold-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,700,0,0,0,0,3,2,1,34,Arial
+0 ""
+1
+LANG:1 12 <controller>
+25 2
+"StationCtrlTable"
+""
+1 4 -305 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+ E E
+3 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+0
+1
+LANG:1 106 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,0,0,0,0,Arial
+0 ""
+23 34 467 122
+E E 1 0 1 3 4 "Controller" 0 1 0 "s" 1
+LANG:1 10 Controller
+E1
+LANG:1 0 
+ 140 "Status" 0 1 0 "s" 1
+LANG:1 6 Status
+E1
+LANG:1 0 
+ 140 "Error" 0 1 0 "s" 1
+LANG:1 5 Error
+E1
+LANG:1 0 
+ 140 16 16 "" 1 1
+LANG:1 2 #2
+"" 1 1
+LANG:1 2 #4
+"" 1 1
+LANG:1 2 #3
+"" 1 1
+LANG:1 2 #4
+8 30 1
+LANG:1 106 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,0,0,0,0,Arial
+0 ""
+0 2 1 3 0
+1 0
+25 9
+"table_logging"
+""
+1 96 23 E E E 1 E 1 E N "_WindowText" E N "_Window" E E
+ E E
+10 0 0 0 0 0
+EE E
+0
+1
+LANG:1 0 
+0
+1
+LANG:1 106 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,0,0,0,0,Arial
+0 ""
+8 148 467 306
+E E 1 0 1 4 1 "time" 0 1 0 "s" 1
+LANG:1 4 time
+E1
+LANG:1 0 
+ 150 "level" 0 1 0 "s" 1
+LANG:1 5 level
+E1
+LANG:1 0 
+ 70 "source" 0 1 0 "s" 1
+LANG:1 6 source
+E1
+LANG:1 0 
+ 200 "message" 0 1 0 "s" 1
+LANG:1 7 message
+E1
+LANG:1 0 
+ 1000 16 16 "" 1 1
+LANG:1 2 #1
+8 30 1
+LANG:1 106 -microsoft windows-Arial-normal-r-normal-*-*-120-100-100-*-*-iso8859-1|-13,0,0,0,400,0,0,0,0,0,0,0,0,Arial
+0 ""
+0 1 2 3 0
+1 0
+0
+LAYER, 1 
+1
+LANG:1 6 Layer2
+0
+LAYER, 2 
+1
+LANG:1 6 Layer3
+0
+LAYER, 3 
+1
+LANG:1 6 Layer4
+0
+LAYER, 4 
+1
+LANG:1 6 Layer5
+0
+LAYER, 5 
+1
+LANG:1 6 Layer6
+0
+LAYER, 6 
+1
+LANG:1 6 Layer7
+0
+LAYER, 7 
+1
+LANG:1 6 Layer8
+0
+0
\ No newline at end of file