Vehicle Control Unit 0.01
This is the c library for controlling the car.
Loading...
Searching...
No Matches
Units.h
Go to the documentation of this file.
1#ifndef RENSSELAERMOTORSPORT_UNITS_H
2#define RENSSELAERMOTORSPORT_UNITS_H
3
4#include <stdint.h>
5#include <stdbool.h>
6
7typedef enum {
16
17typedef enum {
29
30typedef struct {
31 char symbol[8]; // "V", "PSI", "°C", etc.
32 char name[16]; // "Volts", "PSI", "Celsius"
33 UnitDataType data_type; // Expected data type
34 UnitCategory category; // Unit category
35 float absolute_min; // Physical minimum possible value
36 float absolute_max; // Physical maximum possible value
39 uint8_t decimal_places; // Suggested decimal places for display
40 float scale_factor; // For unit conversions (base unit multiplier)
42
43// Predefined unit IDs
44typedef enum {
70 UNIT_COUNT // Must be last
72
73// Get unit definition by ID
75
76// Get unit ID by symbol
77UnitId getUnitIdBySymbol(const char* symbol);
78
79// Validate value against unit's absolute limits
80bool validateUnitValue(UnitId unit_id, float value);
81
82// Convert between compatible units
83float convertUnits(float value, UnitId from_unit, UnitId to_unit);
84
85// Initialize units system
86void initUnits(void);
87
88#endif // RENSSELAERMOTORSPORT_UNITS_H
bool validateUnitValue(UnitId unit_id, float value)
Definition: Units.c:94
const UnitDefinition * getUnitDefinition(UnitId unit_id)
Definition: Units.c:78
UnitDataType
Definition: Units.h:7
@ UNIT_TYPE_UINT16
Definition: Units.h:11
@ UNIT_TYPE_UINT32
Definition: Units.h:12
@ UNIT_TYPE_BOOL
Definition: Units.h:13
@ UNIT_TYPE_INT32
Definition: Units.h:10
@ UNIT_TYPE_ENUM
Definition: Units.h:14
@ UNIT_TYPE_INT16
Definition: Units.h:9
@ UNIT_TYPE_FLOAT
Definition: Units.h:8
float convertUnits(float value, UnitId from_unit, UnitId to_unit)
Definition: Units.c:99
UnitId getUnitIdBySymbol(const char *symbol)
Definition: Units.c:85
UnitCategory
Definition: Units.h:17
@ UNIT_CATEGORY_STATUS
Definition: Units.h:27
@ UNIT_CATEGORY_FREQUENCY
Definition: Units.h:25
@ UNIT_CATEGORY_TIME
Definition: Units.h:24
@ UNIT_CATEGORY_TEMPERATURE
Definition: Units.h:21
@ UNIT_CATEGORY_DIMENSIONLESS
Definition: Units.h:26
@ UNIT_CATEGORY_PRESSURE
Definition: Units.h:20
@ UNIT_CATEGORY_POSITION
Definition: Units.h:22
@ UNIT_CATEGORY_SPEED
Definition: Units.h:23
@ UNIT_CATEGORY_VOLTAGE
Definition: Units.h:18
@ UNIT_CATEGORY_CURRENT
Definition: Units.h:19
UnitId
Definition: Units.h:44
@ UNIT_DEGREES
Definition: Units.h:56
@ UNIT_AMPERES
Definition: Units.h:47
@ UNIT_PERCENT
Definition: Units.h:55
@ UNIT_PSI
Definition: Units.h:49
@ UNIT_MILLIVOLTS
Definition: Units.h:46
@ UNIT_CELSIUS
Definition: Units.h:52
@ UNIT_MICROSECONDS
Definition: Units.h:65
@ UNIT_FAHRENHEIT
Definition: Units.h:53
@ UNIT_VOLTS
Definition: Units.h:45
@ UNIT_COUNT
Definition: Units.h:70
@ UNIT_PASCAL
Definition: Units.h:51
@ UNIT_DIMENSIONLESS
Definition: Units.h:69
@ UNIT_MILLIAMPERES
Definition: Units.h:48
@ UNIT_SECONDS
Definition: Units.h:63
@ UNIT_ENUM
Definition: Units.h:67
@ UNIT_BOOLEAN
Definition: Units.h:66
@ UNIT_RADIANS
Definition: Units.h:57
@ UNIT_HZ
Definition: Units.h:59
@ UNIT_KELVIN
Definition: Units.h:54
@ UNIT_MPH
Definition: Units.h:61
@ UNIT_MILLISECONDS
Definition: Units.h:64
@ UNIT_PERCENTAGE
Definition: Units.h:68
@ UNIT_KMH
Definition: Units.h:60
@ UNIT_BAR
Definition: Units.h:50
@ UNIT_RPM
Definition: Units.h:58
@ UNIT_MS
Definition: Units.h:62
void initUnits(void)
Definition: Units.c:74
UnitDataType data_type
Definition: Units.h:33
float default_warning_min
Definition: Units.h:37
float absolute_min
Definition: Units.h:35
uint8_t decimal_places
Definition: Units.h:39
float scale_factor
Definition: Units.h:40
UnitCategory category
Definition: Units.h:34
float absolute_max
Definition: Units.h:36
float default_warning_max
Definition: Units.h:38