diff --git a/examples/README.txt b/examples/README.txt index 790f71916..72568e563 100644 --- a/examples/README.txt +++ b/examples/README.txt @@ -87,36 +87,6 @@ examples/alarm CONFIG_EXAMPLES_ALARM_DEVPATH - RTC device path (/dev/rtc0) ONFIG_EXAMPLES_ALARM_SIGNO - Alarm signal -examples/archbuttons -^^^^^^^^^^^^^^^^^^^^ - - This is a simple configuration that may be used to test the board- - specific button interfaces. Configuration options: - - CONFIG_ARCH_BUTTONS - Must be defined for button support - CONFIG_EXAMPLES_BUTTONS_MIN - Lowest button number (MIN=0) - CONFIG_EXAMPLES_BUTTONS_MAX - Highest button number (MAX=7) - - CONFIG_ARCH_IRQBUTTONS - Must be defined for interrupting button support - CONFIG_EXAMPLES_IRQBUTTONS_MIN - Lowest interrupting button number (MIN=0) - CONFIG_EXAMPLES_IRQBUTTONS_MAX - Highest interrupting button number (MAX=7) - - Name strings for buttons: - - CONFIG_EXAMPLES_BUTTONS_NAME0, CONFIG_EXAMPLES_BUTTONS_NAME1, - CONFIG_EXAMPLES_BUTTONS_NAME2, CONFIG_EXAMPLES_BUTTONS_NAME3, - CONFIG_EXAMPLES_BUTTONS_NAME4, CONFIG_EXAMPLES_BUTTONS_NAME5, - CONFIG_EXAMPLES_BUTTONS_NAME6, CONFIG_EXAMPLES_BUTTONS_NAME7, - - Additional architecture-/board- specific configuration settings may also - be required. - - NOTE: This test exercises internal button driver interfaces. As such, it - relies on internal OS interfaces that are not normally available to a - user-space program. As a result, this example cannot be used if a - NuttX is built as a protected, supervisor kernel (CONFIG_BUILD_PROTECTED - or CONFIG_BUILD_KERNEL). - examples/bastest ^^^^^^^^^^^^^^^^ This directory contains a small program that will mount a ROMFS file system diff --git a/examples/archbuttons/.gitignore b/examples/archbuttons/.gitignore deleted file mode 100644 index 105259c49..000000000 --- a/examples/archbuttons/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -/Make.dep -/.context -/.depend -/.built -/*.asm -/*.rel -/*.lst -/*.sym -/*.adb -/*.lib -/*.src diff --git a/examples/archbuttons/Kconfig b/examples/archbuttons/Kconfig deleted file mode 100644 index 87aaa7463..000000000 --- a/examples/archbuttons/Kconfig +++ /dev/null @@ -1,64 +0,0 @@ -# -# For a description of the syntax of this configuration file, -# see the file kconfig-language.txt in the NuttX tools repository. -# - -config EXAMPLES_ARCHBUTTONS - bool "Arch Buttons example" - default n - depends on ARCH_BUTTONS && BUILD_FLAT - ---help--- - Enable the buttons example. May require ARCH_BUTTONS on some boards. - -if EXAMPLES_ARCHBUTTONS -config EXAMPLES_ARCHBUTTONS_MIN -int "Lowest Button Number" -default 0 - -config EXAMPLES_ARCHBUTTONS_MAX -int "Highest Button Number" -default 7 - -if ARCH_IRQBUTTONS -config EXAMPLES_IRQBUTTONS_MIN -int "Lowest Interrupting Button Number" -default 0 - -config EXAMPLES_IRQBUTTONS_MAX -int "Highest Interrupting Button Number" -default 7 - -config EXAMPLES_ARCHBUTTONS_NAME0 -string "Button 0 Name" -default "Button 0" - -config EXAMPLES_ARCHBUTTONS_NAME1 -string "Button 1 Name" -default "Button 1" - -config EXAMPLES_ARCHBUTTONS_NAME2 -string "Button 2 Name" -default "Button 2" - -config EXAMPLES_ARCHBUTTONS_NAME3 -string "Button 3 Name" -default "Button 3" - -config EXAMPLES_ARCHBUTTONS_NAME4 -string "Button 4 Name" -default "Button 4" - -config EXAMPLES_ARCHBUTTONS_NAME5 -string "Button 5 Name" -default "Button 5" - -config EXAMPLES_ARCHBUTTONS_NAME6 -string "Button 6 Name" -default "Button 6" - -config EXAMPLES_ARCHBUTTONS_NAME7 -string "Button 7 Name" -default "Button 7" - -endif -endif diff --git a/examples/archbuttons/Make.defs b/examples/archbuttons/Make.defs deleted file mode 100644 index 8e1847271..000000000 --- a/examples/archbuttons/Make.defs +++ /dev/null @@ -1,39 +0,0 @@ -############################################################################ -# apps/examples/archbuttons/Make.defs -# Adds selected applications to apps/ build -# -# Copyright (C) 2015 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt -# -# 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 NuttX 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 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. -# -############################################################################ - -ifeq ($(CONFIG_EXAMPLES_ARCHBUTTONS),y) -CONFIGURED_APPS += examples/archbuttons -endif diff --git a/examples/archbuttons/Makefile b/examples/archbuttons/Makefile deleted file mode 100644 index 670c0fcf0..000000000 --- a/examples/archbuttons/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -############################################################################ -# apps/examples/archbuttons/Makefile -# -# Copyright (C) 2011-2012 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt -# -# 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 NuttX 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 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. -# -############################################################################ - --include $(TOPDIR)/Make.defs - -# Hello, World! Example - -ASRCS = -CSRCS = -MAINSRC = archbuttons_main.c - -CONFIG_XYZ_PROGNAME ?= archbuttons$(EXEEXT) -PROGNAME = $(CONFIG_XYZ_PROGNAME) - -# Buttons built-in application info - -APPNAME = archbuttons -PRIORITY = SCHED_PRIORITY_DEFAULT -STACKSIZE = 2048 - -include $(APPDIR)/Application.mk diff --git a/examples/archbuttons/archbuttons_main.c b/examples/archbuttons/archbuttons_main.c deleted file mode 100644 index 3aa358873..000000000 --- a/examples/archbuttons/archbuttons_main.c +++ /dev/null @@ -1,501 +0,0 @@ -/**************************************************************************** - * examples/archbuttons/archbuttons_main.c - * - * Copyright (C) 2011, 2014, 2016 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * 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 NuttX 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 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. - * - ****************************************************************************/ - -/**************************************************************************** - * NOTE: This test exercises internal button driver interfaces. As such, it - * it relies on internal OS interfaces that are not normally available to a - * user-space program. As a result, this example cannot be used if a - * NuttX is built as a protected, supervisor kernel (CONFIG_BUILD_PROTECTED or - * CONFIG_BUILD_KERNEL). - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include -#include -#include -#include - -#include -#include - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ -/* Configuration ************************************************************/ - -#ifndef CONFIG_ARCH_BUTTONS -# error "CONFIG_ARCH_BUTTONS is not defined in the configuration" -#endif - -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME0 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME0 "BUTTON0" -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME1 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME1 "BUTTON1" -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME2 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME2 "BUTTON2" -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME3 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME3 "BUTTON3" -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME4 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME4 "BUTTON4" -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME5 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME5 "BUTTON5" -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME6 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME6 "BUTTON6" -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_NAME7 -# define CONFIG_EXAMPLES_ARCHBUTTONS_NAME7 "BUTTON7" -#endif - -#define BUTTON_MIN 0 -#define BUTTON_MAX 7 - -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_MIN -# define CONFIG_EXAMPLES_ARCHBUTTONS_MIN BUTTON_MIN -#endif -#ifndef CONFIG_EXAMPLES_ARCHBUTTONS_MAX -# define CONFIG_EXAMPLES_ARCHBUTTONS_MAX BUTTON_MAX -#endif - -#if CONFIG_EXAMPLES_ARCHBUTTONS_MIN > CONFIG_EXAMPLES_ARCHBUTTONS_MAX -# error "CONFIG_EXAMPLES_ARCHBUTTONS_MIN > CONFIG_EXAMPLES_ARCHBUTTONS_MAX" -#endif -#if CONFIG_EXAMPLES_ARCHBUTTONS_MAX > 7 -# error "CONFIG_EXAMPLES_ARCHBUTTONS_MAX > 7" -#endif - -#ifndef CONFIG_EXAMPLES_IRQBUTTONS_MIN -# define CONFIG_EXAMPLES_IRQBUTTONS_MIN CONFIG_EXAMPLES_ARCHBUTTONS_MIN -#endif -#ifndef CONFIG_EXAMPLES_IRQBUTTONS_MAX -# define CONFIG_EXAMPLES_IRQBUTTONS_MAX CONFIG_EXAMPLES_ARCHBUTTONS_MAX -#endif - -#if CONFIG_EXAMPLES_IRQBUTTONS_MIN > CONFIG_EXAMPLES_IRQBUTTONS_MAX -# error "CONFIG_EXAMPLES_IRQBUTTONS_MIN > CONFIG_EXAMPLES_IRQBUTTONS_MAX" -#endif -#if CONFIG_EXAMPLES_IRQBUTTONS_MAX > 7 -# error "CONFIG_EXAMPLES_IRQBUTTONS_MAX > 7" -#endif - -#ifndef MIN -# define MIN(a,b) (a < b ? a : b) -#endif -#ifndef MAX -# define MAX(a,b) (a > b ? a : b) -#endif - -#define MIN_BUTTON MIN(CONFIG_EXAMPLES_ARCHBUTTONS_MIN, CONFIG_EXAMPLES_IRQBUTTONS_MIN) -#define MAX_BUTTON MAX(CONFIG_EXAMPLES_ARCHBUTTONS_MAX, CONFIG_EXAMPLES_IRQBUTTONS_MAX) - -#define NUM_BUTTONS (MAX_BUTTON - MIN_BUTTON + 1) -#define BUTTON_INDEX(b) ((b)-MIN_BUTTON) - -/**************************************************************************** - * Private Types - ****************************************************************************/ - -struct button_info_s -{ - FAR const char *name; /* Name for the button */ -#ifdef CONFIG_ARCH_IRQBUTTONS - xcpt_t handler; /* Button interrupt handler */ -#endif -}; - -/**************************************************************************** - * Private Function Prototypes - ****************************************************************************/ - -static void show_buttons(uint8_t oldset, uint8_t newset); - -#ifdef CONFIG_ARCH_IRQBUTTONS -static void button_handler(int id, int irq); - -#if MIN_BUTTON < 1 -static int button0_handler(int irq, FAR void *context); -#endif -#if MIN_BUTTON < 2 && MAX_BUTTON > 0 -static int button1_handler(int irq, FAR void *context); -#endif -#if MIN_BUTTON < 3 && MAX_BUTTON > 1 -static int button2_handler(int irq, FAR void *context); -#endif -#if MIN_BUTTON < 4 && MAX_BUTTON > 2 -static int button3_handler(int irq, FAR void *context); -#endif -#if MIN_BUTTON < 5 && MAX_BUTTON > 3 -static int button4_handler(int irq, FAR void *context); -#endif -#if MIN_BUTTON < 6 && MAX_BUTTON > 4 -static int button5_handler(int irq, FAR void *context); -#endif -#if MIN_BUTTON < 7 && MAX_BUTTON > 5 -static int button6_handler(int irq, FAR void *context); -#endif -#if MAX_BUTTON > 6 -static int button7_handler(int irq, FAR void *context); -#endif -#endif /* CONFIG_ARCH_IRQBUTTONS */ - -/**************************************************************************** - * Private Data - ****************************************************************************/ - -/* Button Names */ - -static const struct button_info_s g_buttoninfo[NUM_BUTTONS] = -{ -#if MIN_BUTTON < 1 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME0, -#ifdef CONFIG_ARCH_IRQBUTTONS - button0_handler -#endif - }, -#endif -#if MIN_BUTTON < 2 && MAX_BUTTON > 0 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME1, -#ifdef CONFIG_ARCH_IRQBUTTONS - button1_handler -#endif - }, -#endif -#if MIN_BUTTON < 3 && MAX_BUTTON > 1 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME2, -#ifdef CONFIG_ARCH_IRQBUTTONS - button2_handler -#endif - }, -#endif -#if MIN_BUTTON < 4 && MAX_BUTTON > 2 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME3, -#ifdef CONFIG_ARCH_IRQBUTTONS - button3_handler -#endif - }, -#endif -#if MIN_BUTTON < 5 && MAX_BUTTON > 3 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME4, -#ifdef CONFIG_ARCH_IRQBUTTONS - button4_handler -#endif - }, -#endif -#if MIN_BUTTON < 6 && MAX_BUTTON > 4 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME5, -#ifdef CONFIG_ARCH_IRQBUTTONS - button5_handler -#endif - }, -#endif -#if MIN_BUTTON < 7 && MAX_BUTTON > 5 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME6, -#ifdef CONFIG_ARCH_IRQBUTTONS - button6_handler -#endif - }, -#endif -#if MAX_BUTTON > 6 - { - CONFIG_EXAMPLES_ARCHBUTTONS_NAME7, -#ifdef CONFIG_ARCH_IRQBUTTONS - button7_handler -#endif - } -#endif -}; - -/* Last sampled button set */ - -static uint8_t g_oldset; - -/* Used to limit the number of button presses */ - -#ifdef CONFIG_NSH_BUILTIN_APPS -static volatile long g_nbuttons; -#endif - -/**************************************************************************** - * Private Functions - ****************************************************************************/ - -static void show_buttons(uint8_t oldset, uint8_t newset) -{ - uint8_t chgset = oldset ^ newset; - int i; - - /* Update the count of button presses shown */ - -#ifdef CONFIG_NSH_BUILTIN_APPS - if ((chgset & newset) != 0) - { - g_nbuttons++; - } -#endif - - /* Show each button state change */ - - for (i = MIN_BUTTON; i <= MAX_BUTTON; i++) - { - uint8_t mask = (1 << i); - if ((chgset & mask) != 0) - { - FAR const char *state; - - /* Get the button state */ - - if ((newset & mask) != 0) - { - state = "depressed"; - } - else - { - state = "released"; - } - - syslog(LOG_INFO, " %s %s\n", - g_buttoninfo[BUTTON_INDEX(i)].name, state); - } - } -} - -#ifdef CONFIG_ARCH_IRQBUTTONS -static void button_handler(int id, int irq) -{ - uint8_t newset = board_buttons(); - - syslog(LOG_INFO, "IRQ:%d Button %d:%s SET:%02x:\n", - irq, id, g_buttoninfo[BUTTON_INDEX(id)].name, newset); - - show_buttons(g_oldset, newset); - g_oldset = newset; -} - -#if MIN_BUTTON < 1 -static int button0_handler(int irq, FAR void *context) -{ - button_handler(0, irq); - return OK; -} -#endif - -#if MIN_BUTTON < 2 && MAX_BUTTON > 0 -static int button1_handler(int irq, FAR void *context) -{ - button_handler(1, irq); - return OK; -} -#endif - -#if MIN_BUTTON < 3 && MAX_BUTTON > 1 -static int button2_handler(int irq, FAR void *context) -{ - button_handler(2, irq); - return OK; -} -#endif - -#if MIN_BUTTON < 4 && MAX_BUTTON > 2 -static int button3_handler(int irq, FAR void *context) -{ - button_handler(3, irq); - return OK; -} -#endif - -#if MIN_BUTTON < 5 && MAX_BUTTON > 3 -static int button4_handler(int irq, FAR void *context) -{ - button_handler(4, irq); - return OK; -} -#endif - -#if MIN_BUTTON < 6 && MAX_BUTTON > 4 -static int button5_handler(int irq, FAR void *context) -{ - button_handler(5, irq); - return OK; -} -#endif - -#if MIN_BUTTON < 7 && MAX_BUTTON > 5 -static int button6_handler(int irq, FAR void *context) -{ - button_handler(6, irq); - return OK; -} -#endif - -#if MAX_BUTTON > 6 -static int button7_handler(int irq, FAR void *context) -{ - button_handler(7, irq); - return OK; -} -#endif -#endif /* CONFIG_ARCH_IRQBUTTONS */ - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * archbuttons_main - ****************************************************************************/ - -#ifdef CONFIG_BUILD_KERNEL -int main(int argc, FAR char *argv[]) -#else -int archbuttons_main(int argc, char *argv[]) -#endif -{ - uint8_t newset; - irqstate_t flags; -#ifdef CONFIG_ARCH_IRQBUTTONS - int i; -#endif - - /* If this example is configured as an NX add-on, then limit the number of - * samples that we collect before returning. Otherwise, we never return - */ - -#ifdef CONFIG_NSH_BUILTIN_APPS - long maxbuttons = 1; - g_nbuttons = 0; - if (argc > 1) - { - maxbuttons = strtol(argv[1], NULL, 10); - } - - syslog(LOG_INFO, "maxbuttons: %d\n", maxbuttons); -#endif - - /* Initialize the button GPIOs */ - - board_button_initialize(); - - /* Register to receive button interrupts */ - -#ifdef CONFIG_ARCH_IRQBUTTONS - for (i = CONFIG_EXAMPLES_IRQBUTTONS_MIN; i <= CONFIG_EXAMPLES_IRQBUTTONS_MAX; i++) - { - xcpt_t oldhandler = board_button_irq(i, g_buttoninfo[BUTTON_INDEX(i)].handler); - - syslog(LOG_INFO, "Attached handler at %p to button %d [%s], oldhandler:%p\n", - g_buttoninfo[BUTTON_INDEX(i)].handler, i, - g_buttoninfo[BUTTON_INDEX(i)].name, oldhandler); - - /* Some hardware multiplexes different GPIO button sources to the same - * physical interrupt. If we register multiple such multiplexed button - * interrupts, then the second registration will overwrite the first. In - * this case, the first button interrupts may be aliased to the second - * interrupt handler (or worse, could be lost). - */ - - if (oldhandler != NULL) - { - syslog(LOG_INFO, "WARNING: oldhandler:%p is not NULL! " - "Button events may be lost or aliased!\n", - oldhandler); - } - } -#endif - - /* Poll button state */ - - g_oldset = board_buttons(); -#ifdef CONFIG_NSH_BUILTIN_APPS - while (g_nbuttons < maxbuttons) -#else - for (;;) -#endif - { - /* Get the set of pressed and release buttons. */ - - newset = board_buttons(); - - /* Any changes from the last sample? */ - - if (newset != g_oldset) - { - /* Disable interrupts so that output here will not collide with - * output from an interrupt handler. - */ - - flags = enter_critical_section(); - - syslog(LOG_INFO, "POLL SET:%02x:\n", newset); - show_buttons(g_oldset, newset); - g_oldset = newset; - leave_critical_section(flags); - } - - /* Sleep a little... but not long. This will determine how fast we - * poll for button changes. - */ - - usleep(150000); /* 150 Milliseconds */ - } - - /* Un-register button handlers */ - -#ifdef CONFIG_ARCH_IRQBUTTONS - for (i = CONFIG_EXAMPLES_IRQBUTTONS_MIN; i <= CONFIG_EXAMPLES_IRQBUTTONS_MAX; i++) - { - (void)board_button_irq(i, NULL); - } -#endif - - return 0; -} -