Add debug node stuff

master
kolaente 4 years ago
parent 5e2c060a2f
commit 3d06880ae7
Signed by: kolaente
GPG Key ID: F40E70337AB24C9B
  1. 12
      hal/command_line_io.go
  2. 11
      hal/module.go
  3. 2
      parser/from_config.go

@ -4,23 +4,25 @@ import (
"fmt"
)
func NewCommandLineIO(index int64) *CommandLineIO {
func NewCommandLineIO(index int64, moduleName string) *CommandLineIO {
return &CommandLineIO{
index: index,
index: index,
moduleName: moduleName,
}
}
type CommandLineIO struct {
index int64
index int64
moduleName string
}
func (io *CommandLineIO) Read() (result float64, err error) {
fmt.Printf("Input[%d]: ", io.index)
fmt.Printf("Input[%s][%d]: ", io.moduleName, io.index)
_, err = fmt.Scanf("%f", &result)
return
}
func (io *CommandLineIO) Write(output float64) error {
fmt.Printf("Output[%d]: %f\n", io.index, output)
fmt.Printf("Output[%s][%d]: %f\n", io.moduleName, io.index, output)
return nil
}

@ -19,6 +19,7 @@ type Module struct {
isStopped bool
debugEnabled bool
name string // Used to print the module name when debugging
}
func (h *Module) programCounter() int64 {
@ -40,7 +41,8 @@ func (h *Module) debug(format string, args ...interface{}) {
if !h.debugEnabled {
return
}
fmt.Printf("[DEBUG] "+format+"\n", args...)
fmt.Printf("[DEBUG] ["+h.name+"] "+format+"\n", args...)
}
func (h *Module) Step() error {
@ -72,6 +74,10 @@ func (h *Module) Run() error {
}
func NewHALModule(program Program, registerSize uint64, ioSize int64, debug bool) (*Module, error) {
return NewNamedHALModule(program, registerSize, ioSize, debug, "")
}
func NewNamedHALModule(program Program, registerSize uint64, ioSize int64, debug bool, name string) (*Module, error) {
if registerSize <= 10 {
return nil, fmt.Errorf("register size must be greater then 10 [ registerSize = %d ]", registerSize)
}
@ -80,12 +86,13 @@ func NewHALModule(program Program, registerSize uint64, ioSize int64, debug bool
return nil, fmt.Errorf("io size must positive")
}
for i := int64(0); i <= ioSize; i++ {
ios[i] = NewCommandLineIO(i)
ios[i] = NewCommandLineIO(i, name)
}
return &Module{
programStorage: program,
register: make([]float64, registerSize),
IO: ios,
debugEnabled: debug,
name: name,
}, nil
}

@ -14,7 +14,7 @@ func GetModulesFromConfig(config *hal.ClusterConfig, debug bool) (modules map[st
return nil, err
}
// By default, all IO is the standard IO, we'll override it with channels where needed.
modules[node.Name], err = hal.NewHALModule(program, 256, 4, debug)
modules[node.Name], err = hal.NewNamedHALModule(program, 256, 4, debug, node.Name)
if err != nil {
return nil, err
}

Loading…
Cancel
Save