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

200 lines
7.4 KiB
C++

#include "rm_settings_cfg_xdr6688.h"
#if (USE_DEVICE_SETTINGS)
#include <QDebug>
#include <stdio.h>
#include <QFile>
#if (RM_MODEL == RM_MODEL_TYPE_XLDR_88)
unsigned char CFG::data[SETTINGS_CFG_SIZE] = {0,};
unsigned char CFG::stored[SETTINGS_CFG_SIZE] = {0,};
MODEL_XDR CFG::model = MODEL_XDR_NOT_DEFINED;
void CFG::setDefault()
{
switch (CFG::model) {
case MODEL_XDR_66:
CFG66::setDefault();
break;
case MODEL_XDR_88:
CFG88::setDefault();
break;
default:
break;
}
}
void CFG::backup()
{
memcpy(CFG::stored,CFG::data,SETTINGS_CFG_SIZE);
}
void CFG::restore()
{
memcpy(CFG::data,CFG::stored,SETTINGS_CFG_SIZE);
}
QString CFG::modelName()
{
switch (CFG::model)
{
case MODEL_XDR_66:
return "XDR-66";
case MODEL_XDR_88:
return "XLDR-88";
default:
qInfo() << "MODEL NOT DEFINED";
}
return "";
}
bool CFG::setModel(QString modelString)
{
bool bSuccess = true;
if(modelString == "XDR-66") {
CFG::model = MODEL_XDR_66;
}
else if(modelString == "XLDR-88") {
CFG::model = MODEL_XDR_88;
}
else
{
bSuccess = false;
}
return bSuccess;
}
bool CFG::load(QString path)
{
bool bSuccess = false;
if(QFile::exists(path)) {
FILE* f = fopen(path.toLocal8Bit(),"r+b");
if(f != NULL)
{
size_t readSize = (model == MODEL_XDR_66) ? SETTINGS_CFG_SIZE : SETTINGS_CFG_SIZE_88;
unsigned char d[SETTINGS_CFG_SIZE] = {0,};
size_t read = fread(d,1,SETTINGS_CFG_SIZE,f);
fclose(f);
#if (CFG_SEARCH_DISK)
bSuccess = read > 0 && strncmp(SETTINGS_TAG,(const char*)d,strlen(SETTINGS_TAG)) == 0;
#else
bSuccess = read > 0;
#endif
if(bSuccess == true)
{
memcpy(CFG::data,d,read);
// EMS 데이터로 나머지는 초기화 해야함
if(read != readSize) {
setDefault();
}
}
else
{
setDefault();
}
}
}
CFG::backup(); // 현재 데이터 보존
return bSuccess;
}
bool CFG::save(QString path)
{
bool bSuccess = false;
FILE* f = fopen(path.toLocal8Bit(),"w+b");
if(f != NULL)
{
size_t write = 0;
if(model == MODEL_XDR_88) {
write = fwrite(CFG::data,1,SETTINGS_CFG_SIZE_88,f);
}
else {
write = fwrite(CFG::data,1,SETTINGS_CFG_SIZE,f);
}
bSuccess = write > 0;
fclose(f);
}
CFG::backup();
return bSuccess;
}
void CFG66::setDefault() {
// XDR-66
// SD_SENSOR = 21, // SENSOR_LOW = 0, SENSOR_LOW_MID, SENSOR_MIDDLE, SENSOR_MID_HI,SENSOR_HIGH
// SD_SIZE = 22, // SIZE_800x600, SIZE_640x320
// SD_FRAME = 23, // FRAME_20, FRAME_25, FRAME_30
// SD_VOLUME = 24, // VOLUME_0~5
// SD_VOICE = 25, // VOICE_DISABLE, VOICE_ENABLE
unsigned char def[SETTINGS_CFG_SIZE] = { 0x00,// 0
0x00,// 1
0x00,// 2
0x00,// 3
0x00,// 4
0x00,// 5
0x00,// 6
0x00,// 7
0x00,// 8
0x00,// 9
0x00,// 10
0x00,// 11
0x00,// 12
0x00,// 13
0x00,// 14
0x00,// 15
0x00,// 16
0x00,// 17
0x00,// 18
0x00,// 19
0x00,// 20
0x02,// 21 // SD_SENSOR = SENSOR_MIDDLE
0x00,// 22 // SD_SIZE = SIZE_800x600
0x00,// 23 // SD_FRAME = FRAME_20
0x04,// 24 // SD_VOLUME = VOLUME_4
0x01,// 25 // SD_VOICE = VOICE_ENABLE
0x00 // RESERVED
};
// 부분만 초기화함
memcpy(&CFG::data[21],&def[21],5);
}
void CFG88::setDefault() {
// XLDR-88
unsigned char def[SETTINGS_CFG_SIZE_88] = { 0x00,// 0
0x00,// 1
0x00,// 2
0x00,// 3
0x00,// 4
0x00,// 5
0x00,// 6
0x00,// 7
0x00,// 8
0x00,// 9
0x00,// 10
0x00,// 11
0x00,// 12
0x00,// 13
0x00,// 14
0x00,// 15
0x00,// 16
0x01,// 17 // SD88_SCREEN_SAVEER
0x02,// 18 // SD88_SCREEN_PIP
0x03,// 19 // SD88_SPEAKER
0x01,// 20 // SD88_MIC
0x00,// 21 // SD88_VOLUME
0x02,// 22 // SD88_GSENSOR_NORMAL
0x02,// 23 // SD88_GSENSOR_PARKING
0x00,// 24 // SD88_PARKING_ON (2021/04/01 OFF)
0x00,// 25 // SD88_PARKING_VOLTAGE
0x00,// 26 // SD88_VIDEO_RESOLUTION
0x01,// 27 // SD88_ADMIN_PW (SD88_VIDEO_QUALITY) -> 비밀번호 ON:/OFF1
0x02,// 28 // SD88_VIDEO_FRAME
0x01,// 29 // SD88_VIDEO_SUB_CAMERA
0x01,// 30 // SD88_VIDEO_HDR
0x01,// 31 // SD88_VIDEO_NIGHT_VISION (2021/04/01 OFF)
};
// 부분만 초기화 함
//memcpy(&CFG::data[11],&def[11],21);
memcpy(&CFG::data[17],&def[17],15);
//memcpy(CFG::data,def,SETTINGS_CFG_SIZE_88);
}
#endif // #if (RM_MODEL == RM_MODEL_TYPE_XLDR_88)
#endif // #if (USE_DEVICE_SETTINGS)