knx
ETS configurable knx-stack
bau_systemB.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "config.h"
4 #include "bau.h"
7 #include "application_layer.h"
9 #include "transport_layer.h"
10 #include "network_layer.h"
11 #include "data_link_layer.h"
12 #include "platform.h"
13 #include "memory.h"
14 
15 class BauSystemB : protected BusAccessUnit
16 {
17  public:
19  virtual void loop() = 0;
20  virtual bool configured() = 0;
21  virtual bool enabled() = 0;
22  virtual void enabled(bool value) = 0;
23 
24  Platform& platform();
27 
28  Memory& memory();
29  void readMemory();
30  void writeMemory();
31  void addSaveRestore(SaveRestore* obj);
32 
33  bool restartRequest(uint16_t asap, const SecurityControl secCtrl);
34  uint8_t checkmasterResetValidity(EraseCode eraseCode, uint8_t channel);
35 
36  void propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
37  uint8_t& numberOfElements, uint16_t startIndex,
38  uint8_t** data, uint32_t& length) override;
39  void propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId,
40  uint8_t& numberOfElements, uint16_t startIndex,
41  uint8_t* data, uint32_t length) override;
50 
51  protected:
53  virtual InterfaceObject* getInterfaceObject(uint8_t idx) = 0;
54  virtual InterfaceObject* getInterfaceObject(ObjectType objectType, uint16_t objectInstance) = 0;
55 
56  void memoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
57  uint16_t memoryAddress, uint8_t* data) override;
58  void memoryReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
59  uint16_t memoryAddress) override;
60  void memoryReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
61  uint16_t memoryAddress, uint8_t* data);
62  void memoryRouterWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
63  uint16_t memoryAddress, uint8_t* data);
64  void memoryRouterReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
65  uint16_t memoryAddress, uint8_t* data);
66  void memoryRoutingTableWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
67  uint16_t memoryAddress, uint8_t* data);
68  void memoryRoutingTableReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t* data);
69  void memoryRoutingTableReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number, uint16_t memoryAddress);
70  //
71  void memoryExtWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
72  uint32_t memoryAddress, uint8_t* data) override;
73  void memoryExtReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
74  uint32_t memoryAddress) override;
75  void deviceDescriptorReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t descriptorType) override;
76  void restartRequestIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, RestartType restartType, EraseCode eraseCode, uint8_t channel) override;
77  void authorizeIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint32_t key) override;
78  void userMemoryReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number, uint32_t memoryAddress) override;
79  void userMemoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t number,
80  uint32_t memoryAddress, uint8_t* memoryData) override;
81  void propertyDescriptionReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t objectIndex,
82  uint8_t propertyId, uint8_t propertyIndex) override;
83  void propertyExtDescriptionReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl,
84  uint16_t objectType, uint16_t objectInstance, uint16_t propertyId, uint8_t descriptionType, uint16_t propertyIndex) override;
85  void propertyValueWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t objectIndex,
86  uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length) override;
87  void propertyValueExtWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, ObjectType objectType, uint8_t objectInstance,
88  uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t* data, uint8_t length, bool confirmed);
89  void propertyValueReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t objectIndex,
90  uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex) override;
91  void propertyValueExtReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, ObjectType objectType, uint8_t objectInstance,
92  uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex) override;
93  void functionPropertyCommandIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t objectIndex,
94  uint8_t propertyId, uint8_t* data, uint8_t length) override;
95  void functionPropertyStateIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, uint8_t objectIndex,
96  uint8_t propertyId, uint8_t* data, uint8_t length) override;
97  void functionPropertyExtCommandIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, ObjectType objectType, uint8_t objectInstance,
98  uint8_t propertyId, uint8_t* data, uint8_t length) override;
99  void functionPropertyExtStateIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl& secCtrl, ObjectType objectType, uint8_t objectInstance,
100  uint8_t propertyId, uint8_t* data, uint8_t length) override;
101  void individualAddressReadIndication(HopCountType hopType, const SecurityControl& secCtrl) override;
102  void individualAddressWriteIndication(HopCountType hopType, const SecurityControl& secCtrl, uint16_t newaddress) override;
103  void individualAddressSerialNumberWriteIndication(Priority priority, HopCountType hopType, const SecurityControl& secCtrl, uint16_t newIndividualAddress,
104  uint8_t* knxSerialNumber) override;
105  void individualAddressSerialNumberReadIndication(Priority priority, HopCountType hopType, const SecurityControl& secCtrl, uint8_t* knxSerialNumber) override;
106  void systemNetworkParameterReadIndication(Priority priority, HopCountType hopType, const SecurityControl& secCtrl, uint16_t objectType,
107  uint16_t propertyId, uint8_t* testInfo, uint16_t testinfoLength) override;
108  void systemNetworkParameterReadLocalConfirm(Priority priority, HopCountType hopType, const SecurityControl& secCtrl, uint16_t objectType,
109  uint16_t propertyId, uint8_t* testInfo, uint16_t testInfoLength, bool status) override;
110  void connectConfirm(uint16_t tsap) override;
111 
112  void nextRestartState();
113  virtual void doMasterReset(EraseCode eraseCode, uint8_t channel);
114 
116  {
120  Restarted
121  };
122 
129  uint32_t _restartDelay = 0;
133 };
void(* BeforeRestartCallback)(void)
Definition: bau.h:6
bool(* FunctionPropertyCallback)(uint8_t objectIndex, uint8_t propertyId, uint8_t length, uint8_t *data, uint8_t *resultData, uint8_t &resultLength)
Definition: bau.h:7
This is an implementation of the application layer as specified in .
VersionCheckCallback versionCheckCallback()
Memory & memory()
void memoryExtWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint32_t memoryAddress, uint8_t *data) override
FunctionPropertyCallback functionPropertyStateCallback()
void individualAddressSerialNumberReadIndication(Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint8_t *knxSerialNumber) override
FunctionPropertyCallback functionPropertyCallback()
void propertyValueExtReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex) override
void memoryRouterReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
void addSaveRestore(SaveRestore *obj)
void memoryRouterWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
BeforeRestartCallback _beforeRestart
Definition: bau_systemB.h:130
virtual bool configured()=0
virtual InterfaceObject * getInterfaceObject(ObjectType objectType, uint16_t objectInstance)=0
void propertyValueExtWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t *data, uint8_t length, bool confirmed)
void nextRestartState()
void systemNetworkParameterReadIndication(Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint16_t objectType, uint16_t propertyId, uint8_t *testInfo, uint16_t testinfoLength) override
virtual void doMasterReset(EraseCode eraseCode, uint8_t channel)
virtual void enabled(bool value)=0
void functionPropertyCommandIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t *data, uint8_t length) override
Memory _memory
Definition: bau_systemB.h:123
void memoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data) override
virtual void loop()=0
void individualAddressSerialNumberWriteIndication(Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint16_t newIndividualAddress, uint8_t *knxSerialNumber) override
void memoryReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress) override
void propertyValueWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t *data, uint8_t length) override
void functionPropertyExtCommandIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t *data, uint8_t length) override
virtual bool enabled()=0
uint8_t checkmasterResetValidity(EraseCode eraseCode, uint8_t channel)
Definition: bau_systemB.cpp:49
ApplicationProgramObject _appProgram
Definition: bau_systemB.h:125
void systemNetworkParameterReadLocalConfirm(Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint16_t objectType, uint16_t propertyId, uint8_t *testInfo, uint16_t testInfoLength, bool status) override
void readMemory()
Definition: bau_systemB.cpp:24
void individualAddressReadIndication(HopCountType hopType, const SecurityControl &secCtrl) override
ApplicationProgramObject & parameters()
Definition: bau_systemB.cpp:39
SecurityControl _restartSecurity
Definition: bau_systemB.h:128
Platform & _platform
Definition: bau_systemB.h:126
FunctionPropertyCallback _functionPropertyState
Definition: bau_systemB.h:132
void memoryExtReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint32_t memoryAddress) override
void propertyValueReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex) override
void propertyDescriptionReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t propertyIndex) override
void propertyValueRead(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t &numberOfElements, uint16_t startIndex, uint8_t **data, uint32_t &length) override
void restartRequestIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, RestartType restartType, EraseCode eraseCode, uint8_t channel) override
Platform & platform()
Definition: bau_systemB.cpp:34
RestartState _restartState
Definition: bau_systemB.h:127
void authorizeIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint32_t key) override
void userMemoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint32_t memoryAddress, uint8_t *memoryData) override
void connectConfirm(uint16_t tsap) override
void memoryRoutingTableWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
void propertyExtDescriptionReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint16_t objectType, uint16_t objectInstance, uint16_t propertyId, uint8_t descriptionType, uint16_t propertyIndex) override
void userMemoryReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint32_t memoryAddress) override
uint32_t _restartDelay
Definition: bau_systemB.h:129
BauSystemB(Platform &platform)
Definition: bau_systemB.cpp:17
DeviceObject _deviceObj
Definition: bau_systemB.h:124
virtual InterfaceObject * getInterfaceObject(uint8_t idx)=0
void functionPropertyStateIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t *data, uint8_t length) override
void writeMemory()
Definition: bau_systemB.cpp:29
void functionPropertyExtStateIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t *data, uint8_t length) override
BeforeRestartCallback beforeRestartCallback()
void individualAddressWriteIndication(HopCountType hopType, const SecurityControl &secCtrl, uint16_t newaddress) override
bool restartRequest(uint16_t asap, const SecurityControl secCtrl)
void memoryRoutingTableReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
void propertyValueWrite(ObjectType objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t &numberOfElements, uint16_t startIndex, uint8_t *data, uint32_t length) override
virtual ApplicationLayer & applicationLayer()=0
FunctionPropertyCallback _functionProperty
Definition: bau_systemB.h:131
DeviceObject & deviceObject()
Definition: bau_systemB.cpp:44
void deviceDescriptorReadIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t descriptorType) override
This class represents and interface object.
Definition: memory.h:37
Interface for classes that can save and restore data from a buffer.
Definition: save_restore.h:8
ObjectType
Enum for the type of an interface object.
HopCountType
Definition: knx_types.h:124
Priority
Definition: knx_types.h:10
EraseCode
Definition: knx_types.h:242
RestartType
Definition: knx_types.h:236
VersionCheckResult(* VersionCheckCallback)(uint16_t manufacturerId, uint8_t *hardwareType, uint16_t version)
Definition: memory.h:34