mirror of https://github.com/FOME-Tech/fome-fw.git
trigger: exti: callback parameter is now index
This commit is contained in:
parent
1243225c07
commit
845ad4e53d
|
@ -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"
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue