private_mib_bt6711.c 44 KB

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