FreeEMS  0.2.0-SNAPSHOT-285-g028e24c
Macros | Functions | Variables
decoderInterface.h File Reference

Objects through which a decoder communicates. More...

#include "syncLossIDs.h"
Include dependency graph for decoderInterface.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define EXTERN   extern
#define BENCH_TEST_NAME   "BenchTest"
#define degreeTicksPerMinute   4166667
#define ticks_per_degree_multiplier   (10 * ANGLE_FACTOR)
#define COMBUSTION_SYNC   BIT0
 Sync sufficient for Dizzy/Batch Injection.
#define CRANK_SYNC   BIT1
 Sync sufficient for Wasted Spark/Semi-Sequential.
#define CAM_SYNC   BIT2
 Sync sufficient for COP/CNP/Sequential.
#define LAST_TIMESTAMP_VALID   BIT3
 Set when first decoder ISR runs post a reset.
#define LAST_PERIOD_VALID   BIT4
 Set when second decoder ISR runs post a reset.
#define LAST_MATCH_VALID   BIT5
 Missing teeth style decoders set this when a valid match is found.
#define LAST_TPD_VALID   BIT6
 Set once sync is found and we've stored a Ticks Per Degree value.
#define OK_TO_SCHEDULE   BIT7
 Sync confirmed OK by configured number of checks.
#define ARBITRARY_DECODER_NAME_MAX_LENGTH   64
#define SIZE_OF_EVENT_ARRAYS   256
#define SET_SYNC_LEVEL_TO(SYNC_LEVEL)
#define SCHEDULE_ONE_ECT_OUTPUT()

Functions

void decoderInitPreliminary (void)
void perDecoderReset (void)
void descheduleAll (void)
 Loop over all schedules descheduling them as we go.
void resetToNonRunningState (unsigned char uniqueLossID)
 Reset key state.
void schedulePortTPin (unsigned char pin, LongTime timeStamp)
 Schedule an ignition output event on port T.

Variables

