All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Types | Public Member Functions | Static Public Attributes
GeopsySLink::SeedLinkStream Class Reference

Brief description of class still missing. More...

#include <SeedLinkStream.h>

Inheritance diagram for GeopsySLink::SeedLinkStream:
QGpCoreTools::XMLClass

List of all members.

Public Types

enum  BufferType { Unlimited, CreateNew, Rotate }

Public Member Functions

int beginRecNo () const
QString beginTime () const
void detachSignal ()
int endRecNo () const
QString endTime () const
bool gapCheck () const
int gapThreshold () const
void initSignal (double t0, double samplingFrequency)
bool listening () const
double localTime (double t) const
QString location () const
 SeedLinkStream (SeedLinkStation *station)
QString seedName () const
void set (double t, int *samples, int nSamples, BufferType bt, double maxTime=0.0)
bool setListening (bool l)
void setSeedName (QString n)
void setTag ()
DynamicSignalsignal () const
SeedLinkStationstation () const
QByteArray tag () const
QString type () const
virtual void xml_attributes (XML_ATTRIBUTES_ARGS) const
virtual bool xml_setAttributes (XML_SETATTRIBUTES_ARGS)
virtual const QString & xml_tagName () const

Static Public Attributes

static const QString xmlSeedLinkStreamTag = "stream"

Detailed Description

Brief description of class still missing.

Full description of class still missing


Member Enumeration Documentation

Enumerator:
Unlimited 
CreateNew 
Rotate 

Constructor & Destructor Documentation

References station(), and TRACE.

{
  TRACE;
  _station=station;
  _location="00";
  _signal=0;
  _listening=false;
}

Member Function Documentation

Referenced by GeopsySLinkGui::SeedLinkStreamItem::data().

{return _beginRecNo;}
QString GeopsySLink::SeedLinkStream::beginTime ( ) const [inline]

Referenced by GeopsySLinkGui::SeedLinkStreamItem::data().

{return _beginTime;}

Referenced by GeopsySLink::SeedLink::removeStream().

{_signal=0;}
int GeopsySLink::SeedLinkStream::endRecNo ( ) const [inline]

Referenced by GeopsySLinkGui::SeedLinkStreamItem::data().

{return _endRecNo;}
QString GeopsySLink::SeedLinkStream::endTime ( ) const [inline]

Referenced by GeopsySLinkGui::SeedLinkStreamItem::data().

{return _endTime;}
bool GeopsySLink::SeedLinkStream::gapCheck ( ) const [inline]

Referenced by GeopsySLinkGui::SeedLinkStreamItem::data().

{return _gapCheck;}

Referenced by GeopsySLinkGui::SeedLinkStreamItem::data().

{return _gapThreshold;}
void GeopsySLink::SeedLinkStream::initSignal ( double  t,
double  samplingFrequency 
)

Initialize internal signal starting at t (expressed in seconds from January 1970).

References GeopsyCore::Signal::setDeltaT(), GeopsyCore::Signal::setT0(), GeopsyCore::Signal::setTimeReference(), and TRACE.

{
  TRACE;
  uint sec=(uint) floor(t);
  double msec=t - (double) sec;
  QDateTime tPacket;
  tPacket.setTimeSpec(Qt::UTC);
  tPacket.setTime_t(sec);  // 

  QDateTime tRef=tPacket;
  tRef.setTime(QTime( 0, 0) ); // Set reference at midnight

  createSignal();
  _signal->setDeltaT(1.0/samplingFrequency);
  _signal->setT0(tRef.secsTo(tPacket)+msec);
  _signal->setTimeReference(tRef);
}
bool GeopsySLink::SeedLinkStream::listening ( ) const [inline]

Referenced by GeopsySLinkGui::SeedLinkStreamItem::data().

{return _listening;}
double GeopsySLink::SeedLinkStream::localTime ( double  t) const

Transform t expressed in seconds from January 1970 into number of seconds since time reference of internal dynamic signal.

References GeopsyCore::Signal::timeReference(), and TRACE.

{
  TRACE;
  uint sec=(uint) floor(t);
  double msec=t - (double) sec;
  QDateTime tPacket;
  tPacket.setTime_t(sec);

  QDateTime tRef=_signal->timeReference();
  return tRef.secsTo(tPacket)+msec;
}
QString GeopsySLink::SeedLinkStream::location ( ) const [inline]
QString GeopsySLink::SeedLinkStream::seedName ( ) const [inline]
void GeopsySLink::SeedLinkStream::set ( double  t,
int *  samples,
int  nSamples,
BufferType  bt,
double  maxTime = 0.0 
)

t is the number of seconds counted from time reference.

maxTime is the maximum expected duration when applicable (rotate, createNew)

