From e9d5fc03efe783ada0aec558aaa69c077f7419e1 Mon Sep 17 00:00:00 2001 From: Kashyap Kopparam Date: Mon, 23 Dec 2013 16:48:00 +0530 Subject: [PATCH] Water sensor Packaged --- sensor/us020/.us020.go.swp | Bin 0 -> 12288 bytes sensor/watersensor/watersensor.go | 43 +++++++++++++++++------------- 2 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 sensor/us020/.us020.go.swp diff --git a/sensor/us020/.us020.go.swp b/sensor/us020/.us020.go.swp new file mode 100644 index 0000000000000000000000000000000000000000..33b4ca8e0e0db216fa4ff19647247d1950392457 GIT binary patch literal 12288 zcmeI2ONbmr7{_a4P)AKRMiV?%#zcD7P0#G?W(^z1*Je!?cQ?yqWAGr_(_J&uY3E>1WzI!ym(RYU)A&62{FNofg1Q_=I^J4L@|loV#Alsv}U^^EUx-qDV*YXvOA9aV#0VL;$oVV%BAdIyCH@Q znj1y|qrep?u!&5TCv;)np5H-l*?Qy(=9-~K0i%FXz$jo8FbWt2i~>dhqrla!fQ&}S z)7Zp@_C{Lm?~!%i?Mw4z6fg=H1&jhl0i%FXz$jo8FbWt2i~>dhqrg?Dfa4MJ?nXl1 zycW*m|NlFG|9?12$XRd(yai5yli)eX1T~Ej_;A`*|_!OK5uYp&A1j}F%EPyRw6pVli z*Aen9_y&9gUI8zGlb`@B@CV|07MuZZ0~O~tfcY2&i~>f1|FHrmNG@hFjX5DX&rhVo zT}CUk9tcNHPg!0X<8?E^?Inkcgt>xyiB%}jBAqB@A38=Y&rTx7yu%{p9v+noBv&lb zStoGQz>$o~CZk>BH78*n6(QACRnP3hJ{+>(S1ea>jg!bqPtv>VEp zj^#X7OB*mua^3xO_qilm@Bo{uLgd)fo2RWN<9+L@U0jCy3!-%??|W7*!+kaQBK~`} zjQvJ~#Y#P_XJLz3xB|u^D@uce?Pr0rhWi6!m9%OwHhO?@hU8+@p)1w-0|(}+RL{$H z*zcQKi^Y(+k&U>BLkMXnkCoOKjU+}|BDEu{uutFEQK1}hJWlEo-lDFrYeHtJr*hv7P&L{ZnmsI+&Fz0z|W>98(I4y6+PK&45qMCW;SYj7w$)D?>~L=)=eY_GUn$S#y`xT^M^_9ytzL)~5alLxWM47Ba7&-iv-P)kLso7{aFd512I;{#I6 zP=+k()_tbW43*uK{DYKpI z#LxjPhlN!75V;mHh=J^+S*L(hDk`0xqdHW7V?tBXy|nZEzxE`(eioyyq*=7??;{6xp0Kz`>gc1d!qYZZKN+xyND~e<_h%?@&;EMg4fdPX~Qy^nP0q z1PguA(i8H1Z>}fki=6qZI8(USet%u$Nv?m)#ounv8crSo$g9QF92IKyjng|%{7{!P kmW&*C)q&Gmf0b>^{Wqu+;MYT_k1M4JS+5i9m literal 0 HcmV?d00001 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 {