EXTERN unsigned char selfSetTimer
EXTERN unsigned short ticksPerDegree0
EXTERN unsigned short ticksPerDegree1
EXTERN unsigned short * ticksPerDegree
EXTERN unsigned short * ticksPerDegreeRecord
EXTERN unsigned long lastEventTimeStamp
EXTERN unsigned long lastPrimaryEventTimeStamp
EXTERN unsigned long lastSecondaryEventTimeStamp
EXTERN unsigned short lastTicksPerDegree
EXTERN unsigned short lastPrimaryTicksPerDegree
EXTERN unsigned short lastSecondaryTicksPerDegree
EXTERN unsigned long skipEventFlags
EXTERN unsigned char numberScheduled
EXTERN unsigned char syncConfirmationsRunningCounter
EXTERN unsigned char syncConfirmationsStartingCounter
EXTERN const unsigned char decoderName [sizeof(BASE_FILE_NAME)]
EXTERN const unsigned char numberOfRealEvents
EXTERN const unsigned char numberOfVirtualEvents
EXTERN const unsigned short eventAngles [SIZE_OF_EVENT_ARRAYS]
EXTERN const unsigned char eventValidForCrankSync [SIZE_OF_EVENT_ARRAYS]
EXTERN const unsigned short totalEventAngleRange
EXTERN const unsigned short decoderMaxCodeTime
EXTERN unsigned char outputEventInputEventNumbers [MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned short outputEventPulseWidthsMath [MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned char outputEventExtendNumberOfRepeats [MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned short outputEventExtendRepeatPeriod [MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned short outputEventDelayFinalPeriod [MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned long outputEventDelayTotalPeriod [MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned short outputEventPulseWidthsHolding [ECT_CHANNELS]
EXTERN unsigned char outputEventExtendNumberOfRepeatsHolding [ECT_CHANNELS]
EXTERN unsigned short outputEventExtendRepeatPeriodHolding [ECT_CHANNELS]
EXTERN unsigned short outputEventDelayFinalPeriodHolding [ECT_CHANNELS]
EXTERN unsigned short outputEventPulseWidthsRealtime [ECT_CHANNELS]
EXTERN unsigned char outputEventExtendNumberOfRepeatsRealtime [ECT_CHANNELS]
EXTERN unsigned short outputEventExtendRepeatPeriodRealtime [ECT_CHANNELS]
EXTERN unsigned short outputEventDelayFinalPeriodRealtime [ECT_CHANNELS]
EXTERN unsigned short ectMainStartOffsetHolding [ECT_CHANNELS]
EXTERN volatile unsigned short
*volatile 
ectMainTimeRegisters [ECT_CHANNELS]
EXTERN volatile unsigned char
*volatile 
ectMainControlRegisters [ECT_CHANNELS]
EXTERN unsigned long ectMainEndTimes [ECT_CHANNELS]
EXTERN unsigned short ectCodeLatencies [ECT_CHANNELS]
EXTERN unsigned short ectCodeOpenRuntimes [ECT_CHANNELS]
EXTERN unsigned short ectCodeCloseRuntimes [ECT_CHANNELS]

Detailed Description

Objects through which a decoder communicates.

This file contains the declarations of objects used as a common interface between all of the different wheel decoders and the main loop scheduler.

Definition in file decoderInterface.h.

Macro Definition Documentation

#define EXTERN   extern

Definition at line 57 of file decoderInterface.h.

#define BENCH_TEST_NAME   "BenchTest"

Definition at line 61 of file decoderInterface.h.

Referenced by decodePacketAndRespond().

#define degreeTicksPerMinute   4166667

Definition at line 74 of file decoderInterface.h.

Referenced by generateCoreVars().

#define ticks_per_degree_multiplier   (10 * ANGLE_FACTOR)
#define COMBUSTION_SYNC   BIT0

Sync sufficient for Dizzy/Batch Injection.

Todo:

Introduce the concept of sync level to schedule for if NOT synced

and a way of deciding what to do in different sync states

and proper dividers for pulsewidths

and ability to lock pulsewidht/dwell for scheduling

and generalise scheduling to all pins

and provide a way of choosing a source of pulsewidth dwell or fuel duration

and a way of allowing overly advanced scheduling instead of none, when its fuel

Definition at line 150 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and resetToNonRunningState().

#define CRANK_SYNC   BIT1

Sync sufficient for Wasted Spark/Semi-Sequential.

Definition at line 151 of file decoderInterface.h.

Referenced by resetToNonRunningState().

#define CAM_SYNC   BIT2

Sync sufficient for COP/CNP/Sequential.

Definition at line 152 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), resetToNonRunningState(), and SecondaryRPMISR().

#define LAST_TIMESTAMP_VALID   BIT3

Set when first decoder ISR runs post a reset.

Definition at line 153 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and SecondaryRPMISR().

#define LAST_PERIOD_VALID   BIT4

Set when second decoder ISR runs post a reset.

Definition at line 154 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and SecondaryRPMISR().

#define LAST_MATCH_VALID   BIT5

Missing teeth style decoders set this when a valid match is found.

Definition at line 155 of file decoderInterface.h.

Referenced by PrimaryRPMISR().

#define LAST_TPD_VALID   BIT6

Set once sync is found and we've stored a Ticks Per Degree value.

Definition at line 156 of file decoderInterface.h.

Referenced by PrimaryRPMISR().

#define OK_TO_SCHEDULE   BIT7

Sync confirmed OK by configured number of checks.

Definition at line 157 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), resetToNonRunningState(), and SecondaryRPMISR().

#define ARBITRARY_DECODER_NAME_MAX_LENGTH   64

Definition at line 161 of file decoderInterface.h.

#define SIZE_OF_EVENT_ARRAYS   256

Definition at line 162 of file decoderInterface.h.

#define SET_SYNC_LEVEL_TO (   SYNC_LEVEL)
Value:
/* Otherwise caught-on event would be reset constantly */ \
if(!(KeyUserDebugs.decoderFlags & SYNC_LEVEL)){ \
KeyUserDebugs.decoderFlags |= SYNC_LEVEL; \
KeyUserDebugs.syncCaughtOnThisEvent = KeyUserDebugs.currentEvent; \
} \
\
/* Reason for last loss of sync was not timeout (0) */ \
syncConfirmationsRunningCounter--; \
}else{ \
KeyUserDebugs.decoderFlags |= OK_TO_SCHEDULE; \
} \
}else{ \
syncConfirmationsStartingCounter--; \
}else{ \
KeyUserDebugs.decoderFlags |= OK_TO_SCHEDULE; \
} \
}

Definition at line 178 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and SecondaryRPMISR().

#define SCHEDULE_ONE_ECT_OUTPUT ( )
Value:
if(outputEventExtendNumberOfRepeats[outputEventNumber] > 0){ \
outputEventExtendNumberOfRepeatsRealtime[pin] = outputEventExtendNumberOfRepeats[outputEventNumber]; \
outputEventExtendNumberOfRepeatsRealtime[pin]--; \
outputEventExtendRepeatPeriodRealtime[pin] = outputEventExtendRepeatPeriod[outputEventNumber]; \
outputEventDelayFinalPeriodRealtime[pin] = outputEventDelayFinalPeriod[outputEventNumber]; \
Counters.pinScheduledWithTimerExtension++; \
}else{ \
*ectMainTimeRegisters[pin] = startTime; \
Counters.pinScheduledToGoHigh++; \
} \
TIE |= ectMainOnMasks[pin]; \
TFLG = ectMainOnMasks[pin]; \
outputEventPulseWidthsRealtime[pin] = outputEventPulseWidthsMath[outputEventNumber]; \
selfSetTimer &= ectMainOffMasks[pin];

Definition at line 201 of file decoderInterface.h.

Referenced by schedulePortTPin().

Function Documentation

void decoderInitPreliminary ( void  )
Todo:
TODO Perhaps use some of the space freed by shrinking all timing tables for this: /unsigned long wheelEventTimeStamps[numberOfWheelEvents]; // For logging wheel patterns as observed

Definition at line 56 of file BenchTest.c.

References ICPAR, PACN1, TCTL4, TIE, and TIOS.

Referenced by initECTTimer().

{
// Configure 0 and 1 as outputs, but decouple them from the interrupts
TIOS = 0xFF; // All outputs
// Disable capture when in IC mode.
TCTL4 = 0x00; // TODO Unrequired, remove.
// Leave configured to not toggle the pin at all (0,0)
// Std behaviour, no change required
// Disable interrupts, to be enabled by a serial trigger
TIE = 0x00;
}

Here is the caller graph for this function:

void perDecoderReset ( void  )

Definition at line 71 of file BenchTest.c.

References BIT2, camTeethSeen, crankTeethSinceLastCamTooth, cumulativeBastardTeeth, cumulativeBastardTeethEroderCounter, doubleHighSeen, NumberOfTwinMatchedPairs, previousCrankTeethSeen, TCTL4, and unknownLeadingEdges.

Referenced by resetToNonRunningState().

{} // Nothing special to reset for this code

Here is the caller graph for this function:

void descheduleAll ( void  )

Loop over all schedules descheduling them as we go.

Definition at line 44 of file decoderInterface.c.

References MAX_NUMBER_OF_OUTPUT_EVENTS, and outputEventInputEventNumbers.

Referenced by initVariables(), and resetToNonRunningState().

{
unsigned char i;
for(i = 0; i < MAX_NUMBER_OF_OUTPUT_EVENTS; i++){
}
}

Here is the caller graph for this function:

void resetToNonRunningState ( unsigned char  uniqueLossID)

Reset key state.

Reset all important variables to their non-running state.

Todo:
TODO bring this up to date and/or find a better way to do it.
Parameters
uniqueLossID0 is reserved for system use, within your decoder never use the same value twice.

Definition at line 60 of file decoderInterface.c.

References CAM_SYNC, COMBUSTION_SYNC, CRANK_SYNC, KeyUserDebug::currentEvent, KeyUserDebug::decoderFlags, fixedConfig2::decoderSettings, descheduleAll(), fixedConfigs2, FLAG_AND_INC_FLAGGABLE, FLAG_DECODER_SYNC_LOSSES_OFFSET, FLAG_DECODER_SYNC_STATE_CLEARS_OFFSET, FLAG_DECODER_SYNCS_NOT_CONFIRMED_OFFSET, KeyUserDebugs, OK_TO_SCHEDULE, perDecoderReset(), decoderSetting::syncConfirmationsRunning, syncConfirmationsRunningCounter, decoderSetting::syncConfirmationsStarting, syncConfirmationsStartingCounter, KeyUserDebug::syncLostOnThisEvent, KeyUserDebug::syncLostWithThisID, KeyUserDebug::syncResetCalls, ticksPerDegree0, and ticksPerDegree1.

Referenced by main(), PLLLockISR(), PrimaryRPMISR(), SecondaryRPMISR(), and SelfClockISR().

{
if(uniqueLossID){
}
// Reset the safe re-sync counters.
if(fixedConfigs2.decoderSettings.syncConfirmationsRunning == 0xFF){ // Prevent overflow to zero
}else{ // Ensure at least 1 cycle is confirmed
}
/* Reset RPM to zero */
// Keep track of lost sync in counters
}else{
}
}else{
}
// record unique loss ID
// record current event and then clear it
/* Clear all sync flags to lost state */
KeyUserDebugs.decoderFlags = 0; // Nothing should use this except for us anyway!
// Unschedule everything right now
}

