Speeduino
Loading...
Searching...
No Matches
decoders.h
Go to the documentation of this file.
1#ifndef DECODERS_H
2#define DECODERS_H
3
4#include "globals.h"
5
6#if defined(CORE_AVR)
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)
10#else
11 #define READ_PRI_TRIGGER() digitalRead(pinTrigger)
12 #define READ_SEC_TRIGGER() digitalRead(pinTrigger2)
13 #define READ_THIRD_TRIGGER() digitalRead(pinTrigger3)
14#endif
15
16#define DECODER_MISSING_TOOTH 0
17#define DECODER_BASIC_DISTRIBUTOR 1
18#define DECODER_DUAL_WHEEL 2
19#define DECODER_GM7X 3
20#define DECODER_4G63 4
21#define DECODER_24X 5
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
38#define DECODER_NGC 22
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
45
46#define BIT_DECODER_VALID_TRIGGER 4 //Is set true when the last trigger (Primary or secondary) was valid (ie passed filters)
47#define BIT_DECODER_TOOTH_ANG_CORRECT 5 //Whether or not the triggerToothAngle variable is currently accurate. Some patterns have times when the triggerToothAngle variable cannot be accurately set.
48#define BIT_DECODER_STATUS_PRIMARY 6 // 1: on, 0: off
49#define BIT_DECODER_STATUS_SECONDARY 7 // 1: on, 0: off
50
51#define TRIGGER_FILTER_OFF 0
52#define TRIGGER_FILTER_LITE 1
53#define TRIGGER_FILTER_MEDIUM 2
54#define TRIGGER_FILTER_AGGRESSIVE 3
55
69
71
75enum class SyncStatus : uint8_t {
77 None,
81 Partial,
83 Full,
84};
85
92
95
106
107/*
108extern volatile bool validTrigger; //Is set true when the last trigger (Primary or secondary) was valid (ie passed filters)
109extern volatile bool triggerToothAngleIsCorrect; //Whether or not the triggerToothAngle variable is currently accurate. Some patterns have times when the triggerToothAngle variable cannot be accurately set.
110extern bool secondDerivEnabled; //The use of the 2nd derivative calculation is limited to certain decoders. This is set to either true or false in each decoders setup routine
111extern bool decoderIsSequential; //Whether or not the decoder supports sequential operation
112extern bool hasSecondary; //Whether or not the pattern uses a secondary input
113extern bool hasFixedCrankingTiming;
114*/
115
116void loggerPrimaryISR(void);
117void loggerSecondaryISR(void);
118void loggerTertiaryISR(void);
119
120//All of the below are the 6 required functions for each decoder / pattern
122void triggerPri_missingTooth(void);
123void triggerSec_missingTooth(void);
127extern void triggerSetEndTeeth_missingTooth(void);
128
129
130void triggerSetup_DualWheel(void);
131void triggerPri_DualWheel(void);
132void triggerSec_DualWheel(void);
136
143
144void triggerSetup_GM7X(void);
145void triggerPri_GM7X(void);
146void triggerSec_GM7X(void);
148int getCrankAngle_GM7X(void);
149void triggerSetEndTeeth_GM7X(void);
150
151void triggerSetup_4G63(void);
152void triggerPri_4G63(void);
153void triggerSec_4G63(void);
155int getCrankAngle_4G63(void);
156void triggerSetEndTeeth_4G63(void);
157
158void triggerSetup_24X(void);
159void triggerPri_24X(void);
160void triggerSec_24X(void);
161uint16_t getRPM_24X(void);
162int getCrankAngle_24X(void);
163void triggerSetEndTeeth_24X(void);
164
165void triggerSetup_Jeep2000(void);
166void triggerPri_Jeep2000(void);
167void triggerSec_Jeep2000(void);
169int getCrankAngle_Jeep2000(void);
171
172void triggerSetup_Audi135(void);
173void triggerPri_Audi135(void);
174void triggerSec_Audi135(void);
176int getCrankAngle_Audi135(void);
178
179void triggerSetup_HondaD17(void);
180void triggerPri_HondaD17(void);
181void triggerSec_HondaD17(void);
183int getCrankAngle_HondaD17(void);
185
186void triggerSetup_HondaJ32(void);
187void triggerPri_HondaJ32(void);
188void triggerSec_HondaJ32(void);
190int getCrankAngle_HondaJ32(void);
192
193void triggerSetup_Miata9905(void);
194void triggerPri_Miata9905(void);
195void triggerSec_Miata9905(void);
199int getCamAngle_Miata9905(void);
200
201void triggerSetup_MazdaAU(void);
202void triggerPri_MazdaAU(void);
203void triggerSec_MazdaAU(void);
205int getCrankAngle_MazdaAU(void);
207
208void triggerSetup_non360(void);
209void triggerPri_non360(void);
210void triggerSec_non360(void);
212int getCrankAngle_non360(void);
214
215void triggerSetup_Nissan360(void);
216void triggerPri_Nissan360(void);
217void triggerSec_Nissan360(void);
221
222void triggerSetup_Subaru67(void);
223void triggerPri_Subaru67(void);
224void triggerSec_Subaru67(void);
226int getCrankAngle_Subaru67(void);
228
229void triggerSetup_Daihatsu(void);
230void triggerPri_Daihatsu(void);
231void triggerSec_Daihatsu(void);
233int getCrankAngle_Daihatsu(void);
235
236void triggerSetup_Harley(void);
237void triggerPri_Harley(void);
238void triggerSec_Harley(void);
240int getCrankAngle_Harley(void);
242
249
256
257void triggerSetup_420a(void);
258void triggerPri_420a(void);
259void triggerSec_420a(void);
261int getCrankAngle_420a(void);
262void triggerSetEndTeeth_420a(void);
263
264void triggerPri_Webber(void);
265void triggerSec_Webber(void);
266
267void triggerSetup_FordST170(void);
268void triggerSec_FordST170(void);
272
273void triggerSetup_DRZ400(void);
274void triggerSec_DRZ400(void);
275
276void triggerSetup_NGC(void);
277void triggerPri_NGC(void);
278void triggerSec_NGC4(void);
279void triggerSec_NGC68(void);
280uint16_t getRPM_NGC(void);
281void triggerSetEndTeeth_NGC(void);
282
283void triggerSetup_Renix(void);
284void triggerPri_Renix(void);
285void triggerSetEndTeeth_Renix(void);
286
287void triggerSetup_RoverMEMS(void);
288void triggerPri_RoverMEMS(void);
289void triggerSec_RoverMEMS(void);
293
294void triggerSetup_Vmax(void);
295void triggerPri_Vmax(void);
296void triggerSec_Vmax(void);
298int getCrankAngle_Vmax(void);
299void triggerSetEndTeeth_Vmax(void);
300
301void triggerSetup_SuzukiK6A(void);
302void triggerPri_SuzukiK6A(void);
303void triggerSec_SuzukiK6A(void);
307
308void triggerSetup_FordTFI(void);
309void triggerPri_FordTFI(void);
310void triggerSec_FordTFI(void);
312int getCrankAngle_FordTFI(void);
314
320void resetDecoder(void);
321
322extern void (*triggerHandler)(void); //Pointer for the trigger function (Gets pointed to the relevant decoder)
323extern void (*triggerSecondaryHandler)(void); //Pointer for the secondary trigger function (Gets pointed to the relevant decoder)
324extern void (*triggerTertiaryHandler)(void); //Pointer for the tertiary trigger function (Gets pointed to the relevant decoder)
325
326extern uint16_t (*getRPM)(void); //Pointer to the getRPM function (Gets pointed to the relevant decoder)
327extern int (*getCrankAngle)(void); //Pointer to the getCrank Angle function (Gets pointed to the relevant decoder)
328extern void (*triggerSetEndTeeth)(void); //Pointer to the triggerSetEndTeeth function of each decoder
329
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;
335extern volatile unsigned long targetGap;
336
337extern volatile uint16_t toothCurrentCount; //The current number of teeth (Once sync has been achieved, this can never actually be 0
338extern volatile unsigned long toothSystemLastToothTime; //As below, but used for decoders where not every tooth count is used for calculation
339extern volatile unsigned long toothLastThirdToothTime; //The time (micros()) that the last tooth was registered on the second cam input
340extern volatile unsigned long toothLastMinusOneToothTime; //The time (micros()) that the tooth before the last tooth was registered
341extern volatile unsigned long toothLastMinusOneSecToothTime; //The time (micros()) that the tooth before the last tooth was registered on secondary input
342extern volatile unsigned long targetGap2;
343
344extern volatile unsigned long toothOneTime; //The time (micros()) that tooth 1 last triggered
345extern volatile unsigned long toothOneMinusOneTime; //The 2nd to last time (micros()) that tooth 1 last triggered
346extern volatile bool revolutionOne; // For sequential operation, this tracks whether the current revolution is 1 or 2 (not 1)
347
348extern volatile unsigned long secondaryLastToothTime; //The time (micros()) that the last tooth was registered (Cam input)
349extern volatile unsigned long secondaryLastToothTime1; //The time (micros()) that the last tooth was registered (Cam input)
350
352extern volatile unsigned long triggerFilterTime; // The shortest time (in uS) that pulses will be accepted (Used for debounce filtering)
353extern volatile unsigned long triggerSecFilterTime; // The shortest time (in uS) that pulses will be accepted (Used for debounce filtering) for the secondary input
354extern unsigned int triggerSecFilterTime_duration; // The shortest valid time (in uS) pulse DURATION
355extern volatile uint16_t triggerToothAngle; //The number of crank degrees that elapse per tooth
356extern byte checkSyncToothCount; //How many teeth must've been seen on this revolution before we try to confirm sync (Useful for missing tooth type decoders)
357extern unsigned long elapsedTime;
358extern unsigned long lastCrankAngleCalc;
359extern unsigned long lastVVTtime; //The time between the vvt reference pulse and the last crank pulse
360
369
370extern int16_t toothAngles[24]; //An array for storing fixed tooth angles. Currently sized at 24 for the GM 24X decoder, but may grow later if there are other decoders that use this style
371
372#define CRANK_SPEED 0U
373#define CAM_SPEED 1U
374
375#define TOOTH_CRANK 0
376#define TOOTH_CAM_SECONDARY 1
377#define TOOTH_CAM_TERTIARY 2
378
379// used by the ROVER MEMS pattern
380#define ID_TOOTH_PATTERN 0 // have we identified teeth to skip for calculating RPM?
381#define SKIP_TOOTH1 1
382#define SKIP_TOOTH2 2
383#define SKIP_TOOTH3 3
384#define SKIP_TOOTH4 4
385
386#endif
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
Definition decoders.h:56
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