/* SCCS @(#)NslCmdInit.java 1.10---09/01/99--16:11:42 */ // Copyright: Copyright (c) 1997 University of Southern California Brain Project. // Copyright: This software may be freely copied provided the toplevel // Copyright: COPYRIGHT file is included with each such copy. // Copyright: Email nsl@java.usc.edu. // // NslCmdInit.java // ////////////////////////////////////////////////////////////////////// /** * initialize current / a specific model/module */ package nslj.src.cmd; import nslj.src.lang.NslModule; import nslj.src.system.NslSystem; //import nslj.src.lang.NslEnv; import java.util.Vector; import java.util.Enumeration; import java.util.StringTokenizer; public class NslCmdInit extends NslCmd { /** *Setup class name and help engine */ public NslCmdInit() { _name = "init"; _simple_help_string = "init [module_name]"; } /** * Print complex help on standard out */ public void printHelp() { System.out.println("Nsl command : init"); System.out.println("usage: init [module_name]"); System.out.println("The root module / module_name module would be initialized"); } /** * Initialize the system and current active module including its child modules */ public void execute() { // check NslSystem. The system is initialized together // with all modules registered in teh system. // system.init(); NslModule temp=system.nslGetModelRef(); if (temp==null) { System.err.println("Error: NslCmdInit: null module name."); return; } system.init_run_char='D'; //during //System.out.println("debug: NslCmdInit: init_run_char 2 "+ system.init_run_char); system.initRun(); //call the schedulers initilization method initrun(temp); nslUpdateBuffers(temp); system.init_displays(); //currently, just sets the last_nslUpdateBuffers_time to zero /* moved from scheduler init - 98/9/12 aa */ // if (system.display_system !=null) { // system.display_system.collect(); // if nslUpdateBuffers has collect // do I need this here? // } // sets the system.init_run_char system.init_run_char='A'; //after //System.out.println("debug: NslCmdInit: init_run_char 2 "+ system.init_run_char); } /** * Initialize module named module_name * @param module_name */ public void execute(String module_name) { execute(); } /** * Initialize a series of modules in the array module_list and their corresponding child modules * @param module_list */ public void execute(StringTokenizer st) { execute(); } /** * Initialize module module and its child modules recursively. * @param module */ public void initrun(NslModule module) { Vector module_children = module.nslGetModuleChildrenVector(); NslModule child = null; Enumeration E1 = module_children.elements(); if ((system.schedulerMethod.equals("pre"))|| (system.schedulerMethod.equals("mixed"))) { module.nslInitTempRun(); module.initRun(); while(E1.hasMoreElements()) { child = (NslModule)E1.nextElement(); initrun(child); } } if (system.schedulerMethod.equals("post")) { while(E1.hasMoreElements()) { child = (NslModule)E1.nextElement(); initrun(child); } module.nslInitTempRun(); module.initRun(); }//end if and init }//end method /** * Update module module and its child modules recursively. * @param module */ public void nslUpdateBuffers(NslModule module) { Vector module_children = module.nslGetModuleChildrenVector(); NslModule child = null; Enumeration E1 = module_children.elements(); //98/9/12 aa move data to output ports using nslUpdateBuffers // order not important since it it internal to the module //if (system.doubleBuffering) { module.nslUpdateBuffers(); while(E1.hasMoreElements()) { child = (NslModule)E1.nextElement(); nslUpdateBuffers(child); } //} //if doubleBuffering } //end nslUpdateBuffers }//end class