35 lines
877 B
C
35 lines
877 B
C
#include "led_control.h"
|
|
#include "main.h"
|
|
#include "FreeRTOS.h"
|
|
#include "task.h"
|
|
#include "queue.h"
|
|
#include "usbd_custom_hid.h"
|
|
#include "bsp_led.h"
|
|
#include "bsp_key.h"
|
|
|
|
static QueueHandle_t command_queue = NULL;
|
|
|
|
void led_control_command_send_from_isr(const uint8_t *command)
|
|
{
|
|
BaseType_t need_yield = pdFALSE;
|
|
xQueueSendFromISR(command_queue, command, &need_yield);
|
|
portYIELD_FROM_ISR(need_yield);
|
|
}
|
|
|
|
void led_control_task_entry(void const *argument)
|
|
{
|
|
command_queue = xQueueCreate(4, BSP_LED_COUNT);
|
|
|
|
usbd_custom_hid_start(0, USB_BASE);
|
|
bsp_key_scan_start();
|
|
|
|
uint8_t command_status[BSP_LED_COUNT];
|
|
while (1) {
|
|
xQueueReceive(command_queue, command_status, portMAX_DELAY);
|
|
bsp_led_set_output(command_status);
|
|
|
|
bsp_led_get_status(command_status);
|
|
usbd_custom_hid_send(command_status, BSP_LED_COUNT);
|
|
}
|
|
}
|