95 lines
2.4 KiB
Go
95 lines
2.4 KiB
Go
package main
|
|
|
|
import (
|
|
"bladerunner/arrange"
|
|
"bladerunner/auxillary"
|
|
rf "github.com/erayarslan/go-bladerf"
|
|
"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()
|
|
arrange.Blueprint()
|
|
|
|
// 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()
|
|
|
|
}
|