#pragma once #include "writepin.h" #include #include #include class Item { public: static constexpr uint8_t HIGH = 2; static constexpr uint8_t LOW = 1; static constexpr uint8_t OFF = 0; private: static constexpr unsigned char _pinHighA = PD5; static constexpr unsigned char _pinLowA = PD4; static constexpr unsigned char _pinHighB = PD2; static constexpr unsigned char _pinLowB = PD3; static constexpr uint8_t SEND_COUNT = 2; uint8_t _address; protected: inline static void off(); static void sendBit(const bool bit); static void sendAddress(uint8_t address); uint16_t packetAddSpeed(); uint16_t packetAddDirection(); uint16_t packetAddFunction(const uint8_t function); uint16_t assemblePacket(); public: static void setOutput(const uint8_t state); Item(const uint8_t address); void sendRaw(const uint16_t data); static void sendRawAddr(const uint8_t address, const uint16_t data); void setAddress(const uint8_t address); uint8_t getAddress(); };