#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "sdkconfig.h"

#define LED1 12
#define LED2 14
#define LED3 26

void turn_on_led(int led)
{
 // turn off all leds
  gpio_set_level(LED1, 0);
  gpio_set_level(LED2, 0);
  gpio_set_level(LED3, 0);
  
  switch(led)
  {
    case 1:
      gpio_set_level(LED1, 1);
      break;
    case 2:
      gpio_set_level(LED2, 1);
      break;
    case 3:
      gpio_set_level(LED3, 1);
      break;
 }
}

void blinking_task(void *pvParameter)
{

 // set gpio and its direction

  gpio_reset_pin(LED1);
  gpio_set_direction(LED1, GPIO_MODE_OUTPUT);

  gpio_reset_pin(LED2);
  gpio_set_direction(LED2, GPIO_MODE_OUTPUT);

  gpio_reset_pin(LED3);
  gpio_set_direction(LED3, GPIO_MODE_OUTPUT);

  int current_led = 1;
  while(1) {
    turn_on_led(current_led);
    vTaskDelay(1000 / portTICK_PERIOD_MS);
    current_led++;
    if(current_led>3)
    current_led = 1;
  }

}

void app_main() {

  xTaskCreate(&blinking_task, "blinking_task",
              configMINIMAL_STACK_SIZE, NULL, 5, NULL);
}



esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
led1:A
led1:C
led2:A
led2:C
led3:A
led3:C
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2