Newer
Older
/*
* File: errors.c
* Author: Carlo Alessandro Nicolau @ INFN
*
* Firmware for BPD board.
* Error-related functions.
*/
#include "errors.h"
#include "hardware.h"
#include "errorcodes.h"
#include "generated/sources/variables.h"
err_t errors_last_error = NOERR;
void error_notify(err_t _err) {
// do nothing special, just set the value to be remembered
// notify one error (probably to remove on final version)
errors_last_error = _err;
Carlo Alessandro Nicolau
committed
// TODO write better code...
return;
// Signal with some LED flashes
// TODO COMMENT OUT error_notify
INTERRUPT_GlobalInterruptDisable();
for(int k=0; k<8; k++) {
userpin_SWITCH_LED_D9_set_high();
userpin_SWITCH_LED_D10_set_high();
__delay_ms(50);
userpin_SWITCH_LED_D9_set_low();
userpin_SWITCH_LED_D10_set_low();
__delay_ms(50);
}
for(int k=0; k<8; k++) {
userpin_SWITCH_LED_D9_set_high();
userpin_SWITCH_LED_D10_set_low();
__delay_ms(50);
userpin_SWITCH_LED_D9_set_low();
userpin_SWITCH_LED_D10_set_high();
__delay_ms(50);
}
userpin_SWITCH_LED_D9_set_low();
userpin_SWITCH_LED_D10_set_low();
INTERRUPT_GlobalInterruptEnable();
}
void error_die_forever(void) {
// THIS SHOULD NEVE HAPPEN, PLEASE UNCOMMENT DURING DEVELOPMENT
// TODO COMMENT OUT error_die_forever
INTERRUPT_GlobalInterruptDisable();
while(1) {
userpin_SWITCH_LED_D9_set_high();
userpin_SWITCH_LED_D10_set_high();
__delay_ms(250);
userpin_SWITCH_LED_D9_set_low();
userpin_SWITCH_LED_D10_set_low();
__delay_ms(250);
}
}
// ... see .h
void error_die_forever_fromIRQ(void) {
// THIS SHOULD NEVE HAPPEN, PLEASE UNCOMMENT DURING DEVELOPMENT
// TODO COMMENT OUT error_die_forever_fromIRQ
INTERRUPT_GlobalInterruptDisable();
while(1) {
userpin_SWITCH_LED_D9_set_high_fromIRQ();
userpin_SWITCH_LED_D10_set_low_fromIRQ();
__delay_ms(250);
userpin_SWITCH_LED_D9_set_low_fromIRQ();
userpin_SWITCH_LED_D10_set_high_fromIRQ();
__delay_ms(250);
}