99 lines
2.8 KiB
C++
99 lines
2.8 KiB
C++
// Copyright (C) 2026 Hector van der Aa <hector@h3cx.dev>
|
|
// Copyright (C) 2026 Association Exergie <association.exergie@gmail.com>
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
#include "flags.h"
|
|
|
|
#include "modules/cmd/cmd.h"
|
|
#include "modules/config/config.h"
|
|
#include "modules/gps/gps.h"
|
|
#include "modules/lcd/lcd.h"
|
|
#include "modules/logger/system_logger.h"
|
|
#include <Arduino.h>
|
|
#include <avr/wdt.h>
|
|
#include "base/modules.h"
|
|
#include "base/module_base.h"
|
|
#include "base/router.h"
|
|
#include "modules/battery/battery.h"
|
|
#include "modules/thermocouple/thermocouple.h"
|
|
#include "modules/telemetry/telemetry.h"
|
|
#include "modules/lap_counter/lap_counter.h"
|
|
|
|
|
|
SystemLogger *logger = new SystemLogger(&Serial);
|
|
|
|
Lcd *display = new Lcd(logger);
|
|
Gps *gps_module = new Gps(&Serial2, logger);
|
|
Config *system_config = new Config(logger);
|
|
Cmd *command_handler = new Cmd(&Serial, logger);
|
|
Battery *battery_module = new Battery(logger);
|
|
Thermocouple *thermocouple_module = new Thermocouple(logger);
|
|
Telemetry *telemetry_module = new Telemetry(&Serial1, logger);
|
|
LapCounter *lap_counter_modules = new LapCounter(logger);
|
|
|
|
|
|
|
|
void setup() {
|
|
wdt_disable();
|
|
|
|
module_registry[module::Lcd] = display;
|
|
module_registry[module::Gps] = gps_module;
|
|
module_registry[module::Config] = system_config;
|
|
module_registry[module::Cmd] = command_handler;
|
|
module_registry[module::Battery] = battery_module;
|
|
module_registry[module::Thermocouple] = thermocouple_module;
|
|
module_registry[module::Telemetry] = telemetry_module;
|
|
module_registry[module::LapCounter] = lap_counter_modules;
|
|
|
|
display->init();
|
|
display->printMessage("Starting Initialization");
|
|
delay(750);
|
|
|
|
display->printMessage("Cmd Init...");
|
|
command_handler->init();
|
|
delay(750);
|
|
display->printMessage("Cmd Init Complete");
|
|
delay(750);
|
|
|
|
display->printMessage("Config Init...");
|
|
int result = system_config->autoInit();
|
|
delay(750);
|
|
if (result != 0) {
|
|
display->printMessage("Configuration Read Failed");
|
|
} else {
|
|
display->printMessage("Config Init Complete");
|
|
}
|
|
delay(750);
|
|
|
|
display->printMessage("GPS Init...");
|
|
gps_module->init();
|
|
lap_counter_modules->init();
|
|
delay(750);
|
|
display->printMessage("GPS Init Complete");
|
|
delay(750);
|
|
|
|
display->printMessage("Sensors Init...");
|
|
battery_module->init();
|
|
thermocouple_module->init();
|
|
delay(750);
|
|
display->printMessage("Sensors Init Complete");
|
|
delay(750);
|
|
|
|
display->printMessage("Telemetry Init...");
|
|
telemetry_module->init();
|
|
delay(750);
|
|
display->printMessage("Telemetry Init Complete");
|
|
delay(750);
|
|
router::send(module::Lcd, task::DisplayDriverPrimary);
|
|
}
|
|
|
|
void loop() {
|
|
gps_module->loop();
|
|
lap_counter_modules->loop();
|
|
display->loop();
|
|
command_handler->parseTask();
|
|
system_config->loop();
|
|
battery_module->loop();
|
|
thermocouple_module->loop();
|
|
telemetry_module->loop();
|
|
}
|