Esempio n. 1
0
void process(void* arg)
{
    struct msghdr       msg;
    struct iovec        iov;
    struct sockaddr_in  addr;
    int                 ret;

    while(1) {
        iov.iov_base=&buffer;
        iov.iov_len=sizeof(nanosecs_t);
        msg.msg_name=&addr;
        msg.msg_namelen=sizeof(addr);
        msg.msg_iov=&iov;
        msg.msg_iovlen=1;
        msg.msg_control=NULL;
        msg.msg_controllen=0;

        ret = recvmsg_rt(sock, &msg, 0);
        if ( (ret <= 0) || (msg.msg_namelen != sizeof(struct sockaddr_in)) )
            return;

        memcpy(&tx_msg, &buffer, sizeof(nanosecs_t));

        sendto_rt(sock, &tx_msg, reply_size, 0,
                  (struct sockaddr *)&client_addr,
                  sizeof(struct sockaddr_in));
    }
}
Esempio n. 2
0
void event_handler(int arg)
{
    struct {
        nanosecs_t      time_stamp;
        unsigned long   count;
    } packet;


    while (1) {
        rtos_event_sem_wait(&event_sem);

        ioctl_rt(tdma, RTMAC_RTIOC_TIMEOFFSET, &packet.time_stamp);

        rtos_irq_disable(&irq_handle);

        packet.time_stamp += time_stamp;
        packet.count      = irq_count;

        rtos_irq_enable(&irq_handle);

        ioctl_rt(tdma, RTMAC_RTIOC_WAITONCYCLE, RTMAC_WAIT_ON_DEFAULT);

        if (sendto_rt(sock, &packet, sizeof(packet), 0,
                      (struct sockaddr*)&dest_addr,
                      sizeof(struct sockaddr_in)) < 0)
            break;
    }
}
void process(void* arg)
{
    while(1) {
        rt_sem_wait(&tx_sem);

        tx_time = rt_get_time_ns();

        /* send the time   */
        if (sendto_rt(sock, &tx_time, sizeof(RTIME), 0,
                      (struct sockaddr *) &server_addr,
                      sizeof(struct sockaddr_in)) < 0)
            break;
    }
}
Esempio n. 4
0
void process(void *arg)
{
    int ret = 0;

    while (1) {
        /* wait one period */
        rt_task_wait_period();

        /* get time        */
        tx_time = rt_get_cpu_time_ns();

        memcpy(sendbuffer, &tx_time, sizeof(tx_time));

        /* send the time   */
        ret = sendto_rt(sock, &sendbuffer, packetsize, 0,
                        (struct sockaddr *)&server_addr,
                        sizeof(struct sockaddr_in));
        if (ret) sent++;
    }
}