فهرست منبع

Проверил методы get и set для private_mib

TelenkovDmitry 7 سال پیش
والد
کامیت
9cc52e7728
3فایلهای تغییر یافته به همراه133 افزوده شده و 37 حذف شده
  1. 89 1
      modules/Ethernet/private_mib.c
  2. 38 36
      modules/Ethernet/private_mib.h
  3. 6 0
      modules/Ethernet/snmp_api.c

+ 89 - 1
modules/Ethernet/private_mib.c

@@ -1,15 +1,103 @@
 #include "stm32f4xx.h"  
+#include "private_mib.h"
+
+#include "lwip/apps/snmp_scalar.h"
+#include "lwip/apps/snmp.h"
+//#include "snmp_core.h"
+
+extern struct snmp_mib mib2;
+
+static s16_t test_signal_get_value(struct snmp_node_instance* instance, void* value);
+
+static snmp_err_t test_signal_set_value(struct snmp_node_instance* instance, u16_t len, void* value);
+                                        
+
+/* test signal .1.3.6.1.4.1.41752.911.3.1.1  */
+static const struct snmp_scalar_node test_signal = SNMP_SCALAR_CREATE_NODE_READONLY(1, SNMP_ASN1_TYPE_INTEGER, test_signal_get_value); 
+/* test signal .1.3.6.1.4.1.41752.911.3.1.2  */
+static const struct snmp_scalar_node test_signal2 = SNMP_SCALAR_CREATE_NODE_READONLY(2, SNMP_ASN1_TYPE_INTEGER, test_signal_get_value); 
+/* test signal .1.3.6.1.4.1.41752.911.3.1.3  */
+static const struct snmp_scalar_node test_signal3 = SNMP_SCALAR_CREATE_NODE(3, SNMP_NODE_INSTANCE_READ_WRITE, SNMP_ASN1_TYPE_INTEGER, test_signal_get_value, NULL, test_signal_set_value);
+
+// signals .1.3.6.1.4.1.41752.911.3.1 
+static const struct snmp_node* const signals_nodes[] = {
+  &test_signal.node.node,
+  &test_signal2.node.node,
+  &test_signal3.node.node
+};
+static const struct snmp_tree_node signals_node = SNMP_CREATE_TREE_NODE(1, signals_nodes);
+
+// bt_6702 .1.3.6.1.4.1.41752.911.3 
+static const struct snmp_node* const bt6702_nodes[] = {
+  &signals_node.node
+};
+static const struct snmp_tree_node bt6702_node = SNMP_CREATE_TREE_NODE(3, bt6702_nodes);
+
+// swt .1.3.6.1.4.1.41752.911 
+static const struct snmp_node* const swt_nodes[] = {
+  &bt6702_node.node
+};
+static const struct snmp_tree_node swt_node = SNMP_CREATE_TREE_NODE(911, swt_nodes);
+
+// rotek .1.3.6.1.4.1.41752 
+static const struct snmp_node* const rotek_nodes[] = {
+  &swt_node.node
+};
+static const struct snmp_tree_node rotek_node = SNMP_CREATE_TREE_NODE(41752, rotek_nodes);
+
+// enterprises .1.3.6.1.4.1 
+static const struct snmp_node* const enterprises_nodes[] = {
+  &rotek_node.node
+};
+static const struct snmp_tree_node enterprises_node = SNMP_CREATE_TREE_NODE(1, enterprises_nodes);
 
+// private .1.3.6.1.4 
+static const struct snmp_node* const private_nodes[] = {
+  &enterprises_node.node
+};
+static const struct snmp_tree_node private_root = SNMP_CREATE_TREE_NODE(0, private_nodes);
 
+static const u32_t prvmib_base_oid[] = { 1,3,6,1,4 };
+static const struct snmp_mib private_mib = SNMP_MIB_CREATE(prvmib_base_oid, &private_root.node);
 
 
 
 
+void lwip_privmib_init(void)
+{
+    static const struct snmp_mib *my_snmp_mibs[] = {&mib2, &private_mib};
+   
+    snmp_set_mibs(my_snmp_mibs, LWIP_ARRAYSIZE(my_snmp_mibs));
+}
 
 
+static s16_t test_signal_get_value(struct snmp_node_instance* instance, void* value)
+{
+    u32_t *uint_ptr = (u32_t*)value;
+    u32_t oid = instance->node->oid; // id сигнала
+    
+    // Далее...
+    //switch (oid)
+    
+    LWIP_UNUSED_ARG(instance);
+  
+    *uint_ptr = (u32_t)123;
+    return sizeof(*uint_ptr);
+         
+}
 
