@@ -1009,6 +1009,18 @@ bool ETHClass::fullDuplex() const {
10091009 return (link_duplex == ETH_DUPLEX_FULL);
10101010}
10111011
1012+ bool ETHClass::setFullDuplex (bool on) {
1013+ if (_eth_handle == NULL ) {
1014+ return false ;
1015+ }
1016+ eth_duplex_t link_duplex = on ? ETH_DUPLEX_FULL : ETH_DUPLEX_HALF;
1017+ esp_err_t err = esp_eth_ioctl (_eth_handle, ETH_CMD_S_DUPLEX_MODE, &link_duplex);
1018+ if (err != ESP_OK) {
1019+ log_e (" Failed to set duplex mode: 0x%x: %s" , err, esp_err_to_name (err));
1020+ }
1021+ return err == ESP_OK;
1022+ }
1023+
10121024bool ETHClass::autoNegotiation () const {
10131025 if (_eth_handle == NULL ) {
10141026 return false ;
@@ -1018,6 +1030,17 @@ bool ETHClass::autoNegotiation() const {
10181030 return auto_nego;
10191031}
10201032
1033+ bool ETHClass::setAutoNegotiation (bool on) {
1034+ if (_eth_handle == NULL ) {
1035+ return false ;
1036+ }
1037+ esp_err_t err = esp_eth_ioctl (_eth_handle, ETH_CMD_S_AUTONEGO, &on);
1038+ if (err != ESP_OK) {
1039+ log_e (" Failed to set auto negotiation: 0x%x: %s" , err, esp_err_to_name (err));
1040+ }
1041+ return err == ESP_OK;
1042+ }
1043+
10211044uint32_t ETHClass::phyAddr () const {
10221045 if (_eth_handle == NULL ) {
10231046 return 0 ;
@@ -1027,7 +1050,7 @@ uint32_t ETHClass::phyAddr() const {
10271050 return phy_addr;
10281051}
10291052
1030- uint8_t ETHClass::linkSpeed () const {
1053+ uint16_t ETHClass::linkSpeed () const {
10311054 if (_eth_handle == NULL ) {
10321055 return 0 ;
10331056 }
@@ -1036,6 +1059,18 @@ uint8_t ETHClass::linkSpeed() const {
10361059 return (link_speed == ETH_SPEED_10M) ? 10 : 100 ;
10371060}
10381061
1062+ bool ETHClass::setLinkSpeed (uint16_t speed) {
1063+ if (_eth_handle == NULL ) {
1064+ return false ;
1065+ }
1066+ eth_speed_t link_speed = (speed == 10 ) ? ETH_SPEED_10M : ETH_SPEED_100M;
1067+ esp_err_t err = esp_eth_ioctl (_eth_handle, ETH_CMD_S_SPEED, &link_speed);
1068+ if (err != ESP_OK) {
1069+ log_e (" Failed to set link speed: 0x%x: %s" , err, esp_err_to_name (err));
1070+ }
1071+ return err == ESP_OK;
1072+ }
1073+
10391074// void ETHClass::getMac(uint8_t* mac)
10401075// {
10411076// if(_eth_handle != NULL && mac != NULL){
0 commit comments