/// <summary>
 /// This method is used to reset the time on a CPU node, can be used on all if no nodeID is given
 /// </summary>
 /// <param name="node">The node to write to</param>
 public void ResetTime(CpuNode node = null)
 {
     if (node == null)
     {
         // Reset time for all nodes
         this.core.Nodes.ForEach(x => this.Connection.ResetTime(x));
     }
     else
     {
         this.Connection.ResetTime(node);
     }
 }
 /// <summary>
 /// Method called whenever a connector discovers a new node
 /// </summary>
 /// <param name="sender">The connector</param>
 /// <param name="e">The new Node</param>
 private void Connector_NewNodeFound(object sender, CpuNode e)
 {
     // Add the node to list
     // TODO, when adding multi connector support, make sure to create mapping for these
     this.core.Nodes.Add(e);
 }
 /// <summary>
 /// This method gets the value for a register once
 /// </summary>
 /// <param name="nodeID"></param>
 /// <param name="node"></param>
 /// <param name="r"></param>
 public void QueryRegister(CpuNode node, Register r)
 {
     this.Connection.QueryValue(node, r);
 }
 /// <summary>
 /// This method is used to setup a channel
 /// </summary>
 /// <param name="node">The cpu node</param>
 /// <param name="mode">The mode</param>
 /// <param name="register">The register the channel is bound to</param>
 public void SetupSignalTracing(CpuNode node, ChannelMode mode, Register register)
 {
     this.Connection.SetupSignalTracing(node, register, mode);
 }
 /// <summary>
 /// Write a value to a Register
 /// </summary>
 /// <param name="cpuNode">The CPU node ID</param>
 /// <param name="register">The value to write to the register</param>
 /// <param name="registerValue">The register to write to</param>
 public void WriteToRegister(CpuNode cpuNode, Register register, RegisterValue registerValue)
 {
     this.Connection.WriteValue(cpuNode, register, registerValue);
 }