| 
					
				 | 
			
			
				@@ -59,6 +59,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define min(x,y) ((x)<(y)?(x):(y)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static unsigned received_bytes_count = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static char **error_ptr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Close control or data pcb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * @param pointer to lwftp session data 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -117,8 +118,6 @@ static err_t lwftp_data_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, er 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   (void)err; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   lwftp_session_t *s = (lwftp_session_t*)arg; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (p) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // notify the web interface that we can proceed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    s->error = "1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (s->data_sink) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       struct pbuf *q; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (q=p; q; q=q->next) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -352,7 +351,7 @@ anonymous: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           s->control_state = LWFTP_XFERING; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } else if (response==550) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             s->control_state = LWFTP_QUIT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            s->error = "Failed to open file" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            s->error = "Failed to open file"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             LWIP_DEBUGF(LWFTP_WARNING, ("lwftp: %s '%s'\n", error, s->settings->remote_path)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         else { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -470,6 +469,7 @@ static void lwftp_control_err(void *arg, err_t err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       LWIP_DEBUGF(LWFTP_WARNING, ("lwftp: %s (%s)\n",lwip_strerr(err))); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       result = LWFTP_RESULT_ERR_CONNECT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      s->error = "connection closed by remote host"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       LWIP_DEBUGF(LWFTP_WARNING, ("lwftp:connection closed by remote host\n")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       result = LWFTP_RESULT_ERR_CLOSED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -683,23 +683,27 @@ static unsigned data_sink(void *arg, const char* ptr, unsigned len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return len; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-char *start_ftp_client(lwftp_session_t *s) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+void start_ftp_client(lwftp_session_t *s) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   received_bytes_count = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  s->error = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  error_ptr = &s->error; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   s->data_sink = data_sink; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   //s->done_fn = ftp_retr_callback; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   lwftp_retr(s); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // FTP session will continue with the connection callback 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //// wait for the client to connect to the server and check whether the file exists 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //while (s->error == NULL) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //  vTaskDelay(200); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  //} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return "1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-uint32_t get_ftp_progress() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+char *get_ftp_progress() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  return received_bytes_count * 100 / MAIN_FW_SIZE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (*error_ptr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return *error_ptr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    unsigned progress = received_bytes_count * 100 / MAIN_FW_SIZE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    static char progress_str_buf[4]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    snprintf(progress_str_buf, sizeof(progress_str_buf), "%u", progress); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return progress_str_buf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif // !BT6702_SERVICE 
			 |