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; }
int waitfor(void){ rtapi_u32 buff; long long int starttime = rtapi_get_time(); do { rtapi_delay(50000); HM2READ(remote->command_reg_addr, buff); if (rtapi_get_time() - starttime > 1000000000){ rtapi_print_msg(RTAPI_MSG_ERR, "Timeout waiting for CMD to clear\n"); return -1; } } while (buff); return 0; }