Jorge Troncoso
/
601_mDot_Gateway_Rev5_AUS_TrelleborgNet
Gateway by Jorge Troncoso
status_led.cpp
- Committer:
- jortronm2
- Date:
- 2018-06-13
- Revision:
- 0:e671110e33a3
File content as of revision 0:e671110e33a3:
#include "status_led.h" static DigitalOut status_led_external(PIN_OUTPUT_LED_EXTERNAL); static DigitalOut status_led_internal(PIN_OUTPUT_LED_INTERNAL); static Ticker status_led_ticker; static void status_led_ticker_callback(void) { status_led_external = !status_led_external; } extern void status_led_set(uint8_t state_external, uint8_t state_internal) { if(state_external == 0) status_led_external = 0; else status_led_external = 1; if(state_internal == 0) status_led_internal = 0; else status_led_internal = 1; } extern void status_led_blink(uint8_t type) { uint8_t blink_count; float blink_time_on, blink_time_off; switch(type) { case STATUS_LED_POWER_ON: blink_count = 1; blink_time_on = 0; blink_time_off = 3; break; case STATUS_LED_RADIO_ACTIVITY: blink_count = 1; blink_time_on = 0; blink_time_off = 0.3; break; case STATUS_LED_CONNECTED: blink_count = 2; blink_time_on = 0.5; blink_time_off = 0.3; break; case STATUS_LED_CHECK: blink_count = 3; blink_time_on = 0.5; blink_time_off = 0.3; break; case STATUS_LED_ERROR: blink_count = 2; blink_time_on = 0.3; blink_time_off = 0.5; break; default: blink_count = 0; blink_time_on = 0; blink_time_off = 0; break; } for(uint8_t i = 0; i < blink_count; i++) { if(i > 0) wait(blink_time_on); status_led_external = 0; wait(blink_time_off); status_led_external = 1; } status_led_external = 1; } extern void status_led_blink_start(double frequency) { status_led_ticker.attach(&status_led_ticker_callback, 0.5/frequency); // '0.5' because a full blink requires two state changes. } extern void status_led_blink_stop(void) { status_led_ticker.detach(); }