fome-fw/firmware/development/engine_sniffer.h

69 lines
1.7 KiB
C
Raw Normal View History

/**
* @file engine_sniffer.h
2019-05-02 14:52:48 -07:00
* @brief rusEfi console wave sniffer
*
* @date Jun 23, 2013
2020-01-13 18:57:43 -08:00
* @author Andrey Belomutskiy, (c) 2012-2020
*/
2020-04-01 16:00:56 -07:00
#pragma once
#include "rusefi_enums.h"
#include "datalogging.h"
enum class FrontDirection : uint8_t {
UP,
DOWN
};
2022-09-10 17:25:13 -07:00
void addEngineSnifferTdcEvent(int rpm);
void addEngineSnifferLogicAnalyzerEvent(int laIndex, FrontDirection frontDirection);
/**
* @param wheelIndex 0 or 1
* @triggerEventIndex index from sync point, from 0 to number of teeth in engine cycle
*/
void addEngineSnifferCrankEvent(int wheelIndex, int triggerEventIndex, FrontDirection frontDirection);
void addEngineSnifferVvtEvent(int vvtIndex, FrontDirection frontDirection);
2022-10-29 18:27:49 -07:00
void addEngineSnifferOutputPinEvent(NamedOutputPin *pin, FrontDirection frontDirection);
2022-09-10 17:25:13 -07:00
#if EFI_ENGINE_SNIFFER
/**
2019-05-02 14:52:48 -07:00
* @brief rusEfi console sniffer data buffer
*/
class WaveChart {
public:
WaveChart();
void init();
void addEvent3(const char *name, const char *msg);
void reset();
void startDataCollection();
void publishIfFull();
void publish();
bool isFull() const;
bool isStartedTooLongAgo() const;
2020-05-25 20:38:15 -07:00
// looks like this is only used by functional tests on real hardware
efitick_t pauseEngineSnifferUntilNt = 0;
2021-04-04 19:48:48 -07:00
int getSize();
private:
Logging logging;
char timeBuffer[_MAX_FILLER + 2];
2022-06-17 19:10:34 -07:00
// current number of events in buffer, see getSize()
uint32_t counter = 0;
/**
* We want to avoid visual jitter thus we want the left edge to be aligned
* https://github.com/rusefi/rusefi/issues/780
*/
bool collectingData = false;
efitick_t startTimeNt = 0;
volatile int isInitialized = false;
};
void initWaveChart(WaveChart *chart);
void setChartSize(int newSize);
#endif /* EFI_ENGINE_SNIFFER */