trigger: exti: callback parameter is now index

This commit is contained in:
rusefillc 2021-01-31 22:10:10 -05:00
parent a411e0d1af
commit d116101e1a
4 changed files with 17 additions and 23 deletions

View File

@ -2,7 +2,7 @@
* digital_input_exti.cpp
*
* Created on: Dec 18, 2018
* @author Andrey Belomutskiy, (c) 2012-2020
* @author Andrey Belomutskiy, (c) 2012-2021
*/
#include "global.h"

View File

@ -2,7 +2,7 @@
* @file trigger_input.cpp
*
* @date Nov 11, 2019
* @author Andrey Belomutskiy, (c) 2012-2020
* @author Andrey Belomutskiy, (c) 2012-2021
*/
#include "global.h"
@ -22,7 +22,6 @@ EXTERN_ENGINE;
void icuTriggerTurnOnInputPins(Logging *sharedLogger);
int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft);
void icuTriggerTurnOffInputPin(brain_pin_e brainPin);
void icuTriggerSetPrimaryChannel(brain_pin_e brainPin);
#else
#define icuTriggerTurnOnInputPins(sharedLogger) ((void)0)
int icuTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
@ -33,14 +32,12 @@ EXTERN_ENGINE;
return -2;
}
#define icuTriggerTurnOffInputPin(brainPin) ((void)0)
#define icuTriggerSetPrimaryChannel(brainPin) ((void)0)
#endif
#if (HAL_TRIGGER_USE_PAL == TRUE)
void extiTriggerTurnOnInputPins(Logging *sharedLogger);
int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft);
void extiTriggerTurnOffInputPin(brain_pin_e brainPin);
void extiTriggerSetPrimaryChannel(brain_pin_e brainPin);
#else
#define extiTriggerTurnOnInputPins(sharedLogger) ((void)0)
int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
@ -51,7 +48,6 @@ EXTERN_ENGINE;
return -2;
}
#define extiTriggerTurnOffInputPin(brainPin) ((void)0)
#define extiTriggerSetPrimaryChannel(brainPin) ((void)0)
#endif
enum triggerType {
@ -163,9 +159,6 @@ void startTriggerInputPins(void) {
turnOnTriggerInputPin("Cam", i, false);
}
}
icuTriggerSetPrimaryChannel(CONFIG(triggerInputPins)[0]);
extiTriggerSetPrimaryChannel(CONFIG(triggerInputPins)[0]);
}
void turnOnTriggerInputPins(Logging *sharedLogger) {

View File

@ -7,7 +7,7 @@
* see digital_input_icu.cp
*
* @date Dec 30, 2012
* @author Andrey Belomutskiy, (c) 2012-2020
* @author Andrey Belomutskiy, (c) 2012-2021
*/
#include "global.h"
@ -24,7 +24,9 @@
static Logging *logger;
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) {
// do the time sensitive things as early as possible!
@ -32,13 +34,14 @@ static void shaft_callback(void *arg) {
if (!engine->hwTriggerInputEnabled) {
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);
// todo: support for 3rd trigger input channel
// 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)) {
return;
}
@ -64,7 +67,8 @@ static void cam_callback(void *arg) {
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);
@ -88,7 +92,12 @@ int extiTriggerTurnOnInputPin(const char *msg, int index, bool isTriggerShaft) {
* * do not set to both edges if we need only one
* * simplify callback in case of one edge */
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;
}
@ -97,10 +106,6 @@ void extiTriggerTurnOffInputPin(brain_pin_e brainPin) {
efiExtiDisablePin(brainPin);
}
void extiTriggerSetPrimaryChannel(brain_pin_e brainPin) {
primary_line = PAL_LINE(getHwPort("trg", brainPin), getHwPin("trg", brainPin));
}
void extiTriggerTurnOnInputPins(Logging *sharedLogger) {
logger = sharedLogger;
}

View File

@ -128,10 +128,6 @@ void icuTriggerTurnOffInputPin(brain_pin_e brainPin) {
stopDigitalCapture("trigger", brainPin);
}
void icuTriggerSetPrimaryChannel(brain_pin_e brainPin) {
(void)brainPin;
}
void icuTriggerTurnOnInputPins(Logging *sharedLogger) {
logger = sharedLogger;
}