Fix LED control logic
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@2773 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
0de5b52564
commit
d0bf8e8fb3
@ -13,7 +13,7 @@ Contents
|
|||||||
IDEs
|
IDEs
|
||||||
NuttX buildroot Toolchain
|
NuttX buildroot Toolchain
|
||||||
USB Device Controller Functions
|
USB Device Controller Functions
|
||||||
OLED
|
LEDs
|
||||||
Nucleus 2G Configuration Options
|
Nucleus 2G Configuration Options
|
||||||
Configurations
|
Configurations
|
||||||
|
|
||||||
@ -208,6 +208,57 @@ NuttX buildroot Toolchain
|
|||||||
|
|
||||||
NOTE: This is an OABI toolchain.
|
NOTE: This is an OABI toolchain.
|
||||||
|
|
||||||
|
LEDs
|
||||||
|
^^^^
|
||||||
|
|
||||||
|
If CONFIG_ARCH_LEDS is defined, then support for the Nucleus-2G LEDs will be
|
||||||
|
included in the build. See:
|
||||||
|
|
||||||
|
- configs/nucleus2g/include/board.h - Defines LED constants, types and
|
||||||
|
prototypes the LED interface functions.
|
||||||
|
|
||||||
|
- configs/nucleus2g/src/nucleus2g_internal.h - GPIO settings for the LEDs.
|
||||||
|
|
||||||
|
- configs/nucleus2g/src/up_leds.c - LED control logic.
|
||||||
|
|
||||||
|
The Nucleus2G has 3 LEDs... two on the Babel CAN board and a "heartbeat" LED."
|
||||||
|
The LEDs on the Babel CAN board are capabl of OFF/GREEN/RED/AMBER status.
|
||||||
|
In normal usage, the two LEDs on the Babel CAN board would show CAN status, but if
|
||||||
|
CONFIG_ARCH_LEDS is defined, these LEDs will be controlled as follows for NuttX
|
||||||
|
debug functionality (where NC means "No Change").
|
||||||
|
|
||||||
|
During the boot phases. LED1 and LED2 will show boot status.
|
||||||
|
|
||||||
|
/* LED1 LED2 HEARTBEAT */
|
||||||
|
#define LED_STARTED 0 /* OFF OFF OFF */
|
||||||
|
#define LED_HEAPALLOCATE 1 /* GREEN OFF OFF */
|
||||||
|
#define LED_IRQSENABLED 2 /* OFF GREEN OFF */
|
||||||
|
#define LED_STACKCREATED 3 /* OFF OFF OFF */
|
||||||
|
|
||||||
|
#define LED_INIRQ 4 /* NC NC ON (momentary) */
|
||||||
|
#define LED_SIGNAL 5 /* NC NC ON (momentary) */
|
||||||
|
#define LED_ASSERTION 6 /* NC NC ON (momentary) */
|
||||||
|
#define LED_PANIC 7 /* NC NC ON (1Hz flashing) */
|
||||||
|
|
||||||
|
After the system is booted, this logic will no longer use LEDs 1 and 2. They
|
||||||
|
are then available for use the application software using lpc17_led1() and
|
||||||
|
lpc17_led2():
|
||||||
|
|
||||||
|
enum lpc17_ledstate_e
|
||||||
|
{
|
||||||
|
LPC17_LEDSTATE_OFF = 0,
|
||||||
|
LPC17_LEDSTATE_GREEN = 1,
|
||||||
|
LPC17_LEDSTATE_RED = 2,
|
||||||
|
LPC17_LEDSTATE_AMBER = (LPC17_LEDSTATE_GREEN|LPC17_LEDSTATE_RED),
|
||||||
|
};
|
||||||
|
|
||||||
|
EXTERN void lpc17_led1(enum lpc17_ledstate_e state);
|
||||||
|
EXTERN void lpc17_led2(enum lpc17_ledstate_e state);
|
||||||
|
|
||||||
|
The heartbeat LED is illuminated during all interrupt and signal procressing.
|
||||||
|
Normally, it will glow dimly to inicate that the LPC17xx is taking interrupts.
|
||||||
|
On an assertion PANIC, it will flash at 1Hz.
|
||||||
|
|
||||||
Nucleus 2G Configuration Options
|
Nucleus 2G Configuration Options
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
@ -128,16 +128,23 @@
|
|||||||
* CONFIG_ARCH_LEDS is defined, these LEDs will be controlled as follows for NuttX
|
* CONFIG_ARCH_LEDS is defined, these LEDs will be controlled as follows for NuttX
|
||||||
* debug functionality (where NC means "No Change").
|
* debug functionality (where NC means "No Change").
|
||||||
*
|
*
|
||||||
|
* During the boot phases. LED1 and LED2 will show boot status.
|
||||||
|
*/
|
||||||
/* LED1 LED2 HEARTBEAT */
|
/* LED1 LED2 HEARTBEAT */
|
||||||
#define LED_STARTED 0 /* OFF OFF OFF */
|
#define LED_STARTED 0 /* OFF OFF OFF */
|
||||||
#define LED_HEAPALLOCATE 1 /* GREEN OFF OFF */
|
#define LED_HEAPALLOCATE 1 /* GREEN OFF OFF */
|
||||||
#define LED_IRQSENABLED 2 /* OFF GREEN OFF */
|
#define LED_IRQSENABLED 2 /* OFF GREEN OFF */
|
||||||
#define LED_STACKCREATED 3 /* GREEN GREEN OFF */
|
#define LED_STACKCREATED 3 /* OFF OFF OFF */
|
||||||
|
|
||||||
#define LED_INIRQ 4 /* NC NC ON */
|
/* After the system is booted, this logic will no longer use LEDs 1 and 2. They
|
||||||
#define LED_SIGNAL 5 /* NC RED NC */
|
* are available for use the application software using lpc17_led1() and lpc17_led2()
|
||||||
#define LED_ASSERTION 6 /* RED NC NC */
|
* (prototyped below)
|
||||||
#define LED_PANIC 7 /* RED RED NC (1Hz flashing) */
|
*/
|
||||||
|
/* LED1 LED2 HEARTBEAT */
|
||||||
|
#define LED_INIRQ 4 /* NC NC ON (momentary) */
|
||||||
|
#define LED_SIGNAL 5 /* NC NC ON (momentary) */
|
||||||
|
#define LED_ASSERTION 6 /* NC NC ON (momentary) */
|
||||||
|
#define LED_PANIC 7 /* NC NC ON (1Hz flashing) */
|
||||||
|
|
||||||
/* Alternate pin selections *********************************************************/
|
/* Alternate pin selections *********************************************************/
|
||||||
/* UART1 -- Not connected */
|
/* UART1 -- Not connected */
|
||||||
@ -175,10 +182,23 @@
|
|||||||
#define GPIO_SSP1_SCK GPIO_SSP1_SCK_1
|
#define GPIO_SSP1_SCK GPIO_SSP1_SCK_1
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Public Data
|
* Public Types
|
||||||
************************************************************************************/
|
************************************************************************************/
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
#ifdef CONFIG_ARCH_LEDS
|
||||||
|
enum lpc17_ledstate_e
|
||||||
|
{
|
||||||
|
LPC17_LEDSTATE_OFF = 0,
|
||||||
|
LPC17_LEDSTATE_GREEN = 1,
|
||||||
|
LPC17_LEDSTATE_RED = 2,
|
||||||
|
LPC17_LEDSTATE_AMBER = (LPC17_LEDSTATE_GREEN|LPC17_LEDSTATE_RED),
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Public Data
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
#undef EXTERN
|
#undef EXTERN
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
@ -203,6 +223,19 @@ extern "C" {
|
|||||||
|
|
||||||
EXTERN void lpc17_boardinitialize(void);
|
EXTERN void lpc17_boardinitialize(void);
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Name: lpc17_led1 and 2
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Once the system has booted, these functions can be used to control LEDs 1 and 2
|
||||||
|
*
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_LEDS
|
||||||
|
EXTERN void lpc17_led1(enum lpc17_ledstate_e state);
|
||||||
|
EXTERN void lpc17_led2(enum lpc17_ledstate_e state);
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef EXTERN
|
#undef EXTERN
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
|
@ -113,12 +113,12 @@
|
|||||||
#define NUCLEUS2G_232_ENABLE (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT2 | GPIO_PIN5)
|
#define NUCLEUS2G_232_ENABLE (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT2 | GPIO_PIN5)
|
||||||
#define NUCLEUS2G_232_POWERSAVE (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN5)
|
#define NUCLEUS2G_232_POWERSAVE (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN5)
|
||||||
#define NUCLEUS2G_232_VALID (GPIO_INPUT | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN5)
|
#define NUCLEUS2G_232_VALID (GPIO_INPUT | GPIO_PULLUP | GPIO_PORT2 | GPIO_PIN5)
|
||||||
#define NUCLEUS2G_HEARTBEAT (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN11)
|
#define NUCLEUS2G_HEARTBEAT (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT2 | GPIO_PIN11)
|
||||||
#define NUCLEUS2G_EXTRA_LED (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN12)
|
#define NUCLEUS2G_EXTRA_LED (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN12)
|
||||||
#define NUCLEUS2G_5V_ENABLE (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT2 | GPIO_PIN13)
|
#define NUCLEUS2G_5V_ENABLE (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT2 | GPIO_PIN13)
|
||||||
#define NUCLEUS2G_5V_DISABLE (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN13)
|
#define NUCLEUS2G_5V_DISABLE (GPIO_OUTPUT | GPIO_VALUE_ZERO | GPIO_PORT2 | GPIO_PIN13)
|
||||||
|
|
||||||
#define NUCLEUS2G_MMCSD_CS (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT0 | GPIO_PIN16)
|
#define NUCLEUS2G_MMCSD_CS (GPIO_OUTPUT | GPIO_VALUE_ONE | GPIO_PORT0 | GPIO_PIN16)
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Public Types
|
* Public Types
|
||||||
|
@ -60,17 +60,6 @@
|
|||||||
* Definitions
|
* Definitions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#define LED_OFF 0
|
|
||||||
#define LED_ON 1
|
|
||||||
#define LED_GREEN 2
|
|
||||||
#define LED_PLUSGREEN 3
|
|
||||||
#define LED_MINUSGREEN 4
|
|
||||||
#define LED_RED 5
|
|
||||||
#define LED_PLUSRED 6
|
|
||||||
#define LED_MINUSRED 7
|
|
||||||
#define LED_NC 8
|
|
||||||
#define LED_PREV 9
|
|
||||||
|
|
||||||
/* Enables debug output from this file (needs CONFIG_DEBUG with
|
/* Enables debug output from this file (needs CONFIG_DEBUG with
|
||||||
* CONFIG_DEBUG_VERBOSE too)
|
* CONFIG_DEBUG_VERBOSE too)
|
||||||
*/
|
*/
|
||||||
@ -114,195 +103,20 @@
|
|||||||
* LED_STARTED | OFF OFF OFF
|
* LED_STARTED | OFF OFF OFF
|
||||||
* LED_HEAPALLOCATE | GREEN OFF OFF
|
* LED_HEAPALLOCATE | GREEN OFF OFF
|
||||||
* LED_IRQSENABLED | OFF GREEN OFF
|
* LED_IRQSENABLED | OFF GREEN OFF
|
||||||
* LED_STACKCREATED | GREEN GREEN OFF
|
* LED_STACKCREATED | OFF OFF OFF
|
||||||
* LED_INIRQ | NC NC ON
|
* LED_INIRQ | NC NC ON (momentary)
|
||||||
* LED_SIGNAL | NC RED NC
|
* LED_SIGNAL | NC NC ON (momentary)
|
||||||
* LED_ASSERTION | RED NC NC
|
* LED_ASSERTION | NC NC ON (momentary)
|
||||||
* LED_PANIC | RED RED NC (1Hz flashing)
|
* LED_PANIC | NC NC ON (1Hz flashing)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const uint8_t g_led1on[8] =
|
static bool g_initialized;
|
||||||
{
|
static int g_nestcount;
|
||||||
LED_OFF, LED_GREEN, LED_OFF, LED_GREEN,
|
|
||||||
LED_NC, LED_NC, LED_PLUSRED, LED_PLUSRED
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t g_led1off[8] =
|
|
||||||
{
|
|
||||||
LED_OFF, LED_OFF, LED_GREEN, LED_OFF,
|
|
||||||
LED_NC, LED_NC, LED_MINUSRED, LED_PREV
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t g_led2on[8] =
|
|
||||||
{
|
|
||||||
LED_OFF, LED_OFF, LED_GREEN, LED_GREEN,
|
|
||||||
LED_NC, LED_PLUSRED, LED_NC, LED_PLUSRED
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t g_led2off[8] =
|
|
||||||
{
|
|
||||||
LED_OFF, LED_OFF, LED_OFF, LED_GREEN,
|
|
||||||
LED_NC, LED_MINUSRED, LED_NC, LED_PREV
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t g_ledhbon[8] =
|
|
||||||
{
|
|
||||||
LED_OFF, LED_OFF, LED_OFF, LED_OFF,
|
|
||||||
LED_ON, LED_NC, LED_NC, LED_NC
|
|
||||||
};
|
|
||||||
|
|
||||||
static const uint8_t g_ledhboff[8] =
|
|
||||||
{
|
|
||||||
LED_OFF, LED_OFF, LED_OFF, LED_OFF,
|
|
||||||
LED_OFF, LED_NC, LED_NC, LED_NC
|
|
||||||
};
|
|
||||||
|
|
||||||
static bool g_prevled1a;
|
|
||||||
static bool g_currled1a;
|
|
||||||
static bool g_prevled1b;
|
|
||||||
static bool g_currled1b;
|
|
||||||
static bool g_prevled2a;
|
|
||||||
static bool g_currled2a;
|
|
||||||
static bool g_prevled2b;
|
|
||||||
static bool g_currled2b;
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Functions
|
* Private Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: up_led1
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
void up_led1(uint8_t newstate)
|
|
||||||
{
|
|
||||||
bool led1a = false;
|
|
||||||
bool led1b = false;
|
|
||||||
|
|
||||||
switch (newstate)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case LED_OFF:
|
|
||||||
case LED_ON:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_GREEN:
|
|
||||||
led1b = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_PLUSGREEN:
|
|
||||||
led1b = true;
|
|
||||||
case LED_MINUSGREEN:
|
|
||||||
led1a = g_currled1a;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_RED:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_PLUSRED:
|
|
||||||
led1a = true;
|
|
||||||
case LED_MINUSRED:
|
|
||||||
led1b = g_currled1b;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_NC:
|
|
||||||
led1a = g_currled1a;
|
|
||||||
led1b = g_currled1b;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_PREV:
|
|
||||||
led1a = g_prevled1a;
|
|
||||||
led1b = g_prevled1b;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
lpc17_gpiowrite(NUCLEUS2G_LED1_A, led1a);
|
|
||||||
lpc17_gpiowrite(NUCLEUS2G_LED1_B, led1b);
|
|
||||||
g_prevled1a = g_currled1a;
|
|
||||||
g_currled1a = led1a;
|
|
||||||
g_prevled1b = g_currled1b;
|
|
||||||
g_currled1b = led1b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: up_led2
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
void up_led2(uint8_t newstate)
|
|
||||||
{
|
|
||||||
bool led2a = false;
|
|
||||||
bool led2b = false;
|
|
||||||
|
|
||||||
switch (newstate)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case LED_OFF:
|
|
||||||
case LED_ON:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_GREEN:
|
|
||||||
led2b = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_PLUSGREEN:
|
|
||||||
led2b = true;
|
|
||||||
case LED_MINUSGREEN:
|
|
||||||
led2a = g_currled2a;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_RED:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_PLUSRED:
|
|
||||||
led2a = true;
|
|
||||||
case LED_MINUSRED:
|
|
||||||
led2b = g_currled2b;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_NC:
|
|
||||||
led2a = g_currled2a;
|
|
||||||
led2b = g_currled2b;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_PREV:
|
|
||||||
led2a = g_prevled2a;
|
|
||||||
led2b = g_prevled2b;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
lpc17_gpiowrite(NUCLEUS2G_LED2_A, led2a);
|
|
||||||
lpc17_gpiowrite(NUCLEUS2G_LED2_B, led2b);
|
|
||||||
g_prevled2a = g_currled2a;
|
|
||||||
g_currled2a = led2a;
|
|
||||||
g_prevled2b = g_currled2b;
|
|
||||||
g_currled2b = led2b;
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: up_ledhb
|
|
||||||
****************************************************************************/
|
|
||||||
|
|
||||||
void up_ledhb(uint8_t newstate)
|
|
||||||
{
|
|
||||||
bool ledhb = false;
|
|
||||||
|
|
||||||
switch (newstate)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case LED_OFF:
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_ON:
|
|
||||||
ledhb = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LED_NC:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
lpc17_gpiowrite(NUCLEUS2G_HEARTBEAT, ledhb);
|
|
||||||
}
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
@ -333,20 +147,45 @@ void up_ledinit(void)
|
|||||||
|
|
||||||
void up_ledon(int led)
|
void up_ledon(int led)
|
||||||
{
|
{
|
||||||
up_led1(g_led1on[led]);
|
/* We will control LED1 and LED2 not yet completed the boot sequence. */
|
||||||
up_led2(g_led2on[led]);
|
|
||||||
up_ledhb(g_ledhbon[led]);
|
|
||||||
|
|
||||||
#ifdef LED_VERBOSE
|
if (!g_initialized)
|
||||||
if (led != LED_INIRQ)
|
|
||||||
{
|
{
|
||||||
ledvdbg("led: %d LED1: %d LED2: %d HB: %d\n",
|
enum lpc17_ledstate_e led1 = LPC17_LEDSTATE_OFF;
|
||||||
led, g_led1on[led], g_led2on[led], g_ledhbon[led]);
|
enum lpc17_ledstate_e led2 = LPC17_LEDSTATE_OFF;
|
||||||
ledvdbg("LED1: {(%d,%d), (%d,%d)} LED2: {(%d,%d), (%d,%d)}\n",
|
switch (led)
|
||||||
g_prevled1a, g_currled1a, g_prevled1b, g_currled1b,
|
{
|
||||||
g_prevled2a, g_currled2a, g_prevled2b, g_currled2b);
|
case LED_STACKCREATED:
|
||||||
|
g_initialized = true;
|
||||||
|
case LED_STARTED:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LED_HEAPALLOCATE:
|
||||||
|
led1 = LPC17_LEDSTATE_GREEN;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LED_IRQSENABLED:
|
||||||
|
led2 = LPC17_LEDSTATE_GREEN;
|
||||||
|
}
|
||||||
|
lpc17_led1(led1);
|
||||||
|
lpc17_led2(led2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We will always control the HB LED */
|
||||||
|
|
||||||
|
switch (led)
|
||||||
|
{
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LED_INIRQ:
|
||||||
|
case LED_SIGNAL:
|
||||||
|
case LED_ASSERTION:
|
||||||
|
case LED_PANIC:
|
||||||
|
lpc17_gpiowrite(NUCLEUS2G_HEARTBEAT, false);
|
||||||
|
g_nestcount++;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -355,20 +194,42 @@ void up_ledon(int led)
|
|||||||
|
|
||||||
void up_ledoff(int led)
|
void up_ledoff(int led)
|
||||||
{
|
{
|
||||||
up_led1(g_led1off[led]);
|
/* In all states, OFF can only mean turning off the HB LED */
|
||||||
up_led2(g_led2off[led]);
|
|
||||||
up_ledhb(g_ledhboff[led]);
|
|
||||||
|
|
||||||
#ifdef LED_VERBOSE
|
if (g_nestcount <= 1)
|
||||||
if (led != LED_INIRQ)
|
|
||||||
{
|
{
|
||||||
ledvdbg("led: %d LED1: %d LED2: %d HB: %d\n",
|
lpc17_gpiowrite(NUCLEUS2G_HEARTBEAT, true);
|
||||||
led, g_led1off[led], g_led2off[led], g_ledhboff[led]);
|
g_nestcount = 0;
|
||||||
ledvdbg("LED1: {(%d,%d), (%d,%d)} LED2: {(%d,%d), (%d,%d)}\n",
|
}
|
||||||
g_prevled1a, g_currled1a, g_prevled1b, g_currled1b,
|
else
|
||||||
g_prevled2a, g_currled2a, g_prevled2b, g_currled2b);
|
{
|
||||||
|
g_nestcount--;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************************
|
||||||
|
* Name: lpc17_led1 and 2
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Once the system has booted, these functions can be used to control LEDs 1 and 2
|
||||||
|
*
|
||||||
|
************************************************************************************/
|
||||||
|
|
||||||
|
void lpc17_led1(enum lpc17_ledstate_e state)
|
||||||
|
{
|
||||||
|
bool red = (((unsigned int)state & LPC17_LEDSTATE_RED) != 0);
|
||||||
|
bool green = (((unsigned int)state & LPC17_LEDSTATE_GREEN) != 0);
|
||||||
|
|
||||||
|
lpc17_gpiowrite(NUCLEUS2G_LED1_A, red);
|
||||||
|
lpc17_gpiowrite(NUCLEUS2G_LED1_B, green);
|
||||||
|
}
|
||||||
|
|
||||||
|
void lpc17_led2(enum lpc17_ledstate_e state)
|
||||||
|
{
|
||||||
|
bool red = (((unsigned int)state & LPC17_LEDSTATE_RED) != 0);
|
||||||
|
bool green = (((unsigned int)state & LPC17_LEDSTATE_GREEN) != 0);
|
||||||
|
|
||||||
|
lpc17_gpiowrite(NUCLEUS2G_LED2_A, red);
|
||||||
|
lpc17_gpiowrite(NUCLEUS2G_LED2_B, green);
|
||||||
|
}
|
||||||
#endif /* CONFIG_ARCH_LEDS */
|
#endif /* CONFIG_ARCH_LEDS */
|
||||||
|
Loading…
Reference in New Issue
Block a user