Subversion Repositories HomeAutomation

Rev

Rev 986 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | SVN | RSS feed

  1.  
  2. CanNodes = new Array();
  3. CanServices = new Array();
  4. CanOfflineTimer = new Interval(offlineCheck, 10000);
  5.  
  6. function handleNMTMessage(className, commandName, data)
  7. {
  8.     var canMessage = new CanNMTMessage(className, commandName, data);
  9.  
  10.     switch (canMessage.getCommandName())
  11.     {
  12.     case "Reset":
  13.     break;
  14.    
  15.     case "Bios_Start":
  16.     break;
  17.    
  18.     case "Pgm_Start":
  19.     break;
  20.    
  21.     case "Pgm_Data":
  22.     break;
  23.    
  24.     case "Pgm_End":
  25.     break;
  26.    
  27.     case "Pgm_Copy":
  28.     break;
  29.    
  30.     case "Pgm_Ack":
  31.     break;
  32.    
  33.     case "Pgm_Nack":
  34.     break;
  35.    
  36.     case "Start_App":
  37.     break;
  38.    
  39.     case "App_Start":
  40.     break;
  41.    
  42.     case "Heartbeat":
  43.     var node = CanNodes[canMessage.getData("HardwareId")];
  44.    
  45.     if (!node)
  46.     {
  47.         log("A can node with hardware id " + uint2hex(canMessage.getData("HardwareId"), 32) + " was not found, starting.\n");
  48.         node = new CanNode(canMessage.getData("HardwareId"), canMessage.getData("NumberOfModules"));
  49.         CanNodes[canMessage.getData("HardwareId")] = node;
  50.     }
  51.    
  52.     node.handleHeartbeat(canMessage.getData("NumberOfModules"));
  53.     break;
  54.     }
  55. }
  56.  
  57. // This is used to send messages to the can network
  58. function sendNMTMessage(canMessage)
  59. {
  60.     sendCanNMTMessage(  canMessage.getClassName(),
  61.                 canMessage.getCommandName(),
  62.                 canMessage.getDataString());
  63. }
  64.  
  65. // This is called when a message has been received from the can network
  66. function handleMessage(className, directionFlag, moduleName, moduleId, commandName, data)
  67. {
  68.     var canMessage = new CanMessage(className, directionFlag, moduleName, moduleId, commandName, data);
  69.  
  70.     var fullId = canMessage.getModuleName() + canMessage.getModuleId();
  71.  
  72.     if (canMessage.getCommandName() == "List" && canMessage.getDirectionFlag() == "From_Owner")
  73.     {
  74.         if (!CanServices[fullId])
  75.         {
  76.             var service = ServiceManager.getService("Can", canMessage.getModuleName(), canMessage.getModuleId())
  77.  
  78.             if (service != null)
  79.             {
  80.                 var node = CanNodes[canMessage.getData("HardwareId")];
  81.  
  82.                 if (node)
  83.                 {
  84.                     service.setNode(node);
  85.                     node.addService(canMessage.getData("SequenceNumber"), service);
  86.                     CanNodes[canMessage.getData("HardwareId")] = node;
  87.                 }
  88.  
  89.                 CanServices[fullId] = service;
  90.             }
  91.             else
  92.             {
  93.                 log("No such service found: " + canMessage.getModuleName() + "\n");
  94.             }
  95.         }
  96.     }
  97.     else
  98.     {
  99.         if (CanServices[fullId])
  100.         {
  101.             // Tell the service to handle the message, a module service must implement canMessageHandler or derive from CanService-class
  102.             CanServices[fullId].canMessageHandler(canMessage);
  103.         }
  104.         else if (canMessage.getModuleName() == "Debug")
  105.         {
  106.             var service = ServiceManager.getService("Can", canMessage.getModuleName(), canMessage.getModuleId())
  107.             if (service != null)
  108.             {
  109.                 CanServices[fullId] = service;
  110.                 CanServices[fullId].canMessageHandler(canMessage);
  111.             }
  112.         }
  113.     }
  114. }
  115.  
  116. // This is used to send messages to the can network
  117. function sendMessage(canMessage)
  118. {
  119.     sendCanMessage( canMessage.getClassName(),
  120.             canMessage.getDirectionFlag(),
  121.             canMessage.getModuleName(),
  122.             canMessage.getModuleId(),
  123.             canMessage.getCommandName(),
  124.             canMessage.getDataString());
  125. }
  126.  
  127. // This will be called at reqular intervals
  128. function offlineCheck()
  129. {
  130.     for (var n in CanNodes)
  131.     {
  132.         CanNodes[n].checkOffline();
  133.     }
  134. }
  135.  
  136. function setAllOffline()
  137. {
  138.     for (var n in CanNodes)
  139.     {
  140.         CanNodes[n].setOffline();
  141.     }
  142. }
  143.