0.0.10 PinvinKL.Debug.Println, logs debug messages with prefix 'DEBUG:' if debug is enabled

This commit is contained in:
Jarno Rankinen 2023-03-03 08:20:49 +02:00
parent 93992d3dd6
commit dbbc22809e
2 changed files with 16 additions and 6 deletions

View File

@ -19,7 +19,7 @@ import (
var static embed.FS var static embed.FS
var ( var (
version = "0.0.9" version = "0.0.10"
pingvin pingvinKL.PingvinKL pingvin pingvinKL.PingvinKL
DEBUG = false DEBUG = false
) )

View File

@ -29,7 +29,7 @@ type PingvinKL struct {
Status pingvinStatus Status pingvinStatus
buslock *sync.Mutex buslock *sync.Mutex
statuslock *sync.Mutex statuslock *sync.Mutex
debug bool Debug PingvinLogger
} }
// single register data // single register data
@ -72,6 +72,10 @@ type pingvinStatus struct {
SystemTime string `json:"system_time"` // Time and date in unit SystemTime string `json:"system_time"` // Time and date in unit
} }
type PingvinLogger struct {
dbg bool
}
var ( var (
// Mutually exclusive coils // Mutually exclusive coils
// Thanks to https://github.com/Jalle19/eda-modbus-bridge // Thanks to https://github.com/Jalle19/eda-modbus-bridge
@ -87,6 +91,12 @@ var (
mutexcoils = []uint16{1, 2, 3, 6, 7, 10, 40} mutexcoils = []uint16{1, 2, 3, 6, 7, 10, 40}
) )
func (logger *PingvinLogger) Println(msg string) {
if logger.dbg {
log.Println("DEBUG: ", msg)
}
}
func newCoil(address string, symbol string, description string) pingvinCoil { func newCoil(address string, symbol string, description string) pingvinCoil {
addr, err := strconv.Atoi(address) addr, err := strconv.Atoi(address)
if err != nil { if err != nil {
@ -399,7 +409,7 @@ func (p *PingvinKL) WriteCoils(startaddr uint16, quantity uint16, vals []bool) e
// -> 0b10100010 // -> 0b10100010
bits[i/8] &= ^(1 << uint(i%8)) bits[i/8] &= ^(1 << uint(i%8))
} }
if p.debug { if p.Debug.dbg {
log.Println("index:", i/8, "value:", bits[i/8], "shift:", i%8) log.Println("index:", i/8, "value:", bits[i/8], "shift:", i%8)
} }
} }
@ -495,11 +505,11 @@ func parseStatus(value int) string {
func (p *PingvinKL) Monitor(interval int) { func (p *PingvinKL) Monitor(interval int) {
for { for {
time.Sleep(time.Duration(interval) * time.Second) time.Sleep(time.Duration(interval) * time.Second)
if p.debug { if p.Debug.dbg {
log.Println("DEBUG: Updating values") log.Println("DEBUG: Updating values")
} }
p.Update() p.Update()
if p.debug { if p.Debug.dbg {
log.Println("DEBUG: coils:", p.Coils) log.Println("DEBUG: coils:", p.Coils)
log.Println("DEBUG: registers:", p.Registers) log.Println("DEBUG: registers:", p.Registers)
} }
@ -509,7 +519,7 @@ func (p *PingvinKL) Monitor(interval int) {
// create a PingvinKL struct, read coils and registers from CSVs // create a PingvinKL struct, read coils and registers from CSVs
func New(debug bool) PingvinKL { func New(debug bool) PingvinKL {
pingvin := PingvinKL{} pingvin := PingvinKL{}
pingvin.debug = debug pingvin.Debug.dbg = debug
pingvin.buslock = &sync.Mutex{} pingvin.buslock = &sync.Mutex{}
log.Println("Parsing coil data...") log.Println("Parsing coil data...")
coilData := readCsvLines("coils.csv") coilData := readCsvLines("coils.csv")