diff --git a/MAC/APL/MainCU/src/MACScheduler/ObsClaimer.cc b/MAC/APL/MainCU/src/MACScheduler/ObsClaimer.cc index e27b9c06b2b5205dbfadb50f4ee550ef90454d5e..68fdc25f762984c730f8b25433d832ece7b49250 100644 --- a/MAC/APL/MainCU/src/MACScheduler/ObsClaimer.cc +++ b/MAC/APL/MainCU/src/MACScheduler/ObsClaimer.cc @@ -236,8 +236,8 @@ GCFEvent::TResult ObsClaimer::preparePVSS_state (GCFEvent& event, GCFPortInterfa Observation theObs(&obsPS); RTDBPropertySet* theObsPS = itsCurrentObs->second->propSet; - theObsPS->setValue(PN_OBS_CLAIM_PERIOD, GCFPVInteger(itsClaimPeriod), 0.0, false); - theObsPS->setValue(PN_OBS_PREPARE_PERIOD, GCFPVInteger(itsPreparePeriod), 0.0, false); +// theObsPS->setValue(PN_OBS_CLAIM_PERIOD, GCFPVInteger(itsClaimPeriod), 0.0, false); +// theObsPS->setValue(PN_OBS_PREPARE_PERIOD, GCFPVInteger(itsPreparePeriod), 0.0, false); theObsPS->setValue(PN_OBS_RUN_STATE, GCFPVString(""), 0.0, false); theObsPS->setValue(PN_OBS_START_TIME, GCFPVString (to_simple_string(from_time_t(theObs.startTime))), 0.0, false); theObsPS->setValue(PN_OBS_STOP_TIME, GCFPVString (to_simple_string(from_time_t(theObs.stopTime))), 0.0, false); @@ -281,6 +281,32 @@ GCFEvent::TResult ObsClaimer::preparePVSS_state (GCFEvent& event, GCFPortInterfa theObsPS->setValue(PN_OBS_BEAMS_ANGLE1, GCFPVDynArr(LPT_DYNDOUBLE, angle1Arr), 0.0, false); theObsPS->setValue(PN_OBS_BEAMS_ANGLE2, GCFPVDynArr(LPT_DYNDOUBLE, angle2Arr), 0.0, false); theObsPS->setValue(PN_OBS_BEAMS_DIRECTION_TYPE, GCFPVDynArr(LPT_DYNSTRING, dirTypesArr), 0.0, false); + + // for the TiedArrayBeams we have to construct dyn arrays first. + GCFPValueArray beamIndexArr; + GCFPValueArray TABangle1Arr; + GCFPValueArray TABangle2Arr; + GCFPValueArray TABdirTypesArr; + GCFPValueArray dispersionArr; + GCFPValueArray coherentArr; + for (uint32 b(0); b < theObs.beams.size(); b++) { + for (uint32 t(0); t < theObs.beams[b].TABs.size(); t++) { + beamIndexArr.push_back (new GCFPVInteger(b)); + angle1Arr.push_back (new GCFPVDouble(theObs.beams[b].TABs[t].angle1)); + angle2Arr.push_back (new GCFPVDouble(theObs.beams[b].TABs[t].angle2)); + dirTypesArr.push_back (new GCFPVString(theObs.beams[b].TABs[t].directionType)); + dispersionArr.push_back (new GCFPVDouble(theObs.beams[b].TABs[t].dispersionMeasure)); + coherentArr.push_back (new GCFPVBool(theObs.beams[b].TABs[t].coherent)); + } + } + + // Finally we can write those value to PVSS as well. + theObsPS->setValue(PN_OBS_TIED_ARRAY_BEAMS_BEAM_INDEX, GCFPVDynArr(LPT_DYNINTEGER, beamIndexArr), 0.0, false); + theObsPS->setValue(PN_OBS_TIED_ARRAY_BEAMS_ANGLE1, GCFPVDynArr(LPT_DYNDOUBLE, TABangle1Arr), 0.0, false); + theObsPS->setValue(PN_OBS_TIED_ARRAY_BEAMS_ANGLE2, GCFPVDynArr(LPT_DYNDOUBLE, TABangle2Arr), 0.0, false); + theObsPS->setValue(PN_OBS_TIED_ARRAY_BEAMS_DIRECTION_TYPE, GCFPVDynArr(LPT_DYNSTRING, TABdirTypesArr), 0.0, false); + theObsPS->setValue(PN_OBS_TIED_ARRAY_BEAMS_DISPERSION, GCFPVDynArr(LPT_DYNSTRING, dispersionArr), 0.0, false); + theObsPS->setValue(PN_OBS_TIED_ARRAY_BEAMS_COHERENT, GCFPVDynArr(LPT_DYNBOOL, coherentArr), 0.0, false); theObsPS->flush(); setObjectState("MACScheduler: registration", itsCurrentObs->second->DPname, RTDB_OBJ_STATE_OFF, true); @@ -305,6 +331,14 @@ GCFEvent::TResult ObsClaimer::preparePVSS_state (GCFEvent& event, GCFPortInterfa delete angle2Arr[i]; delete dirTypesArr[i]; } + for (int i = beamIndexArr.size()-1; i >=0; i--) { + delete beamIndexArr[i]; + delete TABangle1Arr[i]; + delete TABangle2Arr[i]; + delete TABdirTypesArr[i]; + delete dispersionArr[i]; + delete coherentArr[i]; + } } catch (Exception &e) { LOG_ERROR_STR("Specifications for Observation " << itsCurrentObs->second->obsName << " are invalid: " diff --git a/MAC/APL/MainCU/src/MACScheduler/PVSSDatapointDefs.h b/MAC/APL/MainCU/src/MACScheduler/PVSSDatapointDefs.h index 5b4182fc55c01a7b9ef08007aa8c6d2c9a24483b..ab7de2a66309080459c73f0eabecec14af526305 100644 --- a/MAC/APL/MainCU/src/MACScheduler/PVSSDatapointDefs.h +++ b/MAC/APL/MainCU/src/MACScheduler/PVSSDatapointDefs.h @@ -1,4 +1,4 @@ -// This file was generated by create_db_files v1.0 on Wed Mar 11 12:40:11 UTC 2009 +// This file was generated by create_db_files v2.0 on Fri Jan 13 13:20:29 UTC 2012 #ifndef LOFAR_DEPLOYMENT_PVSSDATAPOINTS_H #define LOFAR_DEPLOYMENT_PVSSDATAPOINTS_H @@ -42,7 +42,6 @@ #define PST_OBSERVATION "Observation" #define PN_OBS_CLAIM_CLAIM_DATE "claim.claimDate" #define PN_OBS_CLAIM_NAME "claim.name" -#define PN_OBS_RECEIVER_BITMAP "receiverBitmap" #define PN_OBS_CLAIM_PERIOD "claimPeriod" #define PN_OBS_PREPARE_PERIOD "preparePeriod" #define PN_OBS_START_TIME "startTime" @@ -63,22 +62,53 @@ #define PN_OBS_BEAMS_DIRECTION_TYPE "Beams.directionType" #define PN_OBS_BEAMS_BEAMLET_LIST "Beams.beamletList" #define PN_OBS_BEAMS_SUBBAND_LIST "Beams.subbandList" +#define PN_OBS_TIED_ARRAY_BEAMS_BEAM_INDEX "TiedArrayBeams.beamIndex" +#define PN_OBS_TIED_ARRAY_BEAMS_ANGLE1 "TiedArrayBeams.angle1" +#define PN_OBS_TIED_ARRAY_BEAMS_ANGLE2 "TiedArrayBeams.angle2" +#define PN_OBS_TIED_ARRAY_BEAMS_DIRECTION_TYPE "TiedArrayBeams.directionType" +#define PN_OBS_TIED_ARRAY_BEAMS_DISPERSION "TiedArrayBeams.dispersion" +#define PN_OBS_TIED_ARRAY_BEAMS_COHERENT "TiedArrayBeams.coherent" // ObservationControl #define PSN_OBSERVATION_CONTROL "LOFAR_ObsSW_@observation@_ObservationControl" #define PST_OBSERVATION_CONTROL "ObservationControl" -// OnlineControl -#define PSN_ONLINE_CONTROL "LOFAR_ObsSW_@observation@_OnlineControl" -#define PST_ONLINE_CONTROL "OnlineControl" +// Adder +#define PSN_ADDER "@adder@" +#define PST_ADDER "Adder" +#define PN_ADD_DROPPING "dropping" +#define PN_ADD_NR_BLOCKS_DROPPED "nrBlocksDropped" +#define PN_ADD_DATA_PRODUCT_TYPE "dataProductType" +#define PN_ADD_FILE_NAME "fileName" +#define PN_ADD_STORAGE_NODE "storageNode" +#define PN_ADD_DIRECTORY "directory" +#define PN_ADD_OBSERVATION_NAME "observationName" -// Correlator -#define PSN_CORRELATOR "LOFAR_ObsSW_@observation@_OnlineControl_Correlator" -#define PST_CORRELATOR "Correlator" +// InputBuffer +#define PSN_INPUT_BUFFER "@inputbuffer@" +#define PST_INPUT_BUFFER "InputBuffer" +#define PN_IPB_STATION_NAME "stationName" +#define PN_IPB_STREAM0_BLOCKS_IN "stream0.blocksIn" +#define PN_IPB_STREAM0_PERC_BAD "stream0.percBad" +#define PN_IPB_STREAM0_REJECTED "stream0.rejected" +#define PN_IPB_STREAM1_BLOCKS_IN "stream1.blocksIn" +#define PN_IPB_STREAM1_PERC_BAD "stream1.percBad" +#define PN_IPB_STREAM1_REJECTED "stream1.rejected" +#define PN_IPB_STREAM2_BLOCKS_IN "stream2.blocksIn" +#define PN_IPB_STREAM2_PERC_BAD "stream2.percBad" +#define PN_IPB_STREAM2_REJECTED "stream2.rejected" +#define PN_IPB_STREAM3_BLOCKS_IN "stream3.blocksIn" +#define PN_IPB_STREAM3_PERC_BAD "stream3.percBad" +#define PN_IPB_STREAM3_REJECTED "stream3.rejected" +#define PN_IPB_LATE "late" +#define PN_IPB_IO_TIME "IOTime" -// StorageAppl -#define PSN_STORAGE_APPL "LOFAR_ObsSW_@observation@_OnlineControl_StorageAppl" -#define PST_STORAGE_APPL "StorageAppl" +// Storage +#define PSN_STORAGE "@storage@" +#define PST_STORAGE "Storage" +#define PN_STR_TIME "time" +#define PN_STR_COUNT "count" +#define PN_STR_DROPPED "dropped" // Cabinet #define PSN_CABINET "LOFAR_PIC_@cabinet@" @@ -136,6 +166,7 @@ #define PN_RSP_VOLTAGE33 "voltage33" #define PN_RSP_VERSION "version" #define PN_RSP_ALERT "alert" +#define PN_RSP_SPLITTER_ON "splitterOn" #define PN_RSP__ETHERNET_STATUS_STATE "Ethernet.status.state" #define PN_RSP__ETHERNET_STATUS_CHILD_STATE "Ethernet.status.childState" #define PN_RSP__ETHERNET_STATUS_MESSAGE "Ethernet.status.message" @@ -216,10 +247,15 @@ #define PN_RCU_TRIGGER_FILTER "Trigger.filter" #define PN_RCU_TRIGGER_WINDOW "Trigger.window" #define PN_RCU_TRIGGER_OPERATING_MODE "Trigger.operatingMode" -#define PN_RCU_TRIGGER_COEFF0 "Trigger.coeff0" -#define PN_RCU_TRIGGER_COEFF1 "Trigger.coeff1" -#define PN_RCU_TRIGGER_COEFF2 "Trigger.coeff2" -#define PN_RCU_TRIGGER_COEFF3 "Trigger.coeff3" +#define PN_RCU_TRIGGER_TRIGGER_MODE "Trigger.triggerMode" +#define PN_RCU_TRIGGER_FILTER0_COEFF0 "Trigger.filter0.coeff0" +#define PN_RCU_TRIGGER_FILTER0_COEFF1 "Trigger.filter0.coeff1" +#define PN_RCU_TRIGGER_FILTER0_COEFF2 "Trigger.filter0.coeff2" +#define PN_RCU_TRIGGER_FILTER0_COEFF3 "Trigger.filter0.coeff3" +#define PN_RCU_TRIGGER_FILTER1_COEFF0 "Trigger.filter1.coeff0" +#define PN_RCU_TRIGGER_FILTER1_COEFF1 "Trigger.filter1.coeff1" +#define PN_RCU_TRIGGER_FILTER1_COEFF2 "Trigger.filter1.coeff2" +#define PN_RCU_TRIGGER_FILTER1_COEFF3 "Trigger.filter1.coeff3" // TBBoard #define PSN_TB_BOARD "LOFAR_PIC_@cabinet@_@subrack@_@TBBoard@" @@ -260,6 +296,7 @@ #define PST_HARDWARE_MONITOR "HardwareMonitor" #define PN_HWM_RSP_CONNECTED "RSP.connected" #define PN_HWM_TBB_CONNECTED "TBB.connected" +#define PN_HWM_EC_CONNECTED "EC.connected" // SoftwareMonitor #define PSN_SOFTWARE_MONITOR "LOFAR_PermSW_SoftwareMonitor" @@ -292,7 +329,7 @@ #define PN_ANT_RCUY "RCUY" #define PN_ANT_DELTAX "deltaX" #define PN_ANT_DELTAY "deltaY" -#define PN_ANT_DELTAH "deltaH" +#define PN_ANT_DELTAZ "deltaZ" // StnObservation #define PSN_STN_OBSERVATION "LOFAR_ObsSW_@observation@" @@ -300,6 +337,7 @@ #define PN_OBS_NAME "name" #define PN_OBS_CLAIM_CLAIM_DATE "claim.claimDate" #define PN_OBS_CLAIM_NAME "claim.name" +#define PN_OBS_RECEIVER_BITMAP "receiverBitmap" // BeamControl #define PSN_BEAM_CONTROL "LOFAR_ObsSW_@observation@_BeamControl" @@ -336,5 +374,6 @@ #define PN_TBC_TRIGGER_PEAK_VALUE "trigger.peakValue" #define PN_TBC_TRIGGER_FLAGS "trigger.flags" #define PN_TBC_TRIGGER_TABLE "trigger.table" +#define PN_TBC_TRIGGER_MISSED "trigger.missed" #endif diff --git a/MAC/Deployment/data/PVSS/Observation.dpdef b/MAC/Deployment/data/PVSS/Observation.dpdef index 4c2a714577357f2a394de63dbefc1599a6be9bd3..2cc5935c70c138c2624b01b14762392065df03a3 100644 --- a/MAC/Deployment/data/PVSS/Observation.dpdef +++ b/MAC/Deployment/data/PVSS/Observation.dpdef @@ -1,4 +1,4 @@ -#ObservationControl.dpdef +#Observation.dpdef claim :Claim claimPeriod int @@ -24,3 +24,10 @@ Beams.angle2 doubleArr Beams.directionType stringArr Beams.beamletList stringArr Beams.subbandList stringArr + +TiedArrayBeams.beamIndex doubleArr +TiedArrayBeams.angle1 doubleArr +TiedArrayBeams.angle2 doubleArr +TiedArrayBeams.directionType stringArr +TiedArrayBeams.dispersion doubleArr +TiedArrayBeams.coherent boolArr