- IEC 61850 server: fixed problem in report module

pull/179/head
Michael Zillgith 7 years ago
parent 0dff4286aa
commit b35a566145

@ -324,6 +324,12 @@ ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBu
MmsValue_setBoolean(self->purgeBuf, purgeBuf); MmsValue_setBoolean(self->purgeBuf, purgeBuf);
} }
bool
ClientReportControlBlock_hasResvTms(ClientReportControlBlock self)
{
return (self->resvTms != NULL);
}
int16_t int16_t
ClientReportControlBlock_getResvTms(ClientReportControlBlock self) ClientReportControlBlock_getResvTms(ClientReportControlBlock self)
{ {
@ -670,6 +676,8 @@ IedConnection_getRCBValues(IedConnection self, IedClientError* error, const char
*error = iedConnection_mapDataAccessErrorToIedError( *error = iedConnection_mapDataAccessErrorToIedError(
MmsValue_getDataAccessError(rcb)); MmsValue_getDataAccessError(rcb));
MmsValue_delete(rcb);
return NULL; return NULL;
} }

@ -1555,9 +1555,21 @@ ClientReportControlBlock_setDataSetReference(ClientReportControlBlock self, cons
LIB61850_API uint32_t LIB61850_API uint32_t
ClientReportControlBlock_getConfRev(ClientReportControlBlock self); ClientReportControlBlock_getConfRev(ClientReportControlBlock self);
/**
* \brief Gets the OptFlds parameter of the RCB (decides what information to include in a report)
*
* \param self the RCB instance
* \return bit field representing the optional fields of a report (uses flags from \ref REPORT_OPTIONS)
*/
LIB61850_API int LIB61850_API int
ClientReportControlBlock_getOptFlds(ClientReportControlBlock self); ClientReportControlBlock_getOptFlds(ClientReportControlBlock self);
/**
* \brief Set the OptFlds parameter of the RCB (decides what information to include in a report)
*
* \param self the RCB instance
* \param optFlds bit field representing the optional fields of a report (use flags from \ref REPORT_OPTIONS)
*/
LIB61850_API void LIB61850_API void
ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds); ClientReportControlBlock_setOptFlds(ClientReportControlBlock self, int optFlds);
@ -1591,9 +1603,24 @@ ClientReportControlBlock_setGI(ClientReportControlBlock self, bool gi);
LIB61850_API bool LIB61850_API bool
ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self); ClientReportControlBlock_getPurgeBuf(ClientReportControlBlock self);
/**
* \brief Set the "PurgeBuf" attribute value (only BRCB)
*
* When set to true the report buffer will be cleared.
*
* \param purgeBuf attribute value
*/
LIB61850_API void LIB61850_API void
ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBuf); ClientReportControlBlock_setPurgeBuf(ClientReportControlBlock self, bool purgeBuf);
/**
* \brief Check if optional attribute "ResvTms" is present in BRCB
*
* \return true when present, false otherwise
*/
LIB61850_API bool
ClientReportControlBlock_hasResvTms(ClientReportControlBlock self);
LIB61850_API int16_t LIB61850_API int16_t
ClientReportControlBlock_getResvTms(ClientReportControlBlock self); ClientReportControlBlock_getResvTms(ClientReportControlBlock self);

@ -417,9 +417,6 @@ ControlObject_destroy(ControlObject* self)
if (self->mmsValue != NULL) if (self->mmsValue != NULL)
MmsValue_delete(self->mmsValue); MmsValue_delete(self->mmsValue);
if (self->sbo != NULL)
MmsValue_delete(self->sbo);
if (self->emptyString != NULL) if (self->emptyString != NULL)
MmsValue_delete(self->emptyString); MmsValue_delete(self->emptyString);

@ -2338,6 +2338,8 @@ mmsReadHandler(void* parameter, MmsDomain* domain, char* variableId, MmsServerCo
char* elementName = MmsMapping_getNextNameElement(reportName); char* elementName = MmsMapping_getNextNameElement(reportName);
ReportControl_readAccess(rc, elementName);
MmsValue* value = NULL; MmsValue* value = NULL;
if (elementName != NULL) if (elementName != NULL)

Loading…
Cancel
Save