kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'feature/eth_set_mac_addr' into 'master'
emac:add set_eth_mac api See merge request !1604pull/1378/head
commit
709d19f99e
|
@ -90,6 +90,16 @@ void esp_eth_get_mac(uint8_t mac[6])
|
|||
memcpy(mac, &(emac_config.macaddr[0]), 6);
|
||||
}
|
||||
|
||||
esp_err_t esp_eth_set_mac(const uint8_t mac[6])
|
||||
{
|
||||
if((mac[0] & 0x01) == 0) {
|
||||
memcpy(&(emac_config.macaddr[0]),mac, 6);
|
||||
return ESP_OK;
|
||||
} else {
|
||||
return ESP_ERR_INVALID_MAC;
|
||||
}
|
||||
}
|
||||
|
||||
static void emac_setup_tx_desc(struct dma_extended_desc *tx_desc , uint32_t size)
|
||||
{
|
||||
tx_desc->basic.desc1 = size & 0xfff;
|
||||
|
@ -350,16 +360,6 @@ static esp_err_t emac_verify_args(void)
|
|||
return ret;
|
||||
}
|
||||
|
||||
//TODO for mac filter
|
||||
void emac_set_mac_addr(void)
|
||||
{
|
||||
}
|
||||
|
||||
//TODO
|
||||
void emac_check_mac_addr(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void emac_process_tx(void)
|
||||
{
|
||||
uint32_t cur_tx_desc = emac_read_tx_cur_reg();
|
||||
|
@ -414,7 +414,7 @@ static uint32_t IRAM_ATTR emac_get_rxbuf_count_in_intr(void)
|
|||
uint32_t cur_rx_desc = emac_read_rx_cur_reg();
|
||||
struct dma_extended_desc *cur_desc = (struct dma_extended_desc *)cur_rx_desc;
|
||||
|
||||
while (cur_desc->basic.desc0 == EMAC_DESC_RX_OWN) {
|
||||
while (cur_desc->basic.desc0 == EMAC_DESC_RX_OWN && cnt < DMA_RX_BUF_NUM) {
|
||||
cnt++;
|
||||
cur_desc = (struct dma_extended_desc *)cur_desc->basic.desc3;
|
||||
}
|
||||
|
@ -769,11 +769,7 @@ static void emac_start(void *param)
|
|||
emac_enable_clk(true);
|
||||
|
||||
emac_reset();
|
||||
emac_macaddr_init();
|
||||
|
||||
emac_check_mac_addr();
|
||||
|
||||
emac_set_mac_addr();
|
||||
emac_set_macaddr_reg();
|
||||
|
||||
emac_set_tx_base_reg();
|
||||
|
@ -1097,6 +1093,7 @@ esp_err_t esp_eth_init_internal(eth_config_t *config)
|
|||
|
||||
ESP_LOGI(TAG, "mac version %04xa", emac_read_mac_version());
|
||||
emac_hw_init();
|
||||
emac_macaddr_init();
|
||||
|
||||
//watchdog TODO
|
||||
|
||||
|
|
|
@ -250,6 +250,27 @@ static inline esp_err_t esp_eth_smi_wait_set(uint32_t reg_num, uint16_t value_ma
|
|||
*/
|
||||
void esp_eth_free_rx_buf(void *buf);
|
||||
|
||||
/**
|
||||
* @brief Get mac of ethernet interface.
|
||||
*
|
||||
* @param[out] mac: store mac of the interface.
|
||||
*
|
||||
*/
|
||||
void esp_eth_get_mac(uint8_t mac[6]);
|
||||
|
||||
/**
|
||||
* @brief Set mac of ethernet interface.
|
||||
*
|
||||
* @note user can call this function after emac_init,and the new mac address will be enabled after emac_enable.
|
||||
*
|
||||
* @param[in] mac: the Mac address.
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK: succeed
|
||||
* - ESP_ERR_INVALID_MAC: invalid mac address
|
||||
*/
|
||||
esp_err_t esp_eth_set_mac(const uint8_t mac[6]);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Ładowanie…
Reference in New Issue