knx
ETS configurable knx-stack
SecureApplicationLayer Class Reference

This is an implementation of the application layer as specified in [4]. More...

#include <secure_application_layer.h>

Inheritance diagram for SecureApplicationLayer:
[legend]
Collaboration diagram for SecureApplicationLayer:
[legend]

Public Member Functions

 SecureApplicationLayer (DeviceObject &deviceObj, SecurityInterfaceObject &secIfObj, BusAccessUnit &bau)
 The constructor. More...
 
void groupAddressTable (AddressTableObject &addrTable)
 
void dataGroupIndication (HopCountType hopType, Priority priority, uint16_t tsap, APDU &apdu) override
 Somebody send us an APDU via multicast communication. More...
 
void dataGroupConfirm (AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU &apdu, bool status) override
 Report the status of an APDU that we sent via multicast communication back to us. More...
 
void dataBroadcastIndication (HopCountType hopType, Priority priority, uint16_t source, APDU &apdu) override
 
void dataBroadcastConfirm (AckType ack, HopCountType hopType, Priority priority, APDU &apdu, bool status) override
 
void dataSystemBroadcastIndication (HopCountType hopType, Priority priority, uint16_t source, APDU &apdu) override
 
void dataSystemBroadcastConfirm (HopCountType hopType, Priority priority, APDU &apdu, bool status) override
 
void dataIndividualIndication (HopCountType hopType, Priority priority, uint16_t source, APDU &apdu) override
 
void dataIndividualConfirm (AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU &apdu, bool status) override
 
void dataConnectedIndication (Priority priority, uint16_t tsap, APDU &apdu) override
 
void dataConnectedConfirm (uint16_t tsap) override
 
void loop ()
 
- Public Member Functions inherited from ApplicationLayer
 ApplicationLayer (BusAccessUnit &bau)
 The constructor. More...
 
void transportLayer (TransportLayer &layer)
 Assigns the TransportLayer to which encoded APDU are submitted to. More...
 
void associationTableObject (AssociationTableObject &assocTable)
 
void connectIndication (uint16_t tsap)
 
void connectConfirm (uint16_t destination, uint16_t tsap, bool status)
 
void disconnectIndication (uint16_t tsap)
 
void disconnectConfirm (Priority priority, uint16_t tsap, bool status)
 
void groupValueReadRequest (AckType ack, uint16_t asap, Priority priority, HopCountType hopType, const SecurityControl &secCtrl)
 
void groupValueReadResponse (AckType ack, uint16_t asap, Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint8_t *data, uint8_t dataLength)
 
void groupValueWriteRequest (AckType ack, uint16_t asap, Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint8_t *data, uint8_t dataLength)
 
void individualAddressWriteRequest (AckType ack, HopCountType hopType, const SecurityControl &secCtrl, uint16_t newaddress)
 
void individualAddressReadRequest (AckType ack, HopCountType hopType, const SecurityControl &secCtrl)
 
void individualAddressReadResponse (AckType ack, HopCountType hopType, const SecurityControl &secCtrl)
 
void individualAddressSerialNumberReadRequest (AckType ack, HopCountType hopType, const SecurityControl &secCtrl, uint8_t *serialNumber)
 
void individualAddressSerialNumberReadResponse (AckType ack, HopCountType hopType, const SecurityControl &secCtrl, uint8_t *serialNumber, uint16_t domainAddress)
 
void individualAddressSerialNumberWriteRequest (AckType ack, HopCountType hopType, const SecurityControl &secCtrl, uint8_t *serialNumber, uint16_t newaddress)
 
void deviceDescriptorReadRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t descriptorType)
 
void deviceDescriptorReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t descriptorType, uint8_t *deviceDescriptor)
 
void connectRequest (uint16_t destination, Priority priority)
 
void disconnectRequest (Priority priority)
 
bool isConnected ()
 
