Program Listing for File cemi_server.h
↰ Return to documentation for file (src/knx/cemi_server.h)
#pragma once
#include "config.h"
#ifdef USE_CEMI_SERVER
#include <stdint.h>
#include "knx_types.h"
#include "usb_tunnel_interface.h"
class BauSystemB;
class DataLinkLayer;
class CemiFrame;
class CemiServer
{
public:
CemiServer(BauSystemB& bau);
void dataLinkLayer(DataLinkLayer& layer);
#ifdef KNX_TUNNELING
void dataLinkLayerPrimary(DataLinkLayer& layer);
#endif
// from data link layer
// Only L_Data service
void dataIndicationToTunnel(CemiFrame& frame);
void dataConfirmationToTunnel(CemiFrame& frame);
// From tunnel interface
void frameReceived(CemiFrame& frame);
uint16_t clientAddress() const;
void clientAddress(uint16_t value);
void loop();
private:
uint16_t _clientAddress = 0;
uint8_t _frameNumber = 0;
void handleLData(CemiFrame& frame);
void handleMPropRead(CemiFrame& frame);
void handleMPropWrite(CemiFrame& frame);
void handleMReset(CemiFrame& frame);
DataLinkLayer* _dataLinkLayer = nullptr;
#ifdef KNX_TUNNELING
DataLinkLayer* _dataLinkLayerPrimary = nullptr;
#endif
BauSystemB& _bau;
#ifdef USE_USB
UsbTunnelInterface _usbTunnelInterface;
#endif
};
#endif