knx
ETS configurable knx-stack
network_layer_entity.cpp
Go to the documentation of this file.
1 #include "network_layer.h"
2 #include "network_layer_entity.h"
3 #include "tpdu.h"
4 #include "data_link_layer.h"
5 #include "bits.h"
6 
7 NetworkLayerEntity::NetworkLayerEntity(NetworkLayer& netLayer, uint8_t entityIndex) : _netLayer(netLayer), _entityIndex(entityIndex)
8 {
9 }
10 
12 {
13  _dataLinkLayer = &layer;
14 }
15 
17 {
18  return *_dataLinkLayer;
19 }
20 
22 {
23  return _netLayer;
24 }
25 
27 {
28  return _dataLinkLayer->mediumType();
29 }
30 
32 {
33  return _entityIndex;
34 }
35 
36 void NetworkLayerEntity::dataIndication(AckType ack, AddressType addrType, uint16_t destination, FrameFormat format, NPDU& npdu, Priority priority, uint16_t source)
37 {
38  _netLayer.dataIndication(ack, addrType, destination, format, npdu, priority, source, _entityIndex);
39 }
40 
41 void NetworkLayerEntity::dataConfirm(AckType ack, AddressType addressType, uint16_t destination, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status)
42 {
43  _netLayer.dataConfirm(ack, addressType, destination, format, priority, source, npdu, status, _entityIndex);
44 }
45 
46 void NetworkLayerEntity::broadcastIndication(AckType ack, FrameFormat format, NPDU& npdu, Priority priority, uint16_t source)
47 {
48  _netLayer.broadcastIndication(ack, format, npdu, priority, source, _entityIndex);
49 }
50 
51 void NetworkLayerEntity::broadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status)
52 {
53  _netLayer.broadcastConfirm(ack, format, priority, source, npdu, status, _entityIndex);
54 }
55 
56 void NetworkLayerEntity::systemBroadcastIndication(AckType ack, FrameFormat format, NPDU& npdu, Priority priority, uint16_t source)
57 {
58  _netLayer.systemBroadcastIndication(ack, format, npdu, priority, source, _entityIndex);
59 }
60 
61 void NetworkLayerEntity::systemBroadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status)
62 {
63  _netLayer.systemBroadcastConfirm(ack, format, priority, source, npdu, status, _entityIndex);
64 }
65 
66 void NetworkLayerEntity::sendDataRequest(NPDU& npdu, AckType ack, uint16_t destination, uint16_t source, Priority priority, AddressType addrType, SystemBroadcast systemBroadcast, bool doNotRepeat)
67 {
68  FrameFormat frameFormat = npdu.octetCount() > 15 ? ExtendedFrame : StandardFrame;
69 
70  if (systemBroadcast == Broadcast)
71  _dataLinkLayer->dataRequest(ack, addrType, destination, source, frameFormat, priority, npdu);
72  else
73  _dataLinkLayer->systemBroadcastRequest(ack, frameFormat, priority, npdu, source);
74 }
Definition: npdu.h:9
uint8_t octetCount() const
Definition: npdu.cpp:11
void systemBroadcastIndication(AckType ack, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source)
void dataConfirm(AckType ack, AddressType addressType, uint16_t destination, FrameFormat format, Priority priority, uint16_t source, NPDU &npdu, bool status)
void systemBroadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU &npdu, bool status)
void dataIndication(AckType ack, AddressType addType, uint16_t destination, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source)
void broadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU &npdu, bool status)
DataLinkLayer & dataLinkLayer()
NetworkLayerEntity(NetworkLayer &netLayer, uint8_t entityIndex)
NetworkLayer & networkLayer()
DptMedium mediumType() const
void broadcastIndication(AckType ack, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source)
virtual void systemBroadcastIndication(AckType ack, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source, uint8_t srcIfIdx)=0
virtual void broadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU &npdu, bool status, uint8_t srcIfIdx)=0
virtual void broadcastIndication(AckType ack, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source, uint8_t srcIfIdx)=0
virtual void dataIndication(AckType ack, AddressType addType, uint16_t destination, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source, uint8_t srcIfIdx)=0
virtual void dataConfirm(AckType ack, AddressType addressType, uint16_t destination, FrameFormat format, Priority priority, uint16_t source, NPDU &npdu, bool status, uint8_t srcIfIdx)=0
virtual void systemBroadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU &npdu, bool status, uint8_t srcIfIdx)=0
Priority
Definition: knx_types.h:10
FrameFormat
Definition: knx_types.h:4
@ StandardFrame
Definition: knx_types.h:6
@ ExtendedFrame
Definition: knx_types.h:5
AckType
Definition: knx_types.h:18
DptMedium
Definition: knx_types.h:254
AddressType
Definition: knx_types.h:33
SystemBroadcast
Definition: knx_types.h:112
@ Broadcast
Definition: knx_types.h:114