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