Ejemplo n.º 1
0
/*
 * Start UDP socket, listening at local port PORT
 */
int udp_init (udp_t *u, unsigned port)
{
    int i;

    for (i = 0; i < MAX_SOCK_NUM; i++) {
        uint8_t s = w5100_readSnSR(i);
        if (s == SnSR_CLOSED || s == SnSR_FIN_WAIT) {
            u->sock = i;
            break;
        }
    }

    if (u->sock == MAX_SOCK_NUM)
        return 0;

    u->port = port;
    socket_init (u->sock, SnMR_UDP, u->port, 0);
    return 1;
}
Ejemplo n.º 2
0
int client_connect (client_t *c)
{
    int i;

    if (c->sock != MAX_SOCK_NUM)
        return 0;

    for (i = 0; i < MAX_SOCK_NUM; i++) {
        unsigned s = w5100_readSnSR (i);
        if (s == SnSR_CLOSED || s == SnSR_FIN_WAIT) {
            c->sock = i;
            break;
        }
    }

    if (c->sock == MAX_SOCK_NUM)
        return 0;

    _client_srcport++;
    if (_client_srcport == 0)
        _client_srcport = 1024;
    socket_init (c->sock, SnMR_TCP, _client_srcport, 0);

    if (! socket_connect (c->sock, c->ip, c->port)) {
        c->sock = MAX_SOCK_NUM;
        return 0;
    }

    while (client_status(c) != SnSR_ESTABLISHED) {
        usleep (10000);
        if (client_status(c) == SnSR_CLOSED) {
            c->sock = MAX_SOCK_NUM;
            return 0;
        }
    }
    return 1;
}
Ejemplo n.º 3
0
unsigned client_status (client_t *c)
{
    if (c->sock == MAX_SOCK_NUM)
        return SnSR_CLOSED;
    return w5100_readSnSR (c->sock);
}