Upload files to "/"
This commit is contained in:
86
signal_manager.h
Normal file
86
signal_manager.h
Normal file
@@ -0,0 +1,86 @@
|
||||
// signal_manager.h - Signal Manager for CAN Signal Definitions
|
||||
|
||||
#ifndef SIGNAL_MANAGER_H
|
||||
#define SIGNAL_MANAGER_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include "dbc_parser.h"
|
||||
#include "types.h"
|
||||
|
||||
// Maximum manual signals
|
||||
#define MAX_MANUAL_SIGNALS 50
|
||||
|
||||
// Signal definition types
|
||||
enum SignalSource {
|
||||
SIGNAL_SOURCE_NONE,
|
||||
SIGNAL_SOURCE_DBC,
|
||||
SIGNAL_SOURCE_MANUAL
|
||||
};
|
||||
|
||||
// Signal definition (for manual and DBC signals)
|
||||
struct SignalDefinition {
|
||||
char name[32];
|
||||
uint32_t canId;
|
||||
uint32_t startBit;
|
||||
uint32_t length;
|
||||
bool isLittleEndian;
|
||||
bool isSigned;
|
||||
float factor;
|
||||
float offset;
|
||||
SignalSource source;
|
||||
bool enabled;
|
||||
uint32_t dbcSignalIndex;
|
||||
};
|
||||
|
||||
// Signal value (for real-time data)
|
||||
struct SignalValue {
|
||||
char name[32];
|
||||
float value;
|
||||
uint32_t timestamp;
|
||||
bool valid;
|
||||
};
|
||||
|
||||
// Signal manager
|
||||
extern SignalDefinition signalDefs[MAX_MANUAL_SIGNALS];
|
||||
extern uint16_t signalDefCount;
|
||||
extern SignalValue signalValues[MAX_MANUAL_SIGNALS];
|
||||
|
||||
// Initialize signal manager
|
||||
void initSignalManager();
|
||||
|
||||
// Add manual signal definition
|
||||
bool addManualSignal(const char* name, uint32_t canId, uint32_t startBit,
|
||||
uint32_t length, bool isLittleEndian, bool isSigned,
|
||||
float factor, float offset);
|
||||
|
||||
// Remove signal definition
|
||||
bool removeSignal(const char* name);
|
||||
|
||||
// Enable/disable signal for graphing
|
||||
bool enableSignal(const char* name, bool enable);
|
||||
|
||||
// Get signal definition by name
|
||||
SignalDefinition* getSignalDef(const char* name);
|
||||
|
||||
// Get signal value by name
|
||||
SignalValue* getSignalValue(const char* name);
|
||||
|
||||
// Update signal value from CAN frame
|
||||
void updateSignalFromCAN(const CanFrame* frame);
|
||||
|
||||
// Update all signal values from current CAN data
|
||||
void updateAllSignals(const CanFrame* frame);
|
||||
|
||||
// Get enabled signals for WebSocket
|
||||
uint16_t getEnabledSignals(SignalValue* values, uint16_t maxCount);
|
||||
|
||||
// Load signals from SD
|
||||
bool loadSignalsFromSD();
|
||||
|
||||
// Save signals to SD
|
||||
bool saveSignalsToSD();
|
||||
|
||||
// Get signals JSON for web
|
||||
void getSignalsJSON(char* buffer, size_t bufferSize);
|
||||
|
||||
#endif // SIGNAL_MANAGER_H
|
||||
Reference in New Issue
Block a user