GONEC_ARTERY_SetupSettings/Src/JSONSettings.c

874 lines
57 KiB
C

//
// Created by cfif on 09.11.22.
//
#include "Settings_General.h"
#include "tiny-json.h"
#include <string.h>
#include "JSONSettings.h"
#include "MainModesArbiter.h"
#include "httpd_base_func.h"
extern tMma MAIN_ENV;
const struct to_json jsonSettings_ArrayYesNo[] = {
{.value = "No", .vtype = t_to_string},
{.value = "Yes", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_ArraySpeed1[] = {
{.value = "none", .vtype = t_to_string},
{.value = "none", .vtype = t_to_string},
{.value = "4800", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_ArraySpeed2[] = {
{.value = "none", .vtype = t_to_string},
{.value = "2400", .vtype = t_to_string},
{.value = "4800", .vtype = t_to_string},
{.value = "9600", .vtype = t_to_string},
{.value = "19200", .vtype = t_to_string},
{.value = "38400", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_ArraySpeed3[] = {
{.value = "none", .vtype = t_to_string},
{.value = "none", .vtype = t_to_string},
{.value = "none", .vtype = t_to_string},
{.value = "9600", .vtype = t_to_string},
{.value = "19200", .vtype = t_to_string},
{.value = "38400", .vtype = t_to_string},
{.value = "76800", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_ArrayAccess[] = {
{.value = "Free", .vtype = t_to_string},
{.value = "Dedicated", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_ArrayTypeAddressing[] = {
{.value = "Direct", .vtype = t_to_string},
{.value = "Indirect", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_ArrayPwr[] = {
{.value = "10", .vtype = t_to_string},
{.value = "5", .vtype = t_to_string},
{.value = "2", .vtype = t_to_string},
{.value = "1", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_TypeFuel[] = {
{.value = "GASOLINE_TANK_PRESENT", .vtype = t_to_string},
{.value = "DIESEL_TANK_PRESENT", .vtype = t_to_string},
{.value = "COMPRESSED_NATURAL_GAS", .vtype = t_to_string},
{.value = "LIQUID_PROPANE_GAS", .vtype = t_to_string},
{.value = "ELECTRIC_ENERGY_STORAGE", .vtype = t_to_string},
{.value = "HYDROGEN_STORAGE", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_PortAssign[] = {
{.value = "External protocol", .vtype = t_to_string},
{.value = "Telemetry protocol", .vtype = t_to_string},
{.value = "Ams protokol", .vtype = t_to_string},
{.value = "LoRaWan protokol", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_TransmissionModeData[] = {
{.value = "Analog sensors", .vtype = t_to_string},
{.value = "Analog sensor and addition data", .vtype = t_to_string},
{NULL}
};
const struct to_json jsonSettings_ArrayMaxSize[] = {
{.value = "1300", .vtype = t_to_string},
{.value = "2600", .vtype = t_to_string},
{.value = "3900", .vtype = t_to_string},
{.value = "5200", .vtype = t_to_string},
{.value = "6500", .vtype = t_to_string},
{.value = "7800", .vtype = t_to_string},
{.value = "9100", .vtype = t_to_string},
{.value = "10400", .vtype = t_to_string},
{.value = "11700", .vtype = t_to_string},
{.value = "13000", .vtype = t_to_string},
{.value = "14300", .vtype = t_to_string},
{.value = "15600", .vtype = t_to_string},
{.value = "16900", .vtype = t_to_string},
{.value = "18200", .vtype = t_to_string},
{.value = "19500", .vtype = t_to_string},
{.value = "20800", .vtype = t_to_string},
{NULL}
};
uint8_t constCurData = 0xFF;
const tSettings settings[] = {
// Общие
{.enabled = true, .section = "General", .num = 1, .grp = 1, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.ATnum_v, .hlp = "ATnum"},
{.enabled = true, .section = "General", .num = 2, .grp = 1, .from = 0, .to = 5, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.ATpriority_v, .hlp = "ATpriority"},
{.enabled = false, .section = "General", .num = 3, .grp = 1, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.ATurgency_v, .hlp = "ATurgency"},
{.enabled = true, .section = "General", .num = 4, .grp = 1, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.loginADMIN_v, .hlp = "loginADMIN"},
{.enabled = true, .section = "General", .num = 5, .grp = 1, .from = 0, .to = 0, .typ = "psw", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.passADMIN_v, .hlp = "passADMIN"},
{.enabled = true, .section = "General", .num = 6, .grp = 1, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.loginINTEG_v, .hlp = "loginINTEG"},
{.enabled = true, .section = "General", .num = 7, .grp = 1, .from = 0, .to = 0, .typ = "psw", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.passINTEG_v, .hlp = "passINTEG"},
{.enabled = true, .section = "General", .num = 8, .grp = 1, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.loginUSER_v, .hlp = "loginUSER"},
{.enabled = true, .section = "General", .num = 9, .grp = 1, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.UserPass_v, .hlp = "UserPass"},
{.enabled = true, .section = "General", .num = 10, .grp = 1, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.BannedSAT_v, .hlp = "BannedSAT"},
{.enabled = true, .section = "General", .num = 11, .grp = 1, .from = -11, .to = 12, .typ = "dec", .vtype = t_to_int32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.GMTcorr_v, .hlp = "GMTcorr"},
{.enabled = false, .section = "General", .num = 12, .grp = 1, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_General.GreenMode_v, .val = &jsonSettings_ArrayYesNo, .hlp = "GreenMode"},
{.enabled = true, .section = "General", .num = 13, .grp = 1, .from = -90, .to = 90, .typ = "dec", .vtype = t_to_int32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.DefLatiGrad_v, .hlp = "DefLatiGrad"},
{.enabled = true, .section = "General", .num = 14, .grp = 1, .from = 0, .to = 59, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.DefLatiMin_v, .hlp = "DefLatiMin"},
{.enabled = true, .section = "General", .num = 15, .grp = 1, .from = -180, .to = 180, .typ = "dec", .vtype = t_to_int32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.DefLongGrad_v, .hlp = "DefLongGrad"},
{.enabled = true, .section = "General", .num = 16, .grp = 1, .from = 0, .to = 59, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_General.DefLongMin_v, .hlp = "DefLongMin"},
{.enabled = true, .section = "General", .num = 17, .grp = 1, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_General.SaveToSentBox_v, .val = &jsonSettings_ArrayYesNo, .hlp = "SaveToSentBox"},
// Частота и скорость
{.enabled = true, .section = "Frequency and speed", .num = 18, .grp = 2, .from = 0, .to = 240, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.freqMC1_v, .hlp = "freqMC1"},
{.enabled = true, .section = "Frequency and speed", .num = 19, .grp = 2, .from = 0, .to = 240, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.freqMC2_v, .hlp = "freqMC2"},
{.enabled = true, .section = "Frequency and speed", .num = 20, .grp = 2, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.SpeedPKsig_v, .val = &jsonSettings_ArraySpeed1, .hlp = "SpeedPKsig"},
{.enabled = true, .section = "Frequency and speed", .num = 21, .grp = 2, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.SpeedPKdata_v, .val = &jsonSettings_ArraySpeed2, .hlp = "SpeedPKdata"},
{.enabled = true, .section = "Frequency and speed", .num = 22, .grp = 2, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.SpeedOKsig_v, .val = &jsonSettings_ArraySpeed3, .hlp = "SpeedOKsig"},
{.enabled = true, .section = "Frequency and speed", .num = 23, .grp = 2, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.SpeedOKdata_v, .val = &jsonSettings_ArraySpeed3, .hlp = "SpeedOKdata"},
{.enabled = false, .section = "Frequency and speed", .num = 24, .grp = 2, .from = 0, .to = 240, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.timeRespOK_v, .hlp = "timeRespOK"},
{.enabled = true, .section = "Frequency and speed", .num = 25, .grp = 2, .from = 0, .to = 240, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.SItimeAdv_v, .hlp = "SItimeAdv"},
{.enabled = true, .section = "Frequency and speed", .num = 26, .grp = 2, .from = -70, .to = -60, .typ = "dec", .vtype = t_to_int32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.minRSSI_v, .hlp = "minRSSI"},
{.enabled = false, .section = "Frequency and speed", .num = 27, .grp = 2, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.TrebootREC_v, .hlp = "TrebootREC"},
{.enabled = true, .section = "Frequency and speed", .num = 28, .grp = 2, .from = 1, .to = 500000, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.TimeLifeRegistr_v, .hlp = "TimeLifeRegistr"},
{.enabled = true, .section = "Frequency and speed", .num = 29, .grp = 2, .from = 0, .to = 60, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.RegionRegistr_v, .hlp = "RegionRegistr"},
{.enabled = true, .section = "Frequency and speed", .num = 30, .grp = 2, .from = 0, .to = 5000, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.MaxDistanceSAT_v, .hlp = "MaxDistanceSAT"},
{.enabled = true, .section = "Frequency and speed", .num = 110, .grp = 2, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed.AllowedReg_v, .hlp = "AllowedREG"},
// Основной режим доступа
{.enabled = false, .section = "Basic access mode", .num = 31, .grp = 3, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.FlagAccess_v, .hlp = "FlagAccess"},
{.enabled = false, .section = "Basic access mode", .num = 32, .grp = 3, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.SpecRegion_v, .hlp = "SpecRegion"},
{.enabled = true, .section = "Basic access mode", .num = 33, .grp = 3, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.TypeAccess_v, .val = &jsonSettings_ArrayAccess, .hlp = "TypeAccess"},
{.enabled = true, .section = "Basic access mode", .num = 34, .grp = 3, .from = 0, .to = 255, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.NumGrpFrAcc_v, .hlp = "NumGrpFrAcc"},
{.enabled = true, .section = "Basic access mode", .num = 35, .grp = 3, .from = 0, .to = 255, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.NumGrpDedi_v, .hlp = "NumGrpDedi"},
{.enabled = true, .section = "Basic access mode", .num = 36, .grp = 3, .from = 0, .to = 1200, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.NumChDedi_v, .hlp = "NumChDedi"},
{.enabled = true, .section = "Basic access mode", .num = 37, .grp = 3, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.LinkGeoReg_v, .val = &jsonSettings_ArrayYesNo, .hlp = "LinkGeoReg"},
{.enabled = true, .section = "Basic access mode", .num = 38, .grp = 3, .from = 0, .to = 3, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.PerReqDown_v, .hlp = "PerReqDown"},
{.enabled = true, .section = "Basic access mode", .num = 39, .grp = 3, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.MaxSzDataOnKB_v, .val = &jsonSettings_ArrayMaxSize, .hlp = "MaxSzDataOnKB"},
{.enabled = true, .section = "Basic access mode", .num = 40, .grp = 3, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.ServerATnum_v, .hlp = "ServerATnum"},
{.enabled = false, .section = "Basic access mode", .num = 41, .grp = 3, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.CountATcalls_v, .hlp = "CountATcalls"},
{.enabled = true, .section = "Basic access mode", .num = 42, .grp = 3, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.TypeAddressing_v, .val = &jsonSettings_ArrayTypeAddressing, .hlp = "TypeAddressing"},
{.enabled = true, .section = "Basic access mode", .num = 43, .grp = 3, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Basic_Access.NumRegStation_v, .hlp = "NumRegStation"},
// Приемопередатчик
{.enabled = true, .section = "Transceiver", .num = 44, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.VCOADJ_v, .hlp = "VCOADJ:"},
{.enabled = true, .section = "Transceiver", .num = 45, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.VCOBIAS_v, .hlp = "VCOBIAS:"},
{.enabled = true, .section = "Transceiver", .num = 46, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.PABIAS_v, .hlp = "PABIAS:"},
{.enabled = true, .section = "Transceiver", .num = 47, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.CHARGE_v, .hlp = "CHARGE_PUMP:"},
{.enabled = true, .section = "Transceiver", .num = 48, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.PA_LEVEL_v, .hlp = "PA_LEVEL:"},
{.enabled = true, .section = "Transceiver", .num = 49, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.FREQERR_v, .hlp = "FREQERR:"},
{.enabled = true, .section = "Transceiver", .num = 50, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.RecV2CorrFreq_v, .hlp = "RecV2CorrFreq"},
{.enabled = true, .section = "Transceiver", .num = 51, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.RecV2CFtoDSP_v, .hlp = "RecV2CFtoDSP"},
{.enabled = true, .section = "Transceiver", .num = 52, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.TypeREC_v, .hlp = "TypeREC"},
{.enabled = true, .section = "Transceiver", .num = 53, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.CorrectVolt_v, .hlp = "CorrectVolt"}, //int
{.enabled = true, .section = "Transceiver", .num = 54, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.CorrVnan_v, .hlp = "CorrVnan(10mv)"}, //int
{.enabled = true, .section = "Transceiver", .num = 55, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.SWRlim_v, .hlp = "SWR lim(x100)"},
{.enabled = true, .section = "Transceiver", .num = 56, .grp = 7, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transceiver.AFUcorr_v, .hlp = "AFU corr(x100)"}, //int
// Режим TRACER
{.enabled = true, .section = "TRACER mode", .num = 57, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.mTracer_v, .val = &jsonSettings_ArrayYesNo, .hlp = "mTracer"},
{.enabled = true, .section = "TRACER mode", .num = 125, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.TransferCoordSettings_v, .val = &jsonSettings_ArrayYesNo, .hlp = "TransferCoordSettings"},
{.enabled = true, .section = "TRACER mode", .num = 58, .grp = 8, .from = 5, .to = 3600, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.PeSvCoor_v, .hlp = "PeSvCoor"},
{.enabled = false, .section = "TRACER mode", .num = 59, .grp = 8, .from = 0, .to = 15, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.cntPackExtCoord_v, .hlp = "cntPackExtCoord"},
{.enabled = true, .section = "TRACER mode", .num = 60, .grp = 8, .from = 1, .to = 38, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.minPtoSe_v, .hlp = "minPtoSe"},
{.enabled = false, .section = "TRACER mode", .num = 61, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.MAXalaS_v, .hlp = "MAXalaS"},
{.enabled = false, .section = "TRACER mode", .num = 62, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.ExtendedHeader_v, .val = &jsonSettings_ArrayYesNo, .hlp = "ExtendedHeader"},
{.enabled = true, .section = "TRACER mode", .num = 63, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.trSendSpeed_v, .val = &jsonSettings_ArrayYesNo, .hlp = "trSendSpeed"},
{.enabled = true, .section = "TRACER mode", .num = 64, .grp = 8, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.TrATsrv_v, .hlp = "TrATsrv"},
{.enabled = false, .section = "TRACER mode", .num = 65, .grp = 8, .from = 0, .to = 10, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.CoordUrgency_v, .hlp = "CoordUrgency"},
{.enabled = true, .section = "TRACER mode", .num = 66, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.SensorAD0volt_v, .val = &jsonSettings_ArrayYesNo, .hlp = "SensorAD0volt"},
{.enabled = false, .section = "TRACER mode", .num = 67, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.IgnitionInverse_v, .val = &jsonSettings_ArrayYesNo, .hlp = "IgnitionInverse"},
{.enabled = false, .section = "TRACER mode", .num = 68, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatMode_v, .val = &jsonSettings_ArrayYesNo, .hlp = "BatMode"},
{.enabled = false, .section = "TRACER mode", .num = 69, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatDistCalcSAT_v, .hlp = "BatDistCalcSAT"},
{.enabled = false, .section = "TRACER mode", .num = 70, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatPwONsetPoint_v, .hlp = "BatPwONsetPoint"},
{.enabled = false, .section = "TRACER mode", .num = 71, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatCntONtoTRANS_v, .hlp = "BatCntONtoTRANS"},
{.enabled = false, .section = "TRACER mode", .num = 72, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.CntPbatModeRep_v, .hlp = "CntPbatModeRep"},
{.enabled = false, .section = "TRACER mode", .num = 73, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatTimeOffSend_v, .hlp = "BatTimeOffSend"},
{.enabled = false, .section = "TRACER mode", .num = 74, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatTimeOffSetP_v, .hlp = "BatTimeOffSetP"},
{.enabled = false, .section = "TRACER mode", .num = 75, .grp = 8, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatTimeOffIGN_v, .hlp = "BatTimeOffIGN"},
{.enabled = false, .section = "TRACER mode", .num = 76, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.BatSENDshedule_v, .val = &jsonSettings_ArrayYesNo, .hlp = "BatSENDshedule"},
{.enabled = false, .section = "TRACER mode", .num = 77, .grp = 8, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Tracert.BatSENDsheT1_v, .hlp = "BatSENDsheT1"},
{.enabled = false, .section = "TRACER mode", .num = 78, .grp = 8, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Tracert.BatSENDsheT2_v, .hlp = "BatSENDsheT2"},
{.enabled = false, .section = "TRACER mode", .num = 79, .grp = 8, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Tracert.BatSENDsheT3_v, .hlp = "BatSENDsheT3"},
{.enabled = false, .section = "TRACER mode", .num = 80, .grp = 8, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Tracert.BatSENDsheT4_v, .hlp = "BatSENDsheT4"},
{.enabled = true, .section = "TRACER mode", .num = 111, .grp = 8, .from = 1, .to = 16, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.MaxBuf_v, .hlp = "MaxBuf"},
{.enabled = true, .section = "TRACER mode", .num = 123, .grp = 8, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Tracert.TransmissionModeData, .val = &jsonSettings_TransmissionModeData, .hlp = "TransmissionModeData"},
{.enabled = true, .section = "TRACER mode", .num = 124, .grp = 8, .from = 1, .to = 300, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Tracert.MaxFiles_v, .hlp = "MaxFiles"},
// Сетевые настройки
{.enabled = true, .section = "Network settings", .num = 82, .grp = 11, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Network.MyIPadres_v, .hlp = "MyIPadres"},
{.enabled = true, .section = "Network settings", .num = 83, .grp = 11, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Network.MyIPmask_v, .hlp = "MyIPmask"},
{.enabled = true, .section = "Network settings", .num = 84, .grp = 11, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Network.MyGateway_v, .hlp = "MyGateway"},
{.enabled = false, .section = "Network settings", .num = 85, .grp = 11, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Network.ftpAddr_v, .hlp = "ftp1Addr"},
{.enabled = false, .section = "Network settings", .num = 86, .grp = 11, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Network.ftpLogin_v, .hlp = "ftpLogin"},
{.enabled = false, .section = "Network settings", .num = 87, .grp = 11, .from = 0, .to = 0, .typ = "psw", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Network.ftpPass_v, .hlp = "ftpPass"},
// Настройки GSM
{.enabled = true, .section = "GSM settings", .num = 88, .grp = 12, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_GSM.GSMhttpAdrSrv, .hlp = "GSMhttpAdrSrv"},
{.enabled = true, .section = "GSM settings", .num = 89, .grp = 12, .from = 1, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_GSM.GSMhttpPort, .hlp = "GSMhttpPort"},
{.enabled = true, .section = "GSM settings", .num = 90, .grp = 12, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_GSM.HttpSrvLogin, .hlp = "HttpSrvLogin"},
{.enabled = true, .section = "GSM settings", .num = 91, .grp = 12, .from = 0, .to = 0, .typ = "psw", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_GSM.HttpSrvPass, .hlp = "HttpSrvPass"},
{.enabled = true, .section = "GSM settings", .num = 92, .grp = 12, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_GSM.GSMtimeMSG, .hlp = "GSMtimeMSG"},
{.enabled = true, .section = "GSM settings", .num = 93, .grp = 12, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_GSM.GSMtimeFLASH, .hlp = "GSMtimeFLASH"},
{.enabled = true, .section = "GSM settings", .num = 94, .grp = 12, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_GSM.GSMtimeSSOFT, .hlp = "GSMtimeSSOFT"},
{.enabled = true, .section = "GSM settings", .num = 95, .grp = 12, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_GSM.HttpSrvPerConn, .hlp = "HttpSrvPerConn"},
{.enabled = true, .section = "GSM settings", .num = 96, .grp = 12, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_GSM.GSMapnName, .hlp = "GSMapnName"},
// RS485 Bluetooth
{.enabled = false, .section = "RS485 Bluetooth", .num = 98, .grp = 14, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_RS485_Bluetooth.TOut485_v, .hlp = "TOut485"},
{.enabled = false, .section = "RS485 Bluetooth", .num = 99, .grp = 14, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_RS485_Bluetooth.TOutBlue_v, .hlp = "TOutBlue"},
{.enabled = true, .section = "RS485 Bluetooth", .num = 100, .grp = 14, .from = 2400, .to = 921600, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_RS485_Bluetooth.rs485baudrate_v, .hlp = "rs485baudrate"},
{.enabled = false, .section = "RS485 Bluetooth", .num = 101, .grp = 14, .from = 0, .to = 65535, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_RS485_Bluetooth.BTvisible_v, .hlp = "BTvisible"},
{.enabled = true, .section = "RS485 Bluetooth", .num = 117, .grp = 14, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_RS485_Bluetooth.PortAssign, .val = &jsonSettings_PortAssign, .hlp = "PortAssign"},
// Transmitter
{.enabled = true, .section = "Transmitter", .num = 102, .grp = 25, .from = 0, .to = 4095, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.CorPwr1, .hlp = "SetupPwr1"},
{.enabled = true, .section = "Transmitter", .num = 103, .grp = 25, .from = 0, .to = 4095, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.CorPwr2, .hlp = "SetupPwr2"},
{.enabled = true, .section = "Transmitter", .num = 104, .grp = 25, .from = 0, .to = 4095, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.CorPwr3, .hlp = "SetupPwr3"},
{.enabled = true, .section = "Transmitter", .num = 105, .grp = 25, .from = 0, .to = 4095, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.CorPwr4, .hlp = "SetupPwr4"},
{.enabled = true, .section = "Transmitter", .num = 106, .grp = 25, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.SelectCorPwr, .val = &jsonSettings_ArrayPwr, .hlp = "SelectCorPwr"},
{.enabled = false, .section = "Transmitter", .num = 107, .grp = 25, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.LogEn, .val = &jsonSettings_ArrayYesNo, .hlp = "LogEnable"},
{.enabled = true, .section = "Transmitter", .num = 108, .grp = 25, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.LogExtendedEn, .val = &jsonSettings_ArrayYesNo, .hlp = "SysLogEnable"},
{.enabled = true, .section = "Transmitter", .num = 109, .grp = 25, .from = 24, .to = 168, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Transmitter.TimeLifeFragIn, .hlp = "TimeLifeFragIn"},
{.enabled = true, .section = "MSD", .num = 112, .grp = 26, .from = 0, .to = 0, .typ = "txt", .vtype = t_to_string, .cur = &constCurData, .val = MAIN_ENV.storageIni.runtime.Settings_Msd.VIN, .hlp = "VIN"},
{.enabled = true, .section = "MSD", .num = 113, .grp = 26, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Msd.NumHuman, .hlp = "NumHuman"},
{.enabled = true, .section = "MSD", .num = 114, .grp = 26, .from = 0, .to = 65535, .typ = "sel", .vtype = t_to_array, .cur = &MAIN_ENV.storageIni.runtime.Settings_Msd.TypeFuel, .val = &jsonSettings_TypeFuel, .hlp = "TypeFuel"},
{.enabled = true, .section = "MSD", .num = 115, .grp = 26, .from = 1, .to = 15, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Msd.SatTimeInZone, .hlp = "SatTimeInZone"},
{.enabled = true, .section = "MSD", .num = 116, .grp = 26, .from = 0, .to = 89, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Msd.AlmSatAngle, .hlp = "AlmSatAngle"},
{.enabled = true, .section = "MSD", .num = 118, .grp = 26, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_Msd.SosATsrv, .hlp = "SosATsrv"},
{.enabled = true, .section = "AMS radar", .num = 119, .grp = 27, .from = 1, .to = 16, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_AmsRadar.AmsRadarMaxBuf, .hlp = "AmsRadarMaxBuf"},
{.enabled = true, .section = "AMS radar", .num = 120, .grp = 27, .from = 1, .to = 5, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_AmsRadar.AmsRadarNumPack, .hlp = "AmsRadarNumPack"},
{.enabled = true, .section = "AMS radar", .num = 121, .grp = 27, .from = 5, .to = 2000, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_AmsRadar.AmsRadarReqTime, .hlp = "AmsRadarReqTime"},
{.enabled = true, .section = "AMS radar", .num = 122, .grp = 27, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_AmsRadar.AmsRadarATsrv, .hlp = "AmsRadarATsrv"},
{.enabled = true, .section = "LoRa WAN", .num = 126, .grp = 28, .from = 1, .to = 16, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_LoRaWan.LoRaWanMaxBuf, .hlp = "LoRaWanMaxBuf"},
{.enabled = true, .section = "LoRa WAN", .num = 127, .grp = 28, .from = 0, .to = 99999, .typ = "dec", .vtype = t_to_uint32_t, .cur = &constCurData, .val = &MAIN_ENV.storageIni.runtime.Settings_LoRaWan.LoRaWanATsrv, .hlp = "LoRaWanATsrv"}
};
// Запрос настроек по группам
size_t SettingToJSON_grp(char *buf, size_t buf_len, char *grp, typeAuth auth) {
uint8_t grpArray[16];
uint8_t countGrp = 0;
bool isCreateJson = false;
char tmpGrp[8];
tmpGrp[0] = '\0';
struct {
int paramcount;
char *params_names[MAX_POST_GET_PARAMETERS];
char *params_vals[MAX_POST_GET_PARAMETERS];
} params_grp;
params_grp.paramcount = extract_grp_ex_parameters(grp,
params_grp.params_names,
params_grp.params_vals,
MAX_POST_GET_PARAMETERS);
for (int i = 0; i < params_grp.paramcount; ++i) {
grpArray[i] = atoi(params_grp.params_names[i]);
}
// grpArray[params_grp.paramcount] = 28;
// ++params_grp.paramcount;
char bufTmp[255];
size_t len = 0;
buf[0] = '[';
buf[1] = '\0';
for (int j = 0; j < params_grp.paramcount; ++j)
for (int i = 0; i < SettingSizeTbl; ++i) {
if (grpArray[j] == settings[i].grp) {
if (settings[i].enabled == false)
continue;
if (auth == AUTH_USER)
break;
if (auth == AUTH_INTEG) {
if (((settings[i].num >= 13) && (settings[i].num <= 17)) ||
((settings[i].num == 28) || (settings[i].num == 29)) ||
((settings[i].num >= 57) && (settings[i].num <= 61)) ||
((settings[i].num == 63) || (settings[i].num == 66)) ||
((settings[i].num >= 92) && (settings[i].num <= 94)) ||
((settings[i].num == 96))) {
} else {
continue;
}
}
if (*settings[i].cur != 0xFF) {
isCreateJson = true;
const struct to_json jsonSetting[] = {
{.name = "num", .value = &settings[i].num, .vtype = t_to_uint32_t, .stype = t_to_object},
{.name = "grp", .value = &settings[i].grp, .vtype = t_to_uint32_t},
{.name = "typ", .value = settings[i].typ, .vtype = t_to_string},
{.name = "val", .value = settings[i].val, .vtype = settings[i].vtype},
{.name = "cur", .value = settings[i].cur, .vtype = t_to_uint8_t},
{.name = "hlp", .value = settings[i].hlp, .vtype = t_to_string},
{NULL}
};
len += json_generate(bufTmp, jsonSetting, sizeof(bufTmp));
} else {
isCreateJson = true;
const struct to_json jsonSetting[] = {
{.name = "num", .value = &settings[i].num, .vtype = t_to_uint32_t, .stype = t_to_object},
{.name = "grp", .value = &settings[i].grp, .vtype = t_to_uint32_t},
{.name = "typ", .value = settings[i].typ, .vtype = t_to_string},
{.name = "val", .value = settings[i].val, .vtype = settings[i].vtype},
{.name = "hlp", .value = settings[i].hlp, .vtype = t_to_string},
{NULL}
};
len += json_generate(bufTmp, jsonSetting, sizeof(bufTmp));
}
strcat(bufTmp, ",");
strcat(buf, bufTmp);
}
}
if (isCreateJson) {
buf[strlen(buf) - 1] = ']';
} else {
strcat(buf, "]");
}
return strlen(buf);
}
// Запрос настроек номерам по переменных
size_t SettingToJSON_num(char *buf, size_t buf_len, char *grp, typeAuth auth) {
uint8_t numArray[16];
uint8_t countGrp = 0;
bool isCreateJson = false;
char tmpGrp[8];
tmpGrp[0] = '\0';
struct {
int paramcount;
char *params_names[MAX_POST_GET_PARAMETERS];
char *params_vals[MAX_POST_GET_PARAMETERS];
} params_grp;
params_grp.paramcount = extract_grp_ex_parameters(grp,
params_grp.params_names,
params_grp.params_vals,
MAX_POST_GET_PARAMETERS);
for (int i = 0; i < params_grp.paramcount; ++i) {
numArray[i] = atoi(params_grp.params_names[i]);
}
char bufTmp[255];
size_t len = 0;
buf[0] = '[';
buf[1] = '\0';
for (int j = 0; j < params_grp.paramcount; ++j)
for (int i = 0; i < SettingSizeTbl; ++i) {
if (numArray[j] == settings[i].num) {
if (auth == AUTH_USER)
break;
if (auth == AUTH_INTEG) {
if (((settings[i].num >= 13) && (settings[i].num <= 17)) ||
((settings[i].num == 28) || (settings[i].num == 29)) ||
((settings[i].num >= 57) && (settings[i].num <= 61)) ||
((settings[i].num == 63) || (settings[i].num == 66)) ||
((settings[i].num >= 92) && (settings[i].num <= 94)) ||
((settings[i].num == 96))) {
} else {
continue;
}
}
if (*settings[i].cur != 0xFF) {
isCreateJson = true;
const struct to_json jsonSetting[] = {
{.name = "num", .value = &settings[i].num, .vtype = t_to_uint32_t, .stype = t_to_object},
{.name = "grp", .value = &settings[i].grp, .vtype = t_to_uint32_t},
{.name = "typ", .value = settings[i].typ, .vtype = t_to_string},
{.name = "val", .value = settings[i].val, .vtype = settings[i].vtype},
{.name = "cur", .value = settings[i].cur, .vtype = t_to_uint8_t},
{.name = "hlp", .value = settings[i].hlp, .vtype = t_to_string},
{NULL}
};
len += json_generate(bufTmp, jsonSetting, sizeof(bufTmp));
} else {
isCreateJson = true;
const struct to_json jsonSetting[] = {
{.name = "num", .value = &settings[i].num, .vtype = t_to_uint32_t, .stype = t_to_object},
{.name = "grp", .value = &settings[i].grp, .vtype = t_to_uint32_t},
{.name = "typ", .value = settings[i].typ, .vtype = t_to_string},
{.name = "val", .value = settings[i].val, .vtype = settings[i].vtype},
{.name = "hlp", .value = settings[i].hlp, .vtype = t_to_string},
{NULL}
};
len += json_generate(bufTmp, jsonSetting, sizeof(bufTmp));
}
strcat(bufTmp, ",");
strcat(buf, bufTmp);
}
}
if (isCreateJson) {
buf[strlen(buf) - 1] = ']';
} else {
strcat(buf, "]");
}
return strlen(buf);
}
idPostResult_t testCorrectMAC(char *valStr) {
char Buf[64];
memcpy(Buf, valStr, 64);
struct {
int paramcount;
char *params_names[6];
char *params_vals[6];
} params;
params.paramcount = extract_mac_ex_parameters(Buf,
params.params_names,
params.params_vals,
6);
if (params.paramcount == 6) {
uint32_t local_mac0 = atoi(params.params_names[0]);
uint32_t local_mac1 = atoi(params.params_names[1]);
uint32_t local_mac2 = atoi(params.params_names[2]);
uint32_t local_mac3 = atoi(params.params_names[3]);
uint32_t local_mac5 = atoi(params.params_names[4]);
uint32_t local_mac6 = atoi(params.params_names[5]);
}
return Post_PARAM_ERR;
}
idPostResult_t testCorrectIP(char *valStr, uint32_t from, uint32_t to) {
char Buf[32];
memcpy(Buf, valStr, 32);
struct {
int paramcount;
char *params_names[4];
char *params_vals[4];
} params;
params.paramcount = extract_ip_ex_parameters(Buf,
params.params_names,
params.params_vals,
4);
if (params.paramcount == 4) {
uint32_t local_ip0 = atoi(params.params_names[0]);
uint32_t local_ip1 = atoi(params.params_names[1]);
uint32_t local_ip2 = atoi(params.params_names[2]);
uint32_t local_ip3 = atoi(params.params_names[3]);
if (((local_ip0 <= to) && (local_ip0 >= from)) && ((local_ip1 <= to) && (local_ip1 >= from)) &&
((local_ip2 <= to) && (local_ip2 >= from)) && ((local_ip3 <= to) && (local_ip3 >= from))) {
return Post_OK;
}
}
return Post_PARAM_ERR;
}
static idPostResult_t PresetSettings(uint32_t num, char *valStr, int32_t *valDec, int32_t from, int32_t to) {
if (valStr == NULL) {
if (*valDec < from) {
*valDec = from;
}
if (*valDec > to) {
*valDec = to;
}
// if ((valDec >= from) && (valDec <= to))
// return Post_OK;
} else {
if ((num == 82) || (num == 84) || (num == 85)) {
idPostResult_t result = testCorrectIP(valStr, 0, 254);
if (result)
return result;
}
if (num == 83) {
idPostResult_t result = testCorrectIP(valStr, 0, 255);
if (result)
return result;
}
return Post_OK;
}
return Post_OK;
// return Post_PARAM_ERR;
}
/*
// Сохранение настроек во временные
void NvmToRuntimeSettings() {
memcpy(&MAIN_ENV.storageIni.runtime.Settings_General, &MAIN_ENV.storageIni.nvm.Settings_General,
sizeof(MAIN_ENV.storageIni.nvm.Settings_General));
memcpy(&MAIN_ENV.storageIni.runtime.Settings_Basic_Access, &MAIN_ENV.storageIni.nvm.Settings_Basic_Access,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Basic_Access));
memcpy(&MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed, &MAIN_ENV.storageIni.nvm.Settings_Frequency_Speed,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Frequency_Speed));
memcpy(&MAIN_ENV.storageIni.runtime.Settings_Network, &MAIN_ENV.storageIni.nvm.Settings_Network,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Network));
memcpy(&MAIN_ENV.storageIni.runtime.Settings_Tracert, &MAIN_ENV.storageIni.nvm.Settings_Tracert,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Tracert));
memcpy(&MAIN_ENV.storageIni.runtime.Settings_Transceiver, &MAIN_ENV.storageIni.nvm.Settings_Transceiver,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Transceiver));
memcpy(&MAIN_ENV.storageIni.runtime.Settings_GSM, &MAIN_ENV.storageIni.nvm.Settings_GSM,
sizeof(MAIN_ENV.storageIni.nvm.Settings_GSM));
memcpy(&MAIN_ENV.storageIni.runtime.Settings_RS485_Bluetooth, &MAIN_ENV.storageIni.nvm.Settings_RS485_Bluetooth,
sizeof(MAIN_ENV.storageIni.nvm.Settings_RS485_Bluetooth));
}
// Загрузка настроек из временных
void RuntimeToNvmSettings() {
memcpy(&MAIN_ENV.storageIni.nvm.Settings_General, &MAIN_ENV.storageIni.runtime.Settings_General,
sizeof(MAIN_ENV.storageIni.nvm.Settings_General));
memcpy(&MAIN_ENV.storageIni.nvm.Settings_Basic_Access, &MAIN_ENV.storageIni.runtime.Settings_Basic_Access,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Basic_Access));
memcpy(&MAIN_ENV.storageIni.nvm.Settings_Frequency_Speed, &MAIN_ENV.storageIni.runtime.Settings_Frequency_Speed,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Frequency_Speed));
memcpy(&MAIN_ENV.storageIni.nvm.Settings_Network, &MAIN_ENV.storageIni.runtime.Settings_Network,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Network));
memcpy(&MAIN_ENV.storageIni.nvm.Settings_Tracert, &MAIN_ENV.storageIni.runtime.Settings_Tracert,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Tracert));
memcpy(&MAIN_ENV.storageIni.nvm.Settings_Transceiver, &MAIN_ENV.storageIni.runtime.Settings_Transceiver,
sizeof(MAIN_ENV.storageIni.nvm.Settings_Transceiver));
memcpy(&MAIN_ENV.storageIni.nvm.Settings_GSM, &MAIN_ENV.storageIni.runtime.Settings_GSM,
sizeof(MAIN_ENV.storageIni.nvm.Settings_GSM));
memcpy(&MAIN_ENV.storageIni.nvm.Settings_RS485_Bluetooth, &MAIN_ENV.storageIni.runtime.Settings_RS485_Bluetooth,
sizeof(MAIN_ENV.storageIni.nvm.Settings_RS485_Bluetooth));
}
*/
//json_t pool[2048];
// Запись настроек
idPostResult_t
vJsonToStructure(char *jsonTextBuf, const tSettings *jsonSettings, tModemMain *ModemMain, typeAuth auth, bool *grp1,
bool *grp2, bool *grp3, bool *grp8, bool *grp11, bool *grp12, bool *grp14, bool *grp25, bool *grp26) {
*grp1 = false;
*grp2 = false;
*grp3 = false;
*grp8 = false;
*grp11 = false;
*grp12 = false;
*grp14 = false;
*grp25 = false;
*grp26 = false;
size_t len_pool = strlen(jsonTextBuf);
json_t *pool = (json_t *) &jsonTextBuf[4096];
unsigned const qty = LEN_BUF_SMALL_ANSWER_HTTP - 4096 / sizeof(json_t);
// json_t *pool = (json_t *) bigBuffer;
// unsigned const qty = LEN_BUF_BIG_ANSWER_HTTP / sizeof(json_t);
// unsigned const qty = sizeof(pool) / sizeof(*pool);
char childName[64];
json_t const *json = json_create(jsonTextBuf, pool, qty);
json_t const *elementRoot0 = json_getChild(json);
while (elementRoot0 != 0) {
uint32_t num = 0xFFFFFFFF;
typSetting typ = TYP_SETTING_STR;
typSettingVal typVal = TYP_SETTING_VAL_STR;
char valText[255];
uint32_t valInteger = 0xFFFFFFFF;
uint32_t valCurInteger = 0xFFFFFFFF;
jsonType_t const jsonType0 = json_getType(elementRoot0);
if (jsonType0 == JSON_OBJ) {
json_t const *elementRoot1 = json_getChild(elementRoot0);
while (elementRoot1 != 0) {
strcpy(childName, json_getName(elementRoot1));
jsonType_t const jsonType = json_getType(elementRoot1);
if (strcmp(childName, "num") == 0) {
if (jsonType != JSON_INTEGER)
return Post_PARAM_ERR;
num = json_getInteger(elementRoot1);
}
if (strcmp(childName, "cur") == 0) {
if (jsonType != JSON_INTEGER)
return Post_PARAM_ERR;
typVal = TYP_SETTING_VAL_DEC;
valCurInteger = json_getInteger(elementRoot1);
}
if (strcmp(childName, "typ") == 0) {
if (jsonType != JSON_TEXT)
return Post_PARAM_ERR;
char typ_tmp[16];
typ_tmp[0] = '\0';
char const *str = json_getValue(elementRoot1);
strcat(typ_tmp, str);
if (strcmp(typ_tmp, "dec") == 0) {
typ = TYP_SETTING_DEC;
}
if (strcmp(typ_tmp, "sel") == 0) {
typ = TYP_SETTING_SEL;
}
}
if (strcmp(childName, "val") == 0) {
if (jsonType == JSON_TEXT) {
typVal = TYP_SETTING_VAL_STR;
valText[0] = '\0';
char const *str = json_getValue(elementRoot1);
if (strlen(str) > 255)
return Post_PARAM_ERR;
strcat(valText, str);
}
if (jsonType == JSON_INTEGER) {
typVal = TYP_SETTING_VAL_DEC;
valInteger = json_getInteger(elementRoot1);
}
}
elementRoot1 = json_getSibling(elementRoot1);
}
if ((typ == TYP_SETTING_DEC) && (typVal != TYP_SETTING_VAL_DEC)) {
return Post_PARAM_ERR;
}
if ((typ == TYP_SETTING_STR) && (typVal != TYP_SETTING_VAL_STR)) {
return Post_PARAM_ERR;
}
if ((typ == TYP_SETTING_SEL) && (typVal != TYP_SETTING_VAL_DEC)) {
return Post_PARAM_ERR;
}
// Поиск по номеру переменной
if (num != 0xFFFFFFFF) {
for (int i = 0; i < SettingSizeTbl; ++i) {
if (settings[i].num == num) {
if (settings[i].enabled == false)
continue;
if (settings[i].grp == 1)
*grp1 = true;
if (settings[i].grp == 2)
*grp2 = true;
if (settings[i].grp == 3)
*grp3 = true;
if (settings[i].grp == 8)
*grp8 = true;
if (settings[i].grp == 11)
*grp11 = true;
if (settings[i].grp == 12)
*grp12 = true;
if (settings[i].grp == 14)
*grp14 = true;
if (settings[i].grp == 25)
*grp25 = true;
if (settings[i].grp == 26)
*grp26 = true;
if (auth == AUTH_INTEG) {
if (((settings[i].num >= 13) && (settings[i].num <= 17)) ||
((settings[i].num == 28) || (settings[i].num == 29)) ||
((settings[i].num >= 57) && (settings[i].num <= 61)) ||
((settings[i].num == 63) || (settings[i].num == 66)) ||
((settings[i].num >= 92) && (settings[i].num <= 94)) ||
((settings[i].num == 96))) {
asm("nop");
} else {
continue;
}
}
if (typ == TYP_SETTING_STR) {
size_t lenStr = 255;
if (strlen(valText) > lenStr - 1)
return Post_PARAM_ERR;
idPostResult_t result = PresetSettings(num, valText, 0, settings[i].from, settings[i].to);
if (result)
return result;
memset((char *) settings[i].val, 0, lenStr);
memcpy((char *) settings[i].val, valText, strlen(valText));
break;
}
if (typ == TYP_SETTING_DEC) {
if (settings[i].vtype == t_to_int) {
idPostResult_t result = PresetSettings(num, NULL, &valInteger, settings[i].from,
settings[i].to);
if (result)
return result;
*(int32_t *) settings[i].val = (int32_t) valInteger;
break;
}
if (settings[i].vtype == t_to_int32_t) {
idPostResult_t result = PresetSettings(num, NULL, &valInteger, settings[i].from,
settings[i].to);
if (result)
return result;
*(int32_t *) settings[i].val = (int32_t) valInteger;
}
if (settings[i].vtype == t_to_uint32_t) {
idPostResult_t result = PresetSettings(num, NULL, &valInteger, settings[i].from,
settings[i].to);
if (result)
return result;
*(uint32_t *) settings[i].val = (uint32_t) valInteger;
}
if (settings[i].vtype == t_to_uint16_t) {
idPostResult_t result = PresetSettings(num, NULL, &valInteger, settings[i].from,
settings[i].to);
if (result)
return result;
*(uint16_t *) settings[i].val = (uint16_t) valInteger;
break;
}
if (settings[i].vtype == t_to_uint8_t) {
idPostResult_t result = PresetSettings(num, NULL, &valInteger, settings[i].from,
settings[i].to);
if (result)
return result;
break;
}
break;
}
if (typ == TYP_SETTING_SEL) {
idPostResult_t result = PresetSettings(num, NULL, &valCurInteger, settings[i].from,
settings[i].to);
if (result)
return result;
*(uint8_t *) settings[i].cur = (uint8_t) valCurInteger;
break;
}
}
}
}
}
elementRoot0 = json_getSibling(elementRoot0);
}
return Post_OK;
}