/** Główna funkcja programu */ int main(void) { FuncPtr FPtr; ioinit(); hd44780_clear(); hd44780_bl_on(); hd44780_cursor_off(); load_basic_settings(EEPROM_BASIC_SETTINGS_BEGIN); load_temp_sensors_settings(EEPROM_TEMP_SETTINGS_BEGIN); load_outputs_settings(EEPROM_OUTS_SETTING_BEGIN); load_timers_settings(EEPROM_TIMERS_SETTING_BEGIN); load_timersv_settings(EEPROM_TIMERSV_SETTING_BEGIN); load_topoff_settings(EEPROM_TOPOFF_SETTINGS_BEGIN); hd44780_printOnLcdDelay(PSTR(PROGRAM_FULL_NAME)); hd44780_clear(); sei(); rtc_get_time(); rtc_get_date(); gui_client_present(); log_write_record(LOG_EVENT_START,0,0,0); for (;;) { wdt_reset(); qbuttons_process(); ui_key_pressed(); if (key_pressed && alarms_notification_enabled() && alarms_is_active() ){ alarms_block_notification(); menu_set(1,1,0,0); key_pressed = NONE; } //########################### akcje wykonywane kiedy minie sekunda if (SF(FLAG_SECOND_PAST)) { SSF(FLAG_FORCE_LCD_REFRESH); temp_counter++; top_off_check_time(); top_off_process(); CSF(FLAG_SECOND_PAST); } //########################### akcje wykonywane kiedy minie pół sekundy if (SF(FLAG_HALF_SECOND_PAST)) { SSF(FLAG_FORCE_LCD_SEMI_REFRESH); if (alarms_is_active() && alarms_notification_enabled()) { buzzer_toggle(); } else { buzzer_off(); } CSF(FLAG_HALF_SECOND_PAST); } //######################################## odświeżenie wyswietlacza LCD if (system_flags & LCD_REFRESH_MASK) { //if (back_light_counter < LCD_BL_SHUTOFF_TIME) { hd44780_bl_on(); } FPtr=(FuncPtr)pgm_read_word(&FuncPtrTable[menu_func_index()]); hd44780_outcmd(HD44780_HOME); FPtr(); menu_dummy(); CSF(FLAG_FORCE_LCD_REFRESH); CSF(FLAG_FORCE_LCD_SEMI_REFRESH); } //########################### akcje wykonywane kiedy minie minuta if (SF(FLAG_MINUTE_PAST)) { //if (back_light_counter < 0xFF) { back_light_counter++; } //if (back_light_counter >= LCD_BL_SHUTOFF_TIME) { hd44780_bl_off(); } timers_process(); timersv_process(); if (alarms_block_notification_counter < ALARM_MAX_BLOCK_VALUE) { alarms_block_notification_counter++; } CSF(FLAG_MINUTE_PAST); } //########################### akcje wykonywane kiedy minie godzina if (SF(FLAG_HOUR_PAST)) { temp_register(); CSF(FLAG_HOUR_PAST); } //########################### akcje wykonywane jak minie dzień if (SF(FLAG_DAY_PAST)) { rtc_get_time(); rtc_get_date(); CSF(FLAG_DAY_PAST); } //########################### pomiar temeratury if (temp_counter > TEMP_SENSOR_READ_INTERVAL) { temp_read_temperature(); temp_counter = 0; } //######################################## obsługa interfejsu szeregowego gui_cm_process_char(); //######################################## aktualizacja stanu wyjść outputs_update(); } return 0; }
/** * \brief This task, when activated, send every ten seconds on debug UART the * whole report of free heap and total tasks status */ static void task_win(void *pvParameters) { uint32_t hour, minute, second; uint32_t year, month, date,week; uint8_t uc_result; UNUSED(pvParameters); for (;;) { while (demo_get_special_mode_status(DEMO_LCD_CALIBRATE_MODE)) { app_widget_settings_on(false); uc_result = rtouch_calibrate(); if (uc_result == 0) { demo_set_special_mode_status( DEMO_LCD_CALIBRATE_MODE, 0); app_widget_settings_on(true); puts("Calibration successful !\r"); break; } else { puts("Calibration failed; error delta is too big ! Please retry calibration procedure...\r"); } } if (demo_get_special_mode_status(DEMO_WAIT_MODE) || demo_get_special_mode_status(DEMO_SLEEP_MODE)) { app_widget_lpm_on(true); demo_set_special_mode_status(DEMO_WAIT_MODE, 0); demo_set_special_mode_status(DEMO_SLEEP_MODE, 0); } /* Play PPT */ if (demo_get_special_mode_status(DEMO_PPT_MODE)) { demo_start_adc(true); if (pontentiometer_value == ppt_delay_clapse_counter) { snprintf( ppt_slide_path, sizeof(ppt_slide_path), "%s%s%s%u%s", SCR_PPT_SLIDE_PATH, SCR_PPT_SLIDE_FOLDER, SCR_PPT_SLIDE_BASENAME, ppt_silder_index, SCR_PPT_SLIDE_EXT ); demo_ppt.data.custom = ppt_slide_path; gfx_draw_bitmap(&demo_ppt, 0, 0); ppt_delay_clapse_counter = 0; ppt_silder_index++; if (ppt_silder_index >= SCR_PPT_SLIDE_MAX) { ppt_silder_index = 0; } } ppt_delay_clapse_counter++; continue; } if (touch_event_on_ppt == 1) { app_widget_main_on(true); touch_event_on_ppt = 0; } demo_qtouch_event_handler(); /* Process queued events in the windowing system */ win_process_events(); if (demo_get_special_mode_status(DEMO_MAIN_MODE)) { /* Retrieve date and time */ rtc_get_time( RTC, &hour, &minute, &second ); snprintf( demo_cur_time, sizeof(demo_cur_time), "%02u:%02u:%02u", hour, minute, second ); /* Draw the time text */ gfx_draw_string(demo_cur_time, 15, 300, &sysfont, COLOR_WHITE, COLOR_WHITE); gfx_draw_string(demo_cur_time, 15, 300, &sysfont, GFX_COLOR_TRANSPARENT, COLOR_BLUE); /* Retrieve date and time */ rtc_get_date( RTC, &year, &month, &date, &week ); snprintf( demo_cur_date, sizeof(demo_cur_date), "%04u/%02u/%02u", year, month, date ); /* Draw the help text */ gfx_draw_string(demo_cur_date, 135, 300, &sysfont, COLOR_WHITE, COLOR_WHITE); gfx_draw_string(demo_cur_date, 135, 300, &sysfont, GFX_COLOR_TRANSPARENT, COLOR_BLUE); } vTaskDelay(100); } }