Files
dbc/core/signal_layout.h
2026-10-13 08:17:49 -04:00

20 lines
700 B
C++

// SPDX-License-Identifier: MIT
#ifndef SIGNAL_LAYOUT_H
#define SIGNAL_LAYOUT_H
#include <cstdint>
/** Linear coordinate in the signal's bit order, widened before arithmetic. */
inline std::uint64_t SignalStartCoordinate(std::uint32_t startBit, bool littleEndian) {
return littleEndian ? std::uint64_t(startBit)
: std::uint64_t(startBit / 8U) * 8U + 7U - startBit % 8U;
}
inline bool IsValidSignalLayout(std::uint32_t startBit, std::uint32_t length,
bool littleEndian, std::uint8_t dlc) {
return length >= 1U && length <= 64U &&
SignalStartCoordinate(startBit, littleEndian) + length <= std::uint64_t(dlc) * 8U;
}
#endif