waveshare213v2: Move code waiting for idle state to error handler

Signed-off-by: Michael Hanselmann <public@hansmi.ch>
pull/39/head
Michael Hanselmann 4 years ago committed by M-A
parent b25f6410ea
commit abc5f2f9c2

@ -4,7 +4,11 @@
package waveshare2in13v2 package waveshare2in13v2
import "periph.io/x/conn/v3/gpio" import (
"time"
"periph.io/x/conn/v3/gpio"
)
// errorHandler is a wrapper for error management. // errorHandler is a wrapper for error management.
type errorHandler struct { type errorHandler struct {
@ -40,6 +44,12 @@ func (eh *errorHandler) csOut(l gpio.Level) {
eh.err = eh.d.cs.Out(l) 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) { func (eh *errorHandler) sendCommand(cmd byte) {
if eh.err != nil { if eh.err != nil {
return return

@ -162,9 +162,9 @@ func (d *Dev) initFull() error {
eh := errorHandler{d: *d} eh := errorHandler{d: *d}
// Software Reset // Software Reset
d.waitUntilIdle() eh.waitUntilIdle()
eh.sendCommand(swReset) eh.sendCommand(swReset)
d.waitUntilIdle() eh.waitUntilIdle()
// Set analog block control // Set analog block control
eh.sendCommand(setAnalogBlockControl) eh.sendCommand(setAnalogBlockControl)
@ -207,7 +207,7 @@ func (d *Dev) initFull() error {
eh.sendCommand(writeLutRegister) eh.sendCommand(writeLutRegister)
eh.sendData(d.opts.FullUpdate[:70]) eh.sendData(d.opts.FullUpdate[:70])
d.waitUntilIdle() eh.waitUntilIdle()
return eh.err return eh.err
} }
@ -219,7 +219,7 @@ func (d *Dev) initPartial() error {
eh.sendCommand(writeVcomRegister) eh.sendCommand(writeVcomRegister)
eh.sendData([]byte{0x26}) eh.sendData([]byte{0x26})
d.waitUntilIdle() eh.waitUntilIdle()
eh.sendCommand(writeLutRegister) eh.sendCommand(writeLutRegister)
eh.sendData(d.opts.PartialUpdate[:70]) eh.sendData(d.opts.PartialUpdate[:70])
@ -232,7 +232,7 @@ func (d *Dev) initPartial() error {
eh.sendCommand(masterActivation) eh.sendCommand(masterActivation)
d.waitUntilIdle() eh.waitUntilIdle()
// Border Waveform // Border Waveform
eh.sendCommand(borderWaveformControl) eh.sendCommand(borderWaveformControl)
@ -364,7 +364,7 @@ func (d *Dev) turnOnDisplay() error {
eh.sendData([]byte{0xC7}) eh.sendData([]byte{0xC7})
eh.sendCommand(masterActivation) eh.sendCommand(masterActivation)
d.waitUntilIdle() eh.waitUntilIdle()
return eh.err return eh.err
} }
@ -383,12 +383,6 @@ func (d *Dev) reset() error {
return eh.err 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 { func (d *Dev) setMemoryArea(area image.Rectangle) error {
eh := errorHandler{d: *d} eh := errorHandler{d: *d}
@ -427,7 +421,7 @@ func (d *Dev) setMemoryArea(area image.Rectangle) error {
byte(area.Min.Y / 0xFF), byte(area.Min.Y / 0xFF),
}) })
d.waitUntilIdle() eh.waitUntilIdle()
return eh.err return eh.err
} }

Loading…
Cancel
Save