Browse Source

chahge private_mib and traps

balbekova 8 years ago
parent
commit
622f288c79
4 changed files with 232 additions and 79 deletions
  1. 163 51
      modules/Ethernet/private_mib.c
  2. 1 1
      modules/Ethernet/snmp_api.c
  3. 62 26
      modules/Ethernet/trap_api.c
  4. 6 1
      modules/Ethernet/trap_api.h

+ 163 - 51
modules/Ethernet/private_mib.c

@@ -6,6 +6,7 @@
 #include "lwip/snmp_asn1.h"
 #include "lwip/snmp_asn1.h"
 #include "lwip/snmp_structs.h"
 #include "lwip/snmp_structs.h"
 
 
+#include "settings_api.h"
 #include "parameters.h"
 #include "parameters.h"
 #include "web_params_api.h"
 #include "web_params_api.h"
 #include "snmp_api.h"
 #include "snmp_api.h"
@@ -20,6 +21,12 @@
 #ifdef PRINTF_CUSTOM
 #ifdef PRINTF_CUSTOM
 #include "tinystdio.h"
 #include "tinystdio.h"
 #endif
 #endif
+#include <stdlib.h>
+
+/**
+  * @brief  Общая структура настроек
+  */
+extern SETTINGS_t sSettings;
 
 
 extern void ocstrncpy(u8_t *dst, u8_t *src, u16_t n);
 extern void ocstrncpy(u8_t *dst, u8_t *src, u16_t n);
 
 
@@ -67,9 +74,9 @@ const mib_scalar_node signals_var =
 
 
 // узел SIGNALS -----------------------------------------------------
 // узел SIGNALS -----------------------------------------------------
 
 
-const s32_t signals_ids[27] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
+const s32_t signals_ids[18] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
 
 
-struct mib_node* const signals_nodes[13] = 
+struct mib_node* const signals_nodes[18] =
 {
 {
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
@@ -83,7 +90,12 @@ struct mib_node* const signals_nodes[13] =
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
   (struct mib_node* const)&signals_var,
-  (struct mib_node* const)&signals_var
+  (struct mib_node* const)&signals_var,
+  (struct mib_node* const)&signals_var,
+  (struct mib_node* const)&signals_var,
+  (struct mib_node* const)&signals_var,
+  (struct mib_node* const)&signals_var,
+  (struct mib_node* const)&signals_var,
 };
 };
 
 
 const struct mib_array_node signals = 
 const struct mib_array_node signals = 
@@ -93,7 +105,7 @@ const struct mib_array_node signals =
   &noleafs_set_test,
   &noleafs_set_test,
   &noleafs_set_value,
   &noleafs_set_value,
   MIB_NODE_AR,
   MIB_NODE_AR,
-  13,
+  18,
   signals_ids,
   signals_ids,
   signals_nodes
   signals_nodes
 };
 };
@@ -122,7 +134,7 @@ const struct mib_array_node bt6701 =
 
 
 // узел swt ------------------------------------------------------------
 // узел swt ------------------------------------------------------------
 const s32_t swt_ids[1] = { 
 const s32_t swt_ids[1] = { 
-1
+3
 };
 };
 
 
 struct mib_node* const swt_nodes[1] = 
 struct mib_node* const swt_nodes[1] = 
