- IEC 61850 client: using poll/select to reduce CPU consumption

pull/266/head
Michael Zillgith 5 years ago
parent ec5ccb62a0
commit 7ee278cead

@ -43,6 +43,7 @@ typedef struct {
int localRef;
int protocolClass;
HandleSet handleSet;
Socket socket;
#if (CONFIG_MMS_SUPPORT_TLS == 1)
TLSSocket tlsSocket;

@ -769,8 +769,11 @@ IsoClientConnection_destroy(IsoClientConnection self)
GLOBAL_FREEMEM(self->receiveBuf);
if (self->receiveBuffer != NULL)
GLOBAL_FREEMEM(self->receiveBuffer);
if (self->cotpConnection != NULL)
if (self->cotpConnection != NULL) {
if ( self->cotpConnection->handleSet != NULL )
Handleset_destroy(self->cotpConnection->handleSet);
GLOBAL_FREEMEM(self->cotpConnection);
}
if (self->cotpReadBuffer != NULL)
GLOBAL_FREEMEM(self->cotpReadBuffer);

@ -451,6 +451,8 @@ CotpConnection_init(CotpConnection* self, Socket socket,
{
self->state = 0;
self->socket = socket;
self->handleSet = Handleset_new( );
Handleset_addSocket( self->handleSet, self->socket );
#if (CONFIG_MMS_SUPPORT_TLS == 1)
self->tlsSocket = NULL;
#endif
@ -664,6 +666,15 @@ CotpConnection_resetPayload(CotpConnection* self)
static int
readFromSocket(CotpConnection* self, uint8_t* buf, int size)
{
switch (Handleset_waitReady(self->handleSet, 10))
{
case -1:
return -1;
case 0:
return 0;
default:
break;
}
#if (CONFIG_MMS_SUPPORT_TLS == 1)
if (self->tlsSocket)
return TLSSocket_read(self->tlsSocket, buf, size);

@ -1403,7 +1403,7 @@ connectionHandlingThread(void* parameter)
while (self->connectionThreadRunning) {
if (MmsConnection_tick(self))
Thread_sleep(1);
Thread_sleep(10);
}
return NULL;

Loading…
Cancel
Save