11 namespace remote_base {
19 std::copy_n(data.begin(), std::min(data.size(), this->
data_.size()), this->
data_.begin());
23 std::copy_n(data.begin(), std::min(data.size(), this->
data_.size()), this->
data_.begin());
29 const uint8_t *
data()
const {
return this->
data_.data(); }
45 template<
typename T> T
to()
const {
return T(*
this); }
50 uint8_t
get_value_(uint8_t idx, uint8_t mask = 255, uint8_t shift = 0)
const {
51 return (this->
data_[idx] >> shift) & mask;
53 void set_value_(uint8_t idx, uint8_t value, uint8_t mask = 255, uint8_t shift = 0) {
54 this->
data_[idx] &= ~(mask << shift);
55 this->
data_[idx] |= (value << shift);
88 TEMPLATABLE_VALUE(std::vector<uint8_t>, code)
89 void set_code_static(std::vector<uint8_t> code) { code_static_ = std::move(code); }
90 void set_code_template(std::function<std::vector<uint8_t>(Ts...)> func) { this->code_func_ = func; }
94 if (!this->code_static_.empty()) {
104 std::function<std::vector<uint8_t>(Ts...)> code_func_{};
105 std::vector<uint8_t> code_static_{};
MideaDataType type() const
std::string format_hex_pretty(const uint8_t *data, size_t length)
Format the byte array data of length len in pretty-printed, human-readable hex.
void set_code(const std::vector< uint8_t > &code)
bool operator==(const MideaData &rhs) const
uint8_t & operator[](size_t idx)
bool is_compliment(const MideaData &rhs) const
void encode(RemoteTransmitData *dst, const MideaData &src) override
void set_value_(uint8_t idx, uint8_t value, uint8_t mask=255, uint8_t shift=0)
static const uint8_t OFFSET_CS
uint8_t get_value_(uint8_t idx, uint8_t mask=255, uint8_t shift=0) const
bool matches(RemoteReceiveData src) override
MideaData(std::initializer_list< uint8_t > data)
std::array< uint8_t, 6 > data_
const uint8_t & operator[](size_t idx) const
std::string to_string() const
optional< MideaData > decode(RemoteReceiveData src) override
void set_mask_(uint8_t idx, bool state, uint8_t mask=255)
const uint8_t * data() const
MideaData(const std::vector< uint8_t > &data)