added app demo code

This commit is contained in:
2021-01-16 00:23:02 +01:00
parent 9b4b1d0443
commit 62b9b1255f
9 changed files with 537 additions and 5 deletions

124
main/Blinky_LED.c Normal file
View File

@ -0,0 +1,124 @@
#include "Blinky_LED.h"
static const char *LOG_TAG = "blinky_led";
static bool bLEDisOn = true;
xQueueHandle queueBlinkyLEDPackets;
esp_err_t errBlinkyLEDInitialize()
{
esp_err_t err = ESP_OK;
BaseType_t xReturned;
vGPIOInitialize();
queueBlinkyLEDPackets = xQueueCreate(5, sizeof (BLINKY_PACKET_t));
if (queueBlinkyLEDPackets == 0) // Queue not created
{
ESP_LOGE(LOG_TAG, "Unable to create Queue for Application Packets");
err = ESP_FAIL;
}
if(err == ESP_OK)
{
xReturned = xTaskCreate(vTaskReadUserInput, "vTaskReadUserInput", 2048, NULL, 5, NULL);
if(xReturned != pdPASS)
{
err = ESP_FAIL;
}
}
if(err == ESP_OK)
{
xReturned = xTaskCreate(vTaskReceiveData, "vTaskReceiveData", 2048, NULL, 5, NULL);
if(xReturned != pdPASS)
{
err = ESP_FAIL;
}
}
return err;
}
void vGPIOInitialize()
{
gpio_config_t gpioConf;
//LED as Output
gpio_reset_pin(GPIO_LED);
gpio_set_direction(GPIO_LED, GPIO_MODE_OUTPUT);
//BTN as Input
gpioConf.intr_type = GPIO_INTR_DISABLE;
gpioConf.mode = GPIO_MODE_INPUT;
gpioConf.pin_bit_mask = GPIO_INPUT_PIN_SEL;
gpioConf.pull_down_en = 0;
gpioConf.pull_up_en = 1;
gpio_config(&gpioConf);
}
void vTaskReadUserInput(void *arg)
{
BLINKY_PACKET_t bTmpStateLED = LED_OFF;
while(true)
{
if(gpio_get_level(GPIO_BOOT_BTN) == 0)
{
if(bLEDisOn == false)
{
ESP_LOGI(LOG_TAG,"switch ON");
bTmpStateLED = LED_ON;
}
else
{
ESP_LOGI(LOG_TAG,"switch OFF");
bTmpStateLED = LED_OFF;
}
if (xQueueSend(queueBlinkyLEDPackets, &bTmpStateLED, portMAX_DELAY) != pdPASS)
{
ESP_LOGE(LOG_TAG, "Unable to push packet into Queue");
}
vTaskDelay(200 / portTICK_PERIOD_MS);
}
vTaskDelay(50 / portTICK_PERIOD_MS);
}
}
void vTaskReceiveData(void *arg)
{
BLINKY_PACKET_t bTmpStateLED = LED_OFF;
while (1)
{
if (xQueueReceive(queueBlinkyLEDPackets, &bTmpStateLED, portMAX_DELAY) != pdTRUE)
{
ESP_LOGE(LOG_TAG, "Unable to receive packet from Queue");
}
else
{
//Successfully RECEIVED the packet
switch (bTmpStateLED)
{
case LED_ON:
bLEDisOn = true;
gpio_set_level(GPIO_LED, 1); //switch on
ESP_LOGI(LOG_TAG,"rec ON");
break;
case LED_OFF:
bLEDisOn = false;
gpio_set_level(GPIO_LED, 0); //switch off
ESP_LOGI(LOG_TAG,"rec OFF");
break;
default:
bLEDisOn = false;
gpio_set_level(GPIO_LED, 0); //switch off
break;
}
}
vTaskDelay(200 / portTICK_PERIOD_MS);
}
}

35
main/Blinky_LED.h Normal file
View File

@ -0,0 +1,35 @@
#ifndef H_BLINKY_LED
#define H_BLINKY_LED
#include <string.h>
#include "esp_wifi.h"
#include "esp_system.h"
#include "esp_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "Mesh_OTA.h"
#define GPIO_BOOT_BTN 0
#define GPIO_LED 2
#define GPIO_INPUT_PIN_SEL (1ULL<<GPIO_BOOT_BTN)
enum blinky_packet_type
{
LED_OFF,
LED_ON,
};
typedef enum blinky_packet_type BLINKY_PACKET_t;
esp_err_t errBlinkyLEDInitialize();
void vGPIOInitialize();
void vTaskReadUserInput(void *arg);
void vTaskReceiveData(void *arg);
#endif /* H_BLINKY_LED */

View File

@ -1,2 +1,2 @@
idf_component_register(SRCS "Main.c"
idf_component_register(SRCS "Blinky_LED.c" "Main.c"
INCLUDE_DIRS ".")

View File

@ -12,6 +12,7 @@
#include "esp_partition.h"
#include "Mesh_OTA.h"
#include "Blinky_LED.h"
static const char *LOG_TAG = "esp_main";
@ -25,6 +26,7 @@ void app_main(void)
//start ota
//start app
errBlinkyLEDInitialize();
}