|  | @@ -40,7 +40,8 @@ const __attribute__((section(".rodata_desc"))) esp_app_desc_t esp_app_desc = {
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -extern int main(int argc, char **argv);
 | 
	
		
			
				|  |  | +extern int squeezelite_main(int argc, char **argv);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  static int launchsqueezelite(int argc, char **argv);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /** Arguments used by 'squeezelite' function */
 | 
	
	
		
			
				|  | @@ -54,39 +55,33 @@ static struct {
 | 
	
		
			
				|  |  |  } thread_parms ;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #define ADDITIONAL_SQUEEZELITE_ARGS 5
 | 
	
		
			
				|  |  | -static void squeezelite_thread(void *arg){
 | 
	
		
			
				|  |  | +static void squeezelite_thread(void *arg){  
 | 
	
		
			
				|  |  |  	ESP_LOGV(TAG ,"Number of args received: %u",thread_parms.argc );
 | 
	
		
			
				|  |  |  	ESP_LOGV(TAG ,"Values:");
 | 
	
		
			
				|  |  |      for(int i = 0;i<thread_parms.argc; i++){
 | 
	
		
			
				|  |  |      	ESP_LOGV(TAG ,"     %s",thread_parms.argv[i]);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	ESP_LOGI(TAG ,"Calling squeezelite");
 | 
	
		
			
				|  |  | -	int ret = main(thread_parms.argc,thread_parms.argv);
 | 
	
		
			
				|  |  | -	ESP_LOGV(TAG ,"Exited from squeezelite's main(). Freeing argv structure.");
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	for(int i=0;i<thread_parms.argc;i++){
 | 
	
		
			
				|  |  | -		ESP_LOGV(TAG ,"Freeing char buffer for parameter %u", i+1);
 | 
	
		
			
				|  |  | -		free(thread_parms.argv[i]);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	ESP_LOGV(TAG ,"Freeing argv pointer");
 | 
	
		
			
				|  |  | -	free(thread_parms.argv);
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	if(!wait_for_commit()){
 | 
	
		
			
				|  |  | -		ESP_LOGW(TAG,"Unable to commit configuration. ");
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  |      
 | 
	
		
			
				|  |  | -    messaging_post_message(MESSAGING_ERROR, MESSAGING_CLASS_SYSTEM, "squeezelite exited with error code %d", ret);   
 | 
	
		
			
				|  |  | +    ESP_LOGI(TAG ,"Calling squeezelite");
 | 
	
		
			
				|  |  | +    int ret = squeezelite_main(thread_parms.argc, thread_parms.argv);
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +    messaging_post_message(MESSAGING_WARNING, MESSAGING_CLASS_SYSTEM, "squeezelite exited with error code %d", ret);   
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if (ret == 1) {
 | 
	
		
			
				|  |  | -        int wait = 60;
 | 
	
		
			
				|  |  | -        messaging_post_message(MESSAGING_ERROR, MESSAGING_CLASS_SYSTEM, "Rebooting in %d sec", wait); 
 | 
	
		
			
				|  |  | +        int wait = 60;      
 | 
	
		
			
				|  |  | +        wait_for_commit();
 | 
	
		
			
				|  |  | +        messaging_post_message(MESSAGING_WARNING, MESSAGING_CLASS_SYSTEM, "Rebooting in %d sec", wait); 
 | 
	
		
			
				|  |  |          vTaskDelay( pdMS_TO_TICKS(wait * 1000));
 | 
	
		
			
				|  |  |          esp_restart();
 | 
	
		
			
				|  |  |      } else {
 | 
	
		
			
				|  |  |          messaging_post_message(MESSAGING_ERROR, MESSAGING_CLASS_SYSTEM, "Correct command line and reboot"); 
 | 
	
		
			
				|  |  |          vTaskSuspend(NULL);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	ESP_LOGV(TAG, "Exited from squeezelite's main(). Freeing argv structure.");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	for(int i=0;i<thread_parms.argc;i++) free(thread_parms.argv[i]);
 | 
	
		
			
				|  |  | +	free(thread_parms.argv);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static int launchsqueezelite(int argc, char **argv) {
 |