mirror of
https://github.com/thelsing/knx.git
synced 2026-02-23 13:50:35 +01:00
remove mdelay and millis from platform
This commit is contained in:
@@ -31,16 +31,6 @@ void EspPlatform::macAddress(uint8_t * addr)
|
||||
wifi_get_macaddr(STATION_IF, addr);
|
||||
}
|
||||
|
||||
uint32_t EspPlatform::millis()
|
||||
{
|
||||
return ::millis();
|
||||
}
|
||||
|
||||
void EspPlatform::mdelay(uint32_t millis)
|
||||
{
|
||||
delay(millis);
|
||||
}
|
||||
|
||||
void EspPlatform::restart()
|
||||
{
|
||||
Serial.println("restart");
|
||||
|
||||
@@ -1,27 +1,25 @@
|
||||
#ifdef ARDUINO_ARCH_ESP8266
|
||||
#include "knx/platform.h"
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
|
||||
#define SerialDBG Serial
|
||||
|
||||
class EspPlatform : public Platform
|
||||
{
|
||||
public:
|
||||
EspPlatform();
|
||||
|
||||
// ip stuff
|
||||
uint32_t currentIpAddress();
|
||||
uint32_t currentSubnetMask();
|
||||
uint32_t currentDefaultGateway();
|
||||
void macAddress(uint8_t* addr);
|
||||
|
||||
// basic stuff
|
||||
uint32_t millis();
|
||||
void mdelay(uint32_t millis);
|
||||
void restart();
|
||||
void fatalError();
|
||||
|
||||
#ifdef ARDUINO_ARCH_ESP8266
|
||||
#include "knx/platform.h"
|
||||
#include <ESP8266WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
|
||||
#define SerialDBG Serial
|
||||
|
||||
class EspPlatform : public Platform
|
||||
{
|
||||
public:
|
||||
EspPlatform();
|
||||
|
||||
// ip stuff
|
||||
uint32_t currentIpAddress();
|
||||
uint32_t currentSubnetMask();
|
||||
uint32_t currentDefaultGateway();
|
||||
void macAddress(uint8_t* addr);
|
||||
|
||||
// basic stuff
|
||||
void restart();
|
||||
void fatalError();
|
||||
|
||||
//multicast
|
||||
void setupMultiCast(uint32_t addr, uint16_t port);
|
||||
void closeMultiCast();
|
||||
@@ -29,21 +27,21 @@ public:
|
||||
int readBytes(uint8_t* buffer, uint16_t maxLen);
|
||||
|
||||
//uart
|
||||
void setupUart();
|
||||
void closeUart();
|
||||
int uartAvailable();
|
||||
size_t writeUart(const uint8_t data);
|
||||
size_t writeUart(const uint8_t *buffer, size_t size);
|
||||
int readUart();
|
||||
void setupUart();
|
||||
void closeUart();
|
||||
int uartAvailable();
|
||||
size_t writeUart(const uint8_t data);
|
||||
size_t writeUart(const uint8_t *buffer, size_t size);
|
||||
int readUart();
|
||||
size_t readBytesUart(uint8_t *buffer, size_t length);
|
||||
|
||||
//memory
|
||||
uint8_t* getEepromBuffer(uint16_t size);
|
||||
void commitToEeprom();
|
||||
private:
|
||||
uint32_t _mulitcastAddr;
|
||||
uint16_t _mulitcastPort;
|
||||
WiFiUDP _udp;
|
||||
};
|
||||
|
||||
private:
|
||||
uint32_t _mulitcastAddr;
|
||||
uint16_t _mulitcastPort;
|
||||
WiFiUDP _udp;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -5,7 +5,7 @@
|
||||
BauSystemB::BauSystemB(Platform& platform): _memory(platform), _addrTable(platform),
|
||||
_assocTable(platform), _groupObjTable(platform), _appProgram(platform),
|
||||
_platform(platform), _appLayer(_assocTable, *this),
|
||||
_transLayer(_appLayer, _addrTable, _platform), _netLayer(_transLayer)
|
||||
_transLayer(_appLayer, _addrTable), _netLayer(_transLayer)
|
||||
{
|
||||
_appLayer.transportLayer(_transLayer);
|
||||
_transLayer.networkLayer(_netLayer);
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
#define DEC 10
|
||||
#define HEX 16
|
||||
|
||||
void delay(uint32_t millis);
|
||||
uint32_t millis();
|
||||
|
||||
#elif ARDUINO_ARCH_SAMD
|
||||
#include <Arduino.h>
|
||||
#define htons(x) ( (((x)<<8)&0xFF00) | (((x)>>8)&0xFF) )
|
||||
|
||||
@@ -35,7 +35,7 @@ bool IpDataLinkLayer::sendFrame(CemiFrame& frame)
|
||||
|
||||
bool success = sendBytes(buffer, length);
|
||||
// only send 50 packet per second: see KNX 3.2.6 p.6
|
||||
_platform.mdelay(20);
|
||||
delay(20);
|
||||
dataConReceived(frame, success);
|
||||
delete[] buffer;
|
||||
return success;
|
||||
|
||||
@@ -13,10 +13,10 @@ class Platform
|
||||
virtual uint32_t currentDefaultGateway() = 0;
|
||||
virtual void macAddress(uint8_t* data) = 0;
|
||||
|
||||
virtual uint32_t millis() = 0;
|
||||
//virtual uint32_t millis() = 0;
|
||||
virtual void restart() = 0;
|
||||
virtual void fatalError() = 0;
|
||||
virtual void mdelay(uint32_t millis) = 0;
|
||||
//virtual void mdelay(uint32_t millis) = 0;
|
||||
|
||||
virtual void setupMultiCast(uint32_t addr, uint16_t port) = 0;
|
||||
virtual void closeMultiCast() = 0;
|
||||
|
||||
@@ -115,13 +115,13 @@ void TpUartDataLinkLayer::loop()
|
||||
if (sendSingleFrameByte() == false)
|
||||
{
|
||||
_waitConfirm = true;
|
||||
_waitConfirmStartTime = _platform.millis();
|
||||
_waitConfirmStartTime = millis();
|
||||
_loopState = IDLE;
|
||||
}
|
||||
break;
|
||||
case RX_FIRST_BYTE:
|
||||
rxByte = _platform.readUart();
|
||||
_lastByteRxTime = _platform.millis();
|
||||
_lastByteRxTime = millis();
|
||||
_RxByteCnt = 0;
|
||||
_xorSum = 0;
|
||||
if ((rxByte & L_DATA_MASK) == L_DATA_STANDARD_IND)
|
||||
@@ -208,7 +208,7 @@ void TpUartDataLinkLayer::loop()
|
||||
_loopState = IDLE;
|
||||
break;
|
||||
case RX_L_DATA:
|
||||
if (_platform.millis() - _lastByteRxTime > BYTE_TIMEOUT)
|
||||
if (millis() - _lastByteRxTime > BYTE_TIMEOUT)
|
||||
{
|
||||
_RxByteCnt = 0;
|
||||
_loopState = IDLE;
|
||||
@@ -217,7 +217,7 @@ void TpUartDataLinkLayer::loop()
|
||||
}
|
||||
if (!_platform.uartAvailable())
|
||||
break;
|
||||
_lastByteRxTime = _platform.millis();
|
||||
_lastByteRxTime = millis();
|
||||
rxByte = _platform.readUart();
|
||||
|
||||
if (_RxByteCnt == MAX_KNX_TELEGRAM_SIZE)
|
||||
@@ -314,7 +314,7 @@ void TpUartDataLinkLayer::loop()
|
||||
if (!_platform.uartAvailable())
|
||||
break;
|
||||
rxByte = _platform.readUart();
|
||||
_lastByteRxTime = _platform.millis();
|
||||
_lastByteRxTime = millis();
|
||||
if ((rxByte & L_DATA_CON_MASK) == L_DATA_CON)
|
||||
{
|
||||
//println("L_DATA_CON received");
|
||||
@@ -343,7 +343,7 @@ void TpUartDataLinkLayer::loop()
|
||||
|
||||
if (_waitConfirm)
|
||||
{
|
||||
if (_platform.millis() - _waitConfirmStartTime > CONFIRM_TIMEOUT)
|
||||
if (millis() - _waitConfirmStartTime > CONFIRM_TIMEOUT)
|
||||
{
|
||||
println("L_DATA_CON not received within expected time");
|
||||
uint8_t cemiBuffer[MAX_KNX_TELEGRAM_SIZE];
|
||||
@@ -374,13 +374,13 @@ bool TpUartDataLinkLayer::resetChip()
|
||||
{
|
||||
uint8_t cmd = U_RESET_REQ;
|
||||
_platform.writeUart(cmd);
|
||||
_waitConfirmStartTime = _platform.millis();
|
||||
_waitConfirmStartTime = millis();
|
||||
while (true)
|
||||
{
|
||||
int resp = _platform.readUart();
|
||||
if (resp == U_RESET_IND)
|
||||
return true;
|
||||
else if (_platform.millis() - _waitConfirmStartTime > RESET_TIMEOUT)
|
||||
else if (millis() - _waitConfirmStartTime > RESET_TIMEOUT)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,11 @@
|
||||
#include "network_layer.h"
|
||||
#include "application_layer.h"
|
||||
#include "platform.h"
|
||||
#include "bits.h"
|
||||
#include <stdio.h>
|
||||
|
||||
TransportLayer::TransportLayer(ApplicationLayer& layer, AddressTableObject& gat, Platform& platform): _savedFrame(0),
|
||||
_savedFrameConnecting(0), _applicationLayer(layer), _groupAddressTable(gat), _platform(platform)
|
||||
TransportLayer::TransportLayer(ApplicationLayer& layer, AddressTableObject& gat): _savedFrame(0),
|
||||
_savedFrameConnecting(0), _applicationLayer(layer), _groupAddressTable(gat)
|
||||
{
|
||||
_currentState = Closed;
|
||||
}
|
||||
@@ -528,13 +529,13 @@ void TransportLayer::ackTimeoutIndication()
|
||||
|
||||
void TransportLayer::loop()
|
||||
{
|
||||
uint32_t millis = _platform.millis();
|
||||
if (_connectionTimeoutEnabled
|
||||
&& (millis - _connectionTimeoutStartMillis) > _connectionTimeoutMillis)
|
||||
uint32_t milliseconds = millis();
|
||||
if (_connectionTimeoutEnabled
|
||||
&& (milliseconds - _connectionTimeoutStartMillis) > _connectionTimeoutMillis)
|
||||
connectionTimeoutIndication();
|
||||
|
||||
if (_ackTimeoutEnabled
|
||||
&& (millis - _ackTimeoutStartMillis) > _ackTimeoutMillis)
|
||||
&& (milliseconds - _ackTimeoutStartMillis) > _ackTimeoutMillis)
|
||||
ackTimeoutIndication();
|
||||
|
||||
if (_savedConnectingValid)
|
||||
@@ -696,7 +697,7 @@ void TransportLayer::A15(Priority priority, uint16_t tsap)
|
||||
|
||||
void TransportLayer::enableConnectionTimeout()
|
||||
{
|
||||
_connectionTimeoutStartMillis = _platform.millis();
|
||||
_connectionTimeoutStartMillis = millis();
|
||||
_connectionTimeoutEnabled = true;
|
||||
}
|
||||
|
||||
@@ -707,7 +708,7 @@ void TransportLayer::disableConnectionTimeout()
|
||||
|
||||
void TransportLayer::enableAckTimeout()
|
||||
{
|
||||
_ackTimeoutStartMillis = _platform.millis();
|
||||
_ackTimeoutStartMillis = millis();
|
||||
_ackTimeoutEnabled = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ enum StateType { Closed, OpenIdle, OpenWait, Connecting };
|
||||
class TransportLayer
|
||||
{
|
||||
public:
|
||||
TransportLayer(ApplicationLayer& layer, AddressTableObject& gat, Platform& platform);
|
||||
TransportLayer(ApplicationLayer& layer, AddressTableObject& gat);
|
||||
void networkLayer(NetworkLayer& layer);
|
||||
|
||||
#pragma region from network layer
|
||||
@@ -114,5 +114,4 @@ private:
|
||||
ApplicationLayer& _applicationLayer;
|
||||
AddressTableObject& _groupAddressTable;
|
||||
NetworkLayer* _networkLayer;
|
||||
Platform& _platform;
|
||||
};
|
||||
|
||||
@@ -58,7 +58,7 @@ uint32_t LinuxPlatform::currentDefaultGateway()
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t LinuxPlatform::millis()
|
||||
uint32_t millis()
|
||||
{
|
||||
struct timespec spec;
|
||||
|
||||
@@ -66,7 +66,7 @@ uint32_t LinuxPlatform::millis()
|
||||
return spec.tv_sec * 1000 + round(spec.tv_nsec / 1.0e6);
|
||||
}
|
||||
|
||||
void LinuxPlatform::mdelay(uint32_t millis)
|
||||
void delay(uint32_t millis)
|
||||
{
|
||||
struct timespec ts;
|
||||
ts.tv_sec = millis / 1000;
|
||||
|
||||
@@ -23,8 +23,6 @@ public:
|
||||
void macAddress(uint8_t* addr) override;
|
||||
|
||||
// basic stuff
|
||||
uint32_t millis() override;
|
||||
void mdelay(uint32_t millis) override;
|
||||
void restart() override;
|
||||
void fatalError() override;
|
||||
|
||||
|
||||
@@ -33,16 +33,6 @@ void SamdPlatform::macAddress(uint8_t * addr)
|
||||
// not needed
|
||||
}
|
||||
|
||||
uint32_t SamdPlatform::millis()
|
||||
{
|
||||
return::millis();
|
||||
}
|
||||
|
||||
void SamdPlatform::mdelay(uint32_t millis)
|
||||
{
|
||||
delay(millis);
|
||||
}
|
||||
|
||||
void SamdPlatform::restart()
|
||||
{
|
||||
SerialDBG.println("restart");
|
||||
|
||||
@@ -1,29 +1,27 @@
|
||||
#include "knx/platform.h"
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
#ifdef ARDUINO_ARCH_SAMD
|
||||
|
||||
#define SerialDBG SerialUSB
|
||||
#define SerialKNX Serial1
|
||||
|
||||
class SamdPlatform : public Platform
|
||||
{
|
||||
public:
|
||||
SamdPlatform();
|
||||
|
||||
// ip stuff
|
||||
uint32_t currentIpAddress();
|
||||
uint32_t currentSubnetMask();
|
||||
uint32_t currentDefaultGateway();
|
||||
void macAddress(uint8_t* addr);
|
||||
|
||||
// basic stuff
|
||||
uint32_t millis();
|
||||
void mdelay(uint32_t millis);
|
||||
void restart();
|
||||
void fatalError();
|
||||
|
||||
#include "knx/platform.h"
|
||||
|
||||
#include "Arduino.h"
|
||||
|
||||
#ifdef ARDUINO_ARCH_SAMD
|
||||
|
||||
#define SerialDBG SerialUSB
|
||||
#define SerialKNX Serial1
|
||||
|
||||
class SamdPlatform : public Platform
|
||||
{
|
||||
public:
|
||||
SamdPlatform();
|
||||
|
||||
// ip stuff
|
||||
uint32_t currentIpAddress();
|
||||
uint32_t currentSubnetMask();
|
||||
uint32_t currentDefaultGateway();
|
||||
void macAddress(uint8_t* addr);
|
||||
|
||||
// basic stuff
|
||||
void restart();
|
||||
void fatalError();
|
||||
|
||||
//multicast
|
||||
void setupMultiCast(uint32_t addr, uint16_t port);
|
||||
void closeMultiCast();
|
||||
@@ -31,20 +29,20 @@ public:
|
||||
int readBytes(uint8_t* buffer, uint16_t maxLen);
|
||||
|
||||
//uart
|
||||
virtual void setupUart();
|
||||
virtual void closeUart();
|
||||
virtual int uartAvailable();
|
||||
virtual size_t writeUart(const uint8_t data);
|
||||
virtual size_t writeUart(const uint8_t *buffer, size_t size);
|
||||
virtual int readUart();
|
||||
virtual void setupUart();
|
||||
virtual void closeUart();
|
||||
virtual int uartAvailable();
|
||||
virtual size_t writeUart(const uint8_t data);
|
||||
virtual size_t writeUart(const uint8_t *buffer, size_t size);
|
||||
virtual int readUart();
|
||||
virtual size_t readBytesUart(uint8_t *buffer, size_t length);
|
||||
|
||||
//memory
|
||||
uint8_t* getEepromBuffer(uint16_t size);
|
||||
void commitToEeprom();
|
||||
private:
|
||||
uint32_t _mulitcastAddr;
|
||||
uint16_t _mulitcastPort;
|
||||
};
|
||||
|
||||
private:
|
||||
uint32_t _mulitcastAddr;
|
||||
uint16_t _mulitcastPort;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user