jitter-tolerance.patch 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. Improve jitter tolerance; patch provided by Johann Walles, see
  2. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=144768
  3. --- joystick-20051019.orig/utils/jscal.c
  4. +++ joystick-20051019/utils/jscal.c
  5. @@ -202,6 +202,7 @@
  6. void calibrate()
  7. {
  8. int i, j, t, b;
  9. + int axis, pos;
  10. for (i=0; i<MAX_AXES; i++) {
  11. corr[i].type = JS_CORR_NONE;
  12. @@ -232,13 +233,19 @@
  13. do {
  14. wait_for_event(fd, &js);
  15. for(i=0; i < axes; i++) {
  16. - if (amin[i] > js.axis[i]) amin[i] = js.axis[i];
  17. - if (amax[i] < js.axis[i]) amax[i] = js.axis[i];
  18. + if (amin[i] > js.axis[i]) {
  19. + amin[i] = js.axis[i];
  20. + t = get_time();
  21. + }
  22. + if (amax[i] < js.axis[i]) {
  23. + amax[i] = js.axis[i];
  24. + t = get_time();
  25. + }
  26. printf("Axis %d:%5d,%5d ", i, amin[i], amax[i]);
  27. }
  28. printf("\r");
  29. fflush(stdout);
  30. - } while (get_time() < t+2000);
  31. + } while (get_time() < t+4000);
  32. printf("Done. Precision is: \n");
  33. @@ -254,30 +261,36 @@
  34. b = js.buttons;
  35. - for (j = 0; j < axes; j++)
  36. - for (i = 0; i < NUM_POS; i++) {
  37. - while(b ^ js.buttons) wait_for_event(fd, &js);
  38. - printf("Move axis %d to %s position and push any button.\n", j, pos_name[i]);
  39. -
  40. - while (!(b ^ js.buttons)) {
  41. - print_position(j, js.axis[j]);
  42. - wait_for_event(fd, &js);
  43. - }
  44. + for (axis = 0; axis < axes; axis++)
  45. + for (pos = 0; pos < NUM_POS; pos++) {
  46. + while(b ^ js.buttons) wait_for_event(fd, &js);
  47. + printf("Move axis %d to %s position and push any button.\n", axis, pos_name[pos]);
  48. +
  49. + while (!(b ^ js.buttons)) {
  50. + print_position(axis, js.axis[axis]);
  51. + wait_for_event(fd, &js);
  52. + }
  53. - putcs("Hold ... ");
  54. + putcs("Hold ... ");
  55. - corda[j].cmin[i] = js.axis[j];
  56. - corda[j].cmax[i] = js.axis[j];
  57. + corda[axis].cmin[pos] = js.axis[axis];
  58. + corda[axis].cmax[pos] = js.axis[axis];
  59. - t = get_time();
  60. + t = get_time();
  61. - while (get_time() < t + 2000 && (b ^ js.buttons)) {
  62. - if (js.axis[j] < corda[j].cmin[i]) corda[j].cmin[i] = js.axis[j];
  63. - if (js.axis[j] > corda[j].cmax[i]) corda[j].cmax[i] = js.axis[j];
  64. - wait_for_event(fd, &js);
  65. + while (get_time() < t + 2000 && (b ^ js.buttons)) {
  66. + if (js.axis[axis] < corda[axis].cmin[pos]) {
  67. + corda[axis].cmin[pos] = js.axis[axis];
  68. + t = get_time();
  69. + }
  70. + if (js.axis[axis] > corda[axis].cmax[pos]) {
  71. + corda[axis].cmax[pos] = js.axis[axis];
  72. + t = get_time();
  73. + }
  74. + wait_for_event(fd, &js);
  75. + }
  76. + puts("OK.");
  77. }
  78. - puts("OK.");
  79. - }
  80. puts("");