00001 #ifndef DOUBLETRIGGERNOISETEST_H
00002 #define DOUBLETRIGGERNOISETEST_H
00003
00004 #include <cmath>
00005
00006 #include "../ipc/Sct_CalibrationController.hh"
00007 #include "../CalibrationControllerImpl.h"
00008 #include "../ipc/ScanRequest.h"
00009 #include "../SctApiAccessException.h"
00010 #include "../SctApiCall.h"
00011 #include "Sct/LogicErrors.h"
00012
00013 #include <CommonWithDsp/ABCD/ABCDscans.h>
00014
00015 using namespace Sct;
00016 using namespace SctCalibrationController::Ipc;
00017 namespace SctCalibrationController {
00018 namespace Scripts {
00019
00020 class DoubleTriggerNoiseTest : public TestRequestImpl {
00021 public:
00022 static DoubleTriggerNoiseTest& instance() {
00023 static DoubleTriggerNoiseTest dtnt;
00024 return dtnt;
00025 }
00026
00027 virtual void startTest(Sct_SctApi_T_SctApi& api, string& name, unsigned short& testVariable, unsigned long& nScans, vector<double>& testPoints) {
00028 this->api = &api;
00029
00030
00031 APICALL(&api, modifyABCDVar(&st, ST_COMPRESSION, 1), "DoubleTriggerNoiseTest::startTest")
00032
00033
00034 APICALL(&api, modifyABCDVar(&st, ST_EDGE_DETECT, 0), "DoubleTriggerNoiseTest::startTest")
00035
00036
00037 APICALL(&api, modifyABCDVar(&st, ST_SEND_MASK, 0), "DoubleTriggerNoiseTest::startTest")
00038
00039
00040 APICALL(&api, modifyABCDVar(&st, ST_QTHR, 0.9), "DoubleTriggerNoiseTest::startTest")
00041
00042 name = "DoubleTriggerNoiseTest";
00043 testVariable = ST_ELAPSED;
00044 nScans = 1;
00045 testPoints.push_back(0.);
00046 }
00047
00048
00049 virtual ScanRequest* getNextScan(unsigned long index) {
00050 ScanLibrary& sl = CalibrationControllerImpl::instance().getScanLibrary();
00051 ScanRequestImpl& request = sl.defaultScan();
00052
00053
00054 Sct_SctApi_T_Scan* s = 0;
00055 APIRETCALL(api, s, createScan(&st), "DoubleTriggerNoiseTest::getNextScan")
00056 request.setScan(s);
00057
00058 APICALL(s, setNTrigs(&st, 100000), "Failed to set triggers")
00059
00060
00061 APICALL(s, setOption(&st, Sct_SctApi_T_Scan_ScanOptions_distSlave, 0), "Failed to set distSlave option")
00062
00063
00064 APICALL(s, setOption(&st, Sct_SctApi_T_Scan_ScanOptions_nth, 2), "Failed to set nth option")
00065
00066
00067 APICALL(s, setOption(&st, Sct_SctApi_T_Scan_ScanOptions_nth_rem, 0), "Failed to set nth_rem option")
00068
00069
00070 Sct_SctApi_T_Trigger* t = 0;
00071 APIRETCALL(s, t, getTrigger1(&st), "Failed to get trigger1")
00072
00073 int startDelay = 120;
00074 int delayStep = 1;
00075 int stopDelay = 160;
00076
00077 APICALL(t, doubleL1A(&st, startDelay), "Failed to set trigger type")
00078
00079
00080 APICALL(t, setCommIncr(&st, 1, delayStep), "DoubleTriggerNoiseTest::getNextScan")
00081
00082
00083 APICALL(s, configure(&st, ST_ELAPSED, startDelay, stopDelay, delayStep), "Failed to set Scan information")
00084
00085 return &request;
00086 }
00087
00088 virtual bool canFeedback() {
00089 return false;
00090 }
00091
00092 virtual void endTest() {
00093 api = 0;
00094 }
00095
00096 private:
00097 DoubleTriggerNoiseTest() {}
00098 Sct_SctApi_T_SctApi* api;
00099 };
00100
00101 }
00102 }
00103
00104 #endif //DOUBLETRIGGERNOISETEST_H