1 'use strict';
  2 
  3 var service_ftm = new Subscription("FTM_CONTROL/FTU_LIST");
  4 
  5 // Make sure that we receive a 'Yes, we are connected and names are available' event
  6 service_ftm.get(5000);
  7 
  8 // Check for all FTUs to be connected when the next event arrives
  9 service_ftm.onchange = function(event)
 10 {
 11     var ping = event.obj['Ping'];
 12     for (var i=0; i<40; i++)
 13     {
 14         if (ping[i]==1)
 15             continue;
 16 
 17         var str = "";
 18         for (var h=0; h<4; h++)
 19         {
 20             for (var w=0; w<10; w++)
 21                 str += ping[h*10+w];
 22             if (h!=3)
 23                 str += '|';
 24         }
 25 
 26         console.out(str)
 27 
 28         console.out("Problems in the FTU communication found.");
 29         console.out("Send command to disable all FTUs.");
 30         console.out(" => Crate reset needed.");
 31 
 32         dim.send("FTM_CONTROL/ENABLE_FTU", -1, false);
 33         throw new Error("CrateReset[FTU]");
 34     }
 35 
 36     // Signal success by closing the connection
 37     service_ftm.close();
 38 }
 39 
 40 // Send ping (request FTU status)
 41 dim.send("FTM_CONTROL/PING");
 42 
 43 // Wait for 1 second for the answer
 44 var timeout = new Thread(3000, function(){ if (service_ftm.isOpen) throw new Error("Could not check that all FTUs are ok within 3s."); });
 45 while (service_ftm.isOpen)
 46     v8.sleep();
 47 
 48