kdriveExpress SDK 23.2.0
kdrive_express_dpt.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2002-2023 WEINZIERL ENGINEERING GmbH
3 // All rights reserved.
4 //
5 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7 // FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
8 // SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY,
9 // WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
10 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
11 //
12 
13 #ifndef __KDRIVE_EXPRESS_DPT_H__
14 #define __KDRIVE_EXPRESS_DPT_H__
15 
16 #include "kdrive_express_config.h"
17 #include "kdrive_express_defs.h"
18 
79 #define KDRIVE_MAX_DP_TYPE_ID_LEN (13)
80 #define KDRIVE_MAX_DP_TYPE_NAME_LEN (30)
82 #define KDRIVE_DPT1_SIZE_IN_BITS (1)
83 #define KDRIVE_DPT2_SIZE_IN_BITS (2)
84 #define KDRIVE_DPT3_SIZE_IN_BITS (4)
85 #define KDRIVE_DPT4_SIZE_IN_BITS (8)
86 #define KDRIVE_DPT5_SIZE_IN_BITS (8)
87 #define KDRIVE_DPT6_SIZE_IN_BITS (8)
88 #define KDRIVE_DPT7_SIZE_IN_BITS (16)
89 #define KDRIVE_DPT8_SIZE_IN_BITS (16)
90 #define KDRIVE_DPT9_SIZE_IN_BITS (16)
91 #define KDRIVE_DPT10_SIZE_IN_BITS (24)
92 #define KDRIVE_DPT11_SIZE_IN_BITS (24)
93 #define KDRIVE_DPT12_SIZE_IN_BITS (32)
94 #define KDRIVE_DPT13_SIZE_IN_BITS (32)
95 #define KDRIVE_DPT14_SIZE_IN_BITS (32)
96 #define KDRIVE_DPT15_SIZE_IN_BITS (32)
97 #define KDRIVE_DPT16_SIZE_IN_BITS (112)
99 #ifdef __cplusplus
100 extern "C" {
101 #endif
102 
103 /**************************************************************
104 ** Datapoint
105 ***************************************************************/
106 
111 typedef struct datapoint_type_t
112 {
118 
126 
127 /**************************************************************
128 ** Encode and Decode
129 ***************************************************************/
130 
141  uint32_t* length, bool_t value);
142 
152  uint32_t length, bool_t* value);
153 
165  uint32_t* length, bool_t control, bool_t value);
166 
177  uint32_t length, bool_t* control, bool_t* value);
178 
190  uint32_t* length, bool_t control, uint8_t value);
191 
202  uint32_t length, bool_t* control, uint8_t* value);
203 
214  uint32_t* length, uint8_t character);
215 
225  uint32_t length, uint8_t* character);
226 
237  uint32_t* length, uint8_t value);
238 
248  uint32_t length, uint8_t* value);
249 
260  uint32_t* length, int8_t value);
261 
271  uint32_t length, int8_t* value);
272 
283  uint32_t* length, uint16_t value);
284 
294  uint32_t length, uint16_t* value);
295 
306  uint32_t* length, int16_t value);
307 
317  uint32_t length, int16_t* value);
318 
329  uint32_t* length, float32_t value);
330 
340  uint32_t length, float32_t* value);
341 
351 
361 
375  int32_t day, int32_t hour, int32_t minute, int32_t second);
376 
389  int32_t* day, int32_t* hour, int32_t* minute, int32_t* second);
390 
400 
410 
426  int32_t year, int32_t month, int32_t day);
427 
443  int32_t year, int32_t month, int32_t day);
444 
457  int32_t year, int32_t month, int32_t day);
458 
473  int32_t* year, int32_t* month, int32_t* day);
474 
489  int32_t* year, int32_t* month, int32_t* day);
490 
502  int32_t* year, int32_t* month, int32_t* day);
503 
514  uint32_t* length, uint32_t value);
515 
525  uint32_t length, uint32_t* value);
526 
537  uint32_t* length, int32_t value);
538 
548  uint32_t length, int32_t* value);
549 
560  uint32_t* length, float32_t value);
561 
571  uint32_t length, float32_t* value);
572 
588  int32_t accessCode, bool_t error, bool_t permission,
589  bool_t direction, bool_t encrypted, int32_t index);
590 
605  int32_t* accessCode, bool_t* error, bool_t* permission,
606  bool_t* direction, bool_t* encrypted, int32_t* index);
607 
622  uint32_t* length, const char value[KDRIVE_DPT16_LENGTH + 1]);
623 
638  uint32_t length, char value[KDRIVE_DPT16_LENGTH + 1]);
639 
640 #ifdef __cplusplus
641 }
642 #endif
643 
644 #endif /* __KDRIVE_EXPRESS_DPT_H__ */
kdriveExpress_API error_t kdrive_dpt_decode_dpt9(const uint8_t *data, uint32_t length, float32_t *value)
Gets DPT-9: 2 byte float value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt11(const uint8_t *data, uint32_t length, int32_t *year, int32_t *month, int32_t *day)
Gets DPT-11: date in KNX format NOTE: The year is in KNX DPT11 format: 0..99; >=90 : 20th century; <9...
kdriveExpress_API error_t kdrive_dpt_decode_dpt11_yyyy(const uint8_t *data, uint32_t length, int32_t *year, int32_t *month, int32_t *day)
Gets DPT-11: date in "normal" format.
kdriveExpress_API error_t kdrive_dpt_encode_dpt11_knx(uint8_t *data, uint32_t *length, int32_t year, int32_t month, int32_t day)
Sets DPT-11: date in KNX format NOTE: The year is in KNX DPT11 format: 0..99; >=90 : 20th century; <9...
kdriveExpress_API error_t kdrive_dpt_decode_dpt14(const uint8_t *data, uint32_t length, float32_t *value)
Gets DPT-14: 4 byte float value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt2(const uint8_t *data, uint32_t length, bool_t *control, bool_t *value)
Gets DPT-2: 1 bit controlled.
kdriveExpress_API error_t kdrive_dpt_encode_dpt1(uint8_t *data, uint32_t *length, bool_t value)
Sets DPT-1 (1 bit)
kdriveExpress_API error_t kdrive_dpt_decode_dpt4(const uint8_t *data, uint32_t length, uint8_t *character)
Gets DPT-4: Character.
kdriveExpress_API error_t kdrive_dpt_encode_dpt7(uint8_t *data, uint32_t *length, uint16_t value)
Sets DPT-7: 2 byte unsigned value.
kdriveExpress_API error_t kdrive_dpt_encode_dpt3(uint8_t *data, uint32_t *length, bool_t control, uint8_t value)
Sets DPT-3: 3 bit controlled.
kdriveExpress_API error_t kdrive_dpt_encode_dpt2(uint8_t *data, uint32_t *length, bool_t control, bool_t value)
Sets DPT-2: 1 bit controlled.
kdriveExpress_API error_t kdrive_dpt_decode_dpt6(const uint8_t *data, uint32_t length, int8_t *value)
Gets DPT-6: 8 bit signed value.
kdriveExpress_API error_t kdrive_dpt_encode_dpt11_local(uint8_t *data, uint32_t *length)
Sets DPT-11: current local date.
kdriveExpress_API error_t kdrive_dpt_encode_dpt16(uint8_t *data, uint32_t *length, const char value[KDRIVE_DPT16_LENGTH+1])
Sets DPT-16: Character string.
kdriveExpress_API error_t kdrive_dpt_encode_dpt10_local(uint8_t *data, uint32_t *length)
Sets DPT-10: local time.
kdriveExpress_API error_t kdrive_dpt_encode_dpt5(uint8_t *data, uint32_t *length, uint8_t value)
Sets DPT-5: 8 bit unsigned value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt16(const uint8_t *data, uint32_t length, char value[KDRIVE_DPT16_LENGTH+1])
Gets DPT-16: Character string The out value string is null terminated.
kdriveExpress_API error_t kdrive_dpt_encode_dpt4(uint8_t *data, uint32_t *length, uint8_t character)
Sets DPT-4: Character.
kdriveExpress_API error_t kdrive_dpt_encode_dpt14(uint8_t *data, uint32_t *length, float32_t value)
Sets DPT-14: 4 byte float value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt8(const uint8_t *data, uint32_t length, int16_t *value)
Gets DPT-8: 2 byte signed value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt15(const uint8_t *data, uint32_t length, int32_t *accessCode, bool_t *error, bool_t *permission, bool_t *direction, bool_t *encrypted, int32_t *index)
Gets DPT-15: Entrance access.
kdriveExpress_API error_t kdrive_dpt_encode_dpt13(uint8_t *data, uint32_t *length, int32_t value)
Sets DPT-13: 4 byte signed value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt1(const uint8_t *data, uint32_t length, bool_t *value)
Gets DPT-1 (1 bit)
kdriveExpress_API error_t kdrive_dpt_decode_dpt11_knx(const uint8_t *data, uint32_t length, int32_t *year, int32_t *month, int32_t *day)
Gets DPT-11: date in KNX format NOTE: The year is in KNX DPT11 format: 0..99; >=90 : 20th century; <9...
kdriveExpress_API error_t kdrive_dpt_encode_dpt11(uint8_t *data, uint32_t *length, int32_t year, int32_t month, int32_t day)
Sets DPT-11: date in KNX format NOTE: The year is in KNX DPT11 format: 0..99; >=90 : 20th century; <9...
kdriveExpress_API error_t kdrive_dpt_encode_dpt6(uint8_t *data, uint32_t *length, int8_t value)
Sets DPT-6: 8 bit signed value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt13(const uint8_t *data, uint32_t length, int32_t *value)
Gets DPT-13: 4 byte signed value.
kdriveExpress_API error_t kdrive_dpt_encode_dpt15(uint8_t *data, uint32_t *length, int32_t accessCode, bool_t error, bool_t permission, bool_t direction, bool_t encrypted, int32_t index)
Sets DPT-15: Entrance access.
kdriveExpress_API error_t kdrive_dpt_decode_dpt7(const uint8_t *data, uint32_t length, uint16_t *value)
Gets DPT-7: 2 byte unsigned value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt10(const uint8_t *data, uint32_t length, int32_t *day, int32_t *hour, int32_t *minute, int32_t *second)
Gets DPT-10: time.
kdriveExpress_API error_t kdrive_dpt_decode_dpt3(const uint8_t *data, uint32_t length, bool_t *control, uint8_t *value)
Gets DPT-3: 3 bit controlled.
kdriveExpress_API error_t kdrive_dpt_encode_dpt9(uint8_t *data, uint32_t *length, float32_t value)
Sets DPT-9: 2 byte float value.
struct datapoint_type_t datapoint_type_t
Represents a single datapoint type.
kdriveExpress_API error_t kdrive_dpt_encode_dpt11_utc(uint8_t *data, uint32_t *length)
Sets DPT-11: current UTC date.
kdriveExpress_API error_t kdrive_dpt_decode_dpt12(const uint8_t *data, uint32_t length, uint32_t *value)
Gets DPT-12: 4 byte unsigned value.
kdriveExpress_API error_t kdrive_dpt_encode_dpt12(uint8_t *data, uint32_t *length, uint32_t value)
Sets DPT-12: 4 byte unsigned value.
kdriveExpress_API error_t kdrive_dpt_decode_dpt5(const uint8_t *data, uint32_t length, uint8_t *value)
Gets DPT-5: 8 bit unsigned value.
kdriveExpress_API error_t kdrive_dpt_encode_dpt11_yyyy(uint8_t *data, uint32_t *length, int32_t year, int32_t month, int32_t day)
Sets DPT-11: date in "normal" format.
kdriveExpress_API error_t kdrive_dpt_encode_dpt10_utc(uint8_t *data, uint32_t *length)
Sets DPT-10: UTC time.
kdriveExpress_API error_t kdrive_dpt_encode_dpt10(uint8_t *data, uint32_t *length, int32_t day, int32_t hour, int32_t minute, int32_t second)
Sets DPT-10: time.
kdriveExpress_API error_t kdrive_dpt_get_dpt_descriptor(char *dpt_id, datapoint_type_t *dpt_desc)
Returns the datapoint type information associated with a datapoint type id.
kdriveExpress_API error_t kdrive_dpt_encode_dpt8(uint8_t *data, uint32_t *length, int16_t value)
Sets DPT-8: 2 byte signed value.
#define kdriveExpress_API
Definition: kdrive_express_config.h:89
unsigned short uint16_t
16 bit unsigned char
Definition: kdrive_express_config.h:31
bool bool_t
Definition: kdrive_express_config.h:58
int int32_t
32 bit signed int
Definition: kdrive_express_config.h:35
unsigned int uint32_t
32 bit unsigned char
Definition: kdrive_express_config.h:32
float float32_t
32 bit single precision float
Definition: kdrive_express_config.h:36
int32_t error_t
Definition: kdrive_express_config.h:47
short int16_t
16 bit signed int
Definition: kdrive_express_config.h:34
unsigned char uint8_t
8 bit unsigned char
Definition: kdrive_express_config.h:30
signed char int8_t
8 bit signed char
Definition: kdrive_express_config.h:33
kdriveExpress Defines
#define KDRIVE_DPT16_LENGTH
The length of a KNX character string for DPT-16 is 112 bits or 14 bytes.
Definition: kdrive_express_defs.h:40
#define KDRIVE_MAX_DP_TYPE_ID_LEN
The max length of a datapoint type id.
Definition: kdrive_express_dpt.h:79
#define KDRIVE_MAX_DP_TYPE_NAME_LEN
The max length of a datapoint type name.
Definition: kdrive_express_dpt.h:80
Represents a single datapoint type.
Definition: kdrive_express_dpt.h:112
int32_t size_in_bit
the data size in bits
Definition: kdrive_express_dpt.h:115
char name[KDRIVE_MAX_DP_TYPE_NAME_LEN]
datapoint type id e.g.
Definition: kdrive_express_dpt.h:114