private_mib_bt6711.c 45 KB

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