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

v1.6_develop
Michael Zillgith 2 days ago
parent 80a01bd935
commit 815e9e47be

@ -353,7 +353,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
{ {
if (sendConnectionRequestMessage(self)) if (sendConnectionRequestMessage(self))
{ {
self->nextReadTimeout = Hal_getTimeInMs() + self->readTimeoutInMs; self->nextReadTimeout = Hal_getMonotonicTimeInMs() + self->readTimeoutInMs;
nextState = INT_STATE_WAIT_FOR_COTP_CONNECT_RESP; nextState = INT_STATE_WAIT_FOR_COTP_CONNECT_RESP;
} }
else else
@ -373,7 +373,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
{ {
/* check connect timeout */ /* check connect timeout */
uint64_t currentTime = Hal_getTimeInMs(); uint64_t currentTime = Hal_getMonotonicTimeInMs();
if (currentTime > self->nextReadTimeout) if (currentTime > self->nextReadTimeout)
{ {
@ -392,7 +392,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
case INT_STATE_WAIT_FOR_COTP_CONNECT_RESP: case INT_STATE_WAIT_FOR_COTP_CONNECT_RESP:
{ {
uint64_t currentTime = Hal_getTimeInMs(); uint64_t currentTime = Hal_getMonotonicTimeInMs();
if (currentTime > self->nextReadTimeout) if (currentTime > self->nextReadTimeout)
{ {
@ -428,7 +428,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
{ {
sendAcseInitiateRequest(self); sendAcseInitiateRequest(self);
self->nextReadTimeout = Hal_getTimeInMs() + self->readTimeoutInMs; self->nextReadTimeout = Hal_getMonotonicTimeInMs() + self->readTimeoutInMs;
nextState = INT_STATE_WAIT_FOR_ACSE_RESP; nextState = INT_STATE_WAIT_FOR_ACSE_RESP;
} }
@ -453,7 +453,7 @@ IsoClientConnection_handleConnection(IsoClientConnection self)
case INT_STATE_WAIT_FOR_ACSE_RESP: case INT_STATE_WAIT_FOR_ACSE_RESP:
{ {
uint64_t currentTime = Hal_getTimeInMs(); uint64_t currentTime = Hal_getMonotonicTimeInMs();
if (currentTime > self->nextReadTimeout) if (currentTime > self->nextReadTimeout)
{ {
@ -706,7 +706,7 @@ IsoClientConnection_associateAsync(IsoClientConnection self, uint32_t connectTim
self->readTimeoutInMs = readTimeoutInMs; self->readTimeoutInMs = readTimeoutInMs;
/* set timeout for connect */ /* set timeout for connect */
self->nextReadTimeout = Hal_getTimeInMs() + connectTimeoutInMs; self->nextReadTimeout = Hal_getMonotonicTimeInMs() + connectTimeoutInMs;
/* Connect to Local Ip Address*/ /* Connect to Local Ip Address*/
if (self->parameters->localIpAddress) { if (self->parameters->localIpAddress) {

@ -296,7 +296,7 @@ addToOutstandingCalls(MmsConnection self, uint32_t invokeId, eMmsOutstandingCall
{ {
self->outstandingCalls[i].isUsed = true; self->outstandingCalls[i].isUsed = true;
self->outstandingCalls[i].invokeId = invokeId; 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].type = type;
self->outstandingCalls[i].userCallback = userCallback; self->outstandingCalls[i].userCallback = userCallback;
self->outstandingCalls[i].userParameter = userParameter; self->outstandingCalls[i].userParameter = userParameter;
@ -1083,7 +1083,7 @@ mmsIsoCallback(IsoIndication indication, void* parameter, ByteBuffer* payload)
{ {
/* check timeouts */ /* check timeouts */
uint64_t currentTime = Hal_getTimeInMs(); uint64_t currentTime = Hal_getMonotonicTimeInMs();
int i = 0; int i = 0;
@ -2030,9 +2030,9 @@ MmsConnection_abort(MmsConnection self, MmsError* mmsError)
{ {
IsoClientConnection_abortAsync(self->isoClient); 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) if (getConnectionState(self) == MMS_CONNECTION_STATE_CLOSED)
{ {
@ -2117,7 +2117,7 @@ MmsConnection_concludeAsync(MmsConnection self, MmsError* mmsError, MmsConnectio
self->concludeHandler = handler; self->concludeHandler = handler;
self->concludeHandlerParameter = parameter; self->concludeHandlerParameter = parameter;
self->concludeTimeout = Hal_getTimeInMs() + self->requestTimeout; self->concludeTimeout = Hal_getMonotonicTimeInMs() + self->requestTimeout;
IsoClientConnection_sendMessage(self->isoClient, concludeMessage); IsoClientConnection_sendMessage(self->isoClient, concludeMessage);

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

Loading…
Cancel
Save