From 4edebf206e65bda841eef0b9b90148c0dfd0c284 Mon Sep 17 00:00:00 2001 From: ismail Date: Thu, 11 Sep 2025 15:50:34 +0300 Subject: [PATCH] Add a multi channel example Added a multi channel example with run limit, tilting and channel selection features. Refs #1104 and closes #1111. --- examples/relay_chn_multi/.gitignore | 3 + .../.vscode/c_cpp_properties.json | 23 + examples/relay_chn_multi/.vscode/launch.json | 15 + .../relay_chn_multi/.vscode/settings.json | 6 + examples/relay_chn_multi/CMakeLists.txt | 10 + examples/relay_chn_multi/README.md | 176 ++++++++ .../relay_chn_multi/example_schematic.png | Bin 0 -> 135707 bytes examples/relay_chn_multi/main/CMakeLists.txt | 2 + .../relay_chn_multi/main/Kconfig.projbuild | 52 +++ .../relay_chn_multi/main/idf_component.yml | 8 + .../main/relay_chn_multi_main.c | 427 ++++++++++++++++++ examples/relay_chn_multi/sdkconfig.defaults | 10 + 12 files changed, 732 insertions(+) create mode 100644 examples/relay_chn_multi/.gitignore create mode 100644 examples/relay_chn_multi/.vscode/c_cpp_properties.json create mode 100644 examples/relay_chn_multi/.vscode/launch.json create mode 100644 examples/relay_chn_multi/.vscode/settings.json create mode 100644 examples/relay_chn_multi/CMakeLists.txt create mode 100644 examples/relay_chn_multi/README.md create mode 100644 examples/relay_chn_multi/example_schematic.png create mode 100644 examples/relay_chn_multi/main/CMakeLists.txt create mode 100644 examples/relay_chn_multi/main/Kconfig.projbuild create mode 100644 examples/relay_chn_multi/main/idf_component.yml create mode 100644 examples/relay_chn_multi/main/relay_chn_multi_main.c create mode 100644 examples/relay_chn_multi/sdkconfig.defaults diff --git a/examples/relay_chn_multi/.gitignore b/examples/relay_chn_multi/.gitignore new file mode 100644 index 0000000..51c9513 --- /dev/null +++ b/examples/relay_chn_multi/.gitignore @@ -0,0 +1,3 @@ +build/ +sdkconfig +sdkconfig.old \ No newline at end of file diff --git a/examples/relay_chn_multi/.vscode/c_cpp_properties.json b/examples/relay_chn_multi/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..badb83d --- /dev/null +++ b/examples/relay_chn_multi/.vscode/c_cpp_properties.json @@ -0,0 +1,23 @@ +{ + "configurations": [ + { + "name": "ESP-IDF", + "compilerPath": "${config:idf.toolsPath}/tools/riscv32-esp-elf/esp-14.2.0_20241119/riscv32-esp-elf/bin/riscv32-esp-elf-gcc", + "compileCommands": "/disk/Projeler/ESP-Components/relay_chn/examples/relay_chn_single/build/compile_commands.json", + "includePath": [ + "${config:idf.espIdfPath}/components/**", + "${config:idf.espIdfPathWin}/components/**", + "${workspaceFolder}/**" + ], + "browse": { + "path": [ + "${config:idf.espIdfPath}/components", + "${config:idf.espIdfPathWin}/components", + "${workspaceFolder}" + ], + "limitSymbolsToIncludedHeaders": true + } + } + ], + "version": 4 +} diff --git a/examples/relay_chn_multi/.vscode/launch.json b/examples/relay_chn_multi/.vscode/launch.json new file mode 100644 index 0000000..2511a38 --- /dev/null +++ b/examples/relay_chn_multi/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "gdbtarget", + "request": "attach", + "name": "Eclipse CDT GDB Adapter" + }, + { + "type": "espidf", + "name": "Launch", + "request": "launch" + } + ] +} \ No newline at end of file diff --git a/examples/relay_chn_multi/.vscode/settings.json b/examples/relay_chn_multi/.vscode/settings.json new file mode 100644 index 0000000..9fa2d52 --- /dev/null +++ b/examples/relay_chn_multi/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "C_Cpp.intelliSenseEngine": "default", + "files.associations": { + "led_indicator_blink_default.h": "c" + } +} diff --git a/examples/relay_chn_multi/CMakeLists.txt b/examples/relay_chn_multi/CMakeLists.txt new file mode 100644 index 0000000..c64f60a --- /dev/null +++ b/examples/relay_chn_multi/CMakeLists.txt @@ -0,0 +1,10 @@ +# For more information about build system see +# https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html +# The following five lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +set(COMPONENTS main) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(relay_chn_single) \ No newline at end of file diff --git a/examples/relay_chn_multi/README.md b/examples/relay_chn_multi/README.md new file mode 100644 index 0000000..54b6f47 --- /dev/null +++ b/examples/relay_chn_multi/README.md @@ -0,0 +1,176 @@ +# Relay Channel Multi Example + +## Introduction + +This example demonstrates how to use the relay channel component to control a 3-channel setup with button inputs and LED status indication. It showcases: + +- Basic relay channel operations (forward/reverse running, stopping) +- Secondary operations (tilting, direction flipping) +- State change event handling with a listener +- Relay channel run limit +- Button event handling using esp-iot-solution's button component +- Visual feedback using esp-iot-solution's LED indicator component + +## How to Use Example + +This example has been tested on an `ESP32-C3-DevKitM-1U` board. However, it can be adapted to any ESP32-based board with at least six available GPIO pins by adjusting the configuration options. + +### Hardware Required + +* An ESP32-based development board +* 2 relays connected to GPIO pins (default: GPIO4, GPIO5) +* 3 buttons connected to GPIO pins: + - UP button (default: GPIO0) + - DOWN button (default: GPIO1) + - STOP button (default: GPIO2) + - SELECT button (default: GPIO3) +* LED indicators for status indication of each channel (default: GPIO4, GPIO10 and GPIO9 respectively) + +#### Hardware Schematic + +Relay blocks are ommitted for simplicity. You can refer to schematic of the [Single-channel example](/examples/relay_chn_single/README.md) for a fully implemented relay block. + +> [!NOTE] +> A single relay channel consists of two relay block and two GPIO pins. + +![Hardware Schematic](example_schematic.png) + +### Configuration + +The example can be configured through `menuconfig` under "Relay Channel Multi Example Configuration": + +1. Button active level (`EXAMPLE_RLCHN_BTN_ACTIVE_LEVEL`) + - Select between active LOW or HIGH logic level for buttons + +2. GPIO assignments: + - UP button pin (`EXAMPLE_RLCHN_BTN_UP_IO_NUM`, default: 0) + - DOWN button pin (`EXAMPLE_RLCHN_BTN_DOWN_IO_NUM`, default: 1) + - STOP button pin (`EXAMPLE_RLCHN_BTN_STOP_IO_NUM`, default: 2) + - SELECT button pin (`EXAMPLE_RLCHN_BTN_SELECT_IO_NUM`, default: 3) + - LED indicator pin (`EXAMPLE_RLCHN_LED_INDICATOR1_IO_NUM`, default: 4) + - LED indicator pin (`EXAMPLE_RLCHN_LED_INDICATOR2_IO_NUM`, default: 10) + - LED indicator pin (`EXAMPLE_RLCHN_LED_INDICATOR3_IO_NUM`, default: 9) + +3. Long press timing: + - `EXAMPLE_RLCHN_BTN_LONG_PRESS_TIME_MS`: Duration for long press actions (1500-3000ms, default: 2000ms) + +### Button Operations + +The example uses esp-iot-solution's `button` component to handle the following operations: + +- **UP button**: + * Short press: Start forward movement + * Long press: Start forward tilt (stops on release) + +- **DOWN button**: + * Short press: Start reverse movement + * Long press: Start reverse tilt (stops on release) + +- **STOP button**: + * Short press: Stop movement + * Long press: Flip movement direction + +- **SELECT button**: + * Short press: Selects a channel to operate + * Long press: Selects all channels to operate in batch + +### LED Indicator States + +The example uses esp-iot-solution's `led_indicator` component to show different states: + +- **Running**: LED blinks at 300ms on, 100ms off +- **Tilting**: Fast blink at 100ms on, 50ms off +- **Operation Success**: Two quick blinks +- **Operation Fail**: One long blink + +### Dependencies + +This example requires: +- ESP-IDF v4.1 or later +- esp-iot-solution components: + * button v4.1.1 or later + * led_indicator v1.1.1 or later +- relay_chn component + +## Example Output + +When the application boots, it will wait for a button event. Then ta state listener will print state changes. + +```log +I (269) main_task: Calling app_main() +I (269) RELAY_CHN_MULTI_EXAMPLE: Initializing relay channel +I (279) gpio: GPIO[18]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (279) gpio: GPIO[19]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (289) gpio: GPIO[5]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (299) gpio: GPIO[6]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (309) gpio: GPIO[7]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (319) gpio: GPIO[8]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (329) RELAY_CHN_MULTI_EXAMPLE: Initializing buttons +I (329) RELAY_CHN_MULTI_EXAMPLE: Initializing buttons with active level: 0 +I (339) gpio: GPIO[0]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (339) button: IoT Button Version: 4.1.3 +I (349) gpio: GPIO[1]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (359) gpio: GPIO[2]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (359) gpio: GPIO[3]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (369) RELAY_CHN_MULTI_EXAMPLE: Setting up button callbacks. Configured long press time: 2000 ms +I (379) RELAY_CHN_MULTI_EXAMPLE: Initializing LED indicator +I (389) gpio: GPIO[4]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (389) led_indicator: LED Indicator Version: 1.1.1 +I (399) gpio: GPIO[4]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (409) led_indicator: Indicator create successfully. type:GPIO mode, hardware_data:0x3fc96498, blink_lists:custom +I (419) gpio: GPIO[10]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (429) led_indicator: LED Indicator Version: 1.1.1 +I (429) gpio: GPIO[10]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (439) led_indicator: Indicator create successfully. type:GPIO mode, hardware_data:0x3fc965a4, blink_lists:custom +I (449) gpio: GPIO[9]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0 +I (459) led_indicator: LED Indicator Version: 1.1.1 +I (459) gpio: GPIO[9]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 +I (469) led_indicator: Indicator create successfully. type:GPIO mode, hardware_data:0x3fc966b0, blink_lists:custom +I (479) RELAY_CHN_MULTI_EXAMPLE: Relay Channel Multi Example is ready to operate +I (489) main_task: Returned from app_main() +I (3759) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from IDLE to FORWARD +I (6639) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from FORWARD to STOPPED +I (7439) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from STOPPED to IDLE +I (7439) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from IDLE to TILT_FORWARD +I (8119) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from TILT_FORWARD to IDLE +I (13579) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from IDLE to TILT_REVERSE +I (14419) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from TILT_REVERSE to IDLE +I (20319) RELAY_CHN_MULTI_EXAMPLE: Selected channel: 1 +I (21479) RELAY_CHN_MULTI_EXAMPLE: Selected channel: 2 +I (22229) RELAY_CHN_MULTI_EXAMPLE: Selected channel: 0 +I (23169) RELAY_CHN_MULTI_EXAMPLE: Selected channel: 1 +I (29039) RELAY_CHN_MULTI_EXAMPLE: Selected all channels +I (35419) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from IDLE to FORWARD +I (35419) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from IDLE to FORWARD +I (35419) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from IDLE to FORWARD +I (39349) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from FORWARD to STOPPED +I (39349) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from FORWARD to STOPPED +I (39359) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from FORWARD to STOPPED +I (40149) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from STOPPED to IDLE +I (40149) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from IDLE to TILT_FORWARD +I (40159) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from STOPPED to IDLE +I (40169) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from IDLE to TILT_FORWARD +I (40179) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from STOPPED to IDLE +I (40189) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from IDLE to TILT_FORWARD +I (41699) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from TILT_FORWARD to IDLE +I (41699) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from TILT_FORWARD to IDLE +I (41709) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from TILT_FORWARD to IDLE +I (64129) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from IDLE to TILT_REVERSE +I (64129) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from IDLE to TILT_REVERSE +I (64139) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from IDLE to TILT_REVERSE +I (68929) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from TILT_REVERSE to IDLE +I (68929) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from TILT_REVERSE to IDLE +I (68939) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from TILT_REVERSE to IDLE +I (280109) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from IDLE to FORWARD +I (280109) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from IDLE to FORWARD +I (280109) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from IDLE to FORWARD +I (283219) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from FORWARD to STOPPED +I (283219) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from STOPPED to REVERSE_PENDING +I (283229) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from FORWARD to STOPPED +I (283239) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from STOPPED to REVERSE_PENDING +I (283249) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from FORWARD to STOPPED +I (283259) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from STOPPED to REVERSE_PENDING +I (284019) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #0, from REVERSE_PENDING to REVERSE +I (284019) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #1, from REVERSE_PENDING to REVERSE +I (284029) RELAY_CHN_MULTI_EXAMPLE: example_event_listener: State change for #2, from REVERSE_PENDING to REVERSE +``` \ No newline at end of file diff --git a/examples/relay_chn_multi/example_schematic.png b/examples/relay_chn_multi/example_schematic.png new file mode 100644 index 0000000000000000000000000000000000000000..45c4aff4e41f91a5fb94fe57873d51c7f962a88a GIT binary patch literal 135707 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�(n=JIL-=?z>p){K>x?jC188fV%uae@A{s!Vp1 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 m>)HSR2-v9qH}?h6y~}x~sImF8`=4.1.0' + espressif/button: ^4.1.1 + espressif/led_indicator: ^1.1.1 + relay_chn: + version: '*' + override_path: ../../../ diff --git a/examples/relay_chn_multi/main/relay_chn_multi_main.c b/examples/relay_chn_multi/main/relay_chn_multi_main.c new file mode 100644 index 0000000..e209ed2 --- /dev/null +++ b/examples/relay_chn_multi/main/relay_chn_multi_main.c @@ -0,0 +1,427 @@ +/* + * SPDX-FileCopyrightText: 2025 Kozmotronik Tech + * + * SPDX-License-Identifier: MIT + */ + +#include +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "esp_err.h" +#include "esp_log.h" +#include "esp_check.h" +#include "driver/gpio.h" +#include "nvs.h" +#include "nvs_flash.h" +#include "esp_timer.h" +#include "button_gpio.h" +#include "iot_button.h" +#include "led_indicator.h" +#include "relay_chn.h" + +static const char *TAG = "RELAY_CHN_MULTI_EXAMPLE"; + +#define EXAMPLE_CHN_INDICATOR_ON_TIME_MS 3000 +#define EXAMPLE_ALL_CHANNELS CONFIG_RELAY_CHN_COUNT + + +/** + * @brief LED indicator modes for different states. + */ +typedef enum { + INDICATOR_MODE_SELECT, /*!< Channel select indication */ + INDICATOR_MODE_OK, /*!< OK/Success indication */ + INDICATOR_MODE_FAIL, /*!< Fail/Error indication */ + INDICATOR_MODE_TILTING, /*!< Tilting operation in progress */ + INDICATOR_MODE_RUNNING, /*!< Full run operation in progress */ + INDICATOR_MODE_MAX /*!< Maximum number of indicator modes */ +} indicator_mode_t; + +/** @brief Blink pattern for channel select indication. */ +static const blink_step_t indc_mode_select[] = { + {LED_BLINK_HOLD, LED_STATE_ON, EXAMPLE_CHN_INDICATOR_ON_TIME_MS}, // step1: turn on LED 3000 ms + {LED_BLINK_HOLD, LED_STATE_OFF, 10}, // step2: turn off LED 500 ms + {LED_BLINK_STOP, 0, 0}, // step4: stop blink (off) +}; + +/** @brief Blink pattern for OK/Success indication. */ +static const blink_step_t indc_mode_ok[] = { + {LED_BLINK_HOLD, LED_STATE_ON, 100}, // step1: turn on LED 100 ms + {LED_BLINK_HOLD, LED_STATE_OFF, 50}, // step2: turn off LED 50 ms + {LED_BLINK_HOLD, LED_STATE_ON, 100}, // step3: turn on LED 100 ms + {LED_BLINK_HOLD, LED_STATE_OFF, 50}, // step4: turn off LED 50 ms + {LED_BLINK_STOP, 0, 0}, // step5: stop blink (off) +}; + +/** @brief Blink pattern for Fail/Error indication. */ +static const blink_step_t indc_mode_fail[] = { + {LED_BLINK_HOLD, LED_STATE_ON, 1000}, // step1: turn on LED 1000 ms + {LED_BLINK_HOLD, LED_STATE_OFF, 500}, // step2: turn off LED 500 ms + {LED_BLINK_STOP, 0, 0}, // step4: stop blink (off) +}; + +/** @brief Blink pattern for full run operation. */ +static const blink_step_t indc_mode_running[] = { + {LED_BLINK_HOLD, LED_STATE_ON, 300}, // step1: turn on LED 300 ms + {LED_BLINK_HOLD, LED_STATE_OFF, 100}, // step2: turn off LED 100 ms + {LED_BLINK_LOOP, 0, 0}, // step3: loop from step1 +}; + +/** @brief Blink pattern for tilting operation. */ +static const blink_step_t indc_mode_tilting[] = { + {LED_BLINK_HOLD, LED_STATE_ON, 100}, // step1: turn on LED 100 ms + {LED_BLINK_HOLD, LED_STATE_OFF, 50}, // step2: turn off LED 50 ms + {LED_BLINK_LOOP, 0, 0}, // step3: loop from step1 +}; + +/** @brief Array of LED indicator blink patterns. */ +blink_step_t const *led_indicator_modes[] = { + [INDICATOR_MODE_SELECT] = indc_mode_select, + [INDICATOR_MODE_OK] = indc_mode_ok, + [INDICATOR_MODE_FAIL] = indc_mode_fail, + [INDICATOR_MODE_RUNNING] = indc_mode_running, + [INDICATOR_MODE_TILTING] = indc_mode_tilting, + [INDICATOR_MODE_MAX] = NULL, +}; + +/** @brief Handle for the LED indicator. */ +static led_indicator_handle_t indicators[CONFIG_RELAY_CHN_COUNT]; +static uint8_t selected_channel = 0; /*!< Currently selected channel */ +static uint8_t selected_channel_backup = 0; /*!< Backup for last selected channel */ +static int64_t last_indc_update_us = 0; /*!< Timestamp of the last channel selection */ + + +/** + * @brief Initializes the buttons for user interaction. + * + * This function configures and creates GPIO buttons for UP, DOWN, and STOP + * operations. It also registers callbacks for single-click and long-press + * events to control the relay channel. + * + * @return esp_err_t + * - ESP_OK: Success + * - Others: Fail + */ +static esp_err_t init_buttons(void); + +/** + * @brief Initializes the LED indicator. + * + * This function configures and creates the LED indicator used to provide + * visual feedback on the relay channel's status. + * + * @return esp_err_t + * - ESP_OK: Success + * - ESP_FAIL: Fail + */ +static esp_err_t init_led_indicators(void); + +/** + * @brief Starts all indicators with the specified mode. + * + * @param mode One of the indicator modes defined with indicator_mode_t. + */ +static void start_all_indicators_for_mode(indicator_mode_t mode); + +/** + * @brief Stops all indicators with the specified mode. + * + * @param mode One of the indicator modes defined with indicator_mode_t. + */ +static void stop_all_indicators_for_mode(indicator_mode_t mode); + +/** + * @brief Event listener for relay channel state changes to log the state transition. + */ +static void example_event_listener(uint8_t ch, relay_chn_state_t old_state, relay_chn_state_t new_state); + +void app_main(void) +{ + const uint8_t gpio_map[] = { 18, 19, 5, 6, 7, 8 }; + const uint8_t gpio_count = sizeof(gpio_map) / sizeof(gpio_map[0]); + + ESP_LOGI(TAG, "Initializing relay channel"); + ESP_ERROR_CHECK(relay_chn_create(gpio_map, gpio_count)); + ESP_ERROR_CHECK(relay_chn_register_listener(example_event_listener)); + + ESP_LOGI(TAG, "Initializing buttons"); + ESP_ERROR_CHECK(init_buttons()); + ESP_LOGI(TAG, "Initializing LED indicator"); + ESP_ERROR_CHECK(init_led_indicators()); + + ESP_LOGI(TAG, "Relay Channel Multi Example is ready to operate"); + + // Indicate init was successful + start_all_indicators_for_mode(INDICATOR_MODE_OK); +} + +static void on_click_up(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + relay_chn_run_forward_all(); + } else { + relay_chn_run_forward(selected_channel); + } +} + +static void on_click_down(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + relay_chn_run_reverse_all(); + } else { + relay_chn_run_reverse(selected_channel); + } +} + +static void on_click_stop(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + relay_chn_stop_all(); + } else { + relay_chn_stop(selected_channel); + } +} + +static void on_click_flip(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + relay_chn_flip_direction_all(); + start_all_indicators_for_mode(INDICATOR_MODE_OK); + } else { + relay_chn_flip_direction(selected_channel); + led_indicator_start(indicators[selected_channel], INDICATOR_MODE_OK); + } +} + +static void on_click_tilt_up(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + relay_chn_tilt_forward_all(); + } else { + relay_chn_tilt_forward(selected_channel); + } +} + +static void on_click_tilt_down(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + relay_chn_tilt_reverse_all(); + } else { + relay_chn_tilt_reverse(selected_channel); + } +} + +static void on_release_tilt(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + relay_chn_tilt_stop_all(); + } else { + relay_chn_tilt_stop(selected_channel); + } +} + +static void on_click_select(void *arg, void *data) +{ + int64_t now_us = esp_timer_get_time(); + uint32_t delta_ms = (now_us - last_indc_update_us) / 1000; + if (delta_ms >= EXAMPLE_CHN_INDICATOR_ON_TIME_MS) { + // Channel indicator was off, turn it on first + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + start_all_indicators_for_mode(INDICATOR_MODE_SELECT); + } else { + led_indicator_start(indicators[selected_channel], INDICATOR_MODE_SELECT); + } + last_indc_update_us = esp_timer_get_time(); // Save last selection time + return; + } + + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + // All channels selected previously, restore the selected channel + selected_channel = selected_channel_backup; + ESP_LOGI(TAG, "Restored selected channel: %d", selected_channel); + stop_all_indicators_for_mode(INDICATOR_MODE_SELECT); + led_indicator_start(indicators[selected_channel], INDICATOR_MODE_SELECT); + return; + } + + // Channel indicator is turned on, select the next channel + selected_channel = ((selected_channel + 1) % CONFIG_RELAY_CHN_COUNT); + ESP_LOGI(TAG, "Selected channel: %d", selected_channel); + // Update the indicator + stop_all_indicators_for_mode(INDICATOR_MODE_SELECT); + led_indicator_start(indicators[selected_channel], INDICATOR_MODE_SELECT); + last_indc_update_us = esp_timer_get_time(); // Save last selection time +} + +static void on_click_select_all(void *arg, void *data) +{ + if (selected_channel == EXAMPLE_ALL_CHANNELS) { + ESP_LOGI(TAG, "All channels are selected already"); + int64_t now_us = esp_timer_get_time(); + uint32_t delta_ms = (now_us - last_indc_update_us) / 1000; + // If the indicators in sleep, wake up + if (delta_ms >= EXAMPLE_CHN_INDICATOR_ON_TIME_MS) { + start_all_indicators_for_mode(INDICATOR_MODE_SELECT); + } + return; + } + + selected_channel_backup = selected_channel; + selected_channel = EXAMPLE_ALL_CHANNELS; + ESP_LOGI(TAG, "Selected all channels"); + start_all_indicators_for_mode(INDICATOR_MODE_SELECT); + last_indc_update_us = esp_timer_get_time(); // Save last selection time +} + +static void start_all_indicators_for_mode(indicator_mode_t mode) +{ + for (int i = 0; i < CONFIG_RELAY_CHN_COUNT; i++) { + led_indicator_start(indicators[i], mode); + } +} + +static void stop_all_indicators_for_mode(indicator_mode_t mode) +{ + for (int i = 0; i < CONFIG_RELAY_CHN_COUNT; i++) { + led_indicator_stop(indicators[i], mode); + led_indicator_set_on_off(indicators[i], false); + } +} + +static void example_event_listener(uint8_t ch, relay_chn_state_t old_state, relay_chn_state_t new_state) +{ + ESP_LOGI(TAG, "example_event_listener: State change for #%d, from %s to %s", + ch, relay_chn_state_to_str(old_state), relay_chn_state_to_str(new_state)); + switch (new_state) { + case RELAY_CHN_STATE_FORWARD: + case RELAY_CHN_STATE_REVERSE: + led_indicator_start(indicators[ch], INDICATOR_MODE_RUNNING); + break; + + case RELAY_CHN_STATE_STOPPED: + case RELAY_CHN_STATE_IDLE: + if (old_state == RELAY_CHN_STATE_FORWARD || old_state == RELAY_CHN_STATE_REVERSE) { + led_indicator_stop(indicators[ch], INDICATOR_MODE_RUNNING); + // Make sure the indicator turned off + led_indicator_set_on_off(indicators[ch], false); + } + else if (old_state == RELAY_CHN_STATE_TILT_FORWARD || old_state == RELAY_CHN_STATE_TILT_REVERSE) { + led_indicator_stop(indicators[ch], INDICATOR_MODE_TILTING); + // Make sure the indicator turned off + led_indicator_set_on_off(indicators[ch], false); + } + break; + + case RELAY_CHN_STATE_TILT_FORWARD: + case RELAY_CHN_STATE_TILT_REVERSE: + led_indicator_start(indicators[ch], INDICATOR_MODE_TILTING); + break; + + default: // No-op + } +} + +static esp_err_t init_buttons() +{ + esp_err_t ret; + button_config_t btn_cfg = {0}; + + uint8_t active_level = CONFIG_EXAMPLE_RLCHN_BTN_ACTIVE_LEVEL_LOW ? 0 : 1; + + button_gpio_config_t btn_gpio_ccfg = { + .gpio_num = (gpio_num_t) CONFIG_EXAMPLE_RLCHN_BTN_UP_IO_NUM, + .active_level = active_level + }; + + ESP_LOGI(TAG, "Initializing buttons with active level: %u", active_level); + button_handle_t btn_up = NULL, btn_down = NULL, btn_stop = NULL, btn_select = NULL; + // --- Create buttons --- + ret = iot_button_new_gpio_device(&btn_cfg, &btn_gpio_ccfg, &btn_up); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to create UP button"); + ESP_RETURN_ON_FALSE(btn_up != NULL, ret, TAG, "Failed to create UP button"); + + btn_gpio_ccfg.gpio_num = (gpio_num_t) CONFIG_EXAMPLE_RLCHN_BTN_DOWN_IO_NUM; + ret = iot_button_new_gpio_device(&btn_cfg, &btn_gpio_ccfg, &btn_down); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to create DOWN button"); + ESP_RETURN_ON_FALSE(btn_down != NULL, ret, TAG, "Failed to create DOWN button"); + + btn_gpio_ccfg.gpio_num = (gpio_num_t) CONFIG_EXAMPLE_RLCHN_BTN_STOP_IO_NUM; + ret = iot_button_new_gpio_device(&btn_cfg, &btn_gpio_ccfg, &btn_stop); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to create STOP button"); + ESP_RETURN_ON_FALSE(btn_stop != NULL, ret, TAG, "Failed to create STOP button"); + + btn_gpio_ccfg.gpio_num = (gpio_num_t) CONFIG_EXAMPLE_RLCHN_BTN_SELECT_IO_NUM; + ret = iot_button_new_gpio_device(&btn_cfg, &btn_gpio_ccfg, &btn_select); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to create SELECT button"); + ESP_RETURN_ON_FALSE(btn_select != NULL, ret, TAG, "Failed to create SELECT button"); + // --- Create buttons --- + + // --- Register button callbacks --- + ESP_LOGI(TAG, "Setting up button callbacks. Configured long press time: %d ms", CONFIG_EXAMPLE_RLCHN_BTN_LONG_PRESS_TIME_MS); + button_event_args_t btn_event_args = { + .long_press.press_time = CONFIG_EXAMPLE_RLCHN_BTN_LONG_PRESS_TIME_MS + }; + // --- Register UP and TILT_UP operations on UP button --- + ret = iot_button_register_cb(btn_up, BUTTON_SINGLE_CLICK, NULL, on_click_up, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register UP button click callback"); + ret = iot_button_register_cb(btn_up, BUTTON_LONG_PRESS_START, &btn_event_args, on_click_tilt_up, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register TILT_UP button press callback"); + ret = iot_button_register_cb(btn_up, BUTTON_LONG_PRESS_UP, NULL, on_release_tilt, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register TILT_UP button release callback"); + + // --- Register DOWN and TILT_DOWN operations on DOWN button --- + ret = iot_button_register_cb(btn_down, BUTTON_SINGLE_CLICK, NULL, on_click_down, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register DOWN button click callback"); + ret = iot_button_register_cb(btn_down, BUTTON_LONG_PRESS_START, &btn_event_args, on_click_tilt_down, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register TILT_DOWN button press callback"); + ret = iot_button_register_cb(btn_down, BUTTON_LONG_PRESS_UP, NULL, on_release_tilt, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register TILT_DOWN button release callback"); + + // --- Register STOP and FLIP operations on STOP --- + ret = iot_button_register_cb(btn_stop, BUTTON_SINGLE_CLICK, NULL, on_click_stop, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register STOP button click callback"); + ret = iot_button_register_cb(btn_stop, BUTTON_LONG_PRESS_START, &btn_event_args, on_click_flip, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register FLIP button press callback"); + + // --- Register channel SELECT and SELECT_ALL --- + ret = iot_button_register_cb(btn_select, BUTTON_SINGLE_CLICK, NULL, on_click_select, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register SELECT button click callback"); + ret = iot_button_register_cb(btn_select, BUTTON_LONG_PRESS_START, &btn_event_args, on_click_select_all, NULL); + ESP_RETURN_ON_ERROR(ret, TAG, "Failed to register SELECT_ALL press callback"); + + return ESP_OK; +} + +static esp_err_t init_led_indicators() +{ + const int indicator_io_nums[CONFIG_RELAY_CHN_COUNT] = { + CONFIG_EXAMPLE_RLCHN_LED_INDICATOR1_IO_NUM, + CONFIG_EXAMPLE_RLCHN_LED_INDICATOR2_IO_NUM, + CONFIG_EXAMPLE_RLCHN_LED_INDICATOR3_IO_NUM + }; + + for (int i = 0; i < CONFIG_RELAY_CHN_COUNT; i++) { + gpio_num_t indicator_io_num = (gpio_num_t) indicator_io_nums[i]; + gpio_reset_pin(indicator_io_num); // Clear the output buffers + + led_indicator_gpio_config_t led_indicator_gpio_cfg = { + .gpio_num = indicator_io_num, + .is_active_level_high = true + }; + + led_indicator_config_t led_indicator_cfg = { + .mode = LED_GPIO_MODE, + .led_indicator_gpio_config = &led_indicator_gpio_cfg, + .blink_lists = led_indicator_modes, + .blink_list_num = INDICATOR_MODE_MAX + }; + + indicators[i] = led_indicator_create(&led_indicator_cfg); + if (!indicators[i]) { + ESP_LOGE(TAG, "Failed to create LED indicator"); + return ESP_FAIL; + } + } + + return ESP_OK; +} diff --git a/examples/relay_chn_multi/sdkconfig.defaults b/examples/relay_chn_multi/sdkconfig.defaults new file mode 100644 index 0000000..2eeaa43 --- /dev/null +++ b/examples/relay_chn_multi/sdkconfig.defaults @@ -0,0 +1,10 @@ +# Halt on panic +CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y + +# Relay Channel Configs +CONFIG_RELAY_CHN_ENABLE_RUN_LIMIT=y +CONFIG_RELAY_CHN_COUNT=3 +# Keep this as short as possible for example purposes +CONFIG_RELAY_CHN_RUN_LIMIT_MIN_SEC=5 +CONFIG_RELAY_CHN_RUN_LIMIT_DEFAULT_SEC=20 +CONFIG_RELAY_CHN_ENABLE_TILTING=y