1#ifndef OUTPUTDEFINITION_H
2#define OUTPUTDEFINITION_H
38 isShift(isShift), pinOrBit(pinOrBit), adc(adc), pwm(pwm), inputOnly(inputOnly), provider(provider)
41 enum ConfigurationMode {
48 const String ConfigurationModeToString(ConfigurationMode mode) {
50 case MODE_INPUT:
return "INPUT";
51 case MODE_OUTPUT:
return "OUTPUT";
52 case MODE_PWM:
return "PWM";
53 case MODE_INPUT_PULLUP:
return "INPUT_PULLUP";
54 case MODE_NONE:
return "NONE";
55 default:
return "UNKNOWN";
59 const uint8_t pinOrBit;
63 ConfigurationMode mode = MODE_NONE;
65 OutputProvider* provider;
66 bool initialValue = LOW;
75 return String(
"OutputDefinition(isShift=") + (isShift ?
"true" :
"false") +
76 ", pinOrBit=" + String(pinOrBit) +
77 ", adc=" + (adc ?
"true" :
"false") +
78 ", pwm=" + (pwm ?
"true" :
"false") +
79 ", inputOnly=" + (inputOnly ?
"true" :
"false") +
")";
125 if(state == outputsEnabled){
128 outputsEnabled = state;
129 INFO_PRINTLN(
"[OutputProvider] Outputs enabled set to: " + String(state));
140 bool outputsEnabled =
false;
Logging and debug macro definitions for CANTramCore.
#define INFO_PRINTLN(x)
Print an info-level message with newline.
Definition Debug.h:137
Describes an available output (GPIO or shift register bit).
Definition OutputDefinition.h:24
String toString()
Create a human-readable string describing the OutputDefinition.
Definition OutputDefinition.h:74
OutputDefinition(bool isShift, uint8_t pinOrBit, bool adc, bool pwm, bool inputOnly, OutputProvider *provider)
Construct a new OutputDefinition instance.
Definition OutputDefinition.h:37
Abstract interface for providers that control outputs.
Definition OutputDefinition.h:89
virtual void enableOutputs(bool state=true)
Enable or disable all outputs managed by this provider.
Definition OutputDefinition.h:124
virtual bool setOutput(OutputDefinition *def, bool state)=0
Set the logical state of an output.
virtual bool configureOutput(OutputDefinition *def, OutputDefinition::ConfigurationMode mode)=0
Configure an output's direction/mode.
virtual void disableOutputs()
Disable all outputs managed by this provider.
Definition OutputDefinition.h:136
virtual bool getOutput(OutputDefinition *def)=0
Read the current logical state of an output.
Extended output provider interface for PWM-capable outputs.
Definition OutputDefinition.h:148
virtual bool registerPWMChannel(OutputDefinition *def)=0
Register/allocate a PWM channel for the given output.
virtual bool setPWM(OutputDefinition *def, uint16_t value)=0
Set a PWM value on the specified output.