mirror of
				https://github.com/thelsing/knx.git
				synced 2025-10-26 10:26:25 +01:00 
			
		
		
		
	save work
This commit is contained in:
		
							parent
							
								
									27433fe5e1
								
							
						
					
					
						commit
						62f18e725b
					
				@ -108,14 +108,20 @@ InterfaceObject* Bau07B0::getInterfaceObject(ObjectType objectType, uint8_t obje
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DataLinkLayer& Bau07B0::dataLinkLayer()
 | 
					bool Bau07B0::enabled()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return _dlLayer;
 | 
					    return _dlLayer.enabled();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Bau07B0::enabled(bool value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _dlLayer.enabled(value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Bau07B0::loop()
 | 
					void Bau07B0::loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ::BauSystemB::loop();
 | 
					    _dlLayer.loop();
 | 
				
			||||||
 | 
					    BauSystemBDevice::loop();
 | 
				
			||||||
#ifdef USE_CEMI_SERVER    
 | 
					#ifdef USE_CEMI_SERVER    
 | 
				
			||||||
    _cemiServer.loop();
 | 
					    _cemiServer.loop();
 | 
				
			||||||
#endif    
 | 
					#endif    
 | 
				
			||||||
 | 
				
			|||||||
@ -12,12 +12,13 @@ class Bau07B0 : public BauSystemBDevice
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    Bau07B0(Platform& platform);
 | 
					    Bau07B0(Platform& platform);
 | 
				
			||||||
    void loop();
 | 
					    virtual void loop() override;
 | 
				
			||||||
 | 
					    virtual bool enabled() override;
 | 
				
			||||||
 | 
					    virtual void enabled(bool value) override;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
					    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
					    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
				
			||||||
    DataLinkLayer& dataLinkLayer();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
    TpUartDataLinkLayer _dlLayer;
 | 
					    TpUartDataLinkLayer _dlLayer;
 | 
				
			||||||
 | 
				
			|||||||
@ -108,14 +108,27 @@ InterfaceObject* Bau091A::getInterfaceObject(ObjectType objectType, uint8_t obje
 | 
				
			|||||||
void Bau091A::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
					void Bau091A::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    // Common SystemB objects
 | 
					    // Common SystemB objects
 | 
				
			||||||
    BauSystemB::doMasterReset(eraseCode, channel);
 | 
					    BauSystemBCoupler::doMasterReset(eraseCode, channel);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _ipParameters.masterReset(eraseCode, channel);
 | 
					    _ipParameters.masterReset(eraseCode, channel);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DataLinkLayer& Bau091A::dataLinkLayer()
 | 
					bool Bau091A::enabled()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return _dlLayerSecondary;
 | 
					    return _dlLayerPrimary.enabled() && _dlLayerSecondary.enabled();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Bau091A::enabled(bool value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _dlLayerPrimary.enabled(value);
 | 
				
			||||||
 | 
					    _dlLayerSecondary.enabled(value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Bau091A::loop()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _dlLayerPrimary.loop();
 | 
				
			||||||
 | 
					    _dlLayerSecondary.loop();
 | 
				
			||||||
 | 
					    BauSystemBCoupler::loop();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -12,11 +12,13 @@ class Bau091A : public BauSystemBCoupler
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    Bau091A(Platform& platform);
 | 
					    Bau091A(Platform& platform);
 | 
				
			||||||
 | 
					    virtual void loop() override;
 | 
				
			||||||
 | 
					    virtual bool enabled() override;
 | 
				
			||||||
 | 
					    virtual void enabled(bool value) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
					    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
					    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
				
			||||||
    DataLinkLayer& dataLinkLayer();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
					    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
 | 
				
			|||||||
@ -128,14 +128,20 @@ void Bau27B0::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
				
			|||||||
    _rfMediumObj.masterReset(eraseCode, channel);
 | 
					    _rfMediumObj.masterReset(eraseCode, channel);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DataLinkLayer& Bau27B0::dataLinkLayer()
 | 
					bool Bau27B0::enabled()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return _dlLayer;
 | 
					    return _dlLayer.enabled();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Bau27B0::enabled(bool value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _dlLayer.enabled(value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Bau27B0::loop()
 | 
					void Bau27B0::loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ::BauSystemB::loop();
 | 
					    _dlLayer.loop();
 | 
				
			||||||
 | 
					    BauSystemBDevice::loop();
 | 
				
			||||||
#ifdef USE_CEMI_SERVER    
 | 
					#ifdef USE_CEMI_SERVER    
 | 
				
			||||||
    _cemiServer.loop();
 | 
					    _cemiServer.loop();
 | 
				
			||||||
#endif    
 | 
					#endif    
 | 
				
			||||||
 | 
				
			|||||||
@ -13,12 +13,13 @@ class Bau27B0 : public BauSystemBDevice
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    Bau27B0(Platform& platform);
 | 
					    Bau27B0(Platform& platform);
 | 
				
			||||||
    void loop();
 | 
					    virtual void loop() override;
 | 
				
			||||||
 | 
					    virtual bool enabled() override;
 | 
				
			||||||
 | 
					    virtual void enabled(bool value) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
					    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
					    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
				
			||||||
    DataLinkLayer& dataLinkLayer();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
					    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
 | 
				
			|||||||
@ -124,9 +124,23 @@ void Bau57B0::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
				
			|||||||
    _ipParameters.masterReset(eraseCode, channel);
 | 
					    _ipParameters.masterReset(eraseCode, channel);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DataLinkLayer& Bau57B0::dataLinkLayer()
 | 
					bool Bau57B0::enabled()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return _dlLayer;
 | 
					    return _dlLayer.enabled();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Bau57B0::enabled(bool value)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _dlLayer.enabled(value);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void Bau57B0::loop()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    _dlLayer.loop();
 | 
				
			||||||
 | 
					    BauSystemBDevice::loop();
 | 
				
			||||||
 | 
					#ifdef USE_CEMI_SERVER
 | 
				
			||||||
 | 
					    _cemiServer.loop();
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
@ -11,11 +11,13 @@ class Bau57B0 : public BauSystemBDevice
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    Bau57B0(Platform& platform);
 | 
					    Bau57B0(Platform& platform);
 | 
				
			||||||
 | 
					    virtual void loop() override;
 | 
				
			||||||
 | 
					    virtual bool enabled() override;
 | 
				
			||||||
 | 
					    virtual void enabled(bool value) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
					    InterfaceObject* getInterfaceObject(uint8_t idx);
 | 
				
			||||||
    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
					    InterfaceObject* getInterfaceObject(ObjectType objectType, uint8_t objectInstance);
 | 
				
			||||||
    DataLinkLayer& dataLinkLayer();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
					    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
 | 
				
			|||||||
@ -21,22 +21,6 @@ BauSystemB::BauSystemB(Platform& platform): _memory(platform, _deviceObj),
 | 
				
			|||||||
    _memory.addSaveRestore(&_appProgram);
 | 
					    _memory.addSaveRestore(&_appProgram);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void BauSystemB::loop()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    dataLinkLayer().loop();
 | 
					 | 
				
			||||||
    nextRestartState();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
bool BauSystemB::enabled()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return dataLinkLayer().enabled();
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BauSystemB::enabled(bool value)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    dataLinkLayer().enabled(value);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void BauSystemB::readMemory()
 | 
					void BauSystemB::readMemory()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    _memory.readMemory();
 | 
					    _memory.readMemory();
 | 
				
			||||||
@ -166,6 +150,7 @@ void BauSystemB::memoryExtReadIndication(Priority priority, HopCountType hopType
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void BauSystemB::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
					void BauSystemB::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    _deviceObj.masterReset(eraseCode, channel);
 | 
				
			||||||
    _appProgram.masterReset(eraseCode, channel);
 | 
					    _appProgram.masterReset(eraseCode, channel);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -16,13 +16,13 @@ class BauSystemB : protected BusAccessUnit
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    BauSystemB(Platform& platform);
 | 
					    BauSystemB(Platform& platform);
 | 
				
			||||||
    virtual void loop();
 | 
					    virtual void loop() = 0;
 | 
				
			||||||
    ApplicationProgramObject& parameters();
 | 
					    ApplicationProgramObject& parameters();
 | 
				
			||||||
    DeviceObject& deviceObject();
 | 
					    DeviceObject& deviceObject();
 | 
				
			||||||
    Memory& memory();
 | 
					    Memory& memory();
 | 
				
			||||||
    bool configured();
 | 
					    bool configured();
 | 
				
			||||||
    bool enabled();
 | 
					    virtual bool enabled() = 0;
 | 
				
			||||||
    void enabled(bool value);
 | 
					    virtual void enabled(bool value) = 0;
 | 
				
			||||||
    void readMemory();
 | 
					    void readMemory();
 | 
				
			||||||
    void writeMemory();
 | 
					    void writeMemory();
 | 
				
			||||||
    void addSaveRestore(SaveRestore* obj);
 | 
					    void addSaveRestore(SaveRestore* obj);
 | 
				
			||||||
@ -37,7 +37,6 @@ class BauSystemB : protected BusAccessUnit
 | 
				
			|||||||
                            uint8_t* data, uint32_t length) override;
 | 
					                            uint8_t* data, uint32_t length) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    virtual DataLinkLayer& dataLinkLayer() = 0;
 | 
					 | 
				
			||||||
    virtual ApplicationLayer& applicationLayer() = 0;
 | 
					    virtual ApplicationLayer& applicationLayer() = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void memoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number,
 | 
					    void memoryWriteIndication(Priority priority, HopCountType hopType, uint16_t asap, const SecurityControl &secCtrl, uint8_t number,
 | 
				
			||||||
 | 
				
			|||||||
@ -13,9 +13,6 @@ BauSystemBCoupler::BauSystemBCoupler(Platform& platform) :
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
    _transLayer(_appLayer), _netLayer(_deviceObj, _transLayer)
 | 
					    _transLayer(_appLayer), _netLayer(_deviceObj, _transLayer)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef USE_DATASECURE
 | 
					 | 
				
			||||||
    _secIfObj.secureApplicationLayer(_appLayer);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    _appLayer.transportLayer(_transLayer);
 | 
					    _appLayer.transportLayer(_transLayer);
 | 
				
			||||||
    _transLayer.networkLayer(_netLayer);
 | 
					    _transLayer.networkLayer(_netLayer);
 | 
				
			||||||
    _memory.addSaveRestore(&_deviceObj);
 | 
					    _memory.addSaveRestore(&_deviceObj);
 | 
				
			||||||
@ -33,7 +30,6 @@ ApplicationLayer& BauSystemBCoupler::applicationLayer()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void BauSystemBCoupler::loop()
 | 
					void BauSystemBCoupler::loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    dataLinkLayer().loop();
 | 
					 | 
				
			||||||
    _transLayer.loop();
 | 
					    _transLayer.loop();
 | 
				
			||||||
#ifdef USE_DATASECURE
 | 
					#ifdef USE_DATASECURE
 | 
				
			||||||
    _appLayer.loop();
 | 
					    _appLayer.loop();
 | 
				
			||||||
@ -54,4 +50,5 @@ bool BauSystemBCoupler::configured()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void BauSystemBCoupler::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
					void BauSystemBCoupler::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    BauSystemB::doMasterReset(eraseCode, channel);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -24,10 +24,9 @@ class BauSystemBCoupler : public BauSystemB
 | 
				
			|||||||
    bool configured();
 | 
					    bool configured();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
    virtual DataLinkLayer& dataLinkLayer() = 0;
 | 
					 | 
				
			||||||
    virtual ApplicationLayer& applicationLayer() override;
 | 
					    virtual ApplicationLayer& applicationLayer() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel);
 | 
					    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    enum RestartState
 | 
					    enum RestartState
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
				
			|||||||
@ -14,9 +14,6 @@ BauSystemBDevice::BauSystemBDevice(Platform& platform) :
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
    _transLayer(_appLayer), _netLayer(_deviceObj, _transLayer)
 | 
					    _transLayer(_appLayer), _netLayer(_deviceObj, _transLayer)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifdef USE_DATASECURE
 | 
					 | 
				
			||||||
    _secIfObj.secureApplicationLayer(_appLayer);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    _appLayer.transportLayer(_transLayer);
 | 
					    _appLayer.transportLayer(_transLayer);
 | 
				
			||||||
    _appLayer.associationTableObject(_assocTable);
 | 
					    _appLayer.associationTableObject(_assocTable);
 | 
				
			||||||
    _appLayer.groupAddressTable(_addrTable);
 | 
					    _appLayer.groupAddressTable(_addrTable);
 | 
				
			||||||
@ -39,7 +36,6 @@ ApplicationLayer& BauSystemBDevice::applicationLayer()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void BauSystemBDevice::loop()
 | 
					void BauSystemBDevice::loop()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    dataLinkLayer().loop();
 | 
					 | 
				
			||||||
    _transLayer.loop();
 | 
					    _transLayer.loop();
 | 
				
			||||||
    sendNextGroupTelegram();
 | 
					    sendNextGroupTelegram();
 | 
				
			||||||
    nextRestartState();
 | 
					    nextRestartState();
 | 
				
			||||||
@ -138,10 +134,11 @@ bool BauSystemBDevice::configured()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void BauSystemBDevice::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
					void BauSystemBDevice::doMasterReset(EraseCode eraseCode, uint8_t channel)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    BauSystemB::doMasterReset(eraseCode, channel);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _addrTable.masterReset(eraseCode, channel);
 | 
					    _addrTable.masterReset(eraseCode, channel);
 | 
				
			||||||
    _assocTable.masterReset(eraseCode, channel);
 | 
					    _assocTable.masterReset(eraseCode, channel);
 | 
				
			||||||
    _groupObjTable.masterReset(eraseCode, channel);
 | 
					    _groupObjTable.masterReset(eraseCode, channel);
 | 
				
			||||||
    _appProgram.masterReset(eraseCode, channel);
 | 
					 | 
				
			||||||
#ifdef USE_DATASECURE
 | 
					#ifdef USE_DATASECURE
 | 
				
			||||||
    // If erase code is FactoryReset or FactoryResetWithoutIA, set FDSK as toolkey again
 | 
					    // If erase code is FactoryReset or FactoryResetWithoutIA, set FDSK as toolkey again
 | 
				
			||||||
    // and disable security mode.
 | 
					    // and disable security mode.
 | 
				
			||||||
 | 
				
			|||||||
@ -22,7 +22,6 @@ class BauSystemBDevice : public BauSystemB
 | 
				
			|||||||
    BauSystemBDevice(Platform& platform);
 | 
					    BauSystemBDevice(Platform& platform);
 | 
				
			||||||
    virtual void loop();
 | 
					    virtual void loop();
 | 
				
			||||||
    GroupObjectTableObject& groupObjectTable();
 | 
					    GroupObjectTableObject& groupObjectTable();
 | 
				
			||||||
    Memory& memory();
 | 
					 | 
				
			||||||
    bool configured();
 | 
					    bool configured();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  protected:
 | 
					  protected:
 | 
				
			||||||
@ -40,7 +39,7 @@ class BauSystemBDevice : public BauSystemB
 | 
				
			|||||||
    void sendNextGroupTelegram();
 | 
					    void sendNextGroupTelegram();
 | 
				
			||||||
    void updateGroupObject(GroupObject& go, uint8_t* data, uint8_t length);
 | 
					    void updateGroupObject(GroupObject& go, uint8_t* data, uint8_t length);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel);
 | 
					    virtual void doMasterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    AddressTableObject _addrTable;
 | 
					    AddressTableObject _addrTable;
 | 
				
			||||||
    AssociationTableObject _assocTable;
 | 
					    AssociationTableObject _assocTable;
 | 
				
			||||||
 | 
				
			|||||||
@ -1251,24 +1251,6 @@ bool SecureApplicationLayer::createSecureApdu(APDU& plainApdu, APDU& secureApdu,
 | 
				
			|||||||
    return false;
 | 
					    return false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SecureApplicationLayer::clearFailureLog()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    println("clearFailureLog()");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void SecureApplicationLayer::getFailureCounters(uint8_t* data)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    memset(data, 0, 8);
 | 
					 | 
				
			||||||
    println("getFailureCounters()");
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uint8_t SecureApplicationLayer::getFromFailureLogByIndex(uint8_t index, uint8_t* data, uint8_t maxDataLen)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    print("getFromFailureLogByIndex(): Index: ");
 | 
					 | 
				
			||||||
    println(index);
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uint64_t SecureApplicationLayer::getRandomNumber()
 | 
					uint64_t SecureApplicationLayer::getRandomNumber()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return 0x000102030405; // TODO: generate random number
 | 
					    return 0x000102030405; // TODO: generate random number
 | 
				
			||||||
 | 
				
			|||||||
@ -32,10 +32,6 @@ class SecureApplicationLayer :  public ApplicationLayer
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void groupAddressTable(AddressTableObject& addrTable);
 | 
					    void groupAddressTable(AddressTableObject& addrTable);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void clearFailureLog();
 | 
					 | 
				
			||||||
    void getFailureCounters(uint8_t* data);
 | 
					 | 
				
			||||||
    uint8_t getFromFailureLogByIndex(uint8_t index, uint8_t* data, uint8_t maxDataLen);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // from transport layer
 | 
					    // from transport layer
 | 
				
			||||||
    virtual void dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu) override;
 | 
					    virtual void dataGroupIndication(HopCountType hopType, Priority priority, uint16_t tsap, APDU& apdu) override;
 | 
				
			||||||
    virtual void dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap,
 | 
					    virtual void dataGroupConfirm(AckType ack, HopCountType hopType, Priority priority, uint16_t tsap,
 | 
				
			||||||
 | 
				
			|||||||
@ -97,7 +97,7 @@ SecurityInterfaceObject::SecurityInterfaceObject()
 | 
				
			|||||||
                uint8_t info = data[2];
 | 
					                uint8_t info = data[2];
 | 
				
			||||||
                if (id == 0 && info == 0)
 | 
					                if (id == 0 && info == 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    obj->_secAppLayer->clearFailureLog();
 | 
					                    obj->clearFailureLog();
 | 
				
			||||||
                    resultData[0] = ReturnCodes::Success;
 | 
					                    resultData[0] = ReturnCodes::Success;
 | 
				
			||||||
                    resultData[1] = id;
 | 
					                    resultData[1] = id;
 | 
				
			||||||
                    resultLength = 2;
 | 
					                    resultLength = 2;
 | 
				
			||||||
@ -123,7 +123,7 @@ SecurityInterfaceObject::SecurityInterfaceObject()
 | 
				
			|||||||
                    resultData[0] = ReturnCodes::Success;
 | 
					                    resultData[0] = ReturnCodes::Success;
 | 
				
			||||||
                    resultData[1] = id;
 | 
					                    resultData[1] = id;
 | 
				
			||||||
                    resultData[2] = info;
 | 
					                    resultData[2] = info;
 | 
				
			||||||
                    obj->_secAppLayer->getFailureCounters(&resultData[3]); // Put 8 bytes in the buffer
 | 
					                    obj->getFailureCounters(&resultData[3]); // Put 8 bytes in the buffer
 | 
				
			||||||
                    resultLength = 3 + 8;
 | 
					                    resultLength = 3 + 8;
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@ -132,7 +132,7 @@ SecurityInterfaceObject::SecurityInterfaceObject()
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    uint8_t maxBufferSize = resultLength; // Remember the maximum buffer size of the buffer that is provided to us
 | 
					                    uint8_t maxBufferSize = resultLength; // Remember the maximum buffer size of the buffer that is provided to us
 | 
				
			||||||
                    uint8_t index = info;
 | 
					                    uint8_t index = info;
 | 
				
			||||||
                    uint8_t numBytes = obj->_secAppLayer->getFromFailureLogByIndex(index, &resultData[2], maxBufferSize);
 | 
					                    uint8_t numBytes = obj->getFromFailureLogByIndex(index, &resultData[2], maxBufferSize);
 | 
				
			||||||
                    if ( numBytes > 0)
 | 
					                    if ( numBytes > 0)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        resultData[0] = ReturnCodes::Success;
 | 
					                        resultData[0] = ReturnCodes::Success;
 | 
				
			||||||
@ -163,11 +163,6 @@ SecurityInterfaceObject::SecurityInterfaceObject()
 | 
				
			|||||||
    initializeProperties(sizeof(properties), properties);
 | 
					    initializeProperties(sizeof(properties), properties);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void SecurityInterfaceObject::secureApplicationLayer(SecureApplicationLayer& secAppLayer)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    _secAppLayer = &secAppLayer;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
uint8_t* SecurityInterfaceObject::save(uint8_t* buffer)
 | 
					uint8_t* SecurityInterfaceObject::save(uint8_t* buffer)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    buffer = pushByte(_state, buffer);
 | 
					    buffer = pushByte(_state, buffer);
 | 
				
			||||||
@ -206,6 +201,24 @@ bool SecurityInterfaceObject::isSecurityModeEnabled()
 | 
				
			|||||||
    return _securityModeEnabled;
 | 
					    return _securityModeEnabled;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecurityInterfaceObject::clearFailureLog()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    println("clearFailureLog()");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void SecurityInterfaceObject::getFailureCounters(uint8_t* data)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    memset(data, 0, 8);
 | 
				
			||||||
 | 
					    println("getFailureCounters()");
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					uint8_t SecurityInterfaceObject::getFromFailureLogByIndex(uint8_t index, uint8_t* data, uint8_t maxDataLen)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    print("getFromFailureLogByIndex(): Index: ");
 | 
				
			||||||
 | 
					    println(index);
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool SecurityInterfaceObject::isLoaded()
 | 
					bool SecurityInterfaceObject::isLoaded()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return _state == LS_LOADED;
 | 
					    return _state == LS_LOADED;
 | 
				
			||||||
 | 
				
			|||||||
@ -6,15 +6,11 @@
 | 
				
			|||||||
#include "interface_object.h"
 | 
					#include "interface_object.h"
 | 
				
			||||||
#include "knx_types.h"
 | 
					#include "knx_types.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SecureApplicationLayer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class SecurityInterfaceObject: public InterfaceObject
 | 
					class SecurityInterfaceObject: public InterfaceObject
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  SecurityInterfaceObject();
 | 
					  SecurityInterfaceObject();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void secureApplicationLayer(SecureApplicationLayer& secAppLayer);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  virtual void masterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
					  virtual void masterReset(EraseCode eraseCode, uint8_t channel) override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool isSecurityModeEnabled();
 | 
					  bool isSecurityModeEnabled();
 | 
				
			||||||
@ -39,10 +35,12 @@ public:
 | 
				
			|||||||
  uint16_t saveSize() override;
 | 
					  uint16_t saveSize() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  SecureApplicationLayer* _secAppLayer = nullptr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  void setSecurityMode(bool enabled);
 | 
					  void setSecurityMode(bool enabled);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void clearFailureLog();
 | 
				
			||||||
 | 
					  void getFailureCounters(uint8_t* data);
 | 
				
			||||||
 | 
					  uint8_t getFromFailureLogByIndex(uint8_t index, uint8_t* data, uint8_t maxDataLen);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void errorCode(ErrorCode errorCode);
 | 
					  void errorCode(ErrorCode errorCode);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void loadEvent(const uint8_t* data);
 | 
					  void loadEvent(const uint8_t* data);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user