initial digital input implementation

This commit is contained in:
Siwat Sirichai 2023-12-28 19:11:12 +07:00
parent 2fd37fe66d
commit 1e2eb1b0cf
4 changed files with 68 additions and 5 deletions

View file

@ -3,17 +3,24 @@
#include <IoTComponent.hpp>
#include <DigitalInputCard.hpp>
#define PUBLISH_ENABLE_TOPIC "publish_enable"
class DigitalInputIoT : public IoTComponent {
public:
bool begin(uint8_t card_id, DigitalInputCard *card, PubSubClient *mqtt, char *base_topic);
void handleMqttMessage(char *topic, char *payload);
void publishDigitalInputs();
void publishDigitalInput(uint8_t pin);
void setDigitalInputsPublishEnabled(bool enabled);
void handleValueChange(uint8_t pin, uint8_t value);
void registerValueChangeCallback(void (*callback)(uint8_t, uint8_t));
void registerChangeCallback(std::function<void(uint8_t, uint8_t)> callback);
void publishReport();
uint8_t getType();
private:
uint8_t card_id;
PubSubClient *mqtt;
char *base_topic;
std::function<void(uint8_t, uint8_t)> change_callback;
bool digital_inputs_publish_enabled = false;
DigitalInputCard *card;
};