@@ -244,89 +256,124 @@ static void signals_get_object_def (u8_t ident_len, s32_t *ident, struct obj_def
         od->v_len = paramLength;
         od->v_len = paramLength;
         break;
         break;
 	 case 2: /* RestoreSignal */
 	 case 2: /* RestoreSignal */
-		GetRestore(paramStr, &paramLength);
+
         od->instance = MIB_OBJECT_SCALAR;
         od->instance = MIB_OBJECT_SCALAR;
-        od->access = MIB_OBJECT_READ_WRITE;
+        od->access = MIB_OBJECT_WRITE_ONLY;
         od->asn_type = SNMP_ASN1_INTEG;
         od->asn_type = SNMP_ASN1_INTEG;
         od->v_len = sizeof(s32_t);
         od->v_len = sizeof(s32_t);
         break;
         break;
 	  case 3: /* RebootSignal */
 	  case 3: /* RebootSignal */
-		GetReboot(paramStr, &paramLength);
+
 		od->instance = MIB_OBJECT_SCALAR;
 		od->instance = MIB_OBJECT_SCALAR;
-        od->access = MIB_OBJECT_READ_WRITE;
+        od->access = MIB_OBJECT_WRITE_ONLY;
         od->asn_type = SNMP_ASN1_INTEG;
         od->asn_type = SNMP_ASN1_INTEG;
         od->v_len = sizeof(s32_t);
         od->v_len = sizeof(s32_t);
         break;
         break;
-	  case 4: /* IntTemp */
-		GetInternalTempStr(paramStr, &paramLength);
-        od->instance = MIB_OBJECT_SCALAR;
-        od->access = MIB_OBJECT_READ_ONLY;
-        od->asn_type = SNMP_ASN1_OC_STR;
-        od->v_len = paramLength;
-        break;
-      case 5: /* LineFailBit */
-		GetLineFailBitStr(paramStr, &paramLength);
+	  case 4: /* UPSModel*/
+		GetUPSModelStr(paramStr, &paramLength);
         od->instance = MIB_OBJECT_SCALAR;
         od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
         break;
         break;
-      case 6: /* LowBatBit */
-		GetLowBatteryBitStr(paramStr, &paramLength);
+	  case 5: /* DO1*/
+		GetDOUTStatusStr(paramStr, &paramLength, 0);
+		od->instance = MIB_OBJECT_SCALAR;
+		od->access = MIB_OBJECT_READ_WRITE;
+		od->asn_type = SNMP_ASN1_OC_STR;
+		od->v_len = paramLength;
+		break;
+	  case 6: /* DO2*/
+		GetDOUTStatusStr(paramStr, &paramLength, 1);
+		od->instance = MIB_OBJECT_SCALAR;
+		od->access = MIB_OBJECT_READ_WRITE;
+		od->asn_type = SNMP_ASN1_OC_STR;
+		od->v_len = paramLength;
+		break;
+	  case 7: /* BatTest*/
+
+		od->instance = MIB_OBJECT_SCALAR;
+		od->access = MIB_OBJECT_WRITE_ONLY;
+		od->asn_type = SNMP_ASN1_INTEG;
+		od->v_len = sizeof(s32_t);
+		break;
+	  case 8: /* Shutdown UPS*/
+
+		od->instance = MIB_OBJECT_SCALAR;
+		od->access = MIB_OBJECT_WRITE_ONLY;
+		od->asn_type = SNMP_ASN1_OC_STR;
+		od->v_len = paramLength;
+		break;
+	  case 9: /* DIO*/
+		GetDINStatusStr(paramStr, &paramLength, 0);
+		od->instance = MIB_OBJECT_SCALAR;
+		od->access = MIB_OBJECT_READ_ONLY;
+		od->asn_type = SNMP_ASN1_OC_STR;
+		od->v_len = paramLength;
+		break;
+	  case 10: /* IntTemp */
+		GetInternalTempStr(paramStr, &paramLength);
         od->instance = MIB_OBJECT_SCALAR;
         od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
         break;
         break;
-	  case 7: /* InFreq */
+	  case 11: /* InFreq */
 		GetInputFreqStr(paramStr, &paramLength);
 		GetInputFreqStr(paramStr, &paramLength);
 		od->instance = MIB_OBJECT_SCALAR;
 		od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
 		break;
 		break;
-	  case 8: /* OutFreq */
-		GetOutputFreqStr(paramStr, &paramLength);
-        od->instance = MIB_OBJECT_SCALAR;
-        od->access = MIB_OBJECT_READ_ONLY;
-        od->asn_type = SNMP_ASN1_OC_STR;
-        od->v_len = paramLength;
-		break;
-	  case 9: /* InVoltVAC */
+	  case 12: /* InVoltVAC */
 		GetInputVoltageStr(paramStr, &paramLength);
 		GetInputVoltageStr(paramStr, &paramLength);
 		od->instance = MIB_OBJECT_SCALAR;
 		od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
 		break;
 		break;
-	  case 10: /* OutVoltVAC */
+	  case 13: /* OutVoltVAC */
 		GetOutputVoltageStr(paramStr, &paramLength);
 		GetOutputVoltageStr(paramStr, &paramLength);
         od->instance = MIB_OBJECT_SCALAR;
         od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
         break;
         break;
-	  case 11: /* Power */
+	  case 14: /* Power */
 		GetPowerStr(paramStr, &paramLength);
 		GetPowerStr(paramStr, &paramLength);
 		od->instance = MIB_OBJECT_SCALAR;
 		od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
 		break;
 		break;
-	  case 12: /* BatCap */
+	  case 15: /* BatCap */
 		GetBatCapacityStr(paramStr, &paramLength);
 		GetBatCapacityStr(paramStr, &paramLength);
         od->instance = MIB_OBJECT_SCALAR;
         od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
+        break;
+	  case 16: /* BatTime */
+		GetRuntimeStr(paramStr, &paramLength);
+        od->instance = MIB_OBJECT_SCALAR;
+        od->access = MIB_OBJECT_READ_ONLY;
+        od->asn_type = SNMP_ASN1_OC_STR;
+        od->v_len = paramLength;
         break;	
         break;	
-      case 13: /* ConnectMonitor */
+      case 17: /* ConnectMonitor */
 		GetConnectMonitorStr(paramStr, &paramLength);
 		GetConnectMonitorStr(paramStr, &paramLength);
         od->instance = MIB_OBJECT_SCALAR;
         od->instance = MIB_OBJECT_SCALAR;
         od->access = MIB_OBJECT_READ_ONLY;
         od->access = MIB_OBJECT_READ_ONLY;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->asn_type = SNMP_ASN1_OC_STR;
         od->v_len = paramLength;
         od->v_len = paramLength;
-        break;	
+        break;
+      case 18: /* Alarms */
+    	GetAlarmStr(paramStr, &paramLength);
+        od->instance = MIB_OBJECT_SCALAR;
+        od->access = MIB_OBJECT_READ_ONLY;
+        od->asn_type = SNMP_ASN1_OC_STR;
+        od->v_len = paramLength;
+        break;
       default:
       default:
         //LWIP_DEBUGF(SNMP_MIB_DEBUG,("planar_get_object_def: no such object\n"));
         //LWIP_DEBUGF(SNMP_MIB_DEBUG,("planar_get_object_def: no such object\n"));
         od->instance = MIB_OBJECT_NONE;
         od->instance = MIB_OBJECT_NONE;
@@ -365,36 +412,51 @@ static void signals_get_value (struct obj_def *od, u16_t len, void *value)
 	case 3: /* RebootSignal */
 	case 3: /* RebootSignal */
 	  *((s32_t*)value) = 0;
 	  *((s32_t*)value) = 0;
       break;
       break;
-	case 4: /* IntTemp */
+	case 4: /* UPSModel */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
-      break;  
-	case 5: /* LineFailBit */
+	  break;
+	case 5: /* DO1 */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
-      break;  
-    case 6: /* LowBatBit */
+	  break;
+	case 6: /* DO2 */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
-      break;
-	case 7: /* InFreq */
+	  break;
+	case 7: /* BatTest */
+	  *((s32_t*)value) = 0;
+	  break;
+	case 8: /* Shutdown UPS */
+	  *((s32_t*)value) = 0;
+	  break;
+	case 9: /* DIO */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
-      break;  
-	case 8: /* OutFreq */
+	  break;
+	case 10: /* IntTemp */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
       break;  
       break;  
-	case 9: /* InVoltVAC */
+	case 11: /* InFreq */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
       break;
       break;
-	case 10: /* OutVoltVAC */
+	case 12: /* InVoltVAC */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
       break;
       break;
-	case 11: /* Power */
+	case 13: /* OutVoltVAC */
+	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
+      break;
+	case 14: /* Power */
       ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
       ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
       break;
       break;
-	case 12: /* BatCap */
+	case 15: /* BatCap */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
       break;
       break;
-    case 13: /* ConnectMonitor */
+    case 16: /* BatTime */
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
 	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
-      break;  
+      break;
+    case 17: /* ConnectMonitor */
+	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
+      break;
+    case 18: /* Alarms */
+	  ocstrncpy((u8_t*)value, (u8_t*)paramStr, len);
+      break;
     default :
     default :
 	  break;
 	  break;
   };
   };
