mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-04 02:09:30 +02:00
Data layer introduction (#254)
* Active power, SOH * Total and remaining capacity * pre-commit, baby! * Typo * pre-commit wrestling * Temp min/max * Voltage and current * Min/max design voltage * BMS status, max charge/discharge, cell min/max * BMS status cleanup * Pre-commit, we meet again * Cell voltages and minor fixes * Cell number * SOC * Missed a spot * Event handling moved, Wh bugs fixed, time measurements improved * Pre-commit, old friend... * Battery chemistry * Update TESLA-MODEL-3-BATTERY.cpp * Total capacity/Wh max, soem default values * Good ol' pre-comm * Some prio/core cleanup, docs... * Contactor closing variables * Max charge/discharge amps * Data layer variable documentation * USER_SETTINGS comments * Charger comment * Update datalayer.h
This commit is contained in:
parent
e7f14084e3
commit
0fee07313a
68 changed files with 1097 additions and 1510 deletions
|
@ -1,5 +1,5 @@
|
|||
#include "events.h"
|
||||
|
||||
#include "../../datalayer/datalayer.h"
|
||||
#ifndef UNIT_TEST
|
||||
#include <EEPROM.h>
|
||||
#endif
|
||||
|
@ -47,6 +47,7 @@ typedef struct {
|
|||
uint32_t time_seconds;
|
||||
MyTimer second_timer;
|
||||
MyTimer ee_timer;
|
||||
MyTimer update_timer;
|
||||
EVENTS_LEVEL_TYPE level;
|
||||
uint16_t event_log_head_index;
|
||||
uint16_t event_log_tail_index;
|
||||
|
@ -76,6 +77,7 @@ void run_event_handling(void) {
|
|||
update_event_time();
|
||||
run_sequence_on_target();
|
||||
check_ee_write();
|
||||
update_event_level();
|
||||
}
|
||||
|
||||
/* Initialization function */
|
||||
|
@ -165,6 +167,7 @@ void init_events(void) {
|
|||
events.second_timer.set_interval(1000);
|
||||
// Write to EEPROM every X minutes (if an event has been set)
|
||||
events.ee_timer.set_interval(EE_WRITE_PERIOD_MINUTES * 60 * 1000);
|
||||
events.update_timer.set_interval(2000);
|
||||
}
|
||||
|
||||
void set_event(EVENTS_ENUM_TYPE event, uint8_t data) {
|
||||
|
@ -307,7 +310,9 @@ static void set_event(EVENTS_ENUM_TYPE event, uint8_t data, bool latched) {
|
|||
// Check if the event is latching
|
||||
events.entries[event].state = latched ? EVENT_STATE_ACTIVE_LATCHED : EVENT_STATE_ACTIVE;
|
||||
|
||||
update_event_level();
|
||||
// Update event level, only upwards. Downward changes are done in Software.ino:loop()
|
||||
events.level = max(events.level, events.entries[event].level);
|
||||
|
||||
update_bms_status();
|
||||
|
||||
#ifdef DEBUG_VIA_USB
|
||||
|
@ -320,13 +325,13 @@ static void update_bms_status(void) {
|
|||
case EVENT_LEVEL_INFO:
|
||||
case EVENT_LEVEL_WARNING:
|
||||
case EVENT_LEVEL_DEBUG:
|
||||
system_bms_status = ACTIVE;
|
||||
datalayer.battery.status.bms_status = ACTIVE;
|
||||
break;
|
||||
case EVENT_LEVEL_UPDATE:
|
||||
system_bms_status = UPDATING;
|
||||
datalayer.battery.status.bms_status = UPDATING;
|
||||
break;
|
||||
case EVENT_LEVEL_ERROR:
|
||||
system_bms_status = FAULT;
|
||||
datalayer.battery.status.bms_status = FAULT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
@ -334,12 +339,13 @@ static void update_bms_status(void) {
|
|||
}
|
||||
|
||||
static void update_event_level(void) {
|
||||
events.level = EVENT_LEVEL_INFO;
|
||||
EVENTS_LEVEL_TYPE temporary_level = EVENT_LEVEL_INFO;
|
||||
for (uint8_t i = 0u; i < EVENT_NOF_EVENTS; i++) {
|
||||
if ((events.entries[i].state == EVENT_STATE_ACTIVE) || (events.entries[i].state == EVENT_STATE_ACTIVE_LATCHED)) {
|
||||
events.level = max(events.entries[i].level, events.level);
|
||||
temporary_level = max(events.entries[i].level, temporary_level);
|
||||
}
|
||||
}
|
||||
events.level = temporary_level;
|
||||
}
|
||||
|
||||
static void update_event_time(void) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue