2020-02-03 14:19:43 -08:00
|
|
|
|
|
|
|
#include <Arduino.h>
|
|
|
|
#include <unity.h>
|
|
|
|
|
|
|
|
#include "scheduler.h"
|
2020-04-01 15:54:43 -07:00
|
|
|
#include "scheduledIO.h"
|
2020-02-03 14:19:43 -08:00
|
|
|
|
|
|
|
#define TIMEOUT 1000
|
|
|
|
#define DURATION 1000
|
2021-10-04 17:15:14 -07:00
|
|
|
#define DELTA 24
|
2020-02-03 14:19:43 -08:00
|
|
|
|
|
|
|
static uint32_t start_time, end_time;
|
|
|
|
static void startCallback(void) { end_time = micros(); }
|
|
|
|
static void endCallback(void) { /*Empty*/ }
|
|
|
|
|
2023-11-23 14:35:43 -08:00
|
|
|
void test_accuracy_timeout_inj(FuelSchedule &schedule)
|
2020-02-03 14:19:43 -08:00
|
|
|
{
|
|
|
|
initialiseSchedulers();
|
2023-11-23 14:35:43 -08:00
|
|
|
schedule.pStartFunction = startCallback;
|
|
|
|
schedule.pEndFunction = endCallback;
|
2020-02-03 14:19:43 -08:00
|
|
|
start_time = micros();
|
2023-11-23 14:35:43 -08:00
|
|
|
setFuelSchedule(schedule, TIMEOUT, DURATION);
|
|
|
|
while(schedule.Status == PENDING) /*Wait*/ ;
|
2020-02-03 14:19:43 -08:00
|
|
|
TEST_ASSERT_UINT32_WITHIN(DELTA, TIMEOUT, end_time - start_time);
|
|
|
|
}
|
|
|
|
|
2023-11-23 14:35:43 -08:00
|
|
|
void test_accuracy_timeout_inj1(void)
|
|
|
|
{
|
|
|
|
test_accuracy_timeout_inj(fuelSchedule1);
|
|
|
|
}
|
|
|
|
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_inj2(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_inj(fuelSchedule2);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_accuracy_timeout_inj3(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_inj(fuelSchedule3);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_accuracy_timeout_inj4(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_inj(fuelSchedule4);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if INJ_CHANNELS >= 5
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_inj5(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_inj(fuelSchedule5);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if INJ_CHANNELS >= 6
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_inj6(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_inj(fuelSchedule6);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if INJ_CHANNELS >= 7
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_inj7(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_inj(fuelSchedule7);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if INJ_CHANNELS >= 8
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_inj8(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_inj(fuelSchedule8);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
2023-11-23 14:35:43 -08:00
|
|
|
void test_accuracy_timeout_ign(IgnitionSchedule &schedule)
|
2020-02-03 14:19:43 -08:00
|
|
|
{
|
|
|
|
initialiseSchedulers();
|
2023-11-23 14:35:43 -08:00
|
|
|
schedule.pStartCallback = startCallback;
|
|
|
|
schedule.pEndCallback = endCallback;
|
2020-02-03 14:19:43 -08:00
|
|
|
start_time = micros();
|
2023-11-23 14:35:43 -08:00
|
|
|
setIgnitionSchedule(schedule, TIMEOUT, DURATION);
|
|
|
|
while(schedule.Status == PENDING) /*Wait*/ ;
|
2020-02-03 14:19:43 -08:00
|
|
|
TEST_ASSERT_UINT32_WITHIN(DELTA, TIMEOUT, end_time - start_time);
|
|
|
|
}
|
|
|
|
|
2023-11-23 14:35:43 -08:00
|
|
|
void test_accuracy_timeout_ign1(void)
|
|
|
|
{
|
|
|
|
test_accuracy_timeout_ign(ignitionSchedule1);
|
|
|
|
}
|
|
|
|
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_ign2(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_ign(ignitionSchedule2);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_accuracy_timeout_ign3(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_ign(ignitionSchedule3);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_accuracy_timeout_ign4(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_ign(ignitionSchedule4);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if IGN_CHANNELS >= 5
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_ign5(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_ign(ignitionSchedule5);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if IGN_CHANNELS >= 6
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_ign6(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_ign(ignitionSchedule6);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if IGN_CHANNELS >= 7
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_ign7(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_ign(ignitionSchedule7);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
2023-03-05 22:23:17 -08:00
|
|
|
#if IGN_CHANNELS >= 8
|
2020-02-03 14:19:43 -08:00
|
|
|
void test_accuracy_timeout_ign8(void)
|
|
|
|
{
|
2023-11-23 14:35:43 -08:00
|
|
|
test_accuracy_timeout_ign(ignitionSchedule8);
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
|
|
|
void test_accuracy_timeout(void)
|
|
|
|
{
|
|
|
|
RUN_TEST(test_accuracy_timeout_inj1);
|
|
|
|
RUN_TEST(test_accuracy_timeout_inj2);
|
|
|
|
RUN_TEST(test_accuracy_timeout_inj3);
|
|
|
|
RUN_TEST(test_accuracy_timeout_inj4);
|
2023-03-05 22:23:17 -08:00
|
|
|
#if INJ_CHANNELS >= 5
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_inj5);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
|
|
|
#if INJ_CHANNELS >= 6
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_inj6);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
|
|
|
#if INJ_CHANNELS >= 7
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_inj7);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
|
|
|
#if INJ_CHANNELS >= 8
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_inj8);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
|
|
|
|
RUN_TEST(test_accuracy_timeout_ign1);
|
|
|
|
RUN_TEST(test_accuracy_timeout_ign2);
|
|
|
|
RUN_TEST(test_accuracy_timeout_ign3);
|
|
|
|
RUN_TEST(test_accuracy_timeout_ign4);
|
2023-03-05 22:23:17 -08:00
|
|
|
#if IGN_CHANNELS >= 5
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_ign5);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
|
|
|
#if IGN_CHANNELS >= 6
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_ign6);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
|
|
|
#if IGN_CHANNELS >= 7
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_ign7);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
|
|
|
#if IGN_CHANNELS >= 8
|
2020-02-03 14:19:43 -08:00
|
|
|
RUN_TEST(test_accuracy_timeout_ign8);
|
2023-03-05 22:23:17 -08:00
|
|
|
#endif
|
2020-02-03 14:19:43 -08:00
|
|
|
}
|