6#include <rusefi/scaled_channel.h>
16#if defined(EFI_UNIT_TEST) && EFI_UNIT_TEST
17#define LOG_FIELD_CONSTNESS_SPECIFIER_METHODS constexpr
18#define LOG_FIELD_CONSTNESS_SPECIFIER_STORAGE const
20#define LOG_FIELD_CONSTNESS_SPECIFIER_METHODS consteval
21#define LOG_FIELD_CONSTNESS_SPECIFIER_STORAGE const constinit
30 template <
typename TValue,
int TMult,
int TDiv>
31 LOG_FIELD_CONSTNESS_SPECIFIER_METHODS
Field(
const scaled_channel<TValue, TMult, TDiv>& toRead,
32 const char* name,
const char* units, int8_t digits,
const char* category =
"none")
34 ,
m_addr(toRead.getFirstByteAddr())
35 ,
m_type_id(static_cast<std::underlying_type_t<Types::
Field::Scalar>>(Types::
Field::resolveBuiltInNumberType<TValue>()))
37 ,
m_size(Types::
Field::sizeForType<Types::
Field::resolveBuiltInNumberType<TValue>()>())
48 template <
typename TValue,
typename =
typename std::enable_if<std::is_arithmetic_v<TValue>>::type>
49 LOG_FIELD_CONSTNESS_SPECIFIER_METHODS
Field(TValue& toRead,
50 const char* name,
const char* units, int8_t digits,
const char* category =
"none")
53 ,
m_type_id(static_cast<std::underlying_type_t<Types::
Field::Scalar>>(Types::
Field::resolveBuiltInNumberType<TValue>()))
55 ,
m_size(Types::
Field::sizeForType<Types::
Field::resolveBuiltInNumberType<TValue>()>())
66 template <
typename TValue>
67 LOG_FIELD_CONSTNESS_SPECIFIER_METHODS
Field(
69 const uint32_t bitsBlockOffset,
70 const uint8_t bitNumber,
73 const char* category =
"none"
76 ,
m_type_id(static_cast<std::underlying_type_t<Types::
Field::Scalar>>(Types::
Field::Scalar::U08))
121 size_t lengthAfterCategory = 34 - categoryLength;
123 memset(&
buffer[55] + categoryLength, 0, lengthAfterCategory);
125 memset(&
buffer[55], 0, 34);
139 const char*
const byteWithBitAddr = bitsBlockAddr +
m_bitNumber / 8;
140 unsigned char byteWithBit = 0;
143 buffer[0] =
static_cast<char>(
static_cast<bool>(byteWithBit & (1 << bitNumberInByte)));
154 const char* src2 =
reinterpret_cast<const char*
>(src);
155 char* dest2 =
reinterpret_cast<char*
>(dest);
156 for (
size_t i = 0; i <
size; i++) {
158 dest2[i] = src2[
size - 1 - i + (uint64_t)
offset];
constexpr const void * getAddr() const
LOG_FIELD_CONSTNESS_SPECIFIER_METHODS Field(const scaled_channel< TValue, TMult, TDiv > &toRead, const char *name, const char *units, int8_t digits, const char *category="none")
LOG_FIELD_CONSTNESS_SPECIFIER_METHODS Field(TValue &toRead, const uint32_t bitsBlockOffset, const uint8_t bitNumber, const char *name, const char *units, const char *category="none")
size_t writeHeader(Writer &outBuffer) const
const char *const m_category
const char *const m_units
static void copyFloat(char *buffer, float value)
size_t writeData(char *buffer, void *offset) const
const uint32_t m_bitsBlockOffset
LOG_FIELD_CONSTNESS_SPECIFIER_METHODS Field(TValue &toRead, const char *name, const char *units, int8_t digits, const char *category="none")
const uint8_t m_bitNumber
constexpr size_t getSize() const
static void memcpy_swapend(void *dest, const void *src, size_t const size, void *offset)
constexpr size_t DescriptorSize
virtual size_t write(const char *buffer, size_t count)=0
static BigBufferHandle buffer