package org.yamcs.tctm; import java.util.ArrayList; import java.util.List; import org.yamcs.TmPacketProvider; import org.yamcs.commanding.CommandReleaser; import org.yamcs.parameter.ParameterProvider; import org.yamcs.protobuf.Yamcs.ReplaySpeed; import org.yamcs.protobuf.Yamcs.ReplaySpeed.ReplaySpeedType; import com.google.common.util.concurrent.AbstractService; public class SimpleTcTmService extends AbstractService implements TcTmService { TmPacketProvider tm; CommandReleaser tc; List<ParameterProvider> ppList = new ArrayList<ParameterProvider>(); public SimpleTcTmService(TmPacketProvider tm, List<ParameterProvider> ppList, CommandReleaser tc) { this.tm=tm; this.ppList=ppList; this.tc=tc; } @Override public TmPacketProvider getTmPacketProvider() { return tm; } @Override public CommandReleaser getCommandReleaser() { return tc; } @Override public List<ParameterProvider> getParameterProviders() { return ppList; } @Override protected void doStart() { if(tm!=null) tm.startAsync(); for(ParameterProvider pp:ppList) { pp.startAsync(); } notifyStarted(); } @Override protected void doStop() { if(tm!=null) tm.stopAsync(); for(ParameterProvider pp:ppList) { pp.stopAsync(); } notifyStarted(); } @Override public boolean isSynchronous() { boolean s = false; if(tm instanceof ArchiveTmPacketProvider) { ReplaySpeed speed=((ArchiveTmPacketProvider)tm).getSpeed(); if(speed.getType()==ReplaySpeedType.AFAP) s = true; } return s; } }