From 3089bf8b1bb98fa7f4383ca7c99f7c437b018ee8 Mon Sep 17 00:00:00 2001 From: Scott Feldman Date: Sun, 11 Jun 2023 20:34:18 -0700 Subject: [PATCH] net: updates/cleanup/docs for net, netdev, and netlink --- README-net.md | 286 +++++++++++----------------- espat/espat.go | 7 - examples/net/webserver/main.go | 45 ----- netdev/README.md | 78 ++++++++ netlink/README.md | 19 ++ netlink/bond.go | 15 -- netlink/bridge.go | 39 ---- netlink/netlink.go | 14 +- netlink/probe/mrkwifi1010.go | 1 - netlink/vlan.go | 41 ---- rtl8720dn/rtl8720dn.go | 7 - smoketest.sh | 24 ++- tcpip/netdev.go | 52 ----- tcpip/stack.go | 20 -- wifinina/commands.go | 67 ------- wifinina/commandtype_string.go | 120 ------------ wifinina/connectionstatus_string.go | 41 ---- wifinina/encryptiontype_string.go | 44 ----- wifinina/error_string.go | 59 ------ wifinina/nodebug.go | 5 - wifinina/status.go | 75 -------- wifinina/tcpstate_string.go | 35 ---- wifinina/wifinina.go | 7 - 23 files changed, 232 insertions(+), 869 deletions(-) create mode 100644 netdev/README.md create mode 100644 netlink/README.md delete mode 100644 netlink/bond.go delete mode 100644 netlink/bridge.go delete mode 100644 netlink/vlan.go delete mode 100644 tcpip/netdev.go delete mode 100644 tcpip/stack.go delete mode 100644 wifinina/commands.go delete mode 100644 wifinina/commandtype_string.go delete mode 100644 wifinina/connectionstatus_string.go delete mode 100644 wifinina/encryptiontype_string.go delete mode 100644 wifinina/error_string.go delete mode 100644 wifinina/nodebug.go delete mode 100644 wifinina/status.go delete mode 100644 wifinina/tcpstate_string.go diff --git a/README-net.md b/README-net.md index 2fbc98c..705c23f 100644 --- a/README-net.md +++ b/README-net.md @@ -1,12 +1,10 @@ -#### Table of Contents +### Table of Contents - ["net" Package](#net-package) - [Using "net" Package](#using-net-package) - [Using "net/http" Package](#using-nethttp-package) - [Using "crypto/tls" Package](#using-cryptotls-package) - [Using Sockets](#using-sockets) -- [Netdev and Netlink](#netdev-and-netlink) -- [Writing a New Netdev Driver](#writing-a-new-netdev-driver) ## "net" Package @@ -14,7 +12,7 @@ TinyGo's "net" package is ported from Go. The port offers a subset of Go's "net" package. The subset maintains Go 1 compatiblity guarantee. A Go application that uses "net" will most-likey just work on TinyGo if the usage is within the subset offered. (There may be external constraints such as limited -SRAM on embedded environment that may limit full functionality). +SRAM on some targets that may limit full "net" functionality). Continue below for details on using "net" and "net/http" packages. @@ -24,121 +22,110 @@ TinyGo's "net" package. ## Using "net" Package Ideally, TinyGo's "net" package would be Go's "net" package and applications -using "net" would just work, as-is. TinyGo's net package is a partial port -from Go's net package, replacing OS socket syscalls with netdev socket calls. - -Netdev is TinyGo's network device driver model; read more about -[Netdev](#netdev-and-netlink). +using "net" would just work, as-is. TinyGo's net package is a partial port of +Go's net package, so some things may not work because they have not been +ported. There are a few features excluded during the porting process, in particular: - No IPv6 support - No DualStack support -Run ```go doc -all ./src/net``` in TinyGo repo to see full listing. +Run ```go doc -all ./src/net``` in TinyGo repo to see full listing of what has +been ported. Here is a list of things known to work. You can find examples +of these at [examples/net](examples/net/). + +### What is Known to Work + +(These are all IPv4 only). + +- TCP client and server +- UDP client +- TLS client +- HTTP client and server +- HTTPS client +- NTP client (UDP) +- MQTT client (paho & natiu) +- WebSocket client and server + +Multiple sockets can be opened in a single app. For example, the app could run +as an http server listen on port :80 and also use NTP to get the current time +or send something over MQTT. There is a practical limit to the number of +active sockets per app, around 8 or 10, so don't go crazy. Applications using Go's net package will need a few setup steps to work with -TinyGo's net package. +TinyGo's net package. The steps are required before using "net". -### Step 1: Create the netdev for your target device. +### Step 1: Probe to Load Network Driver -The available netdev are: - -- [wifinina]: ESP32 WiFi co-controller running Arduino WiFiNINA firmware - - targets: pyportal arduino_nano33 nano_rp2040 metro_m4_airlift - arduino_mkrwifi1010 matrixportal_m4 - -- [rtl8720dn]: RealTek WiFi rtl8720dn co-controller - - targets: wioterminal - -- [espat]: ESP32/ESP8266 WiFi co-controller running Espressif AT firmware - - targets: TBD - -This example configures and creates a wifinina netdev using New(). +Call Probe() to load the correct network driver for your target. Probe() +allows the app to work on multiple targets. ```go -import "tinygo.org/x/drivers/wifinina" +package main -func main() { - cfg := wifinina.Config{Ssid: "foo", Passphrase: "bar"} - netdev := wifinina.New(&cfg) - ... -} -``` - -New() registers the netdev with the "net" package using net.useNetdev(). - -The Config structure is netdev-specific; consult the specific netdev package -for Config details. In this case, the WiFi credentials are passed, but other -settings are typically passed such as device configuration. - -### Step 2: Connect to an IP Network - -Before the net package is fully functional, connect the netdev to an underlying -IP network. For example, a WiFi netdev would connect to a WiFi access point or -become a WiFi access point; either way, once connected, the netdev has a -station IP address and is connected on the IP network. Similarly, a LTE netdev -would connect to a LTE provider, giving the device an IP address on the LTE -network. - -Using the Netlinker interface, Call netdev.NetConnect() to connect the device -to an IP network. Call netdev.NetDisconnect() to disconnect. Continuing example: - -```go import ( - "tinygo.org/x/drivers/wifinina" + "tinygo.org/x/drivers/netlink/probe" ) func main() { - cfg := wifinina.Config{Ssid: "foo", Passphrase: "bar"} - netdev := wifinina.New(&cfg) - netdev.NetConnect() + // load network driver for target + link, dev := probe.Probe() - // "net" package calls here + ... +} +``` - netdev.NetDisconnect() +Probe() will load the driver with default configuration for the target. For +custom configuration, the app can open code Probe() for the target +requirements. + +Probe() returns a [Netlinker](netlink/README.md) and a +[Netdever](netdev/README.md), interfaces implemented by the network driver. +Next, we'll use the Netlinker interface to connect the target to an IP network. + +### Step 2: Connect to an IP Network + +Before the net package is fully functional, we need to connect the target to an +IP network. + +```go +package main + +import ( + "tinygo.org/x/drivers/netlink" + "tinygo.org/x/drivers/netlink/probe" +) + +func main() { + + // load network driver for target + link, _ := probe.Probe() + + // Connect target to IP network + link.NetConnect(&netlink.ConnectParams{ + Ssid: "my SSID", + Passphrase: "my passphrase", + }) + + // OK to use "net" from here on + ... } ``` Optionally, get notified of IP network connects and disconnects: ```go - netdev.Notify(func(e drivers.NetlinkEvent) { + link.Notify(func(e netlink.Event) { switch e { - case drivers.NetlinkEventNetUp: - println("Network UP") - case drivers.NetlinkEventNetDown: - println("Network DOWN") + case netlink.EventNetUp: println("Network UP") + case netlink.EventNetDown: println("Network DOWN") }) ``` -Here is a simple example of an http server listening on port :8080, before and -after: +Here is an example of an http server listening on port :8080: -#### Before -```go -package main - -import ( - "fmt" - "net/http" -) - -func main() { - http.HandleFunc("/", HelloServer) - http.ListenAndServe(":8080", nil) -} - -func HelloServer(w http.ResponseWriter, r *http.Request) { - fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:]) -} -``` - -#### After ```go package main @@ -146,21 +133,29 @@ import ( "fmt" "net/http" - "tinygo.org/x/drivers/wifinina" + "tinygo.org/x/drivers/netlink" + "tinygo.org/x/drivers/netlink/probe" ) -func main() { - cfg := wifinina.Config{Ssid: "foo", Passphrase: "bar"} - netdev := wifinina.New(&cfg) - netdev.NetConnect() - - http.HandleFunc("/", HelloServer) - http.ListenAndServe(":8080", nil) -} - func HelloServer(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello, %s!", r.URL.Path[1:]) } + +func main() { + + // load network driver for target + link, _ := probe.Probe() + + // Connect target to IP network + link.NetConnect(&netlink.ConnectParams{ + Ssid: "my SSID", + Passphrase: "my passphrase", + }) + + // Serve it up + http.HandleFunc("/", HelloServer) + http.ListenAndServe(":8080", nil) +} ``` ## Using "net/http" Package @@ -191,17 +186,17 @@ protocol. This is different from Go's crypto/tls package which handles the TLS protocol in software. TinyGo's TLS support is only available for client applications. You can -http.Get() to an http:// or https:// address, but you cannot -http.ListenAndServeTLS() an https server. +http.Get() to an https:// address, but you cannot http.ListenAndServeTLS() an +https server. The offloading hardware has pre-defined TLS certificates built-in. ## Using Sockets -A netdev implements a BSD socket-like interface so an application can make direct -socket calls, bypassing the net package. +The Netdever interface is a BSD socket-like interface so an application can make direct +socket calls, bypassing the "net" package for the lowest overhead. -Here is a simple TCP application using direct sockets: +Here is a simple TCP client application using direct sockets: ```go package main @@ -209,81 +204,30 @@ package main import ( "net" // only need to parse IP address - "tinygo.org/x/drivers" - "tinygo.org/x/drivers/wifinina" + "tinygo.org/x/drivers/netdev" + "tinygo.org/x/drivers/netlink" + "tinygo.org/x/drivers/netlink/probe" ) func main() { - cfg := wifinina.Config{Ssid: "foo", Passphrase: "bar"} - netdev := wifinina.New(&cfg) - // ignoring error handling + // load network driver for target + link, dev := probe.Probe() - netdev.NetConnect() + // Connect target to IP network + link.NetConnect(&netlink.ConnectParams{ + Ssid: "my SSID", + Passphrase: "my passphrase", + }) - sock, _ := netdev.Socket(drivers.AF_INET, drivers.SOCK_STREAM, drivers.IPPROTO_TCP) + // omit error handling - netdev.Connect(sock, "", net.ParseIP("10.0.0.100"), 8080) - netdev.Send(sock, []bytes("hello"), 0, 0) + sock, _ := dev.Socket(netdev.AF_INET, netdev.SOCK_STREAM, netdev.IPPROTO_TCP) - netdev.Close(sock) + dev.Connect(sock, "", net.ParseIP("10.0.0.100"), 8080) + dev.Send(sock, []bytes("hello"), 0, 0) + + dev.Close(sock) + link.NetDisconnect() } ``` - -## Netdev and Netlink - -Netdev is TinyGo's network device driver model. Network drivers implement the -netdever interface, providing a common network I/O interface to TinyGo's "net" -package. The interface is modeled after the BSD socket interface. net.Conn -implementations (TCPConn, UDPConn, and TLSConn) use the netdev interface for -device I/O access. For example, net.DialTCP, which returns a net.TCPConn, -calls netdev.Socket() and netdev.Connect(): - -```go -func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error) { - - fd, _ := netdev.Socket(syscall.AF_INET, syscall.SOCK_STREAM, syscall.IPPROTO_TCP) - - netdev.Connect(fd, "", raddr.IP, raddr.Port) - - return &TCPConn{ - fd: fd, - laddr: laddr, - raddr: raddr, - }, nil -} -``` - -Network drivers also (optionally) implement the Netlinker interface. This -interface is not used by TinyGo's "net" package, but rather provides the TinyGo -application direct access to the network device for common settings and control -that fall outside of netdev's socket interface. - -## Writing a New Netdev Driver - -A new netdev driver will implement the netdever and optionally the Netlinker -interfaces. See the wifinina or rtl8720dn drivers for examples. - -#### Locking - -Multiple goroutines may invoke methods on a net.Conn simultaneously, and since -the net package translates net.Conn calls into netdev socket calls, it follows -that multiple goroutines may invoke socket calls, so locking is required to -keep socket calls from stepping on one another. - -Don't hold a lock while Time.Sleep()ing waiting for a hardware operation to -finish. Unlocking while sleeping let's other goroutines make progress. If the -sleep period is really small, then you can get away with holding the lock. - -#### Sockfd - -The netdev socket interface uses a socket fd (int) to represent a socket -connection (end-point). Each net.Conn maps 1:1 to a fd. The number of fds -available is a hardware limitation. Wifinina, for example, can hand out 10 -fds. - -### Testing - -The netdev driver should minimally run all of the example/net examples. - -TODO: automate testing to catch regressions. diff --git a/espat/espat.go b/espat/espat.go index 3985308..aca6d7a 100644 --- a/espat/espat.go +++ b/espat/espat.go @@ -125,13 +125,6 @@ func (d *Device) NetNotify(cb func(netlink.Event)) { // Not supported } -func (d *Device) SendEth(pkt []byte) error { - return netlink.ErrNotSupported -} - -func (d *Device) RecvEthFunc(cb func(pkt []byte) error) { -} - func (d *Device) GetHostByName(name string) (net.IP, error) { ip, err := d.GetDNS(name) return net.ParseIP(ip), err diff --git a/examples/net/webserver/main.go b/examples/net/webserver/main.go index 3816391..84f0fb4 100644 --- a/examples/net/webserver/main.go +++ b/examples/net/webserver/main.go @@ -28,11 +28,6 @@ var ( port string = ":80" ) -var ( - // this is the ESP chip that has the WIFININA firmware flashed on it - adaptor *wifinina.Device -) - var led = machine.LED func main() { @@ -182,43 +177,3 @@ func cnt(w http.ResponseWriter, r *http.Request) { w.Header().Set(`Content-Type`, `application/json`) fmt.Fprintf(w, `{"cnt": %d}`, counter) } - -const retriesBeforeFailure = 3 - -// connect to access point -func connectToAP() { - time.Sleep(2 * time.Second) - var err error - for i := 0; i < retriesBeforeFailure; i++ { - println("Connecting to " + ssid) - err = adaptor.ConnectToAccessPoint(ssid, pass, 10*time.Second) - if err == nil { - println("Connected.") - - return - } - } - - // error connecting to AP - failMessage(err.Error()) -} - -func displayIP() { - ip, _, _, err := adaptor.GetIP() - for ; err != nil; ip, _, _, err = adaptor.GetIP() { - message(err.Error()) - time.Sleep(1 * time.Second) - } - message("IP address: " + ip.String()) -} - -func message(msg string) { - println(msg, "\r") -} - -func failMessage(msg string) { - for { - println(msg) - time.Sleep(1 * time.Second) - } -} diff --git a/netdev/README.md b/netdev/README.md new file mode 100644 index 0000000..96ce851 --- /dev/null +++ b/netdev/README.md @@ -0,0 +1,78 @@ +### Table of Contents + +- [Netdever](#netdever) +- [Netdev Driver](#netdev-driver) +- [Netdev Driver Notes](#netdev-driver-notes) + +## Netdever + +TinyGo's network device driver model comprises two Go interfaces: Netdever and +Netlinker. This README covers Netdever. + +The Netdever interface describes an L4/L3 network interface modeled after the +BSD sockets. A netdev is a concrete implementation of a Netdever. See +[Netlinker](../netlink/) for the L2 network interface. + +A netdev can: + +- Send and receive L4/L3 packets +- Resolve DNS lookups +- Get/set the device's IP address + +TinyGo network drivers implement the Netdever interface, providing a BSD +sockets interface to TinyGo's "net" package. net.Conn implementations +(TCPConn, UDPConn, and TLSConn) use the netdev socket. For example, +net.DialTCP, which returns a net.TCPConn, calls netdev.Socket() and +netdev.Connect(): + +```go +func DialTCP(network string, laddr, raddr *TCPAddr) (*TCPConn, error) { + + fd, _ := netdev.Socket(netdev.AF_INET, netdev.SOCK_STREAM, netdev.IPPROTO_TCP) + + netdev.Connect(fd, "", raddr.IP, raddr.Port) + + return &TCPConn{ + fd: fd, + laddr: laddr, + raddr: raddr, + }, nil +} +``` + +## Setting Netdev + +Before the app can use TinyGo's "net" package, the app must set the netdev +using UseNetdev(). This binds the "net" package to the netdev driver. For +example, setting the wifinina driver as the netdev: + +``` + nina := wifinina.New(&cfg) + netdev.UseNetdev(nina) +``` + +## Netdev Driver Notes + +See the wifinina and rtl8720dn for examples of netdev drivers. Here are some +notes for netdev drivers. + +#### Locking + +Multiple goroutines may invoke methods on a net.Conn simultaneously, and since +the net package translates net.Conn calls into netdev socket calls, it follows +that multiple goroutines may invoke socket calls, so locking is required to +keep socket calls from stepping on one another. + +Don't hold a lock while Time.Sleep()ing waiting for a long hardware operation to +finish. Unlocking while sleeping let's other goroutines make progress. + +#### Sockfd + +The netdev BSD socket interface uses a socket fd (int) to represent a socket +connection (end-point). Each fd maps 1:1 to a net.Conn maps. The number of fds +available is a hardware limitation. Wifinina, for example, can hand out 10 +fds, representing 10 active sockets. + +#### Testing + +The netdev driver should minimally run all of the example/net examples. diff --git a/netlink/README.md b/netlink/README.md new file mode 100644 index 0000000..cfe57f0 --- /dev/null +++ b/netlink/README.md @@ -0,0 +1,19 @@ +### Table of Contents + +- [Netlinker](#netlinker) + +## Netlinker + +TinyGo's network device driver model comprises two Go interfaces: Netdever and +Netlinker. This README covers Netlinker. + +The Netlinker interface describes an L2 network interface. A netlink is a +concrete implementation of a Netlinker. See [Netdev](../netdev/) for +the L4/L3 network interface. + +A netlink can: + +- Connect/disconnect device to/from network +- Notify of network events (e.g. link UP/DOWN) +- Send and receive Ethernet packets +- Get/set device's hardware address (MAC address) diff --git a/netlink/bond.go b/netlink/bond.go deleted file mode 100644 index 8f583ca..0000000 --- a/netlink/bond.go +++ /dev/null @@ -1,15 +0,0 @@ -package netlink - -// Bond aggregates links as one -type Bond struct { - *Bridge -} - -func NewBond(links []Netlinker) *Bond { - return &Bond{Bridge: NewBridge(links)} -} - -func (b *Bond) SendEth(pkt []byte) error { - // Send Ethernet pkt to active link(s) - return nil -} diff --git a/netlink/bridge.go b/netlink/bridge.go deleted file mode 100644 index ae564ed..0000000 --- a/netlink/bridge.go +++ /dev/null @@ -1,39 +0,0 @@ -package netlink - -import ( - "net" -) - -// Bridge connects links into an Ethernet (L2) broadcast domain -type Bridge struct { - ip net.IP - links []Netlinker - recvEth func([]byte) error -} - -func NewBridge(links []Netlinker) *Bridge { - return &Bridge{links: links} -} - -func (b *Bridge) NetConnect(params *ConnectParams) error { - return nil -} - -func (b *Bridge) NetDisconnect() { -} - -func (b *Bridge) NetNotify(cb func(Event)) { -} - -func (b *Bridge) GetHardwareAddr() (net.HardwareAddr, error) { - return net.HardwareAddr{}, nil -} - -func (b *Bridge) SendEth(pkt []byte) error { - // L2 Forward ethernet pkt to zero of more []links - return nil -} - -func (b *Bridge) RecvEthFunc(cb func(pkt []byte) error) { - b.recvEth = cb -} diff --git a/netlink/netlink.go b/netlink/netlink.go index 35ae3d5..9cb0ee5 100644 --- a/netlink/netlink.go +++ b/netlink/netlink.go @@ -13,6 +13,7 @@ var ( ErrConnectFailed = errors.New("Connect failed") ErrConnectTimeout = errors.New("Connect timed out") ErrMissingSSID = errors.New("Missing WiFi SSID") + ErrAuthFailure = errors.New("Wifi authentication failure") ErrAuthTypeNoGood = errors.New("Wifi authorization type not supported") ErrConnectModeNoGood = errors.New("Connect mode not supported") ErrNotSupported = errors.New("Not supported") @@ -50,14 +51,19 @@ const ( const DefaultConnectTimeout = 10 * time.Second type ConnectParams struct { + // Connect mode ConnectMode + // SSID of Wifi AP Ssid string + // Passphrase of Wifi AP Passphrase string + // Wifi authorization type AuthType + // Wifi country code as two-char string. E.g. "XX" for world-wide, // "US" for USA, etc. Country string @@ -92,12 +98,4 @@ type Netlinker interface { // GetHardwareAddr returns device MAC address GetHardwareAddr() (net.HardwareAddr, error) - - // SendEth sends an Ethernet packet - // TODO describe content of pkt - SendEth(pkt []byte) error - - // RecvEth callback function for receiving Ethernet pkt - // TODO describe content of pkt - RecvEthFunc(cb func(pkt []byte) error) } diff --git a/netlink/probe/mrkwifi1010.go b/netlink/probe/mrkwifi1010.go index b890732..e33e3d1 100644 --- a/netlink/probe/mrkwifi1010.go +++ b/netlink/probe/mrkwifi1010.go @@ -4,7 +4,6 @@ package probe import ( "machine" - "time" "tinygo.org/x/drivers/netdev" "tinygo.org/x/drivers/netlink" diff --git a/netlink/vlan.go b/netlink/vlan.go deleted file mode 100644 index 8669f23..0000000 --- a/netlink/vlan.go +++ /dev/null @@ -1,41 +0,0 @@ -package netlink - -import ( - "net" -) - -// Vlan is a virtual LAN -type Vlan struct { - ip net.IP - // Vlan ID - id uint16 - link Netlinker - recvEth func([]byte) error -} - -func NewVlan(id uint16, link Netlinker) *Vlan { - return &Vlan{id: id, link: link} -} - -func (v *Vlan) NetConnect(params *ConnectParams) error { - return nil -} - -func (v *Vlan) NetDisconnect() { -} - -func (v *Vlan) NetNotify(cb func(Event)) { -} - -func (v *Vlan) GetHardwareAddr() (net.HardwareAddr, error) { - return net.HardwareAddr{}, nil -} - -func (v *Vlan) SendEth(pkt []byte) error { - // Prepend VLAN hdr to pkt and send on link - return nil -} - -func (v *Vlan) RecvEthFunc(cb func(pkt []byte) error) { - v.recvEth = cb -} diff --git a/rtl8720dn/rtl8720dn.go b/rtl8720dn/rtl8720dn.go index 67ff3a5..fa0f384 100644 --- a/rtl8720dn/rtl8720dn.go +++ b/rtl8720dn/rtl8720dn.go @@ -315,13 +315,6 @@ func (r *rtl8720dn) NetNotify(cb func(netlink.Event)) { r.notifyCb = cb } -func (r *rtl8720dn) SendEth(pkt []byte) error { - return netlink.ErrNotSupported -} - -func (r *rtl8720dn) RecvEthFunc(cb func(pkt []byte) error) { -} - func (r *rtl8720dn) GetHostByName(name string) (net.IP, error) { if debugging(debugNetdev) { diff --git a/smoketest.sh b/smoketest.sh index 394f743..06f6249 100755 --- a/smoketest.sh +++ b/smoketest.sh @@ -24,9 +24,6 @@ tinygo build -size short -o ./build/test.hex -target=bluepill ./examples/ds1307/ tinygo build -size short -o ./build/test.hex -target=bluepill ./examples/ds1307/time/main.go tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/ds3231/main.go tinygo build -size short -o ./build/test.hex -target=microbit ./examples/easystepper/main.go -tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/espat/espconsole/main.go -tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/espat/esphub/main.go -tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/espat/espstation/main.go tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/flash/console/spi tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/flash/console/qspi tinygo build -size short -o ./build/test.hex -target=microbit ./examples/gc9a01/main.go @@ -83,10 +80,6 @@ tinygo build -size short -o ./build/test.hex -target=itsybitsy-m0 ./examples/vl6 tinygo build -size short -o ./build/test.hex -target=microbit ./examples/waveshare-epd/epd2in13/main.go tinygo build -size short -o ./build/test.hex -target=microbit ./examples/waveshare-epd/epd2in13x/main.go tinygo build -size short -o ./build/test.hex -target=microbit ./examples/waveshare-epd/epd4in2/main.go -tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/wifinina/ntpclient/main.go -tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/wifinina/udpstation/main.go -tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/wifinina/tcpclient/main.go -tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/wifinina/webclient/main.go tinygo build -size short -o ./build/test.hex -target=circuitplay-express ./examples/ws2812 tinygo build -size short -o ./build/test.bin -target=m5stamp-c3 ./examples/ws2812 tinygo build -size short -o ./build/test.hex -target=feather-nrf52840 ./examples/is31fl3731/main.go @@ -115,9 +108,6 @@ tinygo build -size short -o ./build/test.hex -target=pico ./examples/qmi8658c/ma tinygo build -size short -o ./build/test.hex -target=feather-m0 ./examples/ina260/main.go tinygo build -size short -o ./build/test.hex -target=nucleo-l432kc ./examples/aht20/main.go tinygo build -size short -o ./build/test.hex -target=feather-m4 ./examples/sdcard/console/ -tinygo build -size short -o ./build/test.hex -target=wioterminal ./examples/rtl8720dn/webclient/ -tinygo build -size short -o ./build/test.hex -target=wioterminal ./examples/rtl8720dn/webserver/ -tinygo build -size short -o ./build/test.hex -target=wioterminal ./examples/rtl8720dn/mqttsub/ tinygo build -size short -o ./build/test.hex -target=feather-m4 ./examples/i2csoft/adt7410/ tinygo build -size short -o ./build/test.elf -target=wioterminal ./examples/axp192/m5stack-core2-blinky/ tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/xpt2046/main.go @@ -139,3 +129,17 @@ tinygo build -size short -o ./build/test.hex -target=microbit ./examples/ndir/ma tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/ndir/main_ndir.go tinygo build -size short -o ./build/test.uf2 -target=pico ./examples/mpu9150/main.go tinygo build -size short -o ./build/test.hex -target=macropad-rp2040 ./examples/sh1106/macropad_spi +# network examples (espat) +tinygo build -size short -o ./build/test.hex -target=challenger-rp2040 ./examples/net/ntpclient/ +# network examples (wifinina) +tinygo build -size short -o ./build/test.hex -target=pyportal ./examples/net/http-get/ +tinygo build -size short -o ./build/test.hex -target=arduino-nano33 ./examples/net/tcpclient/ +tinygo build -size short -o ./build/test.hex -target=nano-rp2040 ./examples/net/websocket/dial/ +tinygo build -size short -o ./build/test.hex -target=metro-m4-airlift ./examples/net/socket/ +tinygo build -size short -o ./build/test.hex -target=matrixportal-m4 ./examples/net/webstatic/ +tinygo build -size short -o ./build/test.hex -target=arduino-mkrwifi1010 ./examples/net/tlsclient/ +tinygo build -size short -o ./build/test.hex -target=nano-rp2040 ./examples/net/mqttclient/natiu/ +# network examples (rtl8720dn) +tinygo build -size short -o ./build/test.hex -target=wioterminal ./examples/net/webclient/ +tinygo build -size short -o ./build/test.hex -target=wioterminal ./examples/net/webserver/ +tinygo build -size short -o ./build/test.hex -target=wioterminal ./examples/net/mqttclient/paho/ diff --git a/tcpip/netdev.go b/tcpip/netdev.go deleted file mode 100644 index 92efead..0000000 --- a/tcpip/netdev.go +++ /dev/null @@ -1,52 +0,0 @@ -package tcpip - -import ( - "net" - "time" - - "tinygo.org/x/drivers/netdev" -) - -func (s *Stack) GetHostByName(name string) (net.IP, error) { - return net.IP{}, netdev.ErrNotSupported -} - -func (s *Stack) GetIPAddr() (net.IP, error) { - return net.IP{}, netdev.ErrNotSupported -} - -func (s *Stack) Socket(domain int, stype int, protocol int) (int, error) { - return -1, netdev.ErrNotSupported -} - -func (s *Stack) Bind(sockfd int, ip net.IP, port int) error { - return netdev.ErrNotSupported -} - -func (s *Stack) Connect(sockfd int, host string, ip net.IP, port int) error { - return netdev.ErrNotSupported -} - -func (s *Stack) Listen(sockfd int, backlog int) error { - return netdev.ErrNotSupported -} - -func (s *Stack) Accept(sockfd int, ip net.IP, port int) (int, error) { - return -1, netdev.ErrNotSupported -} - -func (s *Stack) Send(sockfd int, buf []byte, flags int, deadline time.Time) (int, error) { - return 0, netdev.ErrNotSupported -} - -func (s *Stack) Recv(sockfd int, buf []byte, flags int, deadline time.Time) (int, error) { - return 0, netdev.ErrNotSupported -} - -func (s *Stack) Close(sockfd int) error { - return netdev.ErrNotSupported -} - -func (s *Stack) SetSockOpt(sockfd int, level int, opt int, value interface{}) error { - return netdev.ErrNotSupported -} diff --git a/tcpip/stack.go b/tcpip/stack.go deleted file mode 100644 index bcabd6c..0000000 --- a/tcpip/stack.go +++ /dev/null @@ -1,20 +0,0 @@ -package tcpip - -import ( - "tinygo.org/x/drivers/netlink" -) - -type Stack struct { - link netlink.Netlinker -} - -func NewStack(link netlink.Netlinker) *Stack { - s := Stack{link: link} - s.link.RecvEthFunc(s.recvEth) - return &s -} - -func (s *Stack) recvEth(pkt []byte) error { - println("recvEth", len(pkt)) - return nil -} diff --git a/wifinina/commands.go b/wifinina/commands.go deleted file mode 100644 index c43c1dc..0000000 --- a/wifinina/commands.go +++ /dev/null @@ -1,67 +0,0 @@ -package wifinina - -type CommandType uint8 - -//go:generate stringer -type=CommandType -trimprefix=Cmd -const ( - CmdStart CommandType = 0xE0 - CmdEnd CommandType = 0xEE - CmdErr CommandType = 0xEF - - CmdSetNet CommandType = 0x10 - CmdSetPassphrase CommandType = 0x11 - CmdSetKey CommandType = 0x12 - CmdSetIPConfig CommandType = 0x14 - CmdSetDNSConfig CommandType = 0x15 - CmdSetHostname CommandType = 0x16 - CmdSetPowerMode CommandType = 0x17 - CmdSetAPNet CommandType = 0x18 - CmdSetAPPassphrase CommandType = 0x19 - CmdSetDebug CommandType = 0x1A - CmdGetTemperature CommandType = 0x1B - CmdGetReasonCode CommandType = 0x1F - // TEST_CMD = 0x13 - - CmdGetConnStatus CommandType = 0x20 - CmdGetIPAddr CommandType = 0x21 - CmdGetMACAddr CommandType = 0x22 - CmdGetCurrSSID CommandType = 0x23 - CmdGetCurrBSSID CommandType = 0x24 - CmdGetCurrRSSI CommandType = 0x25 - CmdGetCurrEncrType CommandType = 0x26 - CmdScanNetworks CommandType = 0x27 - CmdStartServerTCP CommandType = 0x28 - CmdGetStateTCP CommandType = 0x29 - CmdDataSentTCP CommandType = 0x2A - CmdAvailDataTCP CommandType = 0x2B - CmdGetDataTCP CommandType = 0x2C - CmdStartClientTCP CommandType = 0x2D - CmdStopClientTCP CommandType = 0x2E - CmdGetClientStateTCP CommandType = 0x2F - CmdDisconnect CommandType = 0x30 - CmdGetIdxRSSI CommandType = 0x32 - CmdGetIdxEncrType CommandType = 0x33 - CmdReqHostByName CommandType = 0x34 - CmdGetHostByName CommandType = 0x35 - CmdStartScanNetworks CommandType = 0x36 - CmdGetFwVersion CommandType = 0x37 - CmdSendDataUDP CommandType = 0x39 - CmdGetRemoteData CommandType = 0x3A - CmdGetTime CommandType = 0x3B - CmdGetIdxBSSID CommandType = 0x3C - CmdGetIdxChannel CommandType = 0x3D - CmdPing CommandType = 0x3E - CmdGetSocket CommandType = 0x3F - // GET_IDX_SSID_CMD = 0x31, - // GET_TEST_CMD = 0x38 - - // All command with DATA_FLAG 0x40 send a 16bit Len - CmdSendDataTCP CommandType = 0x44 - CmdGetDatabufTCP CommandType = 0x45 - CmdInsertDataBuf CommandType = 0x46 - - // regular format commands - CmdSetPinMode CommandType = 0x50 - CmdSetDigitalWrite CommandType = 0x51 - CmdSetAnalogWrite CommandType = 0x52 -) diff --git a/wifinina/commandtype_string.go b/wifinina/commandtype_string.go deleted file mode 100644 index 0986047..0000000 --- a/wifinina/commandtype_string.go +++ /dev/null @@ -1,120 +0,0 @@ -//go:build wifidebug - -// Code generated by "stringer -type=CommandType -trimprefix=Cmd"; DO NOT EDIT. - -package wifinina - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[CmdStart-224] - _ = x[CmdEnd-238] - _ = x[CmdErr-239] - _ = x[CmdSetNet-16] - _ = x[CmdSetPassphrase-17] - _ = x[CmdSetKey-18] - _ = x[CmdSetIPConfig-20] - _ = x[CmdSetDNSConfig-21] - _ = x[CmdSetHostname-22] - _ = x[CmdSetPowerMode-23] - _ = x[CmdSetAPNet-24] - _ = x[CmdSetAPPassphrase-25] - _ = x[CmdSetDebug-26] - _ = x[CmdGetTemperature-27] - _ = x[CmdGetReasonCode-31] - _ = x[CmdGetConnStatus-32] - _ = x[CmdGetIPAddr-33] - _ = x[CmdGetMACAddr-34] - _ = x[CmdGetCurrSSID-35] - _ = x[CmdGetCurrBSSID-36] - _ = x[CmdGetCurrRSSI-37] - _ = x[CmdGetCurrEncrType-38] - _ = x[CmdScanNetworks-39] - _ = x[CmdStartServerTCP-40] - _ = x[CmdGetStateTCP-41] - _ = x[CmdDataSentTCP-42] - _ = x[CmdAvailDataTCP-43] - _ = x[CmdGetDataTCP-44] - _ = x[CmdStartClientTCP-45] - _ = x[CmdStopClientTCP-46] - _ = x[CmdGetClientStateTCP-47] - _ = x[CmdDisconnect-48] - _ = x[CmdGetIdxRSSI-50] - _ = x[CmdGetIdxEncrType-51] - _ = x[CmdReqHostByName-52] - _ = x[CmdGetHostByName-53] - _ = x[CmdStartScanNetworks-54] - _ = x[CmdGetFwVersion-55] - _ = x[CmdSendDataUDP-57] - _ = x[CmdGetRemoteData-58] - _ = x[CmdGetTime-59] - _ = x[CmdGetIdxBSSID-60] - _ = x[CmdGetIdxChannel-61] - _ = x[CmdPing-62] - _ = x[CmdGetSocket-63] - _ = x[CmdSendDataTCP-68] - _ = x[CmdGetDatabufTCP-69] - _ = x[CmdInsertDataBuf-70] - _ = x[CmdSetPinMode-80] - _ = x[CmdSetDigitalWrite-81] - _ = x[CmdSetAnalogWrite-82] -} - -const ( - _CommandType_name_0 = "SetNetSetPassphraseSetKey" - _CommandType_name_1 = "SetIPConfigSetDNSConfigSetHostnameSetPowerModeSetAPNetSetAPPassphraseSetDebugGetTemperature" - _CommandType_name_2 = "GetReasonCodeGetConnStatusGetIPAddrGetMACAddrGetCurrSSIDGetCurrBSSIDGetCurrRSSIGetCurrEncrTypeScanNetworksStartServerTCPGetStateTCPDataSentTCPAvailDataTCPGetDataTCPStartClientTCPStopClientTCPGetClientStateTCPDisconnect" - _CommandType_name_3 = "GetIdxRSSIGetIdxEncrTypeReqHostByNameGetHostByNameStartScanNetworksGetFwVersion" - _CommandType_name_4 = "SendDataUDPGetRemoteDataGetTimeGetIdxBSSIDGetIdxChannelPingGetSocket" - _CommandType_name_5 = "SendDataTCPGetDatabufTCPInsertDataBuf" - _CommandType_name_6 = "SetPinModeSetDigitalWriteSetAnalogWrite" - _CommandType_name_7 = "Start" - _CommandType_name_8 = "EndErr" -) - -var ( - _CommandType_index_0 = [...]uint8{0, 6, 19, 25} - _CommandType_index_1 = [...]uint8{0, 11, 23, 34, 46, 54, 69, 77, 91} - _CommandType_index_2 = [...]uint8{0, 13, 26, 35, 45, 56, 68, 79, 94, 106, 120, 131, 142, 154, 164, 178, 191, 208, 218} - _CommandType_index_3 = [...]uint8{0, 10, 24, 37, 50, 67, 79} - _CommandType_index_4 = [...]uint8{0, 11, 24, 31, 42, 55, 59, 68} - _CommandType_index_5 = [...]uint8{0, 11, 24, 37} - _CommandType_index_6 = [...]uint8{0, 10, 25, 39} - _CommandType_index_8 = [...]uint8{0, 3, 6} -) - -func (i CommandType) String() string { - switch { - case 16 <= i && i <= 18: - i -= 16 - return _CommandType_name_0[_CommandType_index_0[i]:_CommandType_index_0[i+1]] - case 20 <= i && i <= 27: - i -= 20 - return _CommandType_name_1[_CommandType_index_1[i]:_CommandType_index_1[i+1]] - case 31 <= i && i <= 48: - i -= 31 - return _CommandType_name_2[_CommandType_index_2[i]:_CommandType_index_2[i+1]] - case 50 <= i && i <= 55: - i -= 50 - return _CommandType_name_3[_CommandType_index_3[i]:_CommandType_index_3[i+1]] - case 57 <= i && i <= 63: - i -= 57 - return _CommandType_name_4[_CommandType_index_4[i]:_CommandType_index_4[i+1]] - case 68 <= i && i <= 70: - i -= 68 - return _CommandType_name_5[_CommandType_index_5[i]:_CommandType_index_5[i+1]] - case 80 <= i && i <= 82: - i -= 80 - return _CommandType_name_6[_CommandType_index_6[i]:_CommandType_index_6[i+1]] - case i == 224: - return _CommandType_name_7 - case 238 <= i && i <= 239: - i -= 238 - return _CommandType_name_8[_CommandType_index_8[i]:_CommandType_index_8[i+1]] - default: - return "CommandType(" + strconv.FormatInt(int64(i), 10) + ")" - } -} diff --git a/wifinina/connectionstatus_string.go b/wifinina/connectionstatus_string.go deleted file mode 100644 index 7e7f513..0000000 --- a/wifinina/connectionstatus_string.go +++ /dev/null @@ -1,41 +0,0 @@ -//go:build wifidebug - -// Code generated by "stringer -type=ConnectionStatus -trimprefix=Status"; DO NOT EDIT. - -package wifinina - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[StatusNoShield-255] - _ = x[StatusIdle-0] - _ = x[StatusNoSSIDAvail-1] - _ = x[StatusScanCompleted-2] - _ = x[StatusConnected-3] - _ = x[StatusConnectFailed-4] - _ = x[StatusConnectionLost-5] - _ = x[StatusDisconnected-6] -} - -const ( - _ConnectionStatus_name_0 = "IdleNoSSIDAvailScanCompletedConnectedConnectFailedConnectionLostDisconnected" - _ConnectionStatus_name_1 = "NoShield" -) - -var ( - _ConnectionStatus_index_0 = [...]uint8{0, 4, 15, 28, 37, 50, 64, 76} -) - -func (i ConnectionStatus) String() string { - switch { - case i <= 6: - return _ConnectionStatus_name_0[_ConnectionStatus_index_0[i]:_ConnectionStatus_index_0[i+1]] - case i == 255: - return _ConnectionStatus_name_1 - default: - return "ConnectionStatus(" + strconv.FormatInt(int64(i), 10) + ")" - } -} diff --git a/wifinina/encryptiontype_string.go b/wifinina/encryptiontype_string.go deleted file mode 100644 index bb3e733..0000000 --- a/wifinina/encryptiontype_string.go +++ /dev/null @@ -1,44 +0,0 @@ -//go:build wifidebug - -// Code generated by "stringer -type=EncryptionType -trimprefix=EncType"; DO NOT EDIT. - -package wifinina - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[EncTypeTKIP-2] - _ = x[EncTypeCCMP-4] - _ = x[EncTypeWEP-5] - _ = x[EncTypeNone-7] - _ = x[EncTypeAuto-8] -} - -const ( - _EncryptionType_name_0 = "TKIP" - _EncryptionType_name_1 = "CCMPWEP" - _EncryptionType_name_2 = "NoneAuto" -) - -var ( - _EncryptionType_index_1 = [...]uint8{0, 4, 7} - _EncryptionType_index_2 = [...]uint8{0, 4, 8} -) - -func (i EncryptionType) String() string { - switch { - case i == 2: - return _EncryptionType_name_0 - case 4 <= i && i <= 5: - i -= 4 - return _EncryptionType_name_1[_EncryptionType_index_1[i]:_EncryptionType_index_1[i+1]] - case 7 <= i && i <= 8: - i -= 7 - return _EncryptionType_name_2[_EncryptionType_index_2[i]:_EncryptionType_index_2[i+1]] - default: - return "EncryptionType(" + strconv.FormatInt(int64(i), 10) + ")" - } -} diff --git a/wifinina/error_string.go b/wifinina/error_string.go deleted file mode 100644 index 51a0017..0000000 --- a/wifinina/error_string.go +++ /dev/null @@ -1,59 +0,0 @@ -// Code generated by "stringer -type=Error -trimprefix=Err"; DO NOT EDIT. - -package wifinina - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[ErrTimeoutChipReady-1] - _ = x[ErrTimeoutChipSelect-2] - _ = x[ErrCheckStartCmd-3] - _ = x[ErrWaitRsp-4] - _ = x[ErrUnexpectedLength-224] - _ = x[ErrNoParamsReturned-225] - _ = x[ErrIncorrectSentinel-226] - _ = x[ErrCmdErrorReceived-239] - _ = x[ErrNotImplemented-240] - _ = x[ErrUnknownHost-241] - _ = x[ErrSocketAlreadySet-242] - _ = x[ErrConnectionTimeout-243] - _ = x[ErrNoData-244] - _ = x[ErrDataNotWritten-245] - _ = x[ErrCheckDataError-246] - _ = x[ErrBufferTooSmall-247] - _ = x[ErrNoSocketAvail-255] -} - -const ( - _Error_name_0 = "TimeoutChipReadyTimeoutChipSelectCheckStartCmdWaitRsp" - _Error_name_1 = "UnexpectedLengthNoParamsReturnedIncorrectSentinel" - _Error_name_2 = "CmdErrorReceivedNotImplementedUnknownHostSocketAlreadySetConnectionTimeoutNoDataDataNotWrittenCheckDataErrorBufferTooSmall" - _Error_name_3 = "NoSocketAvail" -) - -var ( - _Error_index_0 = [...]uint8{0, 16, 33, 46, 53} - _Error_index_1 = [...]uint8{0, 16, 32, 49} - _Error_index_2 = [...]uint8{0, 16, 30, 41, 57, 74, 80, 94, 108, 122} -) - -func (i Error) String() string { - switch { - case 1 <= i && i <= 4: - i -= 1 - return _Error_name_0[_Error_index_0[i]:_Error_index_0[i+1]] - case 224 <= i && i <= 226: - i -= 224 - return _Error_name_1[_Error_index_1[i]:_Error_index_1[i+1]] - case 239 <= i && i <= 247: - i -= 239 - return _Error_name_2[_Error_index_2[i]:_Error_index_2[i+1]] - case i == 255: - return _Error_name_3 - default: - return "Error(" + strconv.FormatInt(int64(i), 10) + ")" - } -} diff --git a/wifinina/nodebug.go b/wifinina/nodebug.go deleted file mode 100644 index 78cd243..0000000 --- a/wifinina/nodebug.go +++ /dev/null @@ -1,5 +0,0 @@ -//go:build !wifidebug - -package wifinina - -var _debug = false diff --git a/wifinina/status.go b/wifinina/status.go deleted file mode 100644 index fc2e3bf..0000000 --- a/wifinina/status.go +++ /dev/null @@ -1,75 +0,0 @@ -package wifinina - -type ConnectionStatus uint8 - -//go:generate stringer -type=ConnectionStatus -trimprefix=Status -const ( - StatusNoShield ConnectionStatus = 255 - StatusIdle ConnectionStatus = 0 - StatusNoSSIDAvail ConnectionStatus = 1 - StatusScanCompleted ConnectionStatus = 2 - StatusConnected ConnectionStatus = 3 - StatusConnectFailed ConnectionStatus = 4 - StatusConnectionLost ConnectionStatus = 5 - StatusDisconnected ConnectionStatus = 6 -) - -// Default state value for Wifi state field -// #define NA_STATE -1 - -type EncryptionType uint8 - -//go:generate stringer -type=EncryptionType -trimprefix=EncType -const ( - EncTypeTKIP EncryptionType = 2 - EncTypeCCMP EncryptionType = 4 - EncTypeWEP EncryptionType = 5 - EncTypeNone EncryptionType = 7 - EncTypeAuto EncryptionType = 8 -) - -type TCPState uint8 - -//go:generate stringer -type=TCPState -trimprefix=TCPState -const ( - TCPStateClosed TCPState = 0 - TCPStateListen TCPState = 1 - TCPStateSynSent TCPState = 2 - TCPStateSynRcvd TCPState = 3 - TCPStateEstablished TCPState = 4 - TCPStateFinWait1 TCPState = 5 - TCPStateFinWait2 TCPState = 6 - TCPStateCloseWait TCPState = 7 - TCPStateClosing TCPState = 8 - TCPStateLastACK TCPState = 9 - TCPStateTimeWait TCPState = 10 -) - -type Error uint8 - -func (err Error) Error() string { - return "wifinina error: " + err.String() -} - -//go:generate stringer -type=Error -trimprefix=Err -const ( - ErrTimeoutChipReady Error = 0x01 - ErrTimeoutChipSelect Error = 0x02 - ErrCheckStartCmd Error = 0x03 - ErrWaitRsp Error = 0x04 - ErrUnexpectedLength Error = 0xE0 - ErrNoParamsReturned Error = 0xE1 - ErrIncorrectSentinel Error = 0xE2 - ErrCmdErrorReceived Error = 0xEF - ErrNotImplemented Error = 0xF0 - ErrUnknownHost Error = 0xF1 - ErrSocketAlreadySet Error = 0xF2 - ErrConnectionTimeout Error = 0xF3 - ErrNoData Error = 0xF4 - ErrDataNotWritten Error = 0xF5 - ErrCheckDataError Error = 0xF6 - ErrBufferTooSmall Error = 0xF7 - ErrNoSocketAvail Error = 0xFF - - NoSocketAvail uint8 = 0xFF -) diff --git a/wifinina/tcpstate_string.go b/wifinina/tcpstate_string.go deleted file mode 100644 index 52b6fc1..0000000 --- a/wifinina/tcpstate_string.go +++ /dev/null @@ -1,35 +0,0 @@ -//go:build wifidebug - -// Code generated by "stringer -type=TCPState -trimprefix=TCPState"; DO NOT EDIT. - -package wifinina - -import "strconv" - -func _() { - // An "invalid array index" compiler error signifies that the constant values have changed. - // Re-run the stringer command to generate them again. - var x [1]struct{} - _ = x[TCPStateClosed-0] - _ = x[TCPStateListen-1] - _ = x[TCPStateSynSent-2] - _ = x[TCPStateSynRcvd-3] - _ = x[TCPStateEstablished-4] - _ = x[TCPStateFinWait1-5] - _ = x[TCPStateFinWait2-6] - _ = x[TCPStateCloseWait-7] - _ = x[TCPStateClosing-8] - _ = x[TCPStateLastACK-9] - _ = x[TCPStateTimeWait-10] -} - -const _TCPState_name = "ClosedListenSynSentSynRcvdEstablishedFinWait1FinWait2CloseWaitClosingLastACKTimeWait" - -var _TCPState_index = [...]uint8{0, 6, 12, 19, 26, 37, 45, 53, 62, 69, 76, 84} - -func (i TCPState) String() string { - if i >= TCPState(len(_TCPState_index)-1) { - return "TCPState(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _TCPState_name[_TCPState_index[i]:_TCPState_index[i+1]] -} diff --git a/wifinina/wifinina.go b/wifinina/wifinina.go index 9132db1..efcc765 100644 --- a/wifinina/wifinina.go +++ b/wifinina/wifinina.go @@ -498,13 +498,6 @@ func (w *wifinina) NetNotify(cb func(netlink.Event)) { w.notifyCb = cb } -func (w *wifinina) SendEth(pkt []byte) error { - return netlink.ErrNotSupported -} - -func (w *wifinina) RecvEthFunc(cb func(pkt []byte) error) { -} - func (w *wifinina) GetHostByName(name string) (net.IP, error) { if debugging(debugNetdev) {