CANTram Framework 1.0.1
Dieses Framework ermöglicht die Nutzung der CANTram Hardware, einer Mikrocontroller basierten mdoularen Steuerung.
Loading...
Searching...
No Matches
DigitalModuleV1_0.h
1#ifndef DIGITALMODULEV1_0_H
2#define DIGITALMODULEV1_0_H
3
4#include <Arduino.h>
5#include "CANTramModule.h"
6#include "ISO1H816G.h"
7#include "ISO1I813T.h"
8#include "Interface.h"
9#include "DigitalInput.h"
10#include "DigitalOutput.h"
11#include "OutputDefinition.h"
12#include "Debug.h"
13
14
15
16
17/* Steckerbelegung des Digitalmoduls V1.0
18J3
19PIN | Signal | Funktion
20---------------------------------------------------------
211 | I8 | Eingang
222 | I7 | Eingang
233 | I6 | Eingang
244 | I5 | Eingang
25
26J5
27PIN | Signal | Funktion
28---------------------------------------------------------
295 | I4 / Q1 | Eingang ODER Ausgang
306 | I3 / Q2 | Eingang ODER Ausgang
317 | I2 / Q3 | Eingang ODER Ausgang
328 | I1 / Q4 | Eingang ODER Ausgang
33
34J6
35PIN | Signal | Funktion
36---------------------------------------------------------
379 | Q5 | Ausgang
3810 | Q6 | Ausgang
3911 | Q7 | Ausgang
4012 | Q8 | Ausgang
41
42
43*/
44
46 public:
47
48 //Module information
49 static const String HW_TYPE;
50 String getHWType() const override { return HW_TYPE; }
51 static const String HW_VERSION;
52 String getHWVersion() const override { return HW_VERSION; }
53 static const String FW_VERSION;
54 String getFWVersion() const override { return FW_VERSION; }
55 static constexpr uint8_t GPIO_DEMAND = 2;
56 uint8_t getGPIODemand() const override { return GPIO_DEMAND; }
57 static constexpr uint8_t GPIO_SUPPLY = 0;
58 uint8_t getGPIOSupply() const override { return GPIO_SUPPLY; }
59
66 DigitalModuleV1_0(uint8_t outputMask = 0xF0);
67
75 bool attachModule(uint8_t slot, uint8_t gpioStart) override;
76
82 bool provideGPIOs() override;
83
90 bool requestGPIOs() override;
91
97 bool provideHardwareResources() override;
98
104 bool requestHardwareResources() override;
105
111 bool addInterfaces() override;
112
118 bool initialize() override;
119
126 void cycle(uint8_t* response) override;
127
134 void setWireBreakMask(uint8_t mask=0);
135
136 //Interfaces
142 Interface** getInterfaces() override { return _interfaces; }
143
149 size_t getInterfaceCount() override { return INTERFACE_COUNT; }
150
157 uint8_t setOutputs(uint8_t outputs);
158
166 uint8_t setOutput(uint8_t output, bool state);
167
173 uint8_t getInputs() const { return _inputStates; }
174
180 uint8_t getWireBreaks() const { return _wireBreaks; }
181
182 //Error codes
183 enum ERROR_CODES{
184 STATUS_OK = 0,
185 DEACTIVATED_CHANNEL = 11
186 };
187
188 private:
189 static constexpr size_t INTERFACE_COUNT = 12; // Number of interfaces in the array
190 ISO1I813T _Inputs;
191 ISO1H816G _Outputs;
192 OutputDefinition* CS_INPUTS; // Chip select pin for ISO1H816G
193 OutputDefinition* CS_OUTPUTS; // Chip select pin for ISO1I813T
194 const uint8_t OUTPUT_MASK; // Mask for valid outputs
195 uint8_t _outputStates = 0; // Current states of outputs
196 uint8_t _wireBreaks = 0;
197 uint8_t _inputStates = 0; // Current states of inputs
198 DigitalInput _digitalInputInterfaces[8]; // Array to hold 8 DigitalInput objects
199 DigitalOutput _digitalOutputInterfaces[8]; // Array to hold 8 DigitalOutput objects
200 Interface* _interfaces[INTERFACE_COUNT]; // representation of the physical interfaces clamps
201
202};
203#endif
204
205
206
207
208
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
Definition Interface.h:7