1#ifndef DIGITALMODULEV1_0_H
2#define DIGITALMODULEV1_0_H
9#include "DigitalInput.h"
10#include "DigitalOutput.h"
49 static const String HW_TYPE;
50 String
getHWType()
const override {
return HW_TYPE; }
51 static const String HW_VERSION;
53 static const String FW_VERSION;
55 static constexpr uint8_t GPIO_DEMAND = 2;
57 static constexpr uint8_t GPIO_SUPPLY = 0;
75 bool attachModule(uint8_t slot, uint8_t gpioStart)
override;
126 void cycle(uint8_t* response)
override;
166 uint8_t
setOutput(uint8_t output,
bool state);
185 DEACTIVATED_CHANNEL = 11
189 static constexpr size_t INTERFACE_COUNT = 12;
192 OutputDefinition* CS_INPUTS;
193 OutputDefinition* CS_OUTPUTS;
194 const uint8_t OUTPUT_MASK;
195 uint8_t _outputStates = 0;
196 uint8_t _wireBreaks = 0;
197 uint8_t _inputStates = 0;
198 DigitalInput _digitalInputInterfaces[8];
199 DigitalOutput _digitalOutputInterfaces[8];
200 Interface* _interfaces[INTERFACE_COUNT];
Base class for CANTram hardware modules.
Logging and debug macro definitions for CANTramCore.
Definitions for GPIO/output descriptors and provider interfaces.
CANTramModule()=default
Default constructor.
uint8_t getGPIODemand() const override
Get the GPIO demand of the module.
Definition DigitalModuleV1_0.h:56
uint8_t getInputs() const
Get current input states.
Definition DigitalModuleV1_0.h:173
uint8_t getWireBreaks() const
Get current wire-break status.
Definition DigitalModuleV1_0.h:180
bool addInterfaces() override
Add and validate interfaces provided by the module.
Definition DigitalModuleV1_0.cpp:120
String getHWType() const override
Get the hardware type string.
Definition DigitalModuleV1_0.h:50
void setWireBreakMask(uint8_t mask=0)
Configure wire-break detection mask.
Definition DigitalModuleV1_0.cpp:171
uint8_t getGPIOSupply() const override
Get the GPIO supply capacity of the module.
Definition DigitalModuleV1_0.h:58
Interface ** getInterfaces() override
Get pointer to the module's interface array.
Definition DigitalModuleV1_0.h:142
bool attachModule(uint8_t slot, uint8_t gpioStart) override
Attach the module to a slot and assign GPIO range.
Definition DigitalModuleV1_0.cpp:40
bool provideGPIOs() override
Provide GPIO definitions to the core.
Definition DigitalModuleV1_0.cpp:56
void cycle(uint8_t *response) override
Periodic cycle callback.
Definition DigitalModuleV1_0.cpp:218
String getFWVersion() const override
Get the firmware version string.
Definition DigitalModuleV1_0.h:54
DigitalModuleV1_0(uint8_t outputMask=0xF0)
Construct a DigitalModuleV1_0 instance.
Definition DigitalModuleV1_0.cpp:16
bool provideHardwareResources() override
Provide hardware resources to the core.
Definition DigitalModuleV1_0.cpp:99
String getHWVersion() const override
Get the hardware version string.
Definition DigitalModuleV1_0.h:52
size_t getInterfaceCount() override
Get number of interfaces provided by this module.
Definition DigitalModuleV1_0.h:149
bool requestGPIOs() override
Request and configure GPIOs from the core.
Definition DigitalModuleV1_0.cpp:67
uint8_t setOutput(uint8_t output, bool state)
Set a single digital output.
Definition DigitalModuleV1_0.cpp:272
bool initialize() override
Initialize the module and its IC drivers.
Definition DigitalModuleV1_0.cpp:190
bool requestHardwareResources() override
Request hardware resources required by this module.
Definition DigitalModuleV1_0.cpp:109
uint8_t setOutputs(uint8_t outputs)
Set all digital outputs at once.
Definition DigitalModuleV1_0.cpp:255