#ifndef RM_SETTINGS_CFG_EMT_KR_H #define RM_SETTINGS_CFG_EMT_KR_H #if (USE_DEVICE_SETTINGS && RM_MODEL_EMT_KR) #include #include #include #define SETTINGS_CFG_SIZE 248 // 248 BYTE typedef enum { CFG_SUCCESS = 0, // 성공 CFG_IO_ERROR = 1, // 파일 열기, 읽기 실패 CFG_WRONG_FILE = 2, // 잘못된 파일 에러 CFG_CHECKSUM_ERROR = 3, // 체크섬 확인실패 // CFG_MODEL_CODE_ERROR = 3, // 모델코드 에러 UI 에서 확인 CFG_UNKNOWN_ERROR = 99, // ?? } CFG_ERROR_CODE; typedef struct _EMTINFO { uint32_t magic; uint32_t model; //micom ver : 31 ~ 16, model : 15 ~ 0 uint32_t version;//F/W version uint32_t file1; //1 bit + 31 bit ( 1 : file exist, 31 : file size ) uint32_t file2; //1 bit + 31 bit ( 1 : file exist, 31 : file size ) } EMTINFO; // 제품 코드에 따라 설정항목이 달라짐 // NM5000(5101),MIRROR5(5103) = MAGNUS // NP5000(5102),PRO5(5104) = TRINITY typedef enum { NM5000 = 5101, // NM5000 OFFLINE NP5000 = 5102, // TRINITY OFFLINE MIRROR5 = 5103, // Mirror5(MAGNUS ONLINE) PRO5 = 5104, // Pro5(TRINITY ONLINE) A360X = 5105, // Cyclops = 360X } MODEL_CODE; // 설정 편집시 1로 지정해야 하는 OFFSET #define SD_VIEWSETTING_OFFSET 143 class CFG : public QObject { Q_OBJECT public: static QString cfgPath; static QStringList model_names;// = QStringList() << "NM5000" << "NP5000"; static uint32_t model_codes[];// = { 5101, 5102}; static QJsonArray items; static QJsonObject _findType(QString key,int* index); static unsigned char data[SETTINGS_CFG_SIZE]; static unsigned char stored[SETTINGS_CFG_SIZE]; static EMTINFO info; //! \brief 모델에 따른 JSON 파일 확인 //! \return static bool _loadJSon(); static CFG_ERROR_CODE load(QString path); static bool save(QString path); static void backup(); static void restore(); static void setDefault(); //! \brief 데이터 수정여부 확인 //! \return static bool isEdited(); static void clear(); static QString modelName(); static uint32_t version(); private: //! \brief 모델정보등 검증 //! \return static CFG_ERROR_CODE verifyInfo(); //static uint16_t appGetSum16_Emt(); // uint16_t *Buf, uint32_t Size static bool appUserSettingCheck(); // 현재 데이터 CHECKSUM 계산하여 반영 static void _updateCheckSum(); // 설정항목을 그룹 제외하고 직렬화 static void _getItems(QJsonArray& in, QJsonArray& ret); static void serializeItems(QJsonArray& citems); // checkData1 << 8 | checkData2 //! \brief EMTINFO 를 제외한 데이터를 확인하여 //! \return checkData1 << 8 | checkData2 static uint16_t checkSum(); signals: public slots: }; #endif // #if (USE_DEVICE_SETTINGS && RM_MODEL_EMT_KR) #endif // RM_SETTINGS_CFG_EMT_KR_H