@@ -412,23 +474,46 @@ static void signals_set_value (struct obj_def *od, u16_t len, void *value)
 {
 {
   u8_t id;
   u8_t id;
   uint32_t val;
   uint32_t val;
+  char *val_string;
   
   
   id = od->id_inst_ptr[0];
   id = od->id_inst_ptr[0];
-
-  val = *((s32_t*)value);
   
   
   switch (id)
   switch (id)
   {
   {
     case 2: /* RestoreSignal */
     case 2: /* RestoreSignal */
+      val = *((s32_t*)value);
       if (val == 1) {
       if (val == 1) {
         SNMP_SendUserTrap(DEVICE_RESTORED);
         SNMP_SendUserTrap(DEVICE_RESTORED);
         HTTP_ResetSettings();
         HTTP_ResetSettings();
       }
       }
     break;
     break;
     case 3: /* RebootSignal */
     case 3: /* RebootSignal */
+      val = *((s32_t*)value);
       if (val == 1)
       if (val == 1)
         HTTP_StartResetTask(false);
         HTTP_StartResetTask(false);
     break;
     break;
+	case 5: /* DO1 */
+	  if(sSettings.sInOuts.ro_type_source[0] == SNMP_SET){
+		  val_string = (char*)value;
+		  SetROStr(val_string, 0);
+		  SNMP_SendUserTrap(DO0_TOGGLED);
+	  }
+	  break;
+	case 6: /* DO2 */
+	  if(sSettings.sInOuts.ro_type_source[1] == SNMP_SET){
+		  val_string = (char*)value;
+		  SetROStr(val_string, 1);
+		  SNMP_SendUserTrap(DO1_TOGGLED);
+	  }
+	  break;
+	case 7: /* BatTest */
+	  val_string = (char*)value;
+
+	  break;
+	case 8: /* Shutdown UPS */
+	  val_string = (char*)value;
+
+	  break;
     default :
     default :
     break;
     break;
   };
   };
@@ -447,6 +532,7 @@ static void signals_set_value (struct obj_def *od, u16_t len, void *value)
 static u8_t signals_set_test (struct obj_def *od, u16_t len, void *value)
 static u8_t signals_set_test (struct obj_def *od, u16_t len, void *value)
 {
 {
   u8_t id, set_ok;
   u8_t id, set_ok;
+  char *val_string;
 
 
   LWIP_UNUSED_ARG(value);
   LWIP_UNUSED_ARG(value);
   set_ok = 0;
   set_ok = 0;
@@ -467,6 +553,32 @@ static u8_t signals_set_test (struct obj_def *od, u16_t len, void *value)
         set_ok = 1;
         set_ok = 1;
       }
       }
       break; 
       break; 
+	case 5: /* DO1 */
+		if ( len >= 1 )
+	    {
+		   val_string = (char*)value;
+		   if(atoi(val_string) <= 1){
+			   if(sSettings.sInOuts.ro_type_source[0] == SNMP_SET)
+				   set_ok = 1;
+		   }
+	    }
+	  break;
+	case 6: /* DO2 */
+		if ( len >= 1 )
+		{
+		   val_string = (char*)value;
+		   if(atoi(val_string) <= 1){
+			   if(sSettings.sInOuts.ro_type_source[1] == SNMP_SET)
+				   set_ok = 1;
+		   }
+		}
+	  break;
+	case 7: /* BatTest */
+
+	  break;
+	case 8: /* Shutdown UPS */
+
+	  break;
   };
   };
   
   
   return set_ok;
   return set_ok;

