private_mib_bt6711.c 45 KB

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