diff --git a/src/mms/inc/mms_client_connection.h b/src/mms/inc/mms_client_connection.h index 0ae05f2d..5126dbb9 100644 --- a/src/mms/inc/mms_client_connection.h +++ b/src/mms/inc/mms_client_connection.h @@ -285,6 +285,10 @@ MmsConnection_connectAsync(MmsConnection self, MmsError* mmsError, const char* s LIB61850_API bool MmsConnection_tick(MmsConnection self); +/* NOTE: This function is for test purposes! */ +LIB61850_API void +MmsConnection_sendRawData(MmsConnection self, MmsError* mmsError, uint8_t* buffer, int bufSize); + /** * \brief Close the connection - not recommended * diff --git a/src/mms/iso_mms/client/mms_client_connection.c b/src/mms/iso_mms/client/mms_client_connection.c index 5635fd78..ad4d4356 100644 --- a/src/mms/iso_mms/client/mms_client_connection.c +++ b/src/mms/iso_mms/client/mms_client_connection.c @@ -4616,6 +4616,28 @@ exit_function: return; } +void +MmsConnection_sendRawData(MmsConnection self, MmsError* mmsError, uint8_t* buffer, int bufSize) +{ + if (getConnectionState(self) != MMS_CONNECTION_STATE_CONNECTED) { + if (mmsError) + *mmsError = MMS_ERROR_CONNECTION_LOST; + goto exit_function; + } + + ByteBuffer* payload = IsoClientConnection_allocateTransmitBuffer(self->isoClient); + + ByteBuffer_append(payload, buffer, bufSize); + + sendMessage(self, payload); + + if (mmsError) + *mmsError = MMS_ERROR_NONE; + +exit_function: + return; +} + void MmsServerIdentity_destroy(MmsServerIdentity* self) {