void restartRequest (AckType ack, Priority priority, HopCountType hopType, const SecurityControl &secCtrl)
 
void restartResponse (AckType ack, Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint8_t errorCode, uint16_t processTime)
 
void propertyValueReadRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex)
 
void propertyValueReadResponse (AckType ack, 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)
 
void propertyValueExtReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint16_t objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t *data, uint8_t length)
 
void propertyValueExtWriteConResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint16_t objectType, uint8_t objectInstance, uint8_t propertyId, uint8_t numberOfElements, uint16_t startIndex, uint8_t returnCode)
 
void propertyValueWriteRequest (AckType ack, 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)
 
void adcReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t channelNr, uint8_t readCount, int16_t value)
 
void functionPropertyStateResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t *resultData, uint8_t resultLength)
 
void functionPropertyExtStateResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint16_t objectType, uint8_t objectInstance, uint16_t propertyId, uint8_t *resultData, uint8_t resultLength)
 
void propertyDescriptionReadRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t propertyIndex)
 
void propertyDescriptionReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t objectIndex, uint8_t propertyId, uint8_t propertyIndex, bool writeEnable, uint8_t type, uint16_t maxNumberOfElements, uint8_t access)
 
void propertyExtDescriptionReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint16_t objectType, uint16_t objectInstance, uint16_t propertyId, uint16_t propertyIndex, uint8_t descriptionType, bool writeEnable, uint8_t type, uint16_t maxNumberOfElements, uint8_t access)
 
void memoryReadRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress)
 
void memoryReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
 
void memoryRouterReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
 
void memoryRoutingTableReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
 
void memoryExtReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, ReturnCodes code, uint8_t number, uint32_t memoryAddress, uint8_t *data)
 
void memoryExtWriteResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, ReturnCodes code, uint8_t number, uint32_t memoryAddress, uint8_t *memoryData)
 
void memoryWriteRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint16_t memoryAddress, uint8_t *data)
 
void userMemoryReadRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint32_t memoryAddress)
 
void userMemoryReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint32_t memoryAddress, uint8_t *memoryData)
 
void userMemoryWriteRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number, uint32_t memoryAddress, uint8_t *memoryData)
 
void userManufacturerInfoReadRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl)
 
void userManufacturerInfoReadResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t *info)
 
void authorizeRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint32_t key)
 
void authorizeResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t level)
 
void keyWriteRequest (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t level, uint32_t key)
 
void keyWriteResponse (AckType ack, Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t level)
 
void systemNetworkParameterReadResponse (Priority priority, HopCountType hopType, const SecurityControl &secCtrl, uint16_t objectType, uint16_t propertyId, uint8_t *testInfo, uint16_t testInfoLength, uint8_t *testResult, uint16_t testResultLength)
 
void domainAddressSerialNumberReadResponse (Priority priority, HopCountType hopType, const SecurityControl &secCtrl, const uint8_t *rfDoA, const uint8_t *knxSerialNumber)
 
void IndividualAddressSerialNumberReadResponse (Priority priority, HopCountType hopType, const SecurityControl &secCtrl, const uint8_t *domainAddress, const uint8_t *knxSerialNumber)
 

Protected Member Functions

void dataGroupRequest (AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU &apdu, const SecurityControl &secCtrl) override
 
void dataBroadcastRequest (AckType ack, HopCountType hopType, Priority priority, APDU &apdu, const SecurityControl &secCtrl) override
 
void dataSystemBroadcastRequest (AckType ack, HopCountType hopType, Priority priority, APDU &apdu, const SecurityControl &secCtrl) override
 
void dataIndividualRequest (AckType ack, HopCountType hopType, Priority priority, uint16_t destination, APDU &apdu, const SecurityControl &secCtrl) override
 
void dataConnectedRequest (uint16_t tsap, Priority priority, APDU &apdu, const SecurityControl &secCtrl) override
 
