From abc5f2f9c24346193669aa0ef50e4f5442653f27 Mon Sep 17 00:00:00 2001 From: Michael Hanselmann Date: Mon, 13 Dec 2021 21:55:30 +0100 Subject: [PATCH] waveshare213v2: Move code waiting for idle state to error handler Signed-off-by: Michael Hanselmann --- waveshare2in13v2/errorhandler.go | 12 +++++++++++- waveshare2in13v2/waveshare213v2.go | 20 +++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/waveshare2in13v2/errorhandler.go b/waveshare2in13v2/errorhandler.go index 8225444..8f0f88e 100644 --- a/waveshare2in13v2/errorhandler.go +++ b/waveshare2in13v2/errorhandler.go @@ -4,7 +4,11 @@ package waveshare2in13v2 -import "periph.io/x/conn/v3/gpio" +import ( + "time" + + "periph.io/x/conn/v3/gpio" +) // errorHandler is a wrapper for error management. type errorHandler struct { @@ -40,6 +44,12 @@ func (eh *errorHandler) csOut(l gpio.Level) { eh.err = eh.d.cs.Out(l) } +func (eh *errorHandler) waitUntilIdle() { + for eh.d.busy.Read() == gpio.High { + time.Sleep(100 * time.Millisecond) + } +} + func (eh *errorHandler) sendCommand(cmd byte) { if eh.err != nil { return diff --git a/waveshare2in13v2/waveshare213v2.go b/waveshare2in13v2/waveshare213v2.go index 6643ff1..39fe37c 100644 --- a/waveshare2in13v2/waveshare213v2.go +++ b/waveshare2in13v2/waveshare213v2.go @@ -162,9 +162,9 @@ func (d *Dev) initFull() error { eh := errorHandler{d: *d} // Software Reset - d.waitUntilIdle() + eh.waitUntilIdle() eh.sendCommand(swReset) - d.waitUntilIdle() + eh.waitUntilIdle() // Set analog block control eh.sendCommand(setAnalogBlockControl) @@ -207,7 +207,7 @@ func (d *Dev) initFull() error { eh.sendCommand(writeLutRegister) eh.sendData(d.opts.FullUpdate[:70]) - d.waitUntilIdle() + eh.waitUntilIdle() return eh.err } @@ -219,7 +219,7 @@ func (d *Dev) initPartial() error { eh.sendCommand(writeVcomRegister) eh.sendData([]byte{0x26}) - d.waitUntilIdle() + eh.waitUntilIdle() eh.sendCommand(writeLutRegister) eh.sendData(d.opts.PartialUpdate[:70]) @@ -232,7 +232,7 @@ func (d *Dev) initPartial() error { eh.sendCommand(masterActivation) - d.waitUntilIdle() + eh.waitUntilIdle() // Border Waveform eh.sendCommand(borderWaveformControl) @@ -364,7 +364,7 @@ func (d *Dev) turnOnDisplay() error { eh.sendData([]byte{0xC7}) eh.sendCommand(masterActivation) - d.waitUntilIdle() + eh.waitUntilIdle() return eh.err } @@ -383,12 +383,6 @@ func (d *Dev) reset() error { return eh.err } -func (d *Dev) waitUntilIdle() { - for d.busy.Read() == gpio.High { - time.Sleep(100 * time.Millisecond) - } -} - func (d *Dev) setMemoryArea(area image.Rectangle) error { eh := errorHandler{d: *d} @@ -427,7 +421,7 @@ func (d *Dev) setMemoryArea(area image.Rectangle) error { byte(area.Min.Y / 0xFF), }) - d.waitUntilIdle() + eh.waitUntilIdle() return eh.err }