- fixed bug: GOOSE minTime, maxTime are ignored by GOOSE publisher when set by GSEControlBlock_create. Instead default values from stack_config.h are always used

pull/6/head
Michael Zillgith 10 years ago
parent 3fe6edfbc7
commit 348273a1c8

@ -57,6 +57,8 @@ int main(int argc, char** argv) {
ReportControlBlock_create("events01", lln0, "events01", false, NULL, 1, TRG_OPT_DATA_CHANGED, rptOptions, 50, 0); ReportControlBlock_create("events01", lln0, "events01", false, NULL, 1, TRG_OPT_DATA_CHANGED, rptOptions, 50, 0);
ReportControlBlock_create("events02", lln0, "events02", false, NULL, 1, TRG_OPT_DATA_CHANGED, rptOptions, 50, 0); ReportControlBlock_create("events02", lln0, "events02", false, NULL, 1, TRG_OPT_DATA_CHANGED, rptOptions, 50, 0);
GSEControlBlock_create("gse01", lln0, "events01", "events", 1, false, 200, 3000);
/********************* /*********************
* run server * run server
********************/ ********************/

@ -305,24 +305,20 @@ MmsGooseControlBlock_checkAndPublish(MmsGooseControlBlock self, uint64_t current
GoosePublisher_publish(self->publisher, self->dataSetValues); GoosePublisher_publish(self->publisher, self->dataSetValues);
if (self->retransmissionsLeft > 0) { if (self->retransmissionsLeft > 0) {
self->nextPublishTime = currentTime + CONFIG_GOOSE_EVENT_RETRANSMISSION_INTERVAL; self->nextPublishTime = currentTime + self->minTime;
if (self->retransmissionsLeft > 1) if (self->retransmissionsLeft > 1)
GoosePublisher_setTimeAllowedToLive(self->publisher, GoosePublisher_setTimeAllowedToLive(self->publisher, self->minTime * 3);
CONFIG_GOOSE_EVENT_RETRANSMISSION_INTERVAL * 3);
else else
GoosePublisher_setTimeAllowedToLive(self->publisher, GoosePublisher_setTimeAllowedToLive(self->publisher, self->maxTime * 3);
CONFIG_GOOSE_STABLE_STATE_TRANSMISSION_INTERVAL * 3);
self->retransmissionsLeft--; self->retransmissionsLeft--;
} }
else { else {
GoosePublisher_setTimeAllowedToLive(self->publisher, GoosePublisher_setTimeAllowedToLive(self->publisher, self->maxTime * 3);
CONFIG_GOOSE_STABLE_STATE_TRANSMISSION_INTERVAL * 3);
self->nextPublishTime = currentTime + self->nextPublishTime = currentTime + self->maxTime;
CONFIG_GOOSE_STABLE_STATE_TRANSMISSION_INTERVAL;
} }
#if (CONFIG_MMS_THREADLESS_STACK != 1) #if (CONFIG_MMS_THREADLESS_STACK != 1)
@ -343,18 +339,14 @@ MmsGooseControlBlock_observedObjectChanged(MmsGooseControlBlock self)
self->retransmissionsLeft = CONFIG_GOOSE_EVENT_RETRANSMISSION_COUNT; self->retransmissionsLeft = CONFIG_GOOSE_EVENT_RETRANSMISSION_COUNT;
if (self->retransmissionsLeft > 0) { if (self->retransmissionsLeft > 0) {
self->nextPublishTime = currentTime + self->nextPublishTime = currentTime + self->minTime;
CONFIG_GOOSE_EVENT_RETRANSMISSION_INTERVAL;
GoosePublisher_setTimeAllowedToLive(self->publisher, GoosePublisher_setTimeAllowedToLive(self->publisher, self->minTime * 3);
CONFIG_GOOSE_EVENT_RETRANSMISSION_INTERVAL * 3);
} }
else { else {
self->nextPublishTime = currentTime + self->nextPublishTime = currentTime + self->maxTime;
CONFIG_GOOSE_STABLE_STATE_TRANSMISSION_INTERVAL;
GoosePublisher_setTimeAllowedToLive(self->publisher, GoosePublisher_setTimeAllowedToLive(self->publisher, self->maxTime * 3);
CONFIG_GOOSE_STABLE_STATE_TRANSMISSION_INTERVAL * 3);
} }
GoosePublisher_publish(self->publisher, self->dataSetValues); GoosePublisher_publish(self->publisher, self->dataSetValues);

@ -73,6 +73,7 @@ extern "C" {
* *
* The SV subscriber API can be used independent of the IEC 61850 client API. In order to access the SVCB via MMS you * The SV subscriber API can be used independent of the IEC 61850 client API. In order to access the SVCB via MMS you
* have to use the IEC 61850 client API. Please see \ref ClientSVControlBlock object in section \ref IEC61850_CLIENT_SV. * have to use the IEC 61850 client API. Please see \ref ClientSVControlBlock object in section \ref IEC61850_CLIENT_SV.
*
*/ */
/**@{*/ /**@{*/

Loading…
Cancel
Save