Here is the call graph for this function:

Here is the caller graph for this function:

void schedulePortTPin ( unsigned char  outputEventNumber,
LongTime  timeStamp 
)

Schedule an ignition output event on port T.

Warning
If you do not handle the skipEventFlags then excess advance may occur!
Todo:
TODO Make this more understandable as right now it is difficult to grok.

Definition at line 108 of file decoderInterface.c.

References Counters, decoderMaxCodeTime, ectMainActiveMasks, ectMainControlRegisters, ectMainEndTimes, ectMainGoHighMasks, ectMainOnMasks, ectMainStartOffsetHolding, ectMainTimeRegisters, ectSwitchOffCodeTime, fixedConfigs1, newStartIsAfterOutputEndTimeAndCanSelfSet, outputEventDelayFinalPeriod, outputEventDelayFinalPeriodHolding, outputEventExtendNumberOfRepeats, outputEventExtendNumberOfRepeatsHolding, outputEventExtendRepeatPeriod, outputEventExtendRepeatPeriodHolding, schedulingSetting::outputEventPinNumbers, outputEventPulseWidthsHolding, outputEventPulseWidthsMath, Counter::pinScheduledAgainToStayOn, Counter::pinScheduledAlready, Counter::pinScheduledFromCold, Counter::pinScheduledToDoNothing, Counter::pinScheduledToSelfSchedule, Counter::pinScheduledToToggleError, SCHEDULE_ONE_ECT_OUTPUT, fixedConfig1::schedulingSettings, selfSetTimer, skipEventFlags, TIE, LongTime::timeLong, and LongTime::timeShorts.

