1 'use strict';
  2 
  3 // Get fad control connected
  4 function handleFadConnected(wait_state)
  5 {
  6     var state = dim.state("FAD_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("BIAS_CONTROL: "+state.name+"["+state.index+"]");
 14 
 15     switch (state.name)
 16     {
 17     case "Offline":
 18         return undefined;
 19 
 20     case "Disconnected":
 21         console.out("Fadctrl in 'Disconnected'... sending START... waiting for 'Connected'.");
 22         dim.send("FAD_CONTROL/START");
 23         return "Connected";
 24 
 25     // Do-nothing conditions
 26     case "Connecting":
 27         return wait_state;
 28 
 29     // Do-something conditions
 30     case "Configuring1":
 31     case "Configuring2":
 32     case "Configuring3":
 33     case "Configured":
 34         console.out("Fadctrl in Configure state... sending RESET_CONFIGURE... waiting for 'Connected'.");
 35         dim.send("FAD_CONTROL/RESET_CONFIGURE");
 36         return "Connected";
 37 
 38     case "Disengaged":
 39         console.out("Fadctrl in 'Disengaged'... sending START... waiting for 'Connected'.");
 40         dim.send("FAD_CONTROL/START");
 41         return "Connected";
 42 
 43     case "RunInProgress":
 44         console.out("Fadctrl in 'RunInProgress'... sending CLOSE_OPEN_FILES... waiting for 'Connected'.");
 45         dim.send("FAD_CONTROL/CLOSE_OPEN_FILES");
 46         return "Connected";
 47 
 48     // Final state reached condition
 49     case "Connected":
 50         var sub_con = new Subscription("FAD_CONTROL/CONNECTIONS");
 51         var con = sub_con.get(5000);
 52         var all = true;
 53         for (var i=0; i<40; i++)
 54             if (con.obj['status'][i]&66!=66)
 55             {
 56                 console.out("Board "+i+" not connected... sending CONNECT... waiting for 'Connected'.");
 57                 dim.send("FAD_CONTROL/CONNECT", i);
 58                 all = false;
 59             }
 60         sub_con.close();
 61         return all ? "" : "Connected";
 62     }
 63 
 64     throw new Error("FAD_CONTROL:"+state.name+"["+state.index+"] unknown or not handled.");
 65 }
 66