Skip to content
Snippets Groups Projects
Select Git revision
  • 583137da33e2da99351a1e36057b5f3c6ca1b4b5
  • master default protected
  • fix-issue-901
  • fix-issue-928
  • fix-issue-896-zmq-publish
  • fix-issue-885
  • fix-issue-921
  • fix-910
  • fix-issue-804
  • srt-bandQ-receiver
  • fix-issue-855
  • stable
  • srt-bandW-receiver
  • fix-issue-805
  • feature-med-c-band-srv
  • fix-issue-760
  • fix-issue-628
  • fix-issue-588
  • fix-issue-derotator-328
  • OffsetReview
  • DerotatorAndMinorServo
  • discos1.0.6h
  • discos1.0.6f
  • discos1.0.6e
  • discos1.0.6d
  • discos1.0.6c
  • discos1.0.6b
  • discos1.0.6a
  • discos1.0.6
  • discos1.0.5
  • discos1.0.4
  • discos1.0.3
  • discos1.0.2
  • discos1.0.1
  • discos1.0.0
  • discos1.0-rc02
  • discos1.0-rc01
  • escs-0.5
  • escs-0.4
  • nuraghe-0.6
  • noto-0.1
41 results

RefractionCore.cpp

Blame
  • PacketDataField.cpp 2.75 KiB
    /***************************************************************************
                              PacketDataField.cpp  -  description
                                 -------------------
        begin                : Thu Nov 29 2001
        copyright            : (C) 2001, 2013 by Andrea Bulgarelli
        email                : bulgarelli@iasfbo.inaf.it
     ***************************************************************************/
    
    /***************************************************************************
     *                                                                         *
     *   This program is free software for non commercial purpose              *
     *   and for public research institutes; you can redistribute it and/or    *
     *   modify it under the terms of the GNU General Public License.          *
     *   For commercial purpose see appropriate license terms                  *
     *                                                                         *
     ***************************************************************************/
     
    #include "PacketDataField.h"
    
    using namespace PacketLib;
    
    
    PacketDataField::PacketDataField() : PartOfPacket("Packet Data Field")
    {
        dataFieldHeader = (DataFieldHeader*) new DataFieldHeader();
        tail = new PartOfPacket();
        sourceDataField = 0;
    };
    
    
    PacketDataField::~PacketDataField()
    {
        delete dataFieldHeader;
        delete sourceDataField;
        delete tail;
    }
    
    
    
    dword PacketDataField::getDimension()
    {
        if(sourceDataField != 0)
            return dataFieldHeader->getDimension() + sourceDataField->getDimension() + tail->getDimension();
        else
            return dataFieldHeader->getDimension() + tail->getDimension();
    }
    
    
    
    dword PacketDataField::getMaxDimension()
    {
        if(sourceDataField != 0)
            return dataFieldHeader->getDimension() + sourceDataField->getMaxDimension() + tail->getDimension();
        else
            return dataFieldHeader->getDimension() + tail->getDimension();
    }
    
    
    
    
    
    
    
    bool PacketDataField::setOutputStream(ByteStreamPtr os, word first)
    {
        outputstream = ByteStreamPtr(new ByteStream((os->stream + first), getDimension(), os->isBigendian()));
        dataFieldHeader->setOutputStream(os, first);
        word sdfstart = first + dataFieldHeader->getDimension();
        sourceDataField->setOutputStream(os, sdfstart);
        word tailstart = sdfstart;
        if(sourceDataField != 0)
            tailstart += sourceDataField->getDimension();
        if(tail->getDimension() != 0)
            tail->setOutputStream(os, tailstart);
        return true;
    }
    
    
    
    ByteStreamPtr PacketDataField::generateStream(bool bigendian)
    {
        dataFieldHeader->generateStream(bigendian);
        sourceDataField->generateStream(bigendian);
        tail->generateStream(bigendian);
        return outputstream;
    }