References CreateNew, GeopsyCore::DoubleSignal::deltaT(), GeopsyCore::Signal::endTime(), Rotate, GeopsyCore::DynamicSignal::set(), GeopsyCore::Signal::setDeltaT(), GeopsyCore::Signal::setT0(), GeopsyCore::Signal::setTimeReference(), GeopsyCore::DynamicSignal::shiftT0(), GeopsyCore::Signal::t0(), GeopsyCore::Signal::timeReference(), TRACE, and Unlimited.

{
  TRACE;
  switch (bt) {
  case Unlimited:
    _signal->set(t, samples, nSamples);
    break;
  case CreateNew: {
      if(maxTime==0.0) return;
      double availableTime=maxTime-(t-_signal->t0());
      if((nSamples*_signal->deltaT())>availableTime) {
        int nSamplesOld=(int)floor(availableTime/_signal->deltaT());
        _signal->set(t, samples, nSamplesOld);
        DynamicSignal * oldSignal=_signal;
        createSignal();
        _signal->setT0(oldSignal->endTime());
        _signal->setDeltaT(oldSignal->deltaT());
        _signal->setTimeReference(oldSignal->timeReference());
        _signal->set(_signal->t0(), samples+nSamplesOld, nSamples-nSamplesOld);
      } else {
        _signal->set(t, samples, nSamples);
      }
    }
    break;
  case Rotate: {
      if(maxTime==0.0) return;
      double availableTime=maxTime-(t-_signal->t0());
      if((nSamples*_signal->deltaT())>availableTime) {
        int n=nSamples-(int)floor(availableTime/_signal->deltaT());
        _signal->shiftT0(n);
      }
      _signal->set(t, samples, nSamples);
    }
    break;
  }
}
bool GeopsySLink::SeedLinkStream::setListening ( bool  l) [inline]
void GeopsySLink::SeedLinkStream::setSeedName ( QString  n) [inline]

Referenced by ConformProcess::start().

{_seedName=n;}

References GeopsySLink::SeedLinkStation::name(), GeopsySLink::SeedLinkStation::network(), and TRACE.

Referenced by ConformProcess::start(), and xml_setAttributes().

{
  TRACE;
  _tag=_station->network().left(2).toAscii();
  _tag+="_";
  _tag+=_station->name().leftJustified(5,' ',true).toAscii();
  _tag+=_location.left(2).leftJustified(2,' ',true).toAscii();
  _tag+=_seedName.left(3).leftJustified(3,' ',true).toAscii();
}
QByteArray GeopsySLink::SeedLinkStream::tag ( ) const [inline]
QString GeopsySLink::SeedLinkStream::type ( ) const [inline]

Reimplemented from QGpCoreTools::XMLClass.

References TRACE.

{
  TRACE;
  Q_UNUSED(context);
  static const QString keys[]={ "location", "seedname", "type", "begin_time", "end_time", "begin_recno", "end_recno", "gap_check", "gap_threshold" };
  attributes.add(keys[0], _location);
  attributes.add(keys[1], _seedName);
  attributes.add(keys[2], _type);
  attributes.add(keys[3], _beginTime);
  attributes.add(keys[4], _endTime);
  attributes.add(keys[5], QString::number(_beginRecNo) );
  attributes.add(keys[6], QString::number(_endRecNo) );
  attributes.add(keys[7], _gapCheck ? "enabled" : "disabled" );
  attributes.add(keys[8], QString::number(_gapThreshold) );
}

Reimplemented from QGpCoreTools::XMLClass.

References setTag(), QGpCoreTools::StringSection::size(), and TRACE.

{
  TRACE;
  Q_UNUSED(context);
  for(XMLRestoreAttributeIterator it=attributes.begin(); it!= attributes.end(); it++ ) {
    const StringSection& att=it.key();
    if(att.size()<1) return false;
    switch (att[0].unicode()) {
    case 'l':
      if(att=="location" ) _location=it.value().toString(); else return false;
      break;
    case 's':
      if(att=="seedname" ) _seedName=it.value().toString(); else return false;
      break;
    case 't':
      if(att=="type" ) _type=it.value().toString(); else return false;
      break;
    case 'b':
      if(att=="begin_time" ) _beginTime=it.value().toString();
      else if(att=="begin_recno" ) _beginRecNo=it.value().toInt(); else return false;
      break;
    case 'e':
      if(att=="end_time" ) _endTime=it.value().toString();
      else if(att=="end_recno" ) _endRecNo=it.value().toInt(); else return false;
      break;
    case 'g':
      if(att=="gap_check" ) _gapCheck=it.value()=="enabled";
      else if(att=="gap_treshold" ) _gapThreshold=it.value().toInt(); else return false;
      break;
    default:
      return false;
    }
  }
  setTag();
  return true;
}
virtual const QString& GeopsySLink::SeedLinkStream::xml_tagName ( ) const [inline, virtual]

Member Data Documentation

const QString GeopsySLink::SeedLinkStream::xmlSeedLinkStreamTag = "stream" [static]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines