Hi, Jan

We are using RTNET 0.7.0.
 And we have a problem: the master is sending request while the slave
reboot. So there is a chance before the slave finished initializing
socket, the RTNET stack already received the packet , which make the
slave delay to receive the correct packet, one buffer delay.

Is there a method to flush socket (that is clean up the stack receving
packet) in RTNET implementation? is it possible to make the path from
the packet receiver to RTNET interrupted atificially until RTNET is
finished initialization?

here is the initializing socket we used.

void ut_sock_init (void)
{
    unsigned long dest_ip = rt_inet_aton(dest_ip_s);
    int ret;
    struct rtnet_callback   callback  = {cb_recv, NULL};

    /* create rt-socket */
    sock = socket_rt(AF_INET, SOCK_DGRAM, 0);
    if (sock < 0) {
        DebugCheckDcSub(DEBUG_RT_SOCK, DEBUG_ERROR)
            PRINT_ERR ("ERR: socket_rt() = %d!<ut_sock_init>\n", sock);
        return;
    }

    /* extend the socket pool */
    ret = ioctl_rt(sock, RTNET_RTIOC_EXTPOOL, &add_rtskbs);
    if (ret != (int)add_rtskbs) {
        DebugCheckDcSub(DEBUG_RT_SOCK, DEBUG_ERROR)
            PRINT_ERR ("ERR: ioctl_rt(RT_IOC_SO_EXTPOOL) = %d
<ut_sock_init>\n", ret);
        close_rt(sock);
        return;
    }

    /* bind the rt-socket to a port */
    memset(&local_addr, 0, sizeof(struct sockaddr_in));
    local_addr.sin_family = AF_INET;
    local_addr.sin_port = htons(PORT);
    local_addr.sin_addr.s_addr = INADDR_ANY;
    ret = bind_rt(sock, (struct sockaddr *)&local_addr, sizeof(struct
sockaddr_in));
    if (ret < 0) {
        DebugCheckDcSub(DEBUG_RT_SOCK, DEBUG_ERROR)
            PRINT_ERR ("ERR: bind_rt() = %d!<ut_sock_init>\n", ret);
        close_rt(sock);
        return;
    }

    /* set destination address */
    memset(&dest_addr, 0, sizeof(struct sockaddr_in));
    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port = htons(PORT);
    dest_addr.sin_addr.s_addr = dest_ip;
        
        /* set up callback handler */
    ioctl_rt(sock, RTNET_RTIOC_CALLBACK, &callback);
}

I am appreciated for possible reply. thank you!

Kity

------------------------------------------------------------------------------

_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to