update pybind11, reimplement dpt7

This commit is contained in:
Thomas Kunze
2024-09-14 19:38:30 +02:00
parent 6dc7f18f37
commit e948562ba0
130 changed files with 15758 additions and 24212 deletions

View File

@@ -50,6 +50,8 @@ set(SOURCES
./knx/group_object/dpt/dpt5.h
./knx/group_object/dpt/dpt6.cpp
./knx/group_object/dpt/dpt6.h
./knx/group_object/dpt/dpt7.cpp
./knx/group_object/dpt/dpt7.h
./knx/group_object/dpt/dpt9.cpp
./knx/group_object/dpt/dpt9.h
./knx/group_object/dpt/dptconvert.cpp

View File

@@ -3,17 +3,6 @@
#include "../group_object.h"
namespace Knx
{
#define DPT_Value_2_Ucount Dpt(7, 1)
#define DPT_TimePeriodMsec Dpt(7, 2)
#define DPT_TimePeriod10MSec Dpt(7, 3)
#define DPT_TimePeriod100MSec Dpt(7, 4)
#define DPT_TimePeriodSec Dpt(7, 5)
#define DPT_TimePeriodMin Dpt(7, 6)
#define DPT_TimePeriodHrs Dpt(7, 7)
#define DPT_PropDataType Dpt(7, 10)
#define DPT_Length_mm Dpt(7, 11)
#define DPT_UElCurrentmA Dpt(7, 12)
#define DPT_Brightness Dpt(7, 13)
#define DPT_Value_2_Count Dpt(8, 1)
#define DPT_DeltaTimeMsec Dpt(8, 2)
#define DPT_DeltaTime10MSec Dpt(8, 3)

View File

@@ -18,14 +18,6 @@ namespace Knx
{
if (payload_length > 0)
{
// DPT 7.001/7.010/7.011/7.012/7.013/7.600 - Unsigned 16 Bit Integer
if (datatype.mainGroup == 7 && (datatype.subGroup == 1 || (datatype.subGroup >= 10 && datatype.subGroup <= 13) || (datatype.subGroup == 600)) && !datatype.index)
return busValueToUnsigned16(payload, payload_length, datatype, value);
// DPT 7.002-DPT 7.007 - Time Period
if (datatype.mainGroup == 7 && datatype.subGroup >= 2 && datatype.subGroup <= 7 && !datatype.index)
return busValueToTimePeriod(payload, payload_length, datatype, value);
// DPT 8.001/8.010/8.011 - Signed 16 Bit Integer
if (datatype.mainGroup == 8 && (datatype.subGroup == 1 || datatype.subGroup == 10 || datatype.subGroup == 11) && !datatype.index)
return busValueToSigned16(payload, payload_length, datatype, value);
@@ -148,14 +140,6 @@ namespace Knx
int KNX_Encode_Value(const KNXValue& value, uint8_t* payload, size_t payload_length, const Dpt& datatype)
{
// DPT 7.001/7.010/7.011/7.012/7.013/7.600 - Unsigned 16 Bit Integer
if (datatype.mainGroup == 7 && (datatype.subGroup == 1 || (datatype.subGroup >= 10 && datatype.subGroup <= 13) || datatype.subGroup == 600) && !datatype.index)
return valueToBusValueUnsigned16(value, payload, payload_length, datatype);
// DPT 7.002-DPT 7.007 - Time Period
if (datatype.mainGroup == 7 && datatype.subGroup >= 2 && datatype.subGroup <= 7 && !datatype.index)
return valueToBusValueTimePeriod(value, payload, payload_length, datatype);
// DPT 8.001/8.010/8.011 - Signed 16 Bit Integer
if (datatype.mainGroup == 8 && (datatype.subGroup == 1 || datatype.subGroup == 10 || datatype.subGroup == 11) && !datatype.index)
return valueToBusValueSigned16(value, payload, payload_length, datatype);
@@ -275,22 +259,6 @@ namespace Knx
return false;
}
int busValueToUnsigned16(const uint8_t* payload, size_t payload_length, const Dpt& datatype, KNXValue& value)
{
ASSERT_PAYLOAD(2);
value = unsigned16FromPayload(payload, 0);
return true;
}
int busValueToTimePeriod(const uint8_t* payload, size_t payload_length, const Dpt& datatype, KNXValue& value)
{
ASSERT_PAYLOAD(2);
int64_t duration = unsigned16FromPayload(payload, 0);
value = duration;
return true;
}
int busValueToSigned16(const uint8_t* payload, size_t payload_length, const Dpt& datatype, KNXValue& value)
{
ASSERT_PAYLOAD(2);
@@ -829,27 +797,6 @@ namespace Knx
//-------------------------------------------------------------------------------------------------------------------------------------
int valueToBusValueUnsigned16(const KNXValue& value, uint8_t* payload, size_t payload_length, const Dpt& datatype)
{
if ((int64_t)value < INT64_C(0) || (int64_t)value > INT64_C(65535))
return false;
unsigned16ToPayload(payload, 0, (uint64_t)value, 0xFFFF);
return true;
}
int valueToBusValueTimePeriod(const KNXValue& value, uint8_t* payload, size_t payload_length, const Dpt& datatype)
{
struct tm tmp = value;
time_t timeSinceEpoch = mktime(&tmp);
if (timeSinceEpoch < INT64_C(0) || timeSinceEpoch > INT64_C(65535))
return false;
unsigned16ToPayload(payload, 0, timeSinceEpoch, 0xFFFF);
return true;
}
int valueToBusValueSigned16(const KNXValue& value, uint8_t* payload, size_t payload_length, const Dpt& datatype)
{
if ((int64_t)value < INT64_C(-32768) || (int64_t)value > INT64_C(32767))

View File

@@ -6,4 +6,5 @@
#include "dpt4.h"
#include "dpt5.h"
#include "dpt6.h"
#include "dpt7.h"
#include "dpt9.h"