knx
ETS configurable knx-stack
knx_ip_config_dib.cpp
Go to the documentation of this file.
1 #include "knx_ip_config_dib.h"
2 
3 #ifdef USE_IP
4 KnxIpConfigDIB::KnxIpConfigDIB(uint8_t* data, bool isCurrent) : KnxIpDIB(data)
5 {
6  _isCurrent = isCurrent;
7 }
8 
10 {
11  uint32_t addr = 0;
12  popInt(addr, _data + 2);
13  return addr;
14 }
15 
16 void KnxIpConfigDIB::address(uint32_t addr)
17 {
18  pushInt(addr, _data + 2);
19 }
20 
22 {
23  uint32_t addr = 0;
24  popInt(addr, _data + 6);
25  return addr;
26 }
27 
28 void KnxIpConfigDIB::subnet(uint32_t addr)
29 {
30  pushInt(addr, _data + 6);
31 }
32 
34 {
35  uint32_t addr = 0;
36  popInt(addr, _data + 10);
37  return addr;
38 }
39 
40 void KnxIpConfigDIB::gateway(uint32_t addr)
41 {
42  pushInt(addr, _data + 10);
43 }
44 
46 {
47  if (!_isCurrent)
48  return 0;
49 
50  uint32_t addr = 0;
51  popInt(addr, _data + 14);
52  return addr;
53 }
54 
55 void KnxIpConfigDIB::dhcp(uint32_t addr)
56 {
57  if (!_isCurrent)
58  return;
59 
60  pushInt(addr, _data + 14);
61 }
62 
64 {
65  if (_isCurrent)
66  return _data[14];
67  else
68  return _data[18];
69 }
70 
71 void KnxIpConfigDIB::info1(uint8_t addr)
72 {
73  if (_isCurrent)
74  _data[14] = addr;
75  else
76  _data[18] = addr;
77 }
78 
80 {
81  if (_isCurrent)
82  return _data[15];
83  else
84  return _data[19];
85 }
86 
87 void KnxIpConfigDIB::info2(uint8_t addr)
88 {
89  if (_isCurrent)
90  _data[15] = addr;
91  else
92  _data[19] = addr;
93 }
94 
95 #endif
uint8_t * pushInt(uint32_t i, uint8_t *data)
Definition: bits.cpp:72
const uint8_t * popInt(uint32_t &i, const uint8_t *data)
Definition: bits.cpp:41
KnxIpConfigDIB(uint8_t *data, bool isCurrent=false)
uint8_t * _data
Definition: knx_ip_dib.h:32