- Protected Member Functions inherited from ApplicationLayer
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, APDU &apdu, const SecurityControl &secCtrl, bool status)
 
void dataBroadcastIndication (HopCountType hopType, Priority priority, uint16_t source, APDU &apdu, const SecurityControl &secCtrl)
 
void dataBroadcastConfirm (AckType ack, HopCountType hopType, Priority priority, APDU &apdu, const SecurityControl &secCtrl, bool status)
 
void dataSystemBroadcastIndication (HopCountType hopType, Priority priority, uint16_t source, APDU &apdu, const SecurityControl &secCtrl)
 
void dataSystemBroadcastConfirm (HopCountType hopType, Priority priority, APDU &apdu, const SecurityControl &secCtrl, bool status)
 
void dataIndividualIndication (HopCountType hopType, Priority priority, uint16_t source, APDU &apdu, const SecurityControl &secCtrl)
 
void dataIndividualConfirm (AckType ack, HopCountType hopType, Priority priority, uint16_t tsap, APDU &apdu, const SecurityControl &secCtrl, bool status)
 
void dataConnectedIndication (Priority priority, uint16_t tsap, APDU &apdu, const SecurityControl &secCtrl)
 
void dataConnectedConfirm (uint16_t tsap, const SecurityControl &secCtrl)
 
uint16_t getConnectedTsasp ()
 

Additional Inherited Members

- Protected Attributes inherited from ApplicationLayer
TransportLayer_transportLayer = 0
 
- Static Protected Attributes inherited from ApplicationLayer
static const SecurityControl noSecurity {.toolAccess = false, .dataSecurity = DataSecurity::None}
 

Detailed Description

This is an implementation of the application layer as specified in [4].

It provides methods for the BusAccessUnit to do different things and translates this call to an APDU and calls the correct method of the TransportLayer. It also takes calls from TransportLayer, decodes the submitted APDU and calls the coresponding methods of the BusAccessUnit class.

Definition at line 22 of file secure_application_layer.h.

Constructor & Destructor Documentation

◆ SecureApplicationLayer()

SecureApplicationLayer::SecureApplicationLayer ( DeviceObject deviceObj,
SecurityInterfaceObject secIfObj,
BusAccessUnit bau 
)

The constructor.

Parameters
assocTableThe AssociationTable is used to translate between asap (i.e. group objects) and group addresses.
baumethods are called here depending of the content of the APDU

Definition at line 26 of file secure_application_layer.cpp.

Member Function Documentation

◆ dataBroadcastConfirm()

void SecureApplicationLayer::dataBroadcastConfirm ( AckType  ack,
HopCountType  hopType,
Priority  priority,
APDU apdu,
bool  status 
)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 130 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataBroadcastIndication()

void SecureApplicationLayer::dataBroadcastIndication ( HopCountType  hopType,
Priority  priority,
uint16_t  source,
APDU apdu 
)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 103 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataBroadcastRequest()

void SecureApplicationLayer::dataBroadcastRequest ( AckType  ack,
HopCountType  hopType,
Priority  priority,
APDU apdu,
const SecurityControl secCtrl 
)
overrideprotectedvirtual

Reimplemented from ApplicationLayer.

Definition at line 348 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataConnectedConfirm()

void SecureApplicationLayer::dataConnectedConfirm ( uint16_t  tsap)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 312 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataConnectedIndication()

void SecureApplicationLayer::dataConnectedIndication ( Priority  priority,
uint16_t  tsap,
APDU apdu 
)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 285 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataConnectedRequest()

void SecureApplicationLayer::dataConnectedRequest ( uint16_t  tsap,
Priority  priority,
APDU apdu,
const SecurityControl secCtrl 
)
overrideprotectedvirtual

Reimplemented from ApplicationLayer.

Definition at line 425 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataGroupConfirm()

void SecureApplicationLayer::dataGroupConfirm ( AckType  ack,
HopCountType  hopType,
Priority  priority,
uint16_t  tsap,
APDU apdu,
bool  status 
)
overridevirtual

