diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/wiznet5k/ethernet/socket.c | 11 | ||||
| -rw-r--r-- | drivers/wiznet5k/internet/dhcp/dhcp.c | 21 | ||||
| -rw-r--r-- | drivers/wiznet5k/internet/dhcp/dhcp.h | 6 |
3 files changed, 17 insertions, 21 deletions
diff --git a/drivers/wiznet5k/ethernet/socket.c b/drivers/wiznet5k/ethernet/socket.c index 4ca7113e8..bea98601d 100644 --- a/drivers/wiznet5k/ethernet/socket.c +++ b/drivers/wiznet5k/ethernet/socket.c @@ -6,6 +6,7 @@ //! \version 1.0.3 //! \date 2013/10/21 //! \par Revision history +//! <2018/10/09> Nick Moore fixes for CircuitPython //! <2014/05/01> V1.0.3. Refer to M20140501 //! 1. Implicit type casting -> Explicit type casting. //! 2. replace 0x01 with PACK_REMAINED in recvfrom() @@ -393,15 +394,7 @@ int32_t WIZCHIP_EXPORT(sendto)(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t CHECK_SOCKDATA(); //M20140501 : For avoiding fatal error on memory align mismatched //if(*((uint32_t*)addr) == 0) return SOCKERR_IPINVALID; - { - uint32_t taddr; - taddr = ((uint32_t)addr[0]) & 0x000000FF; - taddr = (taddr << 8) + ((uint32_t)addr[1] & 0x000000FF); - taddr = (taddr << 8) + ((uint32_t)addr[2] & 0x000000FF); - taddr = (taddr << 8) + ((uint32_t)addr[3] & 0x000000FF); - if (taddr == 0xFFFFFFFF || taddr == 0) return SOCKERR_IPINVALID; - } - // + if ((addr[0] | addr[1] | addr[2] | addr[3]) == 0) return SOCKERR_IPINVALID; if(port == 0) return SOCKERR_PORTZERO; tmp = getSn_SR(sn); if(tmp != SOCK_MACRAW && tmp != SOCK_UDP) return SOCKERR_SOCKSTATUS; diff --git a/drivers/wiznet5k/internet/dhcp/dhcp.c b/drivers/wiznet5k/internet/dhcp/dhcp.c index 574758259..c56e64474 100644 --- a/drivers/wiznet5k/internet/dhcp/dhcp.c +++ b/drivers/wiznet5k/internet/dhcp/dhcp.c @@ -6,6 +6,7 @@ //! \version 1.1.0 //! \date 2013/11/18 //! \par Revision history +//! <2018/10/09> Modified by Nick Moore for CircuitPython //! <2013/11/18> 1st Release //! <2012/12/20> V1.1.0 //! 1. Optimize code @@ -51,7 +52,7 @@ //#include "Ethernet/socket.h" //#include "Internet/DHCP/dhcp.h" -#include "../../Ethernet/socket.h" +#include "../../ethernet/socket.h" #include "dhcp.h" /* If you want to display debug & processing message, Define _DHCP_DEBUG_ in dhcp.h */ @@ -408,7 +409,7 @@ void send_DHCP_DISCOVER(void) printf("> Send DHCP_DISCOVER\r\n"); #endif - sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); + WIZCHIP_EXPORT(sendto)(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); } /* SEND DHCP REQUEST */ @@ -503,7 +504,7 @@ void send_DHCP_REQUEST(void) printf("> Send DHCP_REQUEST\r\n"); #endif - sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); + WIZCHIP_EXPORT(sendto)(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); } @@ -564,7 +565,7 @@ void send_DHCP_DECLINE(void) printf("\r\n> Send DHCP_DECLINE\r\n"); #endif - sendto(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); + WIZCHIP_EXPORT(sendto)(DHCP_SOCKET, (uint8_t *)pDHCPMSG, RIP_MSG_SIZE, ip, DHCP_SERVER_PORT); } /* PARSE REPLY pDHCPMSG */ @@ -581,13 +582,13 @@ int8_t parseDHCPMSG(void) if((len = getSn_RX_RSR(DHCP_SOCKET)) > 0) { - len = recvfrom(DHCP_SOCKET, (uint8_t *)pDHCPMSG, len, svr_addr, &svr_port); + len = WIZCHIP_EXPORT(recvfrom)(DHCP_SOCKET, (uint8_t *)pDHCPMSG, len, svr_addr, &svr_port); #ifdef _DHCP_DEBUG_ printf("DHCP message : %d.%d.%d.%d(%d) %d received. \r\n",svr_addr[0],svr_addr[1],svr_addr[2], svr_addr[3],svr_port, len); #endif } else return 0; - if (svr_port == DHCP_SERVER_PORT) { + if (svr_port == DHCP_SERVER_PORT) { // compare mac address if ( (pDHCPMSG->chaddr[0] != DHCP_CHADDR[0]) || (pDHCPMSG->chaddr[1] != DHCP_CHADDR[1]) || (pDHCPMSG->chaddr[2] != DHCP_CHADDR[2]) || (pDHCPMSG->chaddr[3] != DHCP_CHADDR[3]) || @@ -677,7 +678,7 @@ uint8_t DHCP_run(void) if(dhcp_state == STATE_DHCP_STOP) return DHCP_STOPPED; if(getSn_SR(DHCP_SOCKET) != SOCK_UDP) - socket(DHCP_SOCKET, Sn_MR_UDP, DHCP_CLIENT_PORT, 0x00); + WIZCHIP_EXPORT(socket)(DHCP_SOCKET, Sn_MR_UDP, DHCP_CLIENT_PORT, 0x00); ret = DHCP_RUNNING; type = parseDHCPMSG(); @@ -801,7 +802,7 @@ uint8_t DHCP_run(void) void DHCP_stop(void) { - close(DHCP_SOCKET); + WIZCHIP_EXPORT(close)(DHCP_SOCKET); dhcp_state = STATE_DHCP_STOP; } @@ -869,7 +870,7 @@ int8_t check_DHCP_leasedIP(void) // IP conflict detection : ARP request - ARP reply // Broadcasting ARP Request for check the IP conflict using UDP sendto() function - ret = sendto(DHCP_SOCKET, (uint8_t *)"CHECK_IP_CONFLICT", 17, DHCP_allocated_ip, 5000); + ret = WIZCHIP_EXPORT(sendto)(DHCP_SOCKET, (uint8_t *)"CHECK_IP_CONFLICT", 17, DHCP_allocated_ip, 5000); // RCR value restore setRCR(tmp); @@ -893,7 +894,7 @@ int8_t check_DHCP_leasedIP(void) } } -void DHCP_init(uint8_t s, uint8_t * buf) +void DHCP_init(uint8_t s, DHCP_INIT_BUFFER_TYPE* buf) { uint8_t zeroip[4] = {0,0,0,0}; getSHAR(DHCP_CHADDR); diff --git a/drivers/wiznet5k/internet/dhcp/dhcp.h b/drivers/wiznet5k/internet/dhcp/dhcp.h index ee154d506..881bf5a6c 100644 --- a/drivers/wiznet5k/internet/dhcp/dhcp.h +++ b/drivers/wiznet5k/internet/dhcp/dhcp.h @@ -55,7 +55,7 @@ /* Retry to processing DHCP */ #define MAX_DHCP_RETRY 2 ///< Maximum retry count -#define DHCP_WAIT_TIME 10 ///< Wait Time 10s +#define DHCP_WAIT_TIME 3 ///< Wait Time 3s (was 10s) /* UDP port numbers for DHCP */ #define DHCP_SERVER_PORT 67 ///< DHCP server port number @@ -78,12 +78,14 @@ enum DHCP_STOPPED ///< Stop processing DHCP protocol }; +#define DHCP_INIT_BUFFER_TYPE uint32_t +#define DHCP_INIT_BUFFER_SIZE (137) /* * @brief DHCP client initialization (outside of the main loop) * @param s - socket number * @param buf - buffer for processing DHCP message */ -void DHCP_init(uint8_t s, uint8_t * buf); +void DHCP_init(uint8_t s, DHCP_INIT_BUFFER_TYPE* buf); /* * @brief DHCP 1s Tick Timer handler |
