mirror of https://github.com/rusefi/rusefi-1.git
trigger: exti: callback parameter is now index
This commit is contained in:
parent
a411e0d1af
commit
d116101e1a
|
@ -2,7 +2,7 @@
|
||||||
* digital_input_exti.cpp
|
* digital_input_exti.cpp
|
||||||
*
|
*
|
||||||
* Created on: Dec 18, 2018
|
* Created on: Dec 18, 2018
|
||||||
* @author Andrey Belomutskiy, (c) 2012-2020
|
* @author Andrey Belomutskiy, (c) 2012-2021
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @file trigger_input.cpp
|
* @file trigger_input.cpp
|
||||||
*
|
*
|
||||||
* @date Nov 11, 2019
|
* @date Nov 11, 2019
|
||||||
* @author Andrey Belomutskiy, (c) 2012-2020
|
* @author Andrey Belomutskiy, (c) 2012-2021
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
@ -22,7 +22,6 @@ EXTERN_ENGINE;
|
||||||
void icuTriggerTurnOnInputPins(Logging *sharedLogger);
|
void icuTriggerTurnOnInputPins(Logging *sharedLogger);
|
||||||
int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft);
|
int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft);
|
||||||
void icuTriggerTurnOffInputPin(brain_pin_e brainPin);
|
void icuTriggerTurnOffInputPin(brain_pin_e brainPin);
|
||||||
void icuTriggerSetPrimaryChannel(brain_pin_e brainPin);
|
|
||||||
#else
|
#else
|
||||||
#define icuTriggerTurnOnInputPins(sharedLogger) ((void)0)
|
#define icuTriggerTurnOnInputPins(sharedLogger) ((void)0)
|
||||||
int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
|
int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
|
||||||
|
@ -33,14 +32,12 @@ EXTERN_ENGINE;
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
#define icuTriggerTurnOffInputPin(brainPin) ((void)0)
|
#define icuTriggerTurnOffInputPin(brainPin) ((void)0)
|
||||||
#define icuTriggerSetPrimaryChannel(brainPin) ((void)0)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (HAL_TRIGGER_USE_PAL == TRUE)
|
#if (HAL_TRIGGER_USE_PAL == TRUE)
|
||||||
void extiTriggerTurnOnInputPins(Logging *sharedLogger);
|
void extiTriggerTurnOnInputPins(Logging *sharedLogger);
|
||||||
int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft);
|
int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft);
|
||||||
void extiTriggerTurnOffInputPin(brain_pin_e brainPin);
|
void extiTriggerTurnOffInputPin(brain_pin_e brainPin);
|
||||||
void extiTriggerSetPrimaryChannel(brain_pin_e brainPin);
|
|
||||||
#else
|
#else
|
||||||
#define extiTriggerTurnOnInputPins(sharedLogger) ((void)0)
|
#define extiTriggerTurnOnInputPins(sharedLogger) ((void)0)
|
||||||
int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
|
int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
|
||||||
|
@ -51,7 +48,6 @@ EXTERN_ENGINE;
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
#define extiTriggerTurnOffInputPin(brainPin) ((void)0)
|
#define extiTriggerTurnOffInputPin(brainPin) ((void)0)
|
||||||
#define extiTriggerSetPrimaryChannel(brainPin) ((void)0)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum triggerType {
|
enum triggerType {
|
||||||
|
@ -163,9 +159,6 @@ void startTriggerInputPins(void) {
|
||||||
turnOnTriggerInputPin("Cam", i, false);
|
turnOnTriggerInputPin("Cam", i, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
icuTriggerSetPrimaryChannel(CONFIG(triggerInputPins)[0]);
|
|
||||||
extiTriggerSetPrimaryChannel(CONFIG(triggerInputPins)[0]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void turnOnTriggerInputPins(Logging *sharedLogger) {
|
void turnOnTriggerInputPins(Logging *sharedLogger) {
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
* see digital_input_icu.cp
|
* see digital_input_icu.cp
|
||||||
*
|
*
|
||||||
* @date Dec 30, 2012
|
* @date Dec 30, 2012
|
||||||
* @author Andrey Belomutskiy, (c) 2012-2020
|
* @author Andrey Belomutskiy, (c) 2012-2021
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
@ -24,7 +24,9 @@
|
||||||
static Logging *logger;
|
static Logging *logger;
|
||||||
|
|
||||||
EXTERN_ENGINE;
|
EXTERN_ENGINE;
|
||||||
static ioline_t primary_line;
|
|
||||||
|
static ioline_t shaftLines[TRIGGER_SUPPORTED_CHANNELS];
|
||||||
|
static ioline_t camLines[CAM_INPUTS_COUNT];
|
||||||
|
|
||||||
static void shaft_callback(void *arg) {
|
static void shaft_callback(void *arg) {
|
||||||
// do the time sensitive things as early as possible!
|
// do the time sensitive things as early as possible!
|
||||||
|
@ -32,13 +34,14 @@ static void shaft_callback(void *arg) {
|
||||||
if (!engine->hwTriggerInputEnabled) {
|
if (!engine->hwTriggerInputEnabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ioline_t pal_line = (ioline_t)arg;
|
int index = (int)arg;
|
||||||
|
ioline_t pal_line = shaftLines[index];
|
||||||
bool rise = (palReadLine(pal_line) == PAL_HIGH);
|
bool rise = (palReadLine(pal_line) == PAL_HIGH);
|
||||||
|
|
||||||
// todo: support for 3rd trigger input channel
|
// todo: support for 3rd trigger input channel
|
||||||
// todo: start using real event time from HW event, not just software timer?
|
// todo: start using real event time from HW event, not just software timer?
|
||||||
|
|
||||||
bool isPrimary = pal_line == primary_line;
|
bool isPrimary = index == 0;
|
||||||
if (!isPrimary && !TRIGGER_WAVEFORM(needSecondTriggerInput)) {
|
if (!isPrimary && !TRIGGER_WAVEFORM(needSecondTriggerInput)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +67,8 @@ static void cam_callback(void *arg) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ioline_t pal_line = (ioline_t)arg;
|
int index = (int)arg;
|
||||||
|
ioline_t pal_line = camLines[index];
|
||||||
|
|
||||||
bool rise = (palReadLine(pal_line) == PAL_HIGH);
|
bool rise = (palReadLine(pal_line) == PAL_HIGH);
|
||||||
|
|
||||||
|
@ -88,7 +92,12 @@ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
|
||||||
* * do not set to both edges if we need only one
|
* * do not set to both edges if we need only one
|
||||||
* * simplify callback in case of one edge */
|
* * simplify callback in case of one edge */
|
||||||
ioline_t pal_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin));
|
ioline_t pal_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin));
|
||||||
efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)pal_line);
|
if (isTriggerShaft) {
|
||||||
|
shaftLines[index] = pal_line;
|
||||||
|
} else {
|
||||||
|
camLines[index] = pal_line;
|
||||||
|
}
|
||||||
|
efiExtiEnablePin(msg, brainPin, PAL_EVENT_MODE_BOTH_EDGES, isTriggerShaft ? shaft_callback : cam_callback, (void *)index);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -97,10 +106,6 @@ void extiTriggerTurnOffInputPin(brain_pin_e brainPin) {
|
||||||
efiExtiDisablePin(brainPin);
|
efiExtiDisablePin(brainPin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void extiTriggerSetPrimaryChannel(brain_pin_e brainPin) {
|
|
||||||
primary_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin));
|
|
||||||
}
|
|
||||||
|
|
||||||
void extiTriggerTurnOnInputPins(Logging *sharedLogger) {
|
void extiTriggerTurnOnInputPins(Logging *sharedLogger) {
|
||||||
logger = sharedLogger;
|
logger = sharedLogger;
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,10 +128,6 @@ void icuTriggerTurnOffInputPin(brain_pin_e brainPin) {
|
||||||
stopDigitalCapture("trigger", brainPin);
|
stopDigitalCapture("trigger", brainPin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void icuTriggerSetPrimaryChannel(brain_pin_e brainPin) {
|
|
||||||
(void)brainPin;
|
|
||||||
}
|
|
||||||
|
|
||||||
void icuTriggerTurnOnInputPins(Logging *sharedLogger) {
|
void icuTriggerTurnOnInputPins(Logging *sharedLogger) {
|
||||||
logger = sharedLogger;
|
logger = sharedLogger;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue