Selaa lähdekoodia

[snmp]1)fix snmp system parameters
2) add tag sysname for info.cgi

balbekova 6 vuotta sitten
vanhempi
commit
9f552441ed

+ 31 - 37
modules/Ethernet/snmp_api.c

@@ -137,9 +137,9 @@ void SNMP_AgentInit(void)
 
   SNMP_SetReadCommunity(sSettings.sSnmp.readCommunity);
   SNMP_SetWriteCommunity(sSettings.sSnmp.writeCommunity);
-  SNMP_SetSysContact(sSettings.sSnmp.sysContact);
-  SNMP_SetSysName(sSettings.sSnmp.sysName);
-  SNMP_SetSysLocation(sSettings.sSnmp.sysLocation);
+  SNMP_SetSysContact(&sSettings.sSnmp.sysContact);
+  SNMP_SetSysName(&sSettings.sSnmp.sysName);
+  SNMP_SetSysLocation(&sSettings.sSnmp.sysLocation);
   SNMP_SetManagerIP(sSettings.sSnmp.managerIP);  //SNMP_SetManagerIP("192.168.14.37");
   SNMP_SetObjID();
   SNMP_SetTrapOnOff(1);
@@ -182,22 +182,24 @@ void SNMP_SendUserTrap(uint8_t trapName)
 // TODO
 void SNMP_SetObjDescr(void)
 {
-  static uint16_t len;
   
-  strcpy(sSettings.sSnmp.sysDescr, sSettings.sSnmp.sysName);
-  strcat(sSettings.sSnmp.sysDescr, " ");
-  strcat(sSettings.sSnmp.sysDescr, VERSION);
-  strcat(sSettings.sSnmp.sysDescr, " ");
-  strcat(sSettings.sSnmp.sysDescr, sSettings.sSnmp.sysContact);
-  strcat(sSettings.sSnmp.sysDescr, " ");
-  strcat(sSettings.sSnmp.sysDescr, sSettings.sInfo.serialNumber);
-  strcat(sSettings.sSnmp.sysDescr, " ");
-  strcat(sSettings.sSnmp.sysDescr, UPS.model);
-  strcat(sSettings.sSnmp.sysDescr, " ");
-  strcat(sSettings.sSnmp.sysDescr, UPS.serial);
+  memset(sSettings.sSnmp.sysDesc.description, 0, sizeof(sSettings.sSnmp.sysDesc.description));
+
+  strcpy(sSettings.sSnmp.sysDesc.description, HW_REV);
+  strcat(sSettings.sSnmp.sysDesc.description, " ");
+  strcat(sSettings.sSnmp.sysDesc.description, VERSION);
+  strcat(sSettings.sSnmp.sysDesc.description, " ");
+  sSettings.sSnmp.sysContact.contact[sSettings.sSnmp.sysContact.len] = 0;
+  strcat(sSettings.sSnmp.sysDesc.description, sSettings.sSnmp.sysContact.contact);
+  strcat(sSettings.sSnmp.sysDesc.description, " ");
+  strcat(sSettings.sSnmp.sysDesc.description, sSettings.sInfo.serialNumber);
+  strcat(sSettings.sSnmp.sysDesc.description, " ");
+  strcat(sSettings.sSnmp.sysDesc.description, UPS.model);
+  strcat(sSettings.sSnmp.sysDesc.description, " ");
+  strcat(sSettings.sSnmp.sysDesc.description, UPS.serial);
   
-  len = strlen(sSettings.sSnmp.sysDescr);
-  snmp_mib2_set_sysdescr((u8_t*)sSettings.sSnmp.sysDescr, &len);
+  sSettings.sSnmp.sysDesc.len = strlen(sSettings.sSnmp.sysDesc.description);
+  snmp_mib2_set_sysdescr((u8_t*)sSettings.sSnmp.sysDesc.description, &sSettings.sSnmp.sysDesc.len);
 }
 
 /**
@@ -222,39 +224,27 @@ void SNMP_SetWriteCommunity(char *comm)
   * @brief  Установить SNMP SysContact
   * @retval 
   */