+ 1 - 1
modules/Ethernet/snmp_api.c

@@ -246,7 +246,7 @@ void SNMP_SetManagerIP(char *ip)
   */
   */
 void SNMP_SetObjID(void)
 void SNMP_SetObjID(void)
 {
 {
-  static struct snmp_obj_id my_object_id = {9, {1, 3, 6, 1, 4, 1, 41752, 911, 1}};
+  static struct snmp_obj_id my_object_id = {9, {1, 3, 6, 1, 4, 1, 41752, 911, 3}};
   
   
   snmp_set_sysobjid(&my_object_id);
   snmp_set_sysobjid(&my_object_id);
 }
 }

+ 62 - 26
modules/Ethernet/trap_api.c

@@ -37,7 +37,7 @@ extern SETTINGS_t sSettings;
 /**
 /**
   * @brief  Пул всех возможных трапов устройства
   * @brief  Пул всех возможных трапов устройства
   */
   */
-TRAP_t traps[15];
+TRAP_t traps[21];
 
 
 /**
 /**
   * @brief  Инициализация базы трапов
   * @brief  Инициализация базы трапов
@@ -61,73 +61,109 @@ void SNMP_InitTrapsBase(void)
   traps[DEVICE_RESTORED].trapId = DEVICE_RESTORED;
   traps[DEVICE_RESTORED].trapId = DEVICE_RESTORED;
   traps[DEVICE_RESTORED].varbindId = 2;
   traps[DEVICE_RESTORED].varbindId = 2;
   traps[DEVICE_RESTORED].trapEnable = true;
   traps[DEVICE_RESTORED].trapEnable = true;
-  traps[DEVICE_RESTORED].handle = GetRestore; /* RestoreSignal */
+  traps[DEVICE_RESTORED].handle = GetVersionStr;//GetRestore; /* RestoreSignal */
   
   
   /* 4. DeviceRebooted */ // +
   /* 4. DeviceRebooted */ // +
   traps[DEVICE_REBOOTED].trapId = DEVICE_REBOOTED;
   traps[DEVICE_REBOOTED].trapId = DEVICE_REBOOTED;
   traps[DEVICE_REBOOTED].varbindId = 3;
   traps[DEVICE_REBOOTED].varbindId = 3;
   traps[DEVICE_REBOOTED].trapEnable = true;
   traps[DEVICE_REBOOTED].trapEnable = true;
