RumPi 1.0
A self-assembling C++ sensor & actuator library for the Raspberry Pi 5
ComponentFactory.cpp File Reference
#include <string>
#include <vector>
#include <map>
#include "../../Headers/RumPi/ComponentFactory.h"
#include "../../Headers/RumPi/ComponentManager.h"
#include "../../Headers/RumPi/AlertManager.h"
#include "../../Headers/RumPi/Common.h"
#include "../../Headers/RumPi/RumPiConfig.h"
#include "../../Headers/RumPi/ComponentCreationContext.h"
#include "../../Headers/json.hpp"
#include "../../Headers/RumPi/Components/AnalogDigitalConverterComponent.h"
#include "../../Headers/RumPi/Components/PCF8591.h"
#include "../../Headers/RumPi/Components/PMS5003.h"
#include "../../Headers/RumPi/Components/PTQS1005.h"
#include "../../Headers/RumPi/Components/HCSR501.h"
#include "../../Headers/RumPi/Components/DHT11.h"
#include "../../Headers/RumPi/Components/QSFS01.h"
#include "../../Headers/RumPi/Components/TSL2591.h"
#include "../../Headers/RumPi/Components/SystemHealthComponent.h"
#include "../../Headers/RumPi/Components/MQ2.h"
#include "../../Headers/RumPi/Components/MQ3.h"
#include "../../Headers/RumPi/Components/MQ4.h"
#include "../../Headers/RumPi/Components/MQ5.h"
#include "../../Headers/RumPi/Components/MQ6.h"
#include "../../Headers/RumPi/Components/MQ7.h"
#include "../../Headers/RumPi/Components/MQ8.h"
#include "../../Headers/RumPi/Components/MQ9.h"
#include "../../Headers/RumPi/Components/MQ135.h"
#include "../../Headers/RumPi/Components/LED.h"
#include "../../Headers/RumPi/Components/DualLED.h"
#include "../../Headers/RumPi/Components/RGBLED.h"
#include "../../Headers/RumPi/Components/Relay.h"
#include "../../Headers/RumPi/Components/BMP180.h"
#include "../../Headers/RumPi/Components/BMP280.h"
#include "../../Headers/RumPi/Components/Photoresistor.h"
#include "../../Headers/RumPi/Components/RainSensor.h"
#include "../../Headers/RumPi/Components/SoundSensor.h"
#include "../../Headers/RumPi/Components/MCP3008.h"
#include "../../Headers/RumPi/Components/RotaryEncoder.h"
#include "../../Headers/RumPi/Components/LCD1602.h"
#include "../../Headers/RumPi/Components/Motor.h"
#include "../../Headers/RumPi/Components/Vehicle.h"
#include "../../Headers/RumPi/Components/PiCamera.h"
Include dependency graph for ComponentFactory.cpp:

Namespaces

namespace  RumPi
 RumPi is the library's top-level facade.
 

Functions

static int RumPi::ParseI2CAddress (const nlohmann::json &entry)
 Parses an I2C address from a manifest entry, accepting either a hex string ("0x48") or a plain number (72). More...
 
static BaseComponent * RumPi::CreatePCF8591Component (ComponentCreationContext &context)
 Builds a PCF8591 ADC from its manifest entry ("i2cAddress", "basePin", optional "adcVoltage") and registers it in the context so later analog components can read through it. More...
 
static BaseComponent * RumPi::CreatePMS5003Component (ComponentCreationContext &context)
 Builds a PMS5003 particulate sensor from its manifest entry ("devicePath"). More...
 
static BaseComponent * RumPi::CreatePTQS1005Component (ComponentCreationContext &context)
 Builds a PTQS1005 air-quality sensor (humidity, TVOC, formaldehyde, CO2) from its manifest entry ("devicePath"). More...
 
static BaseComponent * RumPi::CreateHCSR501Component (ComponentCreationContext &context)
 Builds an HCSR501 motion sensor from its manifest entry ("pin"). More...
 
