#include "libIgnTiming/edis.h"
extern "C"
{
// -10 degrees = 1792 uS
static int const MINUS_10_DEGREES_PULSE = 1792;
// 0 degrees = 1536 uS
static int const ZERO_DEGREES_PULSE = 1536;
// 60 degrees = 0 uS but limited to 64uS min = 57.5 degrees
static int const MAX_ADVANCE = 60;
static int const MAX_ADVANCE_PULSE = 64;
// add 2048 uS for multispark
static int const DOUBLE_PULSE = 2048;
int mapTimingToMicroseconds(int timing, unsigned char multispark)
{
int base = multispark ? DOUBLE_PULSE : 0;
int code = (MAX_ADVANCE * TIMING_SCALE - timing) * ZERO_DEGREES_PULSE / (MAX_ADVANCE * TIMING_SCALE);
if (code < MAX_ADVANCE_PULSE)
code = MAX_ADVANCE_PULSE;
if (code > MINUS_10_DEGREES_PULSE)
code = MINUS_10_DEGREES_PULSE;
return code + base;
}
}