Class AbstractTcTmParamLink

java.lang.Object
com.google.common.util.concurrent.AbstractService
org.yamcs.tctm.AbstractLink
org.yamcs.tctm.AbstractTcTmParamLink
All Implemented Interfaces:
com.google.common.util.concurrent.Service, SystemParametersProducer, Link, LinkActionProvider, ParameterDataLink, TcDataLink, TmPacketDataLink
Direct Known Subclasses:
TcpTcTmDataLink, UdpTcTmDataLink

public abstract class AbstractTcTmParamLink extends AbstractLink implements TmPacketDataLink, TcDataLink, ParameterDataLink
Base class for TM/TC/parameter links.
  • Field Details

  • Constructor Details

    • AbstractTcTmParamLink

      public AbstractTcTmParamLink()
  • Method Details

    • getDefaultSpec

      public Spec getDefaultSpec()
      Description copied from interface: Link
      Returns a default link Spec. This can be used in an implementation of {Link.getSpec(). Eventually (after a few years), it is expected to migrate this logic directly into {LinkLink.getSpec(), rather than returning null from there. But we want to give sufficient time for links everywhere to start defining their arguments.
      Specified by:
      getDefaultSpec in interface Link
    • init

      public void init(String instance, String name, YConfiguration config) throws ConfigurationException
      Description copied from interface: Link
      Called at startup to initialize the link.

      The config corresponds to the map that is under the link definition in yamcs.instance.yaml.

      Specified by:
      init in interface Link
      Overrides:
      init in class AbstractLink
      config - - the configuration - cannot be null (but can be empty)
      Throws:
      ConfigurationException
    • initTc

      protected void initTc(String instance, YConfiguration config) throws ConfigurationException
      Throws:
      ConfigurationException
    • initTm

      protected void initTm(String instance, YConfiguration config)
    • postprocess

      protected byte[] postprocess(PreparedCommand pc)
      Postprocesses the command, unless postprocessing is disabled.
      Returns:
      potentially modified binary, or null to indicate that the command should not be handled further.
    • processPacket

      protected void processPacket(TmPacket tmpkt)
      Sends the packet downstream for processing.

      Starting in Yamcs 5.2, if the updateSimulationTime option is set on the link configuration,

      • the timeService is expected to be SimulationTimeService
      • at initialization, the time0 is set to 0
      • upon each packet received, the generationTime (as set by the pre-processor) is used to update the simulation elapsed time

      Should be called by all sub-classes (instead of directly calling TmSink.processPacket(TmPacket)

      Parameters:
      tmpkt -
    • failedCommand

      protected void failedCommand(Commanding.CommandId commandId, String reason)
      Send to command history the failed command
    • ackCommand

      protected void ackCommand(Commanding.CommandId commandId)
      send an ack in the command history that the command has been sent out of the link
      Parameters:
      commandId -
    • setCommandHistoryPublisher

      public void setCommandHistoryPublisher(CommandHistoryPublisher commandHistoryListener)
      Specified by:
      setCommandHistoryPublisher in interface TcDataLink
    • setParameterSink

      public void setParameterSink(ParameterSink parameterSink)
      Specified by:
      setParameterSink in interface ParameterDataLink
    • setTmSink

      public void setTmSink(TmSink tmSink)
      Description copied from interface: TmPacketDataLink
      sets the tm sink that should get all the tm packets
      Specified by:
      setTmSink in interface TmPacketDataLink