Referenced by main(), and PrimaryRPMISR().

{
unsigned char pin = fixedConfigs1.schedulingSettings.outputEventPinNumbers[outputEventNumber];
unsigned short postReferenceEventDelay = 0;
if(skipEventFlags & (1UL << outputEventNumber)){
postReferenceEventDelay = decoderMaxCodeTime;
skipEventFlags &= ~(1UL << outputEventNumber); // Clear the flag
}else{
postReferenceEventDelay = outputEventDelayFinalPeriod[outputEventNumber];
}
// determine the long and short start times
unsigned short startTime = timeStamp.timeShorts[1] + postReferenceEventDelay;
// remove this temporarily too, no need for it without the later conditional code
unsigned long startTimeLong = timeStamp.timeLong + postReferenceEventDelay;
/// @todo TODO Make this more understandable as right now it is difficult to grok.
// determine whether or not to reschedule or self schedule assuming pin is currently scheduled
unsigned long diff = (ectMainEndTimes[pin] + ectSwitchOffCodeTime) - startTimeLong;
#define newStartIsAfterOutputEndTimeAndCanSelfSet (diff > LONGHALF)
// http://forum.diyefi.org/viewtopic.php?f=8&t=57&p=861#p861
/*
fresh code again, five states, 6 possible behaviours:
not enabled - sched!!! always
enabled and low, ready to turn on - if too close, do nothing, or if far enough away, resched
enabled and high, ready to turn off - if too close, resched to turn on, if far enough away, self sched
*/
// Is it enabled and about to do *something*?
if(TIE & ectMainOnMasks[pin]){
// If configured to do something specific
// If that something is go high
// GO HIGH SHOULD DO NOTHING CEPT COUNTER
// if too close, do nothing, or if far enough away, resched
// for now just always do nothing as it's going to fire, and whatever configured got it close enough...
}else{ // Otherwise it's go low
// if too close, resched to turn, ie, stay on... , if far enough away, self sched
if(newStartIsAfterOutputEndTimeAndCanSelfSet){
// self sched
selfSetTimer |= ectMainOnMasks[pin]; // setup a bit to let the timer interrupt know to set its own new start from a var
}else{
}
}
}else{ // Configured to do nothing, or toggle
// TOGGLE SHOULD EARN SOME SORT OF ERROR CONDITION/COUNTER
}else{
// DO NOTHING SHOULD DO THE SAME AS GO HIGH
// ie, do nothing
// if too close, do nothing, or if far enough away, resched
// for now just always do nothing as it's going to fire, and whatever configured got it close enough...
}
}
}else{ // not enabled, schedule as normal
}
#ifdef XGATE // This has to be here because the timing of the ECT stuff is critical and it must run first.
#include "xgateScheduler.c"
#endif // Also, this should always run so can't be inside the above if/else block.
}

