From 377af1bf7a6ae859e9783fd4641b1dfbf406eb82 Mon Sep 17 00:00:00 2001 From: wgroeneveld Date: Sat, 18 Mar 2023 09:16:38 +0100 Subject: [PATCH] Fix printing multiple files at once --- main.go | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/main.go b/main.go index 56fb191..e40f791 100644 --- a/main.go +++ b/main.go @@ -50,6 +50,10 @@ func main() { } must("Enable Bluetooth stack", adapter.Enable()) + pyfilterloc := dumpFilter(*dir) + defer func() { + os.RemoveAll(pyfilterloc) + }() log.Println("Scanning for Bluetooth devices...") ch := make(chan bluetooth.ScanResult, 1) @@ -67,7 +71,13 @@ func main() { select { case device := <-ch: log.Println("Found device: ", device.Address.String(), device.RSSI, device.LocalName()) - tryToPrint(device, *dir, files) + for _, file := range files { + filePath := filepath.Join(*dir, file.Name()) + if isPossibleToPrint(filePath) { + log.Printf("Trying to print %s\n", filePath) + tryToPrint(device, pyfilterloc, filePath) + } + } case <-time.After(10 * time.Second): log.Fatal("Timeout trying to locate Phomemo M02, is it on? Quitting.") os.Exit(1) @@ -88,14 +98,14 @@ func copyFileToFolder(file string, folder string) error { return nil } -func tryToPrint(phomemoAddress bluetooth.ScanResult, dir string, files []os.DirEntry) { +func tryToPrint(phomemoAddress bluetooth.ScanResult, pyfilterloc string, filePath string) { var phomemo *bluetooth.Device phomemo, err := adapter.Connect(phomemoAddress.Address, bluetooth.ConnectionParams{}) - must("failed to connect to adapter", err) - log.Println("connected to ", phomemoAddress.Address.String()) + must("Failed to connect to adapter", err) + log.Println("Connected to ", phomemoAddress.Address.String()) defer func() { if err := phomemo.Disconnect(); err != nil { - log.Println(err) + log.Fatalf("Cannot disconnect: %w\n", err) } else { log.Println("disconnected") } @@ -109,25 +119,11 @@ func tryToPrint(phomemoAddress bluetooth.ScanResult, dir string, files []os.DirE log.Println("- service", srvc.UUID().String()) chars, err := srvc.DiscoverCharacteristics(nil) - must("failed to discover characteristics of service", err) - - pyfilterloc := filepath.Join(dir, "phomemo-filter.py") - dumpFilter(pyfilterloc) - defer func() { - os.RemoveAll(pyfilterloc) - }() + must("Failed to discover characteristics of service", err) // 3 characteristics to discover 0000ff01, 0000ff02, and 0000ff03 - for _, file := range files { - filePath := dir + "/" + file.Name() - if isPossibleToPrint(filePath) { - writeData(pyfilterloc, filePath, chars[1]) // 0000ff02-... - readResult(chars[0]) // 0000ff01-... - os.RemoveAll(filePath) - } - } - - log.Println("-- DONE") + writeData(pyfilterloc, filePath, chars[1]) // 0000ff02-... + readResult(chars[0]) // 0000ff01-... } func isPossibleToPrint(filename string) bool { @@ -137,9 +133,11 @@ func isPossibleToPrint(filename string) bool { strings.HasSuffix(filename, ".PNG") } -func dumpFilter(filename string) { +func dumpFilter(dir string) string { + filename := filepath.Join(dir, "phomemo-filter.py") err := os.WriteFile(filename, phomemofilter.Pyfilter, 0666) must("unable to dump python filter for use", err) + return filename } func writeData(pyfilterloc string, path string, char bluetooth.DeviceCharacteristic) {