parameters.c 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241
  1. /********************************* (C) РОТЕК ***********************************
  2. * @module parameters
  3. * @file parameters.c
  4. * @version 1.0.0
  5. * @date XX.XX.XXXX
  6. * $brief Template
  7. *******************************************************************************
  8. * @history Version Author Comment
  9. * XX.XX.XXXX 1.0.0 Telenkov D.A. First release.
  10. *******************************************************************************
  11. */
  12. #include "stm32f4xx.h"
  13. #include "parameters.h"
  14. #include "settings_api.h"
  15. #include "rtc.h"
  16. #ifndef BT6702_SERVICE
  17. #include "snmp_api.h"
  18. #include "snmp.h"
  19. #include "megatec.h"
  20. #ifdef HARDWARE_BT6709
  21. #include "server.h"
  22. #endif
  23. #endif
  24. #include "sntp.h"
  25. #include "lwip/snmp.h"
  26. #include "lwip/sys.h"
  27. #include "common_config.h"
  28. //#include "d_inouts.h"
  29. #include "gpio.h"
  30. #include "round.h"
  31. //#if defined HARDWARE_BT6703
  32. #ifdef PRINTF_STDLIB
  33. #include <stdio.h>
  34. #endif
  35. #ifdef PRINTF_CUSTOM
  36. #include "tinystdio.h"
  37. #endif
  38. #include <string.h>
  39. #include <stdlib.h>
  40. #include <math.h>
  41. #ifdef HARDWARE_BT6709
  42. extern const char* name_traps[];
  43. #endif
  44. //#endif
  45. /**
  46. * @brief Структура для хранения состояний дискретных входов
  47. */
  48. //extern GPIO_INPUTS_t sGpioInputs;
  49. /**
  50. * @brief Общая структура настроек
  51. */
  52. extern SETTINGS_t sSettings;
  53. /**
  54. * @brief Структура для хранения временных сетевых настроек
  55. */
  56. extern WEB_PARAMS_t sTempWebParams;
  57. /**
  58. * @brief Флаг подтверждения новых сетевых параметров пользователем
  59. */
  60. extern bool fConfirmWebParams;
  61. #ifndef BT6702_SERVICE
  62. // ************************************************************************** //
  63. // Параметры UPS
  64. /**
  65. * @brief
  66. */
  67. void GetInputFreqStr(char *str, uint8_t *len)
  68. {
  69. sprintf(str, "%0.1f", UPS.Freq_in);
  70. *len = strlen(str);
  71. }
  72. /**
  73. * @brief
  74. */
  75. void GetInputFreqInt(float *value)
  76. {
  77. *value = UPS.Freq_in;
  78. }
  79. /**
  80. * @brief
  81. */
  82. void GetOutputFreqStr(char *str, uint8_t *len)
  83. {
  84. sprintf(str, "%0.1f", UPS.Freq_in);
  85. *len = strlen(str);
  86. }
  87. /**
  88. * @brief
  89. */
  90. void GetInputVoltageStr(char *str, uint8_t *len)
  91. {
  92. sprintf(str, "%0.1f", UPS.VAC_in);
  93. *len = strlen(str);
  94. }
  95. /**
  96. * @brief
  97. */
  98. void GetInputVoltageInt(float *value)
  99. {
  100. *value = UPS.VAC_in;
  101. }
  102. /**
  103. * @brief
  104. */
  105. void GetOutputVoltageStr(char *str, uint8_t *len)
  106. {
  107. sprintf(str, "%0.1f", UPS.VAC_out);
  108. *len = strlen(str);
  109. }
  110. /**
  111. * @brief
  112. */
  113. void GetOutputVoltageInt(float *value)
  114. {
  115. *value = UPS.VAC_out;
  116. }
  117. /**
  118. * @brief
  119. */
  120. void GetPowerStr(char *str, uint8_t *len)
  121. {
  122. sprintf(str, "%d", UPS.Load);
  123. *len = strlen(str);
  124. }
  125. /**
  126. * @brief
  127. */
  128. void GetPowerInt(int32_t *value)
  129. {
  130. *value = UPS.Load;
  131. }
  132. /**
  133. * @brief
  134. */
  135. void GetBatCapacityStr(char *str, uint8_t *len)
  136. {
  137. sprintf(str, "%d", UPS.SOC);
  138. *len = strlen(str);
  139. }
  140. /**
  141. * @brief
  142. */
  143. void GetBatCapacityInt(int32_t *value)
  144. {
  145. *value = UPS.SOC;
  146. }
  147. /**
  148. * @brief
  149. */
  150. void GetRuntimeStr(char *str, uint8_t *len)
  151. {
  152. sprintf(str, "%d", UPS.work_time);
  153. *len = strlen(str);
  154. }
  155. /**
  156. * @brief
  157. */
  158. void GetRuntimeInt(int32_t *value)
  159. {
  160. *value = UPS.work_time;
  161. }
  162. /**
  163. * @brief
  164. */
  165. void GetAKBWorktimeStr(char *str, uint8_t *len)
  166. {
  167. sprintf(str, "%d", (UPS.akb_work_time / 60));
  168. *len = strlen(str);
  169. }
  170. /**
  171. * @brief
  172. */
  173. void GetAKBWorktimeInt(int32_t *value)
  174. {
  175. *value = (int32_t)(UPS.akb_work_time / 60);
  176. }
  177. /**
  178. * @brief
  179. */
  180. void GetInternalTempStr(char *str, uint8_t *len)
  181. {
  182. sprintf(str, "%0.1f", UPS.Temp);
  183. *len = strlen(str);
  184. }
  185. /**
  186. * @brief
  187. */
  188. void GetInternalTempInt(float *value)
  189. {
  190. *value = UPS.Temp;
  191. }
  192. /**
  193. * @brief
  194. */
  195. void GetAlarmMonitorStr(char *str, uint8_t *len)
  196. {
  197. sprintf(str, "%d", UPS.Alarm);
  198. *len = strlen(str);
  199. }
  200. /**
  201. * @brief
  202. */
  203. void GetConnectMonitorStr(char *str, uint8_t *len)
  204. {
  205. if (UPS.Present) {
  206. strcpy(str, "0");
  207. } else {
  208. strcpy(str, "1");
  209. }
  210. *len = strlen(str);
  211. }
  212. #ifdef HARDWARE_BT6709
  213. /**
  214. * @brief
  215. */
  216. void GetInputCurrentStr(char *str, uint8_t *len)
  217. {
  218. float value;
  219. if (UPS.VAC_in != 0) {
  220. value = (sSettings.UPS_Setting.ups_power * UPS.Load) / (100 * K_EFFICIENCY * UPS.VAC_in);
  221. } else {
  222. value = 0;
  223. }
  224. sprintf(str, "%0.3f", roundto(value, 3));
  225. *len = strlen(str);
  226. }
  227. /**
  228. * @brief
  229. */
  230. void GetInputCurrentInt(float *value)
  231. {
  232. if (UPS.VAC_in != 0) {
  233. *value = (sSettings.UPS_Setting.ups_power * UPS.Load) / (100 * K_EFFICIENCY * UPS.VAC_in);
  234. } else {
  235. *value = 0;
  236. }
  237. }
  238. /**
  239. * @brief
  240. */
  241. void GetOutputCurrentStr(char *str, uint8_t *len)
  242. {
  243. float value;
  244. if (UPS.VAC_out != 0) {
  245. value = (sSettings.UPS_Setting.ups_power * UPS.Load) / (100 * UPS.VAC_out);
  246. } else {
  247. value = 0;
  248. }
  249. sprintf(str, "%0.3f", roundto(value, 3));
  250. *len = strlen(str);
  251. }
  252. /**
  253. * @brief
  254. */
  255. void GetOutputCurrentInt(float *value)
  256. {
  257. if (UPS.VAC_out != 0) {
  258. *value = (sSettings.UPS_Setting.ups_power * UPS.Load) / (100 * UPS.VAC_out);
  259. } else {
  260. *value = 0;
  261. }
  262. }
  263. /**
  264. * @brief
  265. */
  266. void GetVoltageAKBtStr(char *str, uint8_t *len)
  267. {
  268. float value;
  269. if (UPS.Vakb_curr < 7) {
  270. value = AKB_NUM_CELL * (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
  271. } else {
  272. value = (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
  273. }
  274. sprintf(str, "%0.1f", roundto(value, 1));
  275. *len = strlen(str);
  276. }
  277. /**
  278. * @brief
  279. */
  280. void GetVoltageAKBInt(float *value)
  281. {
  282. if (UPS.Vakb_curr < 7) {
  283. *value = AKB_NUM_CELL * (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
  284. } else {
  285. *value = (sSettings.UPS_Setting.Uakb / AKB_VOLTAGE) * UPS.Vakb_curr;
  286. }
  287. }
  288. #endif
  289. // ************************************************************************** //
  290. // Alarms
  291. /**
  292. * @brief Индикация аварийных ситуаций
  293. */
  294. void GetAlarmStr(char *str, uint8_t *len)
  295. {
  296. sprintf(str, "%d", UPS.Status);
  297. *len = strlen(str);
  298. }
  299. /**
  300. * @brief Индикация аварийных ситуаций
  301. */
  302. void GetUPSAlarmStr(char *str, uint8_t *len)
  303. {
  304. if (((UPS.Status >> 7) & 0x01) || ((UPS.Status >> 4) & 0x01) || (UPS.Alarm & 0x01)) {
  305. strcpy(str, "Авария");
  306. } else if (!((UPS.Status >> 7) & 0x01) && !((UPS.Status >> 4) & 0x01) && !(UPS.Alarm & 0x01)) {
  307. strcpy(str, "Норма");
  308. } else if (((UPS.Status >> 1) & 0x01)) {
  309. strcat(str, "/Отключение нагрузки");
  310. }
  311. *len = strlen(str);
  312. }
  313. /**
  314. * @brief Индикация аварийных ситуаций
  315. */
  316. void GetAKBAlarmStr(char *str, uint8_t *len)
  317. {
  318. if (((UPS.Status >> 6) & 0x01) || ((UPS.Alarm >> 1) & 0x01)) {
  319. strcpy(str, "Авария");
  320. } else if (!((UPS.Status >> 6) & 0x01) && !((UPS.Alarm >> 1) & 0x01)) {
  321. strcpy(str, "Норма");
  322. } else if (((UPS.Status >> 2) & 0x01)) {
  323. strcat(str, "/Тестирование");
  324. }
  325. *len = strlen(str);
  326. }
  327. /**
  328. * @brief Индикация аварийных ситуаций
  329. */
  330. void GetConnectUPSAlarmStr(char *str, uint8_t *len)
  331. {
  332. if (((UPS.Alarm >> 2) & 0x01)) {
  333. strcpy(str, "Авария");
  334. } else if (!((UPS.Alarm >> 2) & 0x01)) {
  335. strcpy(str, "Норма");
  336. }
  337. *len = strlen(str);
  338. }
  339. /**
  340. * @brief Индикация аварийных ситуаций
  341. */
  342. void GetUPSModeStr(char *str, uint8_t *len)
  343. {
  344. if ((UPS.Status >> 5) & 0x01) {
  345. sprintf(str, "Bypass");
  346. } else {
  347. sprintf(str, "Boost or Buck");
  348. }
  349. *len = strlen(str);
  350. }
  351. #endif
  352. // ************************************************************************** //
  353. // Параметры даты и времени
  354. /**
  355. * @brief Дата (Ready for PRS!)
  356. */
  357. void GetDateStr(char *str, uint8_t *len)
  358. {
  359. TM_RTC_t data;
  360. uint16_t sys_year ;
  361. TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
  362. sys_year = 2000 + data.year;
  363. sprintf(str, "%04i-%02i-%02i", sys_year, data.month, data.date);
  364. *len = strlen(str);
  365. }
  366. /**
  367. * @brief Время (Ready for PRS!)
  368. */
  369. void GetTimeStr(char *str, uint8_t *len)
  370. {
  371. TM_RTC_t data;
  372. TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
  373. sprintf(str, "%02i:%02i", data.hours, data.minutes);
  374. *len = strlen(str);
  375. }
  376. /**
  377. * @brief Время (Ready for PRS!)
  378. */
  379. void GetUnixTimeStr(char *str, uint8_t *len)
  380. {
  381. TM_RTC_t data;
  382. TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
  383. sprintf(str, "%d", data.unix);
  384. *len = strlen(str);
  385. }
  386. // ************************************************************************** //
  387. // Параметры SNTP
  388. /**
  389. * @brief Состояние SNTP (Ready for PRS!)
  390. */
  391. void GetSntpStateStr(char *str, uint8_t *len)
  392. {
  393. if (sSettings.sSNTP.sntpEnable) {
  394. sprintf(str, "%s", "1"); //авто
  395. *len = strlen(str);
  396. } else {
  397. sprintf(str, "%s", "0"); //ручной
  398. *len = strlen(str);
  399. }
  400. }
  401. /**
  402. * @brief Состояние SNTP (Ready for PRS!)
  403. */
  404. void GetSntpStateStrRU(char *str, uint8_t *len)
  405. {
  406. if (sSettings.sSNTP.sntpEnable) {
  407. sprintf(str, "%s", "авто"); //авто
  408. *len = strlen(str);
  409. } else {
  410. sprintf(str, "%s", "ручной"); //ручной
  411. *len = strlen(str);
  412. }
  413. }
  414. /**
  415. * @brief IP адрес SNTP сервера (Ready for PRS!)
  416. */
  417. void GetSntpServerIpStr(char *str, uint8_t *len)
  418. {
  419. sprintf(str, "%s", sSettings.sSNTP.ip);
  420. *len = strlen(str);
  421. }
  422. /**
  423. * @brief Часовой пояс контроллера (Ready for PRS!)
  424. */
  425. void GetSntpTimeZoneStr(char *str, uint8_t *len)
  426. {
  427. sprintf(str, "%0.1f", sSettings.sSNTP.timeZone);
  428. *len = strlen(str);
  429. }
  430. /**
  431. * @brief Дата последней синхронизации SNTP (Ready for PRS!)
  432. */
  433. void GetSntpLastDataStr(char *str, uint8_t *len)
  434. {
  435. sprintf(str, "%s", sSettings.sSNTP.data);
  436. *len = strlen(str);
  437. }
  438. #ifndef HARDWARE_BT6709
  439. // ************************************************************************** //
  440. // Параметры реле/сухих контактов
  441. /**
  442. * @brief Тип действий при срабатывание сухих контактов
  443. */
  444. void GetDINTypeActStr(char *str, uint8_t *len, uint8_t num)
  445. {
  446. sprintf(str, "%d", sSettings.sInOuts.din_type_act[num]);
  447. *len = strlen(str);
  448. }
  449. /**
  450. * @brief Состояние сухого контакта
  451. */
  452. void GetDINStatusStr(char *str, uint8_t *len, uint8_t num)
  453. {
  454. sprintf(str, "%d", (get_state_din_outs(DIN1 + num) ^ 1));
  455. *len = strlen(str);
  456. }
  457. /**
  458. * @brief Состояние сухого контакта
  459. */
  460. void GetDIN0StatusStr(char *str, uint8_t *len)
  461. {
  462. sprintf(str, "%d", (get_state_din_outs(DIN1) ^ 1));
  463. *len = strlen(str);
  464. }
  465. /**
  466. * @brief Состояние сухого контакта
  467. */
  468. void GetDIN0StatusStrRU(char *str, uint8_t *len)
  469. {
  470. if (get_state_din_outs(DIN1) ^ 1) {
  471. sprintf(str, "Разомкнут" );
  472. } else {
  473. sprintf(str, "Замкнут" );
  474. }
  475. *len = strlen(str);
  476. }
  477. /**
  478. * @brief Источник срабатывания реле
  479. */
  480. void GetROTypeActStr(char *str, uint8_t *len, uint8_t num)
  481. {
  482. sprintf(str, "%d", sSettings.sInOuts.ro_type_source[num]);
  483. *len = strlen(str);
  484. }
  485. /**
  486. * @brief Состояние релейного выхода
  487. */
  488. void GetDOUTStatusStr(char *str, uint8_t *len, uint8_t num)
  489. {
  490. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  491. sprintf(str, "%d", (get_state_din_outs(DOUT1 + num) ^ 1));
  492. #elif HARDWARE_BT6703
  493. sprintf(str, "%d", get_state_din_outs(DOUT1 + num));
  494. #endif
  495. *len = strlen(str);
  496. }
  497. /**
  498. * @brief Состояние релейного выхода
  499. */
  500. void GetDOUTStatusStrRU(char *str, uint8_t *len, uint8_t num)
  501. {
  502. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  503. if (get_state_din_outs(DOUT1 + num) ^ 1) {
  504. sprintf(str, "Замкнут");
  505. } else {
  506. sprintf(str, "Разомкнут");
  507. }
  508. #elif HARDWARE_BT6703
  509. if (get_state_din_outs(DOUT1 + num)) {
  510. sprintf(str, "Замкнут");
  511. } else {
  512. sprintf(str, "Разомкнут");
  513. }
  514. #endif
  515. *len = strlen(str);
  516. }
  517. /**
  518. * @brief Состояние релейного выхода
  519. */
  520. void GetDOUT0StatusStr(char *str, uint8_t *len)
  521. {
  522. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  523. sprintf(str, "%d", (get_state_din_outs(DOUT1) ^ 1));
  524. #elif HARDWARE_BT6703
  525. sprintf(str, "%d", get_state_din_outs(DOUT1));
  526. #endif
  527. *len = strlen(str);
  528. }
  529. /**
  530. * @brief Состояние релейного выхода
  531. */
  532. void GetDOUT1StatusStr(char *str, uint8_t *len)
  533. {
  534. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  535. sprintf(str, "%d", (get_state_din_outs(DOUT2) ^ 1));
  536. #elif HARDWARE_BT6703
  537. sprintf(str, "%d", get_state_din_outs(DOUT2));
  538. #endif
  539. *len = strlen(str);
  540. }
  541. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  542. /**
  543. * @brief Состояние релейного выхода
  544. */
  545. void GetDOUT2StatusStr(char *str, uint8_t *len)
  546. {
  547. sprintf(str, "%d", (get_state_din_outs(DOUT3) ^ 1));
  548. *len = strlen(str);
  549. }
  550. #endif
  551. #endif
  552. // ************************************************************************** //
  553. // Информация
  554. #ifndef BT6702_SERVICE
  555. /**
  556. * @brief Время работы устройства
  557. */
  558. void GetWorkTimeStr(char *str, uint8_t *len)
  559. {
  560. u32_t tick;
  561. uint16_t day;
  562. uint8_t hour;
  563. uint8_t min;
  564. // TODO открыть с новым api для snmp
  565. //snmp_get_sysuptime(&tick);
  566. MIB2_COPY_SYSUPTIME_TO(&tick);
  567. day = tick / 8640000;
  568. tick = tick % 8640000;
  569. hour = tick / 360000;
  570. tick = tick % 360000;
  571. min = tick / 6000;
  572. sprintf(str, "%d дн. %d ч. %d мин.", day, hour, min);
  573. *len = strlen(str);
  574. }
  575. #endif
  576. /**
  577. * @brief Модель устройства
  578. */
  579. void GetModelStr(char *str, uint8_t *len)
  580. {
  581. *len = strlen(HW_REV);
  582. strncpy(str, HW_REV, *len);
  583. }
  584. /**
  585. * @brief Название устройсва устройства
  586. */
  587. void GetNameDeviceStr(char *str, uint8_t *len)
  588. {
  589. *len = (uint8_t)sSettings.sSnmp.sysName.len;
  590. strncpy(str, sSettings.sSnmp.sysName.name, *len);
  591. }
  592. /**
  593. * @brief Дата производства
  594. */
  595. void GetProductionDataStr(char *str, uint8_t *len)
  596. {
  597. *len = strlen(sSettings.sInfo.productionData);
  598. strncpy(str, sSettings.sInfo.productionData, *len);
  599. }
  600. /**
  601. * @brief Версия ПО
  602. */
  603. void GetVersionStr(char *str, uint8_t *len) // +
  604. {
  605. *len = strlen(VERSION);
  606. strncpy(str, VERSION, *len);
  607. }
  608. /**
  609. * @brief MAC адрес устройства
  610. */
  611. void GetMacStr(char *str, uint8_t *len)
  612. {
  613. *len = strlen(sSettings.sInfo.mac);
  614. strncpy(str, sSettings.sInfo.mac, *len);
  615. }
  616. /**
  617. * @brief Серийный номер устройства
  618. */
  619. void GetSerialNumberStr(char *str, uint8_t *len)
  620. {
  621. *len = strlen(sSettings.sInfo.serialNumber);
  622. strncpy(str, sSettings.sInfo.serialNumber, *len);
  623. }
  624. /**
  625. * @brief Владелец устройства
  626. */
  627. void GetOwnerStr(char *str, uint8_t *len)
  628. {
  629. *len = (uint8_t)sSettings.sSnmp.sysContact.len;
  630. strncpy(str, sSettings.sSnmp.sysContact.contact, *len);
  631. }
  632. /**
  633. * @brief Местоположение устройства
  634. */
  635. void GetLocationStr(char *str, uint8_t *len)
  636. {
  637. *len = (uint8_t) sSettings.sSnmp.sysLocation.len;
  638. strncpy(str, sSettings.sSnmp.sysLocation.location, *len);
  639. }
  640. /**
  641. * @brief Комментарии
  642. */
  643. void GetCommentsStr(char *str, uint8_t *len)
  644. {
  645. *len = strlen(sSettings.sInfo.comments);
  646. strncpy(str, sSettings.sInfo.comments, *len);
  647. }
  648. #ifndef BT6702_SERVICE
  649. /**
  650. * @brief Модель UPS
  651. */
  652. void GetUPSModelStr(char *str, uint8_t *len)
  653. {
  654. *len = strlen(UPS.model);
  655. strncpy(str, UPS.model, *len);
  656. }
  657. /**
  658. * @brief Серийный номер UPS
  659. */
  660. void GetUPSSerialStr(char *str, uint8_t *len)
  661. {
  662. *len = strlen(UPS.serial);
  663. strncpy(str, UPS.serial, *len);
  664. }
  665. /**
  666. * @brief Версия UPS ПО
  667. */
  668. void GetUPSVersionStr(char *str, uint8_t *len) // +
  669. {
  670. *len = strlen(UPS.vertion);
  671. strncpy(str, UPS.vertion, *len);
  672. }
  673. #endif
  674. #ifdef HARDWARE_BT6709
  675. // ************************************************************************** //
  676. // Параметры уведомления
  677. /**
  678. * @brief Параметр разрешения отправки трапа
  679. */
  680. void GetNotificationTrapsStateStr(char *str, uint8_t *len, uint8_t num)
  681. {
  682. if ( sSettings.sFlagNotification[num] ) {
  683. sprintf(str, "%s", "true");
  684. *len = strlen(str);
  685. } else {
  686. sprintf(str, "%s", "false");
  687. *len = strlen(str);
  688. }
  689. }
  690. /**
  691. * @brief Параметр разрешения отправки трапа
  692. */
  693. void GetNotificationTrapsStateStr2(char *str, uint8_t *len, uint8_t num)
  694. {
  695. if ( sSettings.sFlagNotification[num] ) {
  696. sprintf(str, "%s", "ENA");
  697. *len = strlen(str);
  698. } else {
  699. sprintf(str, "%s", "DIS");
  700. *len = strlen(str);
  701. }
  702. }
  703. /**
  704. * @brief Длинное имя трапа
  705. */
  706. void GetTrapLongNameStr(char *str, uint8_t *len, uint8_t num)
  707. {
  708. sprintf(str, "%s", name_traps[num]);
  709. *len = strlen(str);
  710. }
  711. #endif
  712. // ************************************************************************** //
  713. // Настройки аутентификации
  714. void GetUserLogin(uint8_t user_id, char *str, uint8_t *len)
  715. {
  716. sprintf(str, "%s", sSettings.sAuth[user_id].login);
  717. *len = strlen(str);
  718. }
  719. void GetUserPassword(uint8_t user_id, char *str, uint8_t *len)
  720. {
  721. sprintf(str, "%s", sSettings.sAuth[user_id].password);
  722. *len = strlen(str);
  723. }
  724. void GetUserLevel(uint8_t user_id, char *str, uint8_t *len)
  725. {
  726. sprintf(str, "%d", sSettings.sAuth[user_id].level);
  727. *len = strlen(str);
  728. }
  729. void GetUserLevelInt(uint8_t user_id, uint8_t *value)
  730. {
  731. *value = sSettings.sAuth[user_id].level;
  732. }
  733. // ************************************************************************** //
  734. // Параметры WEB
  735. /**
  736. * @brief Текущий IP адрес
  737. */
  738. void GetIpStr(char *str, uint8_t *len)
  739. {
  740. /* Если сейчас временные настройки */
  741. if (sSettings.sFlags.netsettingsChanged) {
  742. sprintf(str, "%s", sSettings.sWebTempParams.ip);
  743. } else {
  744. sprintf(str, "%s", sSettings.sWebParams.ip);
  745. }
  746. *len = strlen(str);
  747. }
  748. /**
  749. * @brief Текущий шлюз
  750. */
  751. void GetGatewayStr(char *str, uint8_t *len)
  752. {
  753. /* Если сейчас временные настройки */
  754. if (sSettings.sFlags.netsettingsChanged) {
  755. sprintf(str, "%s", sSettings.sWebTempParams.gate);
  756. } else {
  757. sprintf(str, "%s", sSettings.sWebParams.gate);
  758. }
  759. *len = strlen(str);
  760. }
  761. /**
  762. * @brief Текущая маска подсети
  763. */
  764. void GetMaskStr(char *str, uint8_t *len)
  765. {
  766. /* Если сейчас временные настройки */
  767. if (sSettings.sFlags.netsettingsChanged) {
  768. sprintf(str, "%s", sSettings.sWebTempParams.mask);
  769. } else {
  770. sprintf(str, "%s", sSettings.sWebParams.mask);
  771. }
  772. *len = strlen(str);
  773. }
  774. /**
  775. * @brief Настройка DHCP
  776. */
  777. void GetDhcpStateStr(char *str, uint8_t *len)
  778. {
  779. /* Если сейчас временные настройки */
  780. if (sSettings.sFlags.netsettingsChanged) {
  781. if (sSettings.sWebTempParams.dhcpEnable) {
  782. *str = '1';
  783. } else {
  784. *str = '0';
  785. }
  786. } else {
  787. if (sSettings.sWebParams.dhcpEnable) {
  788. *str = '1';
  789. } else {
  790. *str = '0';
  791. }
  792. }
  793. *len = 1;
  794. }
  795. /**
  796. * @brief Настройка DHCP
  797. */
  798. void GetDhcpStateUDP(char *str, uint8_t *len)
  799. {
  800. /* Если сейчас временные настройки или был загружен файл конфигурации */
  801. if (sSettings.sFlags.netsettingsChanged) {
  802. if (sSettings.sWebTempParams.dhcpEnable) {
  803. sprintf(str, "%s", "True");
  804. } else {
  805. sprintf(str, "%s", "False");
  806. }
  807. } else {
  808. if (sSettings.sWebParams.dhcpEnable) {
  809. sprintf(str, "%s", "True");
  810. } else {
  811. sprintf(str, "%s", "False");
  812. }
  813. }
  814. *len = strlen(str);
  815. }
  816. /**
  817. * @brief Настройка DHCP
  818. */
  819. void GetDhcpStateStrRu(char *str, uint8_t *len)
  820. {
  821. /* Если сейчас временные настройки или был загружен файл конфигурации */
  822. if (sSettings.sFlags.netsettingsChanged) {
  823. if (sSettings.sWebTempParams.dhcpEnable) {
  824. sprintf(str, "%s", "Вкл");
  825. } else {
  826. sprintf(str, "%s", "Откл");
  827. }
  828. } else {
  829. if (sSettings.sWebParams.dhcpEnable) {
  830. sprintf(str, "%s", "Вкл");
  831. } else {
  832. sprintf(str, "%s", "Откл");
  833. }
  834. }
  835. *len = strlen(str);
  836. }
  837. #ifdef HARDWARE_BT6709
  838. // ************************************************************************** //
  839. // Параметры довверительных хостов
  840. /**
  841. * @brief диапазон доверительных хостов
  842. */
  843. void GetWhiteListSTR(char *str, uint8_t *len, uint8_t num)
  844. {
  845. if (sSettings.sFlags.netsettingsChanged) {
  846. strcpy(str, sSettings.sWhiteListTemp[num].ip_range);
  847. } else {
  848. strcpy(str, sSettings.sWhiteList[num].ip_range);
  849. }
  850. *len = strlen(str);
  851. }
  852. /**
  853. * @brief маска диапазона доверительных хостов
  854. */
  855. void GetWhiteListMask(uint32_t *value, uint8_t num)
  856. {
  857. if (sSettings.sFlags.netsettingsChanged) {
  858. *value = sSettings.sWhiteListTemp[num].mask;
  859. } else {
  860. *value = sSettings.sWhiteList[num].mask;
  861. }
  862. }
  863. /**
  864. * @brief ip диапазона доверительных хостов
  865. */
  866. void GetWhiteListIP(uint32_t *value, uint8_t num)
  867. {
  868. if (sSettings.sFlags.netsettingsChanged) {
  869. *value = sSettings.sWhiteListTemp[num].ip;
  870. } else {
  871. *value = sSettings.sWhiteList[num].ip;
  872. }
  873. }
  874. #endif
  875. // ************************************************************************** //
  876. // Параметры SNMP
  877. /**
  878. * @brief Текущее community для чтения
  879. */
  880. void GetReadCommunity(char *str, uint8_t *len)
  881. {
  882. sprintf(str, "%s", sSettings.sSnmp.readCommunity);
  883. *len = strlen(str);
  884. }
  885. /**
  886. * @brief Текущее community для записи
  887. */
  888. void GetWriteCommunity(char *str, uint8_t *len)
  889. {
  890. sprintf(str, "%s", sSettings.sSnmp.writeCommunity);
  891. *len = strlen(str);
  892. }
  893. /**
  894. * @brief IP SNMP менеджера
  895. */
  896. void GetManagerIp(char *str, uint8_t *len)
  897. {
  898. sprintf(str, "%s", sSettings.sSnmp.managerIP);
  899. *len = strlen(str);
  900. }
  901. void GetManagerIp2(char *str, uint8_t *len)
  902. {
  903. sprintf(str, "%s", sSettings.sSnmp.managerIP2);
  904. *len = strlen(str);
  905. }
  906. void GetManagerIp3(char *str, uint8_t *len)
  907. {
  908. sprintf(str, "%s", sSettings.sSnmp.managerIP3);
  909. *len = strlen(str);
  910. }
  911. void GetManagerIp4(char *str, uint8_t *len)
  912. {
  913. sprintf(str, "%s", sSettings.sSnmp.managerIP4);
  914. *len = strlen(str);
  915. }
  916. void GetManagerIp5(char *str, uint8_t *len)
  917. {
  918. sprintf(str, "%s", sSettings.sSnmp.managerIP5);
  919. *len = strlen(str);
  920. }
  921. #ifdef HARDWARE_BT6703
  922. // ************************************************************************** //
  923. // Параметры RADIUS
  924. /**
  925. * @brief Текущий IP адрес
  926. */
  927. void GetRDSIpStr(char *str, uint8_t *len)
  928. {
  929. sprintf(str, "%s", sSettings.sRADIUS.ServerIP);
  930. *len = strlen(str);
  931. }
  932. /**
  933. * @brief Текущий Порт
  934. */
  935. void GetRDSPortStr(char *str, uint8_t *len)
  936. {
  937. sprintf(str, "%d", sSettings.sRADIUS.port);
  938. *len = strlen(str);
  939. }
  940. /**
  941. * @brief Текущий Код access
  942. */
  943. void GetRDSKeyAccesstStr(char *str, uint8_t *len)
  944. {
  945. sprintf(str, "%d", sSettings.sRADIUS.key_access);
  946. *len = strlen(str);
  947. }
  948. /**
  949. * @brief Текущая пароль RADIUS
  950. */
  951. void GetRDSPasswordkStr(char *str, uint8_t *len)
  952. {
  953. sprintf(str, "%s", sSettings.sRADIUS.rds_password);
  954. *len = strlen(str);
  955. }
  956. /**
  957. * @brief Настройка вкл/ выкл RADIUS сервера
  958. */
  959. void GetRDSEnableStateStr(char *str, uint8_t *len)
  960. {
  961. if (sSettings.sRADIUS.RDSEnable) {
  962. *str = '1';
  963. } else {
  964. *str = '0';
  965. }
  966. *len = 1;
  967. }
  968. /**
  969. * @brief Настройка вкл/ выкл авторизации
  970. */
  971. void GetAuthEnableStateStr(char *str, uint8_t *len)
  972. {
  973. if (sSettings.sRADIUS.Auth_enable) {
  974. *str = '1';
  975. } else {
  976. *str = '0';
  977. }
  978. *len = 1;
  979. }
  980. #endif
  981. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  982. // ************************************************************************** //
  983. // Параметры Telnet
  984. /**
  985. * @brief Текущий Порт
  986. */
  987. void GetTelnetPortStr(char *str, uint8_t *len)
  988. {
  989. sprintf(str, "%d", sSettings.sTelnet.port);
  990. *len = strlen(str);
  991. }
  992. /**
  993. * @brief Настройка вкл/ выкл Telnet сервера
  994. */
  995. void GetTelnetEnableStateStr(char *str, uint8_t *len)
  996. {
  997. if (sSettings.sTelnet.TelnetEnable) {
  998. *str = '1';
  999. } else {
  1000. *str = '0';
  1001. }
  1002. *len = 1;
  1003. }
  1004. #if defined HARDWARE_BT6709
  1005. // ************************************************************************** //
  1006. // Параметры SSH
  1007. /**
  1008. * @brief Текущий Порт
  1009. */
  1010. void GetSSHPortStr(char *str, uint8_t *len)
  1011. {
  1012. sprintf(str, "%d", sSettings.sSSH.port);
  1013. *len = strlen(str);
  1014. }
  1015. /**
  1016. * @brief Настройка вкл/ выкл SSH сервера
  1017. */
  1018. void GetSSHEnableStateStr(char *str, uint8_t *len)
  1019. {
  1020. if (sSettings.sSSH.SSHEnable) {
  1021. *str = '1';
  1022. } else {
  1023. *str = '0';
  1024. }
  1025. *len = 1;
  1026. }
  1027. #endif // HARDWARE_BT6709
  1028. #endif
  1029. // ************************************************************************** //
  1030. // Флаги
  1031. /**
  1032. * @brief Вернуть признак изменения сетевых параметров
  1033. */
  1034. void GetWebReinitFlag(char *str, uint8_t *len)
  1035. {
  1036. if (sSettings.sFlags.netsettingsChanged) {
  1037. sprintf(str, "%s", "true");
  1038. *len = strlen(str);
  1039. } else {
  1040. sprintf(str, "%s", "false");
  1041. *len = strlen(str);
  1042. }
  1043. }
  1044. // ************************************************************************** //
  1045. // Параметры настройки ИБП
  1046. /**
  1047. * @brief Минимальное напряжение на ячейках АКБ
  1048. */
  1049. void GetUPSVoltCellMinStr(char *str, uint8_t *len)
  1050. {
  1051. sprintf(str, "%0.2f", roundto(sSettings.UPS_Setting.Ucellmin, 2));
  1052. *len = strlen(str);
  1053. }
  1054. /**
  1055. * @brief Минимальное напряжение на ячейках АКБ
  1056. */
  1057. void GetUPSVoltCellMinInt(float *value)
  1058. {
  1059. *value = sSettings.UPS_Setting.Ucellmin;
  1060. }
  1061. /**
  1062. * @brief Максимальное напряжение на ячейках АКБ
  1063. */
  1064. void GetUPSVoltCellMaxStr(char *str, uint8_t *len)
  1065. {
  1066. sprintf(str, "%0.2f", roundto(sSettings.UPS_Setting.Ucellmax, 2));
  1067. *len = strlen(str);
  1068. }
  1069. /**
  1070. * @brief Максимальное напряжение на ячейках АКБ
  1071. */
  1072. void GetUPSVoltCellMaxInt(float *value)
  1073. {
  1074. *value = sSettings.UPS_Setting.Ucellmax;
  1075. }
  1076. #ifdef HARDWARE_BT6709
  1077. /**
  1078. * @brief Дата замены АКБ
  1079. */
  1080. void GetDataNextChangeAKBStrRU(char *str, uint8_t *len)
  1081. {
  1082. if (sSettings.UPS_Setting.set_data == 0) {
  1083. sprintf(str, "%s", "не установлена");
  1084. *len = strlen(str);
  1085. return;
  1086. }
  1087. TM_RTC_t data;
  1088. uint16_t sys_year;
  1089. uint32_t data_change = sSettings.UPS_Setting.set_data + (31536000 * sSettings.UPS_Setting.life_time);
  1090. memset(&data, 0, sizeof(data));
  1091. TM_RTC_GetDateTimeFromUnix(&data, data_change);
  1092. sys_year = 2000 + data.year;
  1093. sprintf(str, "%04i-%02i-%02i", sys_year, data.month, data.date);
  1094. *len = strlen(str);
  1095. }
  1096. /**
  1097. * @brief Дата замены АКБ
  1098. */
  1099. void GetDataNextChangeAKBStr(char *str, uint8_t *len)
  1100. {
  1101. if (sSettings.UPS_Setting.set_data == 0) {
  1102. *len = 0;
  1103. return;
  1104. }
  1105. TM_RTC_t data;
  1106. uint16_t sys_year;
  1107. uint32_t data_change = sSettings.UPS_Setting.set_data + (31536000 * sSettings.UPS_Setting.life_time);
  1108. memset(&data, 0, sizeof(data));
  1109. TM_RTC_GetDateTimeFromUnix(&data, data_change);
  1110. sys_year = 2000 + data.year;
  1111. sprintf(str, "%04i-%02i-%02i", sys_year, data.month, data.date);
  1112. *len = strlen(str);
  1113. }
  1114. /**
  1115. * @brief Дата установки АКБ
  1116. */
  1117. void GetDataSetAKBStr(char *str, uint8_t *len)
  1118. {
  1119. if (sSettings.UPS_Setting.set_data == 0) {
  1120. *len = 0;
  1121. return;
  1122. }
  1123. TM_RTC_t data;
  1124. uint16_t sys_year;
  1125. TM_RTC_GetDateTimeFromUnix(&data, sSettings.UPS_Setting.set_data);
  1126. sys_year = 2000 + data.year;
  1127. sprintf(str, "%04i-%02i-%02i", sys_year, data.month, data.date);
  1128. *len = strlen(str);
  1129. }
  1130. /**
  1131. * @brief Срок службы АКБ
  1132. */
  1133. void GetLifeTimeAKBStr(char *str, uint8_t *len)
  1134. {
  1135. sprintf(str, "%d", (int32_t)sSettings.UPS_Setting.life_time);
  1136. *len = strlen(str);
  1137. }
  1138. /**
  1139. * @brief Номинальное напряжение АКБ
  1140. */
  1141. void GetVoltageAKBNominalStr(char *str, uint8_t *len)
  1142. {
  1143. sprintf(str, "%d", (int32_t)sSettings.UPS_Setting.Uakb);
  1144. *len = strlen(str);
  1145. }
  1146. /**
  1147. * @brief Полная мощность АКБ
  1148. */
  1149. void GetUPSPowerStr(char *str, uint8_t *len)
  1150. {
  1151. sprintf(str, "%d", (int32_t)sSettings.UPS_Setting.ups_power);
  1152. *len = strlen(str);
  1153. }
  1154. /**
  1155. * @brief Емкость АКБ
  1156. */
  1157. void GetCapacityNominalAKBStr(char *str, uint8_t *len)
  1158. {
  1159. sprintf(str, "%d", (int32_t)sSettings.UPS_Setting.common_capacity);
  1160. *len = strlen(str);
  1161. }
  1162. /**
  1163. * @brief Емкость АКБ
  1164. */
  1165. void GetCapacityNominalAKBInt(int32_t *value)
  1166. {
  1167. *value = (int32_t)sSettings.UPS_Setting.common_capacity;
  1168. }
  1169. #endif
  1170. // ************************************************************************** //
  1171. // Параметры менеджера аварийных событий
  1172. /**
  1173. * @brief Верхняя граница VAC
  1174. */
  1175. void GetVACAlarmHighRangeStr(char *str, uint8_t *len)
  1176. {
  1177. sprintf(str, "%d", (int)sSettings.sAlarmManager.ac_output_range.high);
  1178. *len = strlen(str);
  1179. }
  1180. /**
  1181. * @brief Верхняя граница VAC
  1182. */
  1183. void GetVACAlarmHighRangeInt(int32_t *value)
  1184. {
  1185. *value = (int)sSettings.sAlarmManager.ac_output_range.high;
  1186. }
  1187. /**
  1188. * @brief Нижняя граница VAC
  1189. */
  1190. void GetVACAlarmLowRangeStr(char *str, uint8_t *len)
  1191. {
  1192. sprintf(str, "%d", (int)sSettings.sAlarmManager.ac_output_range.low);
  1193. *len = strlen(str);
  1194. }
  1195. /**
  1196. * @brief Нижняя граница VAC
  1197. */
  1198. void GetVACAlarmLowRangeInt(int32_t *value)
  1199. {
  1200. *value = (int)sSettings.sAlarmManager.ac_output_range.low;
  1201. }
  1202. /**
  1203. * @brief Гистерезис (VAC)
  1204. */
  1205. void GetVACAlarmHisteStr(char *str, uint8_t *len)
  1206. {
  1207. sprintf(str, "%0.1f", sSettings.sAlarmManager.ac_output_range.hyst);
  1208. *len = strlen(str);
  1209. }
  1210. /**
  1211. * @brief Гистерезис (VAC)
  1212. */
  1213. void GetVACAlarmHisteInt(float *value)
  1214. {
  1215. *value = sSettings.sAlarmManager.ac_output_range.hyst;
  1216. }
  1217. /**
  1218. * @brief Верхняя граница температуры
  1219. */
  1220. void GetTemperatureAlarmHighRangeStr(char *str, uint8_t *len)
  1221. {
  1222. sprintf(str, "%d", (int)sSettings.sAlarmManager.Temprature_range.high);
  1223. *len = strlen(str);
  1224. }
  1225. /**
  1226. * @brief Верхняя граница температуры
  1227. */
  1228. void GetTemperatureAlarmHighRangeInt(int32_t *value)
  1229. {
  1230. *value = (int)sSettings.sAlarmManager.Temprature_range.high;
  1231. }
  1232. /**
  1233. * @brief Нижняя граница температуры
  1234. */
  1235. void GetTemperatureAlarmLowRangeStr(char *str, uint8_t *len)
  1236. {
  1237. sprintf(str, "%d", (int)sSettings.sAlarmManager.Temprature_range.low);
  1238. *len = strlen(str);
  1239. }
  1240. /**
  1241. * @brief Нижняя граница температуры
  1242. */
  1243. void GetTemperatureAlarmLowRangeInt(int32_t *value)
  1244. {
  1245. *value = (int)sSettings.sAlarmManager.Temprature_range.low;
  1246. }
  1247. /**
  1248. * @brief Гистерезис (температура)
  1249. */
  1250. void GetTemperatureAlarmHisteStr(char *str, uint8_t *len)
  1251. {
  1252. sprintf(str, "%0.1f", sSettings.sAlarmManager.Temprature_range.hyst);
  1253. *len = strlen(str);
  1254. }
  1255. /**
  1256. * @brief Гистерезис (температура)
  1257. */
  1258. void GetTemperatureAlarmHisteInt(float *value)
  1259. {
  1260. *value = sSettings.sAlarmManager.Temprature_range.hyst;
  1261. }
  1262. /**
  1263. * @brief Верхняя граница нагрузки
  1264. */
  1265. void GetLoadAlarmHighRangeStr(char *str, uint8_t *len)
  1266. {
  1267. sprintf(str, "%d", (int)sSettings.sAlarmManager.load_range.high);
  1268. *len = strlen(str);
  1269. }
  1270. /**
  1271. * @brief Верхняя граница нагрузки
  1272. */
  1273. void GetLoadAlarmHighRangeInt(int32_t *value)
  1274. {
  1275. *value = (int)sSettings.sAlarmManager.load_range.high;
  1276. }
  1277. /**
  1278. * @brief Гистерезис (нагрузки)
  1279. */
  1280. void GetLoadAlarmHisteStr(char *str, uint8_t *len)
  1281. {
  1282. sprintf(str, "%0.1f", sSettings.sAlarmManager.load_range.hyst);
  1283. *len = strlen(str);
  1284. }
  1285. /**
  1286. * @brief Гистерезис (нагрузки)
  1287. */
  1288. void GetLoadAlarmHisteInt(float *value)
  1289. {
  1290. *value = sSettings.sAlarmManager.load_range.hyst;
  1291. }
  1292. // ************************************************************************** //
  1293. // Установка параметрв
  1294. // ************************************************************************** //
  1295. /**
  1296. * @brief Установить признак обновления ПО.
  1297. */
  1298. void SetLoadMode(void)
  1299. {
  1300. /* Set loadMode = 1 */
  1301. RTC_WriteBackupRegister(RTC_BKP_DR1, 1);
  1302. /* Set bootTry = 0 */
  1303. RTC_WriteBackupRegister(RTC_BKP_DR2, 0);
  1304. }
  1305. /**
  1306. * @brief Установить признак изменения сетевых параметров
  1307. */
  1308. void SetWebReinitFlag(bool value)
  1309. {
  1310. sSettings.sFlags.netsettingsChanged = value;
  1311. }
  1312. /**
  1313. * @brief Установить флаг подтверждения сетевых настроек пользователем
  1314. */
  1315. void SetConfirmWebParamsFlag(void)
  1316. {
  1317. fConfirmWebParams = true;
  1318. }
  1319. #ifdef HARDWARE_BT6709
  1320. // ************************************************************************** //
  1321. // Параметры уведомления
  1322. /**
  1323. * @brief Параметр разрешения отправки
  1324. */
  1325. void SetNotificationFlagsStr(uint8_t *value, uint8_t num)
  1326. {
  1327. sSettings.sFlagNotification[num] = *value;
  1328. }
  1329. #endif
  1330. // ************************************************************************** //
  1331. // Сетевые параметры
  1332. /**
  1333. * @brief IP адрес
  1334. */
  1335. void SetIPStr(char *str)
  1336. {
  1337. //strcpy(sSettings.sWebParams.ip, str);
  1338. strcpy(sSettings.sWebTempParams.ip, str);
  1339. }
  1340. /**
  1341. * @brief Шлюз
  1342. */
  1343. void SetGatewayStr(char *str)
  1344. {
  1345. //strcpy(sSettings.sWebParams.gate, str);
  1346. strcpy(sSettings.sWebTempParams.gate, str);
  1347. }
  1348. /**
  1349. * @brief Текущая маска подсети
  1350. */
  1351. void SetMaskStr(char *str)
  1352. {
  1353. //strcpy(sSettings.sWebParams.mask, str);
  1354. strcpy(sSettings.sWebTempParams.mask, str);
  1355. }
  1356. /**
  1357. * @brief Настройка DHCP
  1358. */
  1359. void SetDhcpStateStr(char *str)
  1360. {
  1361. if (strncmp(str, "on", 2) == 0)
  1362. //sSettings.sWebParams.dhcpEnable = 1;
  1363. {
  1364. sSettings.sWebTempParams.dhcpEnable = 1;
  1365. } else
  1366. //sSettings.sWebParams.dhcpEnable = 0;
  1367. {
  1368. sSettings.sWebTempParams.dhcpEnable = 0;
  1369. }
  1370. }
  1371. /**
  1372. * @brief Настройка DHCP
  1373. */
  1374. void SetUDPDhcpStateStr(char *str)
  1375. {
  1376. if (strncmp(str, "True", 4) == 0) {
  1377. sSettings.sWebTempParams.dhcpEnable = 1;
  1378. } else if (strncmp(str, "False", 5) == 0) {
  1379. sSettings.sWebTempParams.dhcpEnable = 0;
  1380. }
  1381. }
  1382. #ifdef HARDWARE_BT6709
  1383. // ************************************************************************** //
  1384. // Параметры довверительных хостов
  1385. /**
  1386. * @brief диапазон доверительных хостов
  1387. */
  1388. void SetWhiteListSTR(char *str, uint8_t num)
  1389. {
  1390. char ip_str[20];
  1391. char *mask_str;
  1392. uint32_t mask;
  1393. uint8_t num_octet = 0;
  1394. strcpy(sSettings.sWhiteListTemp[num].ip_range, str);
  1395. if (strlen(sSettings.sWhiteListTemp[num].ip_range) != 0) {
  1396. mask_str = strstr(sSettings.sWhiteListTemp[num].ip_range, "/");
  1397. if (mask_str != NULL) {
  1398. mask = atoi(&mask_str[1]);
  1399. sSettings.sWhiteListTemp[num].mask = 0;
  1400. for (uint8_t i = 0; i < mask; i ++) {
  1401. if (i < 8) {
  1402. num_octet = 1;
  1403. } else {
  1404. num_octet = i / 8 + 1;
  1405. }
  1406. sSettings.sWhiteListTemp[num].mask |= (1 << (8 * num_octet - 1 - (i - 8 * (num_octet - 1))));
  1407. }
  1408. memset(ip_str, 0, 20);
  1409. strncpy(ip_str, sSettings.sWhiteListTemp[num].ip_range, (mask_str - sSettings.sWhiteListTemp[num].ip_range));
  1410. sSettings.sWhiteListTemp[num].ip = ipaddr_addr(ip_str);
  1411. } else {
  1412. memset(&sSettings.sWhiteListTemp[num], 0, sizeof(sSettings.sWhiteListTemp[num]));
  1413. sSettings.sWhiteListTemp[num].mask = 0;
  1414. sSettings.sWhiteListTemp[num].ip = 0;
  1415. }
  1416. } else {
  1417. memset(&sSettings.sWhiteListTemp[num], 0, sizeof(sSettings.sWhiteListTemp[num]));
  1418. sSettings.sWhiteListTemp[num].mask = 0;
  1419. sSettings.sWhiteListTemp[num].ip = 0;
  1420. }
  1421. }
  1422. #endif
  1423. // ************************************************************************** //
  1424. // Параметры SNMP
  1425. /**
  1426. * @brief Community для чтения
  1427. */
  1428. void SetReadCommunity(char *str)
  1429. {
  1430. strcpy(sSettings.sSnmp.readCommunity, str);
  1431. }
  1432. /**
  1433. * @brief Community для записи
  1434. */
  1435. void SetWriteCommunity(char *str)
  1436. {
  1437. strcpy(sSettings.sSnmp.writeCommunity, str);
  1438. }
  1439. #ifndef BT6702_SERVICE
  1440. /**
  1441. * @brief IP SNMP менеджера
  1442. */
  1443. void SetManagerIp(char *str)
  1444. {
  1445. strcpy(sSettings.sSnmp.managerIP, str);
  1446. SNMP_SetManagerIP(sSettings.sSnmp.managerIP);
  1447. }
  1448. void SetManagerIp2(char *str)
  1449. {
  1450. strcpy(sSettings.sSnmp.managerIP2, str);
  1451. SNMP_SetManagerIP(sSettings.sSnmp.managerIP2);
  1452. }
  1453. void SetManagerIp3(char *str)
  1454. {
  1455. strcpy(sSettings.sSnmp.managerIP3, str);
  1456. SNMP_SetManagerIP(sSettings.sSnmp.managerIP3);
  1457. }
  1458. void SetManagerIp4(char *str)
  1459. {
  1460. strcpy(sSettings.sSnmp.managerIP4, str);
  1461. SNMP_SetManagerIP(sSettings.sSnmp.managerIP4);
  1462. }
  1463. void SetManagerIp5(char *str)
  1464. {
  1465. strcpy(sSettings.sSnmp.managerIP5, str);
  1466. SNMP_SetManagerIP(sSettings.sSnmp.managerIP5);
  1467. }
  1468. /**
  1469. * @brief Название устройсва устройства
  1470. */
  1471. void SetNameDeviceStr(char *str)
  1472. {
  1473. strcpy(sSettings.sSnmp.sysName.name, str);
  1474. sSettings.sSnmp.sysName.len = strlen(str);
  1475. }
  1476. /**
  1477. * @brief Установить владельца
  1478. */
  1479. void SetOwner(char *str)
  1480. {
  1481. strcpy(sSettings.sSnmp.sysContact.contact, str);
  1482. sSettings.sSnmp.sysContact.len = strlen(str);
  1483. SNMP_SetObjDescr();
  1484. }
  1485. /**
  1486. * @brief Установить местоположение
  1487. */
  1488. void SetLocation(char *str)
  1489. {
  1490. strcpy(sSettings.sSnmp.sysLocation.location, str);
  1491. sSettings.sSnmp.sysLocation.len = strlen(str);
  1492. }
  1493. #endif
  1494. /**
  1495. * @brief Установить комментарий
  1496. */
  1497. void SetComment(char *str)
  1498. {
  1499. strcpy(sSettings.sInfo.comments, str);
  1500. }
  1501. #ifdef HARDWARE_BT6703
  1502. // ************************************************************************** //
  1503. // Сетевые параметры RADIUS сервера
  1504. /**
  1505. * @brief IP адрес
  1506. */
  1507. void SetRDSIpStr(char *str)
  1508. {
  1509. strcpy(sSettings.sRADIUS.ServerIP, str);
  1510. }
  1511. /**
  1512. * @brief Порт
  1513. */
  1514. void SetRDSPortStr(char *str)
  1515. {
  1516. sSettings.sRADIUS.port = atoi(str);
  1517. }
  1518. /**
  1519. * @brief Код access
  1520. */
  1521. void SetRDSKeyAccesstStr(char *str)
  1522. {
  1523. sSettings.sRADIUS.key_access = atoi(str);
  1524. }
  1525. /**
  1526. * @brief пароль RADIUS
  1527. */
  1528. void SetRDSPasswordkStr(char *str)
  1529. {
  1530. strcpy(sSettings.sRADIUS.rds_password, str);
  1531. }
  1532. /**
  1533. * @brief Настройка вкл/ выкл RADIUS сервера
  1534. */
  1535. void SetRDSEnableStateStr(char *str)
  1536. {
  1537. if (strncmp(str, "on", 2) == 0) {
  1538. sSettings.sRADIUS.RDSEnable = 1;
  1539. } else {
  1540. sSettings.sRADIUS.RDSEnable = 0;
  1541. }
  1542. }
  1543. /**
  1544. * @brief Настройка вкл/ выкл авторизации
  1545. */
  1546. void SetAuthEnableStateStr(char *str)
  1547. {
  1548. if (strncmp(str, "on", 2) == 0) {
  1549. sSettings.sRADIUS.Auth_enable = 1;
  1550. } else {
  1551. sSettings.sRADIUS.Auth_enable = 0;
  1552. }
  1553. }
  1554. #endif
  1555. #if defined HARDWARE_BT6707 || HARDWARE_BT6709
  1556. #ifndef BT6702_SERVICE
  1557. // ************************************************************************** //
  1558. // Параметры Telnet
  1559. /**
  1560. * @brief Текущий Порт
  1561. */
  1562. void SetTelnetPortStr(char *str)
  1563. {
  1564. sSettings.sTelnet.port = atoi(str);
  1565. }
  1566. /**
  1567. * @brief Настройка вкл/ выкл Telnet сервера
  1568. */
  1569. void SetTelnetEnableStateStr(char *str)
  1570. {
  1571. if (strncmp(str, "on", 2) == 0) {
  1572. sSettings.sTelnet.TelnetEnable = 1;
  1573. } else {
  1574. sSettings.sTelnet.TelnetEnable = 0;
  1575. }
  1576. }
  1577. #if defined HARDWARE_BT6709
  1578. #include "server.h"
  1579. // ************************************************************************** //
  1580. // Параметры SSH
  1581. /**
  1582. * @brief Текущий Порт
  1583. */
  1584. void SetSSHPortStr(char *str)
  1585. {
  1586. uint16_t new_port = atoi(str);
  1587. bool port_changed = new_port != sSettings.sSSH.port;
  1588. sSettings.sSSH.port = new_port;
  1589. if (port_changed) {
  1590. ssh_server_restart();
  1591. }
  1592. }
  1593. /**
  1594. * @brief Настройка вкл/ выкл SSH сервера
  1595. */
  1596. void SetSSHEnableStateStr(char *str)
  1597. {
  1598. if (strncmp(str, "on", 2) == 0) {
  1599. bool old_state = sSettings.sSSH.SSHEnable;
  1600. sSettings.sSSH.SSHEnable = 1;
  1601. if (old_state != true) {
  1602. ssh_server_init();
  1603. }
  1604. } else {
  1605. sSettings.sSSH.SSHEnable = 0;
  1606. ssh_server_restart();
  1607. }
  1608. }
  1609. #endif // HARDWARE_BT6709
  1610. #endif // !BT6702_SERVICE
  1611. #endif // HARDWARE_BT6707 || HARDWARE_BT6709
  1612. // ************************************************************************** //
  1613. // Параметры даты и времени
  1614. /**
  1615. * @brief Дата
  1616. */
  1617. void SetDateStr(char *str)
  1618. {
  1619. TM_RTC_t tmp_data;
  1620. char str_data[18];
  1621. char str_time[9];
  1622. uint8_t len;
  1623. memset(str_data, 0, 18);
  1624. memset(str_time, 0, 9);
  1625. str += 2;
  1626. strncpy(str_data, (str + 6), 2);
  1627. strncat(str_data, (str + 2), 4);
  1628. strncat(str_data, str, 2);
  1629. TM_RTC_GetDateTime(&tmp_data, TM_RTC_Format_BIN);
  1630. sprintf(str_time, "-01-%02i:%02i", tmp_data.hours, tmp_data.minutes);
  1631. len = strlen(str_time);
  1632. strncat(str_data, str_time, len);
  1633. //TM_RTC_SetDateTimeString(&str_data);
  1634. TM_RTC_SetDateTimeString(str_data);
  1635. }
  1636. /**
  1637. * @brief Время
  1638. */
  1639. void SetTimeStr(char *str)
  1640. {
  1641. TM_RTC_t tmp_data;
  1642. char str_data[18];
  1643. char str_date[14];
  1644. uint8_t len;
  1645. memset(str_data, 0, 18);
  1646. memset(str_date, 0, 14);
  1647. TM_RTC_GetDateTime(&tmp_data, TM_RTC_Format_BIN);
  1648. sprintf(str_date, "%02i-%02i-%02i-01-", tmp_data.date, tmp_data.month, tmp_data.year);
  1649. len = strlen(str_date);
  1650. strncat(str_data, str_date, len);
  1651. strncat(str_data, str, 5);
  1652. //TM_RTC_SetDateTimeString(&str_data);
  1653. TM_RTC_SetDateTimeString(str_data);
  1654. }
  1655. // ************************************************************************** //
  1656. // Параметры SNTP
  1657. #ifndef BT6702_SERVICE
  1658. /**
  1659. * @brief Состояние SNTP
  1660. */
  1661. void SetSntpStateStr(char *str)
  1662. {
  1663. if (strncmp(str, "1", 1) == 0) {
  1664. sSettings.sSNTP.sntpEnable = true;
  1665. } else {
  1666. sSettings.sSNTP.sntpEnable = false;
  1667. }
  1668. }
  1669. #endif
  1670. /**
  1671. * @brief IP адрес SNTP сервера
  1672. */
  1673. void SetSntpServerIpStr(char *str)
  1674. {
  1675. strcpy(sSettings.sSNTP.ip, str);
  1676. }
  1677. /**
  1678. * @brief Часовой пояс контроллера
  1679. */
  1680. void SetSntpTimeZoneStr(char *str)
  1681. {
  1682. float newUtc;
  1683. newUtc = atof(str);
  1684. if (sSettings.sSNTP.timeZone > 0) {
  1685. if (newUtc >= 0) {
  1686. if (newUtc >= sSettings.sSNTP.timeZone) {
  1687. TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
  1688. }
  1689. else
  1690. {
  1691. TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
  1692. }
  1693. } else {
  1694. TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
  1695. }
  1696. } else if (sSettings.sSNTP.timeZone < 0) {
  1697. if (newUtc >= 0) {
  1698. TM_RTC_Correction(newUtc + fabs(sSettings.sSNTP.timeZone));
  1699. } else {
  1700. if (newUtc >= sSettings.sSNTP.timeZone) {
  1701. TM_RTC_Correction(fabs(sSettings.sSNTP.timeZone) - fabs(newUtc));
  1702. } else {
  1703. TM_RTC_Correction(newUtc - sSettings.sSNTP.timeZone);
  1704. }
  1705. }
  1706. } else if (sSettings.sSNTP.timeZone == 0) {
  1707. TM_RTC_Correction(newUtc);
  1708. }
  1709. sSettings.sSNTP.timeZone = newUtc; // atof(str);
  1710. //TM_RTC_Correction(sSettings.sSNTP.timeZone);
  1711. }
  1712. #ifndef HARDWARE_BT6709
  1713. // ************************************************************************** //
  1714. // Параметры реле/сухих контактов
  1715. /**
  1716. * @brief Тип действий при срабатывание сухих контактов
  1717. */
  1718. void SetDINTypeActStr(char *str, uint8_t num)
  1719. {
  1720. sSettings.sInOuts.din_type_act[num] = atoi(str);
  1721. }
  1722. /**
  1723. * @brief Источник срабатывания реле
  1724. */
  1725. void SetROTypeActStr(char *str, uint8_t num)
  1726. {
  1727. static uint8_t OldROtype_Sourse[2] = {0};
  1728. OldROtype_Sourse[num] = sSettings.sInOuts.ro_type_source[num];
  1729. sSettings.sInOuts.ro_type_source[num] = atoi(str);
  1730. if (OldROtype_Sourse[num] != sSettings.sInOuts.ro_type_source[num]) {
  1731. SetROInt(0, num);
  1732. }
  1733. }
  1734. /**
  1735. * @brief
  1736. */
  1737. void SetROStr(char *str, uint8_t num)
  1738. {
  1739. set_state_douts((DOUT1 + num), atoi(str));
  1740. }
  1741. /**
  1742. * @brief
  1743. */
  1744. void SetROInt(uint8_t val, uint8_t num)
  1745. {
  1746. set_state_douts((DOUT1 + num), val);
  1747. }
  1748. #endif
  1749. // ************************************************************************** //
  1750. // Параметры настройки ИБП
  1751. /**
  1752. * @brief Минимальное напряжение на ячейках АКБ
  1753. */
  1754. void SetUPSVoltCellMinStr(char *str)
  1755. {
  1756. sSettings.UPS_Setting.Ucellmin = atof(str);
  1757. }
  1758. /**
  1759. * @brief Минимальное напряжение на ячейках АКБ
  1760. */
  1761. void SetUPSVoltCellMinInt(float value)
  1762. {
  1763. sSettings.UPS_Setting.Ucellmin = value;
  1764. }
  1765. /**
  1766. * @brief Максимальное напряжение на ячейках АКБ
  1767. */
  1768. void SetUPSVoltCellMaxStr(char *str)
  1769. {
  1770. sSettings.UPS_Setting.Ucellmax = atof(str);
  1771. }
  1772. /**
  1773. * @brief Максимальное напряжение на ячейках АКБ
  1774. */
  1775. void SetUPSVoltCellMaxInt(float value)
  1776. {
  1777. sSettings.UPS_Setting.Ucellmax = value;
  1778. }
  1779. #ifdef HARDWARE_BT6709
  1780. /**
  1781. * @brief Дата установки АКБ
  1782. */
  1783. void SetDataSetAKBStr(char *str)
  1784. {
  1785. TM_RTC_t tmp_data;
  1786. char str_data[3];
  1787. if (str[0] != 0) {
  1788. memset(str_data, 0, 3);
  1789. memset(&tmp_data, 0, sizeof(tmp_data));
  1790. str += 2;
  1791. strncpy(str_data, str, 2);
  1792. tmp_data.year = atoi(str_data);
  1793. memset(str_data, 0, 3);
  1794. strncat(str_data, (str + 3), 2);
  1795. tmp_data.month = atoi(str_data);
  1796. memset(str_data, 0, 3);
  1797. strncat(str_data, (str + 6), 2);
  1798. tmp_data.date = atoi(str_data);
  1799. sSettings.UPS_Setting.set_data = TM_RTC_GetUnixTimeStamp(&tmp_data);
  1800. } else {
  1801. sSettings.UPS_Setting.set_data = 0;
  1802. }
  1803. }
  1804. /**
  1805. * @brief Срок службы АКБ
  1806. */
  1807. void SetLifeTimeAKBStr(char *str)
  1808. {
  1809. sSettings.UPS_Setting.life_time = atof(str);
  1810. }
  1811. /**
  1812. * @brief Номинальное напряжение АКБ
  1813. */
  1814. void SetVoltageAKBNominalStr(char *str)
  1815. {
  1816. sSettings.UPS_Setting.Uakb = atof(str);
  1817. }
  1818. /**
  1819. * @brief Полная мощность АКБ
  1820. */
  1821. void SetUPSPowerStr(char *str)
  1822. {
  1823. sSettings.UPS_Setting.ups_power = atof(str);
  1824. }
  1825. /**
  1826. * @brief Емкость АКБ
  1827. */
  1828. void SetCapacityNominalAKBStr(char *str)
  1829. {
  1830. sSettings.UPS_Setting.common_capacity = atoi(str);
  1831. }
  1832. #endif
  1833. // ************************************************************************** //
  1834. // Параметры менеджера аварий
  1835. /**
  1836. * @brief Верхняя граница VAC
  1837. */
  1838. void SetVACAlarmHighRangeStr(char *str)
  1839. {
  1840. sSettings.sAlarmManager.ac_output_range.high = atof(str);
  1841. }
  1842. /**
  1843. * @brief Верхняя граница VAC
  1844. */
  1845. void SetVACAlarmHighRangeInt(float value)
  1846. {
  1847. sSettings.sAlarmManager.ac_output_range.high = value;
  1848. }
  1849. /**
  1850. * @brief Нижняя граница VAC
  1851. */
  1852. void SetVACAlarmLowRangeStr(char *str)
  1853. {
  1854. sSettings.sAlarmManager.ac_output_range.low = atof(str);
  1855. }
  1856. /**
  1857. * @brief Нижняя граница VAC
  1858. */
  1859. void SetVACAlarmLowRangeInt(float value)
  1860. {
  1861. sSettings.sAlarmManager.ac_output_range.low = value;
  1862. }
  1863. /**
  1864. * @brief Гистерезис (VAC)
  1865. */
  1866. void SetVACAlarmHisteStr(char *str)
  1867. {
  1868. sSettings.sAlarmManager.ac_output_range.hyst = atof(str);
  1869. }
  1870. /**
  1871. * @brief Гистерезис (VAC)
  1872. */
  1873. void SetVACAlarmHisteInt(float value)
  1874. {
  1875. sSettings.sAlarmManager.ac_output_range.hyst = value;
  1876. }
  1877. /**
  1878. * @brief Верхняя граница температуры
  1879. */
  1880. void SetTemperatureAlarmHighRangeStr(char *str)
  1881. {
  1882. sSettings.sAlarmManager.Temprature_range.high = atof(str);
  1883. }
  1884. /**
  1885. * @brief Верхняя граница температуры
  1886. */
  1887. void SetTemperatureAlarmHighRangeInt(float value)
  1888. {
  1889. sSettings.sAlarmManager.Temprature_range.high = value;
  1890. }
  1891. /**
  1892. * @brief Нижняя граница температуры
  1893. */
  1894. void SetTemperatureAlarmLowRangeStr(char *str)
  1895. {
  1896. sSettings.sAlarmManager.Temprature_range.low = atof(str);
  1897. }
  1898. /**
  1899. * @brief Нижняя граница температуры
  1900. */
  1901. void SetTemperatureAlarmLowRangeInt(float value)
  1902. {
  1903. sSettings.sAlarmManager.Temprature_range.low = value;
  1904. }
  1905. /**
  1906. * @brief Гистерезис (температура)
  1907. */
  1908. void SetTemperatureAlarmHisteStr(char *str)
  1909. {
  1910. sSettings.sAlarmManager.Temprature_range.hyst = atof(str);
  1911. }
  1912. /**
  1913. * @brief Гистерезис (температура)
  1914. */
  1915. void SetTemperatureAlarmHisteInt(float value)
  1916. {
  1917. sSettings.sAlarmManager.Temprature_range.hyst = value;
  1918. }
  1919. /**
  1920. * @brief Верхняя граница нагрузки
  1921. */
  1922. void SetLoadAlarmHighRangeStr(char *str)
  1923. {
  1924. sSettings.sAlarmManager.load_range.high = atof(str);
  1925. }
  1926. /**
  1927. * @brief Верхняя граница нагрузки
  1928. */
  1929. void SetLoadAlarmHighRangeInt(float value)
  1930. {
  1931. sSettings.sAlarmManager.load_range.high = value;
  1932. }
  1933. /**
  1934. * @brief Гистерезис (нагрузки)
  1935. */
  1936. void SetLoadAlarmHistStr(char *str)
  1937. {
  1938. sSettings.sAlarmManager.load_range.hyst = atof(str);
  1939. }
  1940. /**
  1941. * @brief Гистерезис (нагрузки)
  1942. */
  1943. void SetLoadAlarmHistInt(float value)
  1944. {
  1945. sSettings.sAlarmManager.load_range.hyst = value;
  1946. }
  1947. /********************************* (C) РОТЕК **********************************/