// Use only core 1 for demo purposes
#if CONFIG_FREERTOS_UNICORE
static const BaseType_t app_cpu = 0;   // juste pour savoir si c'est le coeur 1 ou 2 qui est solicité
#else								   // pas d'utilité précise pour ce cas
static const BaseType_t app_cpu = 1;
#endif

// Pins
static const int led_pin = LED_BUILTIN;	// ceci est la led acrcochée sur la board pas de câblage nécessaire

// Our task: blink an LED
void toggleLED(void *parameter) {
  while(1) {									            // début boucle infinie
		digitalWrite(led_pin, HIGH);		      // allumer la led à la syntaxte arduino (digitalWrite)
    vTaskDelay(500 / portTICK_PERIOD_MS); // vTaskDelay pour faire une temporisation de 500ms - voir l'exemple : 			https://www.freertos.org/a00127.html	 				   
    digitalWrite(led_pin, LOW);		        // eteindre la led à la syntaxte arduino
		vTaskDelay(500 / portTICK_PERIOD_MS); // vTaskDelay pour faire une temporisation de 500ms
	  Serial.println("Je suis dans toggleLED");
  }
}

void setup() {

  // Configure pin
  pinMode(led_pin, OUTPUT);
  // UART = Universal Asynchronous Receiver Transmitter
  Serial.begin(9600);  // Défini les baud 

  // Task to run forever
  xTaskCreatePinnedToCore(  // Use xTaskCreate()  FreeRTOS
					toggleLED,    // Function to be called
					"task_LED",   // Name of task
					1024,         // Stack size de 1024 (bytes in ESP32, words in FreeRTOS)
					NULL,         // Parameter to pass to function ->NULL
					0,          	// Task priority 1 (0 to configMAX_PRIORITIES - 1)
					NULL,         // Task handle -> NULL
          app_cpu       // Run on one core for demo purposes (ESP32 only)
  );     	
}

void loop() {
  // Ecrire "je suis dans la loop" syntaxe arduino
  Serial.println("Je suis dans la loop");
  delay(100);
  // setup() and loop() run in their own task with priority 1 in core 1
  // on ESP32
}