At proto support for espressif port + global
This commit is contained in:
parent
bb178ebdce
commit
211c307f79
11 changed files with 1843740 additions and 12 deletions
|
|
@ -182,6 +182,7 @@ STATIC void mark_user_socket(int fd, socketpool_socket_obj_t *obj) {
|
|||
|
||||
STATIC bool _socketpool_socket(socketpool_socketpool_obj_t *self,
|
||||
socketpool_socketpool_addressfamily_t family, socketpool_socketpool_sock_t type,
|
||||
int proto,
|
||||
socketpool_socket_obj_t *sock) {
|
||||
int addr_family;
|
||||
int ipproto;
|
||||
|
|
@ -195,6 +196,8 @@ STATIC bool _socketpool_socket(socketpool_socketpool_obj_t *self,
|
|||
#endif
|
||||
}
|
||||
|
||||
ipproto=proto;
|
||||
|
||||
int socket_type;
|
||||
if (type == SOCKETPOOL_SOCK_STREAM) {
|
||||
socket_type = SOCK_STREAM;
|
||||
|
|
@ -226,9 +229,9 @@ STATIC bool _socketpool_socket(socketpool_socketpool_obj_t *self,
|
|||
// special entry for workflow listener (register system socket)
|
||||
bool socketpool_socket(socketpool_socketpool_obj_t *self,
|
||||
socketpool_socketpool_addressfamily_t family, socketpool_socketpool_sock_t type,
|
||||
socketpool_socket_obj_t *sock) {
|
||||
int proto, socketpool_socket_obj_t *sock) {
|
||||
|
||||
if (!_socketpool_socket(self, family, type, sock)) {
|
||||
if (!_socketpool_socket(self, family, type, proto, sock)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -241,7 +244,7 @@ bool socketpool_socket(socketpool_socketpool_obj_t *self,
|
|||
}
|
||||
|
||||
socketpool_socket_obj_t *common_hal_socketpool_socket(socketpool_socketpool_obj_t *self,
|
||||
socketpool_socketpool_addressfamily_t family, socketpool_socketpool_sock_t type) {
|
||||
socketpool_socketpool_addressfamily_t family, int proto, socketpool_socketpool_sock_t type) {
|
||||
if (family != SOCKETPOOL_AF_INET) {
|
||||
mp_raise_NotImplementedError(translate("Only IPv4 sockets supported"));
|
||||
}
|
||||
|
|
@ -249,7 +252,7 @@ socketpool_socket_obj_t *common_hal_socketpool_socket(socketpool_socketpool_obj_
|
|||
socketpool_socket_obj_t *sock = m_new_obj_with_finaliser(socketpool_socket_obj_t);
|
||||
sock->base.type = &socketpool_socket_type;
|
||||
|
||||
if (!_socketpool_socket(self, family, type, sock)) {
|
||||
if (!_socketpool_socket(self, family, type, proto, sock)) {
|
||||
mp_raise_RuntimeError(translate("Out of sockets"));
|
||||
}
|
||||
mark_user_socket(sock->num, sock);
|
||||
|
|
|
|||
153667
ports/espressif/os
Normal file
153667
ports/espressif/os
Normal file
File diff suppressed because it is too large
Load diff
338011
ports/espressif/os.path
Normal file
338011
ports/espressif/os.path
Normal file
File diff suppressed because it is too large
Load diff
338011
ports/espressif/python_version_checker
Normal file
338011
ports/espressif/python_version_checker
Normal file
File diff suppressed because it is too large
Load diff
338011
ports/espressif/signal
Normal file
338011
ports/espressif/signal
Normal file
File diff suppressed because it is too large
Load diff
338011
ports/espressif/subprocess
Normal file
338011
ports/espressif/subprocess
Normal file
File diff suppressed because it is too large
Load diff
338011
ports/espressif/sys
Normal file
338011
ports/espressif/sys
Normal file
File diff suppressed because it is too large
Load diff
0
ports/espressif/sys.stderr
Normal file
0
ports/espressif/sys.stderr
Normal file
|
|
@ -86,21 +86,23 @@ MP_DEFINE_EXCEPTION(gaierror, OSError)
|
|||
//|
|
||||
//| IP_MULTICAST_TTL: int
|
||||
//|
|
||||
//| def socket(self, family: int = AF_INET, type: int = SOCK_STREAM) -> socketpool.Socket:
|
||||
//| def socket(self, family: int = AF_INET, type: int = SOCK_STREAM, proto: int = 0) -> socketpool.Socket:
|
||||
//| """Create a new socket
|
||||
//|
|
||||
//| :param ~int family: AF_INET or AF_INET6
|
||||
//| :param ~int type: SOCK_STREAM, SOCK_DGRAM or SOCK_RAW
|
||||
//| :param ~int proto: Int
|
||||
//|
|
||||
//| The ``proto`` (protocol) and ``fileno`` arguments available in ``socket.socket()``
|
||||
//| in CPython are not supported.
|
||||
//| The ``fileno`` argument available in ``socket.socket()``
|
||||
//| in CPython is not supported.
|
||||
//| """
|
||||
//| ...
|
||||
STATIC mp_obj_t socketpool_socketpool_socket(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_family, ARG_type };
|
||||
enum { ARG_family, ARG_type, ARG_proto };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
{ MP_QSTR_family, MP_ARG_INT, {.u_int = SOCKETPOOL_AF_INET} },
|
||||
{ MP_QSTR_type, MP_ARG_INT, {.u_int = SOCKETPOOL_SOCK_STREAM} },
|
||||
{ MP_QSTR_proto, MP_ARG_INT, {.u_int = 0} },
|
||||
};
|
||||
socketpool_socketpool_obj_t *self = MP_OBJ_TO_PTR(pos_args[0]);
|
||||
|
||||
|
|
@ -109,8 +111,9 @@ STATIC mp_obj_t socketpool_socketpool_socket(size_t n_args, const mp_obj_t *pos_
|
|||
|
||||
socketpool_socketpool_addressfamily_t family = args[ARG_family].u_int;
|
||||
socketpool_socketpool_sock_t type = args[ARG_type].u_int;
|
||||
int proto = args[ARG_proto].u_int;
|
||||
|
||||
return common_hal_socketpool_socket(self, family, type);
|
||||
return common_hal_socketpool_socket(self, family, type, proto);
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_KW(socketpool_socketpool_socket_obj, 1, socketpool_socketpool_socket);
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ typedef enum {
|
|||
void common_hal_socketpool_socketpool_construct(socketpool_socketpool_obj_t *self, mp_obj_t radio);
|
||||
|
||||
socketpool_socket_obj_t *common_hal_socketpool_socket(socketpool_socketpool_obj_t *self,
|
||||
socketpool_socketpool_addressfamily_t family, socketpool_socketpool_sock_t type);
|
||||
socketpool_socketpool_addressfamily_t family, int proto, socketpool_socketpool_sock_t type);
|
||||
|
||||
mp_obj_t common_hal_socketpool_socketpool_gethostbyname(socketpool_socketpool_obj_t *self,
|
||||
const char *host);
|
||||
|
|
@ -76,7 +76,7 @@ mp_obj_t common_hal_socketpool_socketpool_gethostbyname_raise(socketpool_socketp
|
|||
// closed automatically.
|
||||
bool socketpool_socket(socketpool_socketpool_obj_t *self,
|
||||
socketpool_socketpool_addressfamily_t family, socketpool_socketpool_sock_t type,
|
||||
socketpool_socket_obj_t *sock);
|
||||
int proto, socketpool_socket_obj_t *sock);
|
||||
|
||||
NORETURN void common_hal_socketpool_socketpool_raise_gaierror_noname(void);
|
||||
|
||||
|
|
|
|||
|
|
@ -354,7 +354,7 @@ bool supervisor_start_web_workflow(void) {
|
|||
}
|
||||
|
||||
if (common_hal_socketpool_socket_get_closed(&listening)) {
|
||||
socketpool_socket(&pool, SOCKETPOOL_AF_INET, SOCKETPOOL_SOCK_STREAM, &listening);
|
||||
socketpool_socket(&pool, SOCKETPOOL_AF_INET, SOCKETPOOL_SOCK_STREAM, 0, &listening);
|
||||
common_hal_socketpool_socket_settimeout(&listening, 0);
|
||||
// Bind to any ip. (Not checking for failures)
|
||||
common_hal_socketpool_socket_bind(&listening, "", 0, web_api_port);
|
||||
|
|
|
|||
Loading…
Reference in a new issue