Firmware checks, nearly ready to push firmware to device
This commit is contained in:
43
main.go
43
main.go
@@ -3,7 +3,10 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/akamensky/argparse"
|
||||
"github.com/go-playground/log/v7"
|
||||
"github.com/go-playground/log/v7/handlers/console"
|
||||
"go-scsupdate/firmware"
|
||||
"go-scsupdate/update"
|
||||
"go-scsupdate/usb"
|
||||
"os"
|
||||
)
|
||||
@@ -12,40 +15,52 @@ func main() {
|
||||
parser := argparse.NewParser("go-scsupdate", "Update Firmware of SCS PACTOR modems")
|
||||
serialDevice := parser.String("s", "serialDevice", &argparse.Options{Required: false, Help: "(optional) serial device the modem is attached to, e.g. /dev/ttyUSB0. If not set, go-scsupdate will search for SCS modems."})
|
||||
_ = parser.String("b", "baudrate", &argparse.Options{Required: false, Help: "(optional) sets the serial baudrate, e.g. 115200"})
|
||||
f := parser.String("f", "file", &argparse.Options{Required: false, Help: "(required) the file to flash, e.g. profi41r.pro"})
|
||||
f := parser.String("f", "file", &argparse.Options{Required: true, Help: "(required) the file to flash, e.g. profi41r.pro"})
|
||||
debug := parser.Flag("d", "debug", &argparse.Options{Required: false, Help: "(optional) enable debug logs"})
|
||||
err := parser.Parse(os.Args)
|
||||
cLog := console.New(true)
|
||||
if *debug {
|
||||
log.AddHandler(cLog, log.AllLevels...)
|
||||
log.Debug("DEBUG logging enabled")
|
||||
} else {
|
||||
log.AddHandler(cLog, log.InfoLevel, log.ErrorLevel, log.AlertLevel, log.WarnLevel, log.NoticeLevel, log.PanicLevel)
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Print(parser.Usage(err))
|
||||
log.Fatal(parser.Usage(err))
|
||||
os.Exit(1)
|
||||
}
|
||||
fmt.Println(*serialDevice)
|
||||
var ports []usb.Scsid
|
||||
if *serialDevice == "" {
|
||||
if ports, err = usb.FindSCS(); err == nil {
|
||||
fmt.Println(ports)
|
||||
if len(ports) == 0 {
|
||||
fmt.Println("Found no SCS modem.")
|
||||
//os.Exit(1)
|
||||
log.Fatal("Found no SCS modem.")
|
||||
}
|
||||
if len(ports) != 1 {
|
||||
fmt.Println("Found more than one SCS modem. You need to choose one with the -s flag.\nfound: ")
|
||||
msg := "Found more than one SCS modem. You need to choose one with the -s flag.\nfound: "
|
||||
for _, p := range ports {
|
||||
fmt.Printf("Port: %30s : Name: %s\n", p.Port, p.Name)
|
||||
msg += fmt.Sprintf("Port: %30s : Name: %s\n", p.Port, p.Name)
|
||||
}
|
||||
log.Fatal(msg)
|
||||
}
|
||||
} else {
|
||||
fmt.Println("Error while seaching SCS modems: ", err)
|
||||
log.Fatal("Error while seaching SCS modems: ", err)
|
||||
}
|
||||
}
|
||||
|
||||
if !firmware.FwExists(*f) {
|
||||
fmt.Printf("Error: firmware file %s does not exist.\n", *f)
|
||||
os.Exit(1)
|
||||
log.Panicf("Error: firmware file %s does not exist.\n", *f)
|
||||
}
|
||||
|
||||
if !firmware.ChkHeader(*f) {
|
||||
os.Exit(1)
|
||||
if firmware.ChkHeader(*f) != nil {
|
||||
log.Panic(err)
|
||||
|
||||
} else {
|
||||
fmt.Println("all ok")
|
||||
log.Debug("checks passed")
|
||||
}
|
||||
|
||||
err = update.Update("/dev/ttyUSB0", 829400, *f)
|
||||
if err != nil {
|
||||
log.Panic(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user