]> granicus.if.org Git - esp-idf/commitdiff
ethernet: update spi-ethernet api
authorsuda-morris <362953310@qq.com>
Wed, 18 Sep 2019 10:28:55 +0000 (18:28 +0800)
committerbot <bot@espressif.com>
Thu, 19 Sep 2019 09:41:21 +0000 (09:41 +0000)
components/esp_eth/include/esp_eth_mac.h
components/esp_eth/src/esp_eth_mac_dm9051.c
components/esp_eth/test/test_emac.c
examples/common_components/protocol_examples_common/connect.c
examples/ethernet/basic/main/ethernet_example_main.c
examples/ethernet/eth2ap/main/ethernet_example_main.c
examples/ethernet/iperf/main/cmd_ethernet.c

index 07507cefed357ac2387cd82b414dff335160a96b..c189acb2898378b255d893d7315bb9bdc008a9cf 100644 (file)
@@ -247,11 +247,6 @@ typedef struct {
     uint32_t sw_reset_timeout_ms; /*!< Software reset timeout value (Unit: ms) */
     uint32_t rx_task_stack_size;  /*!< Stack size of the receive task */
     uint32_t rx_task_prio;        /*!< Priority of the receive task */
-    uint32_t queue_len;           /*!< Length of the transaction queue */
-#if CONFIG_ETH_USE_SPI_ETHERNET
-    spi_device_handle_t spi_hdl;  /*!< Handle of spi device */
-#endif
-
 } eth_mac_config_t;
 
 /**
@@ -263,7 +258,6 @@ typedef struct {
         .sw_reset_timeout_ms = 100, \
         .rx_task_stack_size = 4096, \
         .rx_task_prio = 15,         \
-        .queue_len = 100,           \
     }
 
 #if CONFIG_ETH_USE_ESP32_EMAC
@@ -280,16 +274,34 @@ esp_eth_mac_t *esp_eth_mac_new_esp32(const eth_mac_config_t *config);
 #endif
 
 #if CONFIG_ETH_SPI_ETHERNET_DM9051
+/**
+ * @brief DM9051 specific configuration
+ *
+ */
+typedef struct {
+    spi_device_handle_t spi_hdl; /*!< Handle of SPI device driver */
+} eth_dm9051_config_t;
+
+/**
+ * @brief Default DM9051 specific configuration
+ *
+ */
+#define ETH_DM9051_DEFAULT_CONFIG(spi_device) \
+    {                                         \
+        .spi_hdl = spi_device,                \
+    }
+
 /**
 * @brief Create DM9051 Ethernet MAC instance
 *
-* @param config: Ethernet MAC configuration
+* @param dm9051_config: DM9051 specific configuration
+* @param mac_config: Ethernet MAC configuration
 *
 * @return
 *      - instance: create MAC instance successfully
 *      - NULL: create MAC instance failed because some error occurred
 */
-esp_eth_mac_t *esp_eth_mac_new_dm9051(const eth_mac_config_t *config);
+esp_eth_mac_t *esp_eth_mac_new_dm9051(const eth_dm9051_config_t *dm9051_config, const eth_mac_config_t *mac_config);
 #endif
 #ifdef __cplusplus
 }
index c2c4c109570fa5e74b4a09424def68b4b59dc68a..5fb9456ccc642ed9abc36f901bd6d2123a71491b 100644 (file)
@@ -815,16 +815,16 @@ static esp_err_t emac_dm9051_del(esp_eth_mac_t *mac)
     return ESP_OK;
 }
 
-esp_eth_mac_t *esp_eth_mac_new_dm9051(const eth_mac_config_t *config)
+esp_eth_mac_t *esp_eth_mac_new_dm9051(const eth_dm9051_config_t *dm9051_config, const eth_mac_config_t *mac_config)
 {
     esp_eth_mac_t *ret = NULL;
-    MAC_CHECK(config, "can't set mac config to null", err, NULL);
-    MAC_CHECK(config->spi_hdl, "can't set spi handle to null", err, NULL);
+    MAC_CHECK(dm9051_config, "can't set dm9051 specific config to null", err, NULL);
+    MAC_CHECK(mac_config, "can't set mac config to null", err, NULL);
     emac_dm9051_t *emac = calloc(1, sizeof(emac_dm9051_t));
     MAC_CHECK(emac, "calloc emac failed", err, NULL);
     /* bind methods and attributes */
-    emac->sw_reset_timeout_ms = config->sw_reset_timeout_ms;
-    emac->spi_hdl = config->spi_hdl;
+    emac->sw_reset_timeout_ms = mac_config->sw_reset_timeout_ms;
+    emac->spi_hdl = dm9051_config->spi_hdl;
     emac->parent.set_mediator = emac_dm9051_set_mediator;
     emac->parent.init = emac_dm9051_init;
     emac->parent.deinit = emac_dm9051_deinit;
@@ -843,8 +843,8 @@ esp_eth_mac_t *esp_eth_mac_new_dm9051(const eth_mac_config_t *config)
     emac->spi_lock = xSemaphoreCreateMutex();
     MAC_CHECK(emac->spi_lock, "create lock failed", err_lock, NULL);
     /* create dm9051 task */
-    BaseType_t xReturned = xTaskCreate(emac_dm9051_task, "dm9051_tsk", config->rx_task_stack_size, emac,
-                                       config->rx_task_prio, &emac->rx_task_hdl);
+    BaseType_t xReturned = xTaskCreate(emac_dm9051_task, "dm9051_tsk", mac_config->rx_task_stack_size, emac,
+                                       mac_config->rx_task_prio, &emac->rx_task_hdl);
     MAC_CHECK(xReturned == pdPASS, "create dm9051 task failed", err_tsk, NULL);
     return &(emac->parent);
 err_tsk:
index 2ebe98b0238c3bc5beaf17c71e0be02855d55e6b..d38c3ac9c254f30fff97bb732933b288e9ff1cd9 100644 (file)
@@ -119,8 +119,8 @@ TEST_CASE("dm9051 io test", "[ethernet][ignore]")
     TEST_ESP_OK(esp_event_handler_register(ETH_EVENT, ESP_EVENT_ANY_ID, &eth_event_handler, NULL));
     TEST_ESP_OK(esp_event_handler_register(IP_EVENT, IP_EVENT_ETH_GOT_IP, &got_ip_event_handler, NULL));
     eth_mac_config_t mac_config = ETH_MAC_DEFAULT_CONFIG();
-    mac_config.spi_hdl = spi_handle;
-    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&mac_config);
+    eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(spi_handle);
+    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
     eth_phy_config_t phy_config = ETH_PHY_DEFAULT_CONFIG();
     esp_eth_phy_t *phy = esp_eth_phy_new_dm9051(&phy_config);
     esp_eth_config_t config = ETH_DEFAULT_CONFIG(mac, phy);
