device_hal: Restructuring to make the usage flexible.

button_driver: Add support for gpio and adc from esp-iot-solution.
led_driver: Renamed light_driver to led_driver.
app_driver: Using this restructured device_hal.
app_driver: Added toggle based on button_driver.
This commit is contained in:
Chirag Atal
2022-04-07 18:05:49 +05:30
parent b7a380e556
commit 82ecf9fa05
33 changed files with 371 additions and 341 deletions
+11 -4
View File
@@ -1,5 +1,12 @@
include($ENV{ESP_MATTER_DEVICE_PATH}/esp_matter_device.cmake)
set(button_requires )
idf_component_register(SRCS ${button_type}/button_driver.c
INCLUDE_DIRS include
REQUIRES ${button_requires})
set(requires driver)
if ("${button_type}" STREQUAL "gpio")
list(APPEND requires button)
elseif ("${button_type}" STREQUAL "adc")
list(APPEND requires button)
endif()
idf_component_register(SRC_DIRS
INCLUDE_DIRS
REQUIRES ${requires})
+3
View File
@@ -0,0 +1,3 @@
# Source
The `button` component which is used for gpio and adc buttons is taken from https://github.com/espressif/esp-iot-solution/tree/master/components/button via idf_component.yml
@@ -1,25 +0,0 @@
// Copyright 2021 Espressif Systems (Shanghai) CO LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License
#include <button_driver.h>
#include <esp_log.h>
static const char *TAG = "button_driver_hollow";
esp_err_t button_driver_init(button_driver_config_t *config)
{
ESP_LOGI(TAG, "Initializing button driver");
/* Initialize the button driver here*/
return ESP_OK;
}
@@ -0,0 +1,5 @@
## IDF Component Manager Manifest File
dependencies:
button:
path: components/button
git: https://github.com/espressif/esp-iot-solution.git
@@ -1,29 +0,0 @@
// Copyright 2021 Espressif Systems (Shanghai) CO LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License
#pragma once
#include <esp_err.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
int gpio;
} button_driver_config_t;
esp_err_t button_driver_init(button_driver_config_t *config);
#ifdef __cplusplus
}
#endif
+2 -2
View File
@@ -1,4 +1,4 @@
include($ENV{ESP_MATTER_DEVICE_PATH}/esp_matter_device.cmake)
idf_component_register(SRC_DIRS "${device_name}"
idf_component_register(SRC_DIRS "${device_type}"
INCLUDE_DIRS include
REQUIRES ${used_driver})
REQUIRES button_driver led_driver)
+16 -21
View File
@@ -12,37 +12,32 @@
// limitations under the License
#include <esp_log.h>
#include <iot_button.h>
#include <led_driver.h>
#include <button_driver.h>
#include <light_driver.h>
#define DEVICE_VERSION_1_0
#ifdef DEVICE_VERSION_1_0
#define LED_GPIO_PIN 12 /* GPIO_NUM_12 */
#define LED_GPIO_PIN GPIO_NUM_12
#define LED_CHANNEL 0 /* LEDC_CHANNEL_0 */
#endif
#define BUTTON_GPIO_PIN GPIO_NUM_0
static const char *TAG = "device";
static esp_err_t device_light_init()
led_driver_config_t led_driver_get_config()
{
light_driver_config_t config = {
led_driver_config_t config = {
.gpio = LED_GPIO_PIN,
.channel = LED_CHANNEL,
};
return light_driver_init(&config);
return config;
}
static esp_err_t device_button_init()
button_config_t button_driver_get_config()
{
return button_driver_init(NULL);
}
esp_err_t device_init()
{
ESP_LOGI(TAG, "Initializing device");
device_light_init();
device_button_init();
return ESP_OK;
button_config_t config = {
.type = BUTTON_TYPE_GPIO,
.gpio_button_config = {
.gpio_num = BUTTON_GPIO_PIN,
.active_level = 0,
}
};
return config;
}
@@ -1,14 +1,11 @@
cmake_minimum_required(VERSION 3.5)
if(NOT ("${IDF_TARGET}" STREQUAL "esp32" ))
if (NOT ("${IDF_TARGET}" STREQUAL "esp32" ))
message(FATAL_ERROR "please set esp32 as the IDF_TARGET using 'idf.py set-target esp32'")
endif()
SET(device_hal_path $ENV{ESP_MATTER_DEVICE_PATH}/../../)
SET(device_name esp32_devkit_c)
SET(light_type gpio)
SET(button_type hollow)
SET(used_driver light_driver button_driver)
SET(extra_components_dirs_append "${device_hal_path}/light_driver"
"${device_hal_path}/button_driver")
SET(device_type esp32_devkit_c)
SET(led_type gpio)
SET(button_type gpio)
SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver"
"$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver")
+16 -21
View File
@@ -12,37 +12,32 @@
// limitations under the License
#include <esp_log.h>
#include <iot_button.h>
#include <led_driver.h>
#include <button_driver.h>
#include <light_driver.h>
#define DEVICE_VERSION_1_0
#ifdef DEVICE_VERSION_1_0
#define LED_GPIO_PIN 8 /* GPIO_NUM_8 */
#define LED_GPIO_PIN GPIO_NUM_8
#define LED_CHANNEL 0 /* RMT_CHANNEL_0 */
#endif
#define BUTTON_GPIO_PIN GPIO_NUM_9
static const char *TAG = "device";
static esp_err_t device_light_init()
led_driver_config_t led_driver_get_config()
{
light_driver_config_t config = {
led_driver_config_t config = {
.gpio = LED_GPIO_PIN,
.channel = LED_CHANNEL,
};
return light_driver_init(&config);
return config;
}
static esp_err_t device_button_init()
button_config_t button_driver_get_config()
{
return button_driver_init(NULL);
}
esp_err_t device_init()
{
ESP_LOGI(TAG, "Initializing device");
device_light_init();
device_button_init();
return ESP_OK;
button_config_t config = {
.type = BUTTON_TYPE_GPIO,
.gpio_button_config = {
.gpio_num = BUTTON_GPIO_PIN,
.active_level = 0,
}
};
return config;
}
@@ -3,11 +3,10 @@ if (NOT ("${IDF_TARGET}" STREQUAL "esp32c3" ))
message(FATAL_ERROR "please set esp32c3 as the IDF_TARGET using 'idf.py set-target esp32c3'")
endif()
SET(device_hal_path $ENV{ESP_MATTER_DEVICE_PATH}/../../)
SET(device_name esp32c3_devkit_m)
SET(light_type ws2812)
SET(button_type hollow)
SET(used_driver light_driver button_driver)
SET(extra_components_dirs_append "${device_hal_path}/light_driver"
"${device_hal_path}/button_driver"
SET(device_type esp32c3_devkit_m)
SET(led_type ws2812)
SET(button_type gpio)
SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver"
"$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver"
"$ENV{IDF_PATH}/examples/common_components/led_strip")
+16 -17
View File
@@ -12,33 +12,32 @@
// limitations under the License
#include <esp_log.h>
#include <iot_button.h>
#include <led_driver.h>
#include <button_driver.h>
#include <light_driver.h>
#define LED_GPIO_PIN 8 /* GPIO_NUM_8 */
#define LED_GPIO_PIN GPIO_NUM_8
#define LED_CHANNEL 0 /* RMT_CHANNEL_0 */
#define BUTTON_GPIO_PIN GPIO_NUM_0
static const char *TAG = "device";
static esp_err_t device_light_init()
led_driver_config_t led_driver_get_config()
{
light_driver_config_t config = {
led_driver_config_t config = {
.gpio = LED_GPIO_PIN,
.channel = LED_CHANNEL,
};
return light_driver_init(&config);
return config;
}
static esp_err_t device_button_init()
button_config_t button_driver_get_config()
{
return button_driver_init(NULL);
}
esp_err_t device_init()
{
ESP_LOGI(TAG, "Initializing device");
device_light_init();
device_button_init();
return ESP_OK;
button_config_t config = {
.type = BUTTON_TYPE_GPIO,
.gpio_button_config = {
.gpio_num = BUTTON_GPIO_PIN,
.active_level = 0,
}
};
return config;
}
@@ -1,13 +1,12 @@
cmake_minimum_required(VERSION 3.5)
if (NOT ("${IDF_TARGET}" STREQUAL "esp32h2"))
message(FATAL_ERROR "please set esp32h2 as the IDF_TARGET using 'idf.py -- preview set-target esp32h2'")
message(FATAL_ERROR "please set esp32h2 as the IDF_TARGET using 'idf.py --preview set-target esp32h2'")
endif()
SET(device_hal_path $ENV{ESP_MATTER_DEVICE_PATH}/../../)
SET(device_name esp32h2_devkit_c)
SET(light_type ws2812)
SET(button_type hollow)
SET(used_driver light_driver button_driver)
SET(extra_components_dirs_append "${device_hal_path}/light_driver"
"${device_hal_path}/button_driver"
SET(device_type esp32h2_devkit_c)
SET(led_type ws2812)
SET(button_type gpio)
SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver"
"$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver"
"$ENV{IDF_PATH}/examples/common_components/led_strip")
+19 -17
View File
@@ -12,30 +12,32 @@
// limitations under the License
#include <esp_log.h>
#include <iot_button.h>
#include <led_driver.h>
#include <button_driver.h>
#include <light_driver.h>
#define LED_GPIO_PIN GPIO_NUM_8
#define LED_CHANNEL 0 /* RMT_CHANNEL_0 */
#define BUTTON_GPIO_PIN GPIO_NUM_0
static const char *TAG = "device";
static esp_err_t device_light_init()
led_driver_config_t led_driver_get_config()
{
light_driver_config_t config = {
.gpio = -1,
.channel = -1,
led_driver_config_t config = {
.gpio = LED_GPIO_PIN,
.channel = LED_CHANNEL,
};
return light_driver_init(&config);
return config;
}
static esp_err_t device_button_init()
button_config_t button_driver_get_config()
{
return button_driver_init(NULL);
}
esp_err_t device_init()
{
ESP_LOGI(TAG, "Initializing device");
device_light_init();
device_button_init();
return ESP_OK;
button_config_t config = {
.type = BUTTON_TYPE_GPIO,
.gpio_button_config = {
.gpio_num = BUTTON_GPIO_PIN,
.active_level = 0,
}
};
return config;
}
@@ -1,14 +1,11 @@
cmake_minimum_required(VERSION 3.5)
if(NOT ("${IDF_TARGET}" STREQUAL "esp32s2" ))
if (NOT ("${IDF_TARGET}" STREQUAL "esp32s2" ))
message(FATAL_ERROR "please set esp32s2 as the IDF_TARGET using 'idf.py set-target esp32s2'")
endif()
SET(device_hal_path $ENV{ESP_MATTER_DEVICE_PATH}/../../)
SET(device_name esp32s2_devkit_c)
SET(light_type hollow)
SET(button_type hollow)
SET(used_driver light_driver button_driver)
SET(extra_components_dirs_append "${device_hal_path}/light_driver"
"${device_hal_path}/button_driver")
SET(device_type esp32s2_devkit_c)
SET(led_type hollow)
SET(button_type gpio)
SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver"
"$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver")
+16 -21
View File
@@ -12,37 +12,32 @@
// limitations under the License
#include <esp_log.h>
#include <iot_button.h>
#include <led_driver.h>
#include <button_driver.h>
#include <light_driver.h>
#define DEVICE_VERSION_1_0
#ifdef DEVICE_VERSION_1_0
#define LED_GPIO_PIN 48 /* GPIO_NUM_48 */
#define LED_GPIO_PIN GPIO_NUM_48
#define LED_CHANNEL 0 /* RMT_CHANNEL_0 */
#endif
#define BUTTON_GPIO_PIN GPIO_NUM_0
static const char *TAG = "device";
static esp_err_t device_light_init()
led_driver_config_t led_driver_get_config()
{
light_driver_config_t config = {
led_driver_config_t config = {
.gpio = LED_GPIO_PIN,
.channel = LED_CHANNEL,
};
return light_driver_init(&config);
return config;
}
static esp_err_t device_button_init()
button_config_t button_driver_get_config()
{
return button_driver_init(NULL);
}
esp_err_t device_init()
{
ESP_LOGI(TAG, "Initializing device");
device_light_init();
device_button_init();
return ESP_OK;
button_config_t config = {
.type = BUTTON_TYPE_GPIO,
.gpio_button_config = {
.gpio_num = BUTTON_GPIO_PIN,
.active_level = 0,
}
};
return config;
}
@@ -1,15 +1,12 @@
cmake_minimum_required(VERSION 3.5)
if(NOT ("${IDF_TARGET}" STREQUAL "esp32s3" ))
if (NOT ("${IDF_TARGET}" STREQUAL "esp32s3" ))
message(FATAL_ERROR "please set esp32s3 as the IDF_TARGET using 'idf.py set-target esp32s3'")
endif()
SET(device_hal_path $ENV{ESP_MATTER_DEVICE_PATH}/../../)
SET(device_name esp32s3_devkit_c)
SET(light_type ws2812)
SET(button_type hollow)
SET(used_driver light_driver button_driver)
SET(extra_components_dirs_append "${device_hal_path}/light_driver"
"${device_hal_path}/button_driver"
SET(device_type esp32s3_devkit_c)
SET(led_type ws2812)
SET(button_type gpio)
SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver"
"$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver"
"$ENV{IDF_PATH}/examples/common_components/led_strip")
+5 -2
View File
@@ -12,13 +12,16 @@
// limitations under the License
#pragma once
#include <esp_err.h>
#include <iot_button.h>
#include <led_driver.h>
#ifdef __cplusplus
extern "C" {
#endif
esp_err_t device_init();
led_driver_config_t led_driver_get_config();
button_config_t button_driver_get_config();
#ifdef __cplusplus
}
+18 -22
View File
@@ -12,36 +12,32 @@
// limitations under the License
#include <esp_log.h>
#include <iot_button.h>
#include <led_driver.h>
#include <button_driver.h>
#include <light_driver.h>
#define DEVICE_VERSION_1_0
#ifdef DEVICE_VERSION_1_0
#define LED_GPIO_PIN 32 /* PIN_NUM_BCKL for M5Stack TFT */
#define LED_CHANNEL 7 /* LEDC_CHANNEL_7 */
#endif
#define BUTTON_GPIO_PIN 39 /* Left button on M5Stack */
static const char *TAG = "device";
static esp_err_t device_light_init()
led_driver_config_t led_driver_get_config()
{
light_driver_config_t config = {
.gpio = 32,
.channel = 7,
led_driver_config_t config = {
.gpio = LED_GPIO_PIN,
.channel = LED_CHANNEL,
};
return light_driver_init(&config);
return config;
}
static esp_err_t device_button_init()
button_config_t button_driver_get_config()
{
return button_driver_init(NULL);
}
esp_err_t device_init()
{
ESP_LOGI(TAG, "Initializing board");
device_light_init();
device_button_init();
return ESP_OK;
button_config_t config = {
.type = BUTTON_TYPE_GPIO,
.gpio_button_config = {
.gpio_num = BUTTON_GPIO_PIN,
.active_level = 0,
}
};
return config;
}
@@ -1,15 +1,13 @@
cmake_minimum_required(VERSION 3.5)
if(NOT ("${IDF_TARGET}" STREQUAL "esp32" ))
if (NOT ("${IDF_TARGET}" STREQUAL "esp32" ))
message(FATAL_ERROR "please set esp32 as the IDF_TARGET using 'idf.py set-target esp32'")
endif()
SET(device_hal_path $ENV{ESP_MATTER_DEVICE_PATH}/../../)
SET(device_name m5stack)
SET(light_type vled)
SET(button_type hollow)
SET(used_driver light_driver button_driver)
SET(extra_components_dirs_append "${device_hal_path}/light_driver"
"${device_hal_path}/button_driver"
SET(device_type m5stack)
SET(led_type vled)
SET(button_type gpio)
SET(extra_components_dirs_append "$ENV{ESP_MATTER_DEVICE_PATH}/../../led_driver"
"$ENV{ESP_MATTER_DEVICE_PATH}/../../button_driver"
"$ENV{ESP_MATTER_PATH}/connectedhomeip/connectedhomeip/examples/common/m5stack-tft/repo/components/tft/"
"$ENV{ESP_MATTER_PATH}/connectedhomeip/connectedhomeip/examples/common/m5stack-tft/repo/components/spidriver/")
+12
View File
@@ -0,0 +1,12 @@
include($ENV{ESP_MATTER_DEVICE_PATH}/esp_matter_device.cmake)
set(led_requires driver)
if ("${led_type}" STREQUAL "ws2812")
list(APPEND led_requires led_strip)
elseif ("${led_type}" STREQUAL "vled")
list(APPEND led_requires tft spidriver)
endif()
idf_component_register(SRC_DIRS ${led_type} utils
INCLUDE_DIRS include
PRIV_REQUIRES ${led_requires})
@@ -15,13 +15,13 @@
#include <esp_log.h>
#include <hal/ledc_types.h>
#include <light_driver.h>
#include <led_driver.h>
static const char *TAG = "light_driver_gpio";
static const char *TAG = "led_driver_gpio";
static bool current_power = false;
static uint8_t current_brightness = 0;
esp_err_t light_driver_init(light_driver_config_t *config)
esp_err_t led_driver_init(led_driver_config_t *config)
{
ESP_LOGI(TAG, "Initializing light driver");
esp_err_t err = ESP_OK;
@@ -56,13 +56,13 @@ esp_err_t light_driver_init(light_driver_config_t *config)
return err;
}
esp_err_t light_driver_set_power(bool power)
esp_err_t led_driver_set_power(bool power)
{
current_power = power;
return light_driver_set_brightness(current_brightness);
return led_driver_set_brightness(current_brightness);
}
esp_err_t light_driver_set_brightness(uint8_t brightness)
esp_err_t led_driver_set_brightness(uint8_t brightness)
{
esp_err_t err;
@@ -85,42 +85,42 @@ esp_err_t light_driver_set_brightness(uint8_t brightness)
return err;
}
esp_err_t light_driver_set_hue(uint16_t hue)
esp_err_t led_driver_set_hue(uint16_t hue)
{
return ESP_ERR_NOT_SUPPORTED;
}
esp_err_t light_driver_set_saturation(uint8_t saturation)
esp_err_t led_driver_set_saturation(uint8_t saturation)
{
return ESP_ERR_NOT_SUPPORTED;
}
esp_err_t light_driver_set_temperature(uint32_t temperature)
esp_err_t led_driver_set_temperature(uint32_t temperature)
{
return ESP_ERR_NOT_SUPPORTED;
}
bool light_driver_get_power()
bool led_driver_get_power()
{
return current_power;
}
uint8_t light_driver_get_brightness()
uint8_t led_driver_get_brightness()
{
return current_brightness;
}
uint16_t light_driver_get_hue()
uint16_t led_driver_get_hue()
{
return 0;
}
uint8_t light_driver_get_saturation()
uint8_t led_driver_get_saturation()
{
return 0;
}
uint32_t light_driver_get_temperature()
uint32_t led_driver_get_temperature()
{
return 0;
}
@@ -13,15 +13,15 @@
#include <color_format.h>
#include <esp_log.h>
#include <light_driver.h>
#include <led_driver.h>
static const char *TAG = "light_driver_hollow";
static const char *TAG = "led_driver_hollow";
static bool current_power = false;
static uint8_t current_brightness = 0;
static HS_color_t current_HS = {0, 0};
static uint32_t current_temperature = 6600;
esp_err_t light_driver_init(light_driver_config_t *config)
esp_err_t led_driver_init(led_driver_config_t *config)
{
ESP_LOGI(TAG, "Initializing light driver");
/* Initialize the driver here */
@@ -29,7 +29,7 @@ esp_err_t light_driver_init(light_driver_config_t *config)
return ESP_OK;
}
esp_err_t light_driver_set_power(bool power)
esp_err_t led_driver_set_power(bool power)
{
ESP_LOGI(TAG, "Setting power to: %d", power);
/* Set the power state here */
@@ -37,7 +37,7 @@ esp_err_t light_driver_set_power(bool power)
return ESP_OK;
}
esp_err_t light_driver_set_brightness(uint8_t brightness)
esp_err_t led_driver_set_brightness(uint8_t brightness)
{
ESP_LOGI(TAG, "Setting brightness to: %d", brightness);
/* Set the brightness level here */
@@ -45,7 +45,7 @@ esp_err_t light_driver_set_brightness(uint8_t brightness)
return ESP_OK;
}
esp_err_t light_driver_set_hue(uint16_t hue)
esp_err_t led_driver_set_hue(uint16_t hue)
{
ESP_LOGI(TAG, "Setting hue to: %d", hue);
/* Set the color hue here */
@@ -53,7 +53,7 @@ esp_err_t light_driver_set_hue(uint16_t hue)
return ESP_OK;
}
esp_err_t light_driver_set_saturation(uint8_t saturation)
esp_err_t led_driver_set_saturation(uint8_t saturation)
{
ESP_LOGI(TAG, "Setting saturation to: %d", saturation);
/* Set the color saturation here */
@@ -61,7 +61,7 @@ esp_err_t light_driver_set_saturation(uint8_t saturation)
return ESP_OK;
}
esp_err_t light_driver_set_temperature(uint32_t temperature)
esp_err_t led_driver_set_temperature(uint32_t temperature)
{
ESP_LOGI(TAG, "Setting temperature to: %d", temperature);
/* Set the color temp here*/
@@ -69,27 +69,27 @@ esp_err_t light_driver_set_temperature(uint32_t temperature)
return ESP_OK;
}
bool light_driver_get_power()
bool led_driver_get_power()
{
return current_power;
}
uint8_t light_driver_get_brightness()
uint8_t led_driver_get_brightness()
{
return current_brightness;
}
uint16_t light_driver_get_hue()
uint16_t led_driver_get_hue()
{
return current_HS.hue;
}
uint8_t light_driver_get_saturation()
uint8_t led_driver_get_saturation()
{
return current_HS.saturation;
}
uint32_t light_driver_get_temperature()
uint32_t led_driver_get_temperature()
{
return current_temperature;
}
@@ -23,20 +23,20 @@ extern "C" {
typedef struct {
int gpio;
int channel;
} light_driver_config_t;
} led_driver_config_t;
esp_err_t light_driver_init(light_driver_config_t *config);
esp_err_t light_driver_set_power(bool power);
esp_err_t light_driver_set_brightness(uint8_t brightness);
esp_err_t light_driver_set_hue(uint16_t hue);
esp_err_t light_driver_set_saturation(uint8_t saturation);
esp_err_t light_driver_set_temperature(uint32_t temperature);
esp_err_t led_driver_init(led_driver_config_t *config);
esp_err_t led_driver_set_power(bool power);
esp_err_t led_driver_set_brightness(uint8_t brightness);
esp_err_t led_driver_set_hue(uint16_t hue);
esp_err_t led_driver_set_saturation(uint8_t saturation);
esp_err_t led_driver_set_temperature(uint32_t temperature);
bool light_driver_get_power(void);
uint8_t light_driver_get_brightness(void);
uint16_t light_driver_get_hue(void);
uint8_t light_driver_get_saturation(void);
uint32_t light_driver_get_temperature(void);
bool led_driver_get_power(void);
uint8_t led_driver_get_brightness(void);
uint16_t led_driver_get_hue(void);
uint8_t led_driver_get_saturation(void);
uint32_t led_driver_get_temperature(void);
#ifdef __cplusplus
}
@@ -19,13 +19,13 @@
#include <tftspi.h>
#include <color_format.h>
#include <light_driver.h>
#include <led_driver.h>
#define TFT_SPI_CLOCK_INIT_HZ 8000000
#define LEDC_PWM_HZ 1000
#define BRIGHTNESS_MAX 255
static const char *TAG = "light_driver_vled";
static const char *TAG = "led_driver_vled";
static bool current_power = false;
static uint8_t current_brightness = 0;
static HS_color_t current_HS = {0, 0};
@@ -35,7 +35,7 @@ static uint16_t DisplayHeight;
static uint16_t DisplayWidth;
static int led_driver_channel = -1;
static void SetupBrightnessControl(light_driver_config_t *config)
static void SetupBrightnessControl(led_driver_config_t *config)
{
ledc_timer_config_t ledc_timer;
memset(&ledc_timer, 0, sizeof(ledc_timer));
@@ -124,7 +124,7 @@ static esp_err_t InitDisplay()
return ESP_OK;
}
esp_err_t light_driver_init(light_driver_config_t *config)
esp_err_t led_driver_init(led_driver_config_t *config)
{
ESP_LOGI(TAG, "Initializing led driver");
esp_err_t err = ESP_OK;
@@ -137,19 +137,19 @@ esp_err_t light_driver_init(light_driver_config_t *config)
return err;
}
esp_err_t light_driver_set_power(bool power)
esp_err_t led_driver_set_power(bool power)
{
current_power = power;
return light_driver_set_brightness(current_brightness);
return led_driver_set_brightness(current_brightness);
}
esp_err_t light_driver_set_RGB()
esp_err_t led_driver_set_RGB()
{
TFT_fillWindow(TFT_BLACK);
TFT_fillCircle(DisplayWidth / 2, DisplayHeight / 2, DisplayWidth / 4, (color_t){mRGB.red, mRGB.green, mRGB.blue});
TFT_drawCircle(DisplayWidth / 2, DisplayHeight / 2, DisplayWidth / 4, (color_t){255, 255, 255});
return ESP_OK;
}
esp_err_t light_driver_set_brightness(uint8_t brightness)
esp_err_t led_driver_set_brightness(uint8_t brightness)
{
if (brightness != 0) {
current_brightness = brightness;
@@ -158,55 +158,55 @@ esp_err_t light_driver_set_brightness(uint8_t brightness)
brightness = 0;
}
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
esp_err_t light_driver_set_hue(uint16_t hue)
esp_err_t led_driver_set_hue(uint16_t hue)
{
uint8_t brightness = current_power ? current_brightness : 0;
current_HS.hue = hue;
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
esp_err_t light_driver_set_saturation(uint8_t saturation)
esp_err_t led_driver_set_saturation(uint8_t saturation)
{
uint8_t brightness = current_power ? current_brightness : 0;
current_HS.saturation = saturation;
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
esp_err_t light_driver_set_temperature(uint32_t temperature)
esp_err_t led_driver_set_temperature(uint32_t temperature)
{
uint8_t brightness = current_power ? current_brightness : 0;
current_temperature = temperature;
temp_to_hs(current_temperature, &current_HS);
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
bool light_driver_get_power()
bool led_driver_get_power()
{
return current_power;
}
uint8_t light_driver_get_brightness()
uint8_t led_driver_get_brightness()
{
return current_brightness;
}
uint16_t light_driver_get_hue()
uint16_t led_driver_get_hue()
{
return current_HS.hue;
}
uint8_t light_driver_get_saturation()
uint8_t led_driver_get_saturation()
{
return current_HS.saturation;
}
uint32_t light_driver_get_temperature()
uint32_t led_driver_get_temperature()
{
return current_temperature;
}
@@ -15,9 +15,9 @@
#include <driver/rmt.h>
#include <esp_log.h>
#include <led_strip.h>
#include <light_driver.h>
#include <led_driver.h>
static const char *TAG = "light_driver_ws2812";
static const char *TAG = "led_driver_ws2812";
static bool current_power = false;
static uint8_t current_brightness = 0;
static uint32_t current_temp = 6600;
@@ -25,7 +25,7 @@ static HS_color_t current_HS = {0, 0};
static RGB_color_t mRGB;
static led_strip_t *strip = NULL;
esp_err_t light_driver_init(light_driver_config_t *config)
esp_err_t led_driver_init(led_driver_config_t *config)
{
ESP_LOGI(TAG, "Initializing light driver");
esp_err_t err = ESP_OK;
@@ -50,13 +50,13 @@ esp_err_t light_driver_init(light_driver_config_t *config)
return err;
}
esp_err_t light_driver_set_power(bool power)
esp_err_t led_driver_set_power(bool power)
{
current_power = power;
return light_driver_set_brightness(current_brightness);
return led_driver_set_brightness(current_brightness);
}
esp_err_t light_driver_set_RGB()
esp_err_t led_driver_set_RGB()
{
esp_err_t err = ESP_OK;
if (!strip) {
@@ -77,7 +77,7 @@ esp_err_t light_driver_set_RGB()
return err;
}
esp_err_t light_driver_set_brightness(uint8_t brightness)
esp_err_t led_driver_set_brightness(uint8_t brightness)
{
if (brightness != 0) {
current_brightness = brightness;
@@ -86,55 +86,55 @@ esp_err_t light_driver_set_brightness(uint8_t brightness)
brightness = 0;
}
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
esp_err_t light_driver_set_hue(uint16_t hue)
esp_err_t led_driver_set_hue(uint16_t hue)
{
uint8_t brightness = current_power ? current_brightness : 0;
current_HS.hue = hue;
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
esp_err_t light_driver_set_saturation(uint8_t saturation)
esp_err_t led_driver_set_saturation(uint8_t saturation)
{
uint8_t brightness = current_power ? current_brightness : 0;
current_HS.saturation = saturation;
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
esp_err_t light_driver_set_temperature(uint32_t temperature)
esp_err_t led_driver_set_temperature(uint32_t temperature)
{
uint8_t brightness = current_power ? current_brightness : 0;
current_temp = temperature;
temp_to_hs(current_temp, &current_HS);
hsv_to_rgb(current_HS, brightness, &mRGB);
return light_driver_set_RGB();
return led_driver_set_RGB();
}
bool light_driver_get_power()
bool led_driver_get_power()
{
return current_power;
}
uint8_t light_driver_get_brightness()
uint8_t led_driver_get_brightness()
{
return current_brightness;
}
uint16_t light_driver_get_hue()
uint16_t led_driver_get_hue()
{
return current_HS.hue;
}
uint8_t light_driver_get_saturation()
uint8_t led_driver_get_saturation()
{
return current_HS.saturation;
}
uint32_t light_driver_get_temperature()
uint32_t led_driver_get_temperature()
{
return current_temp;
}
-10
View File
@@ -1,10 +0,0 @@
include($ENV{ESP_MATTER_DEVICE_PATH}/esp_matter_device.cmake)
set(light_requires driver)
if ("${light_type}" STREQUAL "ws2812")
list(APPEND light_requires led_strip)
elseif ("${light_type}" STREQUAL "vled")
list(APPEND light_requires tft spidriver)
endif()
idf_component_register(SRC_DIRS ${light_type} utils
INCLUDE_DIRS include
PRIV_REQUIRES ${light_requires})