From c8716f4d576bc50b3aab3cbb938bc11cb8d77910 Mon Sep 17 00:00:00 2001 From: Jim Paris Date: Wed, 25 Jun 2014 20:16:09 -0400 Subject: [PATCH] Add platform LED driver --- .../Makefile.ev-aducrf101mkxz | 1 + platform/ev-aducrf101mkxz/contiki-main.c | 2 + platform/ev-aducrf101mkxz/leds-arch.c | 79 +++++++++++++++++++ platform/ev-aducrf101mkxz/platform-conf.h | 8 +- 4 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 platform/ev-aducrf101mkxz/leds-arch.c diff --git a/platform/ev-aducrf101mkxz/Makefile.ev-aducrf101mkxz b/platform/ev-aducrf101mkxz/Makefile.ev-aducrf101mkxz index f713573e5..261f5fe51 100644 --- a/platform/ev-aducrf101mkxz/Makefile.ev-aducrf101mkxz +++ b/platform/ev-aducrf101mkxz/Makefile.ev-aducrf101mkxz @@ -42,6 +42,7 @@ CONTIKI_TARGET_SOURCEFILES += $(ARCH) CONTIKI_TARGET_SOURCEFILES += contiki-main.c CONTIKI_TARGET_SOURCEFILES += slip.c CONTIKI_TARGET_SOURCEFILES += button-sensor.c +CONTIKI_TARGET_SOURCEFILES += leds-arch.c CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES) diff --git a/platform/ev-aducrf101mkxz/contiki-main.c b/platform/ev-aducrf101mkxz/contiki-main.c index 18571826c..944e2d278 100644 --- a/platform/ev-aducrf101mkxz/contiki-main.c +++ b/platform/ev-aducrf101mkxz/contiki-main.c @@ -48,6 +48,7 @@ #include "net/ip/uip.h" #include "dev/button-sensor.h" +#include "dev/leds.h" #if WITH_UIP6 #include "net/ipv6/uip-ds6.h" @@ -111,6 +112,7 @@ int main(int argc, char **argv) { watchdog_init(); + leds_init(); uart_init(115200); clock_init(); diff --git a/platform/ev-aducrf101mkxz/leds-arch.c b/platform/ev-aducrf101mkxz/leds-arch.c new file mode 100644 index 000000000..2a3f5a9c4 --- /dev/null +++ b/platform/ev-aducrf101mkxz/leds-arch.c @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2014, Analog Devices, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the + * disclaimer below) provided that the following conditions are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * - Neither the name of Analog Devices, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE + * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \author Jim Paris + */ + +#include "contiki.h" +#include "dev/leds.h" +#include "platform-conf.h" +#include "aducrf101-contiki.h" + +/* e.g. pADI_GP4 */ +#define GPIO CC_CONCAT(pADI_GP, LED_GPIO) + +/*---------------------------------------------------------------------------*/ +void +leds_arch_init(void) +{ + /* Set LED pin as a GPIO output */ + GPIO->GPOEN |= (1UL << LED_PIN); + leds_arch_set(0); +} +/*---------------------------------------------------------------------------*/ +unsigned char +leds_arch_get(void) +{ + if(GPIO->GPOUT & (1UL << LED_PIN)) { + return 0; + } else { + return 1; + } +} +/*---------------------------------------------------------------------------*/ +void +leds_arch_set(unsigned char leds) +{ + if(leds & 1) { + GPIO->GPCLR = (1UL << LED_PIN); + } else { + GPIO->GPSET = (1UL << LED_PIN); + } +} +/*---------------------------------------------------------------------------*/ + +/** + * @} + * @} + */ diff --git a/platform/ev-aducrf101mkxz/platform-conf.h b/platform/ev-aducrf101mkxz/platform-conf.h index ca5164878..6842aaa5a 100644 --- a/platform/ev-aducrf101mkxz/platform-conf.h +++ b/platform/ev-aducrf101mkxz/platform-conf.h @@ -35,8 +35,14 @@ * \author Jim Paris */ -#define LED1 pADI_GP4, BIT2 +#ifndef __ADUCRF101_PLATFORM_CONF_H__ +#define __ADUCRF101_PLATFORM_CONF_H__ + +#define LED_GPIO 4 +#define LED_PIN 2 #define BUTTON_GPIO 0 #define BUTTON_PIN 6 #define BUTTON_INT 2 + +#endif