static BaseComponent * RumPi::CreateDHT11Component (ComponentCreationContext &context)
 Builds a DHT11 temperature/humidity sensor from its manifest entry ("pin", optional "isUsingPi5OrAbove" and "maxTimings"). More...
 
static BaseComponent * RumPi::CreateQSFS01Component (ComponentCreationContext &context)
 Builds a QSFS01 wind sensor from its manifest entry. More...
 
static BaseComponent * RumPi::CreateTSL2591Component (ComponentCreationContext &context)
 Builds a TSL2591 light sensor. More...
 
static BaseComponent * RumPi::CreateSystemHealthComponent (ComponentCreationContext &context)
 Builds a SystemHealthComponent (CPU, memory, etc.). More...
 
template<typename TGasSensor >
static BaseComponent * RumPi::CreateGasSensorComponent (ComponentCreationContext &context)
 Builds any MQ-family gas sensor (they share constructors, so one template covers them all). More...
 
template<typename TSinglePinComponent >
static BaseComponent * RumPi::CreateSinglePinComponent (ComponentCreationContext &context)
 Builds any component driven by a single GPIO pin (e.g. More...
 
static BaseComponent * RumPi::CreateDualLEDComponent (ComponentCreationContext &context)
 Builds a DualLED from its manifest entry ("firstColorPin", "secondColorPin"). More...
 
static BaseComponent * RumPi::CreateRGBLEDComponent (ComponentCreationContext &context)
 Builds an RGBLED from its manifest entry ("redPin", "greenPin", "bluePin"). More...
 
template<typename TAnalogComponent >
static BaseComponent * RumPi::CreateAdcAnalogComponent (ComponentCreationContext &context)
 Builds any analog sensor that reads through an ADC created earlier in the manifest ("adc" + "adcChannel"), like the photoresistor or rain sensor. More...
 
static BaseComponent * RumPi::CreateBMP280Component (ComponentCreationContext &context)
 Builds a BMP280 pressure/temperature sensor from its manifest entry ("i2cAddress"). More...
 
static BaseComponent * RumPi::CreateBMP180Component (ComponentCreationContext &context)
 Builds a BMP180 pressure/temperature sensor from its manifest entry ("i2cAddress", optional "i2cDevicePath"). More...
 
static BaseComponent * RumPi::CreateSoundSensorComponent (ComponentCreationContext &context)
 Builds a SoundSensor from its manifest entry ("i2cAddress", "pcfBasePin"). More...
 
static BaseComponent * RumPi::CreateMCP3008Component (ComponentCreationContext &context)
 Builds an MCP3008 ADC from its manifest entry ("basePin", "spiChannel", optional "adcVoltage") and registers it in the context so later analog components can read through it. More...
 
static BaseComponent * RumPi::CreateRotaryEncoderComponent (ComponentCreationContext &context)
 Builds a RotaryEncoder from its manifest entry ("clkPin", "dtPin", "swPin"). More...
 
static BaseComponent * RumPi::CreateLCD1602Component (ComponentCreationContext &context)
 Builds an LCD1602 display from its manifest entry ("i2cAddress"). More...
 
static BaseComponent * RumPi::CreateMotorComponent (ComponentCreationContext &context)
 Builds a Motor from its manifest entry ("driveOnePin", "driveTwoPin"). More...
 
static BaseComponent * RumPi::CreateVehicleComponent (ComponentCreationContext &context)
 Builds a Vehicle from its manifest entry ("numberOfMotors"). More...
 
static BaseComponent * RumPi::CreatePiCameraComponent (ComponentCreationContext &context)
 Builds a PiCamera. More...
 
static BaseComponent * RumPi::CreateComponent (const std::string &type, const nlohmann::json &entry, std::map< std::string, IAnalogDigitalConverterComponent * > &adcsByType, const RumPiConfig &config)
 Builds a single component from one manifest entry by matching its "type" to the right CreateX function. More...
 

Variables

static const char * RumPi::DEFAULT_COMPONENT_MANIFEST