#ifndef OVENSTATICS_H #define OVENSTATICS_H #include <QObject> #include <time.h> #include <qmap.h> #include "../../app-prime-modbus/include/all_share.h" #include "udphandler.h" #include "oven.h" #include "servicedata.h" #define SYS_STATE_MAX 4 #define SYS_ERR_MAX 10 #define SYS_ERROR_MASK 0 #define COMM_ERROR_MASK 0 #define STATE_ERROR_MASK 0 #define SENSOR_ERROR_MASK 0 #define SYS_ERR_MASK_ERR_CLEAR_COOKING 0x00ff #define SYS_ERR_MASK_ERR_CLEAR_NONCOOKING 0x00ff #define SYS_ERR_MASK_COOKING 0x00ff #define SYS_ERR_MASK_NONCOOKING (SYS_ERR_OVNE_TEMP_ALARM) #define COMM_ERR_MAX 5 #define STATE_ERR_MAX 5 #define COMM_ERR_MASK_ERR_CLEAR_COOKING 0x0000 #define COMM_ERR_MASK_ERR_CLEAR_NONCOOKING 0x0000 #define COMM_ERR_MASK_COOKING 0x0000 #define COMM_ERR_MASK_NONCOOKING 0x0000 #define SENSOR_ERR_MAX 10 #define SENSOR_ERR_MASK_ERR_CLEAR 0x0000 #define SENSOR_ERR_MASK_COOKING 0x0000 #define SENSOR_ERR_MASK_NONCOOKING 0x0000 #define MAKE_MASK(MASK) (1<<MASK) #define LOAD_STATE1_UPPER_BUNNER 0x0001 #define LOAD_STATE1_LOWER_BUNNER 0x0002 #define LOAD_STATE1_STEAM_BUNNER 0x0004 #define LOAD_STATE1_UPPER_FAN 0x0008 #define LOAD_STATE1_LOWER_FAN 0x0010 #define LOAD_STATE1_STEAM_FAN 0x0020 #define LOAD_STATE1_CONVEC_FAN1 0x0040 #define LOAD_STATE1_CONVEC_FAN2 0x0080 /*#define LOAD_STATE2_DV 0x0001 #define LOAD_STATE2_CFAN 0x0002 #define LOAD_STATE2_WSV 0x0004 #define LOAD_STATE2_QNV 0x0008 #define LOAD_STATE2_SSV 0x0010 #define LOAD_STATE2_SNV 0x0020 #define LOAD_STATE2_ERRLED 0x0040 #define LOAD_STATE2_ATVLED 0x0080 #define LOAD_STATE2_HL 0x0100 #define LOAD_STATE2_DP 0x0200 #define LOAD_STATE2_SSP 0x0400 #define LOAD_STATE2_UNP 0x0800 #define LOAD_STATE2_HT1 0x1000 #define LOAD_STATE2_HT2 0x2000 #define LOAD_STATE2_HDM 0x4000 #define LOAD_STATE2_ST1 0x8000*/ #define LOAD_STATE2_DV 0x0001 #define LOAD_STATE2_CFAN 0x0002 #define LOAD_STATE2_WSV 0x0004 #define LOAD_STATE2_QNV 0x0008 #define LOAD_STATE2_SSV 0x0010 #define LOAD_STATE2_SNV 0x0020 #define LOAD_STATE2_HL 0x0040 #define LOAD_STATE2_DP 0x0080 #define LOAD_STATE2_SSP 0x0100 #define LOAD_STATE2_UNP 0x0200 #define LOAD_STATE2_HDM 0x0400 #define LOAD_STATE2_SGNV 0x0800 enum sys_state_type{ SYS_OFF_COOK_OFF=0, SYS_ON_COOK_OFF=1, SYS_ON_COOK_ON=2, SYS_OFF_COOK_ON=3 //unnormal state }; enum sys_error_id{ SYS_ERR_FIRE_TRIGGER1 =0, SYS_ERR_FIRE_TRIGGER2 , SYS_ERR_FIRE_TRIGGER3 , SYS_ERR_OVNE_TEMP_ALARM , SYS_ERR_QUN_TEMP_ALARM , SYS_ERR_CENTER_TEMP_ALARM , SYS_ERR_WALL_TEMP_ALARM , SYS_ERR_STAM_TEMP_ALARM , SYS_ERR_WATER_LEVEL_FAIL , SYS_ERR_WATER_SPLY_FAIL }; enum comm_err_id{ COMM_ERR_BUNNER1 =0, COMM_ERR_BUNNER2 , COMM_ERR_BUNNER3 , COMM_ERR_UPPERFAN , COMM_ERR_LOWERFAN }; enum state_err_id{ STATE_ERR_BUNNER1 =0, STATE_ERR_BUNNER2 , STATE_ERR_BUNNER3 , STATE_ERR_UPPERFAN , STATE_ERR_LOWERFAN }; enum sensor_err_id{ SENSOR_ERR_SENSOR_1 =0, SENSOR_ERR_SENSOR_2 , SENSOR_ERR_SENSOR_3 , SENSOR_ERR_SENSOR_4 , SENSOR_ERR_SENSOR_5 , SENSOR_ERR_SENSOR_6 , SENSOR_ERR_SENSOR_7 , SENSOR_ERR_SENSOR_8 , SENSOR_ERR_SENSOR_9 , SENSOR_ERR_SENSOR_10 }; enum error_exe_type{ error_type_allnone=0, error_type_onlypop, error_type_onlyeng, error_type_onlychk, error_type_popnonclr, error_type_engnonclr, error_type_clrsplit, error_type_chkclr, error_type_popclr, error_type_engclr, }; enum wash_mode_type{ wash_mode_nocleanser=1, wash_mode_simple, wash_mode_standard, wash_mode_strong, wash_mode_highspeed }; enum water_level_state{ water_level_normal = 0, water_level_low, water_level_high }; typedef union { uint32_t d32; struct { uint32_t reserved : 9; uint32_t door_open : 1; uint32_t wsv_open : 1; uint32_t dv_open : 1; uint32_t sgnv_open : 1; uint32_t water_level : 16; uint32_t snv_open : 1; uint32_t qnv_open : 1; uint32_t ssv_open : 1; }b; }realtime_data; typedef struct _popup_list_item{ QString strTitle; QString strDesc; bool bNeedClear; }popup_list_item; class OvenStatistics : public QObject { Q_OBJECT public: ServiceData* srvdata; static OvenStatistics* getInstance(QObject* parent = 0); static void destroy(); bool getNeedErrorClear(); void clearNeedErrorClear(); realtime_data getPartsRealtimeData(void); uint8_t getSensorTypeByIdx(uint16_t idx); type_temp getCurSensorValueByIdx(uint16_t idx); private: const error_exe_type sys_err_type_def[SYS_STATE_MAX][SYS_ERR_MAX]={ //30047 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr, error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_OFF state {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr, error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr, error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr, error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_OFF_COOK_ON state }; const error_exe_type comm_err_type_def[SYS_STATE_MAX][COMM_ERR_MAX] ={ //30048 {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_OFF {error_type_popclr,error_type_popclr,error_type_popclr,error_type_engnonclr,error_type_engnonclr}, //SYS_ON_COO_OFF {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_ON {error_type_popnonclr,error_type_popnonclr,error_type_popnonclr,error_type_engnonclr,error_type_engnonclr}, //SYS_OFF_COO_ON }; const error_exe_type state_err_type_def[SYS_STATE_MAX][STATE_ERR_MAX] ={ //30057 {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_OFF {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_OFF {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_ON_COO_ON {error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, //SYS_OFF_COO_ON }; const error_exe_type sensor_err_type_def[SYS_STATE_MAX][SENSOR_ERR_MAX]={ //30049 {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk, error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_OFF state {error_type_engnonclr,error_type_popclr,error_type_allnone,error_type_popclr,error_type_onlychk, error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_OFF state {error_type_onlychk,error_type_onlychk,error_type_allnone,error_type_popclr,error_type_popclr, error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr,error_type_popclr}, // SYS_ON_COOK_ON state {error_type_engnonclr,error_type_popnonclr,error_type_allnone,error_type_popnonclr,error_type_onlychk, error_type_popnonclr,error_type_allnone,error_type_allnone,error_type_allnone,error_type_popnonclr}, // SYS_OFF_COOK_ON state same with SYS_OFF_COOK_OFF }; const uint8_t sensorTypeInfo[MAX_LOG_SENSOR] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 0, 1, 1 }; //Type 2 is /10 value; type_temp curSensorValue[MAX_LOG_SENSOR]; static OvenStatistics* p_singletonInstance; UdpHandler *udp; Oven* oven; oven_control_t control; oven_state_t state; error_item* m_pLastErrItem; QMap<uint32_t, popup_list_item> m_mapPopupList; uint32_t m_nLastPopupidx; bool m_bPopupShow; bool curdoorstate; uint16_t curSysErrorState; uint16_t curCommErrorState; uint16_t curSensorErrorState; uint16_t curControlErrorState; bool bNeedErrorClear; bool bDataRefreshed; realtime_data realdata; explicit OvenStatistics(QObject* parent); ~OvenStatistics(); void processSystemError(uint16_t errflag,time_t ltime); void processCommError(uint16_t errflag,time_t ltime); void processSensorError(uint16_t errflag, time_t ltime); void processStateError(uint16_t errflat, time_t ltime); void processErrorItems(error_item *item, error_exe_type errtype, const QString &MsgDesc,const QString &MsgTitle, time_t ltime); public slots: void onDataChanged(); void oneSecTimerFired(void); void onErrorPopupClosed(QWidget* parent); }; #endif // OVENSTATICS_H