浏览代码

Merge remote-tracking branch 'origin/master-v4.3' into master-v4.3

Sebastien L 3 年之前
父节点
当前提交
b79e1f9391

+ 1 - 1
.github/workflows/CrossBuild.yml

@@ -28,7 +28,7 @@ jobs:
     strategy:
       max-parallel: 1
       matrix:
-        node: [I2S-4MFlash, SqueezeAmp]
+        node: [I2S-4MFlash, SqueezeAmp, Muse]
         depth: [16, 32]
     steps:
     - name: Set target name

+ 2 - 1
build-scripts/I2S-4MFlash-sdkconfig.defaults

@@ -182,7 +182,7 @@ CONFIG_LOGGING_OUTPUT="info"
 # end of Logging
 
 CONFIG_MUTE_GPIO_LEVEL=0
-CONFIG_WELL_KNOWN=y
+CONFIG_TARGET_LOCKED=n
 
 #
 # Target
@@ -201,6 +201,7 @@ CONFIG_SPI_CONFIG=""
 CONFIG_DISPLAY_CONFIG=""
 CONFIG_ETH_CONFIG=""
 CONFIG_DAC_CONTROLSET=""
+CONFIG_TARGET=""
 # end of Target
 
 #

+ 2 - 1
build-scripts/Muse-sdkconfig.defaults

@@ -178,7 +178,7 @@ CONFIG_JACK_LOCKED=y
 CONFIG_BAT_LOCKED=y
 CONFIG_I2C_LOCKED=y
 CONFIG_MUTE_GPIO_LEVEL=0
-CONFIG_WELL_KNOWN=y
+CONFIG_TARGET_LOCKED=y
 
 #
 # Target
@@ -206,6 +206,7 @@ CONFIG_SPKFAULT_GPIO=-1
 CONFIG_BAT_CHANNEL=-1
 CONFIG_LED_GREEN_GPIO=22
 CONFIG_LED_RED_GPIO=-1
+CONFIG_TARGET="muse"
 # end of Target
 
 #

+ 2 - 1
build-scripts/SqueezeAmp-sdkconfig.defaults

@@ -179,7 +179,7 @@ CONFIG_I2C_LOCKED=y
 CONFIG_LED_LOCKED=y
 CONFIG_SPKFAULT_LOCKED=y
 CONFIG_MUTE_GPIO_LEVEL=0
-CONFIG_WELL_KNOWN=y
+CONFIG_TARGET_LOCKED=y
 
 #
 # Target
@@ -198,6 +198,7 @@ CONFIG_SPI_CONFIG=""
 CONFIG_DISPLAY_CONFIG=""
 CONFIG_ETH_CONFIG=""
 CONFIG_DAC_CONTROLSET=""
+CONFIG_TARGET="squeezeamp"
 # end of Target
 
 #

+ 2 - 11
components/targets/CMakeLists.txt

