1 'use strict'; 2 3 // Switch interlock camera power on 4 function handlePwrCameraOn(wait_state) 5 { 6 var state = dim.state("PWR_CONTROL"); 7 if (state===undefined) 8 return undefined; 9 10 if (wait_state && wait_state.length>0 && state.name!=wait_state) 11 return wait_state; 12 13 //dim.log("PWR_CONTROL: "+state.name+"["+state.index+"]"); 14 15 switch (state.name) 16 { 17 // Do-nothing conditions 18 case "Disconnected": 19 case "Connected": 20 case "NoConnection": 21 return undefined; 22 23 // Drive off 24 case "PowerOff": 25 console.out("Pwrctrl in 'PowerOff'... sending CAMERA_POWER ON... waiting for 'DriveOff'."); 26 dim.send("PWR_CONTROL/CAMERA_POWER", true); 27 return "DriveOff"; 28 29 // Drive on 30 case "DriveOn": 31 console.out("Pwrctrl in 'DriveOn'... sending CAMERA_POWER ON... waiting for 'SystemOn'."); 32 dim.send("PWR_CONTROL/CAMERA_POWER", true); 33 return "SystemOn"; 34 35 // Intermediate states? 36 case "CameraOn": 37 case "BiasOn": 38 case "CameraOff": 39 case "BiasOff": 40 return wait_state; 41 42 case "DriveOff": 43 case "SystemOn": 44 // Now the agilent control need to be switched on! 45 return ""; 46 47 case "CoolingFailure": 48 throw new Error("Cooling unit reports failure... please check."); 49 } 50 51 throw new Error("PWR_CONTROL:"+state.name+"["+state.index+"] unknown or not handled."); 52 } 53