izapple2/fujinet/protocol.go

40 lines
875 B
Go

package fujinet
import (
"net/url"
"strings"
)
type Protocol interface {
Open(urlParsed *url.URL)
Close()
ReadAll() ([]uint8, ErrorCode)
Write(data []uint8) error
}
type ErrorCode uint8
const (
// See fujinet-platformio/lib/network-protocol/status_error_codes.h
NoError = ErrorCode(0)
NetworkErrorEndOfFile = ErrorCode(136)
NetworkErrorGeneral = ErrorCode(144)
NetworkErrorNotImplemented = ErrorCode(146)
NetworkErrorInvalidDeviceSpec = ErrorCode(165)
// New
NetworkErrorJsonParseError = ErrorCode(250)
)
func InstantiateProtocol(urlParsed *url.URL, method uint8) (Protocol, ErrorCode) {
scheme := strings.ToUpper(urlParsed.Scheme)
switch scheme {
case "HTTP":
return newProtocolHttp(method), NoError
case "HTTPS":
return newProtocolHttp(method), NoError
default:
return nil, NetworkErrorGeneral
}
}