-  traps[DEVICE_REBOOTED].handle = GetReboot; /* RebootSignal */
+  traps[DEVICE_REBOOTED].handle = GetVersionStr;//GetReboot; /* RebootSignal */
   
   
-  /* 5. BatteryTemperatureNorm */ // +
+  /* 5. DI0Norm */ // +
+   traps[DI0_NORM].trapId = DI0_NORM;
+   traps[DI0_NORM].varbindId = 9;
+   traps[DI0_NORM].trapEnable = true;
+   traps[DI0_NORM].handle = GetDIN0StatusStr; /* State DIN */
+
+   /* 6. DI0Alarm */ // +
+   traps[DI0_ALARM].trapId = DI0_ALARM;
+   traps[DI0_ALARM].varbindId = 9;
+   traps[DI0_ALARM].trapEnable = true;
+   traps[DI0_ALARM].handle = GetDIN0StatusStr; /* State DIN */
+
+   /* 7. DO0Toggle */ // +
+    traps[DO0_TOGGLED].trapId = DO0_TOGGLED;
+    traps[DO0_TOGGLED].varbindId = 5;
+    traps[DO0_TOGGLED].trapEnable = true;
+    traps[DO0_TOGGLED].handle = GetDOUT0StatusStr; /* State DO0 */
+
+    /* 8. DO1Toggle */ // +
+    traps[DO1_TOGGLED].trapId = DO1_TOGGLED;
+    traps[DO1_TOGGLED].varbindId = 6;
+    traps[DO1_TOGGLED].trapEnable = true;
+    traps[DO1_TOGGLED].handle = GetDOUT1StatusStr; /* State DO1 */
+
+  /* 9. BatteryTemperatureNorm */ // +
   traps[BATTERY_TEMPERATURE_NORM].trapId = BATTERY_TEMPERATURE_NORM;
   traps[BATTERY_TEMPERATURE_NORM].trapId = BATTERY_TEMPERATURE_NORM;
