/*
   Blink a LED.
   Xtensa dual-core 32-bit LX6 (ESP32-CAM, FireBeetle ESP32), 240 MHz
   PlatformIO, ESP-IDF framework

   Copyright (c) 2022 Tomas Fryza
   Dept. of Radio Electronics, Brno University of Technology, Czechia
   This work is licensed under the terms of the GNU GENERAL PUBLIC LICENSE.
 */


/*-----------------------------------------------------------*/
#include <freertos/FreeRTOS.h>  // FreeRTOS
#include <freertos/task.h>      // vTaskDelay, portTICK_PERIOD_MS
#include <driver/gpio.h>        // GPIO pins


/*-----------------------------------------------------------*/
// On-board LED(s):
// ESP32-CAM  : #33 (red, bottom side), #4 (Flash, top side)
// FireBeetle : #2 (blue)
#define BUILT_IN_LED 2


/*-----------------------------------------------------------*/
/* In ESP-IDF instead of "main", we use "app_main" function
   where the program execution begins */
void app_main()
{
    /* Reset an gpio to default state (enable pullup, disable
       interrupts, ...) */
    gpio_reset_pin(BUILT_IN_LED);
    // Set output
    gpio_set_direction(BUILT_IN_LED, GPIO_MODE_OUTPUT);

    // Forever loop
    while (1) {
        gpio_set_level(BUILT_IN_LED, 1);        // Set high level
        vTaskDelay(100 / portTICK_PERIOD_MS);   // Delay 100 milliseconds

        gpio_set_level(BUILT_IN_LED, 0);        // Set low level
        vTaskDelay(1000 / portTICK_PERIOD_MS);  // Delay 1 second
    }

    // Will never reach this
}