/* * 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 ); }