Example #1
0
static void timer_code(void *arg)
{
    long long int t1, t2, t3;
    long int tdiff1, tdiff2, tdiff3;
    char buf[30];

    while (1) {

	/* a simple counter... */
	timer_count++;
	/* print the results every second */
	if (timer_count % 1000 == 0) {
	    t1 = rtapi_get_time();
	    t2 = rtapi_get_time();
	    rtapi_delay(rtapi_delay_max());
	    t3 = rtapi_get_time();
	    tdiff1 = t2 - t1;
	    tdiff2 = t3 - t2;
	    tdiff3 = t3 - t1;
	    long_long_to_dec_str(buf, t1);
	    rtapi_print("T1 = %s\n", buf);
	    long_long_to_dec_str(buf, t2);
	    rtapi_print("T2 = %s\n", buf);
	    long_long_to_dec_str(buf, t3);
	    rtapi_print("T3 = %s\n", buf);
	    rtapi_print("Tdiff1 = %ld\n", tdiff1);
	    rtapi_print("Tdiff2 = %ld\n", tdiff2);
	    rtapi_print("Tdiff3 = %ld\n", tdiff3);
	}
	/* put the task to sleep until the next interrupt */
	rtapi_wait();
    }

    return;
}
/* task code, executed each timer interrupt */
void fifo_code(void *arg)
{
    int n, tmp;
    char buffer[FIFO_SIZE + 1] = { '\n' };

    while (1) {
	/* write count to buffer as a 3 digit number */
	tmp = count;
	for (n = 0; n < 3; n++) {
	    buffer[2 - n] = (char) ('0' + (tmp % 10));
	    tmp /= 10;
	}
	buffer[3] = ':';
	/* write 'len' digits of 'len' */
	for (n = 0; n < len; n++) {
	    buffer[4 + n] = (char) ('0' + len);
	}
	rtapi_fifo_write(fifo, buffer, len + 4);
	total += len + 4;
	buffer[4 + n] = (char) '\0';
	rtapi_print_msg(2, "fifotask: total %d, wrote '%s'\n", total, buffer);
	count++;
	len++;
	if (len > 9)
	    len = 0;
	rtapi_wait();
    }

    return;
}
Example #3
0
/* task code, executed periodically */
void shmem_code(void *arg)
{
    while (1) {
	if (0 != shmem_struct) {
	    shmem_struct->heartbeat++;
	}
	rtapi_wait();
    }

    return;
}