From dba4782871a9a8d5b15fd307da1f4ab4af28ff42 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 19:19:55 -0800 Subject: [PATCH 1/8] display improvements, reset player_id when switching server --- components/display/display.c | 19 +++++++++++++++++-- components/display/display.h | 3 ++- components/display/driver_SSD1306.c | 20 +++++++++++++++++--- components/squeezelite/slimproto.c | 2 ++ main/esp_app_main.c | 4 ++-- plugin/SqueezeESP32/Plugin.pm | 2 +- 6 files changed, 41 insertions(+), 9 deletions(-) diff --git a/components/display/display.c b/components/display/display.c index 831e1d06..041d29ca 100644 --- a/components/display/display.c +++ b/components/display/display.c @@ -30,18 +30,20 @@ static bool (*slimp_handler_chain)(u8_t *data, int len); static struct display_handle_s *handle; +static void (*chained_notify)(in_addr_t ip, u16_t hport, u16_t cport); +static void server_attach(in_addr_t ip, u16_t hport, u16_t cport); static bool display_handler(u8_t *data, int len); /**************************************************************************************** * */ -void display_init(void) { +void display_init(char *welcome) { char *item = config_alloc_get(NVS_TYPE_STR, "display_config"); if (item && *item) { handle = &SSD1306_handle; - if (handle->init(item)) { + if (handle->init(item, welcome)) { slimp_handler_chain = slimp_handler; slimp_handler = display_handler; ESP_LOGI(TAG, "Display initialization successful"); @@ -51,10 +53,23 @@ void display_init(void) { } else { ESP_LOGI(TAG, "no display"); } + + chained_notify = server_notify; + server_notify = server_attach; if (item) free(item); } +/**************************************************************************************** + * + */ +static void server_attach(in_addr_t ip, u16_t hport, u16_t cport) { + char msg[32]; + sprintf(msg, "%s:%hu", inet_ntoa(ip), hport); + handle->print_message(msg); + if (chained_notify) (*chained_notify)(ip, hport, cport); +} + /**************************************************************************************** * Process graphic display data */ diff --git a/components/display/display.h b/components/display/display.h index 058121da..a2ea64ca 100644 --- a/components/display/display.h +++ b/components/display/display.h @@ -19,7 +19,8 @@ #pragma once struct display_handle_s { - bool (*init)(char *config); + bool (*init)(char *config, char* welcome); + void (*print_message)(char *msg); void (*vfdc_handler)(u8_t *data, int len); void (*grfe_handler)(u8_t *data, int len); void (*grfb_handler)(u8_t *data, int len); diff --git a/components/display/driver_SSD1306.c b/components/display/driver_SSD1306.c index cdcc72ef..59a1a518 100644 --- a/components/display/driver_SSD1306.c +++ b/components/display/driver_SSD1306.c @@ -35,11 +35,13 @@ #define TAG "display" static void vfdc_handler( u8_t *_data, int bytes_read); -void grfe_handler( u8_t *data, int len); -static bool display_init(char *config); +static void grfe_handler( u8_t *data, int len); +static bool display_init(char *config, char *welcome); +static void print_message(char *msg); struct display_handle_s SSD1306_handle = { display_init, + print_message, vfdc_handler, grfe_handler, NULL, NULL, @@ -71,7 +73,7 @@ static const unsigned char BitReverseTable256[] = /**************************************************************************************** * */ -static bool display_init(char *config) { +static bool display_init(char *config, char *welcome) { bool res = false; if (strstr(config, "I2C")) { @@ -89,6 +91,7 @@ static bool display_init(char *config) { SSD1306_I2CMasterInitDefault( I2C_PORT, sda, scl ); SSD1306_I2CMasterAttachDisplayDefault( &I2CDisplay, width, height, I2C_ADDRESS, -1); SSD1306_SetFont( &I2CDisplay, &Font_droid_sans_fallback_15x17 ); + print_message(welcome); ESP_LOGI(TAG, "Initialized I2C display %dx%d (sda:%d, scl:%d)", width, height, sda, scl); res = true; } else { @@ -101,6 +104,17 @@ static bool display_init(char *config) { return res; } +/**************************************************************************************** + * + */ +static void print_message(char *msg) { + if (!msg) return; + SSD1306_Clear( &I2CDisplay, SSD_COLOR_BLACK ); + SSD1306_SetDisplayAddressMode( &I2CDisplay, AddressMode_Horizontal ); + SSD1306_FontDrawAnchoredString( &I2CDisplay, TextAnchor_Center, msg, SSD_COLOR_WHITE ); + SSD1306_Update( &I2CDisplay ); +} + /**************************************************************************************** * Change special LCD chars to something more printable on screen */ diff --git a/components/squeezelite/slimproto.c b/components/squeezelite/slimproto.c index b53a1961..7a45b6ac 100644 --- a/components/squeezelite/slimproto.c +++ b/components/squeezelite/slimproto.c @@ -134,6 +134,8 @@ static void sendHELO(bool reconnect, const char *fixed_cap, const char *var_cap, base_cap = BASE_CAP; #endif + if (!reconnect) player_id = PLAYER_ID; + memset(&pkt, 0, sizeof(pkt)); memcpy(&pkt.opcode, "HELO", 4); pkt.length = htonl(sizeof(struct HELO_packet) - 8 + strlen(base_cap) + strlen(fixed_cap) + strlen(var_cap)); diff --git a/main/esp_app_main.c b/main/esp_app_main.c index 1470ada8..dc775c44 100644 --- a/main/esp_app_main.c +++ b/main/esp_app_main.c @@ -71,7 +71,7 @@ extern const uint8_t server_cert_pem_start[] asm("_binary_github_pem_start"); extern const uint8_t server_cert_pem_end[] asm("_binary_github_pem_end"); extern void services_init(void); -extern void display_init(void); +extern void display_init(char *welcome); /* brief this is an exemple of a callback that you can setup in your own app to get notified of wifi manager event */ void cb_connection_got_ip(void *pvParameter){ @@ -337,7 +337,7 @@ void app_main() services_init(); ESP_LOGD(TAG,"Initializing display"); - display_init(); + display_init("SqueezeESP32"); #if !RECOVERY_APPLICATION ESP_LOGI(TAG,"Checking if certificates need to be updated"); diff --git a/plugin/SqueezeESP32/Plugin.pm b/plugin/SqueezeESP32/Plugin.pm index 623ebbea..80a074fa 100644 --- a/plugin/SqueezeESP32/Plugin.pm +++ b/plugin/SqueezeESP32/Plugin.pm @@ -20,7 +20,7 @@ sub initPlugin { my $class = shift; $class->SUPER::initPlugin(@_); - Slim::Networking::Slimproto::addPlayerClass($class, 100, 'squeeze2esp32', { client => 'Plugins::SqueezeESP32::Player', display => 'Plugins::SqueezeESP32::Graphics' }); + Slim::Networking::Slimproto::addPlayerClass($class, 100, 'squeezeesp32', { client => 'Plugins::SqueezeESP32::Player', display => 'Plugins::SqueezeESP32::Graphics' }); $log->info("Added class 100 for SqueezeESP32"); } From 1f6138a82303f225470c208b2e57e0bd03f03a9c Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 20:00:53 -0800 Subject: [PATCH 2/8] Plugin update --- plugin/SqueezeESP32/SqueezeESP32.zip | Bin 0 -> 2266 bytes plugin/SqueezeESP32/install.xml | 4 +++- plugin/SqueezeESP32/strings.txt | 9 ++++++++- plugin/repo.xml | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 plugin/SqueezeESP32/SqueezeESP32.zip create mode 100644 plugin/repo.xml diff --git a/plugin/SqueezeESP32/SqueezeESP32.zip b/plugin/SqueezeESP32/SqueezeESP32.zip new file mode 100644 index 0000000000000000000000000000000000000000..ab1e5cbb89b1b329aaeb601fb90cfdb01dfd8441 GIT binary patch literal 2266 zcmZ{l2{@E_9LHyjo0ddlsdX%-T*WxI+7X5{VT}83Fo|YHX2_%nxgyt0);X3CLWrDE zG8#=ySVo3*wdh_tY|dt1o_3pkJo~=S|NXuH|NA_j_y7NWe+L=`5tIdiK%yW9L`bn>7`)^be}S zex~j^C-W9QwI1;#3GHUrKJ>BcxA2=@RpOLW<_T#z`o1DDko7rt)w1=7o7D}U_WO53 zKF`*dF)@`UBjZ@&!10yTE_g6cd*2vc9=YP)JYsI~Bq$$SayQ%VHwpB=M_zP-p}DBO$FG2+W_~?#5Rn{)#p87;1Uw1fh%rsd#i{eTu@Qpzv}cj5{&e^v(;)wxr84ds~S{g=sT) zYcq=btOs>mr}04#du}6gHo)IJQdR&%Lqjo~hk!TCAs~<#;2AU?dmcvuLI8&uPairc z9YyT&EAuAE1VPm&S`up+xU9?pjDxh4sETn>({8)BOXVdss|#0m4apcuH5?(&7sCC| zxbOlz0;DO%!Au;)l9O0dZcL6vNax#M#Nw`X|rCyoHrW$0ot^!Io8vqx2)lk4OVcj2X6 z(x;D_$EaYzBPUD-Lh+VK%3i@0UYSDSgyBTOY;2@)uE?reht&(qmOBorc?qGrbZo2b%!`KV9aq@oFx5H1oOkruRK)#6$%hN%VT;dE!fY|p1{t-Jo zFo+0<9fcXU6VQ{6N{qjhD^JrEQ#cT!E_1-a-|t%M4ENdux4Z9Oq(3Cvp5#Z>cD(URVVv&lTDl+Wv+9%~e3z=c}hW>0)Og%}@${Qy#AMoZ=)tpJq z-K6L@jT6z93|bbA6&ch0;D?_mBe>~8otah*X)kc?>3Y_HM$LD_6-L1pp1wZy#C=zm zX|XkBsCLiY<*5Gm9giNF&9?b2#P?tdaJOGKd1|js>J={pgG9!cMDzVs6y}QFL*yg| zDsqyZvGdqhYv{vrKjv@zSru_hGwP&8W<9;%AT`h}V$JLW0WO@cF(#&#rNO#ZKbuPL zQ=K%^nq7bU>NJJ-aOKv%wrH4^heNkSdxDYUR5qD4Y;}m;*5X&mkYVp_P|Kj?Gd`4kHB-1IfB!lrUH12@88$q_2~` zucL!A66t|NI-=qF;$lcUF;^VkKZJl&4hvCs3=PNOB5_;azKMPxDDz`P1fB{o>wqBw z3@02V43OL~{joSu;*rmux=OYt>vFu?IkmE{rA`brB;E)ru<=k@UJy*.* SlimServer + PLUGIN_SQUEEZEESP32 + PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.1 + 0.2 Philippe diff --git a/plugin/SqueezeESP32/strings.txt b/plugin/SqueezeESP32/strings.txt index 539ed1ac..2009781f 100644 --- a/plugin/SqueezeESP32/strings.txt +++ b/plugin/SqueezeESP32/strings.txt @@ -1,2 +1,9 @@ WELCOME_TO_SQUEEZEESP32 - EN Welcome to SqueezeESP32 \ No newline at end of file + EN Welcome to SqueezeESP32 + +PLUGIN_SQUEEZEESP32 + SqueezeESP32 + +PLUGIN_SQUEEZEESP32_DESC + Adds a new player id (100) to enable display with SqueezeESP32 + \ No newline at end of file diff --git a/plugin/repo.xml b/plugin/repo.xml new file mode 100644 index 00000000..688e9d65 --- /dev/null +++ b/plugin/repo.xml @@ -0,0 +1,17 @@ + + + + + https://github.com/sle118/squeezelite-esp32 + Philippe + 066d97b8ca3fa53cbfaa7caf06f47fdc066344fe + philippe_44@outlook.com + SqueezeESP32 additional player id (100) + http://downloads.sourceforge.net/project/lms-youtube/dev/YouTube-0.91.1.zip + SqueezeESP32 + + +
+ SqueezeESP32 related plugins +
+
From 8a26e3004d3251449eb332bf3845e05826e5c65e Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 20:04:23 -0800 Subject: [PATCH 3/8] Plugin update --- plugin/repo.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/repo.xml b/plugin/repo.xml index 688e9d65..34105d58 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -7,7 +7,7 @@ 066d97b8ca3fa53cbfaa7caf06f47fdc066344fe philippe_44@outlook.com SqueezeESP32 additional player id (100) - http://downloads.sourceforge.net/project/lms-youtube/dev/YouTube-0.91.1.zip + https://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32/SqueezeESP32.zip SqueezeESP32 From a0b3452dd7ccab997eba9ee7fa7523aeacabb87d Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 21:08:08 -0800 Subject: [PATCH 4/8] minor tweaks --- components/display/display.c | 2 +- components/display/driver_SSD1306.c | 2 +- components/display/tarablessd1306/ssd1306.c | 3 ++- components/services/battery.c | 2 +- components/services/led.c | 2 +- components/services/monitor.c | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/components/display/display.c b/components/display/display.c index 041d29ca..289b272f 100644 --- a/components/display/display.c +++ b/components/display/display.c @@ -26,7 +26,7 @@ #include "embedded.h" #include "display.h" -#define TAG "display" +static const char *TAG = "display"; static bool (*slimp_handler_chain)(u8_t *data, int len); static struct display_handle_s *handle; diff --git a/components/display/driver_SSD1306.c b/components/display/driver_SSD1306.c index 59a1a518..07bcc939 100644 --- a/components/display/driver_SSD1306.c +++ b/components/display/driver_SSD1306.c @@ -32,7 +32,7 @@ #define I2C_PORT 1 #define I2C_ADDRESS 0x3C #define LINELEN 40 -#define TAG "display" +static const char *TAG = "display"; static void vfdc_handler( u8_t *_data, int bytes_read); static void grfe_handler( u8_t *data, int len); diff --git a/components/display/tarablessd1306/ssd1306.c b/components/display/tarablessd1306/ssd1306.c index c2ef7865..c94fed83 100644 --- a/components/display/tarablessd1306/ssd1306.c +++ b/components/display/tarablessd1306/ssd1306.c @@ -200,7 +200,8 @@ static bool SSD1306_Init( struct SSD1306_Device* DeviceHandle, int Width, int He DeviceHandle->Height = Height; DeviceHandle->FramebufferSize = ( DeviceHandle->Width * Height ) / 8; - DeviceHandle->Framebuffer = heap_caps_calloc( 1, DeviceHandle->FramebufferSize, MALLOC_CAP_DMA | MALLOC_CAP_8BIT ); + // DeviceHandle->Framebuffer = heap_caps_calloc( 1, DeviceHandle->FramebufferSize, MALLOC_CAP_INTERNAL ); + DeviceHandle->Framebuffer = calloc( 1, DeviceHandle->FramebufferSize ); NullCheck( DeviceHandle->Framebuffer, return false ); diff --git a/components/services/battery.c b/components/services/battery.c index 8406ef78..0eb78f59 100644 --- a/components/services/battery.c +++ b/components/services/battery.c @@ -19,7 +19,7 @@ #define BATTERY_TIMER (10*1000) -static const char TAG[] = "battery"; +static const char *TAG = "battery"; static struct { float sum, avg; diff --git a/components/services/led.c b/components/services/led.c index bddb882e..372c60d1 100644 --- a/components/services/led.c +++ b/components/services/led.c @@ -21,7 +21,7 @@ #define MAX_LED 8 #define BLOCKTIME 10 // up to portMAX_DELAY -static const char TAG[] = "led"; +static const char *TAG = "led"; static struct led_s { gpio_num_t gpio; diff --git a/components/services/monitor.c b/components/services/monitor.c index 7d0768fe..341714d1 100644 --- a/components/services/monitor.c +++ b/components/services/monitor.c @@ -26,7 +26,7 @@ #define MONITOR_TIMER (10*1000) -static const char TAG[] = "monitor"; +static const char *TAG = "monitor"; static TimerHandle_t monitor_timer; From dc2789fa61506259a2510f51b301ec14e3744980 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 21:23:33 -0800 Subject: [PATCH 5/8] Plugin repo --- plugin/repo.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/repo.xml b/plugin/repo.xml index 34105d58..685fe5f0 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -7,7 +7,7 @@ 066d97b8ca3fa53cbfaa7caf06f47fdc066344fe philippe_44@outlook.com SqueezeESP32 additional player id (100) - https://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32/SqueezeESP32.zip + http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32/SqueezeESP32.zip SqueezeESP32 From 49298b09bef7498c66ad420a63e89a4e6a57ac7c Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 21:25:31 -0800 Subject: [PATCH 6/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9cf1f058..7feacd19 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Squeezelite-esp32 ## Supported Hardware ### SqueezeAMP -Works with the SqueezeAMP see [here](https://forums.slimdevices.com/showthread.php?110926-pre-ANNOUNCE-SqueezeAMP-and-SqueezeliteESP32) and [here](https://github.com/philippe44/SqueezeAMP/blob/master/README.md) +Works with the SqueezeAMP see [here](https://forums.slimdevices.com/showthread.php?110926-pre-ANNOUNCE-SqueezeAMP-and-SqueezeliteESP32) and [here](https://github.com/philippe44/SqueezeAMP/blob/master/README.md). Add the repository [here]() to LMS if you want to have a display Use the `squeezelite-esp32-SqueezeAmp-sdkconfig.defaults` configuration file. From 5c9e5dfbced922b9b8a960eb4479fb87f6798e93 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 21:27:55 -0800 Subject: [PATCH 7/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7feacd19..b5f7dddd 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Squeezelite-esp32 ## Supported Hardware ### SqueezeAMP -Works with the SqueezeAMP see [here](https://forums.slimdevices.com/showthread.php?110926-pre-ANNOUNCE-SqueezeAMP-and-SqueezeliteESP32) and [here](https://github.com/philippe44/SqueezeAMP/blob/master/README.md). Add the repository [here]() to LMS if you want to have a display +Works with the SqueezeAMP see [here](https://forums.slimdevices.com/showthread.php?110926-pre-ANNOUNCE-SqueezeAMP-and-SqueezeliteESP32) and [here](https://github.com/philippe44/SqueezeAMP/blob/master/README.md). Add repository https://raw.githubusercontent.com/sle118/squeezelite-esp32/master/plugin/repo.xml to LMS if you want to have a display Use the `squeezelite-esp32-SqueezeAmp-sdkconfig.defaults` configuration file. From eb5c7c3ceaf792673bd697134b1ca57aff9aef2a Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 13 Jan 2020 22:13:40 -0800 Subject: [PATCH 8/8] display update --- components/display/driver_SSD1306.c | 2 ++ plugin/SqueezeESP32/Graphics.pm | 41 +++++++++++++++++++++++++++ plugin/SqueezeESP32/SqueezeESP32.zip | Bin 2266 -> 2628 bytes plugin/SqueezeESP32/install.xml | 2 +- plugin/repo.xml | 4 +-- 5 files changed, 46 insertions(+), 3 deletions(-) diff --git a/components/display/driver_SSD1306.c b/components/display/driver_SSD1306.c index 07bcc939..1abda98c 100644 --- a/components/display/driver_SSD1306.c +++ b/components/display/driver_SSD1306.c @@ -109,10 +109,12 @@ static bool display_init(char *config, char *welcome) { */ static void print_message(char *msg) { if (!msg) return; + SSD1306_AddressMode Mode = AddressMode; SSD1306_Clear( &I2CDisplay, SSD_COLOR_BLACK ); SSD1306_SetDisplayAddressMode( &I2CDisplay, AddressMode_Horizontal ); SSD1306_FontDrawAnchoredString( &I2CDisplay, TextAnchor_Center, msg, SSD_COLOR_WHITE ); SSD1306_Update( &I2CDisplay ); + SSD1306_SetDisplayAddressMode( &I2CDisplay, Mode ); } /**************************************************************************************** diff --git a/plugin/SqueezeESP32/Graphics.pm b/plugin/SqueezeESP32/Graphics.pm index e5733ed6..dadd335a 100644 --- a/plugin/SqueezeESP32/Graphics.pm +++ b/plugin/SqueezeESP32/Graphics.pm @@ -4,6 +4,47 @@ use strict; use base qw(Slim::Display::Squeezebox2); +my $VISUALIZER_NONE = 0; + +my @modes = ( + # mode 0 + { desc => ['BLANK'], + bar => 0, secs => 0, width => 128, + params => [$VISUALIZER_NONE] }, + # mode 1 + { desc => ['PROGRESS_BAR'], + bar => 1, secs => 0, width => 128, + params => [$VISUALIZER_NONE] }, + # mode 2 + { desc => ['ELAPSED'], + bar => 0, secs => 1, width => 128, + params => [$VISUALIZER_NONE] }, + # mode 3 + { desc => ['ELAPSED', 'AND', 'PROGRESS_BAR'], + bar => 1, secs => 1, width => 128, + params => [$VISUALIZER_NONE] }, + # mode 4 + { desc => ['REMAINING'], + bar => 0, secs => -1, width => 128, + params => [$VISUALIZER_NONE] }, + # mode 5 + { desc => ['CLOCK'], + bar => 0, secs => 0, width => 128, clock => 1, + params => [$VISUALIZER_NONE] }, + # mode 6 + { desc => ['SETUP_SHOWBUFFERFULLNESS'], + bar => 0, secs => 0, width => 128, fullness => 1, + params => [$VISUALIZER_NONE] }, +); + +sub modes { + return \@modes; +} + +sub nmodes { + return $#modes; +} + =comment sub bytesPerColumn { return 4; diff --git a/plugin/SqueezeESP32/SqueezeESP32.zip b/plugin/SqueezeESP32/SqueezeESP32.zip index ab1e5cbb89b1b329aaeb601fb90cfdb01dfd8441..15126a7d3096c617ed88fcf61e70cce8b3c07c67 100644 GIT binary patch delta 1205 zcmca5ctoT=z?+#xgn@y9gCTgMZopT~aQ397H>ZPk;;UiB_UZsX1*)CJi4P-rFx32cb0MvowZ}F>pzj(j8+eJpZ5&NT-B)Y z#C6i<`ftVOPd*P7h-2qwikqXKamrWt{*#tJsvOm_hfV6;bs}^#PweiRRLm4(Al3Ce zLF~l!v$4X*O$^T(p9(MBa4*N;^t)bVPql1|Kc>foPs{yx`*)>Kmc=$B+<3XCn4sR{ zWtS`(lp3~Os$j5`aC*<8cXeN`<^8MLzL^aoDMu5cnf;vp{oyV*5jw4Op*LSjE&_Q2bbAMXX!3 zX8qKhyIOAc>i0zE?-u`ivY_M7!z0^dBj4EieX{9)Jf+~@zml%9$3J=MS1qdwkm~7} zv-HFAtj+5_g`8c!`@qA4+!wevt0=D2IC(Ql;GLk^iAOe`+rwnM!xrsaQP#8SnZ0_+ zMv>@<;}c?dcWT(~6R7cgzNj=Psyv@F*+l8=<(Gmsc4DbFboS46ckTOlEvPgw)=&53 z-Ey9-DPP~&BVzpQ2HpCAwc-2E2mzz~H4uZMJTtGjBrzvPuOc@mcj9TU!ww>C-<#e~ zh+WX_vz66wj-M#6Qb$PJt^(m>Pa@c#3#F^6{`%sV*W0T1|9{PMzSnLiGy1P_E)M_b zYSgd%e5c+{6RGfz{JScA&!1e){Bu37u*y>%M@lvneKicbog z@6@&GP|eOghFhl}t5IzYbl6qkUzJz>B7e14SJUqcD>pkkaQ?l;@3DSTwgS7Y;2z1j zkw)A{7N|Q-nc}%n;?@T32@1RCJt+yk5Tkh4CRbi=e(|?WXE$xvNuGUFb%L2u+yT+B zklag}Ci~Cdke$#t%S$`>nvsdf^sjyy)0e&3?e^!Wp1Nb@iGZGO11k;m`1anYA8;Lw{K$1bs1ktvV49+Gn+=j#UO>6r9a0E2G}5QBoTxTGjE zFTGf=q@tv?cO%y!0|~b0Pc-)hZeQiE@YTKLR#=kej+P8N1A*wRQy2N`vo6;=SAP8J zq@_pW-fZ0PETD6ai_gxeEY+Q>B=z6+zKEW2y!+3G<0UggZ^znc{B)s05|f$Pmh+)z@5wvZwArQ_ zs)Q{(HTfl*oINlpprr&ApeH~;0f^rN(*{zy-~tOWFfcMmFhm_UJFwu?WH)vjCN1X4 yE$op@;;fVJvzxl&3L0c{H?W}u6tcOlYYgA^othlUVZ#*2K6yHaEgJ_1$Tia!as2z?+#xgn@y9gW(9XZa_-ThUKS#JS9d325unjUX)mnk(peqSCAWe-ZuY` zfdJcso&QAdH8e6VcYeAebm=xN>4`=LO6qo#gv*597~lU>ex^Mj!f)5*&-*Twu8LX7 zRgvb@+B@ASp1pzj&(lbyC4b6St={-WGx;F%_a_^c9Ip>rVR7wtV%`O>pWXY6v;OO7 z+?p%l`ZIFdH7DmY?M>pX^YQw(Uu|wT6t779u~*{b^~yy+bW&-z{B zM)>(deTaI%P45$@UjjWl0qW_@yyB9?oE*K1+??DAzTV7+0&VY`{wL;h+vY^+c6iTv zb?~>-fz?OOMl?_6pX?d=_iLK{Ev<^0`;{})CHKkegt>Q|tk}NV{OqoELYm7(tJrt{ z;ttv?emz`9<^TTC`Cp z>8EzOs-NGt`6V$gO5FrxpEVb*%zc{9_M=Vx=G}W+-o}WZb(t%2{OFE6vpKyF_pI$- zaKinfZukSvoXlf~H`!1B%eYyKxr;f13m6Uz43U%719I}#N*e>&APhrKzb^sbIOu zf$WF*P*d1sB@S&Dxon4(uTNfORCzedA4LEDHx*0=cr!BDGe8pN2aGsU0lEhS6oB|M z!{mt^l57lKif22IPTs&_!^Fxo`5i|j(Z*1lNq^e+2*lPLUGIN_SQUEEZEESP32 PLUGIN_SQUEEZEESP32_DESC Plugins::SqueezeESP32::Plugin - 0.2 + 0.3 Philippe diff --git a/plugin/repo.xml b/plugin/repo.xml index 685fe5f0..ee9b377f 100644 --- a/plugin/repo.xml +++ b/plugin/repo.xml @@ -1,10 +1,10 @@ - + https://github.com/sle118/squeezelite-esp32 Philippe - 066d97b8ca3fa53cbfaa7caf06f47fdc066344fe + 799ae4860f9c009ac25c2ec35eb4070c5f474659 philippe_44@outlook.com SqueezeESP32 additional player id (100) http://github.com/sle118/squeezelite-esp32/raw/master/plugin/SqueezeESP32/SqueezeESP32.zip