knx
ETS configurable knx-stack
cemi_server.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "config.h"
4 #ifdef USE_CEMI_SERVER
5 
6 #include <stdint.h>
7 #include "knx_types.h"
8 #include "usb_tunnel_interface.h"
9 
10 class BauSystemB;
11 class DataLinkLayer;
12 class CemiFrame;
13 
23 {
24  public:
29  CemiServer(BauSystemB& bau);
30 
32 #ifdef KNX_TUNNELING
34 #endif
35 
36  // from data link layer
37  // Only L_Data service
38  void dataIndicationToTunnel(CemiFrame& frame);
40 
41  // From tunnel interface
42  void frameReceived(CemiFrame& frame);
43 
44  uint16_t clientAddress() const;
45  void clientAddress(uint16_t value);
46 
47  void loop();
48 
49  private:
50  uint16_t _clientAddress = 0;
51  uint8_t _frameNumber = 0;
52 
53  void handleLData(CemiFrame& frame);
54  void handleMPropRead(CemiFrame& frame);
55  void handleMPropWrite(CemiFrame& frame);
56  void handleMReset(CemiFrame& frame);
57 
58  DataLinkLayer* _dataLinkLayer = nullptr;
59 #ifdef KNX_TUNNELING
60  DataLinkLayer* _dataLinkLayerPrimary = nullptr;
61 #endif
62  BauSystemB& _bau;
63 #ifdef USE_USB
64  UsbTunnelInterface _usbTunnelInterface;
65 #endif
66 };
67 
68 #endif
This is an implementation of the cEMI server as specified in .
Definition: cemi_server.h:23
void dataConfirmationToTunnel(CemiFrame &frame)
Definition: cemi_server.cpp:49
CemiServer(BauSystemB &bau)
The constructor.
Definition: cemi_server.cpp:13
void dataIndicationToTunnel(CemiFrame &frame)
Definition: cemi_server.cpp:73
void dataLinkLayerPrimary(DataLinkLayer &layer)
Definition: cemi_server.cpp:33
void frameReceived(CemiFrame &frame)
uint16_t clientAddress() const
Definition: cemi_server.cpp:39
void dataLinkLayer(DataLinkLayer &layer)