MS-DTU/Anjiehui7_TTS_ST_V2.4_LOCAL/User/flash_config.c

425 lines
15 KiB
C
Raw Permalink Normal View History

2025-04-03 14:18:58 +08:00
/*
*********************************************************************************************************
* IAR Development Kits
* on the
*
* M451
*
* Filename : flash_config.h
* Version : V1.00
* Programmer(s) : Qian Xianghong
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#include "includes.h"
// Flash<73><EFBFBD><EFBFBD><E6BBAE><EFBFBD>£<EFBFBD>
// 0~7K: boot-loader<65><72><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>LDROM<4F><4D><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ִ<EFBFBD><D6B4>
// 8~11K: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>2K+2K<32><4B>˫<EFBFBD>ݴ洢<DDB4><E6B4A2>
// 12~15K<35><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 16~255K: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֿ⣬<D6BF><E2A3AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 256~511K<31><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 512K~8M: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>GPRS<52>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD>ÿ黮<C3BF><E9BBAE>Ϊ4<CEAA><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CONFIG_DC_SIZE (DATA_BUFF_SIZE)
// <20><><EFBFBD>÷ֿ<C3B7><D6BF><EFBFBD>С<EFBFBD><D0A1>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ4<CEAA><34><EFBFBD>飬ѭ<E9A3AC><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>
#define CONFIG_BLOCK_SIZE (CONFIG_DC_SIZE * 4)
// <20><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D>ɲ<EFBFBD><C9B2><EFBFBD>ҳ<EFBFBD><D2B3>С
#define CONFIG_PARTITION_SIZE (CONFIG_BLOCK_SIZE * 4)
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 0~1, <20>ֿ<EFBFBD><D6BF><EFBFBD>: 0~3<><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 0~3
#define CONFIG_PARTITION(partition) (partition)
#define CONFIG_BLOCK(block) (block)
#define CONFIG_DC(DC) ((DC) - 1)
// <20><>дFlash<73><68><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
static rd_buff_t rdBuff;
// <20><>дFlash<73>Ļ<EFBFBD><C4BB><EFBFBD>
uint8_t Config_rwBuf[CONFIG_BLOCK_SIZE] = {0}; // <20><>չ<EFBFBD>ڴ<EFBFBD>
static uint32_t Flash_ErasePartition(uint8_t partition)
{
uint8_t i, loop = CONFIG_PARTITION_SIZE / SFLASH_ERASE_SIZE;
uint32_t u32StartAddr = SFLASH_CONFIG_BASE
+ CONFIG_PARTITION(partition) * CONFIG_PARTITION_SIZE;
for(i = 0; i < loop; i++)
{
SFlash_WriteEN();
SFlash_PageErase(u32StartAddr + i * SFLASH_ERASE_SIZE);
}
return TRUE;
}
static uint32_t Flash_ReadDC(uint8_t partition, uint8_t block, uint8_t DC, rd_buff_t *dataBuff)
{
uint32_t u32StartAddr = SFLASH_CONFIG_BASE
+ CONFIG_PARTITION(partition) * CONFIG_PARTITION_SIZE
+ CONFIG_BLOCK(block) * CONFIG_BLOCK_SIZE
+ CONFIG_DC(DC) * CONFIG_DC_SIZE;
SFlash_BufferRead(u32StartAddr, dataBuff->buff, CONFIG_DATA_LEN(DC));
return TRUE;
}
static uint32_t Flash_ReadBlock(uint8_t partition, uint8_t block, uint32_t forTest)
{
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>2<EFBFBD><32>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(CONFIG_BOARD_SELF == CONFIG_BOARD_SAMPLE || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
{
if(!Flash_ReadDC(partition, block, CAN_DC_BOTTLE_CONFIG, &rdBuff) || !Config_CheckValid(&rdBuff, CAN_DC_BOTTLE_CONFIG))
return FALSE;
if(forTest)
return TRUE;
dcBuff.configBottle = rdBuff.configBottle;
if(!Flash_ReadDC(partition, block, CAN_DC_SENSOR_CONFIG, &rdBuff) || !Config_CheckValid(&rdBuff, CAN_DC_SENSOR_CONFIG))
return FALSE;
dcBuff.configSensor = rdBuff.configSensor;
if(!Flash_ReadDC(partition, block, CAN_DC_DATA_CONFIG, &rdBuff) || !Config_CheckValid(&rdBuff, CAN_DC_DATA_CONFIG))
return FALSE;
dcBuff.configData = rdBuff.configData;
}
// <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(CONFIG_BOARD_SELF == CONFIG_BOARD_POWER || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
{
if(!Flash_ReadDC(partition, block, CAN_DC_DISPLAY_CONFIG, &rdBuff) || !Config_CheckValid(&rdBuff, CAN_DC_DISPLAY_CONFIG))
return FALSE;
if(CONFIG_BOARD_SELF == CONFIG_BOARD_POWER)
{
if(forTest)
return TRUE;
}
dcBuff.configDisplay = rdBuff.configDisplay;
}
return TRUE;
}
static uint32_t Flash_ReadConfig(uint8_t partition, uint32_t forTest, uint8_t *blockNo)
{
uint8_t block;
for(block = 0; block < 4; block++)
{
if(Flash_ReadBlock(partition, block, forTest))
{
*blockNo = block;
return TRUE;
}
}
return FALSE;
}
static uint32_t Flash_WriteConfig(uint8_t partition)
{
uint8_t block = 0;
uint8_t i;
uint32_t u32StartAddr;
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĿ<DDB5><C4BF><EFBFBD>
if(!Flash_ReadConfig(partition, TRUE, &block))
block = 3;
for(i = 0; i < 4; i++)
{
// ȷ<><C8B7>ѭ<EFBFBD><D1AD>д<EFBFBD><D0B4><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
block = (block + 1) % 4;
if(!Flash_ErasePartition(partition))
return FALSE;
memset(Config_rwBuf, 0xFF, CONFIG_BLOCK_SIZE);
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>2<EFBFBD><32>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(CONFIG_BOARD_SELF == CONFIG_BOARD_SAMPLE || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
{
rdBuff.configBottle = dcBuff.configBottle;
memmove(Config_rwBuf + CONFIG_DC(CAN_DC_BOTTLE_CONFIG) * CONFIG_DC_SIZE, rdBuff.buff, CONFIG_DATA_LEN(CAN_DC_BOTTLE_CONFIG));
rdBuff.configSensor = dcBuff.configSensor;
memmove(Config_rwBuf + CONFIG_DC(CAN_DC_SENSOR_CONFIG) * CONFIG_DC_SIZE, rdBuff.buff, CONFIG_DATA_LEN(CAN_DC_SENSOR_CONFIG));
rdBuff.configData = dcBuff.configData;
memmove(Config_rwBuf + CONFIG_DC(CAN_DC_DATA_CONFIG) * CONFIG_DC_SIZE, rdBuff.buff, CONFIG_DATA_LEN(CAN_DC_DATA_CONFIG));
}
// <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(CONFIG_BOARD_SELF == CONFIG_BOARD_POWER || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
{
rdBuff.configDisplay = dcBuff.configDisplay;
memmove(Config_rwBuf + CONFIG_DC(CAN_DC_DISPLAY_CONFIG) * CONFIG_DC_SIZE, rdBuff.buff, CONFIG_DATA_LEN(CAN_DC_DISPLAY_CONFIG));
}
u32StartAddr = SFLASH_CONFIG_BASE
+ CONFIG_PARTITION(partition) * CONFIG_PARTITION_SIZE
+ CONFIG_BLOCK(block) * CONFIG_BLOCK_SIZE;
if(SFlash_BufferWrite(u32StartAddr, Config_rwBuf, CONFIG_BLOCK_SIZE))
return TRUE;
}
return FALSE;
}
uint32_t Config_LoadConfig()
{
uint8_t block;
if(Flash_ReadConfig(0, FALSE, &block))
return TRUE;
return Flash_ReadConfig(1, FALSE, &block);
}
uint32_t Config_SaveConfig()
{
uint32_t ret = 1, ret1 = 1;
Config_ForceValid((rd_buff_t *) &dcBuff.configBottle, CAN_DC_BOTTLE_CONFIG);
Config_ForceValid((rd_buff_t *) &dcBuff.configSensor, CAN_DC_SENSOR_CONFIG);
Config_ForceValid((rd_buff_t *) &dcBuff.configData, CAN_DC_DATA_CONFIG);
Config_ForceValid((rd_buff_t *) &dcBuff.configDisplay, CAN_DC_DISPLAY_CONFIG);
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
ret = Flash_WriteConfig(0);
ret1= Flash_WriteConfig(1);
return ret || ret1;
}
void Config_Init()
{
}
void Config_Open()
{
uint16_t i;
extern const uint16_t LSrc_DensityExt[];
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ<EFBFBD>ڴ<EFBFBD>
// Config_rwBuf = SRAM_Alloc(CONFIG_BLOCK_SIZE);
delay_ms(20);
SFlash_UnlockBPR();
// <20><><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Config_setBottleDefParam(&dcBuff);
// Config_setSensorDefParam(&dcBuff);
// Config_setDataDefParam(&dcBuff);
// Config_setDisplayDefParam(&dcBuff);
// dcBuff.configDisplay.op_LOCAL_DISP = 1;
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>
Config_LoadConfig();
// <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
//// dcBuff.configBottle.PSN[0] = 19; // PSN: 2019041580002
//// dcBuff.configBottle.PSN[1] = 4;
//// dcBuff.configBottle.PSN[2] = 18;
//// dcBuff.configBottle.PSN[3] = 80;
//// dcBuff.configBottle.PSN[4] = 0;
//// dcBuff.configBottle.PSN[5] = 3;
//// Config_SaveConfig();
//// dcBuff.configData.intervalTrans = 120;
// <20>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˹<EFBFBD><CBB9><EFBFBD>ֵµ<D6B5>ά<EFBFBD><CEAC>ƽ̨<C6BD><CCA8>ַ
if(dcBuff.configBottle.serverVer == 3 || dcBuff.configBottle.serverVer == 4)
{
strcpy(dcBuff.configData.upgServer, dcBuff.configData.server);
}
// Һλ<D2BA>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD>
if(dcBuff.configDisplay.op_PRODUCT_CLASS != PRODUCT_CLASS_LEVEL)
{
dcBuff.configDisplay.op_PRODUCT_CLASS = PRODUCT_CLASS_LEVEL;
if(!dcBuff.configDisplay.op_DOL_VER)
{
dcBuff.configSensor.sensorPress.lowRange = 0; // 0MPa
dcBuff.configSensor.sensorPress.highRange = 4000; // 4MPa
dcBuff.configSensor.sensorPress.zeroValue = 683; // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0.5v / 3.0v
dcBuff.configSensor.sensorPress.fullValue = 3823; // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>2.8v / 3.0v
}
else
{
dcBuff.configSensor.sensorPress.lowRange = 0; // 0MPa
dcBuff.configSensor.sensorPress.highRange = 5000; // 5MPa
dcBuff.configSensor.sensorPress.zeroValue = 710; // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>4mA * 130<33><30> / 3.0v
dcBuff.configSensor.sensorPress.fullValue = 3550; // <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>20mA * 130<33><30> / 3.0v
}
dcBuff.configBottle.warnPress = 300; // ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dcBuff.configDisplay.L_Unit = UNIT_PCT; // <20><>ʾ<EFBFBD><CABE>λ
// <20><><EFBFBD><EFBFBD>
Config_SaveConfig();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>
for(i = 0; i < sizeof(dcBuff.configBottle.densityExt) / sizeof(uint16_t); i++)
{
if(dcBuff.configBottle.densityExt[i] == 0)
dcBuff.configBottle.densityExt[i] = LSrc_DensityExt[i];
}
// <20><><EFBFBD><EFBFBD><EFBFBD>¶ȱ<C2B6><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(dcBuff.configBottle.serverVer != 3 && dcBuff.configBottle.warnTemprH == 0 && dcBuff.configBottle.warnTempr == 0)
{
dcBuff.configBottle.warnTemprH = -300;
dcBuff.configBottle.warnTempr = -300;
}
//// // <20>ض<EFBFBD><D8B6><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD><EFBFBD>޸<EFBFBD>
//// if(dcBuff.configBottle.PSN[0] == 21 && dcBuff.configBottle.PSN[1] == 6 && dcBuff.configBottle.PSN[2] == 25
//// && dcBuff.configBottle.PSN[3] == 10 && dcBuff.configBottle.PSN[4] == 1
//// && dcBuff.configBottle.PSN[5] == 3
//// && dcBuff.configDisplay.op_HARDWARE_VER_MAJOR != 233)
//// {
//// dcBuff.configDisplay.op_HARDWARE_VER_MAJOR = 233;
//// dcBuff.configDisplay.op_ALARM_OUTPUT = 1;
//// dcBuff.configDisplay.op_LOW_ALARM_OUTPUT = 1;
//// dcBuff.configDisplay.op_PRESS_ALARM_OUTPUT = 1;
//// dcBuff.configDisplay.op_LOW_PRESS_ALARM_OUTPUT = 1;
//// dcBuff.configBottle.fullPct = 9300;
//// dcBuff.configBottle.emptyPct = 1000;
//// dcBuff.configBottle.warnPress = 0;
//// dcBuff.configBottle.warnPressH = 800;
//// Config_SaveConfig();
//// }
// <20><><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
if(CONFIG_BOARD_SELF == CONFIG_BOARD_SAMPLE || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
Config_fillSampleInfo(&dcBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ϵͳ<CFB5><CDB3>Ϣ
if(CONFIG_BOARD_SELF == CONFIG_BOARD_POWER || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
Config_fillPowerInfo(&dcBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ϵͳ<CFB5><CDB3>Ϣ
if(CONFIG_BOARD_SELF == CONFIG_BOARD_DISPLAY || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
Config_fillDisplayInfo(&dcBuff);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3>Ϣ
if(CONFIG_BOARD_SELF == CONFIG_BOARD_BLUETOOTH || CONFIG_BOARD_SELF == CONFIG_BOARD_SINGLE)
Config_fillBluetoothInfo(&dcBuff);
// <20><>ʾ<EFBFBD><EFBFBD><E6B1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
printf("\n****\tPSN: 20%02d%02d%02d%02d%03d ****\n", dcBuff.configBottle.PSN[0], dcBuff.configBottle.PSN[1],
dcBuff.configBottle.PSN[2], dcBuff.configBottle.PSN[3],
(dcBuff.configBottle.PSN[4] << 8) | dcBuff.configBottle.PSN[5]);
printf("\n****\tProductVer: %d ***\n", dcBuff.powerInfo.hardVer.minor);
printf("\n****\tHardVer: %d, SoftVer: %d, protcolVer: %d, SoftDate: 20%02d-%02d-%02d ***\n",
dcBuff.powerInfo.hardVer.major, dcBuff.powerInfo.softVer.minor, dcBuff.powerInfo.protocolVer.minor,
dcBuff.powerInfo.softDate.year, dcBuff.powerInfo.softDate.month, dcBuff.powerInfo.softDate.day);
if(dcBuff.configDisplay.op_DISP_MMWC_ONLY)
printf("\n\t*** op_DISP_MMWC_ONLY = 1 ***\n");
if(dcBuff.configDisplay.op_DOL_VER)
printf("\n\t*** op_DOL_VER = 1 ***\n");
if(dcBuff.configDisplay.op_BOX_VER)
printf("\n\t*** op_BOX_VER = 1 ***\n");
if(dcBuff.configDisplay.op_CELL_LOCATION)
printf("\n\t*** op_CELL_LOCATION = 1 ***\n");
if(dcBuff.configDisplay.op_NO_LOCATION)
printf("\n\t*** op_NO_LOCATION = 1 ***\n");
if(dcBuff.configDisplay.op_LEVEL_SENSOR_ONLY)
printf("\n\t*** op_LEVEL_SENSOR_ONLY = 1 ***\n");
if(!dcBuff.configDisplay.op_LEVEL_SENSOR_ONLY)
{
if(!dcBuff.configDisplay.op_USE_PT100_SENSOR)
printf("\n\t*** op_USE_PT100_SENSOR = 0 ***\n");
if(dcBuff.configDisplay.op_USE_PT100_SENSOR && dcBuff.configDisplay.op_PT100_MULTI != 10)
printf("\n\t*** op_PT100_MULTI = %d ***\n", dcBuff.configDisplay.op_PT100_MULTI);
if(!dcBuff.configDisplay.op_PT100_3LINE)
printf("\n\t*** op_PT100_3LINE = 0 ***\n");
if(!dcBuff.configDisplay.op_DIFF_RESIST)
printf("\n\t*** op_DIFF_RESIST = 0 ***\n");
}
if(dcBuff.configDisplay.op_SEND_GPS_DATA)
printf("\n\t*** op_SEND_GPS_DATA = 1 ***\n");
if(dcBuff.configDisplay.op_USE_CAPACITY_SENSOR)
printf("\n\t*** op_USE_CAPACITY_SENSOR = 1 ***\n");
if(dcBuff.configDisplay.op_LOCAL_DISP)
printf("\n\t*** op_LOCAL_DISP = 1 ***\n");
if(dcBuff.configDisplay.op_LOCAL_DISP_1S)
printf("\n\t*** op_LOCAL_DISP_1S = 1 ***\n");
if(dcBuff.configDisplay.op_ANTI_OVERFILL)
printf("\n\t*** op_ANTI_OVERFILL = 1 ***\n");
if(dcBuff.configDisplay.op_ANTI_SINGLE_CTRL)
printf("\n\t*** op_ANTI_SINGLE_CTRL = 1 ***\n");
if(dcBuff.configDisplay.op_ANTI_NORM_OPEN)
printf("\n\t*** op_ANTI_NORM_OPEN = 1 ***\n");
if(dcBuff.configDisplay.op_ALARM_OUTPUT)
printf("\n\t*** op_ALARM_OUTPUT = 1 ***\n");
if(dcBuff.configDisplay.op_LOW_ALARM_OUTPUT)
printf("\n\t*** op_LOW_ALARM_OUTPUT = 1 ***\n");
if(dcBuff.configDisplay.op_PRESS_ALARM_OUTPUT)
printf("\n\t*** op_PRESS_ALARM_OUTPUT = 1 ***\n");
if(dcBuff.configDisplay.op_LOW_PRESS_ALARM_OUTPUT)
printf("\n\t*** op_LOW_PRESS_ALARM_OUTPUT = 1 ***\n");
if(dcBuff.configDisplay.op_DIFF_420MA)
printf("\n\t*** op_DIFF_420MA = 1 ***\n");
if(dcBuff.configDisplay.op_PRESS_420MA)
printf("\n\t*** op_PRESS_420MA = 1 ***\n");
if(dcBuff.configDisplay.op_2ND_420MA_OUT_LEVEL)
printf("\n\t*** op_2ND_420MA_OUT_LEVEL = 1 ***\n");
if(dcBuff.configDisplay.op_USE_R0SEMOUNT)
printf("\n\t*** op_USE_R0SEMOUNT = 1 ***\n");
if(dcBuff.configDisplay.op_USE_SOLAR)
printf("\n\t*** op_USE_SOLAR = 1 ***\n");
if(dcBuff.configDisplay.op_USE_O2_LEAK)
printf("\n\t*** op_USE_O2_LEAK = 1 ***\n");
if(dcBuff.configDisplay.op_LEAK_ALARM_OUTPUT)
printf("\n\t*** op_LEAK_ALARM_OUTPUT = 1 ***\n");
if(dcBuff.configDisplay.op_USE_DOL_TTL)
printf("\n\t*** op_USE_DOL_TTL = 1 ***\n");
if(dcBuff.configDisplay.op_USE_HEIGHT_LEVEL)
printf("\n\t*** op_USE_HEIGHT_LEVEL = 1 ***\n");
if(dcBuff.configDisplay.op_USE_PCT_LEVEL)
printf("\n\t*** op_USE_PCT_LEVEL = 1 ***\n");
if(dcBuff.configDisplay.op_LNG_LORA)
printf("\n\t*** op_LNG_LORA = 1 ***\n");
if(dcBuff.configBottle.dispMode != DISP_MODE_ALL)
printf("\n\t*** dispMode = %d ***\n", dcBuff.configBottle.dispMode);
if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_MQTT)
printf("\n*** op_SERVER_PROTOCOL:\tMQTT ***\n");
else if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_HTTPS)
printf("\n*** op_SERVER_PROTOCOL:\tHTTPS ***\n");
else if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_HTTP)
printf("\n*** op_SERVER_PROTOCOL:\tHTTP ***\n");
else if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_TRAIN)
printf("\n*** op_SERVER_PROTOCOL:\tTRAIN ***\n");
else if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_AOYANG)
printf("\n*** op_SERVER_PROTOCOL:\tAOYANG ***\n");
else if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_BRASIL)
printf("\n*** op_SERVER_PROTOCOL:\tBRASIL ***\n");
else if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_FURUI)
printf("\n*** op_SERVER_PROTOCOL:\tFURUI ***\n");
else if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_HUIDA)
printf("\n*** op_SERVER_PROTOCOL:\tHUIDA ***\n");
else
printf("\n*** op_SERVER_PROTOCOL:\tTCP ***\n");
printf("\n*** Server:\t%s:%d ***\n",
dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_MQTT ?
SERVER_URLs[dcBuff.configDisplay.op_SERVER_INDEX] : dcBuff.configData.server,
dcBuff.configData.port);
if(dcBuff.configDisplay.op_SERVER_PROTOCOL == SERVER_PROTOCOL_TCP && dcBuff.configDisplay.op_UNIDIR_COMM)
printf("\n\t*** op_UNIDIR_COMM = 1 ***\n");
printf("\n*** Sample:\t%ds ***\n", dcBuff.configData.intervalSample);
printf("\n*** Send:\t%ds ***\n", dcBuff.configData.intervalTrans);
}