Add debug node stuff

master
kolaente 5 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" "fmt"
) )
func NewCommandLineIO(index int64) *CommandLineIO { func NewCommandLineIO(index int64, moduleName string) *CommandLineIO {
return &CommandLineIO{ return &CommandLineIO{
index: index, index: index,
moduleName: moduleName,
} }
} }
type CommandLineIO struct { type CommandLineIO struct {
index int64 index int64
moduleName string
} }
func (io *CommandLineIO) Read() (result float64, err error) { 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) _, err = fmt.Scanf("%f", &result)
return return
} }
func (io *CommandLineIO) Write(output float64) error { 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 return nil
} }

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

@ -14,7 +14,7 @@ func GetModulesFromConfig(config *hal.ClusterConfig, debug bool) (modules map[st
return nil, err return nil, err
} }
// By default, all IO is the standard IO, we'll override it with channels where needed. // 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 { if err != nil {
return nil, err return nil, err
} }

Loading…
Cancel
Save