STATIC void esp_socket_sent_callback(void *arg) { struct espconn *conn = arg; esp_socket_obj_t *s = conn->reverse; if (s->cb_sent != mp_const_none) { call_function_1_protected(s->cb_sent, s); } }
STATIC mp_obj_t esp_socket_ondisconnect(mp_obj_t self_in, mp_obj_t lambda_in) { esp_socket_obj_t *s = self_in; s->cb_disconnect = lambda_in; if (s->espconn->state == ESPCONN_CLOSE) { call_function_1_protected(s->cb_disconnect, s); } return mp_const_none; }
STATIC void esp_socket_connect_callback_server(void *arg) { struct espconn *conn = arg; esp_socket_obj_t *s = esp_socket_make_new_base(); s->espconn = conn; s->fromserver = true; conn->reverse = s; espconn_regist_recvcb(conn, esp_socket_recv_callback); espconn_regist_sentcb(conn, esp_socket_sent_callback); espconn_regist_disconcb(conn, esp_socket_disconnect_callback); espconn_regist_time(conn, 15, 0); if (esp_socket_listening->cb_connect != mp_const_none) { call_function_1_protected(esp_socket_listening->cb_connect, s); } else { mp_obj_list_append(esp_socket_listening->connlist, s); } }
STATIC mp_obj_t esp_socket_onconnect(mp_obj_t self_in, mp_obj_t lambda_in) { esp_socket_obj_t *s = self_in; s->cb_connect = lambda_in; if (s->connlist != NULL) { do { mp_uint_t len; mp_obj_t *items; mp_obj_list_get(s->connlist, &len, &items); if (len == 0) { break; } esp_socket_obj_t *rs = items[0]; mp_obj_list_remove(s->connlist, rs); if (s->espconn->state != ESPCONN_CLOSE) { call_function_1_protected(s->cb_connect, rs); } } while (true); } return mp_const_none; }
STATIC void esp_timer_cb(void *arg) { esp_timer_obj_t *self = arg; call_function_1_protected(self->callback, self); }