From 9adbde99a2badfa37be8693318467bae43edd88a Mon Sep 17 00:00:00 2001 From: Yurii Soldak Date: Thu, 27 May 2021 21:35:00 +0200 Subject: [PATCH] wifinina: avoid fmt package --- examples/wifinina/connect/main.go | 16 +++------------- wifinina/tcp.go | 10 +++++----- wifinina/wifinina.go | 32 ++++++++++++++++++++++--------- 3 files changed, 31 insertions(+), 27 deletions(-) diff --git a/examples/wifinina/connect/main.go b/examples/wifinina/connect/main.go index f4bc49a..087eff0 100644 --- a/examples/wifinina/connect/main.go +++ b/examples/wifinina/connect/main.go @@ -2,9 +2,8 @@ package main import ( - "encoding/binary" - "fmt" "machine" + "strconv" "time" "tinygo.org/x/drivers/wifinina" @@ -80,7 +79,7 @@ func printRSSI() { println("Unknown (error: ", err.Error(), ")") return } - println(fmt.Sprintf("%d", rssi)) + println(strconv.Itoa(int(rssi))) } func printIPs() { @@ -113,20 +112,11 @@ func printTime() { func printMac() { print("MAC: ") - b := make([]byte, 8) mac, err := adaptor.GetMACAddress() if err != nil { println("Unknown (", err.Error(), ")") } - binary.LittleEndian.PutUint64(b, uint64(mac)) - macAddress := "" - for i := 5; i >= 0; i-- { - macAddress += fmt.Sprintf("%0X", b[i]) - if i != 0 { - macAddress += ":" - } - } - println(macAddress) + println(mac.String()) } // Wait for user to open serial console diff --git a/wifinina/tcp.go b/wifinina/tcp.go index 0ae2ea7..1f09ee0 100644 --- a/wifinina/tcp.go +++ b/wifinina/tcp.go @@ -1,7 +1,7 @@ package wifinina import ( - "fmt" + "errors" "strconv" "time" @@ -104,7 +104,7 @@ func (drv *Driver) connectSocket(addr, portStr string, mode uint8) error { func convertPort(portStr string) (uint16, error) { p64, err := strconv.ParseUint(portStr, 10, 16) if err != nil { - return 0, fmt.Errorf("could not convert port to uint16: %w", err) + return 0, errors.New("could not convert port to uint16: " + err.Error()) } return uint16(p64), nil } @@ -175,13 +175,13 @@ func (drv *Driver) Write(b []byte) (n int, err error) { } if drv.proto == ProtoModeUDP { if err := drv.dev.StartClient("", drv.ip, drv.port, drv.sock, drv.proto); err != nil { - return 0, fmt.Errorf("error in startClient: %w", err) + return 0, errors.New("error in startClient: " + err.Error()) } if _, err := drv.dev.InsertDataBuf(b, drv.sock); err != nil { - return 0, fmt.Errorf("error in insertDataBuf: %w", err) + return 0, errors.New("error in insertDataBuf: " + err.Error()) } if _, err := drv.dev.SendUDPData(drv.sock); err != nil { - return 0, fmt.Errorf("error in sendUDPData: %w", err) + return 0, errors.New("error in sendUDPData: " + err.Error()) } return len(b), nil } else { diff --git a/wifinina/wifinina.go b/wifinina/wifinina.go index e7fb926..8b41b2a 100644 --- a/wifinina/wifinina.go +++ b/wifinina/wifinina.go @@ -8,7 +8,10 @@ package wifinina // import "tinygo.org/x/drivers/wifinina" import ( "encoding/binary" - "fmt" + "encoding/hex" + "fmt" // used only in debug printouts and is optimized out when debugging is disabled + "strconv" + "strings" "time" "machine" @@ -213,15 +216,16 @@ func (addr IPAddress) String() string { if len(addr) < 4 { return "" } - return fmt.Sprintf("%d.%d.%d.%d", addr[0], addr[1], addr[2], addr[3]) + return strconv.Itoa(int(addr[0])) + "." + strconv.Itoa(int(addr[1])) + "." + strconv.Itoa(int(addr[2])) + "." + strconv.Itoa(int(addr[3])) } func ParseIPv4(s string) (IPAddress, error) { - var v0, v1, v2, v3 uint8 - if _, err := fmt.Sscanf(s, "%d.%d.%d.%d", &v0, &v1, &v2, &v3); err != nil { - return "", err - } - return IPAddress([]byte{v0, v1, v2, v3}), nil + v := strings.Split(s, ".") + v0, _ := strconv.Atoi(v[0]) + v1, _ := strconv.Atoi(v[1]) + v2, _ := strconv.Atoi(v[2]) + v3, _ := strconv.Atoi(v[3]) + return IPAddress([]byte{byte(v0), byte(v1), byte(v2), byte(v3)}), nil } func (addr IPAddress) AsUint32() uint32 { @@ -235,13 +239,23 @@ func (addr IPAddress) AsUint32() uint32 { type MACAddress uint64 func (addr MACAddress) String() string { - return fmt.Sprintf("%016X", uint64(addr)) + b := make([]byte, 8) + binary.BigEndian.PutUint64(b, uint64(addr)) + encoded := hex.EncodeToString(b) + result := "" + for i := 2; i < 8; i++ { + result += encoded[i*2 : i*2+2] + if i < 7 { + result += ":" + } + } + return result } type Error uint8 func (err Error) Error() string { - return fmt.Sprintf("wifinina error: 0x%02X", uint8(err)) + return "wifinina error: 0x" + hex.EncodeToString([]byte{uint8(err)}) } // Cmd Struct Message */