| /** |
| * ******************************************************************************* |
| * 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.amlt2systemc.m2t.module.BaseTransformer |
| import org.eclipse.app4mc.amlt2systemc.m2t.transformers.sw.IActivityGraphItemContainerTransformer.ActivityGraphBuffer |
| import org.eclipse.app4mc.amalthea.model.SemaphoreAccess |
| |
| 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 SemaphoreAccessTransformer semaphoreAccrssTransformer; |
| |
| 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(SemaphoreAccess semaphoreAccess, |
| ActivityGraphBuffer containerContent) { |
| semaphoreAccrssTransformer.transform(semaphoreAccess, containerContent); |
| } |
| |
| } |