-void SNMP_SetSysContact(char *con)
+void SNMP_SetSysContact(SNMP_SYS_CONTACT_t *con)
 {
-  static uint16_t len;
-  
-  len = strlen(con);
-  //snmp_set_syscontact((u8_t*)con, &len);
-  snmp_mib2_set_syscontact((u8_t*)con, &len, len);
+  snmp_mib2_set_syscontact((u8_t*)con->contact, &con->len, sizeof(con->contact));
 }
 
 /**
   * @brief  Установить SNMP SysName
   * @retval 
   */
-void SNMP_SetSysName(char *name)
+void SNMP_SetSysName(SNMP_SYS_NAME_t *name)
 {
-  static uint16_t len;
-  
-  len = strlen(name);
-  //snmp_set_sysname((u8_t*)name, &len);
-  snmp_mib2_set_sysname((u8_t*)name, &len, len);
+  snmp_mib2_set_sysname((u8_t*)name->name, &name->len, sizeof(name->name));
 }
 
 /**
   * @brief  Установить SNMP SysLocation
   * @retval 
   */
-void SNMP_SetSysLocation(char *loc)
+void SNMP_SetSysLocation(SNMP_SYS_LOCATION_t *loc)
 {
-  static uint16_t len;
-  
-  len = strlen(loc);
-  //snmp_set_syslocation((u8_t*)loc, &len);
-  snmp_mib2_set_syslocation((u8_t*)loc, &len, len);
+  snmp_mib2_set_syslocation((u8_t*)loc->location, &loc->len, sizeof(loc->location));
 }
 
 /**
@@ -276,10 +266,14 @@ void SNMP_SetManagerIP(char *ip)
   */
 void SNMP_SetObjID(void)
 {
+#ifdef HARDWARE_BT6702
   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}};
+#elif HARDWARE_BT6706
+  static struct snmp_obj_id my_object_id = {9, {1, 3, 6, 1, 4, 1, 41752, 911, 4}};
+#elif HARDWARE_BT6708
+  static struct snmp_obj_id my_object_id = {9, {1, 3, 6, 1, 4, 1, 41752, 911, 5}};
+#endif
   
-  //snmp_set_sysobjid(&my_object_id);
   snmp_set_device_enterprise_oid(&my_object_id);
 }
 

+ 6 - 4
modules/Ethernet/snmp_api.h

@@ -14,6 +14,8 @@
 #ifndef SNMP_API_H
 #define SNMP_API_H
 
+#include "settings_api.h"
+
 /**
   * @brief  Инициализация параметров SNMP
   */
@@ -64,17 +66,17 @@ void SNMP_SetTrapCommunity(char *comm);
 /**
   * @brief  Установить SNMP SysContact
   */
-void SNMP_SetSysContact(char *con);
+void SNMP_SetSysContact(SNMP_SYS_CONTACT_t *con);
 
 /**
   * @brief  Установить SNMP SysName
   */
-void SNMP_SetSysName(char *name);
+void SNMP_SetSysName(SNMP_SYS_NAME_t *name);
 
 /**
   * @brief  Установить SNMP SysLocation
   */
-void SNMP_SetSysLocation(char *loc);
+void SNMP_SetSysLocation(SNMP_SYS_LOCATION_t *loc);
 
 /**
   * @brief  Установить SNMP SysManagerIP
@@ -118,4 +120,4 @@ void SNMP_GetManagerIp(char *str, uint8_t *len);
 
 #endif /* #ifndef SNMP_API_H */
 
-/********************************* (C) РОТЕК **********************************/
+/********************************* (C) РОТЕК **********************************/

+ 7 - 1
modules/HTTP_Server/http_server.c

@@ -971,12 +971,18 @@ void HTTP_SetInfo(char *buf, uint16_t lenBuf)
   
   memset(value, 0, len);
   
+  /* Название устройства */
+  GetParamValue(buf, "sysname=", value, &valueLen);
+  url_decode(str, sizeof(str), value);
+  SetNameDeviceStr(str);
+  memset(value, 0, len);
+  
   /* Владелец */
   GetParamValue(buf, "owner=", value, &valueLen);
   url_decode(str, sizeof(str), value);
   SetOwner(str);
   memset(value, 0, len);
