Просмотр исходного кода

1、添加通道编组数量和延时配置
2、snmp获取mac和及端口ok

guohui лет назад: 2
Родитель
Сommit
9fdf62dccd
4 измененных файлов с 71 добавлено и 34 удалено
  1. BIN
      cust_data/db/ac_i3_o1_english.db
  2. 2 2
      pro/src/app.c
  3. 8 0
      pro/src/common.h
  4. 61 32
      pro/src/snmp_nms.c

BIN
cust_data/db/ac_i3_o1_english.db


+ 2 - 2
pro/src/app.c

@@ -1616,7 +1616,7 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     chn = 1 ;
     nTac_chn=3;
 
-    int nGroups=8;
+    int nGroups=CHANNEL_DELAY_SEC;
     char strLog[200]={"MODBUS"};
     dev_Alarm_Run_message(_globalDeviceManager,language_alarm_Init_Success[_globalDeviceManager->_global_device_info->product_language],strLog);
     log_d("GCPDU init begin!");
@@ -1742,7 +1742,7 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
                                     _globalTACManager->product_ph_id = nTac_chn;
                                     _globalTACManager->product_ph_type = indexT;
                                     _globalTACManager->product_ph_outputType = 2; // 1三相2单相
-                                    if (indexT == ((nTac_chn-3)/(8*3)+3)%3)
+                                    if (indexT == ((nTac_chn-3)/(PHASE_GROUP_CNT*3)+3)%3)
                                     {
                                         _globalTACManager->product_ph_outputStatus = 1; // 1输出2不输出
                                     }

+ 8 - 0
pro/src/common.h

@@ -55,6 +55,14 @@
 #define LOGO_FILE           "logo.png"
 #define QRCODE_FILE         "qrcode.png"
 
+#if 1
+#define PHASE_GROUP_CNT       8
+#define CHANNEL_DELAY_SEC     8
+#else
+#define PHASE_GROUP_CNT       6
+#define CHANNEL_DELAY_SEC     6
+#endif
+
 
 #define AC_SINGLE_S_CUR_CHN_NUM 8
 #define AC_SINGLE_B_CUR_CHN_NUM 4

+ 61 - 32
pro/src/snmp_nms.c

