From bbf0b36a91f8e23c7a01df97aa053a2a0f690088 Mon Sep 17 00:00:00 2001 From: Warren Fernandes Date: Wed, 26 Oct 2016 23:20:43 -0600 Subject: [PATCH] Adds support for Grove Magnetic Switch Sensor - http://wiki.seeed.cc/Grove-Magnetic_Switch/ Signed-off-by: Warren Fernandes --- drivers/gpio/README.md | 1 + drivers/gpio/grove_drivers.go | 17 +++++++++++++++++ drivers/gpio/grove_drivers_test.go | 1 + 3 files changed, 19 insertions(+) diff --git a/drivers/gpio/README.md b/drivers/gpio/README.md index c9e9186c..6ce94c6a 100644 --- a/drivers/gpio/README.md +++ b/drivers/gpio/README.md @@ -26,6 +26,7 @@ Gobot has a extensible system for connecting to hardware devices. The following - Grove Rotary Dial - Grove Relay - Grove Temperature Sensor + - Grove Magnetic Switch Sensor - LED - Makey Button - Motor diff --git a/drivers/gpio/grove_drivers.go b/drivers/gpio/grove_drivers.go index adc317e8..94c2d2c9 100644 --- a/drivers/gpio/grove_drivers.go +++ b/drivers/gpio/grove_drivers.go @@ -174,3 +174,20 @@ func NewGroveTouchDriver(a DigitalReader, pin string, v ...time.Duration) *Grove ButtonDriver: NewButtonDriver(a, pin, v...), } } + +// GroveMagneticSwitchDriver represent a magnetic +// switch sensor with a Grove connector +type GroveMagneticSwitchDriver struct { + *ButtonDriver +} + +// NewGroveMagneticSwitchDriver returns a new GroveMagneticSwitchDriver with a polling interval of +// 10 Milliseconds given a DigitalReader, name and pin. +// +// Optionally accepts: +// time.Duration: Interval at which the ButtonDriver is polled for new information +func NewGroveMagneticSwitchDriver(a DigitalReader, pin string, v ...time.Duration) *GroveMagneticSwitchDriver { + return &GroveMagneticSwitchDriver{ + ButtonDriver: NewButtonDriver(a, pin, v...), + } +} diff --git a/drivers/gpio/grove_drivers_test.go b/drivers/gpio/grove_drivers_test.go index bc7ad3b4..18dee558 100644 --- a/drivers/gpio/grove_drivers_test.go +++ b/drivers/gpio/grove_drivers_test.go @@ -13,3 +13,4 @@ var _ gobot.Driver = (*GrovePiezoVibrationSensorDriver)(nil) var _ gobot.Driver = (*GroveLedDriver)(nil) var _ gobot.Driver = (*GroveRotaryDriver)(nil) var _ gobot.Driver = (*GroveRelayDriver)(nil) +var _ gobot.Driver = (*GroveMagneticSwitchDriver)(nil)