7 #define ASSERT_PAYLOAD(x) \
8 if (payload_length != (x)) \
10 #define ENSURE_PAYLOAD(x)
15 if (payload_length > 0)
116 return busValueToRGB(payload, payload_length, datatype, value);
264 switch (datatype.
index)
280 switch (datatype.
index)
299 if (datatype.
subGroup == 1 && (charValue & 0x80))
303 value = (uint8_t)charValue;
327 if (numValue == 0xFF)
348 if (datatype.
index < 5)
353 else if (datatype.
index == 5)
411 switch (datatype.
index)
423 if (hours > 23 || minutes > 59 || seconds > 59)
427 tmp.tm_wday = weekDay;
428 tmp.tm_min = minutes;
429 tmp.tm_sec = seconds;
445 if (year > 99 || month < 1 || month > 12 || day < 1)
449 year += year >= 90 ? 1900 : 2000;
488 switch (datatype.
index)
493 for (
int n = 0, factor = 100000; n < 6; ++n, factor /= 10)
498 digits += digit * factor;
522 for (
int n = 0; n < 14; ++n)
525 if (!datatype.
subGroup && (strValue[n] & 0x80))
542 switch (datatype.
index)
562 switch (datatype.
index)
582 switch (datatype.
index)
603 if (datatype.
index == 3)
611 switch (datatype.
index)
625 if ((month < 1 || month > 12 || day < 1))
627 if ((hours > 24 || minutes > 59 || seconds > 59))
631 tmp.tm_sec = seconds;
632 tmp.tm_min = minutes;
688 switch (datatype.
index)
721 switch (datatype.
index)
736 switch (datatype.
index)
755 switch (datatype.
index)
771 switch (datatype.
index)
814 switch (datatype.
index) {
831 switch (datatype.
index)
846 switch (datatype.
index)
873 switch (datatype.
index)
890 switch (datatype.
index)
897 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
911 if ((uint64_t)value > INT64_C(255) || (datatype.
subGroup == 1 && (uint64_t)value > INT64_C(127)))
919 if ((int64_t)value < INT64_C(0))
926 if ((
double)value > 100.0)
928 unsigned8ToPayload(payload, payload_length, 0, round((
double)value * 255.0 / 100.0), 0xFF);
933 if ((
double)value > 360.0)
935 unsigned8ToPayload(payload, payload_length, 0, round((
double)value * 255.0 / 360.0), 0xFF);
940 if ((int64_t)value > INT64_C(254))
947 if ((int64_t)value > INT64_C(255))
958 if ((int64_t)value < INT64_C(-128) || (int64_t)value > INT64_C(127))
967 if (datatype.
index < 5)
969 else if (datatype.
index == 5)
971 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
983 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(65535))
992 struct tm tmp = value;
993 time_t timeSinceEpoch = mktime(&tmp);
995 if (timeSinceEpoch < INT64_C(0) || timeSinceEpoch > INT64_C(65535))
1004 if ((int64_t)value < INT64_C(-32768) || (int64_t)value > INT64_C(32767))
1009 if ((
double)value < -327.68 || (
double)value > 327.67)
1011 signed16ToPayload(payload, payload_length, 0, (int16_t)((
double)value * 100.0), 0xFFFF);
1021 struct tm tmp = value;
1022 time_t timeSinceEpoch = mktime(&tmp);
1024 if (timeSinceEpoch < INT64_C(-32768) || timeSinceEpoch > INT64_C(32767))
1033 double numValue = value;
1037 if (numValue > 670433.28)
1040 if (numValue < -671088.64)
1046 if (numValue < -273.0)
1059 if (numValue < -670760.0)
1072 if (numValue < -459.6)
1083 switch (datatype.
index)
1087 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
1095 struct tm tmp = value;
1110 struct tm tmp = value;
1111 if (tmp.tm_year < 1990 || tmp.tm_year > 2089)
1122 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(4294967295))
1131 if ((int64_t)value < INT64_C(-2147483648) || (int64_t)value > INT64_C(2147483647))
1140 if ((int64_t)value < INT64_C(-2147483648) || (int64_t)value > INT64_C(2147483647))
1149 double numValue = value;
1150 if (numValue < (-8388608.0 * pow(2, 255)) || numValue > (8388607.0 * pow(2, 255)))
1159 switch (datatype.
index)
1163 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(999999))
1166 for (
int n = 0, factor = 100000; n < 6; ++n, factor /= 10)
1167 bcdToPayload(payload, payload_length, n, ((uint64_t)value / factor) % 10);
1178 if ((uint64_t)value > INT64_C(15))
1180 bcdToPayload(payload, payload_length, 7, (uint64_t)value);
1192 const char* strValue = value;
1193 uint8_t val = strValue[0];
1194 for (
int n = 0; n < 14; n++) {
1195 if (val) val = strValue[n];
1203 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1212 switch (datatype.
index)
1219 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1233 switch (datatype.
index)
1240 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1254 switch (datatype.
index)
1258 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1276 switch (datatype.
index)
1280 struct tm local = value;
1281 time_t time = mktime(&local);
1287 struct tm tmp = value;
1303 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
1351 signed64ToPayload(payload, payload_length, 0, (int64_t)value, UINT64_C(0xFFFFFFFFFFFFFFFF));
1357 switch (datatype.
index)
1361 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(3))
1371 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(255))
1403 switch (datatype.
index)
1407 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(65535))
1415 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(4294967295))
1430 switch (datatype.
index)
1434 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(31))
1442 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(31))
1449 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1463 switch (datatype.
index)
1467 uint32_t duration = value;
1469 if (duration > INT64_C(65535))
1478 if ((
double)value < 0.0 || (
double)value > 100.0)
1480 unsigned8ToPayload(payload, payload_length, 2, round((
double)value * 255.0 / 100.0), 0xff);
1490 switch (datatype.
index)
1494 uint32_t duration = value;
1496 if (duration > INT64_C(65535))
1505 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(254))
1517 int strl = strlen(value);
1534 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(16777215))
1537 unsigned int rgb = (int64_t)value;
1546 switch(datatype.
index)
1550 uint32_t rgbw = (uint32_t)value;
1563 switch (datatype.
index)
1567 if ((
double)value < 0.0 || (
double)value > 100.0)
1570 unsigned8ToPayload(payload, payload_length, 0, round((
double)value * 255.0 / 100.0), 0xff);
1585 switch (datatype.
index)
1589 if ((int64_t)value < INT64_C(-2147483648) || (int64_t)value > INT64_C(2147483647))
1597 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(254))
1617 int bit = payload[index / 8] & (1 << (7 - (index % 8)));
1618 return bit ? true :
false;
1622 return (uint8_t)payload[index];
1626 return (int8_t)payload[index];
1630 return ((((uint16_t)payload[index]) << 8) & 0xFF00) | (((uint16_t)payload[index + 1]) & 0x00FF);
1634 return ((((uint16_t)payload[index]) << 8) & 0xFF00) | (((uint16_t)payload[index + 1]) & 0x00FF);
1638 return ((((uint32_t)payload[index]) << 24) & 0xFF000000) |
1639 ((((uint32_t)payload[index + 1]) << 16) & 0x00FF0000) |
1640 ((((uint32_t)payload[index + 2]) << 8) & 0x0000FF00) |
1641 (((uint32_t)payload[index + 3]) & 0x000000FF);
1649 return ((((uint64_t)payload[index]) << 56) & 0xFF00000000000000) |
1650 ((((uint64_t)payload[index + 1]) << 48) & 0x00FF000000000000) |
1651 ((((uint64_t)payload[index + 2]) << 40) & 0x0000FF0000000000) |
1652 ((((uint64_t)payload[index + 3]) << 32) & 0x000000FF00000000) |
1653 ((((uint64_t)payload[index + 4]) << 24) & 0x00000000FF000000) |
1654 ((((uint64_t)payload[index + 5]) << 16) & 0x0000000000FF0000) |
1655 ((((uint64_t)payload[index + 6]) << 8) & 0x000000000000FF00) |
1656 (((uint64_t)payload[index + 7]) & 0x00000000000000FF);
1661 if (mantissa & 0x8000)
1662 return ((~mantissa & 0x07FF) + 1.0) * -0.01 * (1 << ((payload[index] >> 3) & 0x0F));
1664 return mantissa * 0.01 * (1 << ((payload[index] >> 3) & 0x0F));
1668 union {
float f; uint32_t i; } area;
1674 union {
double f; uint64_t i; } area;
1680 return ((((uint64_t)payload[index]) << 56) & UINT64_C(0xFF00000000000000)) |
1681 ((((uint64_t)payload[index + 1]) << 48) & UINT64_C(0x00FF000000000000)) |
1682 ((((uint64_t)payload[index + 2]) << 40) & UINT64_C(0x0000FF0000000000)) |
1683 ((((uint64_t)payload[index + 3]) << 32) & UINT64_C(0x000000FF00000000)) |
1684 ((((uint64_t)payload[index + 4]) << 24) & UINT64_C(0x00000000FF000000)) |
1685 ((((uint64_t)payload[index + 5]) << 16) & UINT64_C(0x0000000000FF0000)) |
1686 ((((uint64_t)payload[index + 6]) << 8) & UINT64_C(0x000000000000FF00)) |
1687 (((uint64_t)payload[index + 7]) & UINT64_C(0x00000000000000FF));
1692 return (uint8_t)(payload[index / 2] & 0x0F);
1693 return (uint8_t)((payload[index / 2] >> 4) & 0x0F);
1696 void bitToPayload(uint8_t* payload,
size_t payload_length,
int index,
bool value)
1699 payload[index / 8] = (payload[index / 8] & ~(1 << (7 - (index % 8)))) | (value ? (1 << (7 - (index % 8))) : 0);
1704 payload[index] = (payload[index] & ~mask) | (value & mask);
1706 void signed8ToPayload(uint8_t* payload,
size_t payload_length,
int index, int8_t value, uint8_t mask)
1709 payload[index] = (payload[index] & ~mask) | (value & mask);
1714 payload[index] = (payload[index] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1715 payload[index + 1] = (payload[index + 1] & ~mask) | (value & mask);
1717 void signed16ToPayload(uint8_t* payload,
size_t payload_length,
int index, int16_t value, uint16_t mask)
1720 payload[index] = (payload[index] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1721 payload[index + 1] = (payload[index + 1] & ~mask) | (value & mask);
1726 payload[index] = (payload[index] & (~mask >> 24)) | ((value >> 24) & (mask >> 24));
1727 payload[index + 1] = (payload[index + 1] & (~mask >> 16)) | ((value >> 16) & (mask >> 16));
1728 payload[index + 2] = (payload[index + 2] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1729 payload[index + 3] = (payload[index + 3] & ~mask) | (value & mask);
1731 void signed32ToPayload(uint8_t* payload,
size_t payload_length,
int index, int32_t value, uint32_t mask)
1734 payload[index] = (payload[index] & (~mask >> 24)) | ((value >> 24) & (mask >> 24));
1735 payload[index + 1] = (payload[index + 1] & (~mask >> 16)) | ((value >> 16) & (mask >> 16));
1736 payload[index + 2] = (payload[index + 2] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1737 payload[index + 3] = (payload[index + 3] & ~mask) | (value & mask);
1740 void float16ToPayload(uint8_t* payload,
size_t payload_length,
int index,
double value, uint16_t mask)
1742 bool wasNegative =
false;
1750 unsigned short exponent = 0;
1753 exponent = ceil(log2(value) - 11.0);
1755 short mantissa = roundf(value / (1 << exponent));
1757 if (mantissa >= 0x800)
1760 mantissa = roundf(value / (1 << exponent));
1769 unsigned8ToPayload(payload, payload_length, index, exponent << 3, 0x78 & (mask >> 8));
1771 void float32ToPayload(uint8_t* payload,
size_t payload_length,
int index,
double value, uint32_t mask)
1773 union {
float f; uint32_t i; } num;
1777 void signed64ToPayload(uint8_t* payload,
size_t payload_length,
int index, int64_t value, uint64_t mask)
1780 payload[index] = (payload[index] & (~mask >> 56)) | ((value >> 56) & (mask >> 56));
1781 payload[index + 1] = (payload[index + 1] & (~mask >> 48)) | ((value >> 48) & (mask >> 48));
1782 payload[index + 2] = (payload[index + 2] & (~mask >> 40)) | ((value >> 40) & (mask >> 40));
1783 payload[index + 3] = (payload[index + 3] & (~mask >> 32)) | ((value >> 32) & (mask >> 32));
1784 payload[index + 4] = (payload[index + 4] & (~mask >> 24)) | ((value >> 24) & (mask >> 24));
1785 payload[index + 5] = (payload[index + 5] & (~mask >> 16)) | ((value >> 16) & (mask >> 16));
1786 payload[index + 6] = (payload[index + 6] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1787 payload[index + 7] = (payload[index + 7] & ~mask) | (value & mask);
1789 void bcdToPayload(uint8_t* payload,
size_t payload_length,
int index, uint8_t value)
1793 payload[index / 2] = (payload[index / 2] & 0xF0) | (value & 0x0F);
1795 payload[index / 2] = (payload[index / 2] & 0x0F) | ((value << 4) & 0xF0);
int valueToBusValueDate(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
uint32_t unsigned32FromPayload(const uint8_t *payload, int index)
int busValueToLongTimePeriod(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToDate(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToLocale(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToBinaryControl(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToVersion(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToSceneConfig(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToTime(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToDateTime(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueSceneControl(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueSerialNumber(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToSerialNumber(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueStatusAndMode(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int32_t signed32FromPayload(const uint8_t *payload, int index)
int busValueToTimePeriod(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToBinary(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToAlarmInfo(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueTimeDelta(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueRGBW(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToFloat16(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
double float64FromPayload(const uint8_t *payload, int index)
int busValueToScene(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToSigned64(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueTimePeriod(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueString(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToSigned16(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToStatusAndMode(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToSceneInfo(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToSigned32(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueSceneInfo(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToFlaggedScaling(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
uint16_t unsigned16FromPayload(const uint8_t *payload, int index)
int valueToBusValueTime(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToSigned8(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToUnsigned16(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int KNX_Decode_Value(uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
Converts the KNX Payload given by the specific DPT and puts the value in the KNXValue struc.
int valueToBusValueRGB(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueFlaggedScaling(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToActiveEnergy(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToTimeDelta(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueUnsigned8(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueSigned32(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToAccess(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
void float32ToPayload(uint8_t *payload, size_t payload_length, int index, double value, uint32_t mask)
int valueToBusValueAccess(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueLocale(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
#define ASSERT_PAYLOAD(x)
int KNX_Encode_Value(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
Converts the KNXValue struct to the KNX Payload as the specific DPT.
int64_t signed64FromPayload(const uint8_t *payload, int index)
int busValueToStepControl(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
uint8_t unsigned8FromPayload(const uint8_t *payload, int index)
void signed64ToPayload(uint8_t *payload, size_t payload_length, int index, int64_t value, uint64_t mask)
uint8_t bcdFromPayload(const uint8_t *payload, int index)
int busValueToScaling(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueUnsigned32(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToSceneControl(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
void unsigned8ToPayload(uint8_t *payload, size_t payload_length, int index, uint8_t value, uint8_t mask)
double float16FromPayload(const uint8_t *payload, int index)
int valueToBusValueScene(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueSigned8(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int16_t signed16FromPayload(const uint8_t *payload, int index)
float float32FromPayload(const uint8_t *payload, int index)
void bitToPayload(uint8_t *payload, size_t payload_length, int index, bool value)
int valueToBusValueLongTimePeriod(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToFloat32(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueUnicode(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool bitFromPayload(const uint8_t *payload, int index)
void unsigned32ToPayload(uint8_t *payload, size_t payload_length, int index, uint32_t value, uint32_t mask)
int valueToBusValueCharacter(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueUnsigned16(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
void float16ToPayload(uint8_t *payload, size_t payload_length, int index, double value, uint16_t mask)
void bcdToPayload(uint8_t *payload, size_t payload_length, int index, uint8_t value)
int valueToBusValueTariff(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToRGB(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
#define ENSURE_PAYLOAD(x)
int valueToBusValueFloat16(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueBinaryControl(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int8_t signed8FromPayload(const uint8_t *payload, int index)
int valueToBusValueVersion(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueActiveEnergy(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int valueToBusValueSigned64(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
uint64_t unsigned64FromPayload(const uint8_t *payload, int index)
int valueToBusValueStepControl(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
void signed16ToPayload(uint8_t *payload, size_t payload_length, int index, int16_t value, uint16_t mask)
int valueToBusValueAlarmInfo(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToUnsigned32(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
void signed32ToPayload(uint8_t *payload, size_t payload_length, int index, int32_t value, uint32_t mask)
int valueToBusValueFloat32(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToUnsigned8(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueSigned16(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToUnicode(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueDateTime(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
void unsigned16ToPayload(uint8_t *payload, size_t payload_length, int index, uint16_t value, uint16_t mask)
int valueToBusValueScaling(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToTariff(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueBinary(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToString(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int busValueToCharacter(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int valueToBusValueSceneConfig(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int busValueToRGBW(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
void signed8ToPayload(uint8_t *payload, size_t payload_length, int index, int8_t value, uint8_t mask)