7 #define READ_PRI_TRIGGER() ((*triggerPri_pin_port & triggerPri_pin_mask) ? true : false)
8 #define READ_SEC_TRIGGER() ((*triggerSec_pin_port & triggerSec_pin_mask) ? true : false)
9 #define READ_THIRD_TRIGGER() ((*triggerThird_pin_port & triggerThird_pin_mask) ? true : false)
11 #define READ_PRI_TRIGGER() digitalRead(pinTrigger)
12 #define READ_SEC_TRIGGER() digitalRead(pinTrigger2)
13 #define READ_THIRD_TRIGGER() digitalRead(pinTrigger3)
16#define DECODER_MISSING_TOOTH 0
17#define DECODER_BASIC_DISTRIBUTOR 1
18#define DECODER_DUAL_WHEEL 2
22#define DECODER_JEEP2000 6
23#define DECODER_AUDI135 7
24#define DECODER_HONDA_D17 8
25#define DECODER_MIATA_9905 9
26#define DECODER_MAZDA_AU 10
27#define DECODER_NON360 11
28#define DECODER_NISSAN_360 12
29#define DECODER_SUBARU_67 13
30#define DECODER_DAIHATSU_PLUS1 14
31#define DECODER_HARLEY 15
32#define DECODER_36_2_2_2 16
33#define DECODER_36_2_1 17
34#define DECODER_420A 18
35#define DECODER_WEBER 19
36#define DECODER_ST170 20
37#define DECODER_DRZ400 21
39#define DECODER_VMAX 23
40#define DECODER_RENIX 24
41#define DECODER_ROVERMEMS 25
42#define DECODER_SUZUKI_K6A 26
43#define DECODER_HONDA_J32 27
44#define DECODER_FORD_TFI 28
46#define BIT_DECODER_VALID_TRIGGER 4
47#define BIT_DECODER_TOOTH_ANG_CORRECT 5
48#define BIT_DECODER_STATUS_PRIMARY 6
49#define BIT_DECODER_STATUS_SECONDARY 7
51#define TRIGGER_FILTER_OFF 0
52#define TRIGGER_FILTER_LITE 1
53#define TRIGGER_FILTER_MEDIUM 2
54#define TRIGGER_FILTER_AGGRESSIVE 3
330extern volatile unsigned long curTime;
331extern volatile unsigned long curGap;
332extern volatile unsigned long curTime2;
333extern volatile unsigned long curGap2;
334extern volatile unsigned long lastGap;
372#define CRANK_SPEED 0U
376#define TOOTH_CAM_SECONDARY 1
377#define TOOTH_CAM_TERTIARY 2
380#define ID_TOOTH_PATTERN 0
void(* triggerSetEndTeeth)(void)
Pointer to the getCrank Angle function (Gets pointed to the relevant decoder)
Definition decoders.cpp:57
SyncStatus
The decoder trigger status.
Definition decoders.h:75
volatile unsigned long toothLastMinusOneSecToothTime
Definition decoders.cpp:79
byte checkSyncToothCount
Definition decoders.cpp:106
unsigned int triggerSecFilterTime_duration
Definition decoders.cpp:104
void triggerSec_DRZ400(void)
Definition decoders.cpp:4495
volatile unsigned long curGap2
Definition decoders.cpp:65
unsigned long lastCrankAngleCalc
Definition decoders.cpp:108
uint16_t ignition8EndTooth
Definition decoders.cpp:118
unsigned long lastVVTtime
Definition decoders.cpp:109
volatile unsigned long triggerSecFilterTime
Definition decoders.cpp:101
volatile unsigned long targetGap
Definition decoders.cpp:69
volatile unsigned long curTime2
Definition decoders.cpp:64
int16_t toothAngles[24]
Definition decoders.cpp:120
volatile unsigned long toothSystemLastToothTime
Definition decoders.cpp:74
void(* triggerSecondaryHandler)(void)
Pointer for the trigger function (Gets pointed to the relevant decoder)
Definition decoders.cpp:53
volatile unsigned long lastGap
Definition decoders.cpp:68
uint16_t ignition1EndTooth
Definition decoders.cpp:111
void triggerSetup_DRZ400(void)
Definition decoders.cpp:4481
volatile unsigned long secondaryLastToothTime1
Definition decoders.cpp:93
unsigned long elapsedTime
Definition decoders.cpp:107
volatile uint16_t triggerToothAngle
Definition decoders.cpp:105
void(* triggerTertiaryHandler)(void)
Pointer for the secondary trigger function (Gets pointed to the relevant decoder)
Definition decoders.cpp:54
volatile unsigned long curTime
Definition decoders.cpp:62
volatile uint16_t toothCurrentCount
Definition decoders.cpp:72
uint16_t ignition2EndTooth
Definition decoders.cpp:112
volatile unsigned long secondaryLastToothTime
Definition decoders.cpp:92
volatile unsigned long toothOneTime
Definition decoders.cpp:84
volatile unsigned long toothLastMinusOneToothTime
Definition decoders.cpp:78
int(* getCrankAngle)(void)
Pointer to the getRPM function (Gets pointed to the relevant decoder)
Definition decoders.cpp:56
uint16_t triggerActualTeeth
Definition decoders.cpp:99
volatile unsigned long curGap
Definition decoders.cpp:63
volatile unsigned long targetGap2
Definition decoders.cpp:82
void(* triggerHandler)(void)
Definition decoders.cpp:52
uint16_t ignition7EndTooth
Definition decoders.cpp:117
uint16_t ignition6EndTooth
Definition decoders.cpp:116
uint16_t(* getRPM)(void)
Pointer for the tertiary trigger function (Gets pointed to the relevant decoder)
Definition decoders.cpp:55
uint16_t ignition3EndTooth
Definition decoders.cpp:113
volatile unsigned long triggerFilterTime
Definition decoders.cpp:100
volatile unsigned long toothLastThirdToothTime
Definition decoders.cpp:77
uint16_t ignition4EndTooth
Definition decoders.cpp:114
volatile bool revolutionOne
Definition decoders.cpp:87
uint16_t ignition5EndTooth
Definition decoders.cpp:115
volatile unsigned long toothOneMinusOneTime
Definition decoders.cpp:85
void triggerSec_FordTFI(void)
Definition decoders.cpp:6022
void triggerPri_FordTFI(void)
Definition decoders.cpp:5972
int getCrankAngle_FordTFI(void)
Definition decoders.cpp:6108
uint16_t getRPM_FordTFI(void)
Definition decoders.cpp:6087
void triggerSetup_FordTFI(void)
Definition decoders.cpp:5947
void triggerSetEndTeeth_FordTFI(void)
Definition decoders.cpp:6140
int getCrankAngle_SuzukiK6A(void)
Definition decoders.cpp:5887
void triggerPri_SuzukiK6A(void)
Definition decoders.cpp:5661
void triggerSetup_SuzukiK6A(void)
Definition decoders.cpp:5617
uint16_t getRPM_SuzukiK6A(void)
Definition decoders.cpp:5875
void triggerSetEndTeeth_SuzukiK6A(void)
Definition decoders.cpp:5929
void triggerSec_SuzukiK6A(void)
Definition decoders.cpp:5870
void triggerSec_ThirtySixMinus21(void)
Definition decoders.cpp:4001
void triggerSetEndTeeth_ThirtySixMinus21(void)
Definition decoders.cpp:4030
int getCrankAngle_ThirtySixMinus21(void)
Definition decoders.cpp:4024
uint16_t getRPM_ThirtySixMinus21(void)
Definition decoders.cpp:4006
void triggerSetup_ThirtySixMinus21(void)
Definition decoders.cpp:3916
void triggerPri_ThirtySixMinus21(void)
Definition decoders.cpp:3931
void triggerSec_ThirtySixMinus222(void)
Definition decoders.cpp:3843
uint16_t getRPM_ThirtySixMinus222(void)
Definition decoders.cpp:3848
void triggerSetEndTeeth_ThirtySixMinus222(void)
Definition decoders.cpp:3877
int getCrankAngle_ThirtySixMinus222(void)
Definition decoders.cpp:3871
void triggerSetup_ThirtySixMinus222(void)
Definition decoders.cpp:3737
void triggerPri_ThirtySixMinus222(void)
Definition decoders.cpp:3752
void triggerPri_Audi135(void)
Definition decoders.cpp:2100
void triggerSetEndTeeth_Audi135(void)
Definition decoders.cpp:2195
int getCrankAngle_Audi135(void)
Definition decoders.cpp:2163
void triggerSec_Audi135(void)
Definition decoders.cpp:2138
void triggerSetup_Audi135(void)
Definition decoders.cpp:2086
uint16_t getRPM_Audi135(void)
Definition decoders.cpp:2158
void triggerPri_Daihatsu(void)
Definition decoders.cpp:3464
void triggerSetEndTeeth_Daihatsu(void)
Definition decoders.cpp:3585
int getCrankAngle_Daihatsu(void)
Definition decoders.cpp:3560
void triggerSec_Daihatsu(void)
Definition decoders.cpp:3532
void triggerSetup_Daihatsu(void)
Definition decoders.cpp:3435
uint16_t getRPM_Daihatsu(void)
Definition decoders.cpp:3534
uint16_t getRPM_BasicDistributor(void)
Definition decoders.cpp:1181
void triggerSec_BasicDistributor(void)
Definition decoders.cpp:1180
void triggerSetup_BasicDistributor(void)
Definition decoders.cpp:1103
void triggerSetEndTeeth_BasicDistributor(void)
Definition decoders.cpp:1227
int getCrankAngle_BasicDistributor(void)
Definition decoders.cpp:1200
void triggerPri_BasicDistributor(void)
Definition decoders.cpp:1124
void triggerSetup_420a(void)
Definition decoders.cpp:4046
uint16_t getRPM_420a(void)
Definition decoders.cpp:4162
int getCrankAngle_420a(void)
Definition decoders.cpp:4177
void triggerSetEndTeeth_420a(void)
Definition decoders.cpp:4202
void triggerSec_420a(void)
Definition decoders.cpp:4117
void triggerPri_420a(void)
Definition decoders.cpp:4078
void triggerPri_DualWheel(void)
Definition decoders.cpp:928
int getCrankAngle_DualWheel(void)
Definition decoders.cpp:1027
void triggerSec_DualWheel(void)
Definition decoders.cpp:973
void triggerSetEndTeeth_DualWheel(void)
Definition decoders.cpp:1071
void triggerSetup_DualWheel(void)
Definition decoders.cpp:908
uint16_t getRPM_DualWheel(void)
Definition decoders.cpp:1007
void triggerSetEndTeeth_FordST170(void)
Definition decoders.cpp:4466
void triggerSetup_FordST170(void)
Definition decoders.cpp:4334
void triggerSec_FordST170(void)
Definition decoders.cpp:4362
int getCrankAngle_FordST170(void)
Definition decoders.cpp:4427
uint16_t getRPM_FordST170(void)
Definition decoders.cpp:4409
void triggerPri_GM7X(void)
Definition decoders.cpp:1315
void triggerSetup_GM7X(void)
Definition decoders.cpp:1308
int getCrankAngle_GM7X(void)
Definition decoders.cpp:1379
void triggerSetEndTeeth_GM7X(void)
Definition decoders.cpp:1416
void triggerSec_GM7X(void)
Definition decoders.cpp:1374
uint16_t getRPM_GM7X(void)
Definition decoders.cpp:1375
void triggerSec_24X(void)
Definition decoders.cpp:1930
uint16_t getRPM_24X(void)
Definition decoders.cpp:1936
void triggerSetup_24X(void)
Definition decoders.cpp:1862
void triggerPri_24X(void)
Definition decoders.cpp:1898
int getCrankAngle_24X(void)
Definition decoders.cpp:1940
void triggerSetEndTeeth_24X(void)
Definition decoders.cpp:1970
int getCrankAngle_Harley(void)
Definition decoders.cpp:3688
void triggerSetEndTeeth_Harley(void)
Definition decoders.cpp:3720
void triggerSec_Harley(void)
Definition decoders.cpp:3647
uint16_t getRPM_Harley(void)
Definition decoders.cpp:3654
void triggerSetup_Harley(void)
Definition decoders.cpp:3596
void triggerPri_Harley(void)
Definition decoders.cpp:3605
void triggerPri_HondaD17(void)
Definition decoders.cpp:2211
uint16_t getRPM_HondaD17(void)
Definition decoders.cpp:2253
int getCrankAngle_HondaD17(void)
Definition decoders.cpp:2257
void triggerSec_HondaD17(void)
Definition decoders.cpp:2252
void triggerSetEndTeeth_HondaD17(void)
Definition decoders.cpp:2290
void triggerSetup_HondaD17(void)
Definition decoders.cpp:2204
int getCrankAngle_HondaJ32(void)
Definition decoders.cpp:2397
void triggerSetup_HondaJ32(void)
Definition decoders.cpp:2312
uint16_t getRPM_HondaJ32(void)
Definition decoders.cpp:2392
void triggerPri_HondaJ32(void)
Definition decoders.cpp:2328
void triggerSetEndTeeth_HondaJ32(void)
Definition decoders.cpp:2431
void triggerSec_HondaJ32(void)
Definition decoders.cpp:2387
void triggerSec_Jeep2000(void)
Definition decoders.cpp:2039
void triggerSetEndTeeth_Jeep2000(void)
Definition decoders.cpp:2075
uint16_t getRPM_Jeep2000(void)
Definition decoders.cpp:2045
void triggerPri_Jeep2000(void)
Definition decoders.cpp:2006
int getCrankAngle_Jeep2000(void)
Definition decoders.cpp:2049
void triggerSetup_Jeep2000(void)
Definition decoders.cpp:1983
void triggerSetEndTeeth_missingTooth(void)
Definition decoders.cpp:876
void triggerPri_missingTooth(void)
Definition decoders.cpp:577
void triggerThird_missingTooth(void)
Definition decoders.cpp:773
void triggerSec_missingTooth(void)
Definition decoders.cpp:692
uint16_t getRPM_missingTooth(void)
Definition decoders.cpp:805
int getCrankAngle_missingTooth(void)
Definition decoders.cpp:823
void triggerSetup_missingTooth(void)
Definition decoders.cpp:539
void triggerPri_4G63(void)
Definition decoders.cpp:1494
void triggerSetup_4G63(void)
Definition decoders.cpp:1440
void triggerSec_4G63(void)
Definition decoders.cpp:1682
uint16_t getRPM_4G63(void)
Definition decoders.cpp:1749
int getCrankAngle_4G63(void)
Definition decoders.cpp:1786
void triggerSetEndTeeth_4G63(void)
Definition decoders.cpp:1813
void triggerSetEndTeeth_Nissan360(void)
Definition decoders.cpp:3141
void triggerSetup_Nissan360(void)
Definition decoders.cpp:2935
void triggerSec_Nissan360(void)
Definition decoders.cpp:2991
int getCrankAngle_Nissan360(void)
Definition decoders.cpp:3111
void triggerPri_Nissan360(void)
Definition decoders.cpp:2949
uint16_t getRPM_Nissan360(void)
Definition decoders.cpp:3085
void triggerSetEndTeeth_non360(void)
Definition decoders.cpp:2925
void triggerPri_non360(void)
Definition decoders.cpp:2875
void triggerSetup_non360(void)
Definition decoders.cpp:2862
void triggerSec_non360(void)
Definition decoders.cpp:2880
int getCrankAngle_non360(void)
Definition decoders.cpp:2896
uint16_t getRPM_non360(void)
Definition decoders.cpp:2885
void triggerSetEndTeeth_Renix(void)
Definition decoders.cpp:5188
void triggerSetup_Renix(void)
Definition decoders.cpp:5066
void triggerPri_Renix(void)
Definition decoders.cpp:5102
void triggerSetEndTeeth_Subaru67(void)
Definition decoders.cpp:3388
uint16_t getRPM_Subaru67(void)
Definition decoders.cpp:3347
void triggerSetup_Subaru67(void)
Definition decoders.cpp:3161
void triggerSec_Subaru67(void)
Definition decoders.cpp:3309
void triggerPri_Subaru67(void)
Definition decoders.cpp:3190
int getCrankAngle_Subaru67(void)
Definition decoders.cpp:3360
void resetDecoder(void)
This function is called when the engine is stopped, or when the engine is started....
Definition decoders.cpp:367
void loggerPrimaryISR(void)
Definition decoders.cpp:214
const decoder_status_t getDecoderStatus(void)
Access the current decoder status.
Definition decoders.cpp:318
const decoder_features_t & getDecoderFeatures(void)
Definition decoders.cpp:362
bool engineIsRunning(uint32_t curTime)
Is the engine running?
Definition decoders.cpp:350
void loggerTertiaryISR(void)
Definition decoders.cpp:272
void loggerSecondaryISR(void)
Definition decoders.cpp:248
int getCrankAngle_Vmax(void)
Definition decoders.cpp:5023
void triggerSetEndTeeth_Vmax(void)
Definition decoders.cpp:5049
void triggerSetup_Vmax(void)
Definition decoders.cpp:4866
void triggerPri_Vmax(void)
Definition decoders.cpp:4888
uint16_t getRPM_Vmax(void)
Definition decoders.cpp:4994
void triggerSec_Vmax(void)
Definition decoders.cpp:4987
void triggerPri_Webber(void)
Definition decoders.cpp:4226
void triggerSec_Webber(void)
Definition decoders.cpp:4277
void triggerSetup_RoverMEMS(void)
Definition decoders.cpp:5232
void triggerPri_RoverMEMS(void)
Definition decoders.cpp:5257
uint16_t getRPM_RoverMEMS(void)
Definition decoders.cpp:5529
void triggerSec_NGC68(void)
Definition decoders.cpp:4751
uint16_t getRPM_NGC(void)
Definition decoders.cpp:4806
void triggerSec_RoverMEMS(void)
Definition decoders.cpp:5447
void triggerPri_NGC(void)
Definition decoders.cpp:4589
void triggerSetEndTeeth_NGC(void)
Definition decoders.cpp:4840
int getCrankAngle_RoverMEMS(void)
Definition decoders.cpp:5419
void triggerSetup_NGC(void)
Definition decoders.cpp:4532
void triggerSetEndTeeth_RoverMEMS(void)
Definition decoders.cpp:5549
void triggerSec_NGC4(void)
Definition decoders.cpp:4699
static TIntegral readSerialIntegralTimeout(void)
Reads an integral type, timing out if necessary.
Definition comms.cpp:173
uint16_t getRPM_MazdaAU(void)
Definition decoders.cpp:2802
void triggerPri_MazdaAU(void)
Definition decoders.cpp:2734
void triggerSetEndTeeth_MazdaAU(void)
Definition decoders.cpp:2852
void triggerSec_MazdaAU(void)
Definition decoders.cpp:2771
int getCrankAngle_MazdaAU(void)
Definition decoders.cpp:2824
void triggerSetup_MazdaAU(void)
Definition decoders.cpp:2714
void triggerSetEndTeeth_Miata9905(void)
Definition decoders.cpp:2667
int getCrankAngle_Miata9905(void)
Definition decoders.cpp:2628
void triggerSec_Miata9905(void)
Definition decoders.cpp:2570
uint16_t getRPM_Miata9905(void)
Definition decoders.cpp:2596
void triggerPri_Miata9905(void)
Definition decoders.cpp:2484
void triggerSetup_Miata9905(void)
Definition decoders.cpp:2446
int getCamAngle_Miata9905(void)
Definition decoders.cpp:2656
decoder_features_t(void)
Whether or not the decoder supports fixed cranking timing
Definition decoders.h:62
bool hasSecondary
Whether or not the decoder supports sequential operation
Definition decoders.h:59
bool supportsSequential
The use of the 2nd derivative calculation is limited to certain decoders.
Definition decoders.h:58
bool supports2ndDeriv
Definition decoders.h:57
bool hasFixedCrankingTiming
Whether or not the pattern uses a secondary input
Definition decoders.h:60
Current decoder status.
Definition decoders.h:87
SyncStatus syncStatus
Whether or not the triggerToothAngle variable is currently accurate. Some patterns have times when t...
Definition decoders.h:90
bool toothAngleIsCorrect
Is set true when the last trigger (Primary or secondary) was valid (ie passed filters)
Definition decoders.h:89
bool validTrigger
Definition decoders.h:88