Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include "esp_err.h"
- #include "esp_mesh.h"
- #include "mesh_light.h"
- #define CONFIG_MESH_ROUTE_TABLE_SIZE 20 // dimenisunea maxima a tabelei de rutare
- #define CONFIG_MESH_MAX_LAYER 3 // numarul maxim de niveluri ale arborelui
- #define CONFIG_MESH_CHANNEL 1 // canalul WiFi pe care se creaza reteaua mesh (trebuie sa coincida cu canalul AP-ului !)
- #define CONFIG_MESH_ROUTER_SSID "lab-iot" // SSID-ul AP-ului la care se va conecta nodul root
- #define CONFIG_MESH_ROUTER_PASSWD "IoT-IoT-IoT" // parola
- #define CONFIG_MESH_AP_AUTHMODE WIFI_AUTH_WPA_WPA2_PSK // metoda de securitate folosita pentru interfetele softAP
- #define CONFIG_MESH_AP_CONNECTIONS 3 // numarul maxim de noduri fiu
- #define CONFIG_MESH_AP_PASSWD "12345678" // parola pentru conectarea la interfata softAP (ptr WPA2 min 8 caractere
- #include "driver/gpio.h"
- #include "driver/ledc.h"
- /*******************************************************
- * Constants
- *******************************************************/
- /* RGB configuration on ESP-WROVER-KIT board */
- #define LEDC_IO_0 (0)
- #define LEDC_IO_1 (2)
- #define LEDC_IO_2 (4)
- #define LEDC_IO_3 (5)
- /*******************************************************
- * Variable Definitions
- *******************************************************/
- static bool s_light_inited = false;
- /*******************************************************
- * Function Definitions
- *******************************************************/
- esp_err_t mesh_light_init(void)
- {
- if (s_light_inited == true) {
- return ESP_OK;
- }
- s_light_inited = true;
- ledc_timer_config_t ledc_timer = {
- .bit_num = LEDC_TIMER_13_BIT,
- .freq_hz = 5000,
- .speed_mode = LEDC_HIGH_SPEED_MODE,
- .timer_num = LEDC_TIMER_0
- };
- ledc_timer_config(&ledc_timer);
- ledc_channel_config_t ledc_channel = {
- .channel = LEDC_CHANNEL_0,
- .duty = 100,
- .gpio_num = LEDC_IO_0,
- .intr_type = LEDC_INTR_FADE_END,
- .speed_mode = LEDC_HIGH_SPEED_MODE,
- .timer_sel = LEDC_TIMER_0
- };
- ledc_channel_config(&ledc_channel);
- ledc_channel.channel = LEDC_CHANNEL_1;
- ledc_channel.gpio_num = LEDC_IO_1;
- ledc_channel_config(&ledc_channel);
- ledc_channel.channel = LEDC_CHANNEL_2;
- ledc_channel.gpio_num = LEDC_IO_2;
- ledc_channel_config(&ledc_channel);
- ledc_channel.channel = LEDC_CHANNEL_3;
- ledc_channel.gpio_num = LEDC_IO_3;
- ledc_channel_config(&ledc_channel);
- ledc_fade_func_install(0);
- mesh_light_set(MESH_LIGHT_INIT);
- return ESP_OK;
- }
- esp_err_t mesh_light_set(int color)
- {
- switch (color) {
- case MESH_LIGHT_RED:
- /* Red */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 0);
- break;
- case MESH_LIGHT_GREEN:
- /* Green */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 0);
- break;
- case MESH_LIGHT_BLUE:
- /* Blue */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 3000);
- break;
- case MESH_LIGHT_YELLOW:
- /* Yellow */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 0);
- break;
- case MESH_LIGHT_PINK:
- /* Pink */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 3000);
- break;
- case MESH_LIGHT_INIT:
- /* can't say */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 3000);
- break;
- case MESH_LIGHT_WARNING:
- /* warning */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 3000);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 3000);
- break;
- default:
- /* off */
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1, 0);
- ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2, 0);
- }
- ledc_update_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0);
- ledc_update_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_1);
- ledc_update_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_2);
- return ESP_OK;
- }
- void mesh_connected_indicator(int layer)
- {
- switch (layer) {
- case 1:
- mesh_light_set(MESH_LIGHT_PINK);
- break;
- case 2:
- mesh_light_set(MESH_LIGHT_YELLOW);
- break;
- case 3:
- mesh_light_set(MESH_LIGHT_RED);
- break;
- case 4:
- mesh_light_set(MESH_LIGHT_BLUE);
- break;
- case 5:
- mesh_light_set(MESH_LIGHT_GREEN);
- break;
- case 6:
- mesh_light_set(MESH_LIGHT_WARNING);
- break;
- default:
- mesh_light_set(0);
- }
- }
- void mesh_disconnected_indicator(void)
- {
- mesh_light_set(MESH_LIGHT_WARNING);
- }
- esp_err_t mesh_light_process(mesh_addr_t *from, uint8_t *buf, uint16_t len)
- {
- mesh_light_ctl_t *in = (mesh_light_ctl_t *) buf;
- if (!from || !buf || len < sizeof(mesh_light_ctl_t)) {
- return ESP_FAIL;
- }
- if (in->token_id != MESH_TOKEN_ID || in->token_value != MESH_TOKEN_VALUE) {
- return ESP_FAIL;
- }
- if (in->cmd == MESH_CONTROL_CMD) {
- if (in->on) {
- mesh_connected_indicator(esp_mesh_get_layer());
- } else {
- mesh_light_set(0);
- }
- }
- return ESP_OK;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement