#include "plsr_position.h" #include #include 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; }