index 8ee8aea9d493fdb09bb83f58b78ce5e657720513..38d68a3a529e53cedecd1f54a5bc18575f5e00f6 100644 (file)
@@ -219,9 +219,9 @@ static void start(void)
         .queue_size = 20
     };
     ESP_ERROR_CHECK(spi_bus_add_device(CONFIG_EXAMPLE_ETH_SPI_HOST, &devcfg, &spi_handle));
-    /* dm9051 ethernet driver is based on spi driver, so need to specify the spi handle */
-    mac_config.spi_hdl = spi_handle;
-    s_mac = esp_eth_mac_new_dm9051(&mac_config);
+    /* dm9051 ethernet driver is based on spi driver */
+    eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(spi_handle);
+    s_mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
     s_phy = esp_eth_phy_new_dm9051(&phy_config);
 #endif
     esp_eth_config_t config = ETH_DEFAULT_CONFIG(s_mac, s_phy);
index a58bab806fd44bead898852e2fafc6d8ac430be3..2157a9132a603ee3f08f9a83a5b1f69bb5102aac 100644 (file)
@@ -104,9 +104,9 @@ void app_main(void)
         .queue_size = 20
     };
     ESP_ERROR_CHECK(spi_bus_add_device(CONFIG_EXAMPLE_ETH_SPI_HOST, &devcfg, &spi_handle));
-    /* dm9051 ethernet driver is based on spi driver, so need to specify the spi handle */
-    mac_config.spi_hdl = spi_handle;
-    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&mac_config);
+    /* dm9051 ethernet driver is based on spi driver */
+    eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(spi_handle);
+    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
     esp_eth_phy_t *phy = esp_eth_phy_new_dm9051(&phy_config);
 #endif
     esp_eth_config_t config = ETH_DEFAULT_CONFIG(mac, phy);
index b9b2193a2a52daedb1e9fecb784b56ad1a0a2166..f3df345f678ce991f7fcd6f4a683d8411a6c95f6 100644 (file)
@@ -176,9 +176,9 @@ static void initialize_ethernet(void)
         .queue_size = 20
     };
     ESP_ERROR_CHECK(spi_bus_add_device(CONFIG_EXAMPLE_ETH_SPI_HOST, &devcfg, &spi_handle));
-    /* dm9051 ethernet driver is based on spi driver, so need to specify the spi handle */
-    mac_config.spi_hdl = spi_handle;
-    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&mac_config);
+    /* dm9051 ethernet driver is based on spi driver */
+    eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(spi_handle);
+    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
     esp_eth_phy_t *phy = esp_eth_phy_new_dm9051(&phy_config);
 #endif
     esp_eth_config_t config = ETH_DEFAULT_CONFIG(mac, phy);
index d148b5a285ffed5d8f4ef0bfe8279ad38616802c..075908b13b00233f59cb472d7c260420c4936157 100644 (file)
@@ -215,9 +215,9 @@ void register_ethernet(void)
         .queue_size = 20
     };
     ESP_ERROR_CHECK(spi_bus_add_device(CONFIG_EXAMPLE_ETH_SPI_HOST, &devcfg, &spi_handle));
-    /* dm9051 ethernet driver is based on spi driver, so need to specify the spi handle */
-    mac_config.spi_hdl = spi_handle;
-    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&mac_config);
+    /* dm9051 ethernet driver is based on spi driver */
+    eth_dm9051_config_t dm9051_config = ETH_DM9051_DEFAULT_CONFIG(spi_handle);
+    esp_eth_mac_t *mac = esp_eth_mac_new_dm9051(&dm9051_config, &mac_config);
     esp_eth_phy_t *phy = esp_eth_phy_new_dm9051(&phy_config);
 #endif
     esp_eth_config_t config = ETH_DEFAULT_CONFIG(mac, phy);