1
0
This repository has been archived on 2024-01-25. You can view files and clone it, but cannot push or open issues or pull requests.
Files
RealtimeOscilloscope/src/app/factory.cpp
2023-11-28 14:19:36 +01:00

102 lines
2.4 KiB
C++

#include "mcu/mcu.h"
#include "xf/xf.h"
#include "factory.h"
#include "board/interface/buttonscontrollercallbackprovider.h"
extern "C" TIM_HandleTypeDef htim1; // Defined in main.c
extern "C" ADC_HandleTypeDef hadc3; // Defined in main.c
oscilloscope::Controller Factory::_oscilloscopeController;
oscilloscope::Gui Factory::_gui;
external::FrequencyGenerator Factory::_fgen;
oscilloscope::FreqGenController Factory::_fgenctrl;
ButtonsController Factory::_bc;
void Factory_initialize()
{
Factory::initialize();
}
void Factory_build()
{
Factory::build();
}
Factory::Factory()
{
}
// static
void Factory::initialize()
{
Trace::out("---------------------------------------------");
Trace::out("Initializing...");
// TODO: Uncomment code line below in order to call OscilloscopeController's initialize() method
// getOscilloscopeController().initialize(getGui(), adcValuesBuffer, ADC_VALUES_BUFFER_SIZE);
getFrequencyGenerator().initialize();
getFreqGenController().initialize(getGui());
#if (TOUCHGFX_BAREMETAL != 0)
getTouchGfxTask().initialize();
#endif // TOUCHGFX_BAREMETAL
}
// static
void Factory::build()
{
Trace::out("Building...");
HAL_ADC_Start_IT(&hadc3); // Start ADC conversion
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_1); // Start TIM1 with trigger channel 1
getOscilloscopeController().start();
getGui().start();
getButtonsController().registerCallback(&getFreqGenController(),
(interface::ButtonsControllerCallbackProvider::CallbackMethod)&oscilloscope::FreqGenController::onButtonChanged);
getFreqGenController().start();
getButtonsController().start();
#if (TOUCHGFX_BAREMETAL != 0)
getTouchGfxTask().start();
#endif // TOUCHGFX_BAREMETAL
Trace::out("Running...");
}
oscilloscope::Controller & Factory::getOscilloscopeController()
{
return oscilloscope::Controller::getInstance();
}
//static
oscilloscope::Gui & Factory::getGui()
{
return _gui;
}
//static
ButtonsController& Factory::getButtonsController() {
return _bc;
}
//static
oscilloscope::FreqGenController& Factory::getFreqGenController() {
return _fgenctrl;
}
#if (TOUCHGFX_BAREMETAL != 0)
// static
TouchGfxTask & Factory::getTouchGfxTask()
{
static TouchGfxTask touchGfxTask;
return touchGfxTask;
}
#endif // TOUCHGFX_BAREMETAL
FrequencyGenerator& Factory::getFrequencyGenerator() {
return _fgen;
}