blob: 98daa1ff6dd0573f771234cb087d87c55545fe59 [file] [log] [blame]
/**
********************************************************************************
* Copyright (c) 2019-2021 Robert Bosch GmbH and others
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Robert Bosch GmbH - initial API and implementation
********************************************************************************
*/
package org.eclipse.app4mc.amlt2systemc.m2t.transformers
import org.eclipse.app4mc.amalthea.model.TimeConstant
import org.eclipse.app4mc.amalthea.model.TimeGaussDistribution
import org.eclipse.app4mc.amalthea.model.TimeWeibullEstimatorsDistribution
import org.eclipse.app4mc.amalthea.model.ITimeDeviation
import org.eclipse.app4mc.amalthea.model.TimeUniformDistribution
import org.eclipse.app4mc.amalthea.model.TimeBetaDistribution
import org.eclipse.app4mc.amalthea.model.TimeBoundaries
import org.eclipse.app4mc.amlt2systemc.m2t.utils.TimeUtil
import org.eclipse.app4mc.amalthea.model.util.FactoryUtil
import org.eclipse.app4mc.amalthea.model.TimeUnit
class ITimeDeviationTransformer {
//ITimeDeviation
static def dispatch String getDeviation(ITimeDeviation value)'''
WARNING:VALUE_FORMAT_NOT_SUPPORTED'''
static def dispatch String getDeviationTemplate(ITimeDeviation value)'''
WARNING:VALUE_FORMAT_NOT_SUPPORTED'''
static def dispatch String getDeviationValue(ITimeDeviation value)'''
WARNING:VALUE_FORMAT_NOT_SUPPORTED'''
//TimeBetaDistribution
static def dispatch String getDeviation(TimeBetaDistribution value)'''
«ITimeDeviationTransformer.getDeviationTemplate(value)»(«getDeviationValue(value)»)'''
static def dispatch String getDeviationTemplate(TimeBetaDistribution value)'''
TimeBetaDistribution'''
static def dispatch String getDeviationValue(TimeBetaDistribution value)'''
«value.alpha»,«value.beta»,«TimeUtil.transform(value.lowerBound)»,«TimeUtil.transform(value.upperBound)»'''
private static def String stype(TimeBoundaries value) {
switch(value.samplingType){
case BEST_CASE: {
return "BoundariesSamplingType::BestCase";
}
case WORST_CASE: {
return "BoundariesSamplingType::WorstCase";
}
case AVERAGE_CASE: {
return "BoundariesSamplingType::AverageCase";
}
case CORNER_CASE: {
return "BoundariesSamplingType::CornerCase";
}
case UNIFORM: {
return "BoundariesSamplingType::Uniform";
}
//TODO: what is DEFAULT enum case?
default: {
return "BoundariesSamplingType::WorstCase";
}
}
}
//TimeBoundaries
static def dispatch String getDeviation(TimeBoundaries value)'''
«ITimeDeviationTransformer.getDeviationTemplate(value)»(«getDeviationValue(value)»)'''
static def dispatch String getDeviationTemplate(TimeBoundaries value)'''
TimeBoundaries'''
static def dispatch String getDeviationValue(TimeBoundaries value)'''
«stype(value)»,«TimeUtil.transform(value.lowerBound)»,«TimeUtil.transform(value.upperBound)»'''
//TimeConstant
static def dispatch String getDeviation(TimeConstant value)'''
«ITimeDeviationTransformer.getDeviationTemplate(value)»(«getDeviationValue(value)»)'''
static def dispatch String getDeviationTemplate(TimeConstant value)'''
TimeConstant'''
static def dispatch String getDeviationValue(TimeConstant value)'''
«TimeUtil.transform(value.value)»'''
//TimeGaussDistribution
static def dispatch String getDeviation(TimeGaussDistribution value)'''
«ITimeDeviationTransformer.getDeviationTemplate(value)»(«getDeviationValue(value)»)'''
static def dispatch String getDeviationTemplate(TimeGaussDistribution value)'''
TimeGaussDistribution'''
static def dispatch String getDeviationValue(TimeGaussDistribution value)'''
«TimeUtil.transform(value.mean)»,«TimeUtil.transform(value.sd)»,«TimeUtil.transform(value.lowerBound)?: TimeUtil.transform(FactoryUtil.createTime(Long.MIN_VALUE,TimeUnit.PS))»,«TimeUtil.transform(value.upperBound)?:TimeUtil.transform(FactoryUtil.createTime(Long.MAX_VALUE,TimeUnit.PS))»'''
//TODO: TimeHistogram
//TODO: TimeStatistics
//TimeUniformDistribution
static def dispatch String getDeviation(TimeUniformDistribution value)'''
«ITimeDeviationTransformer.getDeviationTemplate(value)»(«getDeviationValue(value)»)'''
static def dispatch String getDeviationTemplate(TimeUniformDistribution value)'''
TimeUniformDistribution'''
static def dispatch String getDeviationValue(TimeUniformDistribution value)'''
«TimeUtil.transform(value.lowerBound)»,«TimeUtil.transform(value.upperBound)»'''
//TimeWeibullEstimatorsDistribution
static def dispatch String getDeviation(TimeWeibullEstimatorsDistribution value)'''
«ITimeDeviationTransformer.getDeviationTemplate(value)»(«getDeviationValue(value)»)'''
static def dispatch String getDeviationTemplate(TimeWeibullEstimatorsDistribution value)'''
TimeWeibullEstimatorsDistribution'''
static def dispatch String getDeviationValue(TimeWeibullEstimatorsDistribution value)'''
«ITimeDeviationTransformer.getDeviationTemplate(value)»::findParameter(«TimeUtil.transform(value.average)»,«value.PRemainPromille»,«TimeUtil.transform(value.lowerBound)»,«TimeUtil.transform(value.upperBound)»),«TimeUtil.transform(value.lowerBound)»,«TimeUtil.transform(value.upperBound)»'''
}