|
- #include "plsr_position.h"
- #include <limits.h>
- #include <stdio.h>
-
- static int TestChecks;
- static int TestFailures;
-
- #define CHECK(condition) \
- do \
- { \
- TestChecks++; \
- if (!(condition)) \
- { \
- TestFailures++; \
- (void)printf("FAIL line %d: %s\n", __LINE__, #condition); \
- } \
- } while (0)
-
- int main(void)
- {
- PLSR_EQUIVALENT_CONFIG config = {3UL, 2UL, 1U};
- PLSR_EQUIVALENT_CONFIG pulseConfig = {0UL, 0UL, 0U};
- int64_t pulses;
- int64_t units;
- int64_t remainder;
- uint32_t speed;
-
- CHECK(PlsrPositionUnitCodeIsValid(0U) != 0U);
- CHECK(PlsrPositionUnitCodeIsValid(1U) != 0U);
- CHECK(PlsrPositionUnitCodeIsValid(3U) != 0U);
- CHECK(PlsrPositionUnitCodeIsValid(5U) != 0U);
- CHECK(PlsrPositionUnitCodeIsValid(7U) != 0U);
- CHECK(PlsrPositionUnitCodeIsValid(2U) == 0U);
- CHECK(PlsrPositionValidateEquivalent(&config) == PLSR_RESULT_OK);
-
- CHECK(PlsrPositionUnitsToPulses(&config, 1, 0, &pulses, &remainder)
- == PLSR_RESULT_OK);
- CHECK(pulses == 1);
- CHECK(remainder == 1);
- CHECK(PlsrPositionUnitsToPulses(&config,
- 1,
- remainder,
- &pulses,
- &remainder) == PLSR_RESULT_OK);
- CHECK(pulses == 2);
- CHECK(remainder == 0);
-
- CHECK(PlsrPositionUnitsToPulses(&config, -1, 0, &pulses, &remainder)
- == PLSR_RESULT_OK);
- CHECK(pulses == -1);
- CHECK(remainder == -1);
- CHECK(PlsrPositionUnitsToPulses(&config,
- -1,
- remainder,
- &pulses,
- &remainder) == PLSR_RESULT_OK);
- CHECK(pulses == -2);
- CHECK(remainder == 0);
-
- CHECK(PlsrPositionAbsoluteUnitsToPulses(&config, 10, &pulses)
- == PLSR_RESULT_OK);
- CHECK(pulses == 15);
- CHECK(PlsrPositionPulsesToUnits(&config, 3, &units) == PLSR_RESULT_OK);
- CHECK(units == 2);
- CHECK(PlsrPositionPulsesToUnits(&config, -3, &units) == PLSR_RESULT_OK);
- CHECK(units == -2);
- CHECK(PlsrPositionSpeedToPulseFrequency(&config, 200U, &speed)
- == PLSR_RESULT_OK);
- CHECK(speed == 300U);
- CHECK(PlsrPositionPulseFrequencyToSpeed(&config, 300U, &speed)
- == PLSR_RESULT_OK);
- CHECK(speed == 200U);
-
- CHECK(PlsrPositionUnitsToPulses(&pulseConfig,
- INT32_MIN,
- 99,
- &pulses,
- &remainder) == PLSR_RESULT_OK);
- CHECK(pulses == INT32_MIN);
- CHECK(remainder == 0);
- config.pulsesPerRevolution = 0UL;
- CHECK(PlsrPositionValidateEquivalent(&config) == PLSR_RESULT_INVALID_S2);
-
- if (TestFailures != 0)
- {
- (void)printf("FAIL: %d of %d PLSR position checks failed\n",
- TestFailures,
- TestChecks);
- return 1;
- }
- (void)printf("PASS: %d PLSR position checks\n", TestChecks);
- return 0;
- }
|