mirror of
https://github.com/tinygo-org/drivers.git
synced 2026-08-03 14:37:46 +00:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package rtl8720dn
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/binary"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
type httpHeader []byte
|
|
|
|
func (h httpHeader) ContentLength() int {
|
|
contentLength := -1
|
|
idx := bytes.Index(h, []byte("Content-Length: "))
|
|
if 0 <= idx {
|
|
_, err := fmt.Sscanf(string(h[idx+16:]), "%d", &contentLength)
|
|
if err != nil {
|
|
return -1
|
|
}
|
|
}
|
|
return contentLength
|
|
}
|
|
|
|
// TODO: IPAddress implementation should be moved under drivers/net
|
|
// The same implementation exists in wifinina.
|
|
type IPAddress []byte
|
|
|
|
func (addr IPAddress) String() string {
|
|
if len(addr) < 4 {
|
|
return ""
|
|
}
|
|
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) {
|
|
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 {
|
|
if len(addr) < 4 {
|
|
return 0
|
|
}
|
|
b := []byte(string(addr))
|
|
return binary.BigEndian.Uint32(b[0:4])
|
|
}
|