grim/gousb2snes

Update the package path for the new repository host
draft default tip
2020-04-27, Gary Kramlich
2bff12a54574
Update the package path for the new repository host
package sd2snes
import (
"encoding/binary"
"fmt"
"strings"
)
type Info struct {
version string
fwver string
features InfoFeature
rom string
}
type InfoFeature byte
const (
InfoFeatureDSPX InfoFeature = 1 << iota
InfoFeatureST0010
InfoFeatureSRTC
InfoFeatureMSU1
InfoFeature213F
InfoFeatureCmdUnlock
InfoFeatureUSB1
InfoFeatureDMA1
)
func (f InfoFeature) String() string {
r := []string{}
if f&InfoFeatureDSPX != 0 {
r = append(r, "FEAT_DSPX")
}
if f&InfoFeatureST0010 != 0 {
r = append(r, "FEAT_ST0010")
}
if f&InfoFeatureSRTC != 0 {
r = append(r, "FEAT_SRTC")
}
if f&InfoFeatureMSU1 != 0 {
r = append(r, "FEAT_MSU1")
}
if f&InfoFeature213F != 0 {
r = append(r, "FEAT_213F")
}
if f&InfoFeatureCmdUnlock != 0 {
r = append(r, "FEAT_CMD_UNLOCK")
}
if f&InfoFeatureUSB1 != 0 {
r = append(r, "FEAT_USB1")
}
if f&InfoFeatureDMA1 != 0 {
r = append(r, "FEAT_DMA1")
}
return strings.Join(r, "|")
}
func (i *Info) Identifier() (OpCode, Namespace, Flag) {
return OpCodeInfo, NamespaceSNES, FlagNone
}
func (i *Info) Process(data []byte) error {
fwver := binary.BigEndian.Uint32(data[256:])
i.fwver = fmt.Sprintf("%08x", fwver)
i.version = nullTerminated(data[260:])
i.features = InfoFeature(data[6])
i.rom = nullTerminated(data[16:])
return nil
}
func (i *Info) String() string {
return fmt.Sprintf(
"version: %s\nfwver: %s\nfeatures: %s\nrom: %s",
i.version,
i.fwver,
i.features,
i.rom,
)
}