- changed timeouts on client side from real time to monotonic time (LIB61850-535)

v1.6_develop
Michael Zillgith 1 day ago
parent 80a01bd935
commit 815e9e47be

@ -353,7 +353,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
{
if (sendConnectionRequestMessage(self))
{
self->nextReadTimeout = Hal_getTimeInMs() + self->readTimeoutInMs;
self->nextReadTimeout = Hal_getMonotonicTimeInMs() + self->readTimeoutInMs;
nextState = INT_STATE_WAIT_FOR_COTP_CONNECT_RESP;
}
else
@ -373,7 +373,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
{
/* check connect timeout */
uint64_t currentTime = Hal_getTimeInMs();
uint64_t currentTime = Hal_getMonotonicTimeInMs();
if (currentTime > self->nextReadTimeout)
{
@ -392,7 +392,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
case INT_STATE_WAIT_FOR_COTP_CONNECT_RESP:
{
uint64_t currentTime = Hal_getTimeInMs();
uint64_t currentTime = Hal_getMonotonicTimeInMs();
if (currentTime > self->nextReadTimeout)
{
@ -428,7 +428,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
{
sendAcseInitiateRequest(self);
self->nextReadTimeout = Hal_getTimeInMs() + self->readTimeoutInMs;
self->nextReadTimeout = Hal_getMonotonicTimeInMs() + self->readTimeoutInMs;
nextState = INT_STATE_WAIT_FOR_ACSE_RESP;
}
@ -453,7 +453,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
case INT_STATE_WAIT_FOR_ACSE_RESP:
{
uint64_t currentTime = Hal_getTimeInMs();
uint64_t currentTime = Hal_getMonotonicTimeInMs();
if (currentTime > self->nextReadTimeout)
{
@ -706,13 +706,13 @@ IsoClientConnection_associateAsync(IsoClientConnection self, uint32_t connectTim
self->readTimeoutInMs = readTimeoutInMs;
/* set timeout for connect */
self->nextReadTimeout = Hal_getTimeInMs() + connectTimeoutInMs;
self->nextReadTimeout = Hal_getMonotonicTimeInMs() + connectTimeoutInMs;
/* Connect to Local Ip Address*/
if (self->parameters->localIpAddress) {
Socket_bind(self->socket, self->parameters->localIpAddress, self->parameters->localTcpPort);
}
if (Socket_connectAsync(self->socket, self->parameters->hostname, self->parameters->tcpPort) == false)
{
Socket_destroy(self->socket);
@ -725,9 +725,9 @@ IsoClientConnection_associateAsync(IsoClientConnection self, uint32_t connectTim
success = false;
}
Semaphore_post(self->tickMutex);
return success;
}

@ -296,7 +296,7 @@ addToOutstandingCalls(MmsConnection self, uint32_t invokeId, eMmsOutstandingCall
{
self->outstandingCalls[i].isUsed = true;
self->outstandingCalls[i].invokeId = invokeId;
self->outstandingCalls[i].timeout = Hal_getTimeInMs() + self->requestTimeout;
self->outstandingCalls[i].timeout = Hal_getMonotonicTimeInMs() + self->requestTimeout;
self->outstandingCalls[i].type = type;
self->outstandingCalls[i].userCallback = userCallback;
self->outstandingCalls[i].userParameter = userParameter;
@ -1083,7 +1083,7 @@ mmsIsoCallback(IsoIndication indication, void* parameter, ByteBuffer* payload)
{
/* check timeouts */
uint64_t currentTime = Hal_getTimeInMs();
uint64_t currentTime = Hal_getMonotonicTimeInMs();
int i = 0;
@ -1171,7 +1171,7 @@ mmsIsoCallback(IsoIndication indication, void* parameter, ByteBuffer* payload)
return false;
}
if (payload != NULL)
if (payload != NULL)
{
if (ByteBuffer_getSize(payload) < 1) {
return false;
@ -2030,9 +2030,9 @@ MmsConnection_abort(MmsConnection self, MmsError* mmsError)
{
IsoClientConnection_abortAsync(self->isoClient);
uint64_t timeout = Hal_getTimeInMs() + self->requestTimeout;
uint64_t timeout = Hal_getMonotonicTimeInMs() + self->requestTimeout;
while (Hal_getTimeInMs() < timeout)
while (Hal_getMonotonicTimeInMs() < timeout)
{
if (getConnectionState(self) == MMS_CONNECTION_STATE_CLOSED)
{
@ -2044,7 +2044,7 @@ MmsConnection_abort(MmsConnection self, MmsError* mmsError)
}
}
}
if (success == false)
{
IsoClientConnection_close(self->isoClient);
@ -2117,7 +2117,7 @@ MmsConnection_concludeAsync(MmsConnection self, MmsError* mmsError, MmsConnectio
self->concludeHandler = handler;
self->concludeHandlerParameter = parameter;
self->concludeTimeout = Hal_getTimeInMs() + self->requestTimeout;
self->concludeTimeout = Hal_getMonotonicTimeInMs() + self->requestTimeout;
IsoClientConnection_sendMessage(self->isoClient, concludeMessage);

@ -147,16 +147,14 @@ mmsClient_handleFileOpenRequest(MmsConnection connection, uint8_t* buffer, int b
if (frsm != NULL)
{
MmsOutstandingCall obtainFileCall = mmsClient_getMatchingObtainFileRequest(connection, filename);
if (obtainFileCall)
{
if (DEBUG_MMS_CLIENT)
printf("MMS_CLIENT: file open is matching obtain file request for file %s\n", filename);
obtainFileCall->timeout = Hal_getTimeInMs() + connection->requestTimeout;
obtainFileCall->timeout = Hal_getMonotonicTimeInMs() + connection->requestTimeout;
}
FileHandle fileHandle =
@ -164,7 +162,6 @@ mmsClient_handleFileOpenRequest(MmsConnection connection, uint8_t* buffer, int b
if (fileHandle != NULL)
{
frsm->fileHandle = fileHandle;
frsm->readPosition = filePosition;
frsm->frsmId = getNextFrsmId(connection);
@ -207,7 +204,7 @@ mmsClient_handleFileReadRequest(MmsConnection connection, uint8_t* buffer, int b
if (frsm)
{
if (frsm->obtainRequest)
frsm->obtainRequest->timeout = Hal_getTimeInMs() + connection->requestTimeout;
frsm->obtainRequest->timeout = Hal_getMonotonicTimeInMs() + connection->requestTimeout;
#if defined(LIB61850_ENABLE_TEST_API)
if (connection->fileReadArtificialDelayMs > 0)
@ -231,7 +228,7 @@ mmsClient_handleFileCloseRequest(MmsConnection connection, uint8_t* buffer, int
if (frsm)
{
if (frsm->obtainRequest)
frsm->obtainRequest->timeout = Hal_getTimeInMs() + connection->requestTimeout;
frsm->obtainRequest->timeout = Hal_getMonotonicTimeInMs() + connection->requestTimeout;
if (frsm->fileHandle)
{

Loading…
Cancel
Save