Devices

global
Devices.h
global

Code source


        // Devices.h
#pragma once
//CREPP

#include "system/ISR_Handler.h"
#include "system/DualCore_Handler.h"

#include "data/DataStorage.h"

#include "drivers/ADS1115_Handler.h"
#include "drivers/PCA9685_Handler.h"
#include "drivers/PCF8574_Handler.h"
#include "drivers/DS3231_Handler.h"
#include "drivers/LED_Handler.h"
#include "drivers/Encoder.h"
#include "drivers/L293D_Handler.h"

#include "gnss/GNSS_Handler.h"

#include "tools/Buttons.h"
#include "tools/BME280.h"
#include "tools/Distance.h"
#include "tools/OLED.h"
#include "tools/Servo.h"
#include "tools/NRF24.h"
#include "tools/Motor.h"
#include "tools/Motor_Driver.h"
#include "tools/MPU6050.h"

#include "audio/AudioPlayer.h"

#include <tuple>

//namespace crepp = crepp;

namespace crepp::devices 
{

    extern crepp::drivers::ADS1115_Handler adc;
    extern crepp::drivers::PCA9685_Handler pca;
    extern crepp::drivers::PCF8574_Handler pcf;
    extern crepp::drivers::DS3231_Handler ds3231;
    extern crepp::drivers::LED_Handler leds;
    extern crepp::drivers::Encoder encoder;
    extern crepp::drivers::L293D_Handler l293d;
    extern crepp::drivers::GNSS_Handler gnss;
    
    extern crepp::tools::Buttons buttons;
    extern crepp::tools::BME280 bme280;
    extern crepp::tools::Distance hcsr04;
    extern crepp::tools::Servo servo;
    extern crepp::tools::OLED oled;
    extern crepp::tools::NRF24 nrf24;
    extern crepp::tools::Motor motor;
    extern crepp::tools::Motor_Driver motorLeft;
    extern crepp::tools::Motor_Driver motorRight;
    extern crepp::tools::MPU6050 mpu6050;

    extern crepp::data::DataStorage sd;


    extern crepp::audio::AudioPlayer audio;

    
    //extern crepp::system::System_Handler robot;


}

namespace crepp::devices
{
    inline auto deviceList = std::tie(
        adc,
        pca,
        pcf,
        ds3231,
        leds,
        bme280,
        hcsr04,
        encoder,
        servo,
        motor,
        l293d,
        motorLeft,
        motorRight,
        nrf24,
        oled,
        mpu6050,
        sd, 
        audio
    );
}

namespace crepp::devices
{

template<typename T>
void callGetStatus(T& device)
{
    device.getStatus();
}

}

namespace crepp 
{
   // inline auto& DualCore = system::DualCore_Handler::getInstance();
}


/**
 * @namespace crepp
 * @brief Espace de noms principal CREPP.
 */

/**
 * @brief Accès simplifié au gestionnaire ISR.
 *
 * @details
 * Alias utilisateur permettant d'écrire :
 * @code
 * crepp::ISR().attach(pin, callback, RISING);
 * @endcode
 *
 * @return Référence vers le gestionnaire ISR.
 */
namespace crepp {
    inline crepp::system::ISR_Handler& ISR() {
        return crepp::system::ISR_Handler::getInstance();
    }
}


// Dans Devices.h, ajouter: