ESPHome 2025.5.0
Loading...
Searching...
No Matches
datatypes.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4
6
7namespace esphome {
8
9namespace internal {
10
12template<typename T> class BigEndianLayout {
13 public:
14 constexpr14 operator T() { return convert_big_endian(val_); }
15
16 private:
17 T val_;
18} __attribute__((packed));
19
21template<typename T> class LittleEndianLayout {
22 public:
23 constexpr14 operator T() { return convert_little_endian(val_); }
24
25 private:
26 T val_;
27} __attribute__((packed));
28
29} // namespace internal
30
32struct uint24_t { // NOLINT(readability-identifier-naming)
33 operator uint32_t() { return val; }
34 uint32_t val : 24;
35} __attribute__((packed));
36
38struct int24_t { // NOLINT(readability-identifier-naming)
39 operator int32_t() { return val; }
40 int32_t val : 24;
41} __attribute__((packed));
42
43// Integer types in big or little endian data layout.
60
61} // namespace esphome
Wrapper class for memory using big endian data layout, transparently converting it to native order.
Definition datatypes.h:12
Wrapper class for memory using big endian data layout, transparently converting it to native order.
Definition datatypes.h:21
struct @67::@68 __attribute__
Providing packet encoding functions for exchanging data with a remote host.
Definition a01nyub.cpp:7
constexpr14 T convert_little_endian(T val)
Convert a value between host byte order and little endian (least significant byte first) order.
Definition helpers.h:257
constexpr14 T convert_big_endian(T val)
Convert a value between host byte order and big endian (most significant byte first) order.
Definition helpers.h:248
24-bit signed integer type, transparently converting to 32-bit.
Definition datatypes.h:38
24-bit unsigned integer type, transparently converting to 32-bit.
Definition datatypes.h:32