#include "Helper/delay_helper.h"
#include "stm32h563xx.h"

#include "Center/common_center.hpp"
#include "Helper/gpio_helper.hpp"
#include "Helper/delay_helper.h"

void TerminateHandler() {
    auto led = GpioHelper::GpioInit(GPIOB, GPIO_PIN_0, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_PIN_SET);
    while (true) {
        led.Toggle();
        DelayS(1);
    }
}

void Setup() {
    GpioHelper::EnableAllGpioPeripheral();
    DelaySetup();
    auto ultrasonic = CommonCenter::GetUltrasonic();
    auto dfPlayer   = CommonCenter::GetDfPlayer();
    auto canMv      = CommonCenter::GetCanMv();
}

extern "C" void AppStart() {
    Setup();
    auto ultrasonic = CommonCenter::GetUltrasonic();
    auto dfPlayer   = CommonCenter::GetDfPlayer();
    auto canMv      = CommonCenter::GetCanMv();
    while (true) {
        // Example usage of the classes
        ultrasonic.GetDistance();
        dfPlayer.PlayTrack(1);

        DelayMs(1000); // Delay for 1 second
    }
}
