Skip to content

Commit 380cbfb

Browse files
committed
Add hash to Socket so it can be used in dicts
1 parent f3bc712 commit 380cbfb

File tree

5 files changed

+26
-20
lines changed

5 files changed

+26
-20
lines changed

ports/esp32s2/common-hal/socketpool/Socket.c

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@
3232
#include "py/runtime.h"
3333
#include "supervisor/shared/tick.h"
3434

35-
#include "esp_log.h"
36-
static const char* TAG = "socket";
37-
3835
void common_hal_socketpool_socket_settimeout(socketpool_socket_obj_t* self, mp_uint_t timeout_ms) {
3936
self->timeout_ms = timeout_ms;
4037
}
@@ -49,7 +46,6 @@ bool common_hal_socketpool_socket_connect(socketpool_socket_obj_t* self, const c
4946
tls_config = &self->ssl_context->ssl_config;
5047
}
5148
int result = esp_tls_conn_new_sync(host, hostlen, port, tls_config, self->tcp);
52-
ESP_EARLY_LOGW(TAG, "connect result %d", result);
5349
self->connected = result >= 0;
5450
if (result < 0) {
5551
int esp_tls_code;
@@ -58,8 +54,11 @@ bool common_hal_socketpool_socket_connect(socketpool_socket_obj_t* self, const c
5854

5955
if (err == ESP_ERR_MBEDTLS_SSL_SETUP_FAILED) {
6056
mp_raise_espidf_MemoryError();
57+
} else if (ESP_ERR_MBEDTLS_SSL_HANDSHAKE_FAILED) {
58+
// What should this error be?
59+
mp_raise_OSError_msg_varg(translate("Failed SSL handshake"));
6160
} else {
62-
mp_raise_OSError_msg_varg(translate("Unhandled ESP TLS error %d %d %x"), esp_tls_code, flags, err);
61+
mp_raise_OSError_msg_varg(translate("Unhandled ESP TLS error %d %d %x %d"), esp_tls_code, flags, err, result);
6362
}
6463
}
6564

@@ -99,37 +98,31 @@ mp_uint_t common_hal_socketpool_socket_recv_into(socketpool_socket_obj_t* self,
9998
// and between encrypted TLS blocks.
10099
int status = lwip_ioctl(sockfd, FIONREAD, &available);
101100
if (status < 0) {
102-
// ESP_EARLY_LOGW(TAG, "ioctl fail. socket %d status %d errno %d available %d", sockfd, status, errno, available);
103101
last_read = status;
104102
break;
105103
}
106104
}
107-
// ESP_EARLY_LOGW(TAG, "available %d", available);
108105
size_t remaining = len - received;
109106
if (available > remaining) {
110107
available = remaining;
111108
}
112109
if (available > 0) {
113110
last_read = esp_tls_conn_read(self->tcp, (void*) buf + received, available);
114-
// ESP_EARLY_LOGW(TAG, "read %d out of %d", last_read, available);
115111
received += last_read;
116112
}
117113
}
118114

119115
if (last_read == 0) {
120116
// socket closed
121-
ESP_EARLY_LOGW(TAG, "receive close %d %d", received, len);
122117
common_hal_socketpool_socket_close(self);
123118
}
124119
if (last_read < 0) {
125-
// ESP_EARLY_LOGI(TAG, "received %d", received);
126120
mp_raise_BrokenPipeError();
127121
}
128122
return received;
129123
}
130124

131125
void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self) {
132-
// ESP_EARLY_LOGW(TAG, "close");
133126
if (self->connected) {
134127
self->connected = false;
135128
}
@@ -144,6 +137,10 @@ void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self) {
144137
}
145138

146139
bool common_hal_socketpool_socket_get_closed(socketpool_socket_obj_t* self) {
147-
// ESP_EARLY_LOGW(TAG, "tcp %p", self->tcp);
148140
return self->tcp == NULL;
149141
}
142+
143+
144+
mp_uint_t common_hal_socketpool_socket_get_hash(socketpool_socket_obj_t* self) {
145+
return self->num;
146+
}

ports/esp32s2/common-hal/socketpool/SocketPool.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333

3434
#include "bindings/espidf/__init__.h"
3535

