unicornpaint

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 042cfafc7dc2abac8f6ddb111a948aa1d9784811
parent 34f1a11454fc38a77338569f466df879fd1792f7
Author: Martin Ashby <martin@martin-laptop.lan>
Date:   Mon, 21 May 2018 10:16:53 +0100

Added mainloop

Diffstat:
Municorn/FakeUnicorn.go | 16++++++++++++++++
Municorn/RealUnicorn.go | 15+++++++++++----
Municorn/Unicorn.go | 3+++
3 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/unicorn/FakeUnicorn.go b/unicorn/FakeUnicorn.go @@ -96,3 +96,19 @@ func (f *FakeUnicorn) Show() { func (f *FakeUnicorn) Off() { f.Close() } + +// MainLoop ... +// Handle UI events so OS doesn't think we're frozen +func (f *FakeUnicorn) MainLoop() { + running := true + for running { + for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() { + switch event.(type) { + case *sdl.QuitEvent: + println("Quit") + running = false + break + } + } + } +} diff --git a/unicorn/RealUnicorn.go b/unicorn/RealUnicorn.go @@ -3,10 +3,9 @@ package unicorn import ( - //"golang.org/x/exp/io/spi" - "log" - "github.com/ecc1/spi" + "log" + "os" ) type RealUnicorn struct { @@ -50,7 +49,6 @@ func (u *RealUnicorn) Show() { } } // Write to the device - //err := u.device.Tx(write, nil) err := u.device.Transfer(write) if err != nil { log.Printf("Error writing to SPI device %v", err) @@ -64,3 +62,12 @@ func (u *RealUnicorn) Off() { func (u *RealUnicorn) Close() error { return u.device.Close() } + +// MainLoop ... +// Do nothing until SIGTERM, then close the SPI library +func MainLoop() { + c := make(chan os.Signal, 2) + signal.Notify(c, os.Interrupt, syscall.SIGTERM) + <- c + Close() +} diff --git a/unicorn/Unicorn.go b/unicorn/Unicorn.go @@ -21,6 +21,9 @@ type Unicorn interface { // Turns off the LEDs Off() + + // Unicorn needs to be in charge of the main thread + MainLoop() } // GetUnicorn ...