LIGHT ON/OFF testing for WLEDs
Signed-off-by: Peter Siegmund <developer@mars3142.org>
This commit is contained in:
@@ -3,3 +3,5 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
void led_matrix_init(void *args);
|
void led_matrix_init(void *args);
|
||||||
|
uint32_t led_matrix_get_size();
|
||||||
|
void led_matrix_set_pixel(uint32_t index, uint8_t red, uint8_t green, uint8_t blue);
|
||||||
|
@@ -5,17 +5,9 @@
|
|||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint8_t red;
|
|
||||||
uint8_t green;
|
|
||||||
uint8_t blue;
|
|
||||||
} led_data_t;
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
led_strip_handle_t led_strip;
|
led_strip_handle_t led_strip;
|
||||||
led_data_t *data;
|
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
} led_matrix_t;
|
} led_matrix_t;
|
||||||
|
|
||||||
@@ -24,7 +16,6 @@ led_matrix_t led_matrix;
|
|||||||
static void led_strip_init(uint8_t gpio_pin, uint32_t size)
|
static void led_strip_init(uint8_t gpio_pin, uint32_t size)
|
||||||
{
|
{
|
||||||
led_matrix.size = size;
|
led_matrix.size = size;
|
||||||
led_matrix.data = (led_data_t *)malloc(sizeof(led_data_t) * size);
|
|
||||||
|
|
||||||
led_strip_config_t strip_config = {
|
led_strip_config_t strip_config = {
|
||||||
.strip_gpio_num = gpio_pin,
|
.strip_gpio_num = gpio_pin,
|
||||||
@@ -46,6 +37,16 @@ static void led_strip_init(uint8_t gpio_pin, uint32_t size)
|
|||||||
ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_matrix.led_strip));
|
ESP_ERROR_CHECK(led_strip_new_rmt_device(&strip_config, &rmt_config, &led_matrix.led_strip));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t led_matrix_get_size()
|
||||||
|
{
|
||||||
|
return led_matrix.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
void led_matrix_set_pixel(uint32_t index, uint8_t red, uint8_t green, uint8_t blue)
|
||||||
|
{
|
||||||
|
led_strip_set_pixel(led_matrix.led_strip, index, red, green, blue);
|
||||||
|
}
|
||||||
|
|
||||||
void led_matrix_init(void *args)
|
void led_matrix_init(void *args)
|
||||||
{
|
{
|
||||||
ESP_LOGI(pcTaskGetName(NULL), "Calling led_matrix_init()");
|
ESP_LOGI(pcTaskGetName(NULL), "Calling led_matrix_init()");
|
||||||
@@ -54,17 +55,15 @@ void led_matrix_init(void *args)
|
|||||||
int value = 0;
|
int value = 0;
|
||||||
for (int i = 0; i < led_matrix.size; i++)
|
for (int i = 0; i < led_matrix.size; i++)
|
||||||
{
|
{
|
||||||
led_strip_set_pixel(led_matrix.led_strip, i, value, 0, 0);
|
led_matrix_set_pixel(i, 0, value, 0);
|
||||||
}
|
}
|
||||||
led_strip_refresh(led_matrix.led_strip);
|
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
led_strip_refresh(led_matrix.led_strip);
|
||||||
vTaskDelay(pdMS_TO_TICKS(100));
|
vTaskDelay(pdMS_TO_TICKS(100));
|
||||||
}
|
}
|
||||||
|
|
||||||
free(led_matrix.data);
|
|
||||||
|
|
||||||
ESP_LOGI(pcTaskGetName(NULL), "Exiting led_matrix_init()");
|
ESP_LOGI(pcTaskGetName(NULL), "Exiting led_matrix_init()");
|
||||||
vTaskDelete(NULL);
|
vTaskDelete(NULL);
|
||||||
}
|
}
|
||||||
|
@@ -2,4 +2,5 @@ idf_component_register(SRCS "led_service.c" "device_service.c" "remote_control.c
|
|||||||
INCLUDE_DIRS "include"
|
INCLUDE_DIRS "include"
|
||||||
PRIV_REQUIRES
|
PRIV_REQUIRES
|
||||||
bt
|
bt
|
||||||
|
led_matrix
|
||||||
)
|
)
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
#include "include/led_service.h"
|
#include "include/led_service.h"
|
||||||
|
|
||||||
|
#include "led_matrix.h"
|
||||||
|
|
||||||
static const char *TAG = "led_service";
|
static const char *TAG = "led_service";
|
||||||
|
|
||||||
// Write data to ESP32 defined as server
|
// Write data to ESP32 defined as server
|
||||||
@@ -18,13 +20,19 @@ int ls_write(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_
|
|||||||
strncmp(received_payload, CMD_LIGHT_ON, payload_len) == 0)
|
strncmp(received_payload, CMD_LIGHT_ON, payload_len) == 0)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "LIGHT ON");
|
ESP_LOGI(TAG, "LIGHT ON");
|
||||||
// TODO: Implement action for LIGHT ON
|
for (int i = 0; i < led_matrix_get_size(); i++)
|
||||||
|
{
|
||||||
|
led_matrix_set_pixel(i, 10, 10, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (payload_len == (sizeof(CMD_LIGHT_OFF) - 1) &&
|
else if (payload_len == (sizeof(CMD_LIGHT_OFF) - 1) &&
|
||||||
strncmp(received_payload, CMD_LIGHT_OFF, payload_len) == 0)
|
strncmp(received_payload, CMD_LIGHT_OFF, payload_len) == 0)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "LIGHT OFF");
|
ESP_LOGI(TAG, "LIGHT OFF");
|
||||||
// TODO: Implement action for LIGHT OFF
|
for (int i = 0; i < led_matrix_get_size(); i++)
|
||||||
|
{
|
||||||
|
led_matrix_set_pixel(i, 0, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (payload_len == (sizeof(CMD_FAN_ON) - 1) &&
|
else if (payload_len == (sizeof(CMD_FAN_ON) - 1) &&
|
||||||
strncmp(received_payload, CMD_FAN_ON, payload_len) == 0)
|
strncmp(received_payload, CMD_FAN_ON, payload_len) == 0)
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
#include "services/gatt/ble_svc_gatt.h"
|
#include "services/gatt/ble_svc_gatt.h"
|
||||||
#include "sdkconfig.h"
|
#include "sdkconfig.h"
|
||||||
|
|
||||||
|
#include "led_matrix.h"
|
||||||
|
|
||||||
#include "include/device_service.h"
|
#include "include/device_service.h"
|
||||||
#include "include/led_service.h"
|
#include "include/led_service.h"
|
||||||
|
|
||||||
@@ -137,4 +139,6 @@ void ble_init(void *args)
|
|||||||
ble_hs_cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
|
ble_hs_cfg.sm_their_key_dist = BLE_SM_PAIR_KEY_DIST_ENC;
|
||||||
|
|
||||||
nimble_port_freertos_init(host_task); // Run the host task
|
nimble_port_freertos_init(host_task); // Run the host task
|
||||||
|
|
||||||
|
xTaskCreatePinnedToCore(led_matrix_init, "led_matrix", configMINIMAL_STACK_SIZE * 2, NULL, 5, NULL, 1);
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,5 @@ void app_main(void)
|
|||||||
{
|
{
|
||||||
persistence_init("miniature_town");
|
persistence_init("miniature_town");
|
||||||
|
|
||||||
xTaskCreatePinnedToCore(led_matrix_init, "led_matrix", configMINIMAL_STACK_SIZE * 2, NULL, 5, NULL, 1);
|
|
||||||
ble_init(NULL);
|
ble_init(NULL);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user