-  
+
   /* Владелец */
   GetParamValue(buf, "sysLocation=", value, &valueLen);
   url_decode(str, sizeof(str), value);

+ 6 - 0
modules/HTTP_Server/my_ssl_server.c

@@ -879,6 +879,12 @@ void HTTP_SetInfo(char *buf, uint16_t lenBuf)
 
   memset(value, 0, len);
 
+  /* Название устройства */
+  GetParamValue(buf, "sysname=", value, &valueLen);
+  url_decode(str, sizeof(str), value);
+  SetNameDeviceStr(str);
+  memset(value, 0, len);
+
   /* Владелец */
   GetParamValue(buf, "owner=", value, &valueLen);
   url_decode(str, sizeof(str), value);

+ 4 - 0
modules/HTTP_Server/web_params_api.c

@@ -349,6 +349,10 @@ void HTTP_GetInfo(char *buf)
   strcat(buf, "\",\"serno\":\"");
   strncat(buf, str, len);
   
+  GetNameDeviceStr(str, &len);
+  strcat(buf, "\",\"sysname\":\"");
+  strncat(buf, str, len);
+
   GetOwnerStr(str, &len);  
   strcat(buf, "\",\"owner\":\"");
   strncat(buf, str, len);

+ 28 - 10
modules/parameters.c

@@ -497,8 +497,17 @@ void GetWorkTimeStr(char *str, uint8_t *len)
   */
 void GetModelStr(char *str, uint8_t *len)
 {
-  *len = strlen(sSettings.sSnmp.sysName);
-  strncpy(str, sSettings.sSnmp.sysName, *len);
+  *len = strlen(HW_REV);
+  strncpy(str, HW_REV, *len);
+}
+
+/**
+  * @brief  Название устройсва устройства
+  */
+void GetNameDeviceStr(char *str, uint8_t *len)
+{
+  *len = (uint8_t)sSettings.sSnmp.sysName.len;
+  strncpy(str, sSettings.sSnmp.sysName.name, *len);
 }
 
 /**
@@ -542,8 +551,8 @@ void GetSerialNumberStr(char *str, uint8_t *len)
   */
 void GetOwnerStr(char *str, uint8_t *len)
 {
-  *len = strlen(sSettings.sSnmp.sysContact);
-  strncpy(str, sSettings.sSnmp.sysContact, *len);
+  *len = (uint8_t)sSettings.sSnmp.sysContact.len;
+  strncpy(str, sSettings.sSnmp.sysContact.contact, *len);
 }
 
 /**
@@ -551,8 +560,8 @@ void GetOwnerStr(char *str, uint8_t *len)
   */
 void GetLocationStr(char *str, uint8_t *len)
 {
-  *len = strlen(sSettings.sSnmp.sysLocation);
-  strncpy(str, sSettings.sSnmp.sysLocation, *len);
+  *len =(uint8_t) sSettings.sSnmp.sysLocation.len;
+  strncpy(str, sSettings.sSnmp.sysLocation.location, *len);
 }
 
 /**
@@ -1153,13 +1162,22 @@ void SetManagerIp5(char *str)
   SNMP_SetManagerIP(sSettings.sSnmp.managerIP5);
 }
 
+/**
+  * @brief  Название устройсва устройства
+  */
+void SetNameDeviceStr(char *str)
+{
+  strcpy(sSettings.sSnmp.sysName.name, str);
+  sSettings.sSnmp.sysName.len = strlen(str);
+}
+
 /**
   * @brief  Установить владельца
   */
 void SetOwner(char *str)
 {
-  strcpy(sSettings.sSnmp.sysContact, str);
-  SNMP_SetSysContact(sSettings.sSnmp.sysContact);
+  strcpy(sSettings.sSnmp.sysContact.contact, str);
+  sSettings.sSnmp.sysContact.len = strlen(str);
   SNMP_SetObjDescr();
 }
 
@@ -1168,8 +1186,8 @@ void SetOwner(char *str)
   */
 void SetLocation(char *str)
 {
-  strcpy(sSettings.sSnmp.sysLocation, str);
-  SNMP_SetSysLocation(sSettings.sSnmp.sysLocation);
+  strcpy(sSettings.sSnmp.sysLocation.location, str);
+  sSettings.sSnmp.sysLocation.len = strlen(str);
 }
 #endif
 /**

+ 10 - 0
modules/parameters.h

@@ -144,6 +144,11 @@ void GetWorkTimeStr(char *str, uint8_t *len);
   */
 void GetModelStr(char *str, uint8_t *len);
 
