diff options
| author | Nick Moore <nick@zoic.org> | 2019-05-02 15:42:10 +1000 |
|---|---|---|
| committer | Nick Moore <nick@zoic.org> | 2019-05-02 16:05:33 +1000 |
| commit | baa9c02c8b1737bf31319b58d623ca970829af24 (patch) | |
| tree | 460574948c7aca1fda95b93ad191f6237513bcad /shared-module | |
| parent | 09d0e99d5b60e5cbb2ccb0493dff2b516f2ee3eb (diff) | |
Add a kw-only argument "dhcp" to wiznet5k object
Diffstat (limited to 'shared-module')
| -rw-r--r-- | shared-module/wiznet/wiznet5k.c | 11 | ||||
| -rw-r--r-- | shared-module/wiznet/wiznet5k.h | 6 |
2 files changed, 8 insertions, 9 deletions
diff --git a/shared-module/wiznet/wiznet5k.c b/shared-module/wiznet/wiznet5k.c index 660df90b7..237f67887 100644 --- a/shared-module/wiznet/wiznet5k.c +++ b/shared-module/wiznet/wiznet5k.c @@ -328,27 +328,29 @@ void wiznet5k_socket_timer_tick(mod_network_socket_obj_t *socket) { } } -void wiznet5k_start_dhcp(void) { +int wiznet5k_start_dhcp(void) { // XXX this should throw an error if DHCP fails static DHCP_INIT_BUFFER_TYPE dhcp_buf[DHCP_INIT_BUFFER_SIZE]; if (wiznet5k_obj.dhcp_socket < 0) { // Set up the socket to listen on UDP 68 before calling DHCP_init wiznet5k_obj.dhcp_socket = get_available_socket(&wiznet5k_obj); - if (wiznet5k_obj.dhcp_socket < 0) return; + if (wiznet5k_obj.dhcp_socket < 0) return MP_EMFILE; WIZCHIP_EXPORT(socket)(wiznet5k_obj.dhcp_socket, MOD_NETWORK_SOCK_DGRAM, DHCP_CLIENT_PORT, 0); DHCP_init(wiznet5k_obj.dhcp_socket, dhcp_buf); } + return 0; } -void wiznet5k_stop_dhcp(void) { +int wiznet5k_stop_dhcp(void) { if (wiznet5k_obj.dhcp_socket >= 0) { DHCP_stop(); WIZCHIP_EXPORT(close)(wiznet5k_obj.dhcp_socket); wiznet5k_obj.socket_used &= ~(1 << wiznet5k_obj.dhcp_socket); wiznet5k_obj.dhcp_socket = -1; } + return 0; } bool wiznet5k_check_dhcp(void) { @@ -403,9 +405,6 @@ mp_obj_t wiznet5k_create(mp_obj_t spi_in, mp_obj_t cs_in, mp_obj_t rst_in) { // seems we need a small delay after init mp_hal_delay_ms(250); - // dhcp is started by default - wiznet5k_start_dhcp(); - // register with network module network_module_register_nic(&wiznet5k_obj); diff --git a/shared-module/wiznet/wiznet5k.h b/shared-module/wiznet/wiznet5k.h index 09f83df66..2cfb17a20 100644 --- a/shared-module/wiznet/wiznet5k.h +++ b/shared-module/wiznet/wiznet5k.h @@ -39,7 +39,7 @@ typedef struct _wiznet5k_obj_t { digitalio_digitalinout_obj_t cs; digitalio_digitalinout_obj_t rst; uint8_t socket_used; - int8_t dhcp_socket; + int8_t dhcp_socket; // -1 for DHCP not in use } wiznet5k_obj_t; int wiznet5k_gethostbyname(mp_obj_t nic, const char *name, mp_uint_t len, uint8_t *out_ip); @@ -60,8 +60,8 @@ void wiznet5k_socket_timer_tick(mod_network_socket_obj_t *socket); mp_obj_t wiznet5k_socket_disconnect(mp_obj_t self_in); mp_obj_t wiznet5k_create(mp_obj_t spi_in, mp_obj_t cs_in, mp_obj_t rst_in); -void wiznet5k_start_dhcp(void); -void wiznet5k_stop_dhcp(void); +int wiznet5k_start_dhcp(void); +int wiznet5k_stop_dhcp(void); bool wiznet5k_check_dhcp(void); extern const mod_network_nic_type_t mod_network_nic_type_wiznet5k; |
