From 398bb2efde2507b43e7830ab654b1e6de8e60448 Mon Sep 17 00:00:00 2001 From: Roelandts_Gert Date: Mon, 20 Nov 2023 15:40:57 +0100 Subject: [PATCH] Update to setImage command Added checks to see if file exist in filesystem and if extension is supported (bmp of gif) --- project/Core/Src/cmd.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/project/Core/Src/cmd.c b/project/Core/Src/cmd.c index 26cf5d0..5f7bcbe 100644 --- a/project/Core/Src/cmd.c +++ b/project/Core/Src/cmd.c @@ -29,6 +29,8 @@ static err_t echo_recv( void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t er { int i; int len; + int file_in_fs; + u16_t len_text; char *pc; int check = 0; @@ -44,6 +46,7 @@ static err_t echo_recv( void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t er char textColorG[3]; char textColorB[3]; + char extension[4]; char *endptr; @@ -124,8 +127,40 @@ static err_t echo_recv( void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t er 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'; - lcd_draw_img_from_fs(filename, 10, 10); + extension[3] = '\0'; + + size_t number_of_files = llfs_file_count(); + + llfs_file_t file_list[number_of_files]; + + number_of_files = llfs_file_list(file_list, number_of_files, NULL); + + 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_draw_img_from_fs(filename, 10, 10); + } + else if (strncmp(extension, "gif", 3) == 0 && file_in_fs == 1) { + 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 ) {