-  traps[BATTERY_TEMPERATURE_NORM].varbindId = 4;
+  traps[BATTERY_TEMPERATURE_NORM].varbindId = 10;
   traps[BATTERY_TEMPERATURE_NORM].trapEnable = true;
   traps[BATTERY_TEMPERATURE_NORM].trapEnable = true;
   traps[BATTERY_TEMPERATURE_NORM].handle = GetInternalTempStr; /* BatteryTemperature */  
   traps[BATTERY_TEMPERATURE_NORM].handle = GetInternalTempStr; /* BatteryTemperature */  
   
   
-  /* 6. BatteryTemperatureAlarm */ // +
+  /* 10. BatteryTemperatureAlarm */ // +
   traps[BATTERY_TEMPERATURE_ALARM].trapId = BATTERY_TEMPERATURE_ALARM;
   traps[BATTERY_TEMPERATURE_ALARM].trapId = BATTERY_TEMPERATURE_ALARM;
-  traps[BATTERY_TEMPERATURE_ALARM].varbindId = 4;
+  traps[BATTERY_TEMPERATURE_ALARM].varbindId = 10;
   traps[BATTERY_TEMPERATURE_ALARM].trapEnable = true;
   traps[BATTERY_TEMPERATURE_ALARM].trapEnable = true;
   traps[BATTERY_TEMPERATURE_ALARM].handle = GetInternalTempStr; /* BatteryTemperature */
   traps[BATTERY_TEMPERATURE_ALARM].handle = GetInternalTempStr; /* BatteryTemperature */
   
   
-  /* 7. LineAlarm */ // +
+  /* 11. LineAlarm */ // +
   traps[LINE_ALARM].trapId = LINE_ALARM;
   traps[LINE_ALARM].trapId = LINE_ALARM;
-  traps[LINE_ALARM].varbindId = 9;
+  traps[LINE_ALARM].varbindId = 12;
   traps[LINE_ALARM].trapEnable = true;
   traps[LINE_ALARM].trapEnable = true;
   traps[LINE_ALARM].handle = GetInputVoltageStr; /* LineAlarm */
   traps[LINE_ALARM].handle = GetInputVoltageStr; /* LineAlarm */
   
   
-  /* 8. LineNorm */ // +
+  /* 12. LineNorm */ // +
   traps[LINE_NORM].trapId = LINE_NORM;
   traps[LINE_NORM].trapId = LINE_NORM;
-  traps[LINE_NORM].varbindId = 9;
+  traps[LINE_NORM].varbindId = 12;
   traps[LINE_NORM].trapEnable = true;
   traps[LINE_NORM].trapEnable = true;
   traps[LINE_NORM].handle = GetInputVoltageStr; /* LineNorm */
   traps[LINE_NORM].handle = GetInputVoltageStr; /* LineNorm */
   
   
