diff --git a/project/Core/Inc/cmd.h b/project/Core/Inc/cmd.h new file mode 100644 index 0000000..bbdf54f --- /dev/null +++ b/project/Core/Inc/cmd.h @@ -0,0 +1,15 @@ +/* + * cmd.h + * + * Created on: 13 Nov 2023 + * Author: gertr + */ + +#ifndef INC_CMD_H_ +#define INC_CMD_H_ + + +void echo_init( void ); + + +#endif /* INC_CMD_H_ */ diff --git a/project/Core/Src/cmd.c b/project/Core/Src/cmd.c new file mode 100644 index 0000000..02e6ec3 --- /dev/null +++ b/project/Core/Src/cmd.c @@ -0,0 +1,163 @@ +/* + * cmd.c + * + * Created on: 13 Nov 2023 + * Author: gertr + */ + + + +#include "cmd.h" +#include "log.h" +#include +#include +#include + + +static void echo_close (struct tcp_pcb *pcb ) +{ + tcp_arg(pcb, NULL); + tcp_sent(pcb, NULL); + tcp_recv(pcb, NULL); + tcp_close(pcb); +} + +static err_t echo_recv( void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err ) +{ + int i; + int len; + u16_t len_text; + char *pc; + int check = 0; + + char tcp_buffer[1024]; + char text[256]; + char color[11]; + char textColor[11]; + + if ( err == ERR_OK && p != NULL ) + { + tcp_recved( pcb, p->tot_len ); + pc = (char *)p->payload; + len =p->tot_len; + len_text = len - 3; + + for( i=0; i tcp_sndbuf( pcb ) ) { + len= tcp_sndbuf( pcb ); + } + + //tcp_write( pcb, tcp_buffer, len, 0 ); + tcp_sent( pcb, NULL ); + } + else + { + pbuf_free( p ); + } + + if( err == ERR_OK && p == NULL ) + { + echo_close( pcb ); + } + if(strncmp(tcp_buffer, "\r\n", 2) != 0 ) { + tcp_write( pcb, "User: ", 6, 0 ); + } + + return ERR_OK; +} + +static err_t echo_accept(void *arg, struct tcp_pcb *pcb, err_t err ) +{ + LWIP_UNUSED_ARG( arg ); + LWIP_UNUSED_ARG( err ); + tcp_setprio( pcb, TCP_PRIO_MIN ); + tcp_recv( pcb, echo_recv ); + tcp_err( pcb, NULL ); + tcp_poll( pcb, NULL, 4 ); + tcp_write( pcb, " Welcom bij de TCP CMD Interface\r\n" +"(Typ help voor een lijst van de commando's! X om te sluiten)\r\n" +"============================================================\r\n" +"User: ", 168, 0 ); + tcp_sent( pcb, NULL ); + return ERR_OK; +} + +void echo_init( void ) +{ + struct tcp_pcb *tcp_pcb; + tcp_pcb = tcp_new(); + tcp_bind(tcp_pcb, IP_ADDR_ANY, 23); + + tcp_pcb = tcp_listen( tcp_pcb ); + tcp_accept( tcp_pcb, echo_accept ); +} + diff --git a/project/Core/Src/main.c b/project/Core/Src/main.c index 5207490..ee5f860 100644 --- a/project/Core/Src/main.c +++ b/project/Core/Src/main.c @@ -35,6 +35,10 @@ #include "tcp_cmd.h" #include "website_backend.h" +#include "cmd.h" +#include +#include +#include /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/