blob: 2e93dd72bd5c2ca38f05117a95c598cf071bf99e [file] [log] [blame]
/**
********************************************************************************
* 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);
}
}
}