1 voltageOff = function()
  2 {
  3     var state = dim.state("BIAS_CONTROL").name;
  4 
  5     if (state=="Disconnected")
  6     {
  7         console.out("  Voltage off: bias crate disconnected!");
  8         return;
  9     }
 10 
 11     // check of feedback has to be switched on
 12     var isOn = state=="VoltageOn" || state=="Ramping";
 13     if (isOn)
 14     {
 15         dim.log("Switching voltage off.");
 16 
 17         if (dim.state("FTM_CONTROL").name=="TriggerOn")
 18         {
 19             dim.send("FTM_CONTROL/STOP_TRIGGER");
 20             dim.wait("FTM_CONTROL", "Valid", 3000);
 21         }
 22 
 23         // Supress the possibility that the bias control is
 24         // ramping and will reject the command to switch the
 25         // voltage off
 26         //dim.send("FEEDBACK/STOP");
 27         //dim.wait("FEEDBACK", "Calibrated", 3000);
 28 
 29         // Make sure we are not in Ramping anymore
 30         //dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
 31 
 32         // Switch voltage off
 33         dim.send("BIAS_CONTROL/SET_ZERO_VOLTAGE");
 34     }
 35 
 36     dim.wait("BIAS_CONTROL", "VoltageOff", 60000); // FIXME: 30000?
 37     dim.wait("FEEDBACK",     "Calibrated",  3000);
 38 
 39     // FEEDBACK stays in CurrentCtrl when Voltage is off but output enabled
 40     // dim.wait("FEEDBACK", "CurrentCtrlIdle", 1000);
 41 
 42     if (isOn)
 43         dim.log("Voltage off.");
 44 }
 45 
 46 waitForVoltageOn = function()
 47 {
 48     // Avoid output if condition is already fulfilled
 49     dim.log("Waiting for voltage to be stable.");
 50 
 51     function func()
 52     {
 53         if (this.ok==true)
 54             return true;
 55     }
 56 
 57     var now = new Date();
 58 
 59     this.last = undefined;
 60     this.ok = false;
 61     v8.timeout(4*60000, func, this); // FIMXE: Remove 4!
 62     this.ok = undefined;
 63 
 64     dim.log("Voltage On(?)");
 65 
 66     //if (irq)
 67         //dim.log("Waiting for stable voltage interrupted.");
 68     //else
 69         //dim.log("Voltage stable within limits");
 70 }
 71 
 72 
 73 voltageOn = function(ov)
 74 {
 75     if (isNaN(ov))
 76         ov = 1.1;
 77 
 78     if (this.ov!=ov && dim.state("FEEDBACK").name=="InProgress") // FIXME: Warning, OnStandby, Critical if (ov<this.ov)
 79     {
 80         dim.log("Stoping feedback.");
 81         if (dim.state("FTM_CONTROL").name=="TriggerOn")
 82         {
 83             dim.send("FTM_CONTROL/STOP_TRIGGER");
 84             dim.wait("FTM_CONTROL", "Valid", 3000);
 85         }
 86 
 87         dim.send("FEEDBACK/STOP");
 88         dim.wait("FEEDBACK", "Calibrated", 3000);
 89 
 90         // Make sure we are not in Ramping anymore
 91         dim.wait("BIAS_CONTROL", "VoltageOn", 3000);
 92     }
 93 
 94     var isOff = dim.state("FEEDBACK").name=="Calibrated";
 95     if (isOff)
 96     {
 97         dim.log("Switching voltage to Uov="+ov+"V.");
 98 
 99         dim.send("FEEDBACK/START", ov);
100 
101         // FIXME: We could miss "InProgress" if it immediately changes to "Warning"
102         //        Maybe a dim.timeout state>8 ?
103         dim.wait("FEEDBACK", "InProgress", 45000);
104 
105         this.ov = ov;
106     }
107 
108     // Wait until voltage on
109     dim.wait("BIAS_CONTROL", "VoltageOn", 60000); // FIXME: 30000?
110 }
111 
112  dim.log("STARTING SCRIPT closed_lid_ratescan");
113 
114 // dim.log("Sending Voltage On");
115 // voltageOn();
116  v8.sleep(10000);
117 
118      var tm = new Date();
119 
120      dim.log("Starting ratescan.");
121 
122      // Start rate scan
123      //dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 200, 900, 20);
124      dim.send("RATE_SCAN/START_THRESHOLD_SCAN", 100, 900, 10);
125 
126       // PAUSE
127      dim.log("PAUSE 10s");
128      v8.sleep(10000);
129      dim.log("Start Ratescan");
130 
131      // Lets wait if the ratescan really starts... this might take a few
132      dim.wait("RATE_SCAN", "InProgress", 10000);
133      //dim.wait("RATE_SCAN", "Connected", 2700000);
134      dim.wait("RATE_SCAN", "Connected", 3500000);
135 
136      dim.log("Ratescan done");
137 
138 
139 // voltageOff();
140 
141  dim.log("Task finished [RATESCAN]");
142  console.out("");
143 
144