-  /* 9. LowBatAlarm */ // +
+  /* 13. LowBatAlarm */ // +
   traps[LOW_BAT_ALARM].trapId = LOW_BAT_ALARM;
   traps[LOW_BAT_ALARM].trapId = LOW_BAT_ALARM;
-  traps[LOW_BAT_ALARM].varbindId = 12;
+  traps[LOW_BAT_ALARM].varbindId = 15;
   traps[LOW_BAT_ALARM].trapEnable = true;
   traps[LOW_BAT_ALARM].trapEnable = true;
   traps[LOW_BAT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */
   traps[LOW_BAT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */
   
   
-  /* 10. LowBatNorm */ // +
+  /* 14. LowBatNorm */ // +
   traps[LOW_BAT_NORM].trapId = LOW_BAT_NORM;
   traps[LOW_BAT_NORM].trapId = LOW_BAT_NORM;
-  traps[LOW_BAT_NORM].varbindId = 12;
+  traps[LOW_BAT_NORM].varbindId = 15;
   traps[LOW_BAT_NORM].trapEnable = true;
   traps[LOW_BAT_NORM].trapEnable = true;
   traps[LOW_BAT_NORM].handle = GetBatCapacityStr; /* LowBatNorm */
   traps[LOW_BAT_NORM].handle = GetBatCapacityStr; /* LowBatNorm */
   
   
-  /* 11. PowerAlarm */ // +
+  /* 15. PowerAlarm */ // +
   traps[POWER_ALARM].trapId = POWER_ALARM;
   traps[POWER_ALARM].trapId = POWER_ALARM;
-  traps[POWER_ALARM].varbindId = 11;
+  traps[POWER_ALARM].varbindId = 14;
   traps[POWER_ALARM].trapEnable = true;
   traps[POWER_ALARM].trapEnable = true;
   traps[POWER_ALARM].handle = GetPowerStr; /* PowerAlarm */
   traps[POWER_ALARM].handle = GetPowerStr; /* PowerAlarm */
   
   
-  /* 12. PowerNorm */ // +
+  /* 16. PowerNorm */ // +
   traps[POWER_NORM].trapId = POWER_NORM;
   traps[POWER_NORM].trapId = POWER_NORM;
-  traps[POWER_NORM].varbindId = 11;
+  traps[POWER_NORM].varbindId = 14;
   traps[POWER_NORM].trapEnable = true;
   traps[POWER_NORM].trapEnable = true;
   traps[POWER_NORM].handle = GetPowerStr; /* PowerNorm */
   traps[POWER_NORM].handle = GetPowerStr; /* PowerNorm */
   
   
-  /* 13. ConnectMonitorAlarm */ // 
+  /* 17. ConnectMonitorAlarm */ //
   traps[CONNECT_MONITOR_ALARM].trapId = CONNECT_MONITOR_ALARM;
   traps[CONNECT_MONITOR_ALARM].trapId = CONNECT_MONITOR_ALARM;
-  traps[CONNECT_MONITOR_ALARM].varbindId = 13;
+  traps[CONNECT_MONITOR_ALARM].varbindId = 17;
   traps[CONNECT_MONITOR_ALARM].trapEnable = true;
   traps[CONNECT_MONITOR_ALARM].trapEnable = true;
   traps[CONNECT_MONITOR_ALARM].handle = GetConnectMonitorStr; /* ConnectMonitor */
   traps[CONNECT_MONITOR_ALARM].handle = GetConnectMonitorStr; /* ConnectMonitor */
   
   
-  /* 14. ConnectMonitorNorm */ // 
+  /* 18. ConnectMonitorNorm */ //
   traps[CONNECT_MONITOR_NORM].trapId = CONNECT_MONITOR_NORM;
   traps[CONNECT_MONITOR_NORM].trapId = CONNECT_MONITOR_NORM;
-  traps[CONNECT_MONITOR_NORM].varbindId = 13;
+  traps[CONNECT_MONITOR_NORM].varbindId = 17;
   traps[CONNECT_MONITOR_NORM].trapEnable = true;
   traps[CONNECT_MONITOR_NORM].trapEnable = true;
   traps[CONNECT_MONITOR_NORM].handle = GetConnectMonitorStr; /* ConnectMonitor */
   traps[CONNECT_MONITOR_NORM].handle = GetConnectMonitorStr; /* ConnectMonitor */
+
+  /* 19. BatteryConnectAlarm */ // +
+  traps[BATTERY_CONNECT_ALARM].trapId = BATTERY_CONNECT_ALARM;
+  traps[BATTERY_CONNECT_ALARM].varbindId = 15;
+  traps[BATTERY_CONNECT_ALARM].trapEnable = true;
+  traps[BATTERY_CONNECT_ALARM].handle = GetBatCapacityStr; /* LowBatAlarm */
+
+  /* 20. BatteryConnectNorm */ // +
+  traps[BATTERY_CONNECT_NORM].trapId = BATTERY_CONNECT_NORM;
+  traps[BATTERY_CONNECT_NORM].varbindId = 15;
+  traps[BATTERY_CONNECT_NORM].trapEnable = true;
+  traps[BATTERY_CONNECT_NORM].handle = GetBatCapacityStr; /* LowBatNorm */
 }
 }
 
 
 /**
 /**
@@ -139,7 +175,7 @@ bool SNMP_SendMessageTrap(TRAP_t trap, char* str, uint8_t len)
   const uint8_t maxMsgLen = 30;
   const uint8_t maxMsgLen = 30;
   char msg[30];
   char msg[30];
   struct snmp_varbind *vb;
   struct snmp_varbind *vb;
-  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 1, 2, 1}};
+  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}};
 
 
   if (len <= maxMsgLen)
   if (len <= maxMsgLen)
   {
   {
@@ -179,8 +215,8 @@ bool SNMP_SendVarbindTrap(TRAP_t *trap)
   char msg[255];
   char msg[255];
   uint8_t len = 0;
   uint8_t len = 0;
   struct snmp_varbind *vb;
   struct snmp_varbind *vb;
-  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 1, 2, 1}};
-  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 1, 1, 1}};
+  struct snmp_obj_id trapObjId = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 2, 1}};
+  struct snmp_obj_id varObjId  = {11, {1, 3, 6, 1, 4, 1, 41752, 911, 3, 1, 1}};
   
   
   trapObjId.id[trapObjId.len - 1] = trap->trapId;
   trapObjId.id[trapObjId.len - 1] = trap->trapId;
   varObjId.id[varObjId.len - 1] = trap->varbindId;
   varObjId.id[varObjId.len - 1] = trap->varbindId;

+ 6 - 1
modules/Ethernet/trap_api.h

@@ -29,6 +29,10 @@ typedef enum
   FW_VERSION_UPDATED,
   FW_VERSION_UPDATED,
   DEVICE_RESTORED,
   DEVICE_RESTORED,
   DEVICE_REBOOTED,
   DEVICE_REBOOTED,
+  DI0_NORM,
+  DI0_ALARM,
+  DO0_TOGGLED,
+  DO1_TOGGLED,
   BATTERY_TEMPERATURE_NORM,
   BATTERY_TEMPERATURE_NORM,
   BATTERY_TEMPERATURE_ALARM,
   BATTERY_TEMPERATURE_ALARM,
   LINE_ALARM,
   LINE_ALARM,
@@ -39,7 +43,8 @@ typedef enum
   POWER_NORM,
   POWER_NORM,
   CONNECT_MONITOR_ALARM,
   CONNECT_MONITOR_ALARM,
   CONNECT_MONITOR_NORM,
   CONNECT_MONITOR_NORM,
-  
+  BATTERY_CONNECT_ALARM,
+  BATTERY_CONNECT_NORM,
 } TRAP_LIST_t;
 } TRAP_LIST_t;
 
 
 /**
 /**