Skip to content

Commit ec9142e

Browse files
committed
implement fmi2GetBooleanStatus
also return fmi2Discard for unsupported fmi2GetXXXStatus
1 parent bece8ff commit ec9142e

1 file changed

Lines changed: 16 additions & 8 deletions

File tree

export/src/fmu4cpp/fmi2.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ namespace {
5454
logger(std::move(logger)) {}
5555

5656
double lastSuccessfulTime{0};
57+
bool wantsToTerminate{false};
5758

5859
std::unique_ptr<fmu4cpp::fmu_base> slave;
5960
std::unique_ptr<fmi2Logger> logger;
@@ -211,7 +212,7 @@ fmi2Status fmi2DoStep(
211212
component->lastSuccessfulTime = currentCommunicationPoint + communicationStepSize;
212213
return fmi2OK;
213214
}
214-
215+
component->wantsToTerminate = true;
215216
return fmi2Discard;
216217
} catch (const fmu4cpp::fatal_error &ex) {
217218
component->logger->log(fmiFatal, ex.what());
@@ -403,29 +404,36 @@ fmi2Status fmi2GetRealStatus(
403404
return fmi2OK;
404405
}
405406

406-
return fmi2Error;
407+
return fmi2Discard;
407408
}
408409

409410
fmi2Status fmi2GetIntegerStatus(
410411
fmi2Component,
411412
const fmi2StatusKind,
412413
fmi2Integer *) {
413-
return fmi2Error;
414+
return fmi2Discard;
414415
}
415416

416417
fmi2Status fmi2GetBooleanStatus(
417-
fmi2Component,
418-
const fmi2StatusKind,
419-
fmi2Boolean *) {
420-
return fmi2Error;
418+
fmi2Component c,
419+
const fmi2StatusKind s,
420+
fmi2Boolean *value) {
421+
422+
const auto component = static_cast<Fmi2Component *>(c);
423+
if (s == fmi2Terminated) {
424+
*value = component->wantsToTerminate;
425+
return fmi2OK;
426+
}
427+
428+
return fmi2Discard;
421429
}
422430

423431
fmi2Status fmi2GetStringStatus(
424432
fmi2Component,
425433
const fmi2StatusKind,
426434
fmi2String *) {
427435

428-
return fmi2Error;
436+
return fmi2Discard;
429437
}
430438

431439

0 commit comments

Comments
 (0)