diff --git a/sensor/us020/.us020.go.swp b/sensor/us020/.us020.go.swp new file mode 100644 index 0000000..33b4ca8 Binary files /dev/null and b/sensor/us020/.us020.go.swp differ diff --git a/sensor/watersensor/watersensor.go b/sensor/watersensor/watersensor.go index ec94b4b..5fd0efe 100644 --- a/sensor/watersensor/watersensor.go +++ b/sensor/watersensor/watersensor.go @@ -1,3 +1,4 @@ +// Package watersensor allows interfacing with the water sensor package watersensor import ( @@ -8,43 +9,48 @@ import ( type watersensor struct { waterPinNumber int - waterPin rpio.Pin - initialized bool - mu *sync.RWMutex - debug bool + waterPin rpio.Pin + + initialized bool + mu *sync.RWMutex + + debug bool } +// WaterSensor implements access to a water sensor type WaterSensor interface { + // IsWet determines if there is water present on the sensor IsWet() (b bool,err error) } +// New creates a new WaterSensor interface func New(pinNumber int) WaterSensor { return &watersensor{waterPinNumber: pinNumber, mu: new(sync.RWMutex)} } func (d *watersensor) Setup() (err error) { d.mu.RLock() - if d.initialized { - d.mu.RUnlock() - return - } + if d.initialized { + d.mu.RUnlock() + return + } d.mu.RUnlock() - d.mu.Lock() - defer d.mu.Unlock() + d.mu.Lock() + defer d.mu.Unlock() + + if err = rpio.Open(); err != nil { + return + } - if err = rpio.Open(); err != nil { - return - } d.waterPin = rpio.Pin(d.waterPinNumber) + d.waterPin.Input() + d.initialized = true - d.waterPin.Input() - - d.initialized = true - - return nil + return nil } +// IsWet determines if there is water present on the sensor func (d *watersensor) IsWet() (b bool, err error) { if err = d.Setup(); err != nil { return @@ -54,6 +60,7 @@ func (d *watersensor) IsWet() (b bool, err error) { log.Print("Getting reading") } + // Read the pin value of the sensor if d.waterPin.Read() == rpio.High { b=true } else {