diff --git a/hal/command_line_io.go b/hal/command_line_io.go index 4d0efb0..cc90091 100644 --- a/hal/command_line_io.go +++ b/hal/command_line_io.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 } diff --git a/hal/module.go b/hal/module.go index df50cf2..8458eab 100644 --- a/hal/module.go +++ b/hal/module.go @@ -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 } diff --git a/parser/from_config.go b/parser/from_config.go index 6d52579..a0b451b 100644 --- a/parser/from_config.go +++ b/parser/from_config.go @@ -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 }