diff --git a/examples/dev/leds/Makefile b/examples/dev/leds/Makefile new file mode 100644 index 000000000..7c5f5f592 --- /dev/null +++ b/examples/dev/leds/Makefile @@ -0,0 +1,8 @@ +CONTIKI_PROJECT = leds-example +CONTIKI = ../../.. + +MODULES_REL += $(TARGET) + +all: $(CONTIKI_PROJECT) + +include $(CONTIKI)/Makefile.include diff --git a/examples/dev/leds/README.md b/examples/dev/leds/README.md new file mode 100644 index 000000000..05bdc20ba --- /dev/null +++ b/examples/dev/leds/README.md @@ -0,0 +1,15 @@ +# LED HAL Example +This example demonstrates and tests the functionality of the LED HAL. You can +use it to: + +* Understand the logic of the LED HAL. +* Test your implementation of arch-specific LED HAL components if you are +developing a new port. + +This example assumes a device with at least 1 LED. + +# Supported devices +This example is expected to work off-the-shelf on the following boards: + +* All CC13xx/CC26xx devices +* All CC2538 devices diff --git a/examples/dev/leds/leds-example.c b/examples/dev/leds/leds-example.c new file mode 100644 index 000000000..9015e75ce --- /dev/null +++ b/examples/dev/leds/leds-example.c @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2017, George Oikonomou - http://www.spd.gr + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * 3. Neither the name of the copyright holder nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 HOLDER 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. + */ +/*---------------------------------------------------------------------------*/ +#include "contiki.h" +#include "dev/leds.h" +#include "sys/etimer.h" + +#include +/*---------------------------------------------------------------------------*/ +static struct etimer et; +static uint8_t counter; +/*---------------------------------------------------------------------------*/ +PROCESS(leds_example, "LED HAL Example"); +AUTOSTART_PROCESSES(&leds_example); +/*---------------------------------------------------------------------------*/ +PROCESS_THREAD(leds_example, ev, data) +{ + PROCESS_BEGIN(); + + counter = 0; + + etimer_set(&et, CLOCK_SECOND); + + while(1) { + + PROCESS_YIELD(); + + if(ev == PROCESS_EVENT_TIMER && data == &et) { + if((counter & 7) == 0) { + leds_set(LEDS_ALL); + } else if((counter & 7) == 1) { + leds_off(LEDS_ALL); + } else if((counter & 7) == 2) { + leds_on(LEDS_ALL); + } else if((counter & 7) == 3) { + leds_toggle(LEDS_ALL); + } else if((counter & 7) == 4) { + leds_single_on(LEDS_LED1); + } else if((counter & 7) == 5) { + leds_single_off(LEDS_LED1); + } else if((counter & 7) == 6) { + leds_single_toggle(LEDS_LED1); + } else if((counter & 7) == 7) { + leds_toggle(LEDS_ALL); + } + + counter++; + etimer_set(&et, CLOCK_SECOND); + } + } + + PROCESS_END(); +} +/*---------------------------------------------------------------------------*/ diff --git a/tests/02-compile-arm-ports-01/Makefile b/tests/02-compile-arm-ports-01/Makefile index 83ab79b13..a43637d91 100644 --- a/tests/02-compile-arm-ports-01/Makefile +++ b/tests/02-compile-arm-ports-01/Makefile @@ -21,6 +21,13 @@ dev/gpio-hal/srf06-cc26xx:BOARD=sensortag/cc2650 \ dev/gpio-hal/srf06-cc26xx:BOARD=launchpad/cc1310 \ dev/gpio-hal/srf06-cc26xx:BOARD=launchpad/cc1350 \ dev/gpio-hal/srf06-cc26xx:BOARD=launchpad/cc2650 \ +dev/leds/srf06-cc26xx:BOARD=srf06/cc13xx \ +dev/leds/srf06-cc26xx:BOARD=srf06/cc26xx \ +dev/leds/srf06-cc26xx:BOARD=sensortag/cc1350 \ +dev/leds/srf06-cc26xx:BOARD=sensortag/cc2650 \ +dev/leds/srf06-cc26xx:BOARD=launchpad/cc1310 \ +dev/leds/srf06-cc26xx:BOARD=launchpad/cc1350 \ +dev/leds/srf06-cc26xx:BOARD=launchpad/cc2650 \ 6tisch/etsi-plugtest-2017/srf06-cc26xx:BOARD=launchpad/cc2650 \ storage/cfs-coffee/cc2538dk \ sensniff/cc2538dk \ @@ -30,6 +37,7 @@ slip-radio/cc2538dk \ ipso-objects/cc2538dk \ multicast/cc2538dk \ dev/gpio-hal/cc2538dk \ +dev/leds/cc2538dk \ platform-specific/cc2538-common/cc2538dk \ platform-specific/cc2538-common/mqtt-demo/cc2538dk \ platform-specific/cc2538-common/crypto/cc2538dk \ diff --git a/tests/03-compile-arm-ports-02/Makefile b/tests/03-compile-arm-ports-02/Makefile index 6aca008db..fd015e088 100644 --- a/tests/03-compile-arm-ports-02/Makefile +++ b/tests/03-compile-arm-ports-02/Makefile @@ -39,11 +39,17 @@ dev/gpio-hal/zoul:BOARD=remote-revb \ dev/gpio-hal/zoul:BOARD=firefly-reva \ dev/gpio-hal/zoul:BOARD=firefly \ dev/gpio-hal/zoul:BOARD=orion \ +dev/leds/zoul:BOARD=remote-reva \ +dev/leds/zoul:BOARD=remote-revb \ +dev/leds/zoul:BOARD=firefly-reva \ +dev/leds/zoul:BOARD=firefly \ +dev/leds/zoul:BOARD=orion \ storage/cfs-coffee/openmote-cc2538 \ sensniff/openmote-cc2538 \ hello-world/openmote-cc2538 \ rpl-udp/openmote-cc2538 \ dev/gpio-hal/openmote-cc2538 \ +dev/leds/openmote-cc2538 \ rpl-border-router/openmote-cc2538 TOOLS=