|  | @@ -44,25 +44,32 @@ void setup_usb_ids()
 | 
	
		
			
				|  |  |      USB.serialNumber(serial_number);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -static void heap_info()
 | 
	
		
			
				|  |  | +bool _spiram_broken;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +void heap_info()
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      size_t il = heap_caps_get_largest_free_block(MALLOC_CAP_INTERNAL);
 | 
	
		
			
				|  |  |      size_t ia = heap_caps_get_free_size(MALLOC_CAP_INTERNAL);
 | 
	
		
			
				|  |  | +    size_t it = heap_caps_get_total_size(MALLOC_CAP_INTERNAL);
 | 
	
		
			
				|  |  |      size_t sl = heap_caps_get_largest_free_block(MALLOC_CAP_SPIRAM);
 | 
	
		
			
				|  |  |      size_t sa = heap_caps_get_free_size(MALLOC_CAP_SPIRAM);
 | 
	
		
			
				|  |  | +    size_t st = heap_caps_get_total_size(MALLOC_CAP_SPIRAM);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      char msg_buffer[128];
 | 
	
		
			
				|  |  |      snprintf(msg_buffer, sizeof msg_buffer,
 | 
	
		
			
				|  |  | -	     "Heap: sram %zu/%zu, spiram %zu/%zu\r\n",
 | 
	
		
			
				|  |  | -	     il, ia, sl, sa);
 | 
	
		
			
				|  |  | +	     "Heap: sram %zu/%zu/%zu, spiram %zu/%zu/%zu\r\n",
 | 
	
		
			
				|  |  | +	     il, ia, it, sl, sa, st);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      fputs(msg_buffer, stdout);
 | 
	
		
			
				|  |  |      Serial.print(msg_buffer);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      setvar_uint(status_heap_sram_max, il);
 | 
	
		
			
				|  |  |      setvar_uint(status_heap_sram_free, ia);
 | 
	
		
			
				|  |  | +    setvar_uint(status_heap_sram_size, it);
 | 
	
		
			
				|  |  |      setvar_uint(status_heap_spiram_max, sl);
 | 
	
		
			
				|  |  |      setvar_uint(status_heap_spiram_free, sa);
 | 
	
		
			
				|  |  | +    setvar_uint(status_heap_spiram_size, st);
 | 
	
		
			
				|  |  | +    _spiram_broken = st == 0;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #if 0
 | 
	
	
		
			
				|  | @@ -125,7 +132,6 @@ void setup() {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // Enable external PSRAM for heap
 | 
	
		
			
				|  |  |      heap_caps_malloc_extmem_enable(3000); // >= 3K allocations in PSRAM
 | 
	
		
			
				|  |  | -    heap_info();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      TTY::init();
 | 
	
		
			
				|  |  |      Serial.print("\r\n*** Hello, World! ***\r\n");
 | 
	
	
		
			
				|  | @@ -143,13 +149,18 @@ void setup() {
 | 
	
		
			
				|  |  |      set_build_status_info();
 | 
	
		
			
				|  |  |      fpga_service_init();
 | 
	
		
			
				|  |  |      fpga_service_enable(true);
 | 
	
		
			
				|  |  | -    SetupWiFi();
 | 
	
		
			
				|  |  | +    if (spiram_broken()) {
 | 
	
		
			
				|  |  | +	const char spiram_broken_msg[] =
 | 
	
		
			
				|  |  | +	    "WARNING: SPIRAM broken, not starting network\r\n";
 | 
	
		
			
				|  |  | +	fputs(spiram_broken_msg, stdout);
 | 
	
		
			
				|  |  | +	Serial.print(spiram_broken_msg);
 | 
	
		
			
				|  |  | +    } else {
 | 
	
		
			
				|  |  | +	SetupWiFi();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |      Serial.println("[RDY]");
 | 
	
		
			
				|  |  |      sysvar_print_updates = true;
 | 
	
		
			
				|  |  |      do_log_config_status = true; // Print configuration from main loop
 | 
	
		
			
				|  |  |      led_set(LED_BLUE, LED_ON);	// Software ready
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    heap_info();
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static inline char task_state(eTaskState state)
 |