Report the status of an APDU that we sent via multicast communication back to us.

See 3.2 of [1]. See also ApplicationLayer::dataGroupConfirm and TransportLayer::dataGroupRequest. This method is called by the TransportLayer.

Parameters
tsapused the find the correct GroupObject with the help of the AssociationTableObject. See 3.1.1 of [2]
apduThe submitted APDU.
priorityThe Priority of the received request.
hopTypeShould routing be endless or should the NetworkLayer::hopCount be used? See also HopCountType.
statusWas the request successful?
ackDid we want a DataLinkLayer acknowledgement? See AckType.

Reimplemented from ApplicationLayer.

Definition at line 70 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataGroupIndication()

void SecureApplicationLayer::dataGroupIndication ( HopCountType  hopType,
Priority  priority,
uint16_t  tsap,
APDU apdu 
)
overridevirtual

Somebody send us an APDU via multicast communication.

See 3.2 of [1]. See also ApplicationLayer::dataGroupConfirm and TransportLayer::dataGroupRequest. This method is called by the TransportLayer.

Parameters
tsapused the find the correct GroupObject with the help of the AssociationTableObject. See 3.1.1 of [2]
apduThe submitted APDU.
priorityThe Priority of the received request.
hopTypeShould routing be endless or should the NetworkLayer::hopCount be used? See also HopCountType.

Reimplemented from ApplicationLayer.

Definition at line 40 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataGroupRequest()

void SecureApplicationLayer::dataGroupRequest ( AckType  ack,
HopCountType  hopType,
Priority  priority,
uint16_t  tsap,
APDU apdu,
const SecurityControl secCtrl 
)
overrideprotectedvirtual

Reimplemented from ApplicationLayer.

Definition at line 320 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataIndividualConfirm()

void SecureApplicationLayer::dataIndividualConfirm ( AckType  ack,
HopCountType  hopType,
Priority  priority,
uint16_t  tsap,
APDU apdu,
bool  status 
)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 250 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataIndividualIndication()

void SecureApplicationLayer::dataIndividualIndication ( HopCountType  hopType,
Priority  priority,
uint16_t  source,
APDU apdu 
)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 223 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataIndividualRequest()

void SecureApplicationLayer::dataIndividualRequest ( AckType  ack,
HopCountType  hopType,
Priority  priority,
uint16_t  destination,
APDU apdu,
const SecurityControl secCtrl 
)
overrideprotectedvirtual

Reimplemented from ApplicationLayer.

Definition at line 400 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataSystemBroadcastConfirm()

void SecureApplicationLayer::dataSystemBroadcastConfirm ( HopCountType  hopType,
Priority  priority,
APDU apdu,
bool  status 
)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 190 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataSystemBroadcastIndication()

void SecureApplicationLayer::dataSystemBroadcastIndication ( HopCountType  hopType,
Priority  priority,
uint16_t  source,
APDU apdu 
)
overridevirtual

Reimplemented from ApplicationLayer.

Definition at line 163 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ dataSystemBroadcastRequest()

void SecureApplicationLayer::dataSystemBroadcastRequest ( AckType  ack,
HopCountType  hopType,
Priority  priority,
APDU apdu,
const SecurityControl secCtrl 
)
overrideprotectedvirtual

Reimplemented from ApplicationLayer.

Definition at line 374 of file secure_application_layer.cpp.

Here is the call graph for this function:

◆ groupAddressTable()

void SecureApplicationLayer::groupAddressTable ( AddressTableObject addrTable)

Definition at line 33 of file secure_application_layer.cpp.

Here is the caller graph for this function:

◆ loop()

void SecureApplicationLayer::loop ( )

Definition at line 1318 of file secure_application_layer.cpp.

Here is the caller graph for this function:

The documentation for this class was generated from the following files: