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

//PROTÓTIPO DE FUNÇÕES===================================================
void app_main(void);
void Task_blink(void *pvParameter);

//DEFINIÇÕES E CONSTATNTES
#define delay(value) vTaskDelay(value/portTICK_PERIOD_MS)
#define LED GPIO_NUM_4
#define GPIO_OUTPUT_PIN_SEL ((1ULL<<LED))//bit_mask

//VARIÁVEIS
int statusLed=0;


void Task_blink(void *pvParameter){

	//CONFIGURANDO SAÍDAS
	gpio_config_t io_config = {};//variável descritora
	io_config.intr_type = GPIO_INTR_DISABLE;//desabilita interrupção externa
	io_config.mode = GPIO_MODE_OUTPUT;//configura GPIO como saídas
	io_config.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;//carrega GPIOs configuradas
	gpio_config(&io_config);//configura GPIO conforme descritor

    gpio_set_level(LED, 0);
    delay(100);

    while(1){
    	printf("============================================================\n");
		statusLed = !statusLed;
		if(statusLed == 0){
	    	printf("LED APAGADO!\n");
	    	gpio_set_level(LED, statusLed);

		}
		else{
			printf("LED ACESO!\n");
			gpio_set_level(LED, statusLed);
		}
		delay(2000);
    }

}

void app_main(void){
    xTaskCreate(Task_blink, " BLINK ", 2048, NULL, 2, NULL);
}