#ifndef CONFIG_H #define CONFIG_H #include #include #include "inputoverwatcher.h" #define STRUCT_PACK __attribute__ ((packed)) #define MAX_CONFIG_COUNT 46 #define MAX_SOFTWARE_INFO_CNT 7 #define MAX_HOTLINE_CHEF_CNT 3 #define MAX_HOTLINE_SERVICE_CNT 2 #define CONFIG_FILE_NAME "/prime/config/config.ini" #define FAVORITE_FILE_NAME "/prime/config/favorite.ini" #define MODEL_INFO_FILE_NAME "/prime/config/model_info.csv" #define CHEF_INFO_FILE_NAME "/prime/config/chef_info.csv" #define SERVICE_INFO_FILE_NAME "/prime/config/service_info.csv" static const char rest_time_type_menu[2][16] = { QT_TRANSLATE_NOOP("Config","잔여시간\0"), QT_TRANSLATE_NOOP("Config","타겟시간\0") }; static const char temptype_menu[2][16]{ QT_TRANSLATE_NOOP("Config","섭씨(℃)"), QT_TRANSLATE_NOOP("Config","화씨(℉)") }; static const char set_unset_menu[2][16]={ QT_TRANSLATE_NOOP("Config","설정취소\0"), QT_TRANSLATE_NOOP("Config","설정\0") }; static const char language_menu[3][20]{ "한국어\0", "中國語\0", "English" }; const char time_type_menu[2][16]={ "24h\0", "am/pm\0" }; const char best_dish_weight_menu[4][16]={ "700g\0", "700-899g\0", "900-1099g\0", "1100g" }; const char active_on_off_menu[2][16]={ QT_TRANSLATE_NOOP("Config","비활성\0"), QT_TRANSLATE_NOOP("Config","활성화\0") }; const char on_off_menu[2][16] = { QT_TRANSLATE_NOOP("Config","끄기\0"), QT_TRANSLATE_NOOP("Config","켜기\0") }; typedef struct _config_1digit_set{ char str_unit[8]; int maxlen; int min; int max; }config_1digit_set; const config_1digit_set auto_darkness_dlgset = { "min\0", 2, 1, 30, }; const config_1digit_set load_ready_dlgset ={ "min\0", 2, 2, 10, }; const char software_item_name[MAX_SOFTWARE_INFO_CNT][32] ={ QT_TRANSLATE_NOOP("Config","모 델 명"), QT_TRANSLATE_NOOP("Config","제조일자"), QT_TRANSLATE_NOOP("Config","제조국"), QT_TRANSLATE_NOOP("Config","제조사"), QT_TRANSLATE_NOOP("Config","제품번호"), QT_TRANSLATE_NOOP("Config","소프트웨어 버전"), QT_TRANSLATE_NOOP("Config","현재모델") }; const char hotline_chef_item_name[3][32] = { QT_TRANSLATE_NOOP("Config","연 락 처"), QT_TRANSLATE_NOOP("Config","이 름"), QT_TRANSLATE_NOOP("Config","위치정보") }; const char hotline_service_item_name[3][32] ={ QT_TRANSLATE_NOOP("Config","연 락 처"), QT_TRANSLATE_NOOP("Config","위치정보") }; namespace Define { enum ConfigType { config_language = 0, config_datetime, config_temptype, config_backlight, config_stop_delay, config_best_dish_weight, config_party_dish_weight, config_ilc_rack_number, config_ilc_rack_sequnece, config_ilc_cook_wait_time, config_cooktime_format, config_time_type, config_resttime_format, config_marster_vol, config_keypad_sound1, config_keypad_sound2, config_request_loadexec, config_programstep_finish, config_cooktime_finish, config_stoperror_distinguish, config_sound_factory_reset, config_haccp_data_download, config_info_data_download, config_service_data_download, config_program_download, config_program_upload, config_program_initialize, config_ip, config_gateway, config_netmask, config_set_download, config_set_upload, config_set_half_energy, config_set_auto_darkness, config_set_ilc_cook_temphumi_ready, config_set_load_ready, config_duty_wash, config_loading_door_monitoring, config_cooking_door_monitoring, config_software_info, config_hotline_chef, config_hotline_service, config_steam_wash, config_demo_mode, config_enter_engineer_mode, config_model, config_standard_info_upload, config_invalid = MAX_CONFIG_COUNT+1 }; typedef union _config_item{ uint32_t d32; float f32; struct{ uint16_t d16[2]; }d16; struct{ uint8_t d8_0; uint8_t d8_1; uint8_t d8_2; uint8_t d8_3; }d8; }config_item; typedef union _config_lists{ uint8_t data[MAX_CONFIG_COUNT*4]; config_item values[MAX_CONFIG_COUNT]; struct{ config_item language; config_item datetime; config_item temptype; config_item backlight; config_item stop_delay; config_item best_dish_weight; config_item party_dish_weight; config_item ilc_rack_number; config_item ilc_rack_sequnece; config_item ilc_cook_wait_time; config_item cooktime_format; config_item time_type; config_item resttime_format; config_item marster_vol; config_item keypad_sound1; config_item keypad_sound2; config_item request_loadexec; config_item programstep_finish; config_item cooktime_finish; config_item stoperror_distinguish; config_item sound_factory_reset; config_item haccp_data_download; config_item info_data_download; config_item service_data_download; config_item program_download; config_item program_upload; config_item program_initialize; config_item ip; config_item gateway; config_item netmask; config_item set_download; config_item set_upload; config_item set_half_energy; config_item set_auto_darkness; config_item set_ilc_cook_temphumi_ready; config_item set_load_ready; config_item duty_wash; config_item loading_door_monitoring; config_item cooking_door_monitoring; config_item software_info; config_item hotline_chef; config_item hotline_service; config_item steam_wash; config_item demo_mode; config_item enter_engineer_mode; config_item model; }items; }STRUCT_PACK config_lists; enum temp_type{ temp_type_c=0, temp_type_f, }; enum time_type{ time_type_24h = 0, time_type_12h }; enum model_type{ model_electric_10 = 0, model_electric_20, model_electric_24, model_electric_40, model_gas_lpg_10, model_gas_lpg_20, model_gas_lpg_24, model_gas_lpg_40, model_gas_lng_10, model_gas_lng_20, model_gas_lng_24, model_gas_lng_40 }; enum rest_time_type{ rest_time_rest=0, rest_time_target }; } class Config : public QObject { Q_OBJECT explicit Config(QObject *parent = 0); ~Config(void); static Config *instance; InputOverwatcher watcher; /* config_data_type & Formatter Description * 80 = use Cutom Formatter * 0 = int * 1 = float * 2 = only String, * 3 = int +1 * 7f = none value */ const uint8_t config_data_type[MAX_CONFIG_COUNT] = { 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, //Settings 0x00, 0x03, 0x00, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02,0x02, 0x02,0x02, 0x80, 0x80, 0x80, 0x02, 0x02, 0x80, 0x00, 0x00,0x00, 0x80, 0x80, 0x80, 0x02,0x02,0x02,0x02,0x80,0x02 }; const char config_format[MAX_CONFIG_COUNT][64] = { "%S", "%S", "%S", "%1", QT_TR_NOOP("%1 분"), "%1 g", //5 "%1 g", "%1", "%1", "%1 min", //9 "%S", //10 "%S", "%S", //end of Settings "%1" ,//start of Sound QT_TR_NOOP("%1번"), "%1", "%1번", "%1번", "%1번", "%1번", QT_TR_NOOP("공장초기화"), QT_TR_NOOP("USB 삽입"), //config_haccp_data_download, "USB 삽입", //config_info_data_download, "USB 삽입", //config_service_data_download, "USB 삽입", //config_program_download, "USB 삽입", //config_program_upload, QT_TR_NOOP("초기화"), //config_program_initialize, "%d.%d.%d.%d", //config_ip, "%d.%d.%d.%d", //config_gateway, "%d.%d.%d.%d", //config_netmask, "USB 삽입", //config_set_download, "USB 삽입", //config_set_upload, "%s", //config_set_half_energy, "%1", //config_set_auto_darkness, "%1", //config_set_ilc_cook_temphumi_ready, "%1", //config_set_load_ready, "%s", //config_duty_wash, QT_TR_NOOP("%1단계"), //config_loading_door_monitoring, QT_TR_NOOP("%1단계"), //config_cooking_door_monitoring QT_TR_NOOP("정보확인"), //config_software_info, "정보확인", //config_hotline_chef, "정보확인", //config_hotline_service, QT_TR_NOOP("헹굼"), //config_steam_wash "%s", //config_demo_mode, QT_TR_NOOP("엔지니어모드 진입"), //config_enter_engineer_mode, }; const char config_title[MAX_CONFIG_COUNT][64]={ QT_TR_NOOP("언어설정"), //0 QT_TR_NOOP("날짜와 시간"), QT_TR_NOOP("온도단위"), QT_TR_NOOP("화면밝기"), QT_TR_NOOP("응축식 후드의 정지지연"), QT_TR_NOOP("일품요리용 접시무게"), //5 QT_TR_NOOP("연회용 접시무게"), QT_TR_NOOP("ILC 조리선반 개수"), QT_TR_NOOP("ILC 조리선반 순서"), QT_TR_NOOP("ILC 조리 온습도 대기시간"), QT_TR_NOOP("조리시간 포맷"), //10 QT_TR_NOOP("실시간 단위 설정"), QT_TR_NOOP("잔여시간 시점변경설정"), //12 QT_TR_NOOP("마스터 볼륨"), //13 QT_TR_NOOP("키패드 소리 - 1"), QT_TR_NOOP("키패드 볼륨 "), //15 QT_TR_NOOP("적재/실행 요청"), QT_TR_NOOP("프로그램 단계 종료"), QT_TR_NOOP("조리시간 종료"), QT_TR_NOOP("과정 중단/오류 식별"), //19 QT_TR_NOOP("음향설정 초기화"), //20 QT_TR_NOOP("HACCP 데이터 다운로드"), //config_haccp_data_download, QT_TR_NOOP("인포 데이터 다운로드"), //config_info_data_download, QT_TR_NOOP("서비스 데이터 다운로드"), //config_service_data_download, QT_TR_NOOP("프로그램 다운로드"), //config_program_download, QT_TR_NOOP("프로그램 업로드"), //25 config_program_upload, QT_TR_NOOP("모든 프로그램 삭제"), //config_program_initialize, QT_TR_NOOP("IP 주소"), //config_ip, QT_TR_NOOP("IP 게이트웨이"), //config_gateway, QT_TR_NOOP("IP 넷마스크"), //config_netmask, QT_TR_NOOP("기본설정 다운로드"), //30 config_set_download, QT_TR_NOOP("기본설정 업로드"), //31 end of system config config_set_upload, QT_TR_NOOP("하프에너지"), //config_set_half_energy, QT_TR_NOOP("화면 밝기 자동 감소"), //config_set_auto_darkness, QT_TR_NOOP("ILC 조리 온습도 대기시간"), //config_set_ilc_cook_temphumi_ready, QT_TR_NOOP("적재중 대기 시간"), //config_set_load_ready, QT_TR_NOOP("의무 세척과정"), //config_duty_wash, QT_TR_NOOP("적재 중 문열림 시간 모니터링"), //config_loading_door_monitoring, QT_TR_NOOP("조리 중 문열림 시간 모니터링"), //config_cooking_door_monitoring QT_TR_NOOP("제품유형/소프트웨어에 관한 정보"), //config_software_info, QT_TR_NOOP("핫라인-쉐프"), //config_hotline_chef, QT_TR_NOOP("핫라인-서비스"), //config_hotline_service, QT_TR_NOOP("증기 발생기 헹굼"), //config_steam_wash QT_TR_NOOP("시연모드"), //config_demo_mode, QT_TR_NOOP("서비스단계(엔지니어모드)") //config_enter_engineer_mode, }; QSet m_setFavorite; public: static Config *getInstance(QObject *parent=0); //static void init(); void initConfig(void); void soundConfigReset(void); bool loadConfig(void); void applyConfig(void); bool saveConfig(void); Define::config_item getConfigValue(Define::ConfigType idx); void setConfigValue(Define::ConfigType idx, Define::config_item& itemdata); QString getValueString(Define::ConfigType idx); QString getTitleString(Define::ConfigType idx); bool isFavorite(Define::ConfigType idx); QSetIterator getConstBeginFavorite(); QList getConstSortedFavorite(); bool loadFavorite(void); bool saveFavorite(void); void insertFavorite(Define::ConfigType idx); void removeFavorite(Define::ConfigType idx); static QString getDateTimeString(uint32_t sec); static QString getTempString(int cel_temp); void execConfigWindow(QWidget *parent, Define::ConfigType idx); Define::config_lists configlist; signals: public slots: }; #endif // CONFIG_H