18 std::copy_n(
data.begin(), std::min(
data.size(), this->data_.size()), this->data_.begin());
22 std::copy_n(
data.begin(), std::min(
data.size(), this->data_.size()), this->data_.begin());
26 const uint8_t *
data()
const {
return this->
data_.data(); }
34 const char *
to_str(
char *buffer)
const {
48 template<
typename T> T
to()
const {
return T(*
this); }
53 uint8_t
get_value_(uint8_t idx, uint8_t mask = 255, uint8_t shift = 0)
const {
54 return (this->
data_[idx] >> shift) & mask;
56 void set_value_(uint8_t idx, uint8_t value, uint8_t mask = 255, uint8_t shift = 0) {
57 this->
data_[idx] &= ~(mask << shift);
58 this->
data_[idx] |= (value << shift);
75DECLARE_REMOTE_PROTOCOL(Midea)
78 TEMPLATABLE_VALUE(std::vector<uint8_t>, code)
MideaData(const std::vector< uint8_t > &data)
const char * to_str(char *buffer) const
Format to buffer, returns pointer to buffer.
std::array< uint8_t, 6 > data_
const uint8_t & operator[](size_t idx) const
static constexpr uint8_t OFFSET_CS
void set_value_(uint8_t idx, uint8_t value, uint8_t mask=255, uint8_t shift=0)
MideaData(std::initializer_list< uint8_t > data)
bool is_compliment(const MideaData &rhs) const
const uint8_t * data() const
MideaDataType type() const
uint8_t get_value_(uint8_t idx, uint8_t mask=255, uint8_t shift=0) const
uint8_t & operator[](size_t idx)
bool operator==(const MideaData &rhs) const
void set_mask_(uint8_t idx, bool state, uint8_t mask=255)
static constexpr size_t TO_STR_BUFFER_SIZE
Buffer size for to_str(): 6 bytes = "AA.BB.CC.DD.EE.FF\0".
void dump(const MideaData &data) override
void encode(RemoteTransmitData *dst, const MideaData &src) override
optional< MideaData > decode(RemoteReceiveData src) override
char * format_hex_pretty_to(char *buffer, size_t buffer_size, const uint8_t *data, size_t length, char separator)
Format byte array as uppercase hex to buffer (base implementation).
constexpr size_t format_hex_pretty_size(size_t byte_count)
Calculate buffer size needed for format_hex_pretty_to with separator: "XX:XX:...:XX\0".