Files
fmviewer3/project/fm_viewer/cfg/rm_settings_cfg_emt_kr.h
2026-02-21 17:11:31 +09:00

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