36-
3736
void common_hal_socketpool_socketpool_construct(socketpool_socketpool_obj_t* self, mp_obj_t radio) {
3837
if (radio != MP_OBJ_FROM_PTR(&common_hal_wifi_radio_obj)) {
3938
mp_raise_ValueError(translate("SocketPool can only be used with wifi.radio."));

ports/esp32s2/common-hal/wifi/Radio.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,6 @@
3838
#include "esp-idf/components/esp_wifi/include/esp_wifi.h"
3939
#include "esp-idf/components/lwip/include/apps/ping/ping_sock.h"
4040

41-
#include "esp_log.h"
42-
static const char* TAG = "radio";
43-
4441
static void start_station(wifi_radio_obj_t *self) {
4542
if (self->sta_mode) {
4643
return;
@@ -170,8 +167,6 @@ mp_int_t common_hal_wifi_radio_ping(wifi_radio_obj_t *self, mp_obj_t ip_address,
170167
uint32_t elapsed_time = 0xffffffff;
171168
if (received > 0) {
172169
esp_ping_get_profile(ping, ESP_PING_PROF_TIMEGAP, &elapsed_time, sizeof(elapsed_time));
173-
} else {
174-
ESP_EARLY_LOGW(TAG, "received none - time %d timeout %d", total_time_ms, timeout_ms);
175170
}
176171
esp_ping_delete_session(ping);
177172

shared-bindings/socketpool/Socket.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,7 @@ STATIC mp_obj_t socketpool_socket_recv_into(size_t n_args, const mp_obj_t *args)
267267
}
268268

269269
if (len == 0) {
270-
ESP_EARLY_LOGW(TAG, "len 0");
271-
mp_raise_OSError(0);
270+
return MP_OBJ_NEW_SMALL_INT(0);
272271
}
273272

274273
mp_int_t ret = common_hal_socketpool_socket_recv_into(self, (byte*)bufinfo.buf, len);
@@ -426,6 +425,20 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_settimeout_obj, socketpool_so
426425
// }
427426
// STATIC MP_DEFINE_CONST_FUN_OBJ_2(socketpool_socket_setblocking_obj, socketpool_socket_setblocking);
428427

428+
//| def __hash__(self) -> int:
429+
//| """Returns a hash for the Socket."""
430+
//| ...
431+
//|
432+
STATIC mp_obj_t socketpool_socket_unary_op(mp_unary_op_t op, mp_obj_t self_in) {
433+
switch (op) {
434+
case MP_UNARY_OP_HASH: {
435+
return MP_OBJ_NEW_SMALL_INT(common_hal_socketpool_socket_get_hash(MP_OBJ_TO_PTR(self_in)));
436+
}
437+
default:
438+
return MP_OBJ_NULL; // op not supported
439+
}
440+
}
441+
429442
STATIC const mp_rom_map_elem_t socketpool_socket_locals_dict_table[] = {
430443
{ MP_ROM_QSTR(MP_QSTR___enter__), MP_ROM_PTR(&default___enter___obj) },
431444
{ MP_ROM_QSTR(MP_QSTR___exit__), MP_ROM_PTR(&socketpool_socket___exit___obj) },
@@ -451,4 +464,5 @@ const mp_obj_type_t socketpool_socket_type = {
451464
{ &mp_type_type },
452465
.name = MP_QSTR_Socket,
453466
.locals_dict = (mp_obj_dict_t*)&socketpool_socket_locals_dict,
467+
.unary_op = socketpool_socket_unary_op,
454468
};

shared-bindings/socketpool/Socket.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,6 @@ mp_uint_t common_hal_socketpool_socket_recv_into(socketpool_socket_obj_t* self,
3838
void common_hal_socketpool_socket_close(socketpool_socket_obj_t* self);
3939
bool common_hal_socketpool_socket_get_closed(socketpool_socket_obj_t* self);
4040
bool common_hal_socketpool_socket_get_connected(socketpool_socket_obj_t* self);
41+
mp_uint_t common_hal_socketpool_socket_get_hash(socketpool_socket_obj_t* self);
4142

4243
#endif // MICROPY_INCLUDED_SHARED_BINDINGS_SOCKETPOOL_SOCKET_H

0 commit comments

Comments
 (0)