@@ -1,13 +1,4 @@
-# This should be made a pure CMake component but as CMake is even
-# more shitty under Windows, backslash in path screws it all
-
-if(CONFIG_MUSE)
-	message("Compiling for MUSE") 
-	set(src_dirs "muse")
-else()
-	set(src_dirs ".")		
-endif()
-
-idf_component_register( SRC_DIRS ${src_dirs}    				  
+idf_component_register( SRC_DIRS . muse
+			INCLUDE_DIRS .
 					    PRIV_REQUIRES services
 )

+ 0 - 3
components/targets/init.c

@@ -1,3 +0,0 @@
-// weak should do the job but it does not...
- __attribute__((weak)) void target_init(void) { 
-}

+ 6 - 1
components/targets/muse/muse.c

@@ -10,6 +10,7 @@
 //#include <driver/adc.h>
 #include "driver/rmt.h"
 #include "monitor.h"
+#include "targets.h"
 
 /////////////////////////////////////////////////////////////////
 //*********************** NeoPixels  ***************************
@@ -44,11 +45,15 @@ static const char TAG[] = "muse";
 
 static void (*battery_handler_chain)(float value);
 static void battery_svc(float value);
+static bool init(void);
 
-void target_init(void) { 
+const struct target_s target_muse = { "muse", init };
+
+static bool init(void) { 
 	battery_handler_chain = battery_handler_svc;
 	battery_handler_svc = battery_svc;
 	ESP_LOGI(TAG, "Initializing for Muse");
+	return true;
 }
 
 static void battery_svc(float value) {

+ 11 - 0
components/targets/targets.c

@@ -0,0 +1,11 @@
+#include "string.h"
+#include "targets.h"
+
+const struct target_s *target_set[] = { &target_muse, NULL };
+
+void target_init(char *target) { 
+	for (int i = 0; target_set[i]; i++) if (strcasestr(target_set[i]->model, target)) {
+		target_set[i]->init();
+		break;
+	}	
+}

+ 22 - 0
components/targets/targets.h

@@ -0,0 +1,22 @@
+/* 
+ *  Squeezelite for esp32
+ *
+ *  (c) Sebastien 2019
+ *      Philippe G. 2019, philippe_44@outlook.com
+ *
+ *  This software is released under the MIT License.
+ *  https://opensource.org/licenses/MIT
+ *
+ */
+ 
+#pragma once 
+ 
+#include "stddef.h" 
+#include "stdbool.h" 
+
+struct target_s {
+	char *model;
+	bool (*init)(void);
+};
+
+extern const struct target_s target_muse;

+ 13 - 8
main/Kconfig.projbuild

@@ -43,7 +43,7 @@ menu "Squeezelite-ESP32"
 	config MUTE_GPIO_LEVEL
 		int
 		default 0
-	config WELL_KNOWN
+	config TARGET_LOCKED
 		bool
 		default n
 	menu "Target"
@@ -59,20 +59,20 @@ menu "Squeezelite-ESP32"
 				select I2C_LOCKED
 				select LED_LOCKED
 				select SPKFAULT_LOCKED
-				select WELL_KNOWN
+				select TARGET_LOCKED
 			config MUSE
 				bool "Muse"
 				select JACK_LOCKED
 				select BAT_LOCKED
 				select I2C_LOCKED
 				select AMP_LOCKED				
-				select WELL_KNOWN
+				select TARGET_LOCKED
 			config BASIC_I2C_BT
 				bool "Generic I2S & Bluetooth"				
 			config TWATCH2020	
 				bool "T-WATCH2020 by LilyGo"				
 				select I2C_LOCKED		
-				select WELL_KNOWN				
+				select TARGET_LOCKED				
 		endchoice	
 		config RELEASE_API
 			string "Software update URL"
@@ -136,9 +136,14 @@ menu "Squeezelite-ESP32"
 			default "[{\"gpio\":32, \"pull\":true, \"debounce\":10, \"normal\":{\"pressed\":\"ACTRLS_VOLDOWN\"}}, {\"gpio\":19, \"pull\":true, \"debounce\":40, \"normal\":{\"pressed\":\"ACTRLS_VOLUP\"}}, {\"gpio\":12, \"pull\":true, \"debounce\":40, \"longpress\":1000, \"normal\":{\"pressed\":\"ACTRLS_TOGGLE\"},\"longpress\":{\"pressed\":\"ACTRLS_POWER\"}}]" if MUSE
 			default ""
 		config BAT_CONFIG
+			string
 			default "channel=7,scale=20.24,atten=0" if SQUEEZEAMP
 			default "channel=5,scale=1,atten=3,cells=1" if MUSE
 			default ""			
+		config TARGET
+			string
+			default "muse" if MUSE
+			default ""			
 		config AMP_GPIO		
 			int
 			default 21 if MUSE
@@ -380,7 +385,7 @@ menu "Squeezelite-ESP32"
 	endmenu
 	
     menu "Audio JACK"	
-		visible if !WELL_KNOWN
+		visible if !TARGET_LOCKED
 		config JACK_GPIO		
 			int "Jack insertion GPIO"
 			help
@@ -392,7 +397,7 @@ menu "Squeezelite-ESP32"
 	endmenu	
 	
 	menu "Amplifier"	
-		visible if !WELL_KNOWN
+		visible if !TARGET_LOCKED
 		config AMP_GPIO		
 			int "Amplifier GPIO"
 			help
@@ -404,7 +409,7 @@ menu "Squeezelite-ESP32"
 	endmenu	
 	
 	menu "Speaker Fault"	
-		visible if !WELL_KNOWN
+		visible if !TARGET_LOCKED
 		config SPKFAULT_GPIO		
 			int "Speaker fault GPIO"
 			help
@@ -416,7 +421,7 @@ menu "Squeezelite-ESP32"
 	endmenu
 	
 	menu "Battery measure"
-		visible if !WELL_KNOWN
+		visible if !TARGET_LOCKED
 		config BAT_CONFIG
 			string "Battery acquisition configuration"
 			help

+ 8 - 2
main/esp_app_main.c

@@ -71,7 +71,7 @@ extern const uint8_t server_cert_pem_end[] asm("_binary_github_pem_end");
 // as an exception _init function don't need include
 extern void services_init(void);
 extern void	display_init(char *welcome);
-extern void target_init(void);
+extern void target_init(char *target);
 const char * str_or_unknown(const char * str) { return (str?str:unknown_string_placeholder); }
 const char * str_or_null(const char * str) { return (str?str:null_string_placeholder); }
 bool is_recovery_running;
@@ -365,6 +365,8 @@ void register_default_nvs(){
     register_default_string_val("pollmin","15");
     register_default_string_val("ethtmout","8");
     register_default_string_val("dhcp_tmout","8");
+	register_default_string_val("target", CONFIG_TARGET);
+	
 	wait_for_commit();
 	ESP_LOGD(TAG,"Done setting default values in nvs.");
 }
@@ -447,7 +449,11 @@ void app_main()
 	ESP_LOGI(TAG,"Initializing display");
 	display_init("SqueezeESP32");
 	MEMTRACE_PRINT_DELTA();
-	target_init();
+	char *target = config_alloc_get_default(NVS_TYPE_STR, "target", CONFIG_TARGET, 0);
+	if (target) {
+		target_init(target);
+		free(target);
+	}
 	if(is_recovery_running && display){
 		GDS_ClearExt(display, true);
 		GDS_SetFont(display, &Font_line_2 );