|
@@ -43,110 +43,104 @@ extern state_telnet_server_t telnetState;
|
|
|
extern uint8_t id_change_pwd;
|
|
|
|
|
|
|
|
|
-const int8_t * const pcInvalidCommand = ( int8_t * ) "Неправильно введены параметры команды. Введите \"help\" для просмотра списка поддерживаемых команд.\r\n\r\n";
|
|
|
-const int8_t * const pcPermissionDenied = ( int8_t * ) "Отказ в доступе!\r\n\r\n";
|
|
|
-const int8_t * const pcSystymeDenied = ( int8_t * ) "Ручной ввод времени не доступен!\r\n\r\n";
|
|
|
+const int8_t *const pcInvalidCommand = ( int8_t * )
|
|
|
+ "Неправильно введены параметры команды. Введите \"help\" для просмотра списка поддерживаемых команд.\r\n\r\n";
|
|
|
+const int8_t *const pcPermissionDenied = ( int8_t * ) "Отказ в доступе!\r\n\r\n";
|
|
|
+const int8_t *const pcSystymeDenied = ( int8_t * )
|
|
|
+ "Ручной ввод времени не доступен!\r\n\r\n";
|
|
|
|
|
|
|
|
|
-const char* info_args_list[] =
|
|
|
-{
|
|
|
- "name",
|
|
|
- "address",
|
|
|
+const char *info_args_list[] = {
|
|
|
+ "name",
|
|
|
+ "address",
|
|
|
"owner",
|
|
|
"comments",
|
|
|
};
|
|
|
|
|
|
-const char* ups_args_list[] =
|
|
|
-{
|
|
|
- "battest",
|
|
|
+const char *ups_args_list[] = {
|
|
|
+ "battest",
|
|
|
"shutdown",
|
|
|
};
|
|
|
|
|
|
-const char* systime_args_list[] =
|
|
|
-{
|
|
|
- "date",
|
|
|
+const char *systime_args_list[] = {
|
|
|
+ "date",
|
|
|
"time",
|
|
|
};
|
|
|
|
|
|
-const char* network_args_list[] =
|
|
|
-{
|
|
|
- "info",
|
|
|
- "dhcp",
|
|
|
+const char *network_args_list[] = {
|
|
|
+ "info",
|
|
|
+ "dhcp",
|
|
|
"ip",
|
|
|
"gw",
|
|
|
"mask",
|
|
|
};
|
|
|
|
|
|
-const char* snmp_args_list[] =
|
|
|
-{
|
|
|
- "info",
|
|
|
- "server",
|
|
|
+const char *snmp_args_list[] = {
|
|
|
+ "info",
|
|
|
+ "server",
|
|
|
"community",
|
|
|
};
|
|
|
|
|
|
-const char* akb_args_list[] =
|
|
|
-{
|
|
|
- "info",
|
|
|
- "voltcellmin",
|
|
|
- "voltcellmax",
|
|
|
+const char *akb_args_list[] = {
|
|
|
+ "info",
|
|
|
+ "voltcellmin",
|
|
|
+ "voltcellmax",
|
|
|
+#ifdef HARDWARE_BT6709
|
|
|
+ "capacity",
|
|
|
+ "voltakb",
|
|
|
+ "lifetime",
|
|
|
+ "dataset",
|
|
|
+ "upspower",
|
|
|
+#endif
|
|
|
};
|
|
|
|
|
|
-const char* type_alarm_args_list[] =
|
|
|
-{
|
|
|
- "info",
|
|
|
- "temp",
|
|
|
- "load",
|
|
|
- "vout",
|
|
|
+const char *type_alarm_args_list[] = {
|
|
|
+ "info",
|
|
|
+ "temp",
|
|
|
+ "load",
|
|
|
+ "vout",
|
|
|
};
|
|
|
|
|
|
-const char* alarm_args_list[] =
|
|
|
-{
|
|
|
- "low",
|
|
|
- "high",
|
|
|
- "hist",
|
|
|
+const char *alarm_args_list[] = {
|
|
|
+ "low",
|
|
|
+ "high",
|
|
|
+ "hist",
|
|
|
};
|
|
|
|
|
|
-const char* whitelist_args_list[] =
|
|
|
-{
|
|
|
- "info",
|
|
|
- "range",
|
|
|
+const char *whitelist_args_list[] = {
|
|
|
+ "info",
|
|
|
+ "range",
|
|
|
};
|
|
|
|
|
|
-const char* ntp_args_list[] =
|
|
|
-{
|
|
|
- "ENA",
|
|
|
- "DIS",
|
|
|
- "info",
|
|
|
- "set",
|
|
|
+const char *ntp_args_list[] = {
|
|
|
+ "ENA",
|
|
|
+ "DIS",
|
|
|
+ "info",
|
|
|
+ "set",
|
|
|
};
|
|
|
|
|
|
-const char* config_args_list[] =
|
|
|
-{
|
|
|
- "info",
|
|
|
- "load",
|
|
|
+const char *config_args_list[] = {
|
|
|
+ "info",
|
|
|
+ "load",
|
|
|
};
|
|
|
|
|
|
-const char* netconfig_args_list[] =
|
|
|
-{
|
|
|
- "apply",
|
|
|
- "confirm",
|
|
|
+const char *netconfig_args_list[] = {
|
|
|
+ "apply",
|
|
|
+ "confirm",
|
|
|
};
|
|
|
|
|
|
-const char* history_args_list[] =
|
|
|
-{
|
|
|
- "EVENTS",
|
|
|
- "UPS",
|
|
|
+const char *history_args_list[] = {
|
|
|
+ "EVENTS",
|
|
|
+ "UPS",
|
|
|
};
|
|
|
|
|
|
-const char* sensor_args_list[] =
|
|
|
-{
|
|
|
- "info",
|
|
|
- "setup",
|
|
|
+const char *sensor_args_list[] = {
|
|
|
+ "info",
|
|
|
+ "setup",
|
|
|
};
|
|
|
|
|
|
-const char* user_args_list[] =
|
|
|
-{
|
|
|
- "passwd",
|
|
|
+const char *user_args_list[] = {
|
|
|
+ "passwd",
|
|
|
};
|
|
|
|
|
|
/**
|
|
@@ -164,12 +158,14 @@ static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
|
|
|
/*
|
|
|
* Implements the reboot command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskRebootCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskRebootCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the systime command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the ntp command.
|
|
@@ -179,7 +175,8 @@ static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
/*
|
|
|
* Implements the network command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the snmp command.
|
|
@@ -194,13 +191,15 @@ static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
/*
|
|
|
* Implements the alarm command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
#ifdef HARDWARE_BT6709
|
|
|
/*
|
|
|
* Implements the whitelist command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskWhiteListCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskWhiteListCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
@@ -211,27 +210,32 @@ static portBASE_TYPE prvTaskUserCommand( int8_t *pcWriteBuffer, size_t xWriteBuf
|
|
|
/*
|
|
|
* Implements the config command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the netconfig command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskNetConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskNetConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the history command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskHistoryCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskHistoryCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the sensor info command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the firmware download http command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskUploadCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString );
|
|
|
+static portBASE_TYPE prvTaskUploadCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString );
|
|
|
|
|
|
/*
|
|
|
* Implements the ups command.
|
|
@@ -241,2380 +245,2442 @@ static portBASE_TYPE prvTaskUPSCommand( int8_t *pcWriteBuffer, size_t xWriteBuff
|
|
|
|
|
|
/* Structure that defines the "info" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvInfoCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "info", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tinfo: вывод информации о контроллере\r\n"
|
|
|
+static const CLI_Command_Definition_t prvInfoCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "info", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tinfo: вывод информации о контроллере\r\n"
|
|
|
"\tinfo name <name>: установка поля \"название устройства\"\r\n"
|
|
|
- "\tinfo address <adrr>: установка поля \"адрес расположения контролируемого объекта\"\r\n"
|
|
|
- "\tinfo owner <owner>: установка поля \"организация (собственник)\"\r\n"
|
|
|
- "\tinfo comments <comment>: установка поля \"комментарии\"\r\n",
|
|
|
- prvTaskInfoCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+ "\tinfo address <adrr>: установка поля \"адрес расположения контролируемого объекта\"\r\n"
|
|
|
+ "\tinfo owner <owner>: установка поля \"организация (собственник)\"\r\n"
|
|
|
+ "\tinfo comments <comment>: установка поля \"комментарии\"\r\n",
|
|
|
+ prvTaskInfoCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "reboot" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvRebootCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "reboot", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\treboot: перезагрузка Контроллера\r\n",
|
|
|
- prvTaskRebootCommand, /* The function to run. */
|
|
|
- 0 /* No parameters are expected. */
|
|
|
+static const CLI_Command_Definition_t prvRebootCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "reboot", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\treboot: перезагрузка Контроллера\r\n",
|
|
|
+ prvTaskRebootCommand, /* The function to run. */
|
|
|
+ 0 /* No parameters are expected. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "systime" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvSystimeCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "systime", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tsystime: вывод системного времени\r\n"
|
|
|
- "\tsystime date <YYYY-MM-DD>: установка даты\r\n"
|
|
|
- "\tsystime time <HH:MM>: установка времени\r\n",
|
|
|
- prvTaskSystimeCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvSystimeCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "systime", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tsystime: вывод системного времени\r\n"
|
|
|
+ "\tsystime date <YYYY-MM-DD>: установка даты\r\n"
|
|
|
+ "\tsystime time <HH:MM>: установка времени\r\n",
|
|
|
+ prvTaskSystimeCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "ntp" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvNTPCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "ntp", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tntp ENA|DIS: разрешение/запрет синхронизации времени\r\n"
|
|
|
- "\tntp set IP <A.B.C.D>: установка сервера NTP\r\n"
|
|
|
- "\tntp info: вывод информации о сервере NTP\r\n"
|
|
|
- "\tntp set gmt <SIGN><NUM>: установка часового пояса\r\n",
|
|
|
- prvTaskNTPCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvNTPCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "ntp", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tntp ENA|DIS: разрешение/запрет синхронизации времени\r\n"
|
|
|
+ "\tntp set IP <A.B.C.D>: установка сервера NTP\r\n"
|
|
|
+ "\tntp info: вывод информации о сервере NTP\r\n"
|
|
|
+ "\tntp set gmt <SIGN><NUM>: установка часового пояса\r\n",
|
|
|
+ prvTaskNTPCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "network" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvNetworkCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "network", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tnetwork info вывод информации о текущих сетевых настройках:\r\n"
|
|
|
- "\tnetwork dhcp ENA|DIS: разрешение/запрет получения IP по DHCP\r\n"
|
|
|
- "\tnetwork ip <A.B.C.D>: установка статического IP\r\n"
|
|
|
- "\tnetwork gw <A.B.C.D>: установка шлюза\r\n"
|
|
|
- "\tnetwork mask <A.B.C.D>: установка маски подсети\r\n",
|
|
|
- prvTaskNetworkCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvNetworkCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "network", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tnetwork info вывод информации о текущих сетевых настройках:\r\n"
|
|
|
+ "\tnetwork dhcp ENA|DIS: разрешение/запрет получения IP по DHCP\r\n"
|
|
|
+ "\tnetwork ip <A.B.C.D>: установка статического IP\r\n"
|
|
|
+ "\tnetwork gw <A.B.C.D>: установка шлюза\r\n"
|
|
|
+ "\tnetwork mask <A.B.C.D>: установка маски подсети\r\n",
|
|
|
+ prvTaskNetworkCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "snmp" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvSNMPCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "snmp", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tsnmp info: вывод информации о текущих SNMP настройках\r\n"
|
|
|
- "\tsnmp server <NUM> <A.B.C.D>: установка сервера SNMP\r\n"
|
|
|
- "\tsnmp community read <read>: установка Read community\r\n"
|
|
|
- "\tsnmp community write <write>: установка Write community\r\n",
|
|
|
- prvTaskSNMPCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvSNMPCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "snmp", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tsnmp info: вывод информации о текущих SNMP настройках\r\n"
|
|
|
+ "\tsnmp server <NUM> <A.B.C.D>: установка сервера SNMP\r\n"
|
|
|
+ "\tsnmp community read <read>: установка Read community\r\n"
|
|
|
+ "\tsnmp community write <write>: установка Write community\r\n",
|
|
|
+ prvTaskSNMPCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "akb" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvAKBCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "akb", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\takb info: вывод информации о параметрах АКБ\r\n"
|
|
|
- "\takb voltcellmin <value>: ввод минимального напряжения на ячейки АКБ (В)\r\n"
|
|
|
- "\takb voltcellmax <value>: ввод максимального напряжения на ячейки АКБ (В)\r\n",
|
|
|
- prvTaskAKBCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvAKBCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "akb", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\takb info: вывод информации о параметрах АКБ\r\n"
|
|
|
+ "\takb voltcellmin <value>: ввод минимального напряжения на ячейки АКБ (В)\r\n"
|
|
|
+ "\takb voltcellmax <value>: ввод максимального напряжения на ячейки АКБ (В)\r\n"
|
|
|
+#ifdef HARDWARE_BT6709
|
|
|
+ "\takb capacity <value>: ввод ёмкости АКБ (Ач)\r\n"
|
|
|
+ "\takb voltakb <value>: ввод номинального напряжения АКБ (В)\r\n"
|
|
|
+ "\takb lifetime <value>: ввод срока службы АКБ (лет)\r\n"
|
|
|
+ "\takb dataset <YYYY-MM-DD>: ввод даты установки АКБ\r\n"
|
|
|
+ "\takb upspower <value>: ввод полной мощности ИБП (ВА)\r\n"
|
|
|
+#endif
|
|
|
+ ,
|
|
|
+ prvTaskAKBCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "alarm" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvAlarmCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "alarm", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\talarm info: вывод информации о параметрах АКБ\r\n"
|
|
|
- "\talarm temp low <value>: ввод нижней границы аварии по температуре (С)\r\n"
|
|
|
- "\talarm temp high <value>: ввод верxней границы аварии по температуре (С)\r\n"
|
|
|
- "\talarm temp hist <value>: ввод гистерезиса аварии по температуре (С)\r\n"
|
|
|
- "\talarm load high <value>: ввод верхней границы аварии по нагрузке (%)\r\n"
|
|
|
- "\talarm load hist <value>: ввод гистерезиса аварии по нагрузке (%)\r\n"
|
|
|
- "\talarm vout low <value>: ввод нижней границы аварии по вых. напряжению (В)\r\n"
|
|
|
- "\talarm vout high <value>: ввод верxней границы аварии по вых. напряжению (В)\r\n"
|
|
|
- "\talarm vout hist <value>: ввод гистерезиса аварии по вых. напряжению (В)\r\n",
|
|
|
- prvTaskAlarmCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvAlarmCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "alarm", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\talarm info: вывод информации о параметрах АКБ\r\n"
|
|
|
+ "\talarm temp low <value>: ввод нижней границы аварии по температуре (С)\r\n"
|
|
|
+ "\talarm temp high <value>: ввод верxней границы аварии по температуре (С)\r\n"
|
|
|
+ "\talarm temp hist <value>: ввод гистерезиса аварии по температуре (С)\r\n"
|
|
|
+ "\talarm load high <value>: ввод верхней границы аварии по нагрузке (%)\r\n"
|
|
|
+ "\talarm load hist <value>: ввод гистерезиса аварии по нагрузке (%)\r\n"
|
|
|
+ "\talarm vout low <value>: ввод нижней границы аварии по вых. напряжению (В)\r\n"
|
|
|
+ "\talarm vout high <value>: ввод верxней границы аварии по вых. напряжению (В)\r\n"
|
|
|
+ "\talarm vout hist <value>: ввод гистерезиса аварии по вых. напряжению (В)\r\n",
|
|
|
+ prvTaskAlarmCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
#ifdef HARDWARE_BT6709
|
|
|
/* Structure that defines the "whitelist" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvWhiteListCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "whitelist", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\twhitelist info: вывод информации о текущем белом списке IP адресов контроллера\r\n"
|
|
|
- "\twhitelist range <NUM> <A.B.C.D/E>: установка диапазона IP адресов\r\n",
|
|
|
- prvTaskWhiteListCommand, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvWhiteListCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "whitelist", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\twhitelist info: вывод информации о текущем белом списке IP адресов контроллера\r\n"
|
|
|
+ "\twhitelist range <NUM> <A.B.C.D/E>: установка диапазона IP адресов\r\n",
|
|
|
+ prvTaskWhiteListCommand, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
#endif
|
|
|
|
|
|
/* Structure that defines the "user" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvUserCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "user", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tuser passwd <name>: установка пароля для пользователя <name>\r\n",
|
|
|
- prvTaskUserCommand, /* The function to run. */
|
|
|
- 2 /* Two parameters are expected, which can take any value. */
|
|
|
+static const CLI_Command_Definition_t prvUserCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "user", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tuser passwd <name>: установка пароля для пользователя <name>\r\n",
|
|
|
+ prvTaskUserCommand, /* The function to run. */
|
|
|
+ 2 /* Two parameters are expected, which can take any value. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "config" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvConfigCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "config", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tconfig info: вывод информации о состоянии конфигураций\r\n"
|
|
|
- "\tconfig load default: загрузка конфигурации по умолчанию\r\n",
|
|
|
- prvTaskConfigCommand, /* The function to run. */
|
|
|
- -1 /* Two parameters are expected, which can take any value. */
|
|
|
+static const CLI_Command_Definition_t prvConfigCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "config", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tconfig info: вывод информации о состоянии конфигураций\r\n"
|
|
|
+ "\tconfig load default: загрузка конфигурации по умолчанию\r\n",
|
|
|
+ prvTaskConfigCommand, /* The function to run. */
|
|
|
+ -1 /* Two parameters are expected, which can take any value. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "config" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvNetConfigCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "netconfig", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tnetconfig apply: применение конфигурации сетевых настроек\r\n"
|
|
|
- "\tnetconfig confirm: подтверждение конфигурации сетевых настроек\r\n",
|
|
|
- prvTaskNetConfigCommand, /* The function to run. */
|
|
|
- 1 /* Two parameters are expected, which can take any value. */
|
|
|
+static const CLI_Command_Definition_t prvNetConfigCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "netconfig", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tnetconfig apply: применение конфигурации сетевых настроек\r\n"
|
|
|
+ "\tnetconfig confirm: подтверждение конфигурации сетевых настроек\r\n",
|
|
|
+ prvTaskNetConfigCommand, /* The function to run. */
|
|
|
+ 1 /* Two parameters are expected, which can take any value. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "history" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvHistoryCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "history", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\thistory show EVENTS|UPS <num_page>: вывод журнала\r\n",
|
|
|
- prvTaskHistoryCommand, /* The function to run. */
|
|
|
- 3 /* Two parameters are expected, which can take any value. */
|
|
|
+static const CLI_Command_Definition_t prvHistoryCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "history", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\thistory show EVENTS|UPS <num_page>: вывод журнала\r\n",
|
|
|
+ prvTaskHistoryCommand, /* The function to run. */
|
|
|
+ 3 /* Two parameters are expected, which can take any value. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "sensor info" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvSensorCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "sensor", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tsensor info: вывод параметров системы (выход из режима Ctrl+C далее Enter)\r\n"
|
|
|
+static const CLI_Command_Definition_t prvSensorCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "sensor", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tsensor info: вывод параметров системы (выход из режима Ctrl+C далее Enter)\r\n"
|
|
|
#ifdef HARDWARE_BT6707
|
|
|
- "\tsensor setup DI <num> <state>: установка нормального состояния сухого контакта:\r\n"
|
|
|
- "\t\t\t\t0 - разомкнутое состояние\r\n"
|
|
|
- "\t\t\t\t1 - замкнутое состояние\r\n"
|
|
|
- "\tsensor setup DO <num> <issue>: установка источника срабатывания реле:\r\n"
|
|
|
- "\t\t\t\t1 - Наличие сети\r\n"
|
|
|
- "\t\t\t\t2 - Наличие выходного напряжения\r\n"
|
|
|
- "\t\t\t\t3 - Разряд АКБ\r\n"
|
|
|
- "\t\t\t\t4 - Отключение АКБ\r\n"
|
|
|
- "\t\t\t\t5 - SNMP SET\r\n"
|
|
|
+ "\tsensor setup DI <num> <state>: установка нормального состояния сухого контакта:\r\n"
|
|
|
+ "\t\t\t\t0 - разомкнутое состояние\r\n"
|
|
|
+ "\t\t\t\t1 - замкнутое состояние\r\n"
|
|
|
+ "\tsensor setup DO <num> <issue>: установка источника срабатывания реле:\r\n"
|
|
|
+ "\t\t\t\t1 - Наличие сети\r\n"
|
|
|
+ "\t\t\t\t2 - Наличие выходного напряжения\r\n"
|
|
|
+ "\t\t\t\t3 - Разряд АКБ\r\n"
|
|
|
+ "\t\t\t\t4 - Отключение АКБ\r\n"
|
|
|
+ "\t\t\t\t5 - SNMP SET\r\n"
|
|
|
#endif
|
|
|
- ,
|
|
|
- prvTaskSensorCommand, /* The function to run. */
|
|
|
- -1 /* No parameters are expected. */
|
|
|
+ ,
|
|
|
+ prvTaskSensorCommand, /* The function to run. */
|
|
|
+ -1 /* No parameters are expected. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "firmware dowmload http" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvUploadCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "firmware download http", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tfirmware download http: переход в режим обновления через Web-сервер\r\n",
|
|
|
- prvTaskUploadCommand, /* The function to run. */
|
|
|
- 2 /* No parameters are expected. */
|
|
|
+static const CLI_Command_Definition_t prvUploadCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "firmware download http", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tfirmware download http: переход в режим обновления через Web-сервер\r\n",
|
|
|
+ prvTaskUploadCommand, /* The function to run. */
|
|
|
+ 2 /* No parameters are expected. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "ups" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvUPSCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "ups", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tups battest <num>: управление процедурой тестирования АКБ:\r\n"
|
|
|
- "\t\t\t\t0 - Остановить тестирование\r\n"
|
|
|
- "\t\t\t\t1-99 - Запустить тест на x минут\r\n"
|
|
|
- "\t\t\t\t100 - Тестирование в течение 10 секунд\r\n"
|
|
|
- "\t\t\t\t999 - Тестирование до разряда\r\n"
|
|
|
- "\tups shutdown <num>: управление отключением нагрузки ИБП:\r\n"
|
|
|
- "\t\t\t\t0 - Остановить процедуру отключения нагрузки\r\n"
|
|
|
- "\t\t\t\tn - Отключить нагрузку через n минут\r\n"
|
|
|
- "\t\t\t\tn: 0.2, 0.3, ..., 1, 2, ..., 10\r\n",
|
|
|
- prvTaskUPSCommand, /* The function to run. */
|
|
|
- 2 /* Two parameters are expected, which can take any value. */
|
|
|
+static const CLI_Command_Definition_t prvUPSCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "ups", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tups battest <num>: управление процедурой тестирования АКБ:\r\n"
|
|
|
+ "\t\t\t\t0 - Остановить тестирование\r\n"
|
|
|
+ "\t\t\t\t1-99 - Запустить тест на x минут\r\n"
|
|
|
+ "\t\t\t\t100 - Тестирование в течение 10 секунд\r\n"
|
|
|
+ "\t\t\t\t999 - Тестирование до разряда\r\n"
|
|
|
+ "\tups shutdown <num>: управление отключением нагрузки ИБП:\r\n"
|
|
|
+ "\t\t\t\t0 - Остановить процедуру отключения нагрузки\r\n"
|
|
|
+ "\t\t\t\tn - Отключить нагрузку через n минут\r\n"
|
|
|
+ "\t\t\t\tn: 0.2, 0.3, ..., 1, 2, ..., 10\r\n",
|
|
|
+ prvTaskUPSCommand, /* The function to run. */
|
|
|
+ 2 /* Two parameters are expected, which can take any value. */
|
|
|
};
|
|
|
|
|
|
/* Structure that defines the "quit" command line command. This
|
|
|
generates a table that shows how much run time each task has */
|
|
|
-static const CLI_Command_Definition_t prvQuitCommandDefinition =
|
|
|
-{
|
|
|
- ( const int8_t * const ) "quit", /* The command string to type. */
|
|
|
- ( const int8_t * const ) "\tquit: завершение сессии\r\n",
|
|
|
- NULL, /* The function to run. */
|
|
|
- -1 /* The user can enter any number of commands. */
|
|
|
+static const CLI_Command_Definition_t prvQuitCommandDefinition = {
|
|
|
+ ( const int8_t *const ) "quit", /* The command string to type. */
|
|
|
+ ( const int8_t *const ) "\tquit: завершение сессии\r\n",
|
|
|
+ NULL, /* The function to run. */
|
|
|
+ -1 /* The user can enter any number of commands. */
|
|
|
};
|
|
|
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
void vRegisterCLICommands( void )
|
|
|
{
|
|
|
- /* Register all the command line commands defined immediately above. */
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvInfoCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvRebootCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvSystimeCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvNTPCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvNetworkCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvSNMPCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvAKBCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvAlarmCommandDefinition );
|
|
|
+ /* Register all the command line commands defined immediately above. */
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvInfoCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvRebootCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvSystimeCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvNTPCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvNetworkCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvSNMPCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvAKBCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvAlarmCommandDefinition );
|
|
|
#ifdef HARDWARE_BT6709
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvWhiteListCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvWhiteListCommandDefinition );
|
|
|
#endif
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvUserCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvConfigCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvNetConfigCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvHistoryCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvSensorCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvUploadCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvUPSCommandDefinition );
|
|
|
- FreeRTOS_CLIRegisterCommand( &prvQuitCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvUserCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvConfigCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvNetConfigCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvHistoryCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvSensorCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvUploadCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvUPSCommandDefinition );
|
|
|
+ FreeRTOS_CLIRegisterCommand( &prvQuitCommandDefinition );
|
|
|
}
|
|
|
/*-----------------------------------------------------------*/
|
|
|
|
|
|
static portBASE_TYPE prvTaskInfoCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
|
|
{
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- uint8_t len;
|
|
|
- int8_t num_arg = 0;
|
|
|
- uint8_t i;
|
|
|
- static uint8_t page = 0;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- num_arg = prvGetNumberOfParameters(pcCommandString);
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- if(num_arg == 0){
|
|
|
- const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n**************Информация о Контроллере**************\r\n";
|
|
|
- const int8_t * const pcUPSInfoTableHeader = ( int8_t * ) "\r\n*****************Информация об ИБП******************\r\n";
|
|
|
- if(!page){
|
|
|
- /* Return the next command help string, before moving the pointer on to
|
|
|
- the next command in the list. */
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
-
|
|
|
- GetWorkTimeStr(str, &len);
|
|
|
- strcat(( char * ) pcWriteBuffer, "Время работы:\t\t\t");
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nМодель:\t\t\t\t");
|
|
|
- GetModelStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nДата производства:\t\t");
|
|
|
- GetProductionDataStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nВерсия ПО:\t\t\t");
|
|
|
- GetVersionStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nMAC адрес:\t\t\t");
|
|
|
- GetMacStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nСерийный номер:\t\t\t");
|
|
|
- GetSerialNumberStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nНазвание устройства:\t\t");
|
|
|
- GetNameDeviceStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nВладелец:\t\t\t");
|
|
|
- GetOwnerStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nМестоположение:\t\t\t");
|
|
|
- GetLocationStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nКомментарии:\t\t\t");
|
|
|
- GetCommentsStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- page = 1;
|
|
|
- xReturn = pdTRUE;
|
|
|
- }
|
|
|
- else{
|
|
|
-
|
|
|
- strncat( ( char * ) pcWriteBuffer, ( const char * ) pcUPSInfoTableHeader, strlen( ( char * ) pcUPSInfoTableHeader ) );
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nКомпания:\t\t\tАО\"НПК РоТеК\"");
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nМодель:\t\t\t\t");
|
|
|
- GetUPSModelStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nВерсия ПО:\t\t\t");
|
|
|
- GetUPSVersionStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
-
|
|
|
- page = 0;
|
|
|
- /* There are no more commands in the list, so there will be no more
|
|
|
- strings to return after this one and pdFALSE should be returned. */
|
|
|
- xReturn = pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- else if(num_arg == 1)
|
|
|
- {
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- xReturn = pdFALSE;
|
|
|
- }
|
|
|
- else{
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- for(i = 0; i < INFO_ALL_ARGS; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, info_args_list[i], strlen(info_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- xParameterNumber ++;
|
|
|
- // xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- if(control_string_en_digit(str, strlen(str))){
|
|
|
- switch(i){
|
|
|
- case INFO_DEV_NAME:
|
|
|
- if(telnet_code_auth == ADMIN){
|
|
|
- str[19] = 0;
|
|
|
- SetNameDeviceStr(str);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- break;
|
|
|
- case INFO_ADDRESS:
|
|
|
- if(telnet_code_auth == ADMIN)
|
|
|
- {
|
|
|
- str[109] = 0;
|
|
|
- SetLocation(str);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- break;
|
|
|
- case INFO_OWNER:
|
|
|
- if(telnet_code_auth == ADMIN){
|
|
|
- str[49] = 0;
|
|
|
- SetOwner(str);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- break;
|
|
|
- case INFO_COMMENTS:
|
|
|
- if(telnet_code_auth == ADMIN){
|
|
|
- str[109] = 0;
|
|
|
- SetComment(str);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- if(i >= INFO_ADDRESS && i <= INFO_COMMENTS){
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ uint8_t len;
|
|
|
+ int8_t num_arg = 0;
|
|
|
+ uint8_t i;
|
|
|
+ static uint8_t page = 0;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ num_arg = prvGetNumberOfParameters(pcCommandString);
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ if (num_arg == 0) {
|
|
|
+ const int8_t *const pcInfoTableHeader = ( int8_t * )
|
|
|
+ "\r\n**************Информация о Контроллере**************\r\n";
|
|
|
+ const int8_t *const pcUPSInfoTableHeader = ( int8_t * )
|
|
|
+ "\r\n*****************Информация об ИБП******************\r\n";
|
|
|
+ if (!page) {
|
|
|
+ /* Return the next command help string, before moving the pointer on to
|
|
|
+ the next command in the list. */
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
+
|
|
|
+ GetWorkTimeStr(str, &len);
|
|
|
+ strcat(( char * ) pcWriteBuffer, "Время работы:\t\t\t");
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nМодель:\t\t\t\t");
|
|
|
+ GetModelStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nДата производства:\t\t");
|
|
|
+ GetProductionDataStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nВерсия ПО:\t\t\t");
|
|
|
+ GetVersionStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nMAC адрес:\t\t\t");
|
|
|
+ GetMacStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nСерийный номер:\t\t\t");
|
|
|
+ GetSerialNumberStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nНазвание устройства:\t\t");
|
|
|
+ GetNameDeviceStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nВладелец:\t\t\t");
|
|
|
+ GetOwnerStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nМестоположение:\t\t\t");
|
|
|
+ GetLocationStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nКомментарии:\t\t\t");
|
|
|
+ GetCommentsStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ page = 1;
|
|
|
+ xReturn = pdTRUE;
|
|
|
+ } else {
|
|
|
+
|
|
|
+ strncat( ( char * ) pcWriteBuffer, ( const char * ) pcUPSInfoTableHeader, strlen( ( char * ) pcUPSInfoTableHeader ) );
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nКомпания:\t\t\tАО\"НПК РоТеК\"");
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nМодель:\t\t\t\t");
|
|
|
+ GetUPSModelStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nВерсия ПО:\t\t\t");
|
|
|
+ GetUPSVersionStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
+
|
|
|
+ page = 0;
|
|
|
+ /* There are no more commands in the list, so there will be no more
|
|
|
+ strings to return after this one and pdFALSE should be returned. */
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ }
|
|
|
+ } else if (num_arg == 1) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ } else {
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ for (i = 0; i < INFO_ALL_ARGS; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, info_args_list[i], strlen(info_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ xParameterNumber ++;
|
|
|
+ // xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ if (control_string_en_digit(str, strlen(str))) {
|
|
|
+ switch (i) {
|
|
|
+ case INFO_DEV_NAME:
|
|
|
+ if (telnet_code_auth == ADMIN) {
|
|
|
+ str[19] = 0;
|
|
|
+ SetNameDeviceStr(str);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case INFO_ADDRESS:
|
|
|
+ if (telnet_code_auth == ADMIN) {
|
|
|
+ str[109] = 0;
|
|
|
+ SetLocation(str);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case INFO_OWNER:
|
|
|
+ if (telnet_code_auth == ADMIN) {
|
|
|
+ str[49] = 0;
|
|
|
+ SetOwner(str);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case INFO_COMMENTS:
|
|
|
+ if (telnet_code_auth == ADMIN) {
|
|
|
+ str[109] = 0;
|
|
|
+ SetComment(str);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (i >= INFO_ADDRESS && i <= INFO_COMMENTS) {
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
-static portBASE_TYPE prvTaskRebootCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
-
|
|
|
- static bool start_reboot = true;
|
|
|
- const int8_t *const pcRebootHeader = ( int8_t * ) "Контроллер будет перезагружен через 1 секунду\r\n";
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
+static portBASE_TYPE prvTaskRebootCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
|
|
|
- if(start_reboot){
|
|
|
- start_reboot = false;
|
|
|
- strcpy( ( char * ) pcWriteBuffer, ( char * ) pcRebootHeader );
|
|
|
- return pdTRUE;
|
|
|
- }
|
|
|
- else{
|
|
|
- telnet_act = true;
|
|
|
- Reboot();
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
+ static bool start_reboot = true;
|
|
|
+ const int8_t *const pcRebootHeader = ( int8_t * )
|
|
|
+ "Контроллер будет перезагружен через 1 секунду\r\n";
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (start_reboot) {
|
|
|
+ start_reboot = false;
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, ( char * ) pcRebootHeader );
|
|
|
+ return pdTRUE;
|
|
|
+ } else {
|
|
|
+ telnet_act = true;
|
|
|
+ Reboot();
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
-static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- uint8_t len;
|
|
|
- uint8_t i;
|
|
|
- uint8_t fail = 0;
|
|
|
- uint16_t temp = 0;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n******Системное время Контроллера******\r\n";
|
|
|
- /* Return the next command help string, before moving the pointer on to
|
|
|
- the next command in the list. */
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
-
|
|
|
- GetDateStr(str, &len);
|
|
|
- strcat(( char * ) pcWriteBuffer, "Дата:\t\t\t");
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nВремя:\t\t\t");
|
|
|
- GetTimeStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
-
|
|
|
- /* There are no more commands in the list, so there will be no more
|
|
|
- strings to return after this one and pdFALSE should be returned. */
|
|
|
- xReturn = pdFALSE;
|
|
|
- }
|
|
|
- else{
|
|
|
- if(telnet_code_auth != ADMIN){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- for(i = 0; i < ARG_SYSTIME_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, systime_args_list[i], strlen(systime_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(i != ARG_SYSTIME_ALL){
|
|
|
- if(sSettings.sSNTP.sntpEnable){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcSystymeDenied, strlen( ( char * ) pcSystymeDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- switch(i){
|
|
|
- case ARG_SYSTIME_DATA:
|
|
|
- if(xParameterStringLength == 10){
|
|
|
- for(uint8_t j = 0; j < xParameterStringLength; j++)
|
|
|
- {
|
|
|
- if(j != 4 && j != 7)
|
|
|
- {
|
|
|
- if(str[j] > 0x39 || str[j] < 0x30){
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- }
|
|
|
- else if(j == 4 || j == 7){
|
|
|
- if(str[j] != '-')
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- }
|
|
|
- if(!fail)
|
|
|
- {
|
|
|
- temp = 1000*(str[0] - 0x30) + 100*(str[1] - 0x30) + 10*(str[2] - 0x30) + str[3] - 0x30;
|
|
|
- if(temp > 2099 || temp < 2000)
|
|
|
- fail = 1;
|
|
|
- temp = 0;
|
|
|
- temp = 10*(str[5] - 0x30) + (str[6] - 0x30);
|
|
|
- if(temp > 12)
|
|
|
- fail = 1;
|
|
|
- temp = 0;
|
|
|
- temp = 10*(str[8] - 0x30) + (str[9] - 0x30);
|
|
|
- if(temp > 31)
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- if(!fail){
|
|
|
- SetDateStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- case ARG_SYSTIME_TIME:
|
|
|
- if(xParameterStringLength == 5){
|
|
|
- for(uint8_t j = 0; j < xParameterStringLength; j++)
|
|
|
- {
|
|
|
- if(j != 2)
|
|
|
- {
|
|
|
- if(str[j] > 0x39 || str[j] < 0x30)
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- else if(j == 2){
|
|
|
- if(str[j] != ':')
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- }
|
|
|
- if(!fail)
|
|
|
- {
|
|
|
- temp = 10*(str[0] - 0x30) + (str[1] - 0x30);
|
|
|
- if(temp > 23)
|
|
|
- fail = 1;
|
|
|
- temp = 0;
|
|
|
- temp = 10*(str[3] - 0x30) + (str[4] - 0x30);
|
|
|
- if(temp > 59)
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
- if(!fail){
|
|
|
- SetTimeStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskSystimeCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ uint8_t len;
|
|
|
+ uint8_t i;
|
|
|
+ uint8_t fail = 0;
|
|
|
+ uint16_t temp = 0;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ const int8_t *const pcInfoTableHeader = ( int8_t * )
|
|
|
+ "\r\n******Системное время Контроллера******\r\n";
|
|
|
+ /* Return the next command help string, before moving the pointer on to
|
|
|
+ the next command in the list. */
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
+
|
|
|
+ GetDateStr(str, &len);
|
|
|
+ strcat(( char * ) pcWriteBuffer, "Дата:\t\t\t");
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nВремя:\t\t\t");
|
|
|
+ GetTimeStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
+
|
|
|
+ /* There are no more commands in the list, so there will be no more
|
|
|
+ strings to return after this one and pdFALSE should be returned. */
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ } else {
|
|
|
+ if (telnet_code_auth != ADMIN) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ for (i = 0; i < ARG_SYSTIME_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, systime_args_list[i], strlen(systime_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (i != ARG_SYSTIME_ALL) {
|
|
|
+ if (sSettings.sSNTP.sntpEnable) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcSystymeDenied, strlen( ( char * ) pcSystymeDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ switch (i) {
|
|
|
+ case ARG_SYSTIME_DATA:
|
|
|
+ if (xParameterStringLength == 10) {
|
|
|
+ for (uint8_t j = 0; j < xParameterStringLength; j++) {
|
|
|
+ if (j != 4 && j != 7) {
|
|
|
+ if (str[j] > 0x39 || str[j] < 0x30) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ } else if (j == 4 || j == 7) {
|
|
|
+ if (str[j] != '-') {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!fail) {
|
|
|
+ temp = 1000 * (str[0] - 0x30) + 100 * (str[1] - 0x30) + 10 * (str[2] - 0x30) + str[3] - 0x30;
|
|
|
+ if (temp > 2099 || temp < 2000) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ temp = 0;
|
|
|
+ temp = 10 * (str[5] - 0x30) + (str[6] - 0x30);
|
|
|
+ if (temp > 12) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ temp = 0;
|
|
|
+ temp = 10 * (str[8] - 0x30) + (str[9] - 0x30);
|
|
|
+ if (temp > 31) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ if (!fail) {
|
|
|
+ SetDateStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_SYSTIME_TIME:
|
|
|
+ if (xParameterStringLength == 5) {
|
|
|
+ for (uint8_t j = 0; j < xParameterStringLength; j++) {
|
|
|
+ if (j != 2) {
|
|
|
+ if (str[j] > 0x39 || str[j] < 0x30) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ } else if (j == 2) {
|
|
|
+ if (str[j] != ':') {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!fail) {
|
|
|
+ temp = 10 * (str[0] - 0x30) + (str[1] - 0x30);
|
|
|
+ if (temp > 23) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ temp = 0;
|
|
|
+ temp = 10 * (str[3] - 0x30) + (str[4] - 0x30);
|
|
|
+ if (temp > 59) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ if (!fail) {
|
|
|
+ SetTimeStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the ntp command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- char str_temp[110];
|
|
|
- uint8_t len;
|
|
|
- uint8_t i;
|
|
|
- bool enable_old_sntp;
|
|
|
-
|
|
|
- const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n************NTP настройки Контроллера************\r\n";
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_NTP_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, ntp_args_list[i], strlen(ntp_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN && i !=ARG_NTP_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- xParameterNumber ++;
|
|
|
- if(pcParameterString == NULL){
|
|
|
- switch(i){
|
|
|
- case ARG_NTP_ENABLE:
|
|
|
- enable_old_sntp = sSettings.sSNTP.sntpEnable;
|
|
|
- SetSntpStateStr("1");
|
|
|
- if(sSettings.sSNTP.sntpEnable != enable_old_sntp){
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- SNTP_Init();
|
|
|
- //vTaskDelay(7000);
|
|
|
- SNTP_Poll();
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_NTP_DISABLE:
|
|
|
- enable_old_sntp = sSettings.sSNTP.sntpEnable;
|
|
|
- SetSntpStateStr("0");
|
|
|
- if(sSettings.sSNTP.sntpEnable != enable_old_sntp){
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- SNTP_Init();
|
|
|
- //vTaskDelay(7000);
|
|
|
- SNTP_Poll();
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_NTP_INFO:
|
|
|
- /* Return the next command help string, before moving the pointer on to
|
|
|
- the next command in the list. */
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
-
|
|
|
- GetSntpStateStrRU(str, &len);
|
|
|
- strcat(( char * ) pcWriteBuffer, "Режим установки времени:\t");
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nIP адрес NTP сервера:\t\t");
|
|
|
- GetSntpServerIpStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nЧасовой пояс:\t\t\t");
|
|
|
- GetSntpTimeZoneStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\nПоследняя дата синхронизации:\t");
|
|
|
- GetSntpLastDataStr(str, &len);
|
|
|
- strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
-
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- if(i == ARG_NTP_SET){
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString != NULL){
|
|
|
- memset(str_temp, 0, sizeof(str_temp));
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str_temp))
|
|
|
- xParameterStringLength = sizeof(str_temp) - 1;
|
|
|
- strncat(str_temp, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- if(strncmp(str, "IP", 2) == 0){
|
|
|
- if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str_temp) != IPADDR_NONE){
|
|
|
- if(strncmp(str_temp, sSettings.sSNTP.ip, strlen(str_temp)) != 0){
|
|
|
- SetSntpServerIpStr(str_temp);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- SNTP_Init();
|
|
|
- //vTaskDelay(7000);
|
|
|
- SNTP_Poll();
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else if(strncmp(str, "gmt", 3) == 0){
|
|
|
- if(xParameterStringLength > 1 && xParameterStringLength < 5){
|
|
|
- bool fail = false;
|
|
|
- if(str_temp[0] != '-' && str_temp[0] != '+')
|
|
|
- fail = true;
|
|
|
- if(!isdigit_int(str_temp[1]) && (!isdigit_int(str_temp[2]) && str_temp[2] != '.') && (!isdigit_int(str_temp[3]) && str_temp[3] != '.'))
|
|
|
- fail = true;
|
|
|
- if(xParameterStringLength == 5){
|
|
|
- if(!isdigit_int(str_temp[4]))
|
|
|
- fail = true;
|
|
|
- }
|
|
|
- if(!fail){
|
|
|
- float value = atof(str_temp);
|
|
|
- if(value >= -12.0 && value <= 12.0){
|
|
|
- SetSntpTimeZoneStr(str_temp);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskNTPCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ char str_temp[110];
|
|
|
+ uint8_t len;
|
|
|
+ uint8_t i;
|
|
|
+ bool enable_old_sntp;
|
|
|
+
|
|
|
+ const int8_t *const pcInfoTableHeader = ( int8_t * )
|
|
|
+ "\r\n************NTP настройки Контроллера************\r\n";
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_NTP_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, ntp_args_list[i], strlen(ntp_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_NTP_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ xParameterNumber ++;
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ switch (i) {
|
|
|
+ case ARG_NTP_ENABLE:
|
|
|
+ enable_old_sntp = sSettings.sSNTP.sntpEnable;
|
|
|
+ SetSntpStateStr("1");
|
|
|
+ if (sSettings.sSNTP.sntpEnable != enable_old_sntp) {
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ SNTP_Init();
|
|
|
+ //vTaskDelay(7000);
|
|
|
+ SNTP_Poll();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_NTP_DISABLE:
|
|
|
+ enable_old_sntp = sSettings.sSNTP.sntpEnable;
|
|
|
+ SetSntpStateStr("0");
|
|
|
+ if (sSettings.sSNTP.sntpEnable != enable_old_sntp) {
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ SNTP_Init();
|
|
|
+ //vTaskDelay(7000);
|
|
|
+ SNTP_Poll();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_NTP_INFO:
|
|
|
+ /* Return the next command help string, before moving the pointer on to
|
|
|
+ the next command in the list. */
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
+
|
|
|
+ GetSntpStateStrRU(str, &len);
|
|
|
+ strcat(( char * ) pcWriteBuffer, "Режим установки времени:\t");
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nIP адрес NTP сервера:\t\t");
|
|
|
+ GetSntpServerIpStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nЧасовой пояс:\t\t\t");
|
|
|
+ GetSntpTimeZoneStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\nПоследняя дата синхронизации:\t");
|
|
|
+ GetSntpLastDataStr(str, &len);
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, len);
|
|
|
+
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (i == ARG_NTP_SET) {
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString != NULL) {
|
|
|
+ memset(str_temp, 0, sizeof(str_temp));
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str_temp)) {
|
|
|
+ xParameterStringLength = sizeof(str_temp) - 1;
|
|
|
+ }
|
|
|
+ strncat(str_temp, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ if (strncmp(str, "IP", 2) == 0) {
|
|
|
+ if (xParameterStringLength <= 15) {
|
|
|
+ if (ipaddr_addr(str_temp) != IPADDR_NONE) {
|
|
|
+ if (strncmp(str_temp, sSettings.sSNTP.ip, strlen(str_temp)) != 0) {
|
|
|
+ SetSntpServerIpStr(str_temp);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ SNTP_Init();
|
|
|
+ //vTaskDelay(7000);
|
|
|
+ SNTP_Poll();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else if (strncmp(str, "gmt", 3) == 0) {
|
|
|
+ if (xParameterStringLength > 1 && xParameterStringLength < 5) {
|
|
|
+ bool fail = false;
|
|
|
+ if (str_temp[0] != '-' && str_temp[0] != '+') {
|
|
|
+ fail = true;
|
|
|
+ }
|
|
|
+ if (!isdigit_int(str_temp[1]) && (!isdigit_int(str_temp[2]) && str_temp[2] != '.') && (!isdigit_int(str_temp[3]) &&
|
|
|
+ str_temp[3] != '.')) {
|
|
|
+ fail = true;
|
|
|
+ }
|
|
|
+ if (xParameterStringLength == 5) {
|
|
|
+ if (!isdigit_int(str_temp[4])) {
|
|
|
+ fail = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!fail) {
|
|
|
+ float value = atof(str_temp);
|
|
|
+ if (value >= -12.0 && value <= 12.0) {
|
|
|
+ SetSntpTimeZoneStr(str_temp);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the network command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- uint8_t i;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_NETWORK_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, network_args_list[i], strlen(network_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(telnet_code_auth != ADMIN && i !=ARG_NETWORK_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- if(i != ARG_NETWORK_ALL && i != ARG_NETWORK_DHCP && i != ARG_NETWORK_INFO){
|
|
|
- if(sSettings.sWebTempParams.dhcpEnable){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- if(i == ARG_NETWORK_INFO){
|
|
|
- net_config_param(pcWriteBuffer);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- switch(i){
|
|
|
- case ARG_NETWORK_DHCP:
|
|
|
- if(strncmp(str, "ENA", 3) == 0){
|
|
|
- SetUDPDhcpStateStr("True");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
- }
|
|
|
- else if(strncmp(str, "DIS", 3) == 0){
|
|
|
- SetUDPDhcpStateStr("False");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- case ARG_NETWORK_IP:
|
|
|
- if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str) != IPADDR_NONE){
|
|
|
- SetIPStr(str);
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_NETWORK_GW:
|
|
|
- if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str) != IPADDR_NONE){
|
|
|
- SetGatewayStr(str);
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_NETWORK_MASK:
|
|
|
- if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str) != IPADDR_NONE){
|
|
|
- SetMaskStr(str);
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskNetworkCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ uint8_t i;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_NETWORK_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, network_args_list[i], strlen(network_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_NETWORK_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ if (i != ARG_NETWORK_ALL && i != ARG_NETWORK_DHCP && i != ARG_NETWORK_INFO) {
|
|
|
+ if (sSettings.sWebTempParams.dhcpEnable) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ if (i == ARG_NETWORK_INFO) {
|
|
|
+ net_config_param(pcWriteBuffer);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ switch (i) {
|
|
|
+ case ARG_NETWORK_DHCP:
|
|
|
+ if (strncmp(str, "ENA", 3) == 0) {
|
|
|
+ SetUDPDhcpStateStr("True");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ } else if (strncmp(str, "DIS", 3) == 0) {
|
|
|
+ SetUDPDhcpStateStr("False");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_NETWORK_IP:
|
|
|
+ if (xParameterStringLength <= 15) {
|
|
|
+ if (ipaddr_addr(str) != IPADDR_NONE) {
|
|
|
+ SetIPStr(str);
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_NETWORK_GW:
|
|
|
+ if (xParameterStringLength <= 15) {
|
|
|
+ if (ipaddr_addr(str) != IPADDR_NONE) {
|
|
|
+ SetGatewayStr(str);
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_NETWORK_MASK:
|
|
|
+ if (xParameterStringLength <= 15) {
|
|
|
+ if (ipaddr_addr(str) != IPADDR_NONE) {
|
|
|
+ SetMaskStr(str);
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the snmp command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[20];
|
|
|
- char temp_str[20];
|
|
|
- uint8_t i;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_SNMP_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, snmp_args_list[i], strlen(snmp_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN && i !=ARG_SNMP_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- xParameterNumber ++;
|
|
|
- if(pcParameterString == NULL){
|
|
|
- if(i == ARG_SNMP_INFO){
|
|
|
- snmp_config_param(pcWriteBuffer);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- switch(i){
|
|
|
- case ARG_SNMP_SERVER:
|
|
|
- if(xParameterStringLength == 1 && isdigit_int(str[0])){
|
|
|
- int32_t temp = atoi(str);
|
|
|
- if(temp > 0 && temp < 6){
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString != NULL){
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- if(xParameterStringLength <= 15){
|
|
|
- if(ipaddr_addr(str) != IPADDR_NONE){
|
|
|
- switch(temp){
|
|
|
- case 1:
|
|
|
- SetManagerIp(str);
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- SetManagerIp2(str);
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- SetManagerIp3(str);
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- SetManagerIp4(str);
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- SetManagerIp5(str);
|
|
|
- break;
|
|
|
- }
|
|
|
- if(temp > 0 && temp < 6){
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_SNMP_COMMUNITY:
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString != NULL){
|
|
|
- memset(temp_str, 0, sizeof(temp_str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(temp_str))
|
|
|
- xParameterStringLength = sizeof(temp_str) - 1;
|
|
|
- strncat(temp_str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- if(control_string_en_digit(temp_str, strlen(temp_str))){
|
|
|
- if(strncmp(str, "read", 4) == 0){
|
|
|
- SetReadCommunity(temp_str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else if(strncmp(str, "write", 5) == 0){
|
|
|
- SetWriteCommunity(temp_str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskSNMPCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[20];
|
|
|
+ char temp_str[20];
|
|
|
+ uint8_t i;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_SNMP_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, snmp_args_list[i], strlen(snmp_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_SNMP_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ xParameterNumber ++;
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ if (i == ARG_SNMP_INFO) {
|
|
|
+ snmp_config_param(pcWriteBuffer);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ switch (i) {
|
|
|
+ case ARG_SNMP_SERVER:
|
|
|
+ if (xParameterStringLength == 1 && isdigit_int(str[0])) {
|
|
|
+ int32_t temp = atoi(str);
|
|
|
+ if (temp > 0 && temp < 6) {
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString != NULL) {
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ if (xParameterStringLength <= 15) {
|
|
|
+ if (ipaddr_addr(str) != IPADDR_NONE) {
|
|
|
+ switch (temp) {
|
|
|
+ case 1:
|
|
|
+ SetManagerIp(str);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ SetManagerIp2(str);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ SetManagerIp3(str);
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ SetManagerIp4(str);
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ SetManagerIp5(str);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (temp > 0 && temp < 6) {
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_SNMP_COMMUNITY:
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString != NULL) {
|
|
|
+ memset(temp_str, 0, sizeof(temp_str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(temp_str)) {
|
|
|
+ xParameterStringLength = sizeof(temp_str) - 1;
|
|
|
+ }
|
|
|
+ strncat(temp_str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ if (control_string_en_digit(temp_str, strlen(temp_str))) {
|
|
|
+ if (strncmp(str, "read", 4) == 0) {
|
|
|
+ SetReadCommunity(temp_str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else if (strncmp(str, "write", 5) == 0) {
|
|
|
+ SetWriteCommunity(temp_str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the akb command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- uint8_t i;
|
|
|
- float value = 0;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_AKB_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, akb_args_list[i], strlen(akb_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(telnet_code_auth != ADMIN && i !=ARG_AKB_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- if(i == ARG_AKB_INFO){
|
|
|
- akb_config_param(pcWriteBuffer);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 2;
|
|
|
- strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- for(uint8_t j = 0; j < xParameterStringLength; j ++){
|
|
|
- if(!isfloatdigit(str[j])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
-
|
|
|
- switch(i){
|
|
|
- case ARG_AKB_VOLT_CELL_MIN:
|
|
|
- if(value < sSettings.UPS_Setting.Ucellmax && value > MIN_VOLT_CELL_RANGE){
|
|
|
- SetUPSVoltCellMinStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- case ARG_AKB_VOLT_CELL_MAX:
|
|
|
- if(value > sSettings.UPS_Setting.Ucellmin && value <= MAX_VOLT_CELL_RANGE){
|
|
|
- SetUPSVoltCellMaxStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+static portBASE_TYPE prvTaskAKBCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ uint8_t i;
|
|
|
+ uint8_t fail = 0;
|
|
|
+ uint16_t temp = 0;
|
|
|
+ float value = 0;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_AKB_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, akb_args_list[i], strlen(akb_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_AKB_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ if (i == ARG_AKB_INFO) {
|
|
|
+ akb_config_param(pcWriteBuffer);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 2;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+#ifdef HARDWARE_BT6709
|
|
|
+ if (i != ARG_AKB_DATASET)
|
|
|
+#endif
|
|
|
+ {
|
|
|
+ for (uint8_t j = 0; j < xParameterStringLength; j ++) {
|
|
|
+ if (!isfloatdigit(str[j])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
}
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
+ value = atof(str);
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (i) {
|
|
|
+ case ARG_AKB_VOLT_CELL_MIN:
|
|
|
+ if (value < sSettings.UPS_Setting.Ucellmax && value > MIN_VOLT_CELL_RANGE) {
|
|
|
+ SetUPSVoltCellMinStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_AKB_VOLT_CELL_MAX:
|
|
|
+ if (value > sSettings.UPS_Setting.Ucellmin && value <= MAX_VOLT_CELL_RANGE) {
|
|
|
+ SetUPSVoltCellMaxStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+#ifdef HARDWARE_BT6709
|
|
|
+ case ARG_AKB_CAPACITY:
|
|
|
+ if (value >= CAPACITY_MIN_RANGE && value <= CAPACITY_MAX_RANGE && (value - (int32_t)value) == 0) {
|
|
|
+ SetCapacityNominalAKBStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_AKB_VOLT:
|
|
|
+ if (value >= AKB_VOLTAGE_MIN_RANGE && value <= AKB_VOLTAGE_MAX_RANGE && ((int32_t)value % 12) == 0 && (value - (int32_t)value) == 0) {
|
|
|
+ SetVoltageAKBNominalStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_AKB_LIFETIME:
|
|
|
+ if (value >= LIFETIME_MIN_RANGE && value <= LIFETIME_MAX_RANGE && (value - (int32_t)value) == 0) {
|
|
|
+ SetLifeTimeAKBStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_AKB_DATASET:
|
|
|
+ if (xParameterStringLength == 10) {
|
|
|
+ for (uint8_t j = 0; j < xParameterStringLength; j++) {
|
|
|
+ if (j != 4 && j != 7) {
|
|
|
+ if (str[j] > 0x39 || str[j] < 0x30) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ } else if (j == 4 || j == 7) {
|
|
|
+ if (str[j] != '-') {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!fail) {
|
|
|
+ temp = 1000 * (str[0] - 0x30) + 100 * (str[1] - 0x30) + 10 * (str[2] - 0x30) + str[3] - 0x30;
|
|
|
+ if (temp > 2099 || temp < 2000) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ temp = 0;
|
|
|
+ temp = 10 * (str[5] - 0x30) + (str[6] - 0x30);
|
|
|
+ if (temp > 12) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ temp = 0;
|
|
|
+ temp = 10 * (str[8] - 0x30) + (str[9] - 0x30);
|
|
|
+ if (temp > 31) {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+ if (!fail) {
|
|
|
+ SetDataSetAKBStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_AKB_UPS_POWER:
|
|
|
+ if (value >= UPS_POWER_MIN_RANGE && value <= UPS_POWER_MAX_RANGE && ((int32_t)value % 50) == 0 && (value - (int32_t)value) == 0) {
|
|
|
+ SetUPSPowerStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+#endif
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
|
|
|
|
|
|
- return xReturn;
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the alarm command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- uint8_t i, j;
|
|
|
- float value = 0;
|
|
|
- uint8_t k;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_ALARM_TYPE_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, type_alarm_args_list[i], strlen(type_alarm_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(telnet_code_auth != ADMIN && i != ARG_ALARM_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- if(i == ARG_ALARM_INFO){
|
|
|
- alarm_config_param(pcWriteBuffer);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(j = 0; j < ARG_ALARM_ALL; j ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, alarm_args_list[j], strlen(alarm_args_list[j]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 2;
|
|
|
- strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- switch(i){
|
|
|
- case ARG_ALARM_TEMP:
|
|
|
- switch(j){
|
|
|
- case ARG_ALARM_LINE_LOW:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isdigit_int(str[k])){
|
|
|
- if(k == 0 && str[k] == '-'){
|
|
|
- continue;
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= MIN_TEMP_MIN_RANGE && value <= MIN_TEMP_MAX_RANGE){
|
|
|
- SetTemperatureAlarmLowRangeStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_ALARM_LINE_HIGH:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isdigit_int(str[k])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= MAX_TEMP_MIN_RANGE && value <= MAX_TEMP_MAX_RANGE){
|
|
|
- SetTemperatureAlarmHighRangeStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_ALARM_LINE_HIST:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isfloatdigit(str[k])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= HIST_TEMP_MIN_RANGE && value <= HIST_TEMP_MAX_RANGE){
|
|
|
- SetTemperatureAlarmHisteStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_ALARM_LOAD:
|
|
|
- switch(j){
|
|
|
- case ARG_ALARM_LINE_LOW:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- case ARG_ALARM_LINE_HIGH:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isdigit_int(str[k])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= MAX_LOAD_MIN_RANGE && value <= MAX_LOAD_MAX_RANGE){
|
|
|
- SetLoadAlarmHighRangeStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_ALARM_LINE_HIST:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isfloatdigit(str[k])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= HIST_LOAD_MIN_RANGE && value <= HIST_LOAD_MAX_RANGE){
|
|
|
- SetLoadAlarmHistStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_ALARM_VOUT:
|
|
|
- switch(j){
|
|
|
- case ARG_ALARM_LINE_LOW:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isdigit_int(str[k])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= MIN_VAC_MIN_RANGE && value <= MIN_VAC_MAX_RANGE){
|
|
|
- SetVACAlarmLowRangeStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_ALARM_LINE_HIGH:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isdigit_int(str[k])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= MAX_VAC_MIN_RANGE && value <= MAX_VAC_MAX_RANGE){
|
|
|
- SetVACAlarmHighRangeStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_ALARM_LINE_HIST:
|
|
|
- for(k = 0; k < xParameterStringLength; k ++){
|
|
|
- if(!isdigit_int(str[k])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- value = atof(str);
|
|
|
- if(value >= HIST_VAC_MIN_RANGE && value <= HIST_VAC_MAX_RANGE){
|
|
|
- SetVACAlarmHisteStr(str);
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskAlarmCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ uint8_t i, j;
|
|
|
+ float value = 0;
|
|
|
+ uint8_t k;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_ALARM_TYPE_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, type_alarm_args_list[i], strlen(type_alarm_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_ALARM_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ if (i == ARG_ALARM_INFO) {
|
|
|
+ alarm_config_param(pcWriteBuffer);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (j = 0; j < ARG_ALARM_ALL; j ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, alarm_args_list[j], strlen(alarm_args_list[j]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 2;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ switch (i) {
|
|
|
+ case ARG_ALARM_TEMP:
|
|
|
+ switch (j) {
|
|
|
+ case ARG_ALARM_LINE_LOW:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isdigit_int(str[k])) {
|
|
|
+ if (k == 0 && str[k] == '-') {
|
|
|
+ continue;
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= MIN_TEMP_MIN_RANGE && value <= MIN_TEMP_MAX_RANGE) {
|
|
|
+ SetTemperatureAlarmLowRangeStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_LINE_HIGH:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isdigit_int(str[k])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= MAX_TEMP_MIN_RANGE && value <= MAX_TEMP_MAX_RANGE) {
|
|
|
+ SetTemperatureAlarmHighRangeStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_LINE_HIST:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isfloatdigit(str[k])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= HIST_TEMP_MIN_RANGE && value <= HIST_TEMP_MAX_RANGE) {
|
|
|
+ SetTemperatureAlarmHisteStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_LOAD:
|
|
|
+ switch (j) {
|
|
|
+ case ARG_ALARM_LINE_LOW:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_LINE_HIGH:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isdigit_int(str[k])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= MAX_LOAD_MIN_RANGE && value <= MAX_LOAD_MAX_RANGE) {
|
|
|
+ SetLoadAlarmHighRangeStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_LINE_HIST:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isfloatdigit(str[k])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= HIST_LOAD_MIN_RANGE && value <= HIST_LOAD_MAX_RANGE) {
|
|
|
+ SetLoadAlarmHistStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_VOUT:
|
|
|
+ switch (j) {
|
|
|
+ case ARG_ALARM_LINE_LOW:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isdigit_int(str[k])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= MIN_VAC_MIN_RANGE && value <= MIN_VAC_MAX_RANGE) {
|
|
|
+ SetVACAlarmLowRangeStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_LINE_HIGH:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isdigit_int(str[k])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= MAX_VAC_MIN_RANGE && value <= MAX_VAC_MAX_RANGE) {
|
|
|
+ SetVACAlarmHighRangeStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_ALARM_LINE_HIST:
|
|
|
+ for (k = 0; k < xParameterStringLength; k ++) {
|
|
|
+ if (!isdigit_int(str[k])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value = atof(str);
|
|
|
+ if (value >= HIST_VAC_MIN_RANGE && value <= HIST_VAC_MAX_RANGE) {
|
|
|
+ SetVACAlarmHisteStr(str);
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
#ifdef HARDWARE_BT6709
|
|
|
/*
|
|
|
* Implements the whitelist command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskWhiteListCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[20];
|
|
|
- char temp_str[20];
|
|
|
- uint8_t i;
|
|
|
- char *beginValue;
|
|
|
- uint8_t len;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_WHITELIST_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, whitelist_args_list[i], strlen(whitelist_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN && i !=ARG_WHITELIST_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- xParameterNumber ++;
|
|
|
- if(pcParameterString == NULL){
|
|
|
- if(i == ARG_WHITELIST_INFO){
|
|
|
- whitelist_config_param(pcWriteBuffer);
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- switch(i){
|
|
|
- case ARG_WHITELIST_RANGE:
|
|
|
- if(xParameterStringLength == 1 && isdigit_int(str[0])){
|
|
|
- int32_t temp = atoi(str);
|
|
|
- if(temp > 0 && temp < 6){
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString != NULL){
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- if(xParameterStringLength <= 19){
|
|
|
- beginValue = strpbrk(str,"/");
|
|
|
- if(beginValue == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- len = beginValue - str;
|
|
|
- memset(temp_str, 0, sizeof(temp_str));
|
|
|
- strncpy(temp_str, str, len);
|
|
|
- for(uint8_t j = (len + 1); j < xParameterStringLength; j++){
|
|
|
- if(!isdigit_int(str[j])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- if(ipaddr_addr(temp_str) != IPADDR_NONE){
|
|
|
- SetWhiteListSTR(str, (temp - 1));
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskWhiteListCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[20];
|
|
|
+ char temp_str[20];
|
|
|
+ uint8_t i;
|
|
|
+ char *beginValue;
|
|
|
+ uint8_t len;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_WHITELIST_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, whitelist_args_list[i], strlen(whitelist_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_WHITELIST_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ xParameterNumber ++;
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ if (i == ARG_WHITELIST_INFO) {
|
|
|
+ whitelist_config_param(pcWriteBuffer);
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ switch (i) {
|
|
|
+ case ARG_WHITELIST_RANGE:
|
|
|
+ if (xParameterStringLength == 1 && isdigit_int(str[0])) {
|
|
|
+ int32_t temp = atoi(str);
|
|
|
+ if (temp > 0 && temp < 6) {
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString != NULL) {
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ if (xParameterStringLength <= 19) {
|
|
|
+ beginValue = strpbrk(str, "/");
|
|
|
+ if (beginValue == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ len = beginValue - str;
|
|
|
+ memset(temp_str, 0, sizeof(temp_str));
|
|
|
+ strncpy(temp_str, str, len);
|
|
|
+ for (uint8_t j = (len + 1); j < xParameterStringLength; j++) {
|
|
|
+ if (!isdigit_int(str[j])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ipaddr_addr(temp_str) != IPADDR_NONE) {
|
|
|
+ SetWhiteListSTR(str, (temp - 1));
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tСохраните конфигурацию сетевых настроек\r\n" );
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
/*
|
|
|
* Implements the change password command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskUserCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- uint8_t i;
|
|
|
- char temp_str[MAX_WEB_LOGIN_LEN];
|
|
|
- char WebLogin[MAX_WEB_LOGIN_LEN];
|
|
|
- uint8_t valueLen, user_id;
|
|
|
-
|
|
|
- const int8_t * const pcChangePWDHeader = ( int8_t * ) "\r\nВведите новый пароль:";
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_USER_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, user_args_list[i], strlen(user_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(i == ARG_USER_PWD){
|
|
|
- memset(temp_str, 0, sizeof(temp_str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(temp_str)){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- else{
|
|
|
- strncat(temp_str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
- for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
|
|
|
-
|
|
|
- GetUserLogin(user_id, WebLogin, &valueLen);
|
|
|
-
|
|
|
- /* Check login and password */
|
|
|
- if (strncmp(WebLogin, temp_str, MAX_WEB_LOGIN_LEN) == 0) {
|
|
|
-
|
|
|
- /* Login and pass are valid */
|
|
|
- id_change_pwd = user_id;
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcChangePWDHeader, strlen( ( char * ) pcChangePWDHeader ) );
|
|
|
- telnetState = TELNET_CHANGE_PWD;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if(telnetState != TELNET_CHANGE_PWD){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
-
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskUserCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ uint8_t i;
|
|
|
+ char temp_str[MAX_WEB_LOGIN_LEN];
|
|
|
+ char WebLogin[MAX_WEB_LOGIN_LEN];
|
|
|
+ uint8_t valueLen, user_id;
|
|
|
+
|
|
|
+ const int8_t *const pcChangePWDHeader = ( int8_t * ) "\r\nВведите новый пароль:";
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_USER_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, user_args_list[i], strlen(user_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (i == ARG_USER_PWD) {
|
|
|
+ memset(temp_str, 0, sizeof(temp_str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(temp_str)) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ } else {
|
|
|
+ strncat(temp_str, ( const char * ) pcParameterString, strlen(( const char * ) pcParameterString));
|
|
|
+ for (user_id = 0; user_id < MAX_WEB_USERS; user_id++) {
|
|
|
+
|
|
|
+ GetUserLogin(user_id, WebLogin, &valueLen);
|
|
|
+
|
|
|
+ /* Check login and password */
|
|
|
+ if (strncmp(WebLogin, temp_str, MAX_WEB_LOGIN_LEN) == 0) {
|
|
|
+
|
|
|
+ /* Login and pass are valid */
|
|
|
+ id_change_pwd = user_id;
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcChangePWDHeader, strlen( ( char * ) pcChangePWDHeader ) );
|
|
|
+ telnetState = TELNET_CHANGE_PWD;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (telnetState != TELNET_CHANGE_PWD) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the config command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- uint8_t i;
|
|
|
- static uint8_t config_menu = 0;
|
|
|
-
|
|
|
- const int8_t * const pcInfoTableHeader = ( int8_t * ) "\r\n*********Конфигурация Контроллера*********\r\n";
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_CONFIG_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, config_args_list[i], strlen(config_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN && i !=ARG_CONFIG_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- switch(i){
|
|
|
- case ARG_CONFIG_INFO:
|
|
|
- switch(config_menu){
|
|
|
- case PARAM_CONFIG_SNMP:
|
|
|
- /* Return the next command help string, before moving the pointer on to
|
|
|
- the next command in the list. */
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
- snmp_config_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
+static portBASE_TYPE prvTaskConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ uint8_t i;
|
|
|
+ static uint8_t config_menu = 0;
|
|
|
+
|
|
|
+ const int8_t *const pcInfoTableHeader = ( int8_t * )
|
|
|
+ "\r\n*********Конфигурация Контроллера*********\r\n";
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_CONFIG_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, config_args_list[i], strlen(config_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_CONFIG_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ switch (i) {
|
|
|
+ case ARG_CONFIG_INFO:
|
|
|
+ switch (config_menu) {
|
|
|
+ case PARAM_CONFIG_SNMP:
|
|
|
+ /* Return the next command help string, before moving the pointer on to
|
|
|
+ the next command in the list. */
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInfoTableHeader, strlen( ( char * ) pcInfoTableHeader ) );
|
|
|
+ snmp_config_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
#ifdef HARDWARE_BT6707
|
|
|
- case PARAM_CONFIG_INOUTS:
|
|
|
- inouts_config_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
+ case PARAM_CONFIG_INOUTS:
|
|
|
+ inouts_config_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
#endif
|
|
|
- case PARAM_CONFIG_AKB:
|
|
|
- akb_config_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
- case PARAM_CONFIG_ALARM:
|
|
|
- alarm_config_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
+ case PARAM_CONFIG_AKB:
|
|
|
+ akb_config_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
+ case PARAM_CONFIG_ALARM:
|
|
|
+ alarm_config_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
#ifdef HARDWARE_BT6709
|
|
|
- case PARAM_CONFIG_WHITELIST:
|
|
|
- whitelist_config_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
+ case PARAM_CONFIG_WHITELIST:
|
|
|
+ whitelist_config_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
#endif
|
|
|
- case PARAM_CONFIG_NET:
|
|
|
- net_config_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
- case PARAM_CONFIG_TIME:
|
|
|
- time_config_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- config_menu ++;
|
|
|
- if(config_menu == PARAM_CONFIG_ALL){
|
|
|
- config_menu = 0;
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- else{
|
|
|
- return pdTRUE;
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- if(i == ARG_CONFIG_LOAD){
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- if(xParameterStringLength < 13){
|
|
|
- if(strncmp(str, "default", 7) == 0){
|
|
|
- SNMP_SendUserTrap(DEVICE_RESTORED);
|
|
|
- log_event_data(LOG_SYSTEM_DEFCONFIG, name_login_telnet);
|
|
|
- vTaskDelay(500);
|
|
|
- SETTINGS_SetPartDefault();
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tНастройки сброшены к настройкам по умолчанию!\r\n");
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
-
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+ case PARAM_CONFIG_NET:
|
|
|
+ net_config_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
+ case PARAM_CONFIG_TIME:
|
|
|
+ time_config_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ config_menu ++;
|
|
|
+ if (config_menu == PARAM_CONFIG_ALL) {
|
|
|
+ config_menu = 0;
|
|
|
+ return pdFALSE;
|
|
|
+ } else {
|
|
|
+ return pdTRUE;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ if (i == ARG_CONFIG_LOAD) {
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ xParameterStringLength = strlen(( const char * ) pcParameterString);
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ if (xParameterStringLength < 13) {
|
|
|
+ if (strncmp(str, "default", 7) == 0) {
|
|
|
+ SNMP_SendUserTrap(DEVICE_RESTORED);
|
|
|
+ log_event_data(LOG_SYSTEM_DEFCONFIG, name_login_telnet);
|
|
|
+ vTaskDelay(500);
|
|
|
+ SETTINGS_SetPartDefault();
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tНастройки сброшены к настройкам по умолчанию!\r\n");
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the config command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskNetConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- signed portBASE_TYPE xParameterStringLength;
|
|
|
- uint8_t i;
|
|
|
- static start = 0;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
-
|
|
|
- for(i = 0; i < ARG_NETCONFIG_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, netconfig_args_list[i], strlen(netconfig_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- switch(i){
|
|
|
- case ARG_NETCONFIG_APPLY:
|
|
|
- if(!start){
|
|
|
- /* Если параметры WEB изменились выставляем флаг, сохраняем настройки и перезагружаемся */
|
|
|
- if (GetStateWebReinit() == true)
|
|
|
- {
|
|
|
- start = 1;
|
|
|
- telnet_act = true;
|
|
|
- SetWebReinitFlag(true);
|
|
|
- HTTP_SaveSettings();
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tНастройки сохранены! Контроллер будет перезагружен\r\n\tПосле перезагрузки подтвердите изменения сетевых настроек\r\n");
|
|
|
- return pdTRUE;
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- telnet_act = true;
|
|
|
- start = 0;
|
|
|
- vTaskDelay(1010);
|
|
|
- Reboot();
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_NETCONFIG_CONFIRM:
|
|
|
- telnet_act = true;
|
|
|
- SetWebReinitFlag(false);
|
|
|
- SetConfirmWebParamsFlag();
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tСетевые настройки подтверждены!\r\n");
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return pdFALSE;
|
|
|
+static portBASE_TYPE prvTaskNetConfigCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ signed portBASE_TYPE xParameterStringLength;
|
|
|
+ uint8_t i;
|
|
|
+ static start = 0;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_NETCONFIG_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, netconfig_args_list[i], strlen(netconfig_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (i) {
|
|
|
+ case ARG_NETCONFIG_APPLY:
|
|
|
+ if (!start) {
|
|
|
+ /* Если параметры WEB изменились выставляем флаг, сохраняем настройки и перезагружаемся */
|
|
|
+ if (GetStateWebReinit() == true) {
|
|
|
+ start = 1;
|
|
|
+ telnet_act = true;
|
|
|
+ SetWebReinitFlag(true);
|
|
|
+ HTTP_SaveSettings();
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tНастройки сохранены! Контроллер будет перезагружен\r\n\tПосле перезагрузки подтвердите изменения сетевых настроек\r\n");
|
|
|
+ return pdTRUE;
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ telnet_act = true;
|
|
|
+ start = 0;
|
|
|
+ vTaskDelay(1010);
|
|
|
+ Reboot();
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_NETCONFIG_CONFIRM:
|
|
|
+ telnet_act = true;
|
|
|
+ SetWebReinitFlag(false);
|
|
|
+ SetConfirmWebParamsFlag();
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tСетевые настройки подтверждены!\r\n");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return pdFALSE;
|
|
|
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the history command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskHistoryCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- uint8_t i;
|
|
|
- static int16_t num_page = 0;
|
|
|
- static int16_t num_page_temp = 1;
|
|
|
- static bool start = true;
|
|
|
-
|
|
|
- const int8_t * const pcUPShistoryTableHeader = ( int8_t * ) "\r\n***********Журнал событий ИБП***********\r\n";
|
|
|
- const int8_t * const pcControllerHistoryTableHeader = ( int8_t * ) "\r\n***********Журнал событий Контроллера***********\r\n";
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- if( strncmp( ( const char * ) pcParameterString, "show", xParameterStringLength ) != 0 ){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
-
|
|
|
- for(i = 0; i < ARG_HISTORY_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, history_args_list[i], strlen(history_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > 5){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
-
|
|
|
- if(num_page == 0){
|
|
|
- num_page = atoi(str);
|
|
|
- if(num_page <= 0){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- switch(i){
|
|
|
- case ARG_HISTORY_EVENTS:
|
|
|
- if(start){
|
|
|
- start = false;
|
|
|
- /* Return the next command help string, before moving the pointer on to
|
|
|
- the next command in the list. */
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcControllerHistoryTableHeader, strlen( ( char * ) pcControllerHistoryTableHeader ) );
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
- sprintf(str, "Количество страниц журнала: %d\r\n", History_GetPageCount());
|
|
|
- strncat(( char * ) pcWriteBuffer, str, strlen(str));
|
|
|
- strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
-
|
|
|
- if(num_page > History_GetPageCount())
|
|
|
- num_page = History_GetPageCount();
|
|
|
- }
|
|
|
-
|
|
|
- History_GetPage_tabs(( char * ) pcWriteBuffer, num_page_temp);
|
|
|
-
|
|
|
- num_page --;
|
|
|
- num_page_temp ++;
|
|
|
- if(num_page == 0){
|
|
|
- num_page = 0;
|
|
|
- num_page_temp = 1;
|
|
|
- start = true;
|
|
|
- xReturn = pdFALSE;
|
|
|
- }
|
|
|
- else{
|
|
|
- xReturn = pdTRUE;
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_HISTORY_UPS:
|
|
|
- if(start){
|
|
|
- start = false;
|
|
|
- /* Return the next command help string, before moving the pointer on to
|
|
|
- the next command in the list. */
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcUPShistoryTableHeader, strlen( ( char * ) pcUPShistoryTableHeader ) );
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- sprintf(str, "Количество страниц журнала: %d\r\n", LOG_GetPageCount());
|
|
|
- strncat(( char * ) pcWriteBuffer, str, strlen(str));
|
|
|
-
|
|
|
- if(num_page > LOG_GetPageCount())
|
|
|
- num_page = LOG_GetPageCount();
|
|
|
- }
|
|
|
-
|
|
|
- LOG_GetPage_tabs(( char * ) pcWriteBuffer, num_page_temp);
|
|
|
-
|
|
|
- num_page --;
|
|
|
- num_page_temp ++;
|
|
|
- if(num_page == 0){
|
|
|
- num_page = 0;
|
|
|
- num_page_temp = 1;
|
|
|
- start = true;
|
|
|
- xReturn = pdFALSE;
|
|
|
- }
|
|
|
- else{
|
|
|
- xReturn = pdTRUE;
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- xReturn = pdFALSE;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskHistoryCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ uint8_t i;
|
|
|
+ static int16_t num_page = 0;
|
|
|
+ static int16_t num_page_temp = 1;
|
|
|
+ static bool start = true;
|
|
|
+
|
|
|
+ const int8_t *const pcUPShistoryTableHeader = ( int8_t * )
|
|
|
+ "\r\n***********Журнал событий ИБП***********\r\n";
|
|
|
+ const int8_t *const pcControllerHistoryTableHeader = ( int8_t * )
|
|
|
+ "\r\n***********Журнал событий Контроллера***********\r\n";
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, "show", xParameterStringLength ) != 0 ) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_HISTORY_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, history_args_list[i], strlen(history_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > 5) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+
|
|
|
+ if (num_page == 0) {
|
|
|
+ num_page = atoi(str);
|
|
|
+ if (num_page <= 0) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ switch (i) {
|
|
|
+ case ARG_HISTORY_EVENTS:
|
|
|
+ if (start) {
|
|
|
+ start = false;
|
|
|
+ /* Return the next command help string, before moving the pointer on to
|
|
|
+ the next command in the list. */
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcControllerHistoryTableHeader,
|
|
|
+ strlen( ( char * ) pcControllerHistoryTableHeader ) );
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
+ sprintf(str, "Количество страниц журнала: %d\r\n", History_GetPageCount());
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, strlen(str));
|
|
|
+ strcat(( char * ) pcWriteBuffer, "\r\n");
|
|
|
+
|
|
|
+ if (num_page > History_GetPageCount()) {
|
|
|
+ num_page = History_GetPageCount();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ History_GetPage_tabs(( char * ) pcWriteBuffer, num_page_temp);
|
|
|
+
|
|
|
+ num_page --;
|
|
|
+ num_page_temp ++;
|
|
|
+ if (num_page == 0) {
|
|
|
+ num_page = 0;
|
|
|
+ num_page_temp = 1;
|
|
|
+ start = true;
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ } else {
|
|
|
+ xReturn = pdTRUE;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_HISTORY_UPS:
|
|
|
+ if (start) {
|
|
|
+ start = false;
|
|
|
+ /* Return the next command help string, before moving the pointer on to
|
|
|
+ the next command in the list. */
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcUPShistoryTableHeader,
|
|
|
+ strlen( ( char * ) pcUPShistoryTableHeader ) );
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ sprintf(str, "Количество страниц журнала: %d\r\n", LOG_GetPageCount());
|
|
|
+ strncat(( char * ) pcWriteBuffer, str, strlen(str));
|
|
|
+
|
|
|
+ if (num_page > LOG_GetPageCount()) {
|
|
|
+ num_page = LOG_GetPageCount();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ LOG_GetPage_tabs(( char * ) pcWriteBuffer, num_page_temp);
|
|
|
+
|
|
|
+ num_page --;
|
|
|
+ num_page_temp ++;
|
|
|
+ if (num_page == 0) {
|
|
|
+ num_page = 0;
|
|
|
+ num_page_temp = 1;
|
|
|
+ start = true;
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ } else {
|
|
|
+ xReturn = pdTRUE;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ xReturn = pdFALSE;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the sensor info command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- uint8_t i;
|
|
|
- char str[10];
|
|
|
- char temp_str[10];
|
|
|
- int32_t val = 0, val2 = 0;
|
|
|
- uint8_t fail = 0;
|
|
|
- static uint8_t config_menu = 0;
|
|
|
- uint8_t MAX_CONFIG_PARAM = 0;
|
|
|
+static portBASE_TYPE prvTaskSensorCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ uint8_t i;
|
|
|
+ char str[10];
|
|
|
+ char temp_str[10];
|
|
|
+ int32_t val = 0, val2 = 0;
|
|
|
+ uint8_t fail = 0;
|
|
|
+ static uint8_t config_menu = 0;
|
|
|
+ uint8_t MAX_CONFIG_PARAM = 0;
|
|
|
|
|
|
#ifdef HARDWARE_BT6707
|
|
|
- MAX_CONFIG_PARAM = 3;
|
|
|
+ MAX_CONFIG_PARAM = 3;
|
|
|
#else
|
|
|
- MAX_CONFIG_PARAM = 2;
|
|
|
+ MAX_CONFIG_PARAM = 2;
|
|
|
#endif
|
|
|
|
|
|
- const int8_t * const pcSensorTableHeader = ( int8_t * ) "\r\n*********Параметры Контроллера*********\r\n";
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- for(i = 0; i < ARG_SENSOR_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, sensor_args_list[i], strlen(sensor_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- if(pcParameterString == NULL){
|
|
|
- if(i == ARG_SENSOR_INFO){
|
|
|
- switch(config_menu){
|
|
|
- case 0:
|
|
|
- /* Return the next command help string, before moving the pointer on to
|
|
|
- the next command in the list. */
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcSensorTableHeader, strlen( ( char * ) pcSensorTableHeader ) );
|
|
|
- ups_sensor_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- ups_sensor_akb_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
+ const int8_t *const pcSensorTableHeader = ( int8_t * )
|
|
|
+ "\r\n*********Параметры Контроллера*********\r\n";
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < ARG_SENSOR_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, sensor_args_list[i], strlen(sensor_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ if (pcParameterString == NULL) {
|
|
|
+ if (i == ARG_SENSOR_INFO) {
|
|
|
+ switch (config_menu) {
|
|
|
+ case 0:
|
|
|
+ /* Return the next command help string, before moving the pointer on to
|
|
|
+ the next command in the list. */
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcSensorTableHeader, strlen( ( char * ) pcSensorTableHeader ) );
|
|
|
+ ups_sensor_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ ups_sensor_akb_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
#ifdef HARDWARE_BT6707
|
|
|
- case 2:
|
|
|
- inouts_sensor_param(pcWriteBuffer);
|
|
|
- break;
|
|
|
+ case 2:
|
|
|
+ inouts_sensor_param(pcWriteBuffer);
|
|
|
+ break;
|
|
|
#endif
|
|
|
- }
|
|
|
-
|
|
|
- config_menu ++;
|
|
|
- if(config_menu == MAX_CONFIG_PARAM){
|
|
|
- config_menu = 0;
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- else{
|
|
|
- return pdTRUE;
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- switch(i){
|
|
|
+ }
|
|
|
+
|
|
|
+ config_menu ++;
|
|
|
+ if (config_menu == MAX_CONFIG_PARAM) {
|
|
|
+ config_menu = 0;
|
|
|
+ return pdFALSE;
|
|
|
+ } else {
|
|
|
+ return pdTRUE;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ switch (i) {
|
|
|
#ifdef HARDWARE_BT6707
|
|
|
- case ARG_SENSOR_SETUP:
|
|
|
- if(telnet_code_auth != ADMIN){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > (int32_t)sizeof(str))
|
|
|
- xParameterStringLength = sizeof(str) - 1;
|
|
|
- strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- if(xParameterStringLength < 3){
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- memset(temp_str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > 1){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- strncat(temp_str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- if(!isdigit_int(temp_str[0])){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- val = atoi(temp_str);
|
|
|
-
|
|
|
- xParameterNumber ++;
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- memset(temp_str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > 1){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- strncat(temp_str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
- if(!isdigit_int(temp_str[0])){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- if(strncmp(str, "DI", 2) == 0){
|
|
|
- if(val != 1){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- val2 = atoi(temp_str);
|
|
|
- if(val2 < 0 || val2 > 1){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- SetDINTypeActStr(temp_str, (val - 1));
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
-
|
|
|
- }
|
|
|
- else if(strncmp(str, "DO", 2) == 0){
|
|
|
- if(val < 1 || val > 3){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- val2 = atoi(temp_str);
|
|
|
- if(val2 < 1 || val2 > 5){
|
|
|
- fail = 1;
|
|
|
- break;
|
|
|
- }
|
|
|
- SetROTypeActStr(temp_str, (val - 1));
|
|
|
- SETTINGS_Save();
|
|
|
- log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- fail = 1;
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
+ case ARG_SENSOR_SETUP:
|
|
|
+ if (telnet_code_auth != ADMIN) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > (int32_t)sizeof(str)) {
|
|
|
+ xParameterStringLength = sizeof(str) - 1;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ if (xParameterStringLength < 3) {
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ memset(temp_str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > 1) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ strncat(temp_str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ if (!isdigit_int(temp_str[0])) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ val = atoi(temp_str);
|
|
|
+
|
|
|
+ xParameterNumber ++;
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ memset(temp_str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > 1) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ strncat(temp_str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+ if (!isdigit_int(temp_str[0])) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (strncmp(str, "DI", 2) == 0) {
|
|
|
+ if (val != 1) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ val2 = atoi(temp_str);
|
|
|
+ if (val2 < 0 || val2 > 1) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ SetDINTypeActStr(temp_str, (val - 1));
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+
|
|
|
+ } else if (strncmp(str, "DO", 2) == 0) {
|
|
|
+ if (val < 1 || val > 3) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ val2 = atoi(temp_str);
|
|
|
+ if (val2 < 1 || val2 > 5) {
|
|
|
+ fail = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ SetROTypeActStr(temp_str, (val - 1));
|
|
|
+ SETTINGS_Save();
|
|
|
+ log_event_data(LOG_SETTING_SAVE, name_login_telnet);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ fail = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
#endif
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if(fail)
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ if (fail) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
|
|
|
- xReturn = pdFALSE;
|
|
|
+ xReturn = pdFALSE;
|
|
|
|
|
|
|
|
|
- return xReturn;
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the firmware download http command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskUploadCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- static bool start_update = true;
|
|
|
- const int8_t *const pcUploadHeader = ( int8_t * ) "Контроллер переводится в режим загрузчика\r\n";
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- if(start_update){
|
|
|
- start_update = false;
|
|
|
- strcpy( ( char * ) pcWriteBuffer, ( char * ) pcUploadHeader );
|
|
|
- return pdTRUE;
|
|
|
- }
|
|
|
- else{
|
|
|
- telnet_act = true;
|
|
|
- HTTP_StartResetTask(true);
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
+static portBASE_TYPE prvTaskUploadCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen,
|
|
|
+ const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ static bool start_update = true;
|
|
|
+ const int8_t *const pcUploadHeader = ( int8_t * )
|
|
|
+ "Контроллер переводится в режим загрузчика\r\n";
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (start_update) {
|
|
|
+ start_update = false;
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, ( char * ) pcUploadHeader );
|
|
|
+ return pdTRUE;
|
|
|
+ } else {
|
|
|
+ telnet_act = true;
|
|
|
+ HTTP_StartResetTask(true);
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
* Implements the ups command.
|
|
|
*/
|
|
|
-static portBASE_TYPE prvTaskUPSCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString ){
|
|
|
- int8_t *pcParameterString;
|
|
|
- signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
- portBASE_TYPE xParameterNumber = 1;
|
|
|
- char str[110];
|
|
|
- int32_t val = 0;
|
|
|
- float val_float = 0;
|
|
|
- int8_t res = 0;
|
|
|
- uint8_t i;
|
|
|
-
|
|
|
- ( void ) pcCommandString;
|
|
|
- ( void ) xWriteBufferLen;
|
|
|
- configASSERT( pcWriteBuffer );
|
|
|
-
|
|
|
- memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
-
|
|
|
- if(telnet_code_auth != ADMIN && i !=ARG_CONFIG_INFO){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
-
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- for(i = 0; i < ARG_UPS_ALL; i ++){
|
|
|
- if( strncmp( ( const char * ) pcParameterString, ups_args_list[i], strlen(ups_args_list[i]) ) == 0 ){
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- xParameterNumber ++;
|
|
|
-
|
|
|
- /* Obtain the parameter string. */
|
|
|
- pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
- (
|
|
|
- pcCommandString, /* The command string itself. */
|
|
|
- xParameterNumber, /* Return the next parameter. */
|
|
|
- &xParameterStringLength /* Store the parameter string length. */
|
|
|
- );
|
|
|
- memset(str, 0, sizeof(str));
|
|
|
- if(xParameterStringLength > 3){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
-
|
|
|
- switch(i){
|
|
|
- case ARG_UPS_BATTEST:
|
|
|
- for(uint8_t j = 0; j < xParameterStringLength; j++){
|
|
|
- if(!isdigit_int(str[j])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- val = atoi(str);
|
|
|
- if(val == 0){
|
|
|
- res = ups_metac_service_pdu(ups_cancel_test);
|
|
|
- if(res == 1){
|
|
|
- log_event_data(LOG_TEST_UPS, "Администратор (Останов)");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест остановлен!\r\n");
|
|
|
- }
|
|
|
- else{
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось остановить!\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- else if(val > 0 && val < 100){
|
|
|
- TimeParam = val;
|
|
|
- res = ups_metac_service_pdu(ups_test_time);
|
|
|
- if(res == 1){
|
|
|
- log_event_data(LOG_TEST_UPS, "Администратор (Запущен)");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест запущен!\r\n");
|
|
|
- }
|
|
|
- else{
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось запустить!\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- else if(val == 100){
|
|
|
- res = ups_metac_service_pdu(ups_test_10sec);
|
|
|
- if(res == 1){
|
|
|
- log_event_data(LOG_TEST_UPS, "Администратор (Запущен)");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест запущен!\r\n");
|
|
|
- }
|
|
|
- else{
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось запустить!\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- else if(val == 999){
|
|
|
- res = ups_metac_service_pdu(ups_test_low_bat);
|
|
|
- if(res == 1){
|
|
|
- log_event_data(LOG_TEST_UPS, "Администратор (Запущен)");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест запущен!\r\n");
|
|
|
- }
|
|
|
- else{
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось запустить!\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- case ARG_UPS_SHUTDOWN:
|
|
|
- for(uint8_t j = 0; j < xParameterStringLength; j++){
|
|
|
- if(!isfloatdigit(str[j])){
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- return pdFALSE;
|
|
|
- }
|
|
|
- }
|
|
|
- val_float = atof(str);
|
|
|
- if(val_float == 0){
|
|
|
- res = ups_metac_service_pdu(ups_cancel_shut_down);
|
|
|
- if(res == 1){
|
|
|
- log_event_data(LOG_SHUTDOWN_UPS, "Администратор (Останов)");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\t\tВыключение нагрузки ИБП отменено!\r\n");
|
|
|
- }
|
|
|
- else{
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tВыключение нагрузки ИБП не удалось отменить!\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- else if(val_float > 0 && val_float <= 10){
|
|
|
- TimeParamFloat = val_float;
|
|
|
- res = ups_metac_service_pdu(ups_shutdown);
|
|
|
- if(res == 1){
|
|
|
- log_event_data(LOG_SHUTDOWN_UPS, "Администратор");
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tОтключение нагрузки ИБП!\r\n");
|
|
|
- }
|
|
|
- else{
|
|
|
- strcpy( ( char * ) pcWriteBuffer, "\t\tОтключение нагрузки ИБП не удалось!\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- }
|
|
|
- break;
|
|
|
- default:
|
|
|
- strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
- break;
|
|
|
- }
|
|
|
- xReturn = pdFALSE;
|
|
|
-
|
|
|
- return xReturn;
|
|
|
+static portBASE_TYPE prvTaskUPSCommand( int8_t *pcWriteBuffer, size_t xWriteBufferLen, const int8_t *pcCommandString )
|
|
|
+{
|
|
|
+ int8_t *pcParameterString;
|
|
|
+ signed portBASE_TYPE xParameterStringLength, xReturn;
|
|
|
+ portBASE_TYPE xParameterNumber = 1;
|
|
|
+ char str[110];
|
|
|
+ int32_t val = 0;
|
|
|
+ float val_float = 0;
|
|
|
+ int8_t res = 0;
|
|
|
+ uint8_t i;
|
|
|
+
|
|
|
+ ( void ) pcCommandString;
|
|
|
+ ( void ) xWriteBufferLen;
|
|
|
+ configASSERT( pcWriteBuffer );
|
|
|
+
|
|
|
+ memset(pcWriteBuffer, 0, configCOMMAND_INT_MAX_OUTPUT_SIZE);
|
|
|
+
|
|
|
+ if (telnet_code_auth != ADMIN && i != ARG_CONFIG_INFO) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcPermissionDenied, strlen( ( char * ) pcPermissionDenied ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ for (i = 0; i < ARG_UPS_ALL; i ++) {
|
|
|
+ if ( strncmp( ( const char * ) pcParameterString, ups_args_list[i], strlen(ups_args_list[i]) ) == 0 ) {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ xParameterNumber ++;
|
|
|
+
|
|
|
+ /* Obtain the parameter string. */
|
|
|
+ pcParameterString = ( int8_t * ) FreeRTOS_CLIGetParameter
|
|
|
+ (
|
|
|
+ pcCommandString, /* The command string itself. */
|
|
|
+ xParameterNumber, /* Return the next parameter. */
|
|
|
+ &xParameterStringLength /* Store the parameter string length. */
|
|
|
+ );
|
|
|
+ memset(str, 0, sizeof(str));
|
|
|
+ if (xParameterStringLength > 3) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ strncat(str, ( const char * ) pcParameterString, xParameterStringLength);
|
|
|
+
|
|
|
+ switch (i) {
|
|
|
+ case ARG_UPS_BATTEST:
|
|
|
+ for (uint8_t j = 0; j < xParameterStringLength; j++) {
|
|
|
+ if (!isdigit_int(str[j])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ val = atoi(str);
|
|
|
+ if (val == 0) {
|
|
|
+ res = ups_metac_service_pdu(ups_cancel_test);
|
|
|
+ if (res == 1) {
|
|
|
+ log_event_data(LOG_TEST_UPS, "Администратор (Останов)");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест остановлен!\r\n");
|
|
|
+ } else {
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось остановить!\r\n");
|
|
|
+ }
|
|
|
+ } else if (val > 0 && val < 100) {
|
|
|
+ TimeParam = val;
|
|
|
+ res = ups_metac_service_pdu(ups_test_time);
|
|
|
+ if (res == 1) {
|
|
|
+ log_event_data(LOG_TEST_UPS, "Администратор (Запущен)");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест запущен!\r\n");
|
|
|
+ } else {
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось запустить!\r\n");
|
|
|
+ }
|
|
|
+ } else if (val == 100) {
|
|
|
+ res = ups_metac_service_pdu(ups_test_10sec);
|
|
|
+ if (res == 1) {
|
|
|
+ log_event_data(LOG_TEST_UPS, "Администратор (Запущен)");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест запущен!\r\n");
|
|
|
+ } else {
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось запустить!\r\n");
|
|
|
+ }
|
|
|
+ } else if (val == 999) {
|
|
|
+ res = ups_metac_service_pdu(ups_test_low_bat);
|
|
|
+ if (res == 1) {
|
|
|
+ log_event_data(LOG_TEST_UPS, "Администратор (Запущен)");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест запущен!\r\n");
|
|
|
+ } else {
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tТест не удалось запустить!\r\n");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ARG_UPS_SHUTDOWN:
|
|
|
+ for (uint8_t j = 0; j < xParameterStringLength; j++) {
|
|
|
+ if (!isfloatdigit(str[j])) {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ return pdFALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ val_float = atof(str);
|
|
|
+ if (val_float == 0) {
|
|
|
+ res = ups_metac_service_pdu(ups_cancel_shut_down);
|
|
|
+ if (res == 1) {
|
|
|
+ log_event_data(LOG_SHUTDOWN_UPS, "Администратор (Останов)");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\t\tВыключение нагрузки ИБП отменено!\r\n");
|
|
|
+ } else {
|
|
|
+ strcpy( ( char * ) pcWriteBuffer,
|
|
|
+ "\t\tВыключение нагрузки ИБП не удалось отменить!\r\n");
|
|
|
+ }
|
|
|
+ } else if (val_float > 0 && val_float <= 10) {
|
|
|
+ TimeParamFloat = val_float;
|
|
|
+ res = ups_metac_service_pdu(ups_shutdown);
|
|
|
+ if (res == 1) {
|
|
|
+ log_event_data(LOG_SHUTDOWN_UPS, "Администратор");
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tОтключение нагрузки ИБП!\r\n");
|
|
|
+ } else {
|
|
|
+ strcpy( ( char * ) pcWriteBuffer, "\t\tОтключение нагрузки ИБП не удалось!\r\n");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strncpy( ( char * ) pcWriteBuffer, ( const char * ) pcInvalidCommand, strlen( ( char * ) pcInvalidCommand ) );
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ xReturn = pdFALSE;
|
|
|
+
|
|
|
+ return xReturn;
|
|
|
}
|
|
|
|
|
|
/*-----------------------------------------------------------*/
|