private_mib_bt6711.c 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167
  1. /*
  2. * private_mib_bt6709.c
  3. *
  4. * Created on: 03.10.2018
  5. * Author: balbekova
  6. */
  7. #if defined HARDWARE_BT6711
  8. #include "stm32f4xx.h"
  9. #include "private_mib.h"
  10. #include "parameters.h"
  11. #include "settings_api.h"
  12. #include "log.h"
  13. #include "megatec.h"
  14. #include "control_symbol.h"
  15. #include "sntp_api.h"
  16. #include "web_params_api.h"
  17. #include "hal.h"
  18. #include "FreeRTOS.h"
  19. #include "task.h"
  20. #include <ctype.h>
  21. #ifdef PRINTF_STDLIB
  22. #include <stdio.h>
  23. #endif
  24. #ifdef PRINTF_CUSTOM
  25. #include "tinystdio.h"
  26. #endif
  27. #include "lwip/apps/snmp_scalar.h"
  28. #include "lwip/apps/snmp.h"
  29. //#include "snmp_core.h"
  30. #define MUL100 100
  31. #define MUL10 10
  32. extern struct snmp_mib mib2;
  33. /**
  34. * @brief Общая структура настроек
  35. */
  36. extern SETTINGS_t sSettings;
  37. static s16_t signal_get_value(struct snmp_node_instance *instance, void *value);
  38. static snmp_err_t signal_set_value(struct snmp_node_instance *instance, u16_t len, void *value);
  39. static snmp_err_t signal_set_test(struct snmp_node_instance *instance, u16_t len, void *value);
  40. /* signal .1.3.6.1.4.1.41752.911.11.1.57 */
  41. static const struct snmp_scalar_node signal57 = SNMP_SCALAR_CREATE_NODE(57, SNMP_NODE_INSTANCE_READ_WRITE,
  42. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  43. /* signal .1.3.6.1.4.1.41752.911.11.1.56 */
  44. static const struct snmp_scalar_node signal56 = SNMP_SCALAR_CREATE_NODE(56, SNMP_NODE_INSTANCE_READ_WRITE,
  45. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  46. /* signal .1.3.6.1.4.1.41752.911.11.1.55 */
  47. static const struct snmp_scalar_node signal55 = SNMP_SCALAR_CREATE_NODE(55, SNMP_NODE_INSTANCE_READ_WRITE,
  48. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  49. /* signal .1.3.6.1.4.1.41752.911.11.1.54 */
  50. static const struct snmp_scalar_node signal54 =SNMP_SCALAR_CREATE_NODE_READONLY(54, SNMP_ASN1_TYPE_OCTET_STRING,
  51. signal_get_value);
  52. /* signal .1.3.6.1.4.1.41752.911.11.1.53 */
  53. static const struct snmp_scalar_node signal53 = SNMP_SCALAR_CREATE_NODE(53, SNMP_NODE_INSTANCE_READ_WRITE,
  54. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  55. /* signal .1.3.6.1.4.1.41752.911.11.1.52 */
  56. static const struct snmp_scalar_node signal52 = SNMP_SCALAR_CREATE_NODE(52, SNMP_NODE_INSTANCE_READ_WRITE,
  57. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  58. /* signal .1.3.6.1.4.1.41752.911.11.1.51 */
  59. static const struct snmp_scalar_node signal51 = SNMP_SCALAR_CREATE_NODE_READONLY(51, SNMP_ASN1_TYPE_OCTET_STRING,
  60. signal_get_value);
  61. /* signal .1.3.6.1.4.1.41752.911.11.1.50 */
  62. static const struct snmp_scalar_node signal50 = SNMP_SCALAR_CREATE_NODE(50, SNMP_NODE_INSTANCE_READ_WRITE,
  63. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  64. /* signal .1.3.6.1.4.1.41752.911.11.1.49 */
  65. static const struct snmp_scalar_node signal49 = SNMP_SCALAR_CREATE_NODE(49, SNMP_NODE_INSTANCE_READ_WRITE,
  66. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  67. /* signal .1.3.6.1.4.1.41752.911.11.1.48 */
  68. static const struct snmp_scalar_node signal48 = SNMP_SCALAR_CREATE_NODE(48, SNMP_NODE_INSTANCE_READ_WRITE,
  69. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  70. /* signal .1.3.6.1.4.1.41752.911.11.1.47 */
  71. static const struct snmp_scalar_node signal47 = SNMP_SCALAR_CREATE_NODE(47, SNMP_NODE_INSTANCE_READ_WRITE,
  72. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  73. /* signal .1.3.6.1.4.1.41752.911.11.1.46 */
  74. static const struct snmp_scalar_node signal46 = SNMP_SCALAR_CREATE_NODE(46, SNMP_NODE_INSTANCE_READ_WRITE,
  75. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  76. /* signal .1.3.6.1.4.1.41752.911.11.1.45 */
  77. static const struct snmp_scalar_node signal45 = SNMP_SCALAR_CREATE_NODE(45, SNMP_NODE_INSTANCE_READ_WRITE,
  78. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  79. /* signal .1.3.6.1.4.1.41752.911.11.1.44 */
  80. static const struct snmp_scalar_node signal44 = SNMP_SCALAR_CREATE_NODE(44, SNMP_NODE_INSTANCE_READ_WRITE,
  81. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  82. /* signal .1.3.6.1.4.1.41752.911.11.1.43 */
  83. static const struct snmp_scalar_node signal43 = SNMP_SCALAR_CREATE_NODE(43, SNMP_NODE_INSTANCE_READ_WRITE,
  84. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  85. /* signal .1.3.6.1.4.1.41752.911.11.1.42 */
  86. static const struct snmp_scalar_node signal42 = SNMP_SCALAR_CREATE_NODE(42, SNMP_NODE_INSTANCE_READ_WRITE,
  87. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  88. /* signal .1.3.6.1.4.1.41752.911.11.1.41 */
  89. static const struct snmp_scalar_node signal41 = SNMP_SCALAR_CREATE_NODE(41, SNMP_NODE_INSTANCE_READ_WRITE,
  90. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  91. /* signal .1.3.6.1.4.1.41752.911.11.1.40 */
  92. static const struct snmp_scalar_node signal40 = SNMP_SCALAR_CREATE_NODE(40, SNMP_NODE_INSTANCE_READ_WRITE,
  93. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  94. /* signal .1.3.6.1.4.1.41752.911.11.1.39 */
  95. static const struct snmp_scalar_node signal39 = SNMP_SCALAR_CREATE_NODE(39, SNMP_NODE_INSTANCE_READ_WRITE,
  96. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  97. /* signal .1.3.6.1.4.1.41752.911.11.1.38 */
  98. static const struct snmp_scalar_node signal38 = SNMP_SCALAR_CREATE_NODE(38, SNMP_NODE_INSTANCE_READ_WRITE,
  99. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  100. /* signal .1.3.6.1.4.1.41752.911.11.1.37 */
  101. static const struct snmp_scalar_node signal37 = SNMP_SCALAR_CREATE_NODE(37, SNMP_NODE_INSTANCE_READ_WRITE,
  102. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  103. /* signal .1.3.6.1.4.1.41752.911.11.1.36 */
  104. static const struct snmp_scalar_node signal36 = SNMP_SCALAR_CREATE_NODE(36, SNMP_NODE_INSTANCE_READ_WRITE,
  105. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  106. /* signal .1.3.6.1.4.1.41752.911.11.1.35 */
  107. static const struct snmp_scalar_node signal35 = SNMP_SCALAR_CREATE_NODE(35, SNMP_NODE_INSTANCE_READ_WRITE,
  108. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  109. /* signal .1.3.6.1.4.1.41752.911.10.1.34 */
  110. static const struct snmp_scalar_node signal34 = SNMP_SCALAR_CREATE_NODE(34, SNMP_NODE_INSTANCE_READ_WRITE,
  111. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  112. /* signal .1.3.6.1.4.1.41752.911.11.1.33 */
  113. static const struct snmp_scalar_node signal33 = SNMP_SCALAR_CREATE_NODE(33, SNMP_NODE_INSTANCE_READ_WRITE,
  114. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  115. /* signal .1.3.6.1.4.1.41752.911.11.1.32 */
  116. static const struct snmp_scalar_node signal32 = SNMP_SCALAR_CREATE_NODE(32, SNMP_NODE_INSTANCE_READ_WRITE,
  117. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  118. /* signal .1.3.6.1.4.1.41752.911.11.1.31 */
  119. static const struct snmp_scalar_node signal31 = SNMP_SCALAR_CREATE_NODE_READONLY(31, SNMP_ASN1_TYPE_OCTET_STRING,
  120. signal_get_value);
  121. /* signal .1.3.6.1.4.1.41752.911.11.1.30 */
  122. static const struct snmp_scalar_node signal30 = SNMP_SCALAR_CREATE_NODE_READONLY(30, SNMP_ASN1_TYPE_OCTET_STRING,
  123. signal_get_value);
  124. /* signal .1.3.6.1.4.1.41752.911.11.1.29 */
  125. static const struct snmp_scalar_node signal29 = SNMP_SCALAR_CREATE_NODE_READONLY(29, SNMP_ASN1_TYPE_OCTET_STRING,
  126. signal_get_value);
  127. /* signal .1.3.6.1.4.1.41752.911.11.1.28 */
  128. static const struct snmp_scalar_node signal28 =SNMP_SCALAR_CREATE_NODE_READONLY(28, SNMP_ASN1_TYPE_OCTET_STRING,
  129. signal_get_value);
  130. /* signal .1.3.6.1.4.1.41752.911.11.1.27 */
  131. static const struct snmp_scalar_node signal27 = SNMP_SCALAR_CREATE_NODE_READONLY(27, SNMP_ASN1_TYPE_OCTET_STRING,
  132. signal_get_value);
  133. /* signal .1.3.6.1.4.1.41752.911.11.1.26 */
  134. static const struct snmp_scalar_node signal26 = SNMP_SCALAR_CREATE_NODE(26, SNMP_NODE_INSTANCE_READ_WRITE,
  135. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  136. /* signal .1.3.6.1.4.1.41752.911.11.1.25 */
  137. static const struct snmp_scalar_node signal25 = SNMP_SCALAR_CREATE_NODE(25, SNMP_NODE_INSTANCE_READ_WRITE,
  138. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  139. /* signal .1.3.6.1.4.1.41752.911.11.1.24 */
  140. static const struct snmp_scalar_node signal24 = SNMP_SCALAR_CREATE_NODE(24, SNMP_NODE_INSTANCE_READ_WRITE,
  141. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  142. /* signal .1.3.6.1.4.1.41752.911.11.1.23 */
  143. static const struct snmp_scalar_node signal23 = SNMP_SCALAR_CREATE_NODE(23, SNMP_NODE_INSTANCE_READ_WRITE,
  144. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  145. /* signal .1.3.6.1.4.1.41752.911.11.1.22 */
  146. static const struct snmp_scalar_node signal22 = SNMP_SCALAR_CREATE_NODE(22, SNMP_NODE_INSTANCE_READ_WRITE,
  147. SNMP_ASN1_TYPE_OCTET_STRING, signal_get_value, signal_set_test, signal_set_value);
  148. /* signal .1.3.6.1.4.1.41752.911.11.1.21 */
  149. static const struct snmp_scalar_node signal21 = SNMP_SCALAR_CREATE_NODE_READONLY(21, SNMP_ASN1_TYPE_OCTET_STRING,
  150. signal_get_value);
  151. /* signal .1.3.6.1.4.1.41752.911.11.1.20 */
  152. static const struct snmp_scalar_node signal20 = SNMP_SCALAR_CREATE_NODE_READONLY(20, SNMP_ASN1_TYPE_OCTET_STRING,
  153. signal_get_value);
  154. /* signal .1.3.6.1.4.1.41752.911.11.1.19 */
  155. static const struct snmp_scalar_node signal19 = SNMP_SCALAR_CREATE_NODE_READONLY(19, SNMP_ASN1_TYPE_OCTET_STRING,
  156. signal_get_value);
  157. /* signal .1.3.6.1.4.1.41752.911.11.1.18 */
  158. static const struct snmp_scalar_node signal18 = SNMP_SCALAR_CREATE_NODE_READONLY(18, SNMP_ASN1_TYPE_OCTET_STRING,
  159. signal_get_value);
  160. /* signal .1.3.6.1.4.1.41752.911.11.1.17 */
  161. static const struct snmp_scalar_node signal17 = SNMP_SCALAR_CREATE_NODE_READONLY(17, SNMP_ASN1_TYPE_OCTET_STRING,
  162. signal_get_value);
  163. /* signal .1.3.6.1.4.1.41752.911.11.1.16 */
  164. static const struct snmp_scalar_node signal16 = SNMP_SCALAR_CREATE_NODE_READONLY(16, SNMP_ASN1_TYPE_OCTET_STRING,
  165. signal_get_value);
  166. /* signal .1.3.6.1.4.1.41752.911.11.1.15 */
  167. static const struct snmp_scalar_node signal15 = SNMP_SCALAR_CREATE_NODE_READONLY(15, SNMP_ASN1_TYPE_OCTET_STRING,
  168. signal_get_value);
  169. /* signal .1.3.6.1.4.1.41752.911.11.1.14 */
  170. static const struct snmp_scalar_node signal14 = SNMP_SCALAR_CREATE_NODE_READONLY(14, SNMP_ASN1_TYPE_OCTET_STRING,
  171. signal_get_value);
  172. /* signal .1.3.6.1.4.1.41752.911.11.1.13 */
  173. static const struct snmp_scalar_node signal13 = SNMP_SCALAR_CREATE_NODE_READONLY(13, SNMP_ASN1_TYPE_OCTET_STRING,
  174. signal_get_value);
  175. /* signal .1.3.6.1.4.1.41752.911.11.1.12 */
  176. static const struct snmp_scalar_node signal12 = SNMP_SCALAR_CREATE_NODE_READONLY(12, SNMP_ASN1_TYPE_OCTET_STRING,
  177. signal_get_value);
  178. /* signal .1.3.6.1.4.1.41752.911.11.1.11 */
  179. static const struct snmp_scalar_node signal11 = SNMP_SCALAR_CREATE_NODE_READONLY(11, SNMP_ASN1_TYPE_OCTET_STRING,
  180. signal_get_value);
  181. /* signal .1.3.6.1.4.1.41752.911.11.1.10 */
  182. static const struct snmp_scalar_node signal10 = SNMP_SCALAR_CREATE_NODE_READONLY(10, SNMP_ASN1_TYPE_OCTET_STRING,
  183. signal_get_value);
  184. /* signal .1.3.6.1.4.1.41752.911.11.1.9 */
  185. static const struct snmp_scalar_node signal9 = SNMP_SCALAR_CREATE_NODE_READONLY(9, SNMP_ASN1_TYPE_OCTET_STRING,
  186. signal_get_value);
  187. /* signal .1.3.6.1.4.1.41752.911.11.1.8 */
  188. static const struct snmp_scalar_node signal8 = SNMP_SCALAR_CREATE_NODE(8, SNMP_NODE_INSTANCE_WRITE_ONLY,
  189. SNMP_ASN1_TYPE_OCTET_STRING, NULL, signal_set_test, signal_set_value);
  190. /* signal .1.3.6.1.4.1.41752.911.11.1.7 */
  191. static const struct snmp_scalar_node signal7 = SNMP_SCALAR_CREATE_NODE(7, SNMP_NODE_INSTANCE_WRITE_ONLY,
  192. SNMP_ASN1_TYPE_INTEGER, NULL, signal_set_test, signal_set_value);
  193. /* signal .1.3.6.1.4.1.41752.911.11.1.6 */
  194. static const struct snmp_scalar_node signal6 = SNMP_SCALAR_CREATE_NODE_READONLY(6, SNMP_ASN1_TYPE_OCTET_STRING,
  195. signal_get_value);
  196. /* signal .1.3.6.1.4.1.41752.911.11.1.5 */
  197. static const struct snmp_scalar_node signal5 = SNMP_SCALAR_CREATE_NODE_READONLY(5, SNMP_ASN1_TYPE_OCTET_STRING,
  198. signal_get_value);
  199. /* signal .1.3.6.1.4.1.41752.911.11.1.4 */
  200. static const struct snmp_scalar_node signal4 = SNMP_SCALAR_CREATE_NODE_READONLY(4, SNMP_ASN1_TYPE_OCTET_STRING,
  201. signal_get_value);
  202. /* signal .1.3.6.1.4.1.41752.911.11.1.3 */
  203. static const struct snmp_scalar_node signal3 = SNMP_SCALAR_CREATE_NODE(3, SNMP_NODE_INSTANCE_WRITE_ONLY,
  204. SNMP_ASN1_TYPE_INTEGER, NULL, signal_set_test, signal_set_value);
  205. /* signal .1.3.6.1.4.1.41752.911.11.1.2 */
  206. static const struct snmp_scalar_node signal2 = SNMP_SCALAR_CREATE_NODE(2, SNMP_NODE_INSTANCE_WRITE_ONLY,
  207. SNMP_ASN1_TYPE_INTEGER, NULL, signal_set_test, signal_set_value);
  208. /* signal .1.3.6.1.4.1.41752.911.11.1.1 */
  209. static const struct snmp_scalar_node signal1 = SNMP_SCALAR_CREATE_NODE_READONLY(1, SNMP_ASN1_TYPE_OCTET_STRING,
  210. signal_get_value);
  211. // signals .1.3.6.1.4.1.41752.911.11.1
  212. static const struct snmp_node *const signals_nodes[] = {
  213. &signal1.node.node,
  214. &signal2.node.node,
  215. &signal3.node.node,
  216. &signal4.node.node,
  217. &signal5.node.node,
  218. &signal6.node.node,
  219. &signal7.node.node,
  220. &signal8.node.node,
  221. &signal9.node.node,
  222. &signal10.node.node,
  223. &signal11.node.node,
  224. &signal12.node.node,
  225. &signal13.node.node,
  226. &signal14.node.node,
  227. &signal15.node.node,
  228. &signal16.node.node,
  229. &signal17.node.node,
  230. &signal18.node.node,
  231. &signal19.node.node,
  232. &signal20.node.node,
  233. &signal21.node.node,
  234. &signal22.node.node,
  235. &signal23.node.node,
  236. &signal24.node.node,
  237. &signal25.node.node,
  238. &signal26.node.node,
  239. &signal27.node.node,
  240. &signal28.node.node,
  241. &signal29.node.node,
  242. &signal30.node.node,
  243. &signal31.node.node,
  244. &signal32.node.node,
  245. &signal33.node.node,
  246. &signal34.node.node,
  247. &signal35.node.node,
  248. &signal36.node.node,
  249. &signal37.node.node,
  250. &signal38.node.node,
  251. &signal39.node.node,
  252. &signal40.node.node,
  253. &signal41.node.node,
  254. &signal42.node.node,
  255. &signal43.node.node,
  256. &signal44.node.node,
  257. &signal45.node.node,
  258. &signal46.node.node,
  259. &signal47.node.node,
  260. &signal48.node.node,
  261. &signal49.node.node,
  262. &signal50.node.node,
  263. &signal51.node.node,
  264. &signal52.node.node,
  265. &signal53.node.node,
  266. &signal54.node.node,
  267. &signal55.node.node,
  268. &signal56.node.node,
  269. &signal57.node.node,
  270. };
  271. static const struct snmp_tree_node signals_node = SNMP_CREATE_TREE_NODE(1, signals_nodes);
  272. // bt_6703 .1.3.6.1.4.1.41752.911.11
  273. static const struct snmp_node *const bt6711_nodes[] = {
  274. &signals_node.node
  275. };
  276. static const struct snmp_tree_node bt6711_node = SNMP_CREATE_TREE_NODE(SNMP_DEV_ROOT_OID, bt6711_nodes);
  277. // swt .1.3.6.1.4.1.41752.911
  278. static const struct snmp_node *const swt_nodes[] = {
  279. &bt6711_node.node
  280. };
  281. static const struct snmp_tree_node swt_node = SNMP_CREATE_TREE_NODE(911, swt_nodes);
  282. // rotek .1.3.6.1.4.1.41752
  283. static const struct snmp_node *const rotek_nodes[] = {
  284. &swt_node.node
  285. };
  286. static const struct snmp_tree_node rotek_node = SNMP_CREATE_TREE_NODE(41752, rotek_nodes);
  287. // enterprises .1.3.6.1.4.1
  288. static const struct snmp_node *const enterprises_nodes[] = {
  289. &rotek_node.node
  290. };
  291. static const struct snmp_tree_node enterprises_node = SNMP_CREATE_TREE_NODE(1, enterprises_nodes);
  292. // private .1.3.6.1.4
  293. static const struct snmp_node *const private_nodes[] = {
  294. &enterprises_node.node
  295. };
  296. static const struct snmp_tree_node private_root = SNMP_CREATE_TREE_NODE(0, private_nodes);
  297. static const u32_t prvmib_base_oid[] = { 1, 3, 6, 1, 4 };
  298. static const struct snmp_mib private_mib = SNMP_MIB_CREATE(prvmib_base_oid, &private_root.node);
  299. void lwip_privmib_init(void)
  300. {
  301. static const struct snmp_mib *my_snmp_mibs[] = {&mib2, &private_mib};
  302. snmp_set_mibs(my_snmp_mibs, LWIP_ARRAYSIZE(my_snmp_mibs));
  303. }
  304. uint32_t check_netsettings(char *addr, uint8_t len)
  305. {
  306. uint32_t val = 0;
  307. uint8_t i, j;
  308. uint8_t cnt_dot = 0;
  309. uint8_t digit = 0;
  310. uint8_t c = *addr;
  311. for (j = 0; j <= len; j ++) {
  312. if (isdigit(c)) {
  313. val = (val * 10) + (int)(c - '0');
  314. } else if (c == '.' || c == 0) {
  315. if (val > 0xff) {
  316. return 0;
  317. }
  318. cnt_dot ++;
  319. val = 0;
  320. } else {
  321. return 0;
  322. }
  323. c = *++addr;
  324. }
  325. if (cnt_dot != 4) {
  326. return 0;
  327. }
  328. return 1;
  329. }
  330. static s16_t signal_get_value(struct snmp_node_instance *instance, void *value)
  331. {
  332. u8_t *paramStr = (u8_t *)value;
  333. s32_t *paramInt = (u8_t*)value;
  334. u8_t paramLength = 0;
  335. float val = 0;
  336. int32_t int_val = 0;
  337. u32_t oid = instance->node->oid; // id сигнала
  338. switch (oid) {
  339. case 1: /* FWVersion */
  340. GetVersionStr((char *)paramStr, &paramLength);
  341. break;
  342. case 4: /* UPSModel*/
  343. GetUPSModelStr((char *)paramStr, &paramLength);
  344. break;
  345. case 5: /* UPSSerial*/
  346. GetUPSSerialStr((char *)paramStr, &paramLength);
  347. break;
  348. case 6: /* UPSVersion*/
  349. GetUPSVersionStr((char *)paramStr, &paramLength);
  350. break;
  351. case 9: /* IntTemp */
  352. GetInternalTempStr((char *)paramStr, &paramLength);
  353. break;
  354. case 10: /* InFreq */
  355. GetInputFreqStr((char *)paramStr, &paramLength);
  356. break;
  357. case 11: /* InVoltVAC */
  358. GetInputVoltageStr((char *)paramStr, &paramLength);
  359. break;
  360. case 12: /* OutVoltVAC */
  361. GetOutputVoltageStr((char *)paramStr, &paramLength);
  362. break;
  363. case 13: /* Power */
  364. GetPowerStr((char *)paramStr, &paramLength);
  365. break;
  366. case 14: /* InputCurrent */
  367. GetInputCurrentStr((char *)paramStr, &paramLength);
  368. break;
  369. case 15: /* OutputCurrent */
  370. GetOutputCurrentStr((char *)paramStr, &paramLength);
  371. break;
  372. case 16: /* BatCap */
  373. GetBatCapacityStr((char *)paramStr, &paramLength);
  374. break;
  375. case 17: /* UPS mode */
  376. GetModeStr((char *)paramStr, &paramLength);
  377. break;
  378. case 18: /* BatTime */
  379. GetRuntimeStr((char *)paramStr, &paramLength);
  380. break;
  381. case 19: /* VoltageAKB */
  382. GetVoltageAKBtStr((char *)paramStr, &paramLength);
  383. break;
  384. case 20: /* ConnectMonitor */
  385. GetConnectMonitorStr((char *)paramStr, &paramLength);
  386. break;
  387. case 21: /* Alarms */
  388. GetAlarmStr((char *)paramStr, &paramLength);
  389. break;
  390. case 22: /* IP server1 (traps) */
  391. GetManagerIp((char *)paramStr, &paramLength);
  392. break;
  393. case 23: /* IP server2 (traps) */
  394. GetManagerIp2((char *)paramStr, &paramLength);
  395. break;
  396. case 24: /* IP server3 (traps) */
  397. GetManagerIp3((char *)paramStr, &paramLength);
  398. break;
  399. case 25: /* IP server4 (traps) */
  400. GetManagerIp4((char *)paramStr, &paramLength);
  401. break;
  402. case 26: /* IP server5 (traps) */
  403. GetManagerIp5((char *)paramStr, &paramLength);
  404. break;
  405. case 27: /* WhiteList range 1 */
  406. GetWhiteListSTR((char *)paramStr, &paramLength, 0);
  407. break;
  408. case 28: /* WhiteList range 2 */
  409. GetWhiteListSTR((char *)paramStr, &paramLength, 1);
  410. break;
  411. case 29: /* WhiteList range 3 */
  412. GetWhiteListSTR((char *)paramStr, &paramLength, 2);
  413. break;
  414. case 30: /* WhiteList range 4 */
  415. GetWhiteListSTR((char *)paramStr, &paramLength, 3);
  416. break;
  417. case 31: /* WhiteList range 5 */
  418. GetWhiteListSTR((char *)paramStr, &paramLength, 4);
  419. break;
  420. case 32: /* UPSVoltCellMin */
  421. GetUPSVoltCellMinStr((char *)paramStr, &paramLength);
  422. break;
  423. case 33: /* UPSVoltCellMax */
  424. GetUPSVoltCellMaxStr((char *)paramStr, &paramLength);
  425. break;
  426. case 34: /* VoltageAKBNominal*/
  427. GetVoltageAKBNominalStr((char *)paramStr, &paramLength);
  428. break;
  429. case 35: /* CapacityNominalAKB*/
  430. GetCapacityNominalAKBStr((char *)paramStr, &paramLength);
  431. break;
  432. case 36: /* UPSFullPower*/
  433. GetUPSPowerStr((char *)paramStr, &paramLength);
  434. break;
  435. case 37: /* VACAlarmHighRange */
  436. GetVACAlarmHighRangeStr((char *)paramStr, &paramLength);
  437. break;
  438. case 38: /* VACAlarmLowRange */
  439. GetVACAlarmLowRangeStr((char *)paramStr, &paramLength);
  440. break;
  441. case 39: /* VACAlarmHistRange */
  442. GetVACAlarmHisteStr((char *)paramStr, &paramLength);
  443. break;
  444. case 40: /* VACInAlarmHighRange */
  445. GetVACInputAlarmHighRangeStr((char *)paramStr, &paramLength);
  446. break;
  447. case 41: /* VACInAlarmLowRange */
  448. GetVACInputAlarmLowRangeStr((char *)paramStr, &paramLength);
  449. break;
  450. case 42: /* VACInAlarmHistRange */
  451. GetVACinputAlarmHisteStr((char *)paramStr, &paramLength);
  452. break;
  453. case 43: /* TemperatureAlarmHighRange */
  454. GetTemperatureAlarmHighRangeStr((char *)paramStr, &paramLength);
  455. break;
  456. case 44: /* TemperatureAlarmLowRange */
  457. GetTemperatureAlarmLowRangeStr((char *)paramStr, &paramLength);
  458. break;
  459. case 45: /* TemperatureAlarmHistRange */
  460. GetTemperatureAlarmHisteStr((char *)paramStr, &paramLength);
  461. break;
  462. case 46: /* LoadAlarmHighRange */
  463. GetLoadAlarmHighRangeStr((char *)paramStr, &paramLength);
  464. break;
  465. case 47: /* LoadAlarmHistRange */
  466. GetLoadAlarmHisteStr((char *)paramStr, &paramLength);
  467. break;
  468. case 48: /* SntpTimeZone */
  469. GetSntpTimeZoneStr((char *)paramStr, &paramLength);
  470. break;
  471. case 49: /* SntpState */
  472. GetSntpStateStr((char *)paramStr, &paramLength);
  473. break;
  474. case 50: /* SntpServerIp */
  475. GetSntpServerIpStr((char *)paramStr, &paramLength);
  476. break;
  477. case 51: /* SntpLastData */
  478. GetSntpLastDataStr((char *)paramStr, &paramLength);
  479. break;
  480. case 52: /* Date */
  481. GetDateStr((char *)paramStr, &paramLength);
  482. break;
  483. case 53: /* Time */
  484. GetTimeStr((char *)paramStr, &paramLength);
  485. break;
  486. case 54: /* AKBTimeWork */
  487. GetAKBWorktimeStr((char *)paramStr, &paramLength);
  488. break;
  489. case 55: /* syslogEnable */
  490. GetSyslogEnable((char *)paramStr, &paramLength);
  491. break;
  492. case 56: /* syslogServerIP */
  493. GetSyslogServer((char *)paramStr, &paramLength);
  494. break;
  495. case 57: /* syslogServerPort */
  496. GetSyslogPort((char *)paramStr, &paramLength);
  497. break;
  498. default:
  499. break;
  500. }
  501. return paramLength;
  502. }
  503. static snmp_err_t signal_set_value(struct snmp_node_instance *instance, u16_t len, void *value)
  504. {
  505. u32_t oid = instance->node->oid; // id сигнала
  506. char *val_string;
  507. char str[20];
  508. int8_t res = 0;
  509. s32_t val;
  510. float setVal;
  511. bool enable_old_sntp;
  512. memset(str, 0, 20);
  513. switch (oid) {
  514. case 2: /* RestoreSignal */
  515. val = *(s32_t *)value;
  516. if (val == 1) {
  517. // SNMP_SendUserTrap(DEVICE_RESTORED);
  518. log_event_data(LOG_SYSTEM_DEFCONFIG, "Администратор");
  519. vTaskDelay(500);
  520. SETTINGS_SetPartDefault();
  521. SETTINGS_Save();
  522. }
  523. break;
  524. case 3: /* RebootSignal */
  525. val = *(s32_t *)value;
  526. if (val == 1) {
  527. HTTP_StartResetTask(false);
  528. }
  529. break;
  530. case 7: /* BatTest */
  531. val = *(s32_t *)value;
  532. if (val == 0) {
  533. res = ups_metac_service_pdu(ups_cancel_test);
  534. if (res == 1) {
  535. log_event_data(LOG_TEST_UPS, "Администратор (Останов)");
  536. }
  537. } else if (val > 0 && val < 100) {
  538. TimeParam = val;
  539. res = ups_metac_service_pdu(ups_test_time);
  540. set_act_source(SNMP_ACT);
  541. } else if (val == 100) {
  542. res = ups_metac_service_pdu(ups_test_10sec);
  543. set_act_source(SNMP_ACT);
  544. } else if (val == 999) {
  545. res = ups_metac_service_pdu(ups_test_low_bat);
  546. set_act_source(SNMP_ACT);
  547. }
  548. break;
  549. case 8: /* Shutdown UPS */
  550. val_string = (char *)value;
  551. float shtdn_val = atof(val_string);
  552. if (shtdn_val == 0) {
  553. res = ups_metac_service_pdu(ups_cancel_shut_down);
  554. if (res == 1) {
  555. log_event_data(LOG_SHUTDOWN_UPS, "Администратор (Останов)");
  556. }
  557. } else {
  558. TimeParamFloat = shtdn_val;
  559. res = ups_metac_service_pdu(ups_shutdown);
  560. if (res == 1) {
  561. log_event_data(LOG_SHUTDOWN_UPS, "Администратор");
  562. }
  563. }
  564. break;
  565. case 22:
  566. val_string = (char *)value;
  567. SetManagerIp(val_string);
  568. break;
  569. case 23:
  570. val_string = (char *)value;
  571. SetManagerIp2(val_string);
  572. break;
  573. case 24:
  574. val_string = (char *)value;
  575. SetManagerIp3(val_string);
  576. break;
  577. case 25:
  578. val_string = (char *)value;
  579. SetManagerIp4(val_string);
  580. break;
  581. case 26:
  582. val_string = (char *)value;
  583. SetManagerIp5(val_string);
  584. break;
  585. case 32:
  586. val_string = (char *)value;
  587. SetUPSVoltCellMinStr(val_string);
  588. break;
  589. case 33:
  590. val_string = (char *)value;
  591. SetUPSVoltCellMaxStr(val_string);
  592. break;
  593. case 34:
  594. val_string = (char *)value;
  595. SetVoltageAKBNominalStr(val_string);
  596. break;
  597. case 35:
  598. val_string = (char *)value;
  599. SetCapacityNominalAKBStr(val_string);
  600. break;
  601. case 36:
  602. val_string = (char *)value;
  603. SetUPSPowerStr(val_string);
  604. break;
  605. case 37:
  606. val_string = (char *)value;
  607. SetVACAlarmHighRangeStr(val_string);
  608. break;
  609. case 38:
  610. val_string = (char *)value;
  611. SetVACAlarmLowRangeStr(val_string);
  612. break;
  613. case 39:
  614. val_string = (char *)value;
  615. SetVACAlarmHisteStr(val_string);
  616. break;
  617. case 40:
  618. val_string = (char *)value;
  619. SetVACInputAlarmHighRangeStr(val_string);
  620. break;
  621. case 41:
  622. val_string = (char *)value;
  623. SetVACInputAlarmLowRangeStr(val_string);
  624. break;
  625. case 42:
  626. val_string = (char *)value;
  627. SetVACinputAlarmHisteStr(val_string);
  628. break;
  629. case 43:
  630. val_string = (char *)value;
  631. SetTemperatureAlarmHighRangeStr(val_string);
  632. break;
  633. case 44:
  634. val_string = (char *)value;
  635. SetTemperatureAlarmLowRangeStr(val_string);
  636. break;
  637. case 45:
  638. val_string = (char *)value;
  639. SetTemperatureAlarmHisteStr(val_string);
  640. break;
  641. case 46:
  642. val_string = (char *)value;
  643. SetLoadAlarmHighRangeStr(val_string);
  644. break;
  645. case 47:
  646. val_string = (char *)value;
  647. SetLoadAlarmHistStr(val_string);
  648. break;
  649. case 48:
  650. val_string = (char *)value;
  651. SetSntpTimeZoneStr(val_string);
  652. break;
  653. case 49:
  654. enable_old_sntp = sSettings.sSNTP.sntpEnable;
  655. val_string = (char *)value;
  656. SetSntpStateStr(val_string);
  657. if (sSettings.sSNTP.sntpEnable != enable_old_sntp) {
  658. SETTINGS_Save();
  659. log_event_data(LOG_SETTING_SAVE, "Администратор (SNMP)");
  660. }
  661. break;
  662. case 50:
  663. val_string = (char *)value;
  664. if (strncmp(val_string, sSettings.sSNTP.ip, strlen(val_string)) != 0) {
  665. SetSntpServerIpStr(val_string);
  666. SETTINGS_Save();
  667. log_event_data(LOG_SETTING_SAVE, "Администратор (SNMP)");
  668. SNTP_Init();
  669. //vTaskDelay(7000);
  670. SNTP_Poll();
  671. }
  672. break;
  673. case 51:
  674. break;
  675. case 52:
  676. val_string = (char *)value;
  677. SetDateStr(val_string);
  678. break;
  679. case 53:
  680. val_string = (char *)value;
  681. SetTimeStr(val_string);
  682. break;
  683. case 54: /* AKBTimeWork */
  684. break;
  685. case 55: /* syslogEnable */
  686. val_string = (char *)value;
  687. if (val_string[0] == '1') {
  688. strcpy(val_string, "on");
  689. } else {
  690. strcpy(val_string, "off");
  691. }
  692. SetSyslogEnable(val_string);
  693. break;
  694. case 56: /* syslogServerIP */
  695. val_string = (char *)value;
  696. SetSyslogServer(val_string);
  697. break;
  698. case 57: /* syslogServerPort */
  699. val_string = (char *)value;
  700. SetSyslogPort(val_string);
  701. break;
  702. default :
  703. return SNMP_ERR_GENERROR;
  704. break;
  705. };
  706. if ((oid >= 18 && oid <= 22)
  707. || (oid >= 28 && oid <= 38)) {
  708. SETTINGS_Save();
  709. log_event_data(LOG_SETTING_SAVE, "Администратор (SNMP)");
  710. }
  711. return SNMP_ERR_NOERROR;
  712. }
  713. static snmp_err_t signal_set_test(struct snmp_node_instance *instance, u16_t len, void *value)
  714. {
  715. snmp_err_t ret = SNMP_ERR_WRONGVALUE;
  716. char *val_string;
  717. int32_t val;
  718. float tmp_value;
  719. uint8_t j;
  720. u32_t oid = instance->node->oid; // id сигнала
  721. bool fail = false;
  722. switch (oid) {
  723. case 2:
  724. case 3:
  725. if ( len == sizeof(s32_t) ) {
  726. val = *((s32_t *)value);
  727. if (val == 1) {
  728. ret = SNMP_ERR_NOERROR;
  729. }
  730. }
  731. break;
  732. case 7: /* BatTest */
  733. val = *((s32_t *)value);
  734. if ((val >= 0 && val <= 100) || val == 999) {
  735. ret = SNMP_ERR_NOERROR;
  736. }
  737. break;
  738. case 8: /* Shutdown UPS */
  739. if ( len <= 3 ) {
  740. val_string = (char *)value;
  741. val_string[len] = 0;
  742. if (atof(val_string) <= 10) {
  743. ret = SNMP_ERR_NOERROR;
  744. }
  745. }
  746. break;
  747. case 22:
  748. case 23:
  749. case 24:
  750. case 25:
  751. case 26:
  752. case 50:
  753. case 56:
  754. if ( len <= 15 ) {
  755. val_string = (char *)value;
  756. val_string[len] = 0;
  757. if (check_netsettings(val_string, len)) {
  758. ret = SNMP_ERR_NOERROR;
  759. }
  760. }
  761. break;
  762. case 32:
  763. val_string = (char *)value;
  764. val_string[len] = 0;
  765. for (j = 0; j < len; j ++) {
  766. if (!isfloatdigit(val_string[j])) {
  767. return ret;
  768. }
  769. }
  770. tmp_value = atof(val_string);
  771. if (tmp_value < sSettings.UPS_Setting.Ucellmax && tmp_value > MIN_VOLT_CELL_RANGE) {
  772. ret = SNMP_ERR_NOERROR;
  773. }
  774. break;
  775. case 33:
  776. val_string = (char *)value;
  777. val_string[len] = 0;
  778. for (j = 0; j < len; j ++) {
  779. if (!isfloatdigit(val_string[j])) {
  780. return ret;
  781. }
  782. }
  783. tmp_value = atof(val_string);
  784. if (tmp_value > sSettings.UPS_Setting.Ucellmin && tmp_value <= MAX_VOLT_CELL_RANGE) {
  785. ret = SNMP_ERR_NOERROR;
  786. }
  787. break;
  788. case 34:
  789. val_string = (char *)value;
  790. val_string[len] = 0;
  791. for (j = 0; j < len; j ++) {
  792. if (!isfloatdigit(val_string[j])) {
  793. return ret;
  794. }
  795. }
  796. tmp_value = atof(val_string);
  797. if (tmp_value > AKB_VOLTAGE_MIN_RANGE && tmp_value <= AKB_VOLTAGE_MAX_RANGE) {
  798. ret = SNMP_ERR_NOERROR;
  799. }
  800. break;
  801. case 35:
  802. val_string = (char *)value;
  803. val_string[len] = 0;
  804. for (j = 0; j < len; j ++) {
  805. if (!isdigit_int(val_string[j])) {
  806. return ret;
  807. }
  808. }
  809. val = atoi(val_string);
  810. if (val > CAPACITY_MIN_RANGE && val <= CAPACITY_MAX_RANGE) {
  811. ret = SNMP_ERR_NOERROR;
  812. }
  813. break;
  814. case 36:
  815. val_string = (char *)value;
  816. val_string[len] = 0;
  817. for (j = 0; j < len; j ++) {
  818. if (!isfloatdigit(val_string[j])) {
  819. return ret;
  820. }
  821. }
  822. tmp_value = atof(val_string);
  823. if (tmp_value > UPS_POWER_MIN_RANGE && tmp_value <= UPS_POWER_MAX_RANGE) {
  824. ret = SNMP_ERR_NOERROR;
  825. }
  826. break;
  827. case 37:
  828. case 40:
  829. val_string = (char *)value;
  830. val_string[len] = 0;
  831. for (j = 0; j < len; j ++) {
  832. if (!isdigit_int(val_string[j])) {
  833. return ret;
  834. }
  835. }
  836. tmp_value = atof(val_string);
  837. if (tmp_value >= MAX_VAC_MIN_RANGE && tmp_value <= MAX_VAC_MAX_RANGE) {
  838. ret = SNMP_ERR_NOERROR;
  839. }
  840. break;
  841. case 38:
  842. case 41:
  843. val_string = (char *)value;
  844. val_string[len] = 0;
  845. for (j = 0; j < len; j ++) {
  846. if (!isdigit_int(val_string[j])) {
  847. return ret;
  848. }
  849. }
  850. tmp_value = atof(val_string);
  851. if (tmp_value >= MIN_VAC_MIN_RANGE && tmp_value <= MIN_VAC_MAX_RANGE) {
  852. ret = SNMP_ERR_NOERROR;
  853. }
  854. break;
  855. case 39:
  856. case 42:
  857. val_string = (char *)value;
  858. val_string[len] = 0;
  859. for (j = 0; j < len; j ++) {
  860. if (!isdigit_int(val_string[j])) {
  861. return ret;
  862. }
  863. }
  864. tmp_value = atof(val_string);
  865. if (tmp_value >= HIST_VAC_MIN_RANGE && tmp_value <= HIST_VAC_MAX_RANGE) {
  866. ret = SNMP_ERR_NOERROR;
  867. }
  868. break;
  869. case 43:
  870. val_string = (char *)value;
  871. val_string[len] = 0;
  872. for (j = 0; j < len; j ++) {
  873. if (!isdigit_int(val_string[j])) {
  874. return ret;
  875. }
  876. }
  877. tmp_value = atof(val_string);
  878. if (tmp_value >= MAX_TEMP_MIN_RANGE && tmp_value <= MAX_TEMP_MAX_RANGE) {
  879. ret = SNMP_ERR_NOERROR;
  880. }
  881. break;
  882. case 44:
  883. val_string = (char *)value;
  884. val_string[len] = 0;
  885. for (j = 0; j < len; j ++) {
  886. if (!isdigit_int(val_string[j])) {
  887. if (j == 0 && val_string[j] == '-') {
  888. continue;
  889. } else {
  890. return ret;
  891. }
  892. }
  893. }
  894. tmp_value = atof(val_string);
  895. if (tmp_value >= MIN_TEMP_MIN_RANGE && tmp_value <= MIN_TEMP_MAX_RANGE) {
  896. ret = SNMP_ERR_NOERROR;
  897. }
  898. break;
  899. case 45:
  900. val_string = (char *)value;
  901. val_string[len] = 0;
  902. for (j = 0; j < len; j ++) {
  903. if (!isfloatdigit(val_string[j])) {
  904. return ret;
  905. }
  906. }
  907. tmp_value = atof(val_string);
  908. if (tmp_value >= HIST_TEMP_MIN_RANGE && tmp_value <= HIST_TEMP_MAX_RANGE) {
  909. ret = SNMP_ERR_NOERROR;
  910. }
  911. break;
  912. case 46:
  913. val_string = (char *)value;
  914. val_string[len] = 0;
  915. for (j = 0; j < len; j ++) {
  916. if (!isdigit_int(val_string[j])) {
  917. return ret;
  918. }
  919. }
  920. tmp_value = atof(val_string);
  921. if (tmp_value >= MAX_LOAD_MIN_RANGE && tmp_value <= MAX_LOAD_MAX_RANGE) {
  922. ret = SNMP_ERR_NOERROR;
  923. }
  924. break;
  925. case 47:
  926. val_string = (char *)value;
  927. val_string[len] = 0;
  928. for (j = 0; j < len; j ++) {
  929. if (!isfloatdigit(val_string[j])) {
  930. return ret;
  931. }
  932. }
  933. tmp_value = atof(val_string);
  934. if (tmp_value >= HIST_LOAD_MIN_RANGE && tmp_value <= HIST_LOAD_MAX_RANGE) {
  935. ret = SNMP_ERR_NOERROR;
  936. }
  937. break;
  938. case 48:
  939. val_string = (char *)value;
  940. val_string[len] = 0;
  941. if (len > 1 && len < 5) {
  942. bool fail = false;
  943. if (val_string[0] != '-' && val_string[0] != '+') {
  944. fail = true;
  945. }
  946. if (!isdigit_int(val_string[1]) && (!isdigit_int(val_string[2]) && val_string[2] != '.')
  947. && (!isdigit_int(val_string[3]) && val_string[3] != '.')) {
  948. fail = true;
  949. }
  950. if (len == 5) {
  951. if (!isdigit_int(val_string[4])) {
  952. fail = true;
  953. }
  954. }
  955. if (!fail) {
  956. tmp_value = atof(val_string);
  957. if (tmp_value >= -12.0 && tmp_value <= 12.0) {
  958. ret = SNMP_ERR_NOERROR;
  959. }
  960. }
  961. }
  962. break;
  963. case 49:
  964. case 55:
  965. val_string = (char *)value;
  966. val_string[len] = 0;
  967. if (len == 1) {
  968. if (val_string[0] == '0' || val_string[0] == '1') {
  969. ret = SNMP_ERR_NOERROR;
  970. }
  971. }
  972. break;
  973. case 52:
  974. val_string = (char *)value;
  975. val_string[len] = 0;
  976. if (len == 10) {
  977. for (j = 0; j < len; j++) {
  978. if (j != 4 && j != 7) {
  979. if (val_string[j] > 0x39 || val_string[j] < 0x30) {
  980. fail = true;
  981. break;
  982. }
  983. } else if (j == 4 || j == 7) {
  984. if (val_string[j] != '-') {
  985. fail = true;
  986. break;
  987. }
  988. }
  989. }
  990. if (!fail) {
  991. uint16_t temp = 0;
  992. temp = 1000 * (val_string[0] - 0x30) + 100 * (val_string[1] - 0x30) + 10 * (val_string[2] - 0x30) + val_string[3] -
  993. 0x30;
  994. if (temp > 2099 || temp < 2000) {
  995. fail = true;
  996. }
  997. temp = 0;
  998. temp = 10 * (val_string[5] - 0x30) + (val_string[6] - 0x30);
  999. if (temp > 12) {
  1000. fail = true;
  1001. }
  1002. temp = 0;
  1003. temp = 10 * (val_string[8] - 0x30) + (val_string[9] - 0x30);
  1004. if (temp > 31) {
  1005. fail = true;
  1006. }
  1007. }
  1008. if (!fail) {
  1009. ret = SNMP_ERR_NOERROR;
  1010. }
  1011. }
  1012. break;
  1013. case 53:
  1014. val_string = (char *)value;
  1015. val_string[len] = 0;
  1016. if (len == 5) {
  1017. for (j = 0; j < len; j++) {
  1018. if (j != 2) {
  1019. if (val_string[j] > 0x39 || val_string[j] < 0x30) {
  1020. fail = true;
  1021. break;
  1022. }
  1023. } else if (j == 2) {
  1024. if (val_string[j] != ':') {
  1025. fail = true;
  1026. break;
  1027. }
  1028. }
  1029. }
  1030. if (!fail) {
  1031. uint16_t temp = 0;
  1032. temp = 10 * (val_string[0] - 0x30) + (val_string[1] - 0x30);
  1033. if (temp > 23) {
  1034. fail = true;
  1035. }
  1036. temp = 0;
  1037. temp = 10 * (val_string[3] - 0x30) + (val_string[4] - 0x30);
  1038. if (temp > 59) {
  1039. fail = true;
  1040. }
  1041. }
  1042. if (!fail) {
  1043. ret = SNMP_ERR_NOERROR;
  1044. }
  1045. }
  1046. break;
  1047. case 57:
  1048. val_string = (char *)value;
  1049. val_string[len] = 0;
  1050. for (j = 0; j < len; j ++) {
  1051. if (!isdigit_int(val_string[j])) {
  1052. return ret;
  1053. }
  1054. }
  1055. val = atoi(val_string);
  1056. if (val >= 0 && val <= 65535) {
  1057. ret = SNMP_ERR_NOERROR;
  1058. }
  1059. break;
  1060. };
  1061. return ret;
  1062. }
  1063. #endif