From ccee42ec7a24b89cdb221795c24639d5ac53fa83 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Mon, 15 Oct 2018 19:56:27 +0200 Subject: [PATCH] machine: add helpers for bit-banged driver support The returned pointer and value can be used to set or clear a specific pin. --- src/machine/machine_nrf.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/machine/machine_nrf.go b/src/machine/machine_nrf.go index f155da07c..627c70b05 100644 --- a/src/machine/machine_nrf.go +++ b/src/machine/machine_nrf.go @@ -34,6 +34,20 @@ func (p GPIO) Set(high bool) { } } +// Return the register and mask to enable a given GPIO pin. This can be used to +// implement bit-banged drivers. +func (p GPIO) PortMaskSet() (*uint32, uint32) { + port, pin := p.getPortPin() + return (*uint32)(&port.OUTSET), 1 << pin +} + +// Return the register and mask to disable a given port. This can be used to +// implement bit-banged drivers. +func (p GPIO) PortMaskClear() (*uint32, uint32) { + port, pin := p.getPortPin() + return (*uint32)(&port.OUTCLR), 1 << pin +} + // Get returns the current value of a GPIO pin. func (p GPIO) Get() bool { port, pin := p.getPortPin()