Here is the caller graph for this function:

Variable Documentation

EXTERN unsigned char selfSetTimer
Todo:
TODO make this ^ scaling better x10 yields 64rpm minimum functional engine speed.

Definition at line 83 of file decoderInterface.h.

Referenced by InjectorXISR(), and schedulePortTPin().

EXTERN unsigned short ticksPerDegree0

Definition at line 87 of file decoderInterface.h.

Referenced by initVariables(), main(), and resetToNonRunningState().

EXTERN unsigned short ticksPerDegree1

Definition at line 88 of file decoderInterface.h.

Referenced by initVariables(), main(), and resetToNonRunningState().

EXTERN unsigned short* ticksPerDegree

Definition at line 89 of file decoderInterface.h.

Referenced by generateCoreVars(), initVariables(), main(), and scheduleOutputs().

EXTERN unsigned short* ticksPerDegreeRecord

Definition at line 90 of file decoderInterface.h.

Referenced by initVariables(), main(), PrimaryRPMISR(), and SecondaryRPMISR().

EXTERN unsigned long lastEventTimeStamp
Todo:
TODO sync loss/gain semantics - how paranoid? under what circumstances? should we make it configurable whether a decoder that is in a situation where it would find sync if not synced, resets sync, or loses sync. Likewise, at initial sync gain time, should it go "prelim sync found" and only verify sync on the second lap around, or start firing events straight off the bat. Starting will suck if paranoid, but if there is noise at high load/rpm and events get mis-scheduled before sync is lost, that is serious. This is philosophical, and the reality is that you must assume that your signal is clean to some level and verified clean under lower risk conditions.

Definition at line 132 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and SecondaryRPMISR().

EXTERN unsigned long lastPrimaryEventTimeStamp

Definition at line 133 of file decoderInterface.h.

Referenced by PrimaryRPMISR().

EXTERN unsigned long lastSecondaryEventTimeStamp

Definition at line 134 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and SecondaryRPMISR().

EXTERN unsigned short lastTicksPerDegree

Definition at line 135 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and SecondaryRPMISR().

EXTERN unsigned short lastPrimaryTicksPerDegree

Definition at line 136 of file decoderInterface.h.

Referenced by PrimaryRPMISR().

EXTERN unsigned short lastSecondaryTicksPerDegree

Definition at line 137 of file decoderInterface.h.

EXTERN unsigned long skipEventFlags

Definition at line 138 of file decoderInterface.h.

Referenced by scheduleOutputs(), and schedulePortTPin().

EXTERN unsigned char numberScheduled

Definition at line 139 of file decoderInterface.h.

EXTERN unsigned char syncConfirmationsRunningCounter
Todo:
TODO remove DEBUG

Definition at line 140 of file decoderInterface.h.

Referenced by resetToNonRunningState().

EXTERN unsigned char syncConfirmationsStartingCounter

Definition at line 141 of file decoderInterface.h.

Referenced by resetToNonRunningState().

EXTERN const unsigned char decoderName[sizeof(BASE_FILE_NAME)]

Definition at line 169 of file decoderInterface.h.

Referenced by decodePacketAndRespond().

EXTERN const unsigned char numberOfRealEvents

Definition at line 170 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), scheduleOutputs(), and SecondaryRPMISR().

EXTERN const unsigned char numberOfVirtualEvents

Definition at line 171 of file decoderInterface.h.

Referenced by scheduleOutputs().

EXTERN const unsigned short eventAngles[SIZE_OF_EVENT_ARRAYS]

Definition at line 172 of file decoderInterface.h.

EXTERN const unsigned char eventValidForCrankSync[SIZE_OF_EVENT_ARRAYS]
Todo:
TODO From 0 - totalEventAngleRange degrees, scale: x50

Definition at line 173 of file decoderInterface.h.

EXTERN const unsigned short totalEventAngleRange

Definition at line 174 of file decoderInterface.h.

Referenced by PrimaryRPMISR(), and scheduleOutputs().

EXTERN const unsigned short decoderMaxCodeTime
EXTERN unsigned char outputEventInputEventNumbers[MAX_NUMBER_OF_OUTPUT_EVENTS]
Todo:

