package main import ( "flag" "os" "protomolecule/src/dust" "protomolecule/src/eros" "protomolecule/src/scanStuff" "time" projVars "protomolecule/src/vars" "github.com/rs/zerolog" "github.com/rs/zerolog/log" "tinygo.org/x/bluetooth" ) func init() { // initialize database engine eros.Awaken() // TODO: make this a commandline argument // assure the log directory exists var logDir string = "./.logs/" err := os.MkdirAll(logDir, 0755) if err != nil { panic(err.Error()) } // define log file itself using the current date and time Now := time.Now() date := Now.Format(time.RFC3339) logFileName := date + ".log" lf, err := os.OpenFile(logDir+logFileName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { panic(err.Error()) } // define pretty printer consoleWriter := zerolog.ConsoleWriter{Out: os.Stderr} // initialize simultaneous pretty printing and json logging multi := zerolog.MultiLevelWriter(consoleWriter, lf) log.Logger = zerolog.New(multi).With().Timestamp().Logger() // suppress debug messages unless -d is called zerolog.SetGlobalLevel(zerolog.InfoLevel) for _, arg := range os.Args { if arg == "-d" { zerolog.SetGlobalLevel(zerolog.DebugLevel) } } log.Debug().Msg("Logging initialized") } func main() { values := flag.Args() scanStuff.Scanners() log.Info().Strs("target", values).Msg("Searching") /* err := adapter.Enable() if err != nil { log.Fatal().Err(err).Msg("BLE stack unstable, could not enable") return } */ //var foundDevice bluetooth.ScanResult //turn the stuff on dust.Must("BLE stack", projVars.ScanAdapter.Enable()) log.Info().Msg("Scanning") err := projVars.ScanAdapter.Scan(func(adapter *bluetooth.Adapter, result bluetooth.ScanResult) { if result.Address.String() == *projVars.Target { log.Info().Str("address", result.Address.String()). Int16("RSSI", result.RSSI).Str("LocalName", result.LocalName()) } /* if err != nil { log.Error().Err(err).Msg("could not enable the stack", err.Error()) return } */ }) dust.Must("Scan", err) /* connectToStuff := func(addr bluetooth.Addresser, device *bluetooth.Device) { d, _ := adapter.Connect(addr, bluetooth.ConnectionParams{}, err == *device == d) color.Red("Trying a connection", addr) } */ }