+/**
+  * @brief  Название устройсва устройства
+  */
+void GetNameDeviceStr(char *str, uint8_t *len);
+
 /**
   * @brief  Дата производства
   */
@@ -489,6 +494,11 @@ void SetManagerIp3(char *str);
 void SetManagerIp4(char *str);
 void SetManagerIp5(char *str);
 
+/**
+  * @brief  Название устройсва устройства
+  */
+void SetNameDeviceStr(char *str);
+
 /**
   * @brief  Установить владельца
   */

+ 8 - 4
modules/settings_api.c

@@ -92,12 +92,16 @@ void SETTINGS_SetTempWebParamsDef(void)
   */
 void SETTINGS_SetSnmpDef(void)
 {
-  strcpy(sSettings.sSnmp.sysDescr, "");
+  strcpy(sSettings.sSnmp.sysDesc.description, "");
+  sSettings.sSnmp.sysDesc.len = 0;
   strcpy(sSettings.sSnmp.readCommunity, "public");
   strcpy(sSettings.sSnmp.writeCommunity, "public");
-  strcpy(sSettings.sSnmp.sysContact, "");
-  strcpy(sSettings.sSnmp.sysName, HW_REV);
-  strcpy(sSettings.sSnmp.sysLocation, "");
+  strcpy(sSettings.sSnmp.sysContact.contact, "");
+  sSettings.sSnmp.sysContact.len = 0;
+  strcpy(sSettings.sSnmp.sysName.name, "");
+  sSettings.sSnmp.sysName.len = 0;
+  strcpy(sSettings.sSnmp.sysLocation.location, "");
+  sSettings.sSnmp.sysLocation.len = 0;
   strcpy(sSettings.sSnmp.managerIP, "0.0.0.0");
   strcpy(sSettings.sSnmp.managerIP2, "0.0.0.0");
   strcpy(sSettings.sSnmp.managerIP3, "0.0.0.0");

+ 40 - 4
modules/settings_api.h

@@ -66,17 +66,53 @@ typedef struct
   uint32_t mask;
 } WHITE_LIST_t;
 
+/**
+  * @brief  Описание устройства системный параметр SNMP
+  */
+typedef struct
+{
+  char description[160];
+  uint16_t len;
+} SNMP_SYS_DESCR_t;
+
+/**
+  * @brief  Контактная информация системный параметр SNMP
+  */
+typedef struct
+{
+  char contact[50];
+  uint16_t len;
+} SNMP_SYS_CONTACT_t;
+
+/**
+  * @brief  Название устройства системный параметр SNMP
+  */
+typedef struct
+{
+  char name[20];
+  uint16_t len;
+} SNMP_SYS_NAME_t;
+
+/**
+  * @brief  Местоположение устройства системный параметр SNMP
+  */
+typedef struct
+{
+  char location[110];
+  uint16_t len;
+} SNMP_SYS_LOCATION_t;
+
 /**
   * @brief  Параметры SNMP
   */
 typedef struct
 {
-  char sysDescr[160];
+  SNMP_SYS_DESCR_t sysDesc;
   char readCommunity[20];
   char writeCommunity[20];
-  char sysContact[50];
-  char sysName[20];
-  char sysLocation[110];
+  SNMP_SYS_CONTACT_t sysContact;
+  SNMP_SYS_NAME_t sysName;
+  SNMP_SYS_LOCATION_t sysLocation;
   char managerIP[20];
   char managerIP2[20];
   char managerIP3[20];

+ 1 - 1
modules/testing/testing.c

@@ -119,7 +119,7 @@ void TEST_SendData(void)
     {
       netconn_connect(conn, IP_ADDR_BROADCAST, UDP_PORT);
       
-	  strcpy(msg, sSettings.sSnmp.sysName);
+	  strcpy(msg, HW_REV);
 	  strcat(msg, ";");
 		
 	  /* Заглушка */