//Funkcja s³u¿y do uruchomienia alarmu we w³aœciwym momencie void checkAlarm(void) { uint8_t sec = registers.secondsRegister.tensPlace * 10 + registers.secondsRegister.unitPlace; if(buzzerActivated == 0 && alarmEnableBit == 1 && sec == 0) { uint8_t minutes = registers.minutesRegister.tensPlace * 10 + registers.minutesRegister.unitPlace; uint8_t hours = registers.hoursRegister.tensPlace * 10 + registers.hoursRegister.unitPlace; uint8_t weekdays = registers.dateBRegister.weekdays; AlarmList alarm = alarmRegisters.alarms[alarmRegisters.control.nextActiveAlarm]; if(alarm.active == 1 && alarm.hours == hours && alarm.minutes == minutes && alarm.weekdays == weekdays) { startBuzzer(); } } }
static void REF_StateMachine(void) { int i; switch (refState) { case REF_STATE_INIT: #if PL_CONFIG_EST { SensorCalibT *ptr; ptr = (SensorCalibT*)NVMC_GetReflectanceData(); if (ptr!=NULL) { /* valid data */ SensorCalibMinMax = *ptr; refState = REF_STATE_READY; } else { refState = REF_STATE_NOT_CALIBRATED; } } #else SHELL_SendString((unsigned char*)"INFO: No calibration data present.\r\n"); refState = REF_STATE_NOT_CALIBRATED; #endif break; case REF_STATE_NOT_CALIBRATED: REF_MeasureRaw(SensorRaw); /*! \todo Add a new event to your event module...*/ #if REF_START_STOP_CALIB if (FRTOS1_xSemaphoreTake(REF_StartStopSem, 0)==pdTRUE) { refState = REF_STATE_START_CALIBRATION; } #endif break; case REF_STATE_START_CALIBRATION: SHELL_SendString((unsigned char*)"start calibration...\r\n"); for(i=0;i<REF_NOF_SENSORS;i++) { SensorCalibMinMax.minVal[i] = MAX_SENSOR_VALUE; SensorCalibMinMax.maxVal[i] = 0; SensorCalibrated[i] = 0; } refState = REF_STATE_CALIBRATING; break; case REF_STATE_CALIBRATING: REF_CalibrateMinMax(SensorCalibMinMax.minVal, SensorCalibMinMax.maxVal, SensorRaw); #if PL_CONFIG_HAS_BUZZER startBuzzer(Middle,200); #endif #if REF_START_STOP_CALIB if (FRTOS1_xSemaphoreTake(REF_StartStopSem, 0)==pdTRUE) { refState = REF_STATE_STOP_CALIBRATION; } #endif break; case REF_STATE_STOP_CALIBRATION: SHELL_SendString((unsigned char*)"...stopping calibration.\r\n"); #if PL_CONFIG_EST if (NVMC_SaveReflectanceData(&SensorCalibMinMax, sizeof(SensorCalibMinMax))!=ERR_OK) { SHELL_SendString((unsigned char*)"Flashing calibration data FAILED!\r\n"); } else { SHELL_SendString((unsigned char*)"Stored calibration data.\r\n"); } #endif refState = REF_STATE_READY; break; case REF_STATE_READY: REF_Measure(); #if REF_START_STOP_CALIB if (FRTOS1_xSemaphoreTake(REF_StartStopSem, 0)==pdTRUE) { refState = REF_STATE_START_CALIBRATION; } #endif break; } /* switch */ }