inky: Add more error checking (#394)

pull/1/head
John Maguire 7 years ago committed by M-A
parent e82464a0d0
commit 53592c599b

@ -186,7 +186,7 @@ func (d *Dev) Draw(dstRect image.Rectangle, src image.Image, srcPtrs image.Point
return d.update(borderColor[d.border], bufA, bufB) return d.update(borderColor[d.border], bufA, bufB)
} }
func (d *Dev) update(border byte, black []byte, red []byte) error { func (d *Dev) update(border byte, black []byte, red []byte) (err error) {
if err := d.reset(); err != nil { if err := d.reset(); err != nil {
return err return err
} }
@ -269,8 +269,14 @@ func (d *Dev) update(border byte, black []byte, red []byte) error {
} }
} }
d.busy.In(gpio.PullUp, gpio.FallingEdge) if err := d.busy.In(gpio.PullUp, gpio.FallingEdge); err != nil {
defer d.busy.In(gpio.PullUp, gpio.NoEdge) return err
}
defer func() {
if err2 := d.busy.In(gpio.PullUp, gpio.NoEdge); err2 != nil {
err = err2
}
}()
if err := d.sendCommand(0x20, nil); err != nil { if err := d.sendCommand(0x20, nil); err != nil {
return err return err
} }
@ -280,7 +286,7 @@ func (d *Dev) update(border byte, black []byte, red []byte) error {
if err := d.sendCommand(0x10, []byte{0x01}); err != nil { // Enter deep sleep. if err := d.sendCommand(0x10, []byte{0x01}); err != nil { // Enter deep sleep.
return err return err
} }
return nil return
} }
func (d *Dev) reset() (err error) { func (d *Dev) reset() (err error) {
@ -309,7 +315,9 @@ func (d *Dev) reset() (err error) {
} }
func (d *Dev) sendCommand(command byte, data []byte) error { func (d *Dev) sendCommand(command byte, data []byte) error {
d.dc.Out(gpio.Low) if err := d.dc.Out(gpio.Low); err != nil {
return err
}
if err := d.c.Tx([]byte{command}, nil); err != nil { if err := d.c.Tx([]byte{command}, nil); err != nil {
return fmt.Errorf("failed to send command %x to inky: %v", command, err) return fmt.Errorf("failed to send command %x to inky: %v", command, err)
} }

Loading…
Cancel
Save