Skip to content
Snippets Groups Projects
Commit 1b5f9f34 authored by Nicolò Caruso's avatar Nicolò Caruso Committed by Emilio Corigliano
Browse files

[Nokia] Changed to dependency manager

Now modules are managed by dependency manager instead of module manager
parent fde09464
Branches
Tags
1 merge request!48[GS, ARP] New entrypoint for lyra_gs and ARP related things
......@@ -23,15 +23,14 @@
#pragma once
#include <drivers/spi/SPIBus.h>
#include <utils/ModuleManager/ModuleManager.hpp>
#include <utils/DependencyManager/DependencyManager.h>
#include "interfaces-impl/hwmapping.h"
namespace GroundstationNokia
{
class Buses : public Boardcore::Module
class Buses : public Boardcore::Injectable
{
public:
Boardcore::SPIBus radio_bus;
......
......@@ -32,7 +32,7 @@ using namespace Boardcore;
void Hub::dispatchOutgoingMsg(const mavlink_message_t& msg)
{
Radio* radio = ModuleManager::getInstance().get<Radio>();
Radio* radio = getModule<Radio>();
if (!radio->sendMsg(msg))
{
......@@ -42,6 +42,6 @@ void Hub::dispatchOutgoingMsg(const mavlink_message_t& msg)
void Hub::dispatchIncomingMsg(const mavlink_message_t& msg)
{
Serial* serial = ModuleManager::getInstance().get<Serial>();
Serial* serial = getModule<Serial>();
serial->sendMsg(msg);
}
\ No newline at end of file
......@@ -23,9 +23,10 @@
#pragma once
#include <Groundstation/Common/HubBase.h>
#include <Groundstation/Common/Ports/Serial.h>
#include <Groundstation/Nokia/Radio/Radio.h>
#include <common/Mavlink.h>
#include <utils/ModuleManager/ModuleManager.hpp>
#include <utils/DependencyManager/DependencyManager.h>
namespace GroundstationNokia
{
......@@ -33,7 +34,9 @@ namespace GroundstationNokia
/**
* @brief Central hub connecting all outgoing and ingoing modules.
*/
class Hub : public Groundstation::HubBase
class Hub : public Boardcore::InjectableWithDeps<
Boardcore::InjectableBase<Groundstation::HubBase>, Radio,
Groundstation::Serial>
{
public:
Hub() {}
......
......@@ -37,19 +37,24 @@ using namespace miosix;
#define SX1278_DIO1_IRQ EXTI4_IRQHandlerImpl
#define SX1278_DIO3_IRQ EXTI11_IRQHandlerImpl
Radio* radioGlobal = nullptr;
void __attribute__((used)) SX1278_DIO0_IRQ()
{
ModuleManager::getInstance().get<Radio>()->handleDioIRQ();
if (radioGlobal)
radioGlobal->handleDioIRQ();
}
void __attribute__((used)) SX1278_DIO1_IRQ()
{
ModuleManager::getInstance().get<Radio>()->handleDioIRQ();
if (radioGlobal)
radioGlobal->handleDioIRQ();
}
void __attribute__((used)) SX1278_DIO3_IRQ()
{
ModuleManager::getInstance().get<Radio>()->handleDioIRQ();
if (radioGlobal)
radioGlobal->handleDioIRQ();
}
bool Radio::start()
......@@ -63,9 +68,7 @@ bool Radio::start()
std::unique_ptr<Boardcore::SX1278Fsk> sx1278 =
std::make_unique<Boardcore::SX1278Fsk>(
ModuleManager::getInstance()
.get<GroundstationNokia::Buses>()
->radio_bus,
getModule<GroundstationNokia::Buses>()->radio_bus,
peripherals::ra01::pc13::cs::getPin(),
peripherals::ra01::pc13::dio0::getPin(),
peripherals::ra01::pc13::dio1::getPin(),
......
......@@ -23,11 +23,14 @@
#pragma once
#include <Groundstation/Common/Radio/RadioBase.h>
#include <Groundstation/Nokia/Buses.h>
namespace GroundstationNokia
{
class Radio : public Groundstation::RadioBase, public Boardcore::Module
class Radio : public Boardcore::InjectableWithDeps<
Boardcore::InjectableBase<Groundstation::RadioBase>,
GroundstationNokia::Buses>
{
public:
[[nodiscard]] bool start();
......
......@@ -25,6 +25,7 @@
#include <Groundstation/Nokia/Hub.h>
#include <Groundstation/Nokia/Radio/Radio.h>
#include <miosix.h>
#include <utils/DependencyManager/DependencyManager.h>
using namespace Groundstation;
using namespace GroundstationNokia;
......@@ -48,14 +49,14 @@ int main()
Radio *radio = new Radio();
Serial *serial = new Serial();
ModuleManager &modules = ModuleManager::getInstance();
DependencyManager manager;
bool ok = true;
ok &= modules.insert<HubBase>(hub);
ok &= modules.insert(buses);
ok &= modules.insert(serial);
ok &= modules.insert(radio);
ok &= manager.insert<HubBase>(hub);
ok &= manager.insert(buses);
ok &= manager.insert(serial);
ok &= manager.insert(radio);
// If insertion failed, stop right here
if (!ok)
......@@ -64,6 +65,12 @@ int main()
idleLoop();
}
if (!manager.inject())
{
printf("[error] Failed to inject the dependencies!\n");
idleLoop();
}
// Ok now start them
ok &= serial->start();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment