blob: 4e68790a53b2f4257885230095a27ef236817d2c [file] [log] [blame]
/**
* *******************************************************************************
* Copyright (c) 2019-2020 Robert Bosch GmbH.
*
* 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.sw
import com.google.inject.Inject
import org.eclipse.app4mc.amalthea.model.ActivityGraphItem
import org.eclipse.app4mc.amalthea.model.ChannelAccess
import org.eclipse.app4mc.amalthea.model.InterProcessTrigger
import org.eclipse.app4mc.amalthea.model.LabelAccess
import org.eclipse.app4mc.amalthea.model.ModeLabelAccess
import org.eclipse.app4mc.amalthea.model.ModeSwitch
import org.eclipse.app4mc.amalthea.model.RunnableCall
import org.eclipse.app4mc.amalthea.model.Ticks
import org.eclipse.app4mc.amalthea.model.WhileLoop
import org.eclipse.app4mc.amlt2systemc.m2t.module.BaseTransformer
import org.eclipse.app4mc.amlt2systemc.m2t.transformers.sw.IActivityGraphItemContainerTransformer.ActivityGraphBuffer
class ActivityGraphItemTransformer extends BaseTransformer {
//@Inject OutputBuffer outputBuffer
@Inject ModeSwitchTransformer modeSwitchTransformer
@Inject RunnableTransformer runnableTransformer
@Inject TicksTransformer ticksTransformer
@Inject ChannelAccessTransformer channelAccessTransformer
@Inject LabelAccessTransformer labelAccessTransformer
@Inject ModeLabelAccessTransformer modeLabelAccessTransformer
@Inject InterProcessTriggerTransformer interProcessTriggerTransformer
@Inject WhileLoopTransformer whileLoopTransformer
dispatch def void transform(ActivityGraphItem activityGraphItem,
ActivityGraphBuffer containerContent) {
containerContent.addBody(
"//WARNING: no transformation for activity item " + activityGraphItem.class.toString)
}
dispatch def void transform(RunnableCall runnableCall,
ActivityGraphBuffer containerContent) {
val tuRunnable = runnableTransformer.transform(runnableCall.runnable)
containerContent.addInclude(tuRunnable.module)
containerContent.addAsActivityGraphItem("<RunnableCall>({" + tuRunnable.call + "})")
}
dispatch def void transform(Ticks ticks,
ActivityGraphBuffer containerContent) {
// example: r2->addActivityGraphItem<Ticks>({IValueDeviationConstant<ELong>(100000)});
containerContent.addAsActivityGraphItem("<Ticks>({" + ticksTransformer.transform(ticks) + "})");
}
dispatch def void transform(ChannelAccess channelAccess,
ActivityGraphBuffer containerContent) {
channelAccessTransformer.transform(channelAccess, containerContent);
}
dispatch def void transform(LabelAccess labelAccess,
ActivityGraphBuffer containerContent) {
labelAccessTransformer.transform(labelAccess, containerContent);
}
dispatch def void transform(ModeLabelAccess modeLabelAccess,
ActivityGraphBuffer containerContent) {
modeLabelAccessTransformer.transform(modeLabelAccess, containerContent);
}
dispatch def void transform(InterProcessTrigger interProcessTrigger,
ActivityGraphBuffer containerContent) {
interProcessTriggerTransformer.transform(interProcessTrigger, containerContent);
}
dispatch def void transform(ModeSwitch modeSwitch,
ActivityGraphBuffer containerContent) {
modeSwitchTransformer.transform(modeSwitch, containerContent);
}
dispatch def void transform(WhileLoop whileLoop,
ActivityGraphBuffer containerContent) {
whileLoopTransformer.transform(whileLoop, containerContent);
}
}