mirror of
https://github.com/thelsing/knx.git
synced 2025-05-21 01:15:16 +02:00
handle DPT2 and DPT3 as uint8_t in code
This commit is contained in:
parent
d5b9ffa0a9
commit
e647105236
@ -16,10 +16,9 @@ int KNX_Decode_Value(uint8_t* payload, size_t payload_length, const Dpt& datatyp
|
|||||||
{
|
{
|
||||||
// DPT 1.* - Binary
|
// DPT 1.* - Binary
|
||||||
if (datatype.mainGroup == 1 && datatype.subGroup >= 1 && datatype.subGroup <= 23 && datatype.subGroup != 20 && !datatype.index)
|
if (datatype.mainGroup == 1 && datatype.subGroup >= 1 && datatype.subGroup <= 23 && datatype.subGroup != 20 && !datatype.index)
|
||||||
{
|
|
||||||
return busValueToBinary(payload, payload_length, datatype, value);
|
return busValueToBinary(payload, payload_length, datatype, value);
|
||||||
} // DPT 2.* - Binary Control
|
|
||||||
|
|
||||||
|
// DPT 2.* - Binary Control
|
||||||
if (datatype.mainGroup == 2 && datatype.subGroup >= 1 && datatype.subGroup <= 12 && datatype.index <= 1)
|
if (datatype.mainGroup == 2 && datatype.subGroup >= 1 && datatype.subGroup <= 12 && datatype.index <= 1)
|
||||||
return busValueToBinaryControl(payload, payload_length, datatype, value);
|
return busValueToBinaryControl(payload, payload_length, datatype, value);
|
||||||
|
|
||||||
@ -345,40 +344,15 @@ int busValueToBinary(const uint8_t* payload, size_t payload_length, const Dpt& d
|
|||||||
int busValueToBinaryControl(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)
|
||||||
{
|
{
|
||||||
ASSERT_PAYLOAD(1);
|
ASSERT_PAYLOAD(1);
|
||||||
|
value = (uint8_t)(unsigned8FromPayload(payload, 0) & 0x03);
|
||||||
switch (datatype.index)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
value = bitFromPayload(payload, 6);
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 1:
|
|
||||||
value = bitFromPayload(payload, 7);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int busValueToStepControl(const uint8_t* payload, size_t payload_length, const Dpt& datatype, KNXValue& value)
|
int busValueToStepControl(const uint8_t* payload, size_t payload_length, const Dpt& datatype, KNXValue& value)
|
||||||
{
|
{
|
||||||
ASSERT_PAYLOAD(1);
|
ASSERT_PAYLOAD(1);
|
||||||
|
value = (uint8_t)(unsigned8FromPayload(payload, 0) & 0x0F);
|
||||||
switch (datatype.index)
|
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
value = bitFromPayload(payload, 4);
|
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
const unsigned char stepCode = unsigned8FromPayload(payload, 0) & 0x07;
|
|
||||||
value = stepCode;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
int busValueToCharacter(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)
|
||||||
{
|
{
|
||||||
@ -1023,44 +997,13 @@ int valueToBusValueBinary(const KNXValue& value, uint8_t* payload, size_t payloa
|
|||||||
|
|
||||||
int valueToBusValueBinaryControl(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)
|
||||||
{
|
{
|
||||||
switch (datatype.index)
|
unsigned8ToPayload(payload, payload_length, 0, (uint64_t)value, 0x03);
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
bitToPayload(payload, payload_length, 6, value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
bitToPayload(payload, payload_length, 7, value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int valueToBusValueStepControl(const KNXValue& value, uint8_t* payload, size_t payload_length, const Dpt& datatype)
|
int valueToBusValueStepControl(const KNXValue& value, uint8_t* payload, size_t payload_length, const Dpt& datatype)
|
||||||
{
|
{
|
||||||
switch (datatype.index)
|
unsigned8ToPayload(payload, payload_length, 0, (uint64_t)value, 0x0F);
|
||||||
{
|
|
||||||
case 0:
|
|
||||||
bitToPayload(payload, payload_length, 4, value);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(7))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
unsigned8ToPayload(payload, payload_length, 0, (uint64_t)value, 0x07);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user