200 lines
7.4 KiB
C++
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)
|