Move code from header to source file

This commit is contained in:
Nanosonde 2020-07-02 12:17:06 +02:00
parent 0834618843
commit 3297b53332
2 changed files with 62 additions and 14 deletions

View File

@ -8,7 +8,7 @@
#include "bits.h" #include "bits.h"
#include <stdio.h> #include <stdio.h>
const SecurityControl ApplicationLayer::noSecurity {.toolAccess=true, .dataSecurity=DataSecurity::none}; const SecurityControl ApplicationLayer::noSecurity {.toolAccess=false, .dataSecurity=DataSecurity::none};
ApplicationLayer::ApplicationLayer(AssociationTableObject& assocTable, BusAccessUnit& bau): ApplicationLayer::ApplicationLayer(AssociationTableObject& assocTable, BusAccessUnit& bau):
_assocTable(assocTable), _bau(bau) _assocTable(assocTable), _bau(bau)
@ -19,10 +19,14 @@ void ApplicationLayer::transportLayer(TransportLayer& layer)
{ {
_transportLayer = &layer; _transportLayer = &layer;
} }
static constexpr SecurityControl noSecurity {.toolAccess=true, .dataSecurity=DataSecurity::none};
#pragma region TL Callbacks #pragma region TL Callbacks
void ApplicationLayer::dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu)
{
dataGroupIndication(hopType, priority, tsap, apdu, noSecurity);
}
void ApplicationLayer::dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl) void ApplicationLayer::dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl)
{ {
uint8_t len = apdu.length(); uint8_t len = apdu.length();
@ -61,6 +65,11 @@ void ApplicationLayer::dataGroupIndication(HopCountType hopType, Priority priori
} }
} }
void ApplicationLayer::dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, bool status)
{
dataGroupConfirm(ack, hopType, priority, tsap, apdu, noSecurity, status);
}
void ApplicationLayer::dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl &secCtrl, bool status) void ApplicationLayer::dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl &secCtrl, bool status)
{ {
switch (apdu.type()) switch (apdu.type())
@ -80,6 +89,11 @@ void ApplicationLayer::dataGroupConfirm(AckType ack, HopCountType hopType, Prior
} }
} }
void ApplicationLayer::dataBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu)
{
dataBroadcastIndication(hopType, priority, source, apdu, noSecurity);
}
void ApplicationLayer::dataBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu, const SecurityControl& secCtrl) void ApplicationLayer::dataBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu, const SecurityControl& secCtrl)
{ {
uint8_t* data = apdu.data(); uint8_t* data = apdu.data();
@ -133,6 +147,11 @@ void ApplicationLayer::dataBroadcastIndication(HopCountType hopType, Priority pr
} }
} }
void ApplicationLayer::dataBroadcastConfirm(AckType ack, HopCountType hopType, Priority priority, APDU& apdu, bool status)
{
dataBroadcastConfirm(ack, hopType, priority, apdu, noSecurity, status);
}
void ApplicationLayer::dataBroadcastConfirm(AckType ack, HopCountType hopType, Priority priority, APDU& apdu, const SecurityControl& secCtrl, bool status) void ApplicationLayer::dataBroadcastConfirm(AckType ack, HopCountType hopType, Priority priority, APDU& apdu, const SecurityControl& secCtrl, bool status)
{ {
uint8_t* data = apdu.data(); uint8_t* data = apdu.data();
@ -181,6 +200,11 @@ void ApplicationLayer::dataBroadcastConfirm(AckType ack, HopCountType hopType, P
} }
} }
void ApplicationLayer::dataSystemBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu)
{
dataSystemBroadcastIndication(hopType, priority, source, apdu, noSecurity);
}
void ApplicationLayer::dataSystemBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu, const SecurityControl &secCtrl) void ApplicationLayer::dataSystemBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu, const SecurityControl &secCtrl)
{ {
const uint8_t* data = apdu.data(); const uint8_t* data = apdu.data();
@ -225,6 +249,10 @@ void ApplicationLayer::dataSystemBroadcastIndication(HopCountType hopType, Prior
} }
} }
void ApplicationLayer::dataSystemBroadcastConfirm(HopCountType hopType, Priority priority, APDU& apdu, bool status) {
dataSystemBroadcastConfirm(hopType, priority, apdu, noSecurity, status);
}
void ApplicationLayer::dataSystemBroadcastConfirm(HopCountType hopType, Priority priority, APDU& apdu, const SecurityControl& secCtrl, bool status) void ApplicationLayer::dataSystemBroadcastConfirm(HopCountType hopType, Priority priority, APDU& apdu, const SecurityControl& secCtrl, bool status)
{ {
const uint8_t* data = apdu.data(); const uint8_t* data = apdu.data();
@ -269,11 +297,21 @@ void ApplicationLayer::dataSystemBroadcastConfirm(HopCountType hopType, Priority
} }
} }
void ApplicationLayer::dataIndividualIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu)
{
dataIndividualIndication(hopType, priority, source, apdu, noSecurity);
}
void ApplicationLayer::dataIndividualIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl) void ApplicationLayer::dataIndividualIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl)
{ {
individualIndication(hopType, priority, tsap, apdu, secCtrl); individualIndication(hopType, priority, tsap, apdu, secCtrl);
} }
void ApplicationLayer::dataIndividualConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, bool status)
{
dataIndividualConfirm(ack, hopType, priority, tsap, apdu, noSecurity, status);
}
void ApplicationLayer::dataIndividualConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl &secCtrl, bool status) void ApplicationLayer::dataIndividualConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl &secCtrl, bool status)
{ {
individualConfirm(ack, hopType, priority, tsap, apdu, secCtrl, status); individualConfirm(ack, hopType, priority, tsap, apdu, secCtrl, status);
@ -305,11 +343,21 @@ void ApplicationLayer::disconnectConfirm(Priority priority, uint16_t tsap, bool
_connectedTsap = -1; _connectedTsap = -1;
} }
void ApplicationLayer::dataConnectedIndication(Priority priority, uint16_t tsap, APDU& apdu)
{
dataConnectedIndication(priority, tsap, apdu, noSecurity);
}
void ApplicationLayer::dataConnectedIndication(Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl) void ApplicationLayer::dataConnectedIndication(Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl& secCtrl)
{ {
individualIndication(NetworkLayerParameter, priority, tsap, apdu, secCtrl); individualIndication(NetworkLayerParameter, priority, tsap, apdu, secCtrl);
} }
void ApplicationLayer::dataConnectedConfirm(uint16_t tsap)
{
dataConnectedConfirm(tsap, noSecurity);
}
void ApplicationLayer::dataConnectedConfirm(uint16_t tsap, const SecurityControl& secCtrl) void ApplicationLayer::dataConnectedConfirm(uint16_t tsap, const SecurityControl& secCtrl)
{ {

View File

@ -30,6 +30,8 @@ class ApplicationLayer
// from transport layer // from transport layer
// Note: without data secure feature, the application layer is just used with SecurtyControl.dataSecurity = none // Note: without data secure feature, the application layer is just used with SecurtyControl.dataSecurity = none
// hooks that can be implemented by derived class (e.g. SecureApplicationLayer)
#pragma region Transport - Layer - Callbacks #pragma region Transport - Layer - Callbacks
/** /**
* Somebody send us an APDU via multicast communiation. See 3.2 of @cite knx:3/3/4. * Somebody send us an APDU via multicast communiation. See 3.2 of @cite knx:3/3/4.
@ -45,7 +47,7 @@ class ApplicationLayer
* *
* @param hopType Should routing be endless or should the NetworkLayer::hopCount be used? See also ::HopCountType. * @param hopType Should routing be endless or should the NetworkLayer::hopCount be used? See also ::HopCountType.
*/ */
virtual void dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu) {dataGroupIndication(hopType, priority, tsap, apdu, noSecurity);} virtual void dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu);
/** /**
* Report the status of an APDU that we sent via multicast communiation back to us. See 3.2 of @cite knx:3/3/4. * Report the status of an APDU that we sent via multicast communiation back to us. See 3.2 of @cite knx:3/3/4.
* See also ApplicationLayer::dataGroupConfirm and TransportLayer::dataGroupRequest. This method is called by * See also ApplicationLayer::dataGroupConfirm and TransportLayer::dataGroupRequest. This method is called by
@ -64,16 +66,15 @@ class ApplicationLayer
* *
* @param ack Did we want a DataLinkLayer acknowledgement? See ::AckType. * @param ack Did we want a DataLinkLayer acknowledgement? See ::AckType.
*/ */
virtual void dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, virtual void dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, bool status);
APDU& apdu, bool status) {dataGroupConfirm(ack, hopType, priority, tsap, apdu, noSecurity, status);} virtual void dataBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu);
virtual void dataBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu) {dataBroadcastIndication(hopType, priority, source, apdu, noSecurity);} virtual void dataBroadcastConfirm(AckType ack, HopCountType hopType, Priority priority, APDU& apdu, bool status);
virtual void dataBroadcastConfirm(AckType ack, HopCountType hopType, Priority priority, APDU& apdu, bool status) {dataBroadcastConfirm(ack, hopType, priority, apdu, noSecurity, status);} virtual void dataSystemBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu);
virtual void dataSystemBroadcastIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu) {dataSystemBroadcastIndication(hopType, priority, source, apdu, noSecurity);} virtual void dataSystemBroadcastConfirm(HopCountType hopType, Priority priority, APDU& apdu, bool status);
virtual void dataSystemBroadcastConfirm(HopCountType hopType, Priority priority, APDU& apdu, bool status) {dataSystemBroadcastConfirm(hopType, priority, apdu, noSecurity, status);} virtual void dataIndividualIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu);
virtual void dataIndividualIndication(HopCountType hopType, Priority priority, uint16_t source, APDU& apdu) {dataIndividualIndication(hopType, priority, source, apdu, noSecurity);} virtual void dataIndividualConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, bool status);
virtual void dataIndividualConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, bool status) {dataIndividualConfirm(ack, hopType, priority, tsap, apdu, noSecurity, status);} virtual void dataConnectedIndication(Priority priority, uint16_t tsap, APDU& apdu);
virtual void dataConnectedIndication(Priority priority, uint16_t tsap, APDU& apdu) {dataConnectedIndication(priority, tsap, apdu, noSecurity);} virtual void dataConnectedConfirm(uint16_t tsap);
virtual void dataConnectedConfirm(uint16_t tsap) {dataConnectedConfirm(tsap, noSecurity);}
void connectIndication(uint16_t tsap); void connectIndication(uint16_t tsap);
void connectConfirm(uint16_t destination, uint16_t tsap, bool status); void connectConfirm(uint16_t destination, uint16_t tsap, bool status);
void disconnectIndication(uint16_t tsap); void disconnectIndication(uint16_t tsap);
@ -151,7 +152,6 @@ class ApplicationLayer
protected: protected:
// hooks that can be implemented by derived class (e.g. SecureApplicationLayer)
#pragma region hooks #pragma region hooks
void dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl &secCtrl); void dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu, const SecurityControl &secCtrl);
void dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, void dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap,