#include <cstdio>

#include "beeper_task.h"
#include "keys_task.h"
#include "utils.h"
#include "task.h"
#include "main.h"

static const char* const TAG = "KEYS";
static uint16_t delay_ms = 5000U;

//------------------------------------------------------------------------------

void keysTaskStart(void* argument)
{
	UNUSED(argument);

	HAL_GPIO_WritePin(POWER_5V_EN_GPIO_Port, POWER_5V_EN_Pin, GPIO_PIN_SET);
	HAL_GPIO_WritePin(POWER_10V_EN_GPIO_Port, POWER_10V_EN_Pin, GPIO_PIN_SET);

	/*for (auto i = 0U; i < 5; i++)
	{
		HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_SET);
		tx_thread_sleep(10U);
		HAL_GPIO_WritePin(BUZZER_GPIO_Port, BUZZER_Pin, GPIO_PIN_RESET);
		tx_thread_sleep(100U);
	}*/

	while(1)
	{
		HAL_GPIO_TogglePin(RX1_LED_GPIO_Port, RX1_LED_Pin);
		//HAL_GPIO_WritePin(RX1_LED_GPIO_Port, RX1_LED_Pin, GPIO_PIN_RESET);
		//HAL_GPIO_WritePin(RX2_LED_GPIO_Port, RX2_LED_Pin, GPIO_PIN_RESET);

		vTaskDelay(delay_ms);

		beeper_msg_t bm { 3U, 900U, 1U};
		BaseType_t res = xQueueSendToBack(beeperQueue, &bm, pdMS_TO_TICKS(10));
		if (res != pdPASS) printf("%s: Cannot place data into queue!\n", TAG);

		//HAL_GPIO_WritePin(RX1_LED_GPIO_Port, RX1_LED_Pin, GPIO_PIN_SET);
		//HAL_GPIO_WritePin(RX2_LED_GPIO_Port, RX2_LED_Pin, GPIO_PIN_SET);

		//printThreadStackInfo(TAG);
	}
}

//------------------------------------------------------------------------------
