Ver código fonte

fix trap send (only after init eth)

balbekova 5 anos atrás
pai
commit
20075fd388
2 arquivos alterados com 19 adições e 21 exclusões
  1. 2 8
      modules/Ethernet/netconf.c
  2. 17 13
      modules/Ethernet/snmp_api.c

+ 2 - 8
modules/Ethernet/netconf.c

@@ -211,11 +211,8 @@ void LwIP_DHCP_task(void *pvParameters)
                     PRINT_USART(ipaddr_ntoa(&gw));
                     PRINT_USART("\n\r");
 
-                    isIpReceived = true;
-
                     vTaskDelay(50);
-                    /* Установлен динамический IP, можно отправить трап о перезагрузке устройства */
-                    //  SNMP_SendUserTrap(DEVICE_REBOOTED);
+                    isIpReceived = true;
 
                     vTaskDelete(xHandleDHCP);
                 } else {
@@ -245,11 +242,8 @@ void LwIP_DHCP_task(void *pvParameters)
                         PRINT_USART(ipaddr_ntoa(&ipaddr));
                         PRINT_USART("\n\r");
 
-                        isIpReceived = true;
-
                         vTaskDelay(50);
-                        /* Установлен статический IP, можно отправить трап о перезагрузке устройства */
-                        // SNMP_SendUserTrap(DEVICE_REBOOTED);
+                        isIpReceived = true;
 
                         vTaskDelete(xHandleDHCP);
                     }

+ 17 - 13
modules/Ethernet/snmp_api.c

@@ -59,6 +59,8 @@ extern TRAP_t traps[];
   */
 extern SETTINGS_t sSettings;
 
+extern bool isIpReceived;
+
 /**
   * @brief  Очередь для отправки трапов
   */
@@ -104,25 +106,27 @@ void snmp_trap_tread(void *arg)
     uint8_t trapName;
 
     while (1) {
-        if (xQueueReceive(SNMP_TrapQueue, &trapName, 0) == pdTRUE) {
+        if (isIpReceived) {
+            if (xQueueReceive(SNMP_TrapQueue, &trapName, 0) == pdTRUE) {
 #ifdef HARDWARE_BT6709
-            if(sSettings.sFlagNotification[trapName])
+                if (sSettings.sFlagNotification[trapName])
 #endif
-            {
-              SNMP_SetManagerIP(sSettings.sSnmp.managerIP);
-              SNMP_SendVarbindTrap(&traps[trapName]);
+                {
+                    SNMP_SetManagerIP(sSettings.sSnmp.managerIP);
+                    SNMP_SendVarbindTrap(&traps[trapName]);
 
-              SNMP_SetManagerIP(sSettings.sSnmp.managerIP2);
-              SNMP_SendVarbindTrap(&traps[trapName]);
+                    SNMP_SetManagerIP(sSettings.sSnmp.managerIP2);
+                    SNMP_SendVarbindTrap(&traps[trapName]);
 
-              SNMP_SetManagerIP(sSettings.sSnmp.managerIP3);
-              SNMP_SendVarbindTrap(&traps[trapName]);
+                    SNMP_SetManagerIP(sSettings.sSnmp.managerIP3);
+                    SNMP_SendVarbindTrap(&traps[trapName]);
 
-              SNMP_SetManagerIP(sSettings.sSnmp.managerIP4);
-              SNMP_SendVarbindTrap(&traps[trapName]);
+                    SNMP_SetManagerIP(sSettings.sSnmp.managerIP4);
+                    SNMP_SendVarbindTrap(&traps[trapName]);
 
-              SNMP_SetManagerIP(sSettings.sSnmp.managerIP5);
-              SNMP_SendVarbindTrap(&traps[trapName]);
+                    SNMP_SetManagerIP(sSettings.sSnmp.managerIP5);
+                    SNMP_SendVarbindTrap(&traps[trapName]);
+                }
             }
         }
         vTaskDelay(10);