Fixes to memory check handling, split out switch handling to allow separate initialization

This commit is contained in:
Lorenz Meier 2014-01-23 09:17:46 +01:00
parent d77a15e94f
commit 2aa76f1a3c
3 changed files with 37 additions and 13 deletions

View File

@ -228,23 +228,42 @@ user_start(int argc, char *argv[])
/* initialize PWM limit lib */ /* initialize PWM limit lib */
pwm_limit_init(&pwm_limit); pwm_limit_init(&pwm_limit);
/* not enough memory, lock down */ /*
if (minfo.mxordblk < 500) { * P O L I C E L I G H T S
*
* Not enough memory, lock down.
*
* We might need to allocate mixers later, and this will
* ensure that a developer doing a change will notice
* that he just burned the remaining RAM with static
* allocations. We don't want him to be able to
* get past that point. This needs to be clearly
* documented in the dev guide.
*
*/
if (minfo.mxordblk < 600) {
lowsyslog("ERR: not enough MEM"); lowsyslog("ERR: not enough MEM");
bool phase = false; bool phase = false;
if (phase) { while (true) {
LED_AMBER(true);
LED_BLUE(false);
} else {
LED_AMBER(false);
LED_BLUE(true);
}
phase = !phase; if (phase) {
up_udelay(300000); LED_AMBER(true);
LED_BLUE(false);
} else {
LED_AMBER(false);
LED_BLUE(true);
}
up_udelay(250000);
phase = !phase;
}
} }
/* Start the failsafe led init */
failsafe_led_init();
/* /*
* Run everything in a tight loop. * Run everything in a tight loop.
*/ */

View File

@ -184,6 +184,7 @@ extern void mixer_handle_text(const void *buffer, size_t length);
* Safety switch/LED. * Safety switch/LED.
*/ */
extern void safety_init(void); extern void safety_init(void);
extern void failsafe_led_init(void);
/** /**
* FMU communications * FMU communications

View File

@ -84,7 +84,11 @@ safety_init(void)
{ {
/* arrange for the button handler to be called at 10Hz */ /* arrange for the button handler to be called at 10Hz */
hrt_call_every(&arming_call, 1000, 100000, safety_check_button, NULL); hrt_call_every(&arming_call, 1000, 100000, safety_check_button, NULL);
}
void
failsafe_led_init(void)
{
/* arrange for the failsafe blinker to be called at 8Hz */ /* arrange for the failsafe blinker to be called at 8Hz */
hrt_call_every(&failsafe_call, 1000, 125000, failsafe_blink, NULL); hrt_call_every(&failsafe_call, 1000, 125000, failsafe_blink, NULL);
} }
@ -165,8 +169,8 @@ failsafe_blink(void *arg)
/* indicate that a serious initialisation error occured */ /* indicate that a serious initialisation error occured */
if (!(r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK)) { if (!(r_status_flags & PX4IO_P_STATUS_FLAGS_INIT_OK)) {
LED_AMBER(true); LED_AMBER(true);
return; return;
} }
static bool failsafe = false; static bool failsafe = false;