+static snmp_err_t test_signal_set_value(struct snmp_node_instance* instance, u16_t len, void* value)
+{
+    
+    u32_t oid = instance->node->oid; // id сигнала
+  
+    s32_t *ptr = (s32_t *)value;
+    s32_t val = *ptr;
+    
 
 
+  return SNMP_ERR_NOERROR;
+}
 
 
 
@@ -300,7 +388,7 @@ static void signals_get_object_def (u8_t ident_len, s32_t *ident, struct obj_def
     od->id_inst_len = ident_len;
     od->id_inst_ptr = ident;
 
-    id = ident[0];
+    id =     [0];
     
     switch (id)
     {

+ 38 - 36
modules/Ethernet/private_mib.h

@@ -1,37 +1,39 @@
-/********************************* (C) РОТЕК ***********************************
- * @module  template
- * @file    template.h
- * @version 1.0.0
- * @date    XX.XX.XXXX
- * $brief   template
- *******************************************************************************
- * @history     Version  Author         Comment
- * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
- *******************************************************************************
- */
-
-/* Define to prevent recursive  ----------------------------------------------*/
-#ifndef PRIVATE_MIB_H
-#define PRIVATE_MIB_H
-
-//#include "arch\cc.h"
-
-/**
-  * @brief  
-  */
-extern const struct mib_array_node mib_private;
-
-void lwip_privmib_init(void);
-/*  
-err_t snmp_send_trap_ex (s8_t generic_trap, 
-                         struct snmp_obj_id *eoid, 
-                         s32_t specific_trap, 
-                         struct snmp_obj_id* varbinds, 
-                         u8_t varbinds_num);
-*/
-
-void SNMP_SendTestTrap(void);
-
-#endif /* #ifndef PRIVATE_MIB_H */
-
+/********************************* (C) РОТЕК ***********************************
+ * @module  template
+ * @file    template.h
+ * @version 1.0.0
+ * @date    XX.XX.XXXX
+ * $brief   template
+ *******************************************************************************
+ * @history     Version  Author         Comment
+ * XX.XX.XXXX   1.0.0    Telenkov D.A.  First release.
+ *******************************************************************************
+ */
+
+/* Define to prevent recursive  ----------------------------------------------*/
+#ifndef PRIVATE_MIB_H
+#define PRIVATE_MIB_H
+
+#include "lwip/apps/snmp_opts.h"
+#include "lwip/apps/snmp_core.h"
+
+
+/**
+  * @brief  
+  */
+//extern const struct mib_array_node mib_private;
+
+void lwip_privmib_init(void);
+/*  
+err_t snmp_send_trap_ex (s8_t generic_trap, 
+                         struct snmp_obj_id *eoid, 
+                         s32_t specific_trap, 
+                         struct snmp_obj_id* varbinds, 
+                         u8_t varbinds_num);
+*/
+
+void SNMP_SendTestTrap(void);
+
+#endif /* #ifndef PRIVATE_MIB_H */
+
 /********************************* (C) РОТЕК **********************************/

+ 6 - 0
modules/Ethernet/snmp_api.c

@@ -21,6 +21,8 @@
 #include "apps/snmp.h"
 #include "snmp_mib2.h"
 
+#include "snmp_core.h"
+#include "private_mib.h"
 
 #ifdef PRINTF_STDLIB
 #include <stdio.h>
@@ -65,8 +67,11 @@ QueueHandle_t    SNMP_TrapQueue;
   */
 void SNMP_Init(void)
 {
+  //snmp_mib *my_snmp_mibs[] = { &mib2, &private_mib }; 
   //SETTINGS_SetSnmpDef();
   SNMP_AgentInit();
+  lwip_privmib_init();
+  //snmp_set_mibs(my_snmp_mibs, LWIP_ARRAYSIZE(my_snmp_mibs));
 }
 
 
@@ -266,6 +271,7 @@ void SNMP_SetManagerIP(char *ip)
 void SNMP_SetObjID(void)
 {
   static struct snmp_obj_id my_object_id = {9, {1, 3, 6, 1, 4, 1, 41752, 911, 3}};
+  //static struct snmp_obj_id my_object_id = {5, {1, 3, 6, 1, 4}};
   
   //snmp_set_sysobjid(&my_object_id);
   snmp_set_device_enterprise_oid(&my_object_id);