TODO two unsigned chars, and two unsigned shorts, which is the MAP ADC value, the MAP value is sampled on every event in a cycle, and if less than the previous stored value, which is reset at every zeroth event, with the old value and old event number stored globally.

TODO the same thing could be done, but with a median filter or similar, perhaps map sampling could be done dymanically like this, though it could yield unpredictable results, it could also yield the best running engines, just a thought...

Definition at line 308 of file decoderInterface.h.

Referenced by decodePacketAndRespond(), descheduleAll(), PrimaryRPMISR(), and scheduleOutputs().

EXTERN unsigned short outputEventPulseWidthsMath[MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned char outputEventExtendNumberOfRepeats[MAX_NUMBER_OF_OUTPUT_EVENTS]

Definition at line 311 of file decoderInterface.h.

Referenced by scheduleOutputs(), and schedulePortTPin().

EXTERN unsigned short outputEventExtendRepeatPeriod[MAX_NUMBER_OF_OUTPUT_EVENTS]

Definition at line 312 of file decoderInterface.h.

Referenced by scheduleOutputs(), and schedulePortTPin().

EXTERN unsigned short outputEventDelayFinalPeriod[MAX_NUMBER_OF_OUTPUT_EVENTS]
EXTERN unsigned long outputEventDelayTotalPeriod[MAX_NUMBER_OF_OUTPUT_EVENTS]

Definition at line 314 of file decoderInterface.h.

Referenced by scheduleOutputs().

EXTERN unsigned short outputEventPulseWidthsHolding[ECT_CHANNELS]

Definition at line 316 of file decoderInterface.h.

Referenced by InjectorXISR(), and schedulePortTPin().

EXTERN unsigned char outputEventExtendNumberOfRepeatsHolding[ECT_CHANNELS]

Definition at line 317 of file decoderInterface.h.

Referenced by InjectorXISR(), and schedulePortTPin().

EXTERN unsigned short outputEventExtendRepeatPeriodHolding[ECT_CHANNELS]

Definition at line 318 of file decoderInterface.h.

Referenced by InjectorXISR(), and schedulePortTPin().

EXTERN unsigned short outputEventDelayFinalPeriodHolding[ECT_CHANNELS]

Definition at line 319 of file decoderInterface.h.

Referenced by InjectorXISR(), and schedulePortTPin().

EXTERN unsigned short outputEventPulseWidthsRealtime[ECT_CHANNELS]

Definition at line 321 of file decoderInterface.h.

Referenced by InjectorXISR().

EXTERN unsigned char outputEventExtendNumberOfRepeatsRealtime[ECT_CHANNELS]

Definition at line 322 of file decoderInterface.h.

Referenced by InjectorXISR().

EXTERN unsigned short outputEventExtendRepeatPeriodRealtime[ECT_CHANNELS]

Definition at line 323 of file decoderInterface.h.

Referenced by InjectorXISR().

EXTERN unsigned short outputEventDelayFinalPeriodRealtime[ECT_CHANNELS]

Definition at line 324 of file decoderInterface.h.

Referenced by InjectorXISR().

EXTERN unsigned short ectMainStartOffsetHolding[ECT_CHANNELS]

Definition at line 326 of file decoderInterface.h.

Referenced by InjectorXISR(), and schedulePortTPin().

EXTERN volatile unsigned short* volatile ectMainTimeRegisters[ECT_CHANNELS]

Definition at line 331 of file decoderInterface.h.

Referenced by initVariables(), InjectorXISR(), and schedulePortTPin().

EXTERN volatile unsigned char* volatile ectMainControlRegisters[ECT_CHANNELS]

Definition at line 332 of file decoderInterface.h.

Referenced by initVariables(), InjectorXISR(), and schedulePortTPin().

EXTERN unsigned long ectMainEndTimes[ECT_CHANNELS]

Definition at line 336 of file decoderInterface.h.

Referenced by InjectorXISR(), and schedulePortTPin().

EXTERN unsigned short ectCodeLatencies[ECT_CHANNELS]

Definition at line 338 of file decoderInterface.h.

Referenced by InjectorXISR().

EXTERN unsigned short ectCodeOpenRuntimes[ECT_CHANNELS]

Definition at line 342 of file decoderInterface.h.

Referenced by InjectorXISR().

EXTERN unsigned short ectCodeCloseRuntimes[ECT_CHANNELS]

Definition at line 343 of file decoderInterface.h.

Referenced by InjectorXISR().