Browse Source

Spotify over Ethernet!

Philippe G 3 years ago
parent
commit
9a37d9dba4

+ 20 - 15
components/services/accessors.c

@@ -116,7 +116,7 @@ static void set_i2s_pin(char *config, i2s_pin_config_t *pin_config) {
 /****************************************************************************************
  * Get i2s config structure from config string
  */
-const i2s_platform_config_t * config_get_i2s_from_str(char * dac_config ){
+const i2s_platform_config_t * config_i2s_get_from_str(char * dac_config ){
 	static EXT_RAM_ATTR i2s_platform_config_t i2s_dac_pin;
 	memset(&i2s_dac_pin, 0xff, sizeof(i2s_dac_pin));
 	set_i2s_pin(dac_config, &i2s_dac_pin.pin);
@@ -139,11 +139,8 @@ const i2s_platform_config_t * config_get_i2s_from_str(char * dac_config ){
 /****************************************************************************************
  * Get eth config structure from config string
  */
-const eth_config_t * config_get_eth_from_str(char* config ){
+const eth_config_t * config_eth_get_from_str(char* config ){
 	static EXT_RAM_ATTR eth_config_t eth_config; 
-	memset(&eth_config, 0xff, sizeof(eth_config));
-	memset(&eth_config.model, 0x00, sizeof(eth_config.model));
-	eth_config.valid = true;
 
 	PARSE_PARAM_STR(config, "model", '=', eth_config.model, 15);
 	PARSE_PARAM(config, "mdc", '=', eth_config.mdc);
@@ -158,12 +155,13 @@ const eth_config_t * config_get_eth_from_str(char* config ){
 
 	// only system host is available
 	eth_config.host = spi_system_host;
+	eth_config.valid = true;
 
 	if(!eth_config.model || strlen(eth_config.model)==0){
 		eth_config.valid = false;
 		return &eth_config;
 	}
-	
+
 	network_ethernet_driver_t* network_driver = network_ethernet_driver_autodetect(eth_config.model);
 	
 	if(!network_driver || !network_driver->valid){
@@ -174,7 +172,7 @@ const eth_config_t * config_get_eth_from_str(char* config ){
 	if(network_driver){
 		eth_config.rmii = network_driver->rmii;
 		eth_config.spi = network_driver->spi;
-		
+
 		if(network_driver->rmii){
 			if(!GPIO_IS_VALID_GPIO(eth_config.mdio) || !GPIO_IS_VALID_GPIO(eth_config.mdc)){
 				messaging_post_message(MESSAGING_ERROR,MESSAGING_CLASS_SYSTEM,"Ethernet config invalid: %s %s",!GPIO_IS_VALID_GPIO(eth_config.mdc)?"Invalid MDC":"",!GPIO_IS_VALID_GPIO(eth_config.mdio)?"Invalid mdio":""); 
@@ -197,7 +195,7 @@ const eth_config_t * config_get_eth_from_str(char* config ){
 const i2s_platform_config_t * config_spdif_get( ){
 	char * spdif_config = config_spdif_get_string();
 	static EXT_RAM_ATTR i2s_platform_config_t i2s_dac_config;
-	memcpy(&i2s_dac_config, config_get_i2s_from_str(spdif_config), sizeof(i2s_dac_config));
+	memcpy(&i2s_dac_config, config_i2s_get_from_str(spdif_config), sizeof(i2s_dac_config));
 	free(spdif_config);
 	return &i2s_dac_config;
 }
@@ -208,7 +206,7 @@ const i2s_platform_config_t * config_spdif_get( ){
 const i2s_platform_config_t * config_dac_get(){
 	char * spdif_config = get_dac_config_string();
 	static EXT_RAM_ATTR i2s_platform_config_t i2s_dac_config;
-	memcpy(&i2s_dac_config, config_get_i2s_from_str(spdif_config), sizeof(i2s_dac_config));
+	memcpy(&i2s_dac_config, config_i2s_get_from_str(spdif_config), sizeof(i2s_dac_config));
 	free(spdif_config);
 	return &i2s_dac_config;
 }
@@ -218,8 +216,9 @@ const i2s_platform_config_t * config_dac_get(){
  */
 const eth_config_t * config_eth_get( ){
 	char * config = config_alloc_get_str("eth_config", CONFIG_ETH_CONFIG, "rst=" STR(CONFIG_ETH_PHY_RST_IO) 
-	#if defined(ETH_LAN8720)
-	#else 
+
+#if defined(ETH_LAN8720)
+#else 
 #if defined(CONFIG_ETH_USE_SPI_ETHERNET)
 #if defined(CONFIG_ETH_DM9051)
 										 ",model=dm9051"
@@ -240,7 +239,7 @@ const eth_config_t * config_eth_get( ){
 		ESP_LOGD(TAG,"Parsing ethernet configuration %s", config);
 	}
 	static EXT_RAM_ATTR eth_config_t eth_config;
-	memcpy(&eth_config, config_get_eth_from_str(config), sizeof(eth_config));
+	memcpy(&eth_config, config_eth_get_from_str(config), sizeof(eth_config));
 	FREE_AND_NULL(config);
 	return &eth_config;
 }
@@ -642,9 +641,15 @@ const set_GPIO_struct_t * get_gpio_struct(){
  */
 const spi_bus_config_t * config_spi_get(spi_host_device_t * spi_host) {
 	char *nvs_item;
-	static EXT_RAM_ATTR spi_bus_config_t spi;
-	memset(&spi, 0xff, sizeof(spi));
-	
+	// don't memset all to 0xff as it's more than just GPIO
+	static spi_bus_config_t spi = {
+		.mosi_io_num = -1,
+        .sclk_io_num = -1,
+        .miso_io_num = -1,
+        .quadwp_io_num = -1,
+        .quadhd_io_num = -1
+    };
+		
 	nvs_item = config_alloc_get_str("spi_config", CONFIG_SPI_CONFIG, NULL);
 	if (nvs_item) {
 		PARSE_PARAM(nvs_item, "data", '=', spi.mosi_io_num);

+ 1 - 1
components/services/accessors.h

@@ -102,7 +102,7 @@ const gpio_exp_config_t *   config_gpio_exp_get(int index);
 void 						parse_set_GPIO(void (*cb)(int gpio, char *value));
 const i2s_platform_config_t * 	config_dac_get();
 const i2s_platform_config_t * 	config_spdif_get( );
-const i2s_platform_config_t * config_get_i2s_from_str(char * dac_config );
+const i2s_platform_config_t * config_i2s_get_from_str(char * dac_config );
 esp_err_t 					config_spdif_set(const i2s_platform_config_t * config);
 bool 						is_spdif_config_locked();
 esp_err_t 					free_gpio_entry( gpio_entry_t ** gpio);

+ 1 - 1
components/services/services.c

@@ -106,7 +106,7 @@ void services_init(void) {
 	}	
 
 	const spi_bus_config_t * spi_config = config_spi_get((spi_host_device_t*) &spi_system_host);
-	ESP_LOGI(TAG,"Configuring SPI data:%d clk:%d host:%u dc:%d", spi_config->mosi_io_num, spi_config->sclk_io_num, spi_system_host, spi_system_dc_gpio);
+	ESP_LOGI(TAG,"Configuring SPI mosi:%d miso:%d clk:%d host:%u dc:%d", spi_config->mosi_io_num, spi_config->miso_io_num, spi_config->sclk_io_num, spi_system_host, spi_system_dc_gpio);
 	
 	if (spi_config->mosi_io_num != -1 && spi_config->sclk_io_num != -1) {
 		spi_bus_initialize( spi_system_host, spi_config, 1 );

+ 6 - 7
components/wifi-manager/network_ethernet.c

@@ -48,7 +48,7 @@ network_ethernet_driver_t* network_ethernet_driver_autodetect(const char* Driver
     for (int i = 0; drivers[i]; i++) {
         network_ethernet_driver_t* found_driver = drivers[i](Driver);
         if (found_driver) {
-            ESP_LOGD(TAG, "Detected driver %s ", Driver);
+            ESP_LOGI(TAG, "Detected driver %s ", Driver);
 
             network_driver = found_driver;
             return found_driver;
@@ -90,8 +90,10 @@ void destroy_network_ethernet() {
 }
 
 static void network_ethernet_print_config(const eth_config_t* eth_config) {
-    	ESP_LOGI(TAG,"Ethernet config: \n   model: %s, valid: %s, type: %s, mdc:%d, mdio:%d, rst:%d, mosi:%d, miso:%d, intr:%d, cs:%d, speed:%d, clk:%d, host:%s(%d)",
-		eth_config->model,	eth_config->valid?"YES":"NO",eth_config->spi?"SPI":"RMII",	eth_config->mdc, 	eth_config->mdio,	eth_config->rst,	eth_config->mosi,	eth_config->miso,	eth_config->intr,	eth_config->cs,	eth_config->speed,	eth_config->clk,	eth_config->host==0?"SPI1":eth_config->host==1?"SPI2":eth_config->host==2?"SPI3":"",eth_config->host);
+    	ESP_LOGI(TAG,"Ethernet config => model: %s, valid: %s, type: %s, mdc:%d, mdio:%d, rst:%d, intr:%d, cs:%d, speed:%d, host:%d",
+					eth_config->model, eth_config->valid ? "YES" : "NO", eth_config->spi ? "SPI" : "RMII",	
+					eth_config->mdc, eth_config->mdio,	
+					eth_config->rst, eth_config->intr, eth_config->cs, eth_config->speed, eth_config->host);
 }
 
 
@@ -115,10 +117,7 @@ void init_network_ethernet() {
 	xEventGroupClearBits(ethernet_event_group, LINK_UP_BIT);
     spi_device_handle_t spi_handle = NULL;
     if (network_driver->spi) {
-	    if (err == ESP_OK) {
-            ESP_LOGI(TAG, "Adding ethernet SPI on host %d (SPI%d) with mosi %d and miso %d", eth.host, eth.host+1, eth.mosi, eth.miso);
-            err = spi_bus_add_device(eth.host, network_driver->devcfg, &spi_handle);
-        }
+	    err = spi_bus_add_device(eth.host, network_driver->devcfg, &spi_handle);
         if (err != ESP_OK) {
             ESP_LOGE(TAG, "SPI host failed : %s", esp_err_to_name(err));
         }