/// <summary> /// Creates a debug utility. /// </summary> public NSFDebugUtility() : base("DebugUtility") { eventHandler = new NSFEventHandler(Name, new NSFEventThread(Name, NSFOSThread.LowestPriority)); writeToConsoleEvent = new NSFDataEvent<NSFString>("WriteToConsole", eventHandler); writeLineToConsoleEvent = new NSFDataEvent<NSFString>("WriteLineToConsole", eventHandler); eventHandler.LoggingEnabled = false; eventHandler.addEventReaction(writeToConsoleEvent, performWriteToConsole); eventHandler.addEventReaction(writeLineToConsoleEvent, performWriteLineToConsole); eventHandler.startEventHandler(); }
/// <summary> /// Creates a trace log /// </summary> /// <param name="name">The name of the log.</param> /// <remarks> /// By default, thread priority is set to lowest. /// </remarks> public NSFTraceLog(NSFString name) : base(name) { eventHandler = new NSFEventHandler(Name, new NSFEventThread(Name, NSFOSThread.LowestPriority)); eventHandler.LoggingEnabled = false; traceAddEvent = new NSFDataEvent<NSFXMLElement>(TraceAddString, eventHandler); traceSaveEvent = new NSFDataEvent<NSFString>(TraceSaveString, eventHandler); eventHandler.addEventReaction(traceAddEvent, addTraceToLog); eventHandler.addEventReaction(traceSaveEvent, saveTrace); eventHandler.startEventHandler(); addTrace(NSFTraceTags.InformationalTag, NSFTraceTags.NameTag, "TraceStart"); }
public ContinuouslyRunningTest(String name, int myNumberOfRepeatedEvents) : base(name, new NSFEventThread(name)) { numberOfRepeatedEvents = myNumberOfRepeatedEvents; // Events event1 = new NSFEvent("Event1", this); event2 = new NSFEvent("Event2", this); event3 = new NSFEvent("Event3", this); event4 = new NSFDataEvent <string>("Event4", this, "EventFourData"); event5 = new NSFEvent("Event5", this); event6 = new NSFEvent("Event6", this); //States test2InitialState = new NSFInitialState("InitialTest3", this); state1 = new NSFCompositeState("State1", this, state1EntryAction, state1ExitAction); state2 = new NSFCompositeState("State2", this, null, null); //State 1 Region state1InitialState = new NSFInitialState("State1Initial", state1); state1History = new NSFDeepHistory("State1History", state1); state1_1 = new NSFCompositeState("State1_1", state1, null, null); state1_2 = new NSFCompositeState("State1_2", state1, null, null); // State1_2 Region state1_2InitialState = new NSFInitialState("State1_2Initial", state1_2); state1_2_1 = new NSFCompositeState("State1_2_1", state1_2, null, null); state1_2_2 = new NSFCompositeState("State1_2_2", state1_2, null, null); //Transitions // Test1 Region test1InitialToState1Transition = new NSFExternalTransition("Test1InitialToState1", test2InitialState, state1, null, null, null); state1ToState2Transition = new NSFExternalTransition("State1ToState2", state1, state2, event5, null, null); state2ToState1Transition = new NSFExternalTransition("State2ToState1", state2, state1, event6, null, null); // State1 Region state1InitialToState1HistoryTransition = new NSFExternalTransition("State1InitialToState1History", state1InitialState, state1History, null, null, null); state1HistoryToState1_1Transition = new NSFExternalTransition("State1HistoryToState1_1", state1History, state1_1, null, null, null); state1_1ToState1_2Transition = new NSFExternalTransition("State1_1ToState1_2", state1_1, state1_2, event1, null, null); state1_2ToState1_1Transition = new NSFExternalTransition("State1_2ToState1_1", state1_2, state1_1, event2, null, null); // State1_2 Region state1_2InitialStateToState1_2_1Transition = new NSFExternalTransition("State1_2InitialStateToState1_2_1", state1_2InitialState, state1_2_1, null, null, null); state1_2_1ToState1_2_2Transition = new NSFExternalTransition("State1_2_1ToState1_2_2", state1_2_1, state1_2_2, event3, null, null); state1_2_2ToState1_2_1Transition = new NSFExternalTransition("State1_2_2ToState1_2_1", state1_2_2, state1_2_1, event4, null, null); }
private void createStateMachine() { // State Machine Components // Define and initialize in the order: // 1) Events // 2) Regions and states, from outer to inner // 3) Transitions, ordered internal, local, external // 4) Group states and transitions within a region together. // Events // Event constructors take the form (name, parent) // Data event constructors take the form (name, parent, data payload) newCommandEvent = new NSFDataEvent <String>("NewCommand", this, "CommandPayload"); newResponseEvent = new NSFDataEvent <String>("NewResponse", this, "ResponsePayload"); responseTimeoutEvent = new NSFEvent("ResponseTimeout", this); resetEvent = new NSFEvent("Reset", this); // Regions and states, from outer to inner // Initial state construtors take the form (name, parent) initialCommandProcessorState = new NSFInitialState("InitialCommandProcessor", this); // Composite state construtors take the form (name, parent, entry action, exit action) waitForCommandState = new NSFCompositeState("WaitForCommand", this, null, null); waitForResponseState = new NSFCompositeState("WaitForResponse", this, waitForResponseEntryActions, waitForResponseExitActions); errorState = new NSFCompositeState("Error", this, errorEntryActions, null); resetState = new NSFCompositeState("Reset", this, resetEntryActions, null); // Transitions, ordered internal, local, external // Internal transition construtors take the form (name, state, trigger, guard, action) reactionToNewCommand = new NSFInternalTransition("ReactionToNewCommand", this, newCommandEvent, null, queueCommand); // External transition construtors take the form (name, source, target, trigger, guard, action) initialCommandProcessorToWaitForCommandTransition = new NSFExternalTransition("InitialToWaitForCommand", initialCommandProcessorState, waitForCommandState, null, null, null); waitForCommandToWaitForResponseTransition = new NSFExternalTransition("WaitForCommandToWaitForResponse", waitForCommandState, waitForResponseState, null, hasCommand, sendCommand); waitForResponseToWaitForCommandTransition = new NSFExternalTransition("WaitForResponseToWaitForCommand", waitForResponseState, waitForCommandState, newResponseEvent, isResponse, handleResponse); waitForResponseToErrorTransition = new NSFExternalTransition("WaitForResponseToError", waitForResponseState, errorState, responseTimeoutEvent, null, null); errorToResetTransition = new NSFExternalTransition("ErrorToReset", errorState, resetState, resetEvent, null, null); resetToWaitForCommandTransition = new NSFExternalTransition("ResetToWaitForCommand", resetState, waitForCommandState, null, isReady, null); }
private void createStateMachine() { // State Machine Components // Define and initialize in the order: // 1) Events // 2) Regions and states, from outer to inner // 3) Transitions, ordered internal, local, external // 4) Group states and transitions within a region together. // Events // Event constructors take the form (name, parent) // Data event constructors take the form (name, parent, data payload) newCommandEvent = new NSFDataEvent<String>("NewCommand", this, "CommandPayload"); newResponseEvent = new NSFDataEvent<String>("NewResponse", this, "ResponsePayload"); responseTimeoutEvent = new NSFEvent("ResponseTimeout", this); resetEvent = new NSFEvent("Reset", this); // Regions and states, from outer to inner // Initial state construtors take the form (name, parent) initialCommandProcessorState = new NSFInitialState("InitialCommandProcessor", this); // Composite state construtors take the form (name, parent, entry action, exit action) waitForCommandState = new NSFCompositeState("WaitForCommand", this, null, null); waitForResponseState = new NSFCompositeState("WaitForResponse", this, waitForResponseEntryActions, waitForResponseExitActions); errorState = new NSFCompositeState("Error", this, errorEntryActions, null); resetState = new NSFCompositeState("Reset", this, resetEntryActions, null); // Transitions, ordered internal, local, external // Internal transition construtors take the form (name, state, trigger, guard, action) reactionToNewCommand = new NSFInternalTransition("ReactionToNewCommand", this, newCommandEvent, null, queueCommand); // External transition construtors take the form (name, source, target, trigger, guard, action) initialCommandProcessorToWaitForCommandTransition = new NSFExternalTransition("InitialToWaitForCommand", initialCommandProcessorState, waitForCommandState, null, null, null); waitForCommandToWaitForResponseTransition = new NSFExternalTransition("WaitForCommandToWaitForResponse", waitForCommandState, waitForResponseState, null, hasCommand, sendCommand); waitForResponseToWaitForCommandTransition = new NSFExternalTransition("WaitForResponseToWaitForCommand", waitForResponseState, waitForCommandState, newResponseEvent, isResponse, handleResponse); waitForResponseToErrorTransition = new NSFExternalTransition("WaitForResponseToError", waitForResponseState, errorState, responseTimeoutEvent, null, null); errorToResetTransition = new NSFExternalTransition("ErrorToReset", errorState, resetState, resetEvent, null, null); resetToWaitForCommandTransition = new NSFExternalTransition("ResetToWaitForCommand", resetState, waitForCommandState, null, isReady, null); }
public ContinuouslyRunningTest(String name, int myNumberOfRepeatedEvents) : base(name, new NSFEventThread(name)) { numberOfRepeatedEvents = myNumberOfRepeatedEvents; // Events event1 = new NSFEvent("Event1", this); event2 = new NSFEvent("Event2", this); event3 = new NSFEvent("Event3", this); event4 = new NSFDataEvent<string>("Event4", this, "EventFourData"); event5 = new NSFEvent("Event5", this); event6 = new NSFEvent("Event6", this); //States test2InitialState = new NSFInitialState("InitialTest3", this); state1 = new NSFCompositeState("State1", this, state1EntryAction, state1ExitAction); state2 = new NSFCompositeState("State2", this, null, null); //State 1 Region state1InitialState = new NSFInitialState("State1Initial", state1); state1History = new NSFDeepHistory("State1History", state1); state1_1 = new NSFCompositeState("State1_1", state1, null, null); state1_2 = new NSFCompositeState("State1_2", state1, null, null); // State1_2 Region state1_2InitialState = new NSFInitialState("State1_2Initial", state1_2); state1_2_1 = new NSFCompositeState("State1_2_1", state1_2, null, null); state1_2_2 = new NSFCompositeState("State1_2_2", state1_2, null, null); //Transitions // Test1 Region test1InitialToState1Transition = new NSFExternalTransition("Test1InitialToState1", test2InitialState, state1, null, null, null); state1ToState2Transition = new NSFExternalTransition("State1ToState2", state1, state2, event5, null, null); state2ToState1Transition = new NSFExternalTransition("State2ToState1", state2, state1, event6, null, null); // State1 Region state1InitialToState1HistoryTransition = new NSFExternalTransition("State1InitialToState1History", state1InitialState, state1History, null, null, null); state1HistoryToState1_1Transition = new NSFExternalTransition("State1HistoryToState1_1", state1History, state1_1, null, null, null); state1_1ToState1_2Transition = new NSFExternalTransition("State1_1ToState1_2", state1_1, state1_2, event1, null, null); state1_2ToState1_1Transition = new NSFExternalTransition("State1_2ToState1_1", state1_2, state1_1, event2, null, null); // State1_2 Region state1_2InitialStateToState1_2_1Transition = new NSFExternalTransition("State1_2InitialStateToState1_2_1", state1_2InitialState, state1_2_1, null, null, null); state1_2_1ToState1_2_2Transition = new NSFExternalTransition("State1_2_1ToState1_2_2", state1_2_1, state1_2_2, event3, null, null); state1_2_2ToState1_2_1Transition = new NSFExternalTransition("State1_2_2ToState1_2_1", state1_2_2, state1_2_1, event4, null, null); }