00001
00002
00003
00004
00005
00006
00007 #ifndef IPC_IDL
00008 #include <ipc/ipc.idl>
00009 #define IPC_IDL
00010 #endif
00011
00012 #include <SctApi/SctApi.idl>
00013
00014 module Sct_CalibrationController {
00015
00016 interface CalibrationController;
00017 interface ScanRequest;
00018 interface TestRequest;
00019 interface SequenceRequest;
00020
00021 interface ScanLibrary {
00022 ScanRequest thresholdScan(in unsigned long nTrigs);
00023 ScanRequest thresholdScanfC(in unsigned long nTrigs, in double calCharge);
00024 ScanRequest noiseOccupancyScan();
00025 ScanRequest strobeDelayScan(in unsigned long nTrigs);
00026 ScanRequest nmaskScan(in unsigned long nTrigs);
00027 ScanRequest tokenScan();
00028 ScanRequest rawScan(in unsigned long nTrigs, in boolean issueSoftReset);
00029 ScanRequest defaultScan();
00030
00031
00032 };
00033
00034 interface TestLibrary {
00035 TestRequest responseCurve();
00036 TestRequest threePointGain();
00037 TestRequest fivePointGain();
00038 TestRequest strobeDelay();
00039 TestRequest noiseOccupancy();
00040 TestRequest pipeline();
00041 TestRequest fullBypassBarrel();
00042 TestRequest fullBypassEndcap();
00043 TestRequest trimRange();
00044 TestRequest quickTrimRange();
00045 TestRequest timeWalk();
00046 TestRequest nmask();
00047 TestRequest doubleTriggerNoise();
00048 TestRequest synchTriggerNoise();
00049 TestRequest rxDelay();
00050 TestRequest rxThreshold();
00051 TestRequest rxThresholdBasedOnConfigRegister();
00052 TestRequest txCurrent();
00053 };
00054
00055 interface SequenceLibrary {
00056 SequenceRequest characterizationSequence();
00057 SequenceRequest quickCharacterizationSequence();
00058 };
00059
00060
00061
00062
00067 interface SequenceRequest {
00072 string startSequence(in Sct_SctApi::SctApi api);
00073
00078 TestRequest getNextTest(in unsigned long index);
00079
00083 void endSequence();
00084 };
00085
00086
00087
00088 typedef sequence<double> TestPoints;
00089
00091 interface ScanRequest {
00093 Sct_SctApi::Scan getScan();
00095 void setScan(in Sct_SctApi::Scan scan);
00097 boolean configureModules();
00099 boolean clockByTwo();
00101 void setClockByTwo(in boolean value);
00103 boolean isRaw();
00105 long delay();
00107 void setWidth(in long value);
00109 long width();
00110 };
00111
00116 interface TestRequest {
00123 void startTest(in Sct_SctApi::SctApi api, out string name, out unsigned short testVariable, out unsigned long nScans, out TestPoints testPointsData);
00124
00129 ScanRequest getNextScan(in unsigned long index);
00130
00135 boolean canFeedback();
00136
00140 void endTest();
00141 };
00142
00143
00144 interface CalibrationController : ipc::freeable {
00148 const string serverName = "CalibrationControllerServer";
00149 const string instanceName = "CalibrationControllerImpl";
00150
00152 ScanLibrary getScanLibrary();
00153
00155 TestLibrary getTestLibrary();
00156
00158 SequenceLibrary getSequenceLibrary();
00159
00161 oneway void doScan(in ScanRequest s);
00162
00164 oneway void doTest(in TestRequest t);
00165
00167 oneway void doSequence(in SequenceRequest r);
00168
00169
00171 oneway void abort();
00172
00180 enum UpdateOption {update, noupdate, wait};
00181
00183 oneway void setUpdateOption(in UpdateOption opt);
00184
00186 Sct_SctApi::Scan getScan(in unsigned long runNumber, in unsigned long scanNumber);
00189 oneway void updateWith(in string testResultInIs, in boolean force);
00190 };
00191 };
00192