7 #define ASSERT_PAYLOAD(x) \
8 if (payload_length != (x)) \
10 #define ENSURE_PAYLOAD(x)
15 if (payload_length > 0)
155 return busValueToRGB(payload, payload_length, datatype, value);
370 if (datatype.
subGroup == 1 && (charValue & 0x80))
375 value = (uint8_t)charValue;
401 if (numValue == 0xFF)
424 if (datatype.
index < 5)
429 else if (datatype.
index == 5)
492 switch (datatype.
index)
505 if (hours > 23 || minutes > 59 || seconds > 59)
509 memset(&tmp, 0,
sizeof(tmp));
511 tmp.tm_wday = weekDay;
512 tmp.tm_min = minutes;
513 tmp.tm_sec = seconds;
529 if (year > 99 || month < 1 || month > 12 || day < 1)
533 memset(&tmp, 0,
sizeof(tmp));
534 year += year >= 90 ? 1900 : 2000;
574 switch (datatype.
index)
580 for (
int n = 0, factor = 100000; n < 6; ++n, factor /= 10)
587 digits += digit * factor;
613 for (
int n = 0; n < 14; ++n)
617 if (!datatype.
subGroup && (value & 0x80))
621 value = (
const char*) payload;
636 switch (datatype.
index)
658 switch (datatype.
index)
680 switch (datatype.
index)
703 if (datatype.
index == 3)
711 switch (datatype.
index)
725 if ((month < 1 || month > 12 || day < 1))
728 if ((hours > 24 || minutes > 59 || seconds > 59))
732 memset(&tmp, 0,
sizeof(tmp));
733 tmp.tm_sec = seconds;
734 tmp.tm_min = minutes;
795 switch (datatype.
index)
835 switch (datatype.
index)
853 switch (datatype.
index)
875 switch (datatype.
index)
893 switch (datatype.
index)
916 ASSERT_PAYLOAD(datatype.
mainGroup == 231 ? 4 : 2);
942 switch (datatype.
index)
964 switch (datatype.
index)
982 switch (datatype.
index)
1023 if ((uint64_t)value > INT64_C(255) || (datatype.
subGroup == 1 && (uint64_t)value > INT64_C(127)))
1032 if ((int64_t)value < INT64_C(0))
1039 if ((
double)value > 100.0)
1042 unsigned8ToPayload(payload, payload_length, 0, round((
double)value * 255.0 / 100.0), 0xFF);
1048 if ((
double)value > 360.0)
1051 unsigned8ToPayload(payload, payload_length, 0, round((
double)value * 255.0 / 360.0), 0xFF);
1057 if ((int64_t)value > INT64_C(254))
1066 if ((int64_t)value > INT64_C(255))
1078 if ((int64_t)value < INT64_C(-128) || (int64_t)value > INT64_C(127))
1087 if (datatype.
index < 5)
1089 else if (datatype.
index == 5)
1091 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
1104 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(65535))
1113 struct tm tmp = value;
1114 time_t timeSinceEpoch = mktime(&tmp);
1116 if (timeSinceEpoch < INT64_C(0) || timeSinceEpoch > INT64_C(65535))
1125 if ((int64_t)value < INT64_C(-32768) || (int64_t)value > INT64_C(32767))
1130 if ((
double)value < -327.68 || (
double)value > 327.67)
1133 signed16ToPayload(payload, payload_length, 0, (int16_t)((
double)value * 100.0), 0xFFFF);
1143 struct tm tmp = value;
1144 time_t timeSinceEpoch = mktime(&tmp);
1146 if (timeSinceEpoch < INT64_C(-32768) || timeSinceEpoch > INT64_C(32767))
1155 double numValue = value;
1159 if (numValue > 670433.28)
1162 if (numValue < -671088.64)
1168 if (numValue < -273.0)
1183 if (numValue < -670760.0)
1200 if (numValue < -459.6)
1212 switch (datatype.
index)
1216 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
1226 struct tm tmp = value;
1242 struct tm tmp = value;
1244 if (tmp.tm_year < 1990 || tmp.tm_year > 2089)
1255 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(4294967295))
1264 if ((int64_t)value < INT64_C(-2147483648) || (int64_t)value > INT64_C(2147483647))
1273 if ((int64_t)value < INT64_C(-2147483648) || (int64_t)value > INT64_C(2147483647))
1282 double numValue = value;
1284 if (numValue < (-8388608.0 * pow(2, 255)) || numValue > (8388607.0 * pow(2, 255)))
1293 switch (datatype.
index)
1297 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(999999))
1302 for (
int n = 0, factor = 100000; n < 6; ++n, factor /= 10)
1303 bcdToPayload(payload, payload_length, n, ((uint64_t)value / factor) % 10);
1317 if ((uint64_t)value > INT64_C(15))
1320 bcdToPayload(payload, payload_length, 7, (uint64_t)value);
1333 const char* strValue = value;
1334 uint8_t val = strValue[0];
1336 for (
int n = 0; n < 14; n++)
1349 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1358 switch (datatype.
index)
1366 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1382 switch (datatype.
index)
1390 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1406 switch (datatype.
index)
1410 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1431 switch (datatype.
index)
1435 struct tm local = value;
1436 time_t time = mktime(&local);
1442 struct tm tmp = value;
1460 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
1514 signed64ToPayload(payload, payload_length, 0, (int64_t)value, UINT64_C(0xFFFFFFFFFFFFFFFF));
1520 switch (datatype.
index)
1524 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(3))
1536 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(255))
1572 switch (datatype.
index)
1576 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(65535))
1586 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(4294967295))
1603 switch (datatype.
index)
1607 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(31))
1617 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(31))
1626 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(63))
1642 switch (datatype.
index)
1646 uint32_t duration = value;
1648 if (duration > INT64_C(65535))
1658 if ((
double)value < 0.0 || (
double)value > 100.0)
1661 unsigned8ToPayload(payload, payload_length, 2, round((
double)value * 255.0 / 100.0), 0xff);
1671 switch (datatype.
index)
1675 uint32_t duration = value;
1677 if (duration > INT64_C(65535))
1687 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(254))
1700 int strl = strlen(value);
1707 ENSURE_PAYLOAD(datatype.
mainGroup == 231 ? 4 : 2);
1718 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(0xffffff))
1721 unsigned int rgb = (int64_t)value;
1730 switch (datatype.
index)
1734 uint32_t rgbw = (uint32_t)value;
1750 switch (datatype.
index)
1754 if ((
double)value < 0.0 || (
double)value > 100.0)
1758 unsigned8ToPayload(payload, payload_length, 0, round((
double)value * 255.0 / 100.0), 0xff);
1775 switch (datatype.
index)
1779 if ((int64_t)value < INT64_C(-2147483648) || (int64_t)value > INT64_C(2147483647))
1789 if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(254))
1812 int bit = payload[index / 8] & (1 << (7 - (index % 8)));
1813 return bit ? true :
false;
1817 return (uint8_t)payload[index];
1821 return (int8_t)payload[index];
1825 return ((((uint16_t)payload[index]) << 8) & 0xFF00) | (((uint16_t)payload[index + 1]) & 0x00FF);
1829 return ((((uint16_t)payload[index]) << 8) & 0xFF00) | (((uint16_t)payload[index + 1]) & 0x00FF);
1833 return ((((uint32_t)payload[index]) << 24) & 0xFF000000) |
1834 ((((uint32_t)payload[index + 1]) << 16) & 0x00FF0000) |
1835 ((((uint32_t)payload[index + 2]) << 8) & 0x0000FF00) |
1836 (((uint32_t)payload[index + 3]) & 0x000000FF);
1844 return ((((uint64_t)payload[index]) << 56) & 0xFF00000000000000) |
1845 ((((uint64_t)payload[index + 1]) << 48) & 0x00FF000000000000) |
1846 ((((uint64_t)payload[index + 2]) << 40) & 0x0000FF0000000000) |
1847 ((((uint64_t)payload[index + 3]) << 32) & 0x000000FF00000000) |
1848 ((((uint64_t)payload[index + 4]) << 24) & 0x00000000FF000000) |
1849 ((((uint64_t)payload[index + 5]) << 16) & 0x0000000000FF0000) |
1850 ((((uint64_t)payload[index + 6]) << 8) & 0x000000000000FF00) |
1851 (((uint64_t)payload[index + 7]) & 0x00000000000000FF);
1857 if (mantissa & 0x8000)
1858 return ((~mantissa & 0x07FF) + 1.0) * -0.01 * (1 << ((payload[index] >> 3) & 0x0F));
1860 return mantissa * 0.01 * (1 << ((payload[index] >> 3) & 0x0F));
1884 return ((((uint64_t)payload[index]) << 56) & UINT64_C(0xFF00000000000000)) |
1885 ((((uint64_t)payload[index + 1]) << 48) & UINT64_C(0x00FF000000000000)) |
1886 ((((uint64_t)payload[index + 2]) << 40) & UINT64_C(0x0000FF0000000000)) |
1887 ((((uint64_t)payload[index + 3]) << 32) & UINT64_C(0x000000FF00000000)) |
1888 ((((uint64_t)payload[index + 4]) << 24) & UINT64_C(0x00000000FF000000)) |
1889 ((((uint64_t)payload[index + 5]) << 16) & UINT64_C(0x0000000000FF0000)) |
1890 ((((uint64_t)payload[index + 6]) << 8) & UINT64_C(0x000000000000FF00)) |
1891 (((uint64_t)payload[index + 7]) & UINT64_C(0x00000000000000FF));
1896 return (uint8_t)(payload[index / 2] & 0x0F);
1898 return (uint8_t)((payload[index / 2] >> 4) & 0x0F);
1901 void bitToPayload(uint8_t* payload,
size_t payload_length,
int index,
bool value)
1903 ENSURE_PAYLOAD(index / 8 + 1);
1904 payload[index / 8] = (payload[index / 8] & ~(1 << (7 - (index % 8)))) | (value ? (1 << (7 - (index % 8))) : 0);
1908 ENSURE_PAYLOAD(index + 1);
1909 payload[index] = (payload[index] & ~mask) | (value & mask);
1911 void signed8ToPayload(uint8_t* payload,
size_t payload_length,
int index, int8_t value, uint8_t mask)
1913 ENSURE_PAYLOAD(index + 1);
1914 payload[index] = (payload[index] & ~mask) | (value & mask);
1918 ENSURE_PAYLOAD(index + 2);
1919 payload[index] = (payload[index] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1920 payload[index + 1] = (payload[index + 1] & ~mask) | (value & mask);
1922 void signed16ToPayload(uint8_t* payload,
size_t payload_length,
int index, int16_t value, uint16_t mask)
1924 ENSURE_PAYLOAD(index + 2);
1925 payload[index] = (payload[index] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1926 payload[index + 1] = (payload[index + 1] & ~mask) | (value & mask);
1930 ENSURE_PAYLOAD(index + 4);
1931 payload[index] = (payload[index] & (~mask >> 24)) | ((value >> 24) & (mask >> 24));
1932 payload[index + 1] = (payload[index + 1] & (~mask >> 16)) | ((value >> 16) & (mask >> 16));
1933 payload[index + 2] = (payload[index + 2] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1934 payload[index + 3] = (payload[index + 3] & ~mask) | (value & mask);
1936 void signed32ToPayload(uint8_t* payload,
size_t payload_length,
int index, int32_t value, uint32_t mask)
1938 ENSURE_PAYLOAD(index + 4);
1939 payload[index] = (payload[index] & (~mask >> 24)) | ((value >> 24) & (mask >> 24));
1940 payload[index + 1] = (payload[index + 1] & (~mask >> 16)) | ((value >> 16) & (mask >> 16));
1941 payload[index + 2] = (payload[index + 2] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1942 payload[index + 3] = (payload[index + 3] & ~mask) | (value & mask);
1945 void float16ToPayload(uint8_t* payload,
size_t payload_length,
int index,
double value, uint16_t mask)
1947 bool wasNegative =
false;
1956 unsigned short exponent = 0;
1959 exponent = ceil(log2(value) - 11.0);
1961 short mantissa = roundf(value / (1 << exponent));
1964 if (mantissa >= 0x800)
1967 mantissa = roundf(value / (1 << exponent));
1976 unsigned8ToPayload(payload, payload_length, index, exponent << 3, 0x78 & (mask >> 8));
1978 void float32ToPayload(uint8_t* payload,
size_t payload_length,
int index,
double value, uint32_t mask)
1988 void signed64ToPayload(uint8_t* payload,
size_t payload_length,
int index, int64_t value, uint64_t mask)
1990 ENSURE_PAYLOAD(index + 8);
1991 payload[index] = (payload[index] & (~mask >> 56)) | ((value >> 56) & (mask >> 56));
1992 payload[index + 1] = (payload[index + 1] & (~mask >> 48)) | ((value >> 48) & (mask >> 48));
1993 payload[index + 2] = (payload[index + 2] & (~mask >> 40)) | ((value >> 40) & (mask >> 40));
1994 payload[index + 3] = (payload[index + 3] & (~mask >> 32)) | ((value >> 32) & (mask >> 32));
1995 payload[index + 4] = (payload[index + 4] & (~mask >> 24)) | ((value >> 24) & (mask >> 24));
1996 payload[index + 5] = (payload[index + 5] & (~mask >> 16)) | ((value >> 16) & (mask >> 16));
1997 payload[index + 6] = (payload[index + 6] & (~mask >> 8)) | ((value >> 8) & (mask >> 8));
1998 payload[index + 7] = (payload[index + 7] & ~mask) | (value & mask);
2000 void bcdToPayload(uint8_t* payload,
size_t payload_length,
int index, uint8_t value)
2002 ENSURE_PAYLOAD(index / 2 + 1);
2005 payload[index / 2] = (payload[index / 2] & 0xF0) | (value & 0x0F);
2007 payload[index / 2] = (payload[index / 2] & 0x0F) | ((value << 4) & 0xF0);
bool valueToBusValueRGB(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueStepControl(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToUnicode(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueBinary(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
uint32_t unsigned32FromPayload(const uint8_t *payload, int index)
bool busValueToDate(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueScene(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueLongTimePeriod(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int32_t signed32FromPayload(const uint8_t *payload, int index)
bool valueToBusValueUnsigned16(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueActiveEnergy(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueScaling(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
double float64FromPayload(const uint8_t *payload, int index)
bool busValueToAlarmInfo(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToAccess(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToVersion(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToUnsigned32(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToUnsigned16(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToLongTimePeriod(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueTime(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToSigned16(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueRGBW(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToTimePeriod(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToBinaryControl(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
uint16_t unsigned16FromPayload(const uint8_t *payload, int index)
bool busValueToSigned32(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToRGB(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToBinary(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToDateTime(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToSceneInfo(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueUnicode(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueTimeDelta(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToSigned64(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToSceneConfig(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueDateTime(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToFlaggedScaling(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToSigned8(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueTariff(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
void float32ToPayload(uint8_t *payload, size_t payload_length, int index, double value, uint32_t mask)
bool busValueToStepControl(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueLocale(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueFloat16(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToScaling(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToSerialNumber(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
int64_t signed64FromPayload(const uint8_t *payload, int index)
bool busValueToActiveEnergy(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)
bool valueToBusValueFlaggedScaling(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueSceneControl(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueAlarmInfo(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
uint8_t bcdFromPayload(const uint8_t *payload, int index)
bool valueToBusValueSerialNumber(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
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)
bool valueToBusValueSigned8(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int16_t signed16FromPayload(const uint8_t *payload, int index)
bool busValueToFloat16(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToUnsigned8(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
float float32FromPayload(const uint8_t *payload, int index)
void bitToPayload(uint8_t *payload, size_t payload_length, int index, bool value)
bool valueToBusValueSceneConfig(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool bitFromPayload(const uint8_t *payload, int index)
bool busValueToTimeDelta(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
void unsigned32ToPayload(uint8_t *payload, size_t payload_length, int index, uint32_t value, uint32_t mask)
bool valueToBusValueSigned64(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)
bool busValueToRGBW(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueAccess(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueStatusAndMode(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueSigned16(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
int8_t signed8FromPayload(const uint8_t *payload, int index)
bool busValueToSceneControl(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueSceneInfo(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueString(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueFloat32(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToCharacter(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueSigned32(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToScene(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
uint64_t unsigned64FromPayload(const uint8_t *payload, int index)
bool busValueToString(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToLocale(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
void signed16ToPayload(uint8_t *payload, size_t payload_length, int index, int16_t value, uint16_t mask)
bool valueToBusValueBinaryControl(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueUnsigned8(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueTimePeriod(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool 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.
void signed32ToPayload(uint8_t *payload, size_t payload_length, int index, int32_t value, uint32_t mask)
bool 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.
bool busValueToStatusAndMode(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool valueToBusValueUnsigned32(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool busValueToFloat32(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
void unsigned16ToPayload(uint8_t *payload, size_t payload_length, int index, uint16_t value, uint16_t mask)
bool valueToBusValueCharacter(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueDate(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
bool valueToBusValueVersion(const KNXValue &value, uint8_t *payload, size_t payload_length, const Dpt &datatype)
void signed8ToPayload(uint8_t *payload, size_t payload_length, int index, int8_t value, uint8_t mask)
bool busValueToTariff(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)
bool busValueToTime(const uint8_t *payload, size_t payload_length, const Dpt &datatype, KNXValue &value)