bladerunner/main.go

94 lines
2.3 KiB
Go

package main
import (
"bladerunner/arrange"
"bladerunner/auxillary"
rf "git.tcp.direct/kayos/libbladerunner"
"github.com/rs/zerolog"
"strconv"
"strings"
)
var log zerolog.Logger
var devlog zerolog.Logger
// TODO:
//// optional bitcask database initialization
//// fix default config file writing
func init() {
// style points
aux.Banner()
// configuration engine
arrange.Blueprint()
// initialize logger
log = aux.LogInit()
// initialize configuration file/engine
zerolog.SetGlobalLevel(zerolog.InfoLevel)
if arrange.Debug {
zerolog.SetGlobalLevel(zerolog.DebugLevel)
}
log.Info().Msg("Initialization complete")
}
func getBlade() {
log.Info().Msg("Attempting to access bladerf device...")
// after much tomfooling around i found that apparently without calling anything else this will just somehow magically open the first bladerf device it finds
dev, err := rf.Open()
if err != nil {
log.Fatal().Err(err).Msg("DEVICE_ACCESS_FAILURE")
}
info, err := rf.GetDeviceInfo(dev)
if err != nil {
log.Fatal().Err(err).Msg("DEVICE_INFO_FAILURE")
}
// define sublogger specific to our device
devlog = log.With().
Interface("usb_bus", info.UsbBus).
Interface("usb_addr", info.UsbAddr).
Interface("instance", info.Instance).
Logger()
devlog.Debug().Msg("Connected, retrieving firmware and FPGA information...")
firmware, err := rf.GetFirmwareVersion(dev)
if err != nil {
devlog.Fatal().Err(err).Msg("FIRMWARE_ENUMERATION_FAILURE")
}
firmware_str := strings.Split(rf.PrintVersion(firmware), " ")[0]
fpgasrc, err := rf.GetFpgaSource(dev)
if err != nil {
devlog.Fatal().Err(err).Msg("FPGA_SRC_ENUMERATION_FAILURE")
}
fpgasize, err := rf.GetFpgaSize(dev)
if err != nil {
devlog.Fatal().Err(err).Msg("FPGA_SIZE_ENUMERATION_FAILURE")
}
println()
label := "[" + strconv.FormatUint(uint64(info.Instance), 10) + "]"
log.Info().Str("DEVICE_PRODUCT", info.Product).Msg(label)
log.Info().Str("DEVICE_SERIAL", info.Serial).Msg(label)
log.Info().Str("DEVICE_MANUFACTURER", info.Manufacturer).Msg(label)
log.Info().Str("DEVICE_FIRMWARE", firmware_str).Msg(label)
log.Debug().Str("DEVICE_BACKEND", rf.BackendString(info.Backend)).Msg(label)
log.Debug().Interface("DEVICE_SPEED", rf.GetDeviceSpeed(dev)).Msg(label)
log.Debug().Interface("DEVICE_FPGA_SRC", fpgasrc).Interface("DEVICE_FPGA_SIZE", fpgasize).Msg(label)
}
func main() {
getBlade()
}