102 lines
3.0 KiB
C++
102 lines
3.0 KiB
C++
#ifndef RM_SETTINGS_CFG_EMT_KR_H
|
|
#define RM_SETTINGS_CFG_EMT_KR_H
|
|
#if (USE_DEVICE_SETTINGS && RM_MODEL_EMT_KR)
|
|
#include <QObject>
|
|
#include <QJsonArray>
|
|
#include <stdint.h>
|
|
|
|
#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
|