knx
ETS configurable knx-stack
network_layer.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <stdint.h>
4 #include "knx_types.h"
5 #include "npdu.h"
6 #include "transport_layer.h"
7 #include "network_layer_entity.h"
8 
9 class DeviceObject;
10 class APDU;
11 
13 {
14  friend class NetworkLayerEntity;
15 
16  public:
17  NetworkLayer(DeviceObject& deviceObj, TransportLayer& layer);
18 
19  uint8_t hopCount() const;
20  bool isApciSystemBroadcast(APDU& apdu);
21 
22  // from transport layer
23  virtual void dataIndividualRequest(AckType ack, uint16_t destination, HopCountType hopType, Priority priority, TPDU& tpdu) = 0;
24  virtual void dataGroupRequest(AckType ack, uint16_t destination, HopCountType hopType, Priority priority, TPDU& tpdu) = 0;
25  virtual void dataBroadcastRequest(AckType ack, HopCountType hopType, Priority priority, TPDU& tpdu) = 0;
26  virtual void dataSystemBroadcastRequest(AckType ack, HopCountType hopType, Priority priority, TPDU& tpdu) = 0;
27 
28  protected:
31 
32  // from entities
33  virtual void dataIndication(AckType ack, AddressType addType, uint16_t destination, FrameFormat format, NPDU& npdu,
34  Priority priority, uint16_t source, uint8_t srcIfIdx) = 0;
35  virtual void dataConfirm(AckType ack, AddressType addressType, uint16_t destination, FrameFormat format, Priority priority,
36  uint16_t source, NPDU& npdu, bool status, uint8_t srcIfIdx) = 0;
37  virtual void broadcastIndication(AckType ack, FrameFormat format, NPDU& npdu,
38  Priority priority, uint16_t source, uint8_t srcIfIdx) = 0;
39  virtual void broadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status, uint8_t srcIfIdx) = 0;
40  virtual void systemBroadcastIndication(AckType ack, FrameFormat format, NPDU& npdu,
41  Priority priority, uint16_t source, uint8_t srcIfIdx) = 0;
42  virtual void systemBroadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status, uint8_t srcIfIdx) = 0;
43 
44  private:
45  uint8_t _hopCount; // Network Layer Parameter hop_count for the device's own outgoing frames (default value from PID_ROUTING_COUNT)
46 };
This class represents an Application Protocol Data Unit.
Definition: apdu.h:12
Definition: npdu.h:9
NetworkLayer(DeviceObject &deviceObj, TransportLayer &layer)
virtual void systemBroadcastIndication(AckType ack, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source, uint8_t srcIfIdx)=0
DeviceObject & _deviceObj
Definition: network_layer.h:29
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 dataBroadcastRequest(AckType ack, HopCountType hopType, Priority priority, TPDU &tpdu)=0
virtual void dataGroupRequest(AckType ack, uint16_t destination, HopCountType hopType, Priority priority, TPDU &tpdu)=0
virtual void dataIndication(AckType ack, AddressType addType, uint16_t destination, FrameFormat format, NPDU &npdu, Priority priority, uint16_t source, uint8_t srcIfIdx)=0
uint8_t hopCount() const
bool isApciSystemBroadcast(APDU &apdu)
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 dataIndividualRequest(AckType ack, uint16_t destination, HopCountType hopType, Priority priority, TPDU &tpdu)=0
virtual void systemBroadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU &npdu, bool status, uint8_t srcIfIdx)=0
TransportLayer & _transportLayer
Definition: network_layer.h:30
virtual void dataSystemBroadcastRequest(AckType ack, HopCountType hopType, Priority priority, TPDU &tpdu)=0
Definition: tpdu.h:9
HopCountType
Definition: knx_types.h:124
Priority
Definition: knx_types.h:10
FrameFormat
Definition: knx_types.h:4
AckType
Definition: knx_types.h:18
AddressType
Definition: knx_types.h:33