CLI_Parameters.c 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. /*
  2. * CLI_Parameters.c
  3. *
  4. * Created on: 04.12.2017
  5. * Author: balbekova
  6. */
  7. #include <stdint.h>
  8. #include <string.h>
  9. #ifdef PRINTF_STDLIB
  10. #include <stdio.h>
  11. #endif
  12. #ifdef PRINTF_CUSTOM
  13. #include "tinystdio.h"
  14. #endif
  15. #include "CLI_Parameters.h"
  16. #include "parameters.h"
  17. #include "settings_api.h"
  18. /**
  19. * @brief Общая структура настроек
  20. */
  21. extern SETTINGS_t sSettings;
  22. //Настройки SNMP
  23. void snmp_config_param(int8_t *buf)
  24. {
  25. char str[20];
  26. uint8_t len = 0;
  27. const int8_t *const pcInfoTableHeader = ( int8_t * )
  28. "\r\n***********SNMP настройки Контроллера***********\r\n";
  29. /* Return the next command help string, before moving the pointer on to
  30. the next command in the list. */
  31. strncpy( ( char * ) buf, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
  32. GetManagerIp(str, &len);
  33. strcat(( char * ) buf, "Ceрвер 1:\t\t\t");
  34. strncat(( char * ) buf, str, len);
  35. strcat(( char * ) buf, "\r\nСервер 2:\t\t\t");
  36. GetManagerIp2(str, &len);
  37. strncat(( char * ) buf, str, len);
  38. strcat(( char * ) buf, "\r\nСервер 3:\t\t\t");
  39. GetManagerIp3(str, &len);
  40. strncat(( char * ) buf, str, len);
  41. strcat(( char * ) buf, "\r\nСервер 4:\t\t\t");
  42. GetManagerIp4(str, &len);
  43. strncat(( char * ) buf, str, len);
  44. strcat(( char * ) buf, "\r\nСервер 5:\t\t\t");
  45. GetManagerIp5(str, &len);
  46. strncat(( char * ) buf, str, len);
  47. strcat(( char * ) buf, "\r\nRead community:\t\t\t");
  48. GetReadCommunity(str, &len);
  49. strncat(( char * ) buf, str, len);
  50. strcat(( char * ) buf, "\r\nWrite community:\t\t");
  51. GetWriteCommunity(str, &len);
  52. strncat(( char * ) buf, str, len);
  53. strcat(( char * ) buf, "\r\n");
  54. }
  55. #ifdef INOUTS_ENABLE
  56. //Настройки сухих контактов
  57. void inouts_config_param(int8_t *buf)
  58. {
  59. char str[20];
  60. char str_temp[20];
  61. uint8_t len = 0;
  62. const int8_t *const pcInOutsTableHeader = ( int8_t * )
  63. "\r\n*********Настройки сухих контактов Контроллера*********\r\n";
  64. const int8_t *const pcDryInsTableHeader = ( int8_t * ) "Дискретные входы\r\n";
  65. const int8_t *const pcDryInsTableHeader2 = ( int8_t * )
  66. "\r\n№\t\tНормальное состояние\r\n";
  67. const int8_t *const pcRelaysTableHeader = ( int8_t * ) "Релейные выходы\r\n";
  68. const int8_t *const pcRelaysTableHeader2 = ( int8_t * ) "\r\n№\t\tИсточник\r\n";
  69. const int8_t *const pcSharedTableHeader = ( int8_t * ) "------------+--------------------------------------------\r\n";
  70. /* Return the next command help string, before moving the pointer on to
  71. the next command in the list. */
  72. strncpy( ( char * ) buf, ( const char * ) pcInOutsTableHeader, strlen( ( char * ) pcInOutsTableHeader ) );
  73. strncat( ( char * ) buf, ( const char * ) pcDryInsTableHeader, strlen( ( char * ) pcDryInsTableHeader ) );
  74. strncat( ( char * ) buf, ( const char * ) pcDryInsTableHeader2, strlen( ( char * ) pcDryInsTableHeader2 ) );
  75. strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
  76. GetDINTypeActStr(str, &len, 0);
  77. strcat(( char * ) buf, "1:\t\t");
  78. switch (str[0]) {
  79. case '0':
  80. strcat(( char * ) buf, "Разомкнут\r\n");
  81. break;
  82. case '1':
  83. strcat(( char * ) buf, "Замкнут\r\n");
  84. break;
  85. }
  86. strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
  87. strcat(( char * ) buf, "\r\n");
  88. strncat( ( char * ) buf, ( const char * ) pcRelaysTableHeader, strlen( ( char * ) pcRelaysTableHeader ) );
  89. strncat( ( char * ) buf, ( const char * ) pcRelaysTableHeader2, strlen( ( char * ) pcRelaysTableHeader2 ) );
  90. strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
  91. for (uint8_t i = 0; i < OUTPUTS_TOTAL_COUNT; i++) {
  92. GetROTypeActStr(str, &len, i);
  93. memset(str_temp, 0, strlen(str_temp));
  94. sprintf(str_temp, "%d:\t\t", i);
  95. strncat(( char * ) buf, str_temp, strlen(str_temp));
  96. switch (str[0]) {
  97. case '0':
  98. strcat(( char * ) buf, "Наличие сети\r\n");
  99. break;
  100. case '1':
  101. strcat(( char * ) buf, "Наличие выходного напряжения\r\n");
  102. break;
  103. case '2':
  104. strcat(( char * ) buf, "Разряд АКБ\r\n");
  105. break;
  106. case '3':
  107. strcat(( char * ) buf, "Отключение АКБ\r\n");
  108. break;
  109. case '4':
  110. strcat(( char * ) buf, "SNMP SET\r\n");
  111. break;
  112. }
  113. strcat(( char * ) buf, "\r\n");
  114. }
  115. strncat( ( char * ) buf, ( const char * ) pcSharedTableHeader, strlen( ( char * ) pcSharedTableHeader ) );
  116. }
  117. #endif
  118. //Сетевые настройки
  119. void net_config_param(int8_t *buf)
  120. {
  121. char str[20];
  122. uint8_t len = 0;
  123. const int8_t *const pcInfoTableHeader = ( int8_t * )
  124. "\r\n*********Сетевые настройки Контроллера*********\r\n";
  125. /* Return the next command help string, before moving the pointer on to
  126. the next command in the list. */
  127. strncpy( ( char * ) buf, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
  128. GetDhcpStateStrRu(str, &len);
  129. strcat(( char * ) buf, "DHCP:\t\t\t\t");
  130. strncat(( char * ) buf, str, len);
  131. strcat(( char * ) buf, "\r\nIP адрес:\t\t\t");
  132. GetIpStr(str, &len);
  133. strncat(( char * ) buf, str, len);
  134. strcat(( char * ) buf, "\r\nАдрес шлюза:\t\t\t");
  135. GetGatewayStr(str, &len);
  136. strncat(( char * ) buf, str, len);
  137. strcat(( char * ) buf, "\r\nАдрес маски подсети:\t\t");
  138. GetMaskStr(str, &len);
  139. strncat(( char * ) buf, str, len);
  140. strcat(( char * ) buf, "\r\n");
  141. }
  142. //Настройки времени
  143. void time_config_param(int8_t *buf)
  144. {
  145. char str[20];
  146. uint8_t len = 0;
  147. const int8_t *const pcTimeTableHeader = ( int8_t * )
  148. "\r\n*********Настройки времени Контроллера*********\r\n";
  149. /* Return the next command help string, before moving the pointer on to
  150. the next command in the list. */
  151. strncpy( ( char * ) buf, ( const char * ) pcTimeTableHeader, strlen( ( char * ) pcTimeTableHeader ) );
  152. GetSntpStateStrRU(str, &len);
  153. strcat(( char * ) buf, "Режим установки времени:\t");
  154. strncat(( char * ) buf, str, len);
  155. strcat(( char * ) buf, "\r\nЧасовой пояс:\t\t\t");
  156. GetSntpTimeZoneStr(str, &len);
  157. strncat(( char * ) buf, str, len);
  158. if (sSettings.sSNTP.sntpEnable) {
  159. strcat(( char * ) buf, "\r\nIP адрес NTP сервера:\t\t");
  160. GetSntpServerIpStr(str, &len);
  161. strncat(( char * ) buf, str, len);
  162. strcat(( char * ) buf, "\r\nПоследняя дата синхронизации:\t");
  163. GetSntpLastDataStr(str, &len);
  164. strncat(( char * ) buf, str, len);
  165. } else {
  166. GetDateStr(str, &len);
  167. strcat(( char * ) buf, "\r\nДата:\t\t\t");
  168. strncat(( char * ) buf, str, len);
  169. strcat(( char * ) buf, "\r\nВремя:\t\t\t");
  170. GetTimeStr(str, &len);
  171. strncat(( char * ) buf, str, len);
  172. }
  173. strcat(( char * ) buf, "\r\n");
  174. }
  175. //Настройки АКБ
  176. void akb_config_param(int8_t *buf)
  177. {
  178. char str[20];
  179. uint8_t len = 0;
  180. const int8_t *const pcAKBTableHeader = ( int8_t * )
  181. "\r\n*********Настройки аккумуляторов ИБП*********\r\n";
  182. /* Return the next command help string, before moving the pointer on to
  183. the next command in the list. */
  184. strncpy( ( char * ) buf, ( const char * ) pcAKBTableHeader, strlen( ( char * ) pcAKBTableHeader ) );
  185. GetUPSVoltCellMinStr(str, &len);
  186. strcat(( char * ) buf, "Мин. напряжение ячейки (В):\t\t");
  187. strncat(( char * ) buf, str, len);
  188. strcat(( char * ) buf, "\r\nМакс. напряжение ячейки (В):\t\t");
  189. GetUPSVoltCellMaxStr(str, &len);
  190. strncat(( char * ) buf, str, len);
  191. #ifdef HARDWARE_BT6709
  192. GetVoltageAKBNominalStr(str, &len);
  193. strcat(( char * ) buf, "\r\nНоминальное напряжение (В):\t\t");
  194. strncat(( char * ) buf, str, len);
  195. strcat(( char * ) buf, "\r\nЁмкость (Ач):\t\t\t\t");
  196. GetCapacityNominalAKBStr(str, &len);
  197. strncat(( char * ) buf, str, len);
  198. GetLifeTimeAKBStr(str, &len);
  199. strcat(( char * ) buf, "\r\nСрок службы (лет):\t\t\t");
  200. strncat(( char * ) buf, str, len);
  201. strcat(( char * ) buf, "\r\nДата установки:\t\t\t\t");
  202. GetDataSetAKBStr(str, &len);
  203. strncat(( char * ) buf, str, len);
  204. GetUPSPowerStr(str, &len);
  205. strcat(( char * ) buf, "\r\nПолная мощность ИБП (ВА):\t\t");
  206. strncat(( char * ) buf, str, len);
  207. #endif
  208. strcat(( char * ) buf, "\r\n");
  209. }
  210. //Настройки Аварий
  211. void alarm_config_param(int8_t *buf)
  212. {
  213. char str[20];
  214. uint8_t len = 0;
  215. const char *name_range_alarm[] = {
  216. "Нижняя граница:\t\t\t",
  217. "\r\nВерхняя граница:\t\t",
  218. "\r\nГистерезис:\t\t\t",
  219. };
  220. const int8_t *const pcAlarmTableHeader = ( int8_t * )
  221. "\r\n*********Настройки Аварийных границ*********\r\n";
  222. /* Return the next command help string, before moving the pointer on to
  223. the next command in the list. */
  224. strncpy( ( char * ) buf, ( const char * ) pcAlarmTableHeader, strlen( ( char * ) pcAlarmTableHeader ) );
  225. const int8_t *const pcAlarmTempTableHeader = ( int8_t * )
  226. "\r\n*************Температура (°C)************\r\n";
  227. /* Return the next command help string, before moving the pointer on to
  228. the next command in the list. */
  229. strncat( ( char * ) buf, ( const char * ) pcAlarmTempTableHeader, strlen( ( char * ) pcAlarmTempTableHeader ) );
  230. GetTemperatureAlarmLowRangeStr(str, &len);
  231. strcat(( char * ) buf, name_range_alarm[0]);
  232. strncat(( char * ) buf, str, len);
  233. strcat(( char * ) buf, name_range_alarm[1]);
  234. GetTemperatureAlarmHighRangeStr(str, &len);
  235. strncat(( char * ) buf, str, len);
  236. strcat(( char * ) buf, name_range_alarm[2]);
  237. GetTemperatureAlarmHisteStr(str, &len);
  238. strncat(( char * ) buf, str, len);
  239. strcat(( char * ) buf, "\r\n");
  240. const int8_t *const pcAlarmLoadTableHeader = ( int8_t * ) "\r\n***************Нагрузка (%)**************";
  241. /* Return the next command help string, before moving the pointer on to
  242. the next command in the list. */
  243. strncat( ( char * ) buf, ( const char * ) pcAlarmLoadTableHeader, strlen( ( char * ) pcAlarmLoadTableHeader ) );
  244. strcat(( char * ) buf, name_range_alarm[1]);
  245. GetLoadAlarmHighRangeStr(str, &len);
  246. strncat(( char * ) buf, str, len);
  247. strcat(( char * ) buf, name_range_alarm[2]);
  248. GetLoadAlarmHisteStr(str, &len);
  249. strncat(( char * ) buf, str, len);
  250. strcat(( char * ) buf, "\r\n");
  251. const int8_t *const pcAlarmVoutTableHeader = ( int8_t * )
  252. "\r\n*********Выходное напряжение (В)*********\r\n";
  253. /* Return the next command help string, before moving the pointer on to
  254. the next command in the list. */
  255. strncat( ( char * ) buf, ( const char * ) pcAlarmVoutTableHeader, strlen( ( char * ) pcAlarmVoutTableHeader ) );
  256. GetVACAlarmLowRangeStr(str, &len);
  257. strcat(( char * ) buf, name_range_alarm[0]);
  258. strncat(( char * ) buf, str, len);
  259. strcat(( char * ) buf, name_range_alarm[1]);
  260. GetVACAlarmHighRangeStr(str, &len);
  261. strncat(( char * ) buf, str, len);
  262. strcat(( char * ) buf, name_range_alarm[2]);
  263. GetVACAlarmHisteStr(str, &len);
  264. strncat(( char * ) buf, str, len);
  265. strcat(( char * ) buf, "\r\n");
  266. }
  267. #ifdef NOTIFICATION_CONTROL_ENABLE
  268. //Список уведомлений и их состояние
  269. void notification_param(int8_t *buf)
  270. {
  271. char str[100];
  272. uint8_t len = 0;
  273. uint8_t i;
  274. const int8_t *const pcNotificationTableHeader = ( int8_t * )
  275. "\r\n*************Список уведомлений*******************\r\n";
  276. /* Return the next command help string, before moving the pointer on to
  277. the next command in the list. */
  278. strncpy( ( char * ) buf, ( const char * ) pcNotificationTableHeader, strlen( ( char * ) pcNotificationTableHeader ) );
  279. for (i = 1; i < ALL_TRAPS; i++) {
  280. sprintf(str, "%d. ", i);
  281. len = strlen(str);
  282. strncat(buf, str, len);
  283. GetTrapLongNameStr(str, &len, i);
  284. strncat(buf, str, len);
  285. if ( len < 25 ) {
  286. strcat(buf, "\t\t\t\t\t");
  287. } else if (len > 37 && len <= 47) {
  288. strcat(buf, "\t\t\t");
  289. } else if (len > 47) {
  290. strcat(buf, "\t\t");
  291. } else {
  292. strcat(buf, "\t\t\t\t");
  293. }
  294. GetNotificationTrapsStateStr2(str, &len, i);
  295. strncat(buf, str, len);
  296. strcat(( char * ) buf, "\r\n");
  297. }
  298. strcat(( char * ) buf, "\r\n");
  299. }
  300. //Белый список IP адресов контроллера
  301. void whitelist_config_param(int8_t *buf)
  302. {
  303. char str[20];
  304. uint8_t len = 0;
  305. uint8_t i;
  306. const char *name_range_ip[] = {
  307. "IP-адрес 1:\t\t\t",
  308. "\r\nIP-адрес 2:\t\t\t",
  309. "\r\nIP-адрес 3:\t\t\t",
  310. "\r\nIP-адрес 4:\t\t\t",
  311. "\r\nIP-адрес 5:\t\t\t",
  312. };
  313. const int8_t *const pcInfoTableHeader = ( int8_t * )
  314. "\r\n*******Белый список IP адресов Контроллера*******\r\n";
  315. /* Return the next command help string, before moving the pointer on to
  316. the next command in the list. */
  317. strncpy( ( char * ) buf, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
  318. for (uint8_t i = 0; i < MAX_WHITE_LIST; i++) {
  319. GetWhiteListSTR(str, &len, i);
  320. strcat(( char * ) buf, name_range_ip[i]);
  321. strncat(( char * ) buf, str, len);
  322. }
  323. strcat(( char * ) buf, "\r\n");
  324. }
  325. #endif
  326. //Параметры ИБП
  327. void ups_sensor_param(int8_t *buf)
  328. {
  329. char str[20];
  330. uint8_t len = 0;
  331. GetConnectUPSAlarmStr(str, &len);
  332. strcat(( char * ) buf, "\r\nСвязь с ИБП:\t\t\t\t");
  333. strncat(( char * ) buf, str, len);
  334. const int8_t *const pcUPSInfoTableHeader = ( int8_t * )
  335. "\r\n\r\n***********Параметры источника питания***********\r\n";
  336. /* Return the next command help string, before moving the pointer on to
  337. the next command in the list. */
  338. strncat( ( char * ) buf, ( const char * ) pcUPSInfoTableHeader, strlen( ( char * ) pcUPSInfoTableHeader ) );
  339. GetInputVoltageStr(str, &len);
  340. strcat(( char * ) buf, "Входное напряжение (VAC):\t\t");
  341. strncat(( char * ) buf, str, len);
  342. strcat(( char * ) buf, "\r\nВыходное напряжение (VAC):\t\t");
  343. GetOutputVoltageStr(str, &len);
  344. strncat(( char * ) buf, str, len);
  345. #ifdef HARDWARE_BT6709
  346. GetInputCurrentStr(str, &len);
  347. strcat(( char * ) buf, "\r\nВходная сила тока (A):\t\t\t");
  348. strncat(( char * ) buf, str, len);
  349. strcat(( char * ) buf, "\r\nВыходная сила тока (A):\t\t\t");
  350. GetOutputCurrentStr(str, &len);
  351. strncat(( char * ) buf, str, len);
  352. #endif
  353. strcat(( char * ) buf, "\r\nВходная частота:\t\t\t");
  354. GetInputFreqStr(str, &len);
  355. strncat(( char * ) buf, str, len);
  356. strcat(( char * ) buf, "\r\nНагрузка:\t\t\t\t");
  357. GetPowerStr(str, &len);
  358. strncat(( char * ) buf, str, len);
  359. strcat(( char * ) buf, "\r\nТекущий режим:\t\t\t\t");
  360. GetUPSModeStr(str, &len);
  361. strncat(( char * ) buf, str, len);
  362. strcat(( char * ) buf, "\r\nСтатус:\t\t\t\t\t");
  363. GetUPSAlarmStr(str, &len);
  364. strncat(( char * ) buf, str, len);
  365. strcat(( char * ) buf, "\r\n");
  366. }
  367. //Параметры аккумуляторных батарей
  368. void ups_sensor_akb_param(int8_t *buf)
  369. {
  370. char str[40];
  371. uint8_t len = 0;
  372. const int8_t *const pcAKBInfoTableHeader = ( int8_t * )
  373. "\r\n*********Параметры аккумуляторных батарей*********\r\n";
  374. /* Return the next command help string, before moving the pointer on to
  375. the next command in the list. */
  376. strncpy( ( char * ) buf, ( const char * ) pcAKBInfoTableHeader, strlen( ( char * ) pcAKBInfoTableHeader ) );
  377. GetBatCapacityStr(str, &len);
  378. strcat(( char * ) buf, "Оставшаяся емкость батареи (%):\t\t");
  379. strncat(( char * ) buf, str, len);
  380. strcat(( char * ) buf, "\r\nВнутренняя температура (°C):\t\t");
  381. GetInternalTempStr(str, &len);
  382. strncat(( char * ) buf, str, len);
  383. strcat(( char * ) buf, "\r\nОставшееся время работы (мин):\t\t");
  384. GetRuntimeStr(str, &len);
  385. strncat(( char * ) buf, str, len);
  386. #ifdef HARDWARE_BT6709
  387. GetCapacityNominalAKBStr(str, &len);
  388. strcat(( char * ) buf, "\r\nЕмкость батареи (Ач):\t\t\t");
  389. strncat(( char * ) buf, str, len);
  390. strcat(( char * ) buf, "\r\nНапряжение батареи (В):\t\t\t");
  391. GetVoltageAKBtStr(str, &len);
  392. strncat(( char * ) buf, str, len);
  393. strcat(( char * ) buf, "\r\nДата следующей замены:\t\t\t");
  394. GetDataNextChangeAKBStrRU(str, &len);
  395. strncat(( char * ) buf, str, len);
  396. #endif
  397. strcat(( char * ) buf, "\r\nСтатус:\t\t\t\t\t");
  398. GetAKBAlarmStr(str, &len);
  399. strncat(( char * ) buf, str, len);
  400. strcat(( char * ) buf, "\r\n");
  401. }
  402. #ifdef INOUTS_ENABLE
  403. //Параметры сухих контактов
  404. void inouts_sensor_param(int8_t *buf)
  405. {
  406. char str[20];
  407. uint8_t len = 0;
  408. const int8_t *const pcInOutsInfoTableHeader = ( int8_t * )
  409. "\r\n************Параметры сухих контактов************\r\n";
  410. /* Return the next command help string, before moving the pointer on to
  411. the next command in the list. */
  412. strncpy( ( char * ) buf, ( const char * ) pcInOutsInfoTableHeader, strlen( ( char * ) pcInOutsInfoTableHeader ) );
  413. GetDIN0StatusStrRU(str, &len);
  414. strcat(( char * ) buf, "Дискретный вход:\t\t\t");
  415. strncat(( char * ) buf, str, len);
  416. strcat(( char * ) buf, "\r\nРелейный выход 1:\t\t\t");
  417. GetDOUTStatusStrRU(str, &len, 0);
  418. strncat(( char * ) buf, str, len);
  419. strcat(( char * ) buf, "\r\nРелейный выход 2:\t\t\t");
  420. GetDOUTStatusStrRU(str, &len, 1);
  421. strncat(( char * ) buf, str, len);
  422. strcat(( char * ) buf, "\r\nРелейный выход 3:\t\t\t");
  423. GetDOUTStatusStrRU(str, &len, 2);
  424. strncat(( char * ) buf, str, len);
  425. strcat(( char * ) buf, "\r\n");
  426. }
  427. #endif