multi-channel Tuner Studio tooth logger #1284

This commit is contained in:
rusefi 2020-04-14 15:17:15 -04:00
parent 3bb44df7b5
commit 817ea2c008
4 changed files with 21 additions and 7 deletions

View File

@ -11,6 +11,8 @@
#if EFI_TOOTH_LOGGER
EXTERN_ENGINE;
#include <cstddef>
#include "efitime.h"
#include "efilib.h"
@ -48,11 +50,12 @@ static bool trigger2 = false;
//NextIdx++;
static void SetNextCompositeEntry(uint32_t nowUs, bool trigger1, bool trigger2) {
static void SetNextCompositeEntry(uint32_t nowUs, bool trigger1, bool trigger2, bool isSync) {
// TS uses big endian, grumble
buffer[NextIdx].timestamp = SWAP_UINT32(nowUs);
buffer[NextIdx].priLevel = trigger1;
buffer[NextIdx].secLevel = trigger2;
buffer[NextIdx].sync = isSync;
// todo:
//buffer[NextIdx].sync = isSynced;
//buffer[NextIdx].trigger = wtfIsTriggerIdk;
@ -67,7 +70,7 @@ static void SetNextCompositeEntry(uint32_t nowUs, bool trigger1, bool trigger2)
}
}
void LogTriggerTooth(trigger_event_e tooth, efitick_t timestamp) {
void LogTriggerTooth(trigger_event_e tooth, efitick_t timestamp DECLARE_ENGINE_PARAMETER_SUFFIX) {
// bail if we aren't enabled
if (!ToothLoggerEnabled) {
return;
@ -107,7 +110,8 @@ void LogTriggerTooth(trigger_event_e tooth, efitick_t timestamp) {
}
uint32_t nowUs = NT2US(timestamp);
SetNextCompositeEntry(nowUs, trigger1, trigger2);
bool isSync = engine->triggerCentral.triggerState.shaft_is_synchronized;
SetNextCompositeEntry(nowUs, trigger1, trigger2, isSync);
}
void EnableToothLogger() {

View File

@ -11,6 +11,7 @@
#include <cstddef>
#include "efitime.h"
#include "rusefi_enums.h"
#include "engine.h"
// Enable the tooth logger - this clears the buffer starts logging
void EnableToothLogger();
@ -19,7 +20,7 @@ void EnableToothLogger();
void DisableToothLogger();
// A new tooth has arrived! Log to the buffer if enabled.
void LogTriggerTooth(trigger_event_e tooth, efitick_t timestamp);
void LogTriggerTooth(trigger_event_e tooth, efitick_t timestamp DECLARE_ENGINE_PARAMETER_SUFFIX);
struct ToothLoggerBuffer
{

View File

@ -206,7 +206,7 @@ void hwHandleShaftSignal(trigger_event_e signal, efitick_t timestamp) {
// Log to the Tunerstudio tooth logger
// We want to do this before anything else as we
// actually want to capture any noise/jitter that may be occurring
LogTriggerTooth(signal, timestamp);
LogTriggerTooth(signal, timestamp PASS_ENGINE_PARAMETER_SUFFIX);
#endif /* EFI_TOOTH_LOGGER */
// for effective noise filtering, we need both signal edges,

View File

@ -21,17 +21,26 @@ int icuFallingCallbackCounter = 0;
#include "trigger_input.h"
#include "digital_input_icu.h"
#include "tooth_logger.h"
EXTERN_ENGINE;
static Logging *logger;
static void vvtRisingCallback(void *) {
hwHandleVvtCamSignal(TV_RISE, getTimeNowNt());
efitick_t now = getTimeNowNt();
#if EFI_TOOTH_LOGGER
LogTriggerTooth(SHAFT_SECONDARY_RISING, now);
#endif /* EFI_TOOTH_LOGGER */
hwHandleVvtCamSignal(TV_RISE, now);
}
static void vvtFallingCallback(void *) {
hwHandleVvtCamSignal(TV_FALL, getTimeNowNt());
efitick_t now = getTimeNowNt();
#if EFI_TOOTH_LOGGER
LogTriggerTooth(SHAFT_SECONDARY_FALLING, now);
#endif /* EFI_TOOTH_LOGGER */
hwHandleVvtCamSignal(TV_FALL, now);
}
/**