#include <iostream>
#include <mindManager/mindManager.h>
#include <deviceManager/deviceManager.h>
#include <stimBuffApis/stimBuffApiManager.h>
#include <computeManager/computeManager.h>
#include <salmanoff.h>


namespace smo {

void initializeSalmanoff(void)
{
	std::cout << __func__ << ": Entered." << std::endl;

	compute::ComputeManager::getInstance().initialize();
	mind::MindManager::getInstance().initialize();
	stim_buff::StimBuffApiManager::getInstance().initialize();
	device::DeviceManager::getInstance().initialize();
	device::DeviceManager::getInstance().collateAllDapSpecs();
	device::DeviceManager::getInstance().parseAllDapSpecs();
	std::cout << device::DeviceManager::stringifyDeviceSpecs() << std::endl;
}

void shutdownSalmanoff(void)
{
	std::cout << __func__ << ": Entered." << std::endl;
	device::DeviceManager::getInstance().finalize();
	stim_buff::StimBuffApiManager::getInstance().finalize();
	mind::MindManager::getInstance().finalize();
	compute::ComputeManager::getInstance().finalize();
}

} // namespace smo
