rc-gateway/gateway/include/Protocol_Doorbell.h

43 lines
1.0 KiB
C++

#pragma once
#include "Protocol.h"
#define BIT_LENGTH 40
#define BIT_LENGTH_3 BIT_LENGTH*3
#define TX_DELAY 620
// { 40, { 1, 15 }, { 1, 3 }, { 3, 1 }, false } // protocol 13 (Thomson Doorbell)
class Protocol_Doorbell : public Protocol {
public:
Protocol_Doorbell() : Protocol(13) {}
void fromJson(JsonObjectConst& rcSwitch, RCSwitch& rcDevice) override {
preamble();
rcDevice.setRepeatTransmit(7);
Protocol::fromJson(rcSwitch, rcDevice);
}
void toJson(const char* value, JsonDocument& jsonDoc) {
JsonObject rcSwitch = jsonDoc.createNestedObject("rcSwitch");
rcSwitch["protocol"] = no;
rcSwitch["value"] = value;
}
private:
void transmitBit(uint8_t value) {
digitalWrite(SEND_PIN, value);
delayMicroseconds(BIT_LENGTH);
digitalWrite(SEND_PIN, LOW);
}
void preamble() {
noInterrupts();
for (int i = 0; i < 370; i++) {
transmitBit(HIGH);
transmitBit(LOW);
}
interrupts();
}
} doorbell;