void updateAccelerometerLEDs() { if (!useLevel) { LED_N = OFF; LED_S = OFF; LED_E = OFF; LED_W = OFF; return; } //printf("Updating LEDS!\n"); //if (Timer_isExpired(TIMER_ACCELEROMETER)) { // X-Axis if (Accelerometer_getX() <= (G_X_DESIRED - G_DELTA_HORIZONTAL)) { LED_N = ON; LED_S = OFF; } else if (Accelerometer_getX() >= (G_X_DESIRED + G_DELTA_HORIZONTAL)) { LED_N = OFF; LED_S = ON; } else { LED_N = OFF; LED_S = OFF; } // Y-Axis if (Accelerometer_getY() <= (G_Y_DESIRED - G_DELTA_VERTICAL)) { LED_E = OFF; LED_W = ON; } else if (Accelerometer_getY() >= (G_Y_DESIRED + G_DELTA_VERTICAL)) { LED_E = ON; LED_W = OFF; } else { LED_E = OFF; LED_W = OFF; } //Timer_new(TIMER_ACCELEROMETER, LED_DELAY ); //} }
/********************************************************************** * Function: Interface_runSM * @param None. * @return None. * @remark Must be called every cycle of the Command Center, checks the * timers and reacts. **********************************************************************/ void Interface_runSM(){ if (Timer_isExpired(TIMER_LIGHT_HOLD)) { timerLightOffFunction(); Timer_clear(TIMER_LIGHT_HOLD); } if (Timer_isExpired(TIMER_LCD_HOLD)) { Interface_clearDisplay(); if (nextMsgCode != NO_MESSAGE) { showMessage(nextMsgCode); nextMsgCode = NO_MESSAGE; } Timer_clear(TIMER_LCD_HOLD); } //printf("HERE! "); if(Timer_isExpired(TIMER_INTERFACE)) { #if NUMBER_OF_TIMES_TO_CHECK > 1 if(OKAY_BUTTON == PRESSED) buttonCount.okay += 1; if(CANCEL_BUTTON == PRESSED) buttonCount.cancel += 1; if(STOP_BUTTON == PRESSED) buttonCount.stop += 1; if(RESCUE_BUTTON == PRESSED) buttonCount.rescue += 1; if(SETSTATION_BUTTON == PRESSED) buttonCount.setStation += 1; if (RESET_BUTTON == PRESSED) buttonCount.reset += 1; buttonReadCount++; if(buttonReadCount >= NUMBER_OF_TIMES_TO_CHECK){ buttonReadCount = 0; // Clear button flag buttonPressed.bytes[0] = false; if(buttonCount.okay >= MINIMUM_POSITIVES) buttonPressed.flag.okay = true; if(buttonCount.cancel >= MINIMUM_POSITIVES) buttonPressed.flag.cancel = true; if(buttonCount.stop >= MINIMUM_POSITIVES) buttonPressed.flag.stop = true; if(buttonCount.rescue >= MINIMUM_POSITIVES) buttonPressed.flag.rescue = true; if(buttonCount.setStation >= MINIMUM_POSITIVES) buttonPressed.flag.setStation = true; if (buttonCount.reset >= MINIMUM_POSITIVES) buttonPressed.flag.reset = TRUE; // Reset button counts buttonCount.okay = 0; buttonCount.cancel = 0; buttonCount.stop = 0; buttonCount.rescue = 0; buttonCount.setStation = 0; buttonCount.reset = 0; } #else buttonPressed.flag.okay = (OKAY_BUTTON == PRESSED); buttonPressed.flag.cancel = (CANCEL_BUTTON == PRESSED); buttonPressed.flag.stop = (STOP_BUTTON == PRESSED); buttonPressed.flag.rescue = (RESCUE_BUTTON == PRESSED); buttonPressed.flag.setStation = (SETSTATION_BUTTON == PRESSED); buttonPressed.flag.reset = (RESET_BUTTON == PRESSED); #endif #ifdef DEBUG_BUTTON_CHECK Interface_waitLightOnTimer(1000); printf("Ok=%d, C=%d, S=%d, R=%d, SS=%d, Reset=%d\n", buttonPressed.flag.okay, buttonPressed.flag.cancel, buttonPressed.flag.stop, buttonPressed.flag.rescue, buttonPressed.flag.setStation, buttonPressed.flag.reset); #endif Timer_new(TIMER_INTERFACE, WAIT_BETWEEN_CHECKS); } // Calibration lights if (usingPitchLights) { READY_LED = OFF; if (Accelerometer_isLevel()) { CALIBRATE_FRONT_LED = ON; CALIBRATE_BACK_LED = ON; READY_LED = ON; } else if (Accelerometer_getX() > Accelerometer_getY()) { CALIBRATE_FRONT_LED = OFF; CALIBRATE_BACK_LED = ON; } else if (Accelerometer_getY() > Accelerometer_getX()) { CALIBRATE_FRONT_LED = ON; CALIBRATE_BACK_LED = OFF; } } else if (usingYawLights) { READY_LED = OFF; #ifdef USE_MAGNETOMETER if (Magnetometer_isNorth() && Accelerometer_isLevel()) { #else if (Accelerometer_isLevel()) { #endif CALIBRATE_FRONT_LED = ON; CALIBRATE_BACK_LED = ON; READY_LED = ON; } else { CALIBRATE_FRONT_LED = OFF; CALIBRATE_BACK_LED = OFF; } } if (Timer_isExpired(TIMER_INTERFACE) || !Timer_isActive(TIMER_INTERFACE)) Timer_new(TIMER_INTERFACE, WAIT_BETWEEN_CHECKS); } /********************************************************************** * Function: Interface_isCancelPressed * @param None. * @return TRUE if the cancel button was pressed. * @remark **********************************************************************/ bool Interface_isCancelPressed(){ return buttonPressed.flag.cancel; } /********************************************************************** * Function: Interface_isOkPressed * @param None. * @return TRUE if the ok button was pressed. * @remark **********************************************************************/ bool Interface_isOkPressed(){ return buttonPressed.flag.okay; } /********************************************************************** * Function: Interface_isStopPressed * @param None. * @return TRUE if the stop button was pressed. * @remark **********************************************************************/ bool Interface_isStopPressed(){ return buttonPressed.flag.stop; } /********************************************************************** * Function: Interface_isRescuePressed * @param None. * @return TRUE if the rescue button was pressed. * @remark **********************************************************************/ bool Interface_isRescuePressed(){ return buttonPressed.flag.rescue; } /********************************************************************** * Function: Interface_isSetStationPressed * @param None. * @return TRUE if the set station button was pressed. * @remark **********************************************************************/ bool Interface_isSetStationPressed(){ return buttonPressed.flag.setStation; } /********************************************************************** * Function: Interface_isResetPressed * @param None. * @return TRUE if the reset button was pressed. * @remark **********************************************************************/ bool Interface_isResetPressed(){ return buttonPressed.flag.reset; } /********************************************************************** * Function: Interface_readyLightOn * @param None. * @return None. * @remark Turns the LED On by **********************************************************************/ void Interface_readyLightOn(){ READY_LED = ON; } /********************************************************************** * Function: Interface_readyLightOff * @param None. * @return None. * @remark Turns the LED off by **********************************************************************/ void Interface_readyLightOff(){ READY_LED = OFF; } /********************************************************************** * Function: Interface_waitLightOn * @param None. * @return None. * @remark Turns the LED On by **********************************************************************/ void Interface_waitLightOn(){ WAIT_LED = ON; } /********************************************************************** * Function: Interface_waitLightOff * @param None. * @return None. * @remark Turns the LED off by **********************************************************************/ void Interface_waitLightOff(){ WAIT_LED = OFF; } /********************************************************************** * Function: Interface_errorLightOn * @param None. * @return None. * @remark Turns the LED On by **********************************************************************/ void Interface_errorLightOn(){ ERROR_LED = ON; } /********************************************************************** * Function: Interface_errorLightOff * @param None. * @return None. * @remark Turns the LED off by **********************************************************************/ void Interface_errorLightOff(){ ERROR_LED = OFF; } /********************************************************************** * Function: Interface_readyLightOnTimer * @param amount of time in ms that you want the light to remain on * @return None. * @remark Turns the LED on for a certain amount of time **********************************************************************/ void Interface_readyLightOnTimer(uint16_t ms){ Timer_new(TIMER_LIGHT_HOLD, ms); timerLightOffFunction = &Interface_readyLightOff; Interface_readyLightOn(); }