Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 
 

94 rindas
3.5 KiB

  1. #include "plsr_position.h"
  2. #include <limits.h>
  3. #include <stdio.h>
  4. static int TestChecks;
  5. static int TestFailures;
  6. #define CHECK(condition) \
  7. do \
  8. { \
  9. TestChecks++; \
  10. if (!(condition)) \
  11. { \
  12. TestFailures++; \
  13. (void)printf("FAIL line %d: %s\n", __LINE__, #condition); \
  14. } \
  15. } while (0)
  16. int main(void)
  17. {
  18. PLSR_EQUIVALENT_CONFIG config = {3UL, 2UL, 1U};
  19. PLSR_EQUIVALENT_CONFIG pulseConfig = {0UL, 0UL, 0U};
  20. int64_t pulses;
  21. int64_t units;
  22. int64_t remainder;
  23. uint32_t speed;
  24. CHECK(PlsrPositionUnitCodeIsValid(0U) != 0U);
  25. CHECK(PlsrPositionUnitCodeIsValid(1U) != 0U);
  26. CHECK(PlsrPositionUnitCodeIsValid(3U) != 0U);
  27. CHECK(PlsrPositionUnitCodeIsValid(5U) != 0U);
  28. CHECK(PlsrPositionUnitCodeIsValid(7U) != 0U);
  29. CHECK(PlsrPositionUnitCodeIsValid(2U) == 0U);
  30. CHECK(PlsrPositionValidateEquivalent(&config) == PLSR_RESULT_OK);
  31. CHECK(PlsrPositionUnitsToPulses(&config, 1, 0, &pulses, &remainder)
  32. == PLSR_RESULT_OK);
  33. CHECK(pulses == 1);
  34. CHECK(remainder == 1);
  35. CHECK(PlsrPositionUnitsToPulses(&config,
  36. 1,
  37. remainder,
  38. &pulses,
  39. &remainder) == PLSR_RESULT_OK);
  40. CHECK(pulses == 2);
  41. CHECK(remainder == 0);
  42. CHECK(PlsrPositionUnitsToPulses(&config, -1, 0, &pulses, &remainder)
  43. == PLSR_RESULT_OK);
  44. CHECK(pulses == -1);
  45. CHECK(remainder == -1);
  46. CHECK(PlsrPositionUnitsToPulses(&config,
  47. -1,
  48. remainder,
  49. &pulses,
  50. &remainder) == PLSR_RESULT_OK);
  51. CHECK(pulses == -2);
  52. CHECK(remainder == 0);
  53. CHECK(PlsrPositionAbsoluteUnitsToPulses(&config, 10, &pulses)
  54. == PLSR_RESULT_OK);
  55. CHECK(pulses == 15);
  56. CHECK(PlsrPositionPulsesToUnits(&config, 3, &units) == PLSR_RESULT_OK);
  57. CHECK(units == 2);
  58. CHECK(PlsrPositionPulsesToUnits(&config, -3, &units) == PLSR_RESULT_OK);
  59. CHECK(units == -2);
  60. CHECK(PlsrPositionSpeedToPulseFrequency(&config, 200U, &speed)
  61. == PLSR_RESULT_OK);
  62. CHECK(speed == 300U);
  63. CHECK(PlsrPositionPulseFrequencyToSpeed(&config, 300U, &speed)
  64. == PLSR_RESULT_OK);
  65. CHECK(speed == 200U);
  66. CHECK(PlsrPositionUnitsToPulses(&pulseConfig,
  67. INT32_MIN,
  68. 99,
  69. &pulses,
  70. &remainder) == PLSR_RESULT_OK);
  71. CHECK(pulses == INT32_MIN);
  72. CHECK(remainder == 0);
  73. config.pulsesPerRevolution = 0UL;
  74. CHECK(PlsrPositionValidateEquivalent(&config) == PLSR_RESULT_INVALID_S2);
  75. if (TestFailures != 0)
  76. {
  77. (void)printf("FAIL: %d of %d PLSR position checks failed\n",
  78. TestFailures,
  79. TestChecks);
  80. return 1;
  81. }
  82. (void)printf("PASS: %d PLSR position checks\n", TestChecks);
  83. return 0;
  84. }