mirror of https://github.com/jetkvm/kvm.git
chore(log): add serialLogger
This commit is contained in:
parent
48a917fd76
commit
612c50bfe2
1
log.go
1
log.go
|
@ -53,6 +53,7 @@ var (
|
||||||
watchdogLogger = getLogger("watchdog")
|
watchdogLogger = getLogger("watchdog")
|
||||||
websecureLogger = getLogger("websecure")
|
websecureLogger = getLogger("websecure")
|
||||||
otaLogger = getLogger("ota")
|
otaLogger = getLogger("ota")
|
||||||
|
serialLogger = getLogger("serial")
|
||||||
// external components
|
// external components
|
||||||
ginLogger = getLogger("gin")
|
ginLogger = getLogger("gin")
|
||||||
)
|
)
|
||||||
|
|
47
serial.go
47
serial.go
|
@ -35,17 +35,19 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func runATXControl() {
|
func runATXControl() {
|
||||||
|
scopedLogger := serialLogger.With().Str("service", "atx_control").Logger()
|
||||||
|
|
||||||
reader := bufio.NewReader(port)
|
reader := bufio.NewReader(port)
|
||||||
for {
|
for {
|
||||||
line, err := reader.ReadString('\n')
|
line, err := reader.ReadString('\n')
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Error reading from serial port")
|
scopedLogger.Warn().Err(err).Msg("Error reading from serial port")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Each line should be 4 binary digits + newline
|
// Each line should be 4 binary digits + newline
|
||||||
if len(line) != 5 {
|
if len(line) != 5 {
|
||||||
logger.Warn().Int("length", len(line)).Msg("Invalid line length")
|
scopedLogger.Warn().Int("length", len(line)).Msg("Invalid line length")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,7 +68,12 @@ func runATXControl() {
|
||||||
newLedPWRState != ledPWRState ||
|
newLedPWRState != ledPWRState ||
|
||||||
newBtnRSTState != btnRSTState ||
|
newBtnRSTState != btnRSTState ||
|
||||||
newBtnPWRState != btnPWRState {
|
newBtnPWRState != btnPWRState {
|
||||||
logger.Debug().Bool("hdd", newLedHDDState).Bool("pwr", newLedPWRState).Bool("rst", newBtnRSTState).Bool("pwr", newBtnPWRState).Msg("Status changed")
|
scopedLogger.Debug().
|
||||||
|
Bool("hdd", newLedHDDState).
|
||||||
|
Bool("pwr", newLedPWRState).
|
||||||
|
Bool("rst", newBtnRSTState).
|
||||||
|
Bool("pwr", newBtnPWRState).
|
||||||
|
Msg("Status changed")
|
||||||
|
|
||||||
// Update states
|
// Update states
|
||||||
ledHDDState = newLedHDDState
|
ledHDDState = newLedHDDState
|
||||||
|
@ -133,45 +140,46 @@ func unmountDCControl() error {
|
||||||
var dcState DCPowerState
|
var dcState DCPowerState
|
||||||
|
|
||||||
func runDCControl() {
|
func runDCControl() {
|
||||||
|
scopedLogger := serialLogger.With().Str("service", "dc_control").Logger()
|
||||||
reader := bufio.NewReader(port)
|
reader := bufio.NewReader(port)
|
||||||
for {
|
for {
|
||||||
line, err := reader.ReadString('\n')
|
line, err := reader.ReadString('\n')
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Error reading from serial port")
|
scopedLogger.Warn().Err(err).Msg("Error reading from serial port")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Split the line by semicolon
|
// Split the line by semicolon
|
||||||
parts := strings.Split(strings.TrimSpace(line), ";")
|
parts := strings.Split(strings.TrimSpace(line), ";")
|
||||||
if len(parts) != 4 {
|
if len(parts) != 4 {
|
||||||
logger.Warn().Str("line", line).Msg("Invalid line")
|
scopedLogger.Warn().Str("line", line).Msg("Invalid line")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse new states
|
// Parse new states
|
||||||
powerState, err := strconv.Atoi(parts[0])
|
powerState, err := strconv.Atoi(parts[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Invalid power state")
|
scopedLogger.Warn().Err(err).Msg("Invalid power state")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
dcState.IsOn = powerState == 1
|
dcState.IsOn = powerState == 1
|
||||||
milliVolts, err := strconv.ParseFloat(parts[1], 64)
|
milliVolts, err := strconv.ParseFloat(parts[1], 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Invalid voltage")
|
scopedLogger.Warn().Err(err).Msg("Invalid voltage")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
volts := milliVolts / 1000 // Convert mV to V
|
volts := milliVolts / 1000 // Convert mV to V
|
||||||
|
|
||||||
milliAmps, err := strconv.ParseFloat(parts[2], 64)
|
milliAmps, err := strconv.ParseFloat(parts[2], 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Invalid current")
|
scopedLogger.Warn().Err(err).Msg("Invalid current")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
amps := milliAmps / 1000 // Convert mA to A
|
amps := milliAmps / 1000 // Convert mA to A
|
||||||
|
|
||||||
milliWatts, err := strconv.ParseFloat(parts[3], 64)
|
milliWatts, err := strconv.ParseFloat(parts[3], 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Invalid power")
|
scopedLogger.Warn().Err(err).Msg("Invalid power")
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
watts := milliWatts / 1000 // Convert mW to W
|
watts := milliWatts / 1000 // Convert mW to W
|
||||||
|
@ -225,12 +233,19 @@ func reopenSerialPort() error {
|
||||||
var err error
|
var err error
|
||||||
port, err = serial.Open(serialPortPath, defaultMode)
|
port, err = serial.Open(serialPortPath, defaultMode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Error opening serial port")
|
serialLogger.Error().
|
||||||
|
Err(err).
|
||||||
|
Str("path", serialPortPath).
|
||||||
|
Interface("mode", defaultMode).
|
||||||
|
Msg("Error opening serial port")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleSerialChannel(d *webrtc.DataChannel) {
|
func handleSerialChannel(d *webrtc.DataChannel) {
|
||||||
|
scopedLogger := serialLogger.With().
|
||||||
|
Uint16("data_channel_id", *d.ID()).Logger()
|
||||||
|
|
||||||
d.OnOpen(func() {
|
d.OnOpen(func() {
|
||||||
go func() {
|
go func() {
|
||||||
buf := make([]byte, 1024)
|
buf := make([]byte, 1024)
|
||||||
|
@ -238,13 +253,13 @@ func handleSerialChannel(d *webrtc.DataChannel) {
|
||||||
n, err := port.Read(buf)
|
n, err := port.Read(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != io.EOF {
|
if err != io.EOF {
|
||||||
logger.Warn().Err(err).Msg("Failed to read from serial port")
|
scopedLogger.Warn().Err(err).Msg("Failed to read from serial port")
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
err = d.Send(buf[:n])
|
err = d.Send(buf[:n])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Failed to send serial output")
|
scopedLogger.Warn().Err(err).Msg("Failed to send serial output")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -257,11 +272,15 @@ func handleSerialChannel(d *webrtc.DataChannel) {
|
||||||
}
|
}
|
||||||
_, err := port.Write(msg.Data)
|
_, err := port.Write(msg.Data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Warn().Err(err).Msg("Failed to write to serial")
|
scopedLogger.Warn().Err(err).Msg("Failed to write to serial")
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
d.OnClose(func() {
|
d.OnError(func(err error) {
|
||||||
|
scopedLogger.Warn().Err(err).Msg("Serial channel error")
|
||||||
|
})
|
||||||
|
|
||||||
|
d.OnClose(func() {
|
||||||
|
scopedLogger.Info().Msg("Serial channel closed")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue