Added clear support and cleaned up code
This commit is contained in:
@@ -9,213 +9,187 @@
|
||||
uint32_t result_txt = 0xff000000;
|
||||
uint32_t result_bg = 0xff000000;
|
||||
|
||||
|
||||
static void echo_close (struct tcp_pcb *pcb )
|
||||
{
|
||||
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 )
|
||||
{
|
||||
static err_t echo_recv(void* arg, struct tcp_pcb* pcb, struct pbuf* p, err_t err) {
|
||||
int i;
|
||||
int len;
|
||||
int file_in_fs;
|
||||
|
||||
u16_t len_text;
|
||||
char *pc;
|
||||
int check = 0;
|
||||
|
||||
char *pc;
|
||||
char tcp_buffer[1024];
|
||||
char text[256];
|
||||
char colorR[3];
|
||||
char colorG[3];
|
||||
char colorB[3];
|
||||
char color_r[3];
|
||||
char color_g[3];
|
||||
char color_b[3];
|
||||
|
||||
|
||||
char textColorR[3];
|
||||
char textColorG[3];
|
||||
char textColorB[3];
|
||||
char text_color_r[3];
|
||||
char text_color_g[3];
|
||||
char text_color_b[3];
|
||||
|
||||
char extension[4];
|
||||
|
||||
char *endptr;
|
||||
|
||||
if ( err == ERR_OK && p != NULL )
|
||||
{
|
||||
tcp_recved( pcb, p->tot_len );
|
||||
pc = (char *)p->payload;
|
||||
len =p->tot_len;
|
||||
len_text = len - 3;
|
||||
if (err == ERR_OK && p != NULL) {
|
||||
tcp_recved(pcb, p->tot_len);
|
||||
pc = (char*)p->payload;
|
||||
len = p->tot_len;
|
||||
|
||||
for( i=0; i<len; i++ )
|
||||
{
|
||||
for (i = 0; i < len; i++) {
|
||||
tcp_buffer[i] = pc[i];
|
||||
}
|
||||
|
||||
if (strncmp(tcp_buffer, "help", 4) == 0) {
|
||||
check = 1;
|
||||
tcp_write( pcb, "help : laat lijst zien met alle commando's\r\n"
|
||||
"text : geeft tekst mee die op LCD komt (uw_text)\r\n"
|
||||
"color : kleur achtergrond van scherm (255 255 255)\r\n"
|
||||
"textColor : kleur van tekst (255 255 255)\r\n"
|
||||
"listImages: laat een lijst zien van de mogelijke afbeeldingen\r\n"
|
||||
"setImage : veranderd te afbeelding (naam_afbeelding)\r\n"
|
||||
"exit : sluit de verbinding\r\n", 354, 0 );
|
||||
tcp_output(pcb);
|
||||
}
|
||||
else if( strncmp(tcp_buffer, "text ", 5) == 0 ) {
|
||||
for (i = 0; i < len - 4; i++){
|
||||
text[i] = tcp_buffer[i + 5];
|
||||
}
|
||||
text[i-1]='\0';
|
||||
lcd_clear_text(void);
|
||||
lcd_display_text(text, 10, 10, result_txt, result_bg, LCD_FONT16);
|
||||
check = 1;
|
||||
tcp_write(pcb, "help : laat lijst zien met alle commando's\r\n"
|
||||
"text : geeft tekst mee die op LCD komt (uw_text)\r\n"
|
||||
"color : kleur achtergrond van scherm (255 255 255)\r\n"
|
||||
"textColor : kleur van tekst (255 255 255)\r\n"
|
||||
"listImages: laat een lijst zien van de mogelijke afbeeldingen\r\n"
|
||||
"setImage : veranderd te afbeelding (naam_afbeelding)\r\n"
|
||||
"exit : sluit de verbinding\r\n", 354, 0);
|
||||
tcp_output(pcb);
|
||||
} else if (strncmp(tcp_buffer, "text ", 5) == 0) {
|
||||
for (i = 0; i < len - 4; i++) {
|
||||
text[i] = tcp_buffer[i + 5];
|
||||
}
|
||||
text[i - 1] = '\0';
|
||||
lcd_clear_text();
|
||||
lcd_display_text(text, 10, 10, result_txt, LCD_FONT16);
|
||||
|
||||
check = 1;
|
||||
}
|
||||
else if( strncmp(tcp_buffer, "color", 5) == 0 ) {
|
||||
for (i = 0; i < 3; i++){
|
||||
colorR[i] = tcp_buffer[i + 6];
|
||||
colorG[i] = tcp_buffer[i + 10];
|
||||
colorB[i] = tcp_buffer[i + 14];
|
||||
}
|
||||
result_txt |= strtoul(colorR, &endptr, 10) << 16;
|
||||
result_txt |= strtoul(colorG, &endptr, 10) << 8;
|
||||
result_txt |= strtoul(colorB, &endptr, 10);
|
||||
check = 1;
|
||||
} else if (strncmp(tcp_buffer, "color", 5) == 0) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
color_r[i] = tcp_buffer[i + 6];
|
||||
color_g[i] = tcp_buffer[i + 10];
|
||||
color_b[i] = tcp_buffer[i + 14];
|
||||
}
|
||||
result_bg |= strtoul(color_r, &endptr, 10) << 16;
|
||||
result_bg |= strtoul(color_g, &endptr, 10) << 8;
|
||||
result_bg |= strtoul(color_b, &endptr, 10);
|
||||
|
||||
check = 1;
|
||||
} else if (strncmp(tcp_buffer, "textColor", 9) == 0) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
text_color_r[i] = tcp_buffer[i + 10];
|
||||
text_color_g[i] = tcp_buffer[i + 14];
|
||||
text_color_b[i] = tcp_buffer[i + 18];
|
||||
}
|
||||
result_txt |= strtoul(text_color_r, &endptr, 10) << 16;
|
||||
result_txt |= strtoul(text_color_g, &endptr, 10) << 8;
|
||||
result_txt |= strtoul(text_color_b, &endptr, 10);
|
||||
|
||||
check = 1;
|
||||
}
|
||||
else if( strncmp(tcp_buffer, "textColor", 9) == 0 ) {
|
||||
for (i = 0; i < 3; i++){
|
||||
textColorR[i] = tcp_buffer[i + 10];
|
||||
textColorG[i] = tcp_buffer[i + 14];
|
||||
textColorB[i] = tcp_buffer[i + 18];
|
||||
}
|
||||
result_bg |= strtoul(textColorR, &endptr, 10) << 16;
|
||||
result_bg |= strtoul(textColorG, &endptr, 10) << 8;
|
||||
result_bg |= strtoul(textColorB, &endptr, 10);
|
||||
check = 1;
|
||||
} else if (strncmp(tcp_buffer, "listImages", 10) == 0) {
|
||||
size_t number_of_files = llfs_file_count();
|
||||
|
||||
check = 1;
|
||||
}
|
||||
else if( strncmp(tcp_buffer, "listImages", 10) == 0 ) {
|
||||
size_t number_of_files = llfs_file_count();
|
||||
llfs_file_t file_list[number_of_files];
|
||||
|
||||
llfs_file_t file_list[number_of_files];
|
||||
number_of_files = llfs_file_list(file_list, number_of_files, NULL);
|
||||
|
||||
number_of_files = llfs_file_list(file_list, number_of_files, NULL);
|
||||
for (int i = 0; i < number_of_files; i++) {
|
||||
tcp_write(pcb, file_list[i].name, strlen(file_list[i].name), TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
tcp_write(pcb, "\r\n", 2, TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
}
|
||||
|
||||
check = 1;
|
||||
} else if (strncmp(tcp_buffer, "setImage", 8) == 0) {
|
||||
char filename[len - 8];
|
||||
for (int i = 0; i < len - 9; i++) {
|
||||
filename[i] = tcp_buffer[i + 9];
|
||||
}
|
||||
for (int i = 0; i < 3; i++) {
|
||||
extension[i] = tcp_buffer[i + len - 3];
|
||||
}
|
||||
filename[sizeof(filename) - 1] = '\0';
|
||||
extension[3] = '\0';
|
||||
|
||||
for(int i = 0; i < number_of_files; i++){
|
||||
tcp_write( pcb, file_list[i].name, strlen(file_list[i].name), TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
tcp_write( pcb, "\r\n", 2, TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
}
|
||||
size_t number_of_files = llfs_file_count();
|
||||
|
||||
check = 1;
|
||||
}
|
||||
else if( strncmp(tcp_buffer, "setImage", 8) == 0 ) {
|
||||
char filename[len - 8];
|
||||
for (int i = 0; i < len - 9; i++) {
|
||||
filename[i] = tcp_buffer[i+9];
|
||||
}
|
||||
for (int i = 0; i < 3; i++) {
|
||||
extension[i] = tcp_buffer[i + len - 3];
|
||||
}
|
||||
filename[sizeof(filename)-1] = '\0';
|
||||
extension[3] = '\0';
|
||||
llfs_file_t file_list[number_of_files];
|
||||
|
||||
size_t number_of_files = llfs_file_count();
|
||||
number_of_files = llfs_file_list(file_list, number_of_files, NULL);
|
||||
|
||||
llfs_file_t file_list[number_of_files];
|
||||
file_in_fs = 0;
|
||||
for (int i = 0; i < number_of_files; i++) {
|
||||
if (strcmp(filename, file_list[i].name) == 0) {
|
||||
file_in_fs = 1;
|
||||
}
|
||||
}
|
||||
|
||||
number_of_files = llfs_file_list(file_list, number_of_files, NULL);
|
||||
// Check which file extension is used and call right function
|
||||
if (strncmp(extension, "bmp", 3) == 0 && file_in_fs == 1) {
|
||||
lcd_clear_images();
|
||||
lcd_draw_img_from_fs(filename, 10, 10);
|
||||
} else if (strncmp(extension, "gif", 3) == 0 && file_in_fs == 1) {
|
||||
lcd_clear_images();
|
||||
lcd_draw_gif_from_fs(filename, 10, 10);
|
||||
} else if (file_in_fs == 0) {
|
||||
tcp_write(pcb, "File NOT in filesystem\n\r", 24, TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
} else {
|
||||
tcp_write(pcb, "Extension NOT supported\n\r", 25, TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
}
|
||||
|
||||
file_in_fs = 0;
|
||||
for (int i = 0; i < number_of_files; i ++) {
|
||||
if (strcmp(filename, file_list[i].name) == 0) {
|
||||
file_in_fs = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Check which file extension is used and call right function
|
||||
if (strncmp(extension, "bmp", 3) == 0 && file_in_fs == 1) {
|
||||
lcd_clear_images(void);
|
||||
lcd_draw_img_from_fs(filename, 10, 10);
|
||||
}
|
||||
else if (strncmp(extension, "gif", 3) == 0 && file_in_fs == 1) {
|
||||
lcd_clear_images(void);
|
||||
lcd_draw_gif_from_fs(filename, 10, 10);
|
||||
}
|
||||
else if (file_in_fs == 0){
|
||||
tcp_write( pcb, "File NOT in filesystem\n\r", 24, TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
}
|
||||
else{
|
||||
tcp_write( pcb, "Extension NOT supported\n\r", 25, TCP_WRITE_FLAG_COPY | TCP_WRITE_FLAG_MORE);
|
||||
}
|
||||
|
||||
check = 1;
|
||||
}
|
||||
else if( strncmp(tcp_buffer, "exit", 4) == 0 ) {
|
||||
echo_close( pcb );
|
||||
check = 1;
|
||||
} else if (strncmp(tcp_buffer, "exit", 4) == 0) {
|
||||
echo_close(pcb);
|
||||
check = 1;
|
||||
}
|
||||
|
||||
if(check == 0 && (strncmp(tcp_buffer, "\r\n", 2) != 0 )) {
|
||||
tcp_write( pcb, "Onbestaand commando: help voor lijst van commando's\r\n", 53, 0 );
|
||||
if (check == 0 && (strncmp(tcp_buffer, "\r\n", 2) != 0)) {
|
||||
tcp_write(pcb, "Onbestaand commando: help voor lijst van commando's\r\n", 53, 0);
|
||||
}
|
||||
|
||||
pbuf_free( p );
|
||||
pbuf_free(p);
|
||||
|
||||
if( len > tcp_sndbuf( pcb ) ) {
|
||||
len= tcp_sndbuf( pcb );
|
||||
if (len > tcp_sndbuf(pcb)) {
|
||||
len = tcp_sndbuf(pcb);
|
||||
}
|
||||
|
||||
//tcp_write( pcb, tcp_buffer, len, 0 );
|
||||
tcp_sent( pcb, NULL );
|
||||
}
|
||||
else
|
||||
{
|
||||
pbuf_free( p );
|
||||
tcp_sent(pcb, NULL);
|
||||
} else {
|
||||
pbuf_free(p);
|
||||
}
|
||||
|
||||
if( err == ERR_OK && p == NULL )
|
||||
{
|
||||
echo_close( pcb );
|
||||
if (err == ERR_OK && p == NULL) {
|
||||
echo_close(pcb);
|
||||
}
|
||||
if(strncmp(tcp_buffer, "\r\n", 2) != 0 ) {
|
||||
tcp_write( pcb, "User: ", 6, 0 );
|
||||
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 );
|
||||
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 )
|
||||
{
|
||||
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 );
|
||||
tcp_pcb = tcp_listen(tcp_pcb);
|
||||
tcp_accept(tcp_pcb, echo_accept);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user