/* * startup.cpp * * Created on: 22 Sep 2023 * Author: Dario */ #include #include #include // sta-core-specific imports. #include #include #include #include // Tacos-specific includes. #include #include #include // The UART mutex defined in freertos.c extern osMutexId_t uartMutexHandle; namespace sta { // Here the printable used for debugging is defined. Printable * Debug; namespace tacos { void initPrintable() { // Initialize the mutex for UART communication. RtosMutex * mutex = new RtosMutex(&uartMutexHandle); // Initialize the UART interface and printable object. UARTSettings settings = { .mode = UARTMode::RX_TX }; STM32UART * intf_ptr = new STM32UART(&huart2, settings, mutex); Debug = new PrintableUART(intf_ptr); STA_DEBUG_PRINTLN("UART SUCCESSFULLY INITIALIZED"); } STA_WEAK void onStatemachineInit() {} void initStatemachine() { onStatemachineInit(); Statemachine::instance()->start(); } STA_WEAK void onManagerInit() {} void initManager() { onManagerInit(); Manager::instance()->start(); } } // namespace tacos namespace rtos { // Override the weak implementation of startupExtras provided in rtos2-utils. void startupExtras(void * argument) { tacos::initPrintable(); tacos::initStatemachine(); tacos::initManager(); } } // namespace rtos } // namespace sta