mirror of
https://github.com/thelsing/knx.git
synced 2025-09-18 17:52:44 +02:00
* save work. * save work * save work * save work * save work * Remember which interface received the cemi frame * save work * save work * save work * Use default value from PID_ROUTING_COUNT * Add simple alternative to std::function without smart pointers or move semantics * Remove include * Add more comments about cleanup * save work * Remove forgotten code. * Move crc16Ccitt to bits.c as it also used for PID_MCB * save work * move comment * save work * save work * save work * save work * save work * save work * save work * derive from TableObject instead of InterfaceObject * save work * save work * Fix wrong pointer arithmetic in TableObject * Filter table setting/clearing * move comment * save work * save work * save work * handle SBC on closed media * save work * move coupler example to different dir * Restore device example for linux * save work * Remove MEDIUM_TYPE and use MASK_VERSION * save work * save work * save work * save work * save work * save work * save work * save work * save work * save work * save work * save work * save work * save work * Replace MEDIUM_TYPE by MASK_VERSION * Remove adafruit/travis-ci tests * Disable travis ci cache for platformio * Fix missing changes * Fix cemi server and add missing MASK_VERSION definitions * Enable platformio caching on travis ci again * Handle device address update for routing decision * source address is set in network layer and not in data link layer * Add remaining APCI types that are used with system broadcast * Add debug print for routing * Remove simple_functional * Fix CMakLists.txt * Use MASK_VERSION to conditionally compile code. * Remove fixed version reuqirement from platform esp8266 * Add demo-coupler for MCUs * Remove simple_functional.h from demo knx-linux * Enable CI for coupler demos * Correct path for knx-linux-coupler * Fix knx_facade.h * Refactor NetworkLayer to use getInterface() for devices and getPrimaryInterface(), getSecondaryInterface() for couplers * Add platformio configs for other currently possible mask/platform combinations * Add class diagrams and remove obsolete includes * Add some minimal docs
43 lines
1.6 KiB
C++
43 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include "knx_types.h"
|
|
#include "npdu.h"
|
|
|
|
class DataLinkLayer;
|
|
class NetworkLayer;
|
|
|
|
class NetworkLayerEntity
|
|
{
|
|
friend class NetworkLayerCoupler;
|
|
friend class NetworkLayerDevice;
|
|
|
|
public:
|
|
NetworkLayerEntity(NetworkLayer &netLayer, uint8_t entityIndex);
|
|
|
|
void dataLinkLayer(DataLinkLayer& layer);
|
|
DataLinkLayer& dataLinkLayer();
|
|
|
|
DptMedium mediumType() const;
|
|
|
|
// from data link layer
|
|
void dataIndication(AckType ack, AddressType addType, uint16_t destination, 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 broadcastIndication(AckType ack, FrameFormat format, NPDU& npdu,
|
|
Priority priority, uint16_t source);
|
|
void broadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status);
|
|
void systemBroadcastIndication(AckType ack, FrameFormat format, NPDU& npdu,
|
|
Priority priority, uint16_t source);
|
|
void systemBroadcastConfirm(AckType ack, FrameFormat format, Priority priority, uint16_t source, NPDU& npdu, bool status);
|
|
|
|
private:
|
|
// From network layer
|
|
void sendDataRequest(NPDU& npdu, AckType ack, uint16_t destination, uint16_t source, Priority priority, AddressType addrType, SystemBroadcast systemBroadcast);
|
|
|
|
DataLinkLayer* _dataLinkLayer = 0;
|
|
NetworkLayer& _netLayer;
|
|
uint8_t _entityIndex;
|
|
};
|