kopia lustrzana https://github.com/micropython/micropython
wiznet5k: dns: Support using dynamic socket number.
Signed-off-by: Jared Hancock <jared@greezybacon.me>
rodzic
9d4ab88f93
commit
710bf834cf
|
@ -500,12 +500,23 @@ static void wiznet5k_init(void) {
|
||||||
static int wiznet5k_gethostbyname(mp_obj_t nic, const char *name, mp_uint_t len, uint8_t *out_ip) {
|
static int wiznet5k_gethostbyname(mp_obj_t nic, const char *name, mp_uint_t len, uint8_t *out_ip) {
|
||||||
uint8_t dns_ip[MOD_NETWORK_IPADDR_BUF_SIZE] = {8, 8, 8, 8};
|
uint8_t dns_ip[MOD_NETWORK_IPADDR_BUF_SIZE] = {8, 8, 8, 8};
|
||||||
uint8_t *buf = m_new(uint8_t, MAX_DNS_BUF_SIZE);
|
uint8_t *buf = m_new(uint8_t, MAX_DNS_BUF_SIZE);
|
||||||
DNS_init(2, buf);
|
mp_int_t sn = wiznet5k_allocate_socket();
|
||||||
|
if (sn == -1) {
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
DNS_init(sn, buf);
|
||||||
if (wiznet5k_obj.netinfo.dns[0]) {
|
if (wiznet5k_obj.netinfo.dns[0]) {
|
||||||
memcpy(dns_ip, wiznet5k_obj.netinfo.dns, MOD_NETWORK_IPADDR_BUF_SIZE);
|
memcpy(dns_ip, wiznet5k_obj.netinfo.dns, MOD_NETWORK_IPADDR_BUF_SIZE);
|
||||||
}
|
}
|
||||||
mp_int_t ret = DNS_run(dns_ip, (uint8_t *)name, out_ip);
|
mp_int_t ret = DNS_run(dns_ip, (uint8_t *)name, out_ip);
|
||||||
m_del(uint8_t, buf, MAX_DNS_BUF_SIZE);
|
m_del(uint8_t, buf, MAX_DNS_BUF_SIZE);
|
||||||
|
|
||||||
|
// NOTE: DNS_run will close the socket, so it just needs to be marked as
|
||||||
|
// unused here and clear any interrupts.
|
||||||
|
wiznet5k_obj.socket_used &= ~(1 << sn);
|
||||||
|
wizchip_clrinterrupt(IK_SOCK_0 << sn);
|
||||||
|
|
||||||
if (ret == 1) {
|
if (ret == 1) {
|
||||||
// success
|
// success
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Ładowanie…
Reference in New Issue