Skip to content

Commit

Permalink
Merge pull request #511 from ADVANSEE/leds
Browse files Browse the repository at this point in the history
leds: Fixes and enhancements
  • Loading branch information
adamdunkels committed Jun 11, 2014
2 parents 40d3365 + 9846216 commit def5719
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 43 deletions.
53 changes: 25 additions & 28 deletions core/dev/leds.c
Expand Up @@ -34,54 +34,58 @@
#include "sys/clock.h"
#include "sys/energest.h"

static unsigned char leds, invert;
static unsigned char leds;
/*---------------------------------------------------------------------------*/
static void
show_leds(unsigned char changed)
show_leds(unsigned char new_leds)
{
unsigned char changed;
changed = leds ^ new_leds;
leds = new_leds;

if(changed & LEDS_GREEN) {
/* Green did change */
if((invert ^ leds) & LEDS_GREEN) {
if(leds & LEDS_GREEN) {
ENERGEST_ON(ENERGEST_TYPE_LED_GREEN);
} else {
ENERGEST_OFF(ENERGEST_TYPE_LED_GREEN);
}
}
if(changed & LEDS_YELLOW) {
if((invert ^ leds) & LEDS_YELLOW) {
if(leds & LEDS_YELLOW) {
ENERGEST_ON(ENERGEST_TYPE_LED_YELLOW);
} else {
ENERGEST_OFF(ENERGEST_TYPE_LED_YELLOW);
}
}
if(changed & LEDS_RED) {
if((invert ^ leds) & LEDS_RED) {
if(leds & LEDS_RED) {
ENERGEST_ON(ENERGEST_TYPE_LED_RED);
} else {
ENERGEST_OFF(ENERGEST_TYPE_LED_RED);
}
}
leds_arch_set(leds ^ invert);
leds_arch_set(leds);
}
/*---------------------------------------------------------------------------*/
void
leds_init(void)
{
leds_arch_init();
leds = invert = 0;
leds = 0;
}
/*---------------------------------------------------------------------------*/
void
leds_blink(void)
{
/* Blink all leds. */
unsigned char inv;
inv = ~(leds ^ invert);
leds_invert(inv);
/* Blink all leds that were initially off. */
unsigned char blink;
blink = ~leds;
leds_toggle(blink);

clock_delay(400);

leds_invert(inv);
leds_toggle(blink);
}
/*---------------------------------------------------------------------------*/
unsigned char
Expand All @@ -90,33 +94,26 @@ leds_get(void) {
}
/*---------------------------------------------------------------------------*/
void
leds_on(unsigned char ledv)
leds_set(unsigned char ledv)
{
unsigned char changed;
changed = (~leds) & ledv;
leds |= ledv;
show_leds(changed);
show_leds(ledv);
}
/*---------------------------------------------------------------------------*/
void
leds_off(unsigned char ledv)
leds_on(unsigned char ledv)
{
unsigned char changed;
changed = leds & ledv;
leds &= ~ledv;
show_leds(changed);
show_leds(leds | ledv);
}
/*---------------------------------------------------------------------------*/
void
leds_toggle(unsigned char ledv)
leds_off(unsigned char ledv)
{
leds_invert(ledv);
show_leds(leds & ~ledv);
}
/*---------------------------------------------------------------------------*/
/* invert the invert register using the leds parameter */
void
leds_invert(unsigned char ledv) {
invert = invert ^ ledv;
show_leds(ledv);
leds_toggle(unsigned char ledv)
{
show_leds(leds ^ ledv);
}
/*---------------------------------------------------------------------------*/
4 changes: 2 additions & 2 deletions core/dev/leds.h
Expand Up @@ -77,13 +77,13 @@ void leds_blink(void);
#endif /* LEDS_CONF_ALL */

/**
* Returns the current status of all leds (respects invert)
* Returns the current status of all leds
*/
unsigned char leds_get(void);
void leds_set(unsigned char leds);
void leds_on(unsigned char leds);
void leds_off(unsigned char leds);
void leds_toggle(unsigned char leds);
void leds_invert(unsigned char leds);

/**
* Leds implementation
Expand Down
4 changes: 0 additions & 4 deletions cpu/avr/minileds.c
Expand Up @@ -58,8 +58,4 @@ leds_off(unsigned char leds)
void
leds_toggle(unsigned char leds)
{
/*
* Synonym: void leds_invert(unsigned char leds);
*/
asm(".global leds_invert\nleds_invert:\n");
}
5 changes: 0 additions & 5 deletions cpu/msp430/minileds.c
Expand Up @@ -74,10 +74,5 @@ leds_off(unsigned char leds)
void
leds_toggle(unsigned char leds)
{
/*
* Synonym: void leds_invert(unsigned char leds);
*/
asm(".global leds_invert\nleds_invert:\n");

LEDS_PxOUT ^= l2p[leds & LEDS_ALL];
}
6 changes: 3 additions & 3 deletions tools/sky/uip6-bridge/uip6-bridge-tap.c
Expand Up @@ -64,7 +64,7 @@ tcpip_output(const uip_lladdr_t *a)
/* printf("pppp o %u tx %u rx %u\n", UIP_IP_BUF->proto,
packetbuf_attr(PACKETBUF_ATTR_TRANSMIT_TIME),
packetbuf_attr(PACKETBUF_ATTR_LISTEN_TIME));*/
leds_invert(LEDS_GREEN);
leds_toggle(LEDS_GREEN);
}
return 0;
}
Expand Down Expand Up @@ -94,7 +94,7 @@ tcpip_input(void)
packetbuf_attr(PACKETBUF_ATTR_TRANSMIT_TIME),
packetbuf_attr(PACKETBUF_ATTR_LISTEN_TIME));*/
slip_write(uip_buf, uip_len);
leds_invert(LEDS_RED);
leds_toggle(LEDS_RED);
uip_len = 0;
}
}
Expand All @@ -112,7 +112,7 @@ slip_tcpip_input(void)
static void
slip_activity(void)
{
leds_invert(LEDS_BLUE);
leds_toggle(LEDS_BLUE);
}
/*---------------------------------------------------------------------------*/
PROCESS_THREAD(uip6_bridge, ev, data)
Expand Down
2 changes: 1 addition & 1 deletion tools/stm32w/uip6_bridge/sicslow_ethernet.c
Expand Up @@ -968,7 +968,7 @@ void mac_802154raw(const struct radio_driver *radio)
#endif

slip_write(uip_buf, len);
leds_invert(LEDS_RED);
leds_toggle(LEDS_RED);

//rndis_send(raw_buf, sendlen, 1);
//rndis_stat.rxok++;
Expand Down

0 comments on commit def5719

Please sign in to comment.