@@ -37,7 +37,7 @@ static char* snmp_getx(int version, char *community, char *ip, char *oid_str, in
 {
     int             count;
     oid             name[MAX_OID_LEN];
-    size_t          name_length=MAX_OID_LEN;
+    size_t          namelen=MAX_OID_LEN;
     int             status;
     netsnmp_pdu    *pdu=NULL;
     netsnmp_pdu     *rsp=NULL;
@@ -57,6 +57,12 @@ static char* snmp_getx(int version, char *community, char *ip, char *oid_str, in
         return NULL;
     }
     
+    oid *poid = snmp_parse_oid(oid_str, name, &namelen);
+    if(poid==NULL) {
+        LOGE("___snmp_parse_oid failed\n");
+        return NULL;
+    }
+
     pdu = snmp_pdu_create(msgtype);
     if(!pdu) {
         LOGE("___snmp_pdu_create failed\n");
@@ -66,52 +72,37 @@ static char* snmp_getx(int version, char *community, char *ip, char *oid_str, in
     if(msgtype==SNMP_MSG_GETBULK) {
         pdu->errstat = 0;//non_repeaters;
         pdu->errindex = 10;//max_repetitions;
-        snmp_add_null_var(pdu, name, name_length);
-    }
-    else {
-        if (!snmp_parse_oid(oid_str, name, &name_length)) {
-            //failures++;
-        }
-        else {
-            snmp_add_null_var(pdu, name, name_length);
-        }
     }
+    snmp_add_null_var(pdu, name, namelen);
 
     retry:
     status = snmp_synch_response(ss, pdu, &rsp);
     if (status == STAT_SUCCESS) {
         if (rsp->errstat == SNMP_ERR_NOERROR) {
-            for (vars = rsp->variables; vars;
-                 vars = vars->next_variable)
+            for (vars = rsp->variables; vars; vars = vars->next_variable) {
                 print_variable(vars->name, vars->name_length, vars);
-
+            }
         } else {
-            LOGE("Error in packet, Reason: %s\n", snmp_errstring(rsp->errstat));
-
+            LOGE("___error in packet, reason: %s\n", snmp_errstring(rsp->errstat));
             if (rsp->errindex != 0) {
-                fprintf(stderr, "Failed object: ");
-                for (count = 1, vars = rsp->variables;
-                     vars && count != rsp->errindex;
-                     vars = vars->next_variable, count++)
-                
-                if (vars) {
-                    fprint_objid(stderr, vars->name, vars->name_length);
-		        }
+                fprintf(stderr, "failed object: ");
+                for (count = 1, vars = rsp->variables; vars && count != rsp->errindex; vars = vars->next_variable, count++) {
+                    if (vars) {
+                        fprint_objid(stderr, vars->name, vars->name_length);
+                    }
+                }
                 fprintf(stderr, "\n");
             }
 
             //retry if the errored variable was successfully removed 
-            if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID,
-					NETSNMP_DS_APP_DONT_FIX_PDUS)) {
+            if (!netsnmp_ds_get_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_APP_DONT_FIX_PDUS)) {
                 pdu = snmp_fix_pdu(rsp, SNMP_MSG_GET);
-                snmp_free_pdu(rsp);
-                rsp = NULL;
+                snmp_free_pdu(rsp); rsp = NULL;
                 if (pdu != NULL) {
                     goto retry;
 		        }
             }
         }
-
     } else if (status == STAT_TIMEOUT) {
         LOGE("Timeout: No Response from %s.\n", session.peername);
     } else {                    /* status == STAT_ERROR */
@@ -165,8 +156,8 @@ typedef struct {
 int snmp_nms_test(void)
 {
     int i,j;
-    char *ipAddr=".1.3.6.1.2.1.4.22.1.3.0";
-    char *phyAddr=".1.3.6.1.2.1.4.22.1.2.0";
+    char *ipAddr="1.3.6.1.2.1.17.4.3.1.0";
+    char *phyAddr="1.3.6.1.2.1.4.22.0";
     char *icmp="1.3.6.1.2.1.5";
     char temp[100];
 
@@ -179,8 +170,46 @@ int snmp_nms_test(void)
     }
 #endif
 
-    snmp_get(SNMP_VERSION_1, "public", "192.168.0.1", ipAddr);
-    snmp_get(SNMP_VERSION_1, "public", "192.168.0.1", phyAddr);
+    //snmp_getnext(SNMP_VERSION_2c, "public", "192.168.0.1", ipAddr);
+    //snmp_getnext(SNMP_VERSION_2c, "public", "192.168.0.1", phyAddr);
+
+/*
+    public
+    BRIDGE-MIB
+    dot1dTpFdbEntry: 1.3.6.1.2.1.17.4.3.1
+        1: dot1dTpFdbAddress - MacAddress(4 - octets)
+        2: dot1dTpFdbPort - Integer32(2 - int, int32)
+        3: dot1dTpFdbStatus - INTEGER(2 - int, int32)
+
+    private
+    tplink-ipAddr.mib
+
+    public
+    RFC1213-MIB
+    ipNetToMediaEntry: 1.3.6.1.2.1.4.22.1
+        1: ipNetToMediaIfIndex - INTEGER(2 - integer (32 bit))
+	    2: ipNetToMediaPhysAddress - PhysAddress(4 - octets)
+	    3: ipNetToMediaNetAddress - IpAddress(64 - IP address)
+	    4: ipNetToMediaType - INTEGER(2 - integer (32 bit))
+
+    ipAddrEntry: 1.3.6.1.2.1.4.20.1     //host ipaddr
+        1: ipAdEntAddr - IpAddress(64 - IP address)
+	    2: ipAdEntIfIndex - INTEGER(2 - integer (32 bit))
+	    3: ipAdEntNetMask - IpAddress(64 - IP address)
+	    4: ipAdEntBcastAddr - INTEGER(2 - integer (32 bit))
+	    5: ipAdEntReasmMaxSize - INTEGER(2 - integer (32 bit))
+
+    ifEntry: 1.3.6.1.2.1.2.2.1
+        1: ifIndex - INTEGER(2 - integer (32 bit))
+        6: ifPhysAddress - PhysAddress(4 - octets)
+        8: ifOperStatus - INTEGER(2 - integer (32 bit))
+*/
+
+    //snmp_getbulk(SNMP_VERSION_2c, "public", "192.168.0.1", "1.3.6.1.2.1.4.22.1");
+    //snmp_getbulk(SNMP_VERSION_2c, "public", "192.168.0.1", "1.3.6.1.2.1.4.20.1");
+    
+    //LOGD("++++++++++++++++\n");
+    snmp_getbulk(SNMP_VERSION_2c, "public", "192.168.0.1", "1.3.6.1.2.1.17.4");
 
     SOCK_CLEANUP;
     exit(0);