Files
go-scsupdate/main.go

52 lines
1.5 KiB
Go

package main
import (
"fmt"
"github.com/akamensky/argparse"
"go-scsupdate/firmware"
"go-scsupdate/usb"
"os"
)
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"})
err := parser.Parse(os.Args)
if err != nil {
fmt.Print(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)
}
if len(ports) != 1 {
fmt.Println("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)
}
}
} else {
fmt.Println("Error while seaching SCS modems: ", err)
}
}
if !firmware.FwExists(*f) {
fmt.Printf("Error: firmware file %s does not exist.\n", *f)
os.Exit(1)
}
if !firmware.ChkHeader(*f) {
os.Exit(1)
} else {
fmt.Println("all ok")
}
}