mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-07 12:07:09 +03:00
add "power" gpio
This commit is contained in:
@@ -297,6 +297,12 @@ CONFIG_AUDIO_CONTROLS=""
|
|||||||
CONFIG_AMP_GPIO=-1
|
CONFIG_AMP_GPIO=-1
|
||||||
# end of AMP configuration
|
# end of AMP configuration
|
||||||
|
|
||||||
|
#
|
||||||
|
# POWER configuration
|
||||||
|
#
|
||||||
|
CONFIG_POWER_GPIO=-1
|
||||||
|
# end of POWER configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
# Audio JACK
|
# Audio JACK
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -264,6 +264,12 @@ CONFIG_CSPOT_SINK=y
|
|||||||
#
|
#
|
||||||
# end of Display Screen
|
# end of Display Screen
|
||||||
|
|
||||||
|
#
|
||||||
|
# POWER configuration
|
||||||
|
#
|
||||||
|
CONFIG_POWER_GPIO=-1
|
||||||
|
# end of POWER configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
# Various I/O
|
# Various I/O
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -288,6 +288,12 @@ CONFIG_AUDIO_CONTROLS=""
|
|||||||
CONFIG_AMP_GPIO=-1
|
CONFIG_AMP_GPIO=-1
|
||||||
# end of AMP configuration
|
# end of AMP configuration
|
||||||
|
|
||||||
|
#
|
||||||
|
# POWER configuration
|
||||||
|
#
|
||||||
|
CONFIG_POWER_GPIO=-1
|
||||||
|
# end of POWER configuration
|
||||||
|
|
||||||
#
|
#
|
||||||
# Compiler options
|
# Compiler options
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -15,13 +15,41 @@
|
|||||||
#include "esp_system.h"
|
#include "esp_system.h"
|
||||||
#include "esp_timer.h"
|
#include "esp_timer.h"
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
|
#include "esp_log.h"
|
||||||
#include "monitor.h"
|
#include "monitor.h"
|
||||||
#include "platform_config.h"
|
#include "platform_config.h"
|
||||||
#include "messaging.h"
|
#include "messaging.h"
|
||||||
|
#include "gpio_exp.h"
|
||||||
|
#include "accessors.h"
|
||||||
|
|
||||||
|
#ifndef CONFIG_POWER_GPIO_LEVEL
|
||||||
|
#define CONFIG_POWER_GPIO_LEVEL 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static const char TAG[] = "embedded";
|
||||||
|
|
||||||
|
static struct {
|
||||||
|
int gpio, active;
|
||||||
|
} power_control = { CONFIG_POWER_GPIO, CONFIG_POWER_GPIO_LEVEL };
|
||||||
|
|
||||||
|
extern void sb_controls_init(void);
|
||||||
|
extern bool sb_displayer_init(void);
|
||||||
|
|
||||||
|
u8_t custom_player_id = 12;
|
||||||
|
|
||||||
mutex_type slimp_mutex;
|
mutex_type slimp_mutex;
|
||||||
static jmp_buf jumpbuf;
|
static jmp_buf jumpbuf;
|
||||||
|
|
||||||
|
#ifndef POWER_LOCKED
|
||||||
|
static void set_power_gpio(int gpio, char *value) {
|
||||||
|
if (strcasestr(value, "power")) {
|
||||||
|
char *p = strchr(value, ':');
|
||||||
|
if (p) power_control.active = atoi(p + 1);
|
||||||
|
power_control.gpio = gpio;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void get_mac(u8_t mac[]) {
|
void get_mac(u8_t mac[]) {
|
||||||
esp_read_mac(mac, ESP_MAC_WIFI_STA);
|
esp_read_mac(mac, ESP_MAC_WIFI_STA);
|
||||||
}
|
}
|
||||||
@@ -56,16 +84,22 @@ uint32_t _gettime_ms_(void) {
|
|||||||
return (uint32_t) (esp_timer_get_time() / 1000);
|
return (uint32_t) (esp_timer_get_time() / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void sb_controls_init(void);
|
|
||||||
extern bool sb_displayer_init(void);
|
|
||||||
|
|
||||||
u8_t custom_player_id = 12;
|
|
||||||
|
|
||||||
int embedded_init(void) {
|
int embedded_init(void) {
|
||||||
mutex_create(slimp_mutex);
|
mutex_create(slimp_mutex);
|
||||||
sb_controls_init();
|
sb_controls_init();
|
||||||
custom_player_id = sb_displayer_init() ? 100 : 101;
|
custom_player_id = sb_displayer_init() ? 100 : 101;
|
||||||
|
|
||||||
|
#ifndef POWER_LOCKED
|
||||||
|
parse_set_GPIO(set_power_gpio);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (power_control.gpio != -1) {
|
||||||
|
gpio_pad_select_gpio_x(power_control.gpio);
|
||||||
|
gpio_set_direction_x(power_control.gpio, GPIO_MODE_OUTPUT);
|
||||||
|
gpio_set_level_x(power_control.gpio, !power_control.active);
|
||||||
|
ESP_LOGI(TAG, "setting power GPIO %d (active:%d)", power_control.gpio, power_control.active);
|
||||||
|
}
|
||||||
|
|
||||||
return setjmp(jumpbuf);
|
return setjmp(jumpbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,6 +107,13 @@ void embedded_exit(int code) {
|
|||||||
longjmp(jumpbuf, code + 1);
|
longjmp(jumpbuf, code + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void powering(bool on) {
|
||||||
|
if (power_control.gpio != -1) {
|
||||||
|
ESP_LOGI(TAG, "powering player %s", on ? "ON" : "OFF");
|
||||||
|
gpio_set_level_x(power_control.gpio, on ? power_control.active : !power_control.active);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
u16_t get_RSSI(void) {
|
u16_t get_RSSI(void) {
|
||||||
wifi_ap_record_t wifidata;
|
wifi_ap_record_t wifidata;
|
||||||
esp_wifi_sta_get_ap_info(&wifidata);
|
esp_wifi_sta_get_ap_info(&wifidata);
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ int embedded_init(void);
|
|||||||
void register_external(void);
|
void register_external(void);
|
||||||
void deregister_external(void);
|
void deregister_external(void);
|
||||||
void decode_restore(int external);
|
void decode_restore(int external);
|
||||||
|
void powering(bool on);
|
||||||
// used when other client wants to use slimproto socket to send messages
|
// used when other client wants to use slimproto socket to send messages
|
||||||
extern mutex_type slimp_mutex;
|
extern mutex_type slimp_mutex;
|
||||||
#define LOCK_P mutex_lock(slimp_mutex)
|
#define LOCK_P mutex_lock(slimp_mutex)
|
||||||
|
|||||||
@@ -441,6 +441,10 @@ static void process_aude(u8_t *pkt, int len) {
|
|||||||
struct aude_packet *aude = (struct aude_packet *)pkt;
|
struct aude_packet *aude = (struct aude_packet *)pkt;
|
||||||
|
|
||||||
LOG_DEBUG("enable spdif: %d dac: %d", aude->enable_spdif, aude->enable_dac);
|
LOG_DEBUG("enable spdif: %d dac: %d", aude->enable_spdif, aude->enable_dac);
|
||||||
|
|
||||||
|
#if EMBEDDED
|
||||||
|
powering(aude->enable_spdif),
|
||||||
|
#endif
|
||||||
|
|
||||||
LOCK_O;
|
LOCK_O;
|
||||||
if (!aude->enable_spdif && output.state != OUTPUT_OFF) {
|
if (!aude->enable_spdif && output.state != OUTPUT_OFF) {
|
||||||
|
|||||||
@@ -148,6 +148,9 @@ menu "Squeezelite-ESP32"
|
|||||||
int
|
int
|
||||||
default 21 if MUSE
|
default 21 if MUSE
|
||||||
default -1
|
default -1
|
||||||
|
config POWER_GPIO
|
||||||
|
int
|
||||||
|
default -1
|
||||||
config JACK_GPIO
|
config JACK_GPIO
|
||||||
int
|
int
|
||||||
default 34 if SQUEEZEAMP || MUSE
|
default 34 if SQUEEZEAMP || MUSE
|
||||||
@@ -405,18 +408,29 @@ menu "Squeezelite-ESP32"
|
|||||||
default 0
|
default 0
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu "Amplifier"
|
menu "External amplifier control"
|
||||||
visible if !TARGET_LOCKED
|
visible if !AMP_LOCKED
|
||||||
config AMP_GPIO
|
config AMP_GPIO
|
||||||
int "Amplifier GPIO"
|
int "Amplifier GPIO"
|
||||||
help
|
help
|
||||||
GPIO to switch on/off amplifier. Set to -1 for no amplifier.
|
GPIO to switch on/off external amplifier. Set to -1 for no amplifier.
|
||||||
config AMP_GPIO_LEVEL
|
config AMP_GPIO_LEVEL
|
||||||
depends on AMP_GPIO != -1
|
depends on AMP_GPIO != -1
|
||||||
int "Active level(0/1)"
|
int "Active level(0/1)"
|
||||||
default 1
|
default 1
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
menu "Power on/off status"
|
||||||
|
config POWER_GPIO
|
||||||
|
int "Power on/off GPIO"
|
||||||
|
help
|
||||||
|
GPIO that is switched when LMS turns player one. Set to -1 to disable
|
||||||
|
config POWER_GPIO_LEVEL
|
||||||
|
depends on POWER_GPIO != -1
|
||||||
|
int "Active level(0/1)"
|
||||||
|
default 1
|
||||||
|
endmenu
|
||||||
|
|
||||||
menu "Speaker Fault"
|
menu "Speaker Fault"
|
||||||
visible if !TARGET_LOCKED
|
visible if !TARGET_LOCKED
|
||||||
config SPKFAULT_GPIO
|
config SPKFAULT_GPIO
|
||||||
|
|||||||
Reference in New Issue
Block a user