waveshare213v2: Move code waiting for idle state to error handler

Signed-off-by: Michael Hanselmann <public@hansmi.ch>
pull/38/head
Michael Hanselmann 4 years ago
parent f34f11aa5b
commit 1ade23a46c

@ -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

@ -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
}

Loading…
Cancel
Save