| /** |
| ******************************************************************************** |
| * Copyright (c) 2020-2021 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.slg.microros.transformers; |
| |
| import org.eclipse.app4mc.amalthea.model.ActivityGraphItem; |
| import org.eclipse.app4mc.amalthea.model.ChannelReceive; |
| import org.eclipse.app4mc.amalthea.model.ChannelSend; |
| import org.eclipse.app4mc.amalthea.model.LabelAccess; |
| import org.eclipse.app4mc.amalthea.model.Tag; |
| import org.eclipse.app4mc.amalthea.model.Ticks; |
| import org.eclipse.app4mc.slg.commons.m2t.transformers.SLGTranslationUnit; |
| import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.ActivityGraphItemTransformer; |
| import org.eclipse.app4mc.slg.commons.m2t.transformers.sw.TicksTransformer; |
| import org.eclipse.app4mc.slg.ros2.transformers.sw.RosTicksTransformer; |
| |
| import com.google.inject.Inject; |
| import com.google.inject.Singleton; |
| |
| @Singleton |
| public class MicroRosActivityGraphItemTransformer extends ActivityGraphItemTransformer { |
| |
| @Inject private MicroRosChannelSendTransformer channelSendTransformer; |
| @Inject private MicroRosChannelReceiveTransformer microchannelReceiveTransformer; |
| @Inject private MicroRosLabelAccessTransformer microRosLabelAccessTransformer; |
| @Inject private MicroRosTicksTransformer ticksTransformer; |
| |
| |
| public SLGTranslationUnit transform(final ActivityGraphItem graphItem,Tag tag) { |
| if (graphItem == null) { |
| throw new IllegalArgumentException("Unhandled parameter type: null"); |
| } |
| // |
| // if (graphItem instanceof InterProcessTrigger) { |
| // return ipTransformer.transform((InterProcessTrigger) graphItem); |
| // |
| // } else |
| |
| if (graphItem instanceof ChannelSend) { |
| return channelSendTransformer.transform((ChannelSend) graphItem,tag); |
| |
| } |
| else if (graphItem instanceof LabelAccess) { |
| return microRosLabelAccessTransformer.transform((LabelAccess) graphItem); |
| |
| } else if (graphItem instanceof Ticks) { |
| return ticksTransformer.transform((Ticks)graphItem); |
| } |
| |
| // else if (graphItem instanceof RunnableCall) { |
| // return microrosRunnableTransformer.transform(((RunnableCall) graphItem).getRunnable()); |
| // |
| // } |
| else if (graphItem instanceof ChannelReceive) { |
| return microchannelReceiveTransformer.transform((ChannelReceive) graphItem); |
| |
| } |
| |
| else { |
| return super.transform(graphItem); |
| } |
| } |
| |
| } |