|
@@ -53,7 +53,7 @@ void SensorInfoTimerCallback(TimerHandle_t pxTimer) {
|
|
|
xTimerStart(cli_states[num_timer].RepeatSensorInfoTimer, 0);
|
|
|
}
|
|
|
|
|
|
-static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, cli_state_t *s )
|
|
|
+static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, cli_state_t *s)
|
|
|
{
|
|
|
portBASE_TYPE xReturn = pdTRUE;
|
|
|
uint32_t len;
|
|
@@ -102,14 +102,14 @@ static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, cli_state_
|
|
|
strcpy( ( char * ) pcWriteBuffer, "\r\nАвторизация успешно пройдена\r\n>" );
|
|
|
s->input_state = CLI_CMD;
|
|
|
switch (user_id) {
|
|
|
- case 0:
|
|
|
- snprintf(name_login_telnet, sizeof(name_login_telnet), "Администратор");
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- snprintf(name_login_telnet, sizeof(name_login_telnet), "Пользователь");
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ case 0:
|
|
|
+ snprintf(name_login_telnet, sizeof(name_login_telnet), "Администратор");
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ snprintf(name_login_telnet, sizeof(name_login_telnet), "Пользователь");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
log_event_data(LOG_LOGIN_TELNET, name_login_telnet);
|
|
@@ -145,7 +145,7 @@ static portBASE_TYPE FreeRTOS_CLIAuthProcess( int8_t * pcWriteBuffer, cli_state_
|
|
|
return xReturn;
|
|
|
}
|
|
|
|
|
|
-static portBASE_TYPE FreeRTOS_ChangePWDProcess( int8_t * pcWriteBuffer, cli_state_t *s )
|
|
|
+static portBASE_TYPE FreeRTOS_ChangePWDProcess( int8_t * pcWriteBuffer, cli_state_t *s)
|
|
|
{
|
|
|
portBASE_TYPE xReturn = pdTRUE;
|
|
|
uint32_t len;
|
|
@@ -215,7 +215,7 @@ static void cli_input(cli_state_t *s)
|
|
|
}
|
|
|
break;
|
|
|
case CLI_CMD:
|
|
|
- /* The input string has been terminated. Was the
|
|
|
+ /* The input string has been terminated. Was the
|
|
|
input a quit command? */
|
|
|
if( strcmp( "quit", ( const char * ) s->buf ) == 0 )
|
|
|
{
|
|
@@ -248,7 +248,7 @@ static void cli_input(cli_state_t *s)
|
|
|
/* Ensure there is not a string lingering in
|
|
|
the output buffer. */
|
|
|
cOutputBuffer[ 0 ] = 0x00;
|
|
|
- // FIXME telnetState should go into the command processor
|
|
|
+ // FIXME telnetState should go into the command processor
|
|
|
//input_state = s->input_state;
|
|
|
xReturned = FreeRTOS_CLIProcessCommand(s, s->buf, cOutputBuffer, configCOMMAND_INT_MAX_OUTPUT_SIZE );
|
|
|
//s->input_state = input_state;
|
|
@@ -260,11 +260,9 @@ static void cli_input(cli_state_t *s)
|
|
|
strcpy( s->prev_cmd, s->buf );
|
|
|
memset( s->buf, 0x00, cmdMAX_INPUT_SIZE );
|
|
|
xTimerStart(s->RepeatSensorInfoTimer, 0);
|
|
|
- }
|
|
|
- else{
|
|
|
-
|
|
|
+ } else {
|
|
|
/* All the strings generated by the input
|
|
|
- command have been sent. Clear the input
|
|
|
+ command have been sent. Clear the input
|
|
|
string ready to receive the next command.
|
|
|
Remember the command that was just processed
|
|
|
first in case it is to be processed again. */
|
|
@@ -300,50 +298,53 @@ void cli_getchar(cli_state_t *s, char incoming_char)
|
|
|
}
|
|
|
|
|
|
|
|
|
- if(s->buf[s->bufptr] == ISO_nl ||
|
|
|
- s->buf[s->bufptr] == 0) {
|
|
|
- s->bufptr = 0;
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- if(s->buf[s->bufptr] == ISO_cr ||
|
|
|
- s->bufptr == sizeof(s->buf) - 1) {
|
|
|
- if(s->bufptr > 0) {
|
|
|
- s->buf[s->bufptr] = 0;
|
|
|
- }
|
|
|
- cli_input(s);
|
|
|
- s->bufptr = 0;
|
|
|
- } else if( s->buf[s->bufptr] == '\b' || s->buf[s->bufptr] == 0x7f)
|
|
|
- {
|
|
|
- /* Backspace was pressed. Erase the last
|
|
|
+ if(s->buf[s->bufptr] == ISO_nl || s->buf[s->bufptr] == 0) {
|
|
|
+ s->bufptr = 0;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(s->buf[s->bufptr] == ISO_cr || s->bufptr == sizeof(s->buf) - 1) {
|
|
|
+ if(s->bufptr > 0) {
|
|
|
+ s->buf[s->bufptr] = 0;
|
|
|
+ }
|
|
|
+ cli_input(s);
|
|
|
+ s->bufptr = 0;
|
|
|
+ } else if( s->buf[s->bufptr] == '\b' || s->buf[s->bufptr] == 0x7f) {
|
|
|
+ /* Backspace was pressed. Erase the last
|
|
|
character in the string - if any. */
|
|
|
- s->buf[s->bufptr] = '\0';
|
|
|
+ s->buf[s->bufptr] = '\0';
|
|
|
if( s->bufptr > 0 )
|
|
|
{
|
|
|
s->bufptr--;
|
|
|
s->buf[s->bufptr] = '\0';
|
|
|
}
|
|
|
+ } else if (s->buf[s->bufptr] == 0x03){
|
|
|
+ xTimerStop(s->RepeatSensorInfoTimer, 0);
|
|
|
+ s->flag_telnet_ip_option = true;
|
|
|
+ if(s->input_state != CLI_CHANGE_PWD && s->input_state != CLI_CHANGE_PWD_ACK)
|
|
|
+ s->send( s->num_connect, pcEndOfCommandOutputString, strlen( ( const char * ) pcEndOfCommandOutputString ));
|
|
|
+ } else {
|
|
|
+ ++s->bufptr;
|
|
|
}
|
|
|
- else if (s->buf[s->bufptr] == 0x03){
|
|
|
- xTimerStop(s->RepeatSensorInfoTimer, 0);
|
|
|
- s->flag_telnet_ip_option = true;
|
|
|
- if(s->input_state != CLI_CHANGE_PWD && s->input_state != CLI_CHANGE_PWD_ACK)
|
|
|
- s->send( s->num_connect, pcEndOfCommandOutputString, strlen( ( const char * ) pcEndOfCommandOutputString ));
|
|
|
- }
|
|
|
- else {
|
|
|
- ++s->bufptr;
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
#define array_len(x) (sizeof(x)/sizeof(x[0]))
|
|
|
|
|
|
cli_state_t *alloc_state(void)
|
|
|
{
|
|
|
- for (unsigned i = 0; i < array_len(cli_states); ++i) {
|
|
|
- if (cli_states[i].state == STATE_UNUSED) {
|
|
|
- cli_states[i].state = STATE_CLOSE;
|
|
|
- return &cli_states[i];
|
|
|
- }
|
|
|
- }
|
|
|
- return 0;
|
|
|
+ for (unsigned i = 0; i < array_len(cli_states); ++i) {
|
|
|
+ if (cli_states[i].state == STATE_UNUSED) {
|
|
|
+ cli_states[i].state = STATE_CLOSE;
|
|
|
+ return &cli_states[i];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+void cli_hello(cli_state_t *cli_state)
|
|
|
+{
|
|
|
+ cli_state->state = STATE_NORMAL;
|
|
|
+
|
|
|
+ const char hello[] = "hello\r\n>";
|
|
|
+ cli_state->send(cli_state->num_connect, hello, sizeof(hello));
|
|
|
}
|