mirror of
https://github.com/thelsing/knx.git
synced 2024-12-18 19:08:18 +01:00
add timeout for TPUART reset (#23)
* bugfix, print not allowed in constructor * add timeout for chip reset
This commit is contained in:
parent
0a8c231627
commit
d6278192a0
@ -82,6 +82,7 @@
|
||||
|
||||
#define BYTE_TIMEOUT 3 //milli seconds
|
||||
#define CONFIRM_TIMEOUT 500 //milli seconds
|
||||
#define RESET_TIMEOUT 100 //milli seconds
|
||||
|
||||
void TpUartDataLinkLayer::loop()
|
||||
{
|
||||
@ -369,15 +370,18 @@ bool TpUartDataLinkLayer::sendFrame(CemiFrame& frame)
|
||||
return true;
|
||||
}
|
||||
|
||||
void TpUartDataLinkLayer::resetChip()
|
||||
bool TpUartDataLinkLayer::resetChip()
|
||||
{
|
||||
uint8_t cmd = U_RESET_REQ;
|
||||
_platform.writeUart(cmd);
|
||||
_waitConfirmStartTime = _platform.millis();
|
||||
while (true)
|
||||
{
|
||||
int resp = _platform.readUart();
|
||||
if (resp == U_RESET_IND)
|
||||
break;
|
||||
return true;
|
||||
else if (_platform.millis() - _waitConfirmStartTime > RESET_TIMEOUT)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -421,10 +425,16 @@ void TpUartDataLinkLayer::enabled(bool value)
|
||||
if (value && !_enabled)
|
||||
{
|
||||
_platform.setupUart();
|
||||
print("ownaddr ");
|
||||
println(_deviceObject.induvidualAddress(), HEX);
|
||||
resetChip();
|
||||
_enabled = true;
|
||||
|
||||
if (resetChip()){
|
||||
_enabled = true;
|
||||
print("ownaddr ");
|
||||
println(_deviceObject.induvidualAddress(), HEX);
|
||||
}
|
||||
else{
|
||||
_enabled = false;
|
||||
println("ERROR, TPUART not responding");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -56,6 +56,6 @@ class TpUartDataLinkLayer : public DataLinkLayer
|
||||
bool sendFrame(CemiFrame& frame);
|
||||
void frameBytesReceived(uint8_t* buffer, uint16_t length);
|
||||
void dataConBytesReceived(uint8_t* buffer, uint16_t length, bool success);
|
||||
void resetChip();
|
||||
bool resetChip();
|
||||
void stopChip();
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user