#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;