/* * 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" #include "spurious.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; // 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); } }