GloRawNavDataStdMessage::GloRawNavDataStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        int arraySizeInUniformFillFields = (BodySize() - 9) / 1;

        _serializer.Deserialize(p_message, _num);
        p_message += sizeof(_num);
        _serializer.Deserialize(p_message, _fcn);
        p_message += sizeof(_fcn);
        _serializer.Deserialize(p_message, _time);
        p_message += sizeof(_time);
        _serializer.Deserialize(p_message, _type);
        p_message += sizeof(_type);
        _serializer.Deserialize(p_message, _len);
        p_message += sizeof(_len);
        _serializer.Deserialize(p_message, sizeof(std::vector<Types::u1>::value_type) * arraySizeInUniformFillFields, _data);
        p_message += sizeof(std::vector<Types::u1>::value_type) * arraySizeInUniformFillFields;
        _serializer.Deserialize(p_message, _cs);
        p_message += sizeof(_cs);

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    RmsStdMessage::RmsStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        _serializer.Deserialize(p_message, _hpos);
        p_message += sizeof(_hpos);
        _serializer.Deserialize(p_message, _vpos);
        p_message += sizeof(_vpos);
        _serializer.Deserialize(p_message, _hvel);
        p_message += sizeof(_hvel);
        _serializer.Deserialize(p_message, _vvel);
        p_message += sizeof(_vvel);
        _serializer.Deserialize(p_message, _solType);
        p_message += sizeof(_solType);
        _serializer.Deserialize(p_message, _cs);
        p_message += sizeof(_cs);

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    QzssNavDataStdMessage::QzssNavDataStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        /*throw Common::NotImplementedException();*/

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
void MioBufferIn::Append(char * buff,uint32_t num)
{
    //just append;
    if(TailSize() >= num )
    {
        memcpy(wptr,buff,num);
        wptr+=num;
        return;
    }

    //move buffer
    if(HeadSize() + TailSize() >= num)
    {
        memmove(buffer,rptr, MidSize());
        wptr =  buffer + (wptr -rptr);
        rptr = buffer;

        memmove(wptr,buff,num);
        wptr+= num;
        return;
    }

    while(size < (num + MidSize()) )
        size*=DEFALUT_BUFFER_RESIZE;

    //malloc bigsize;
    char * tmp = new char [size];
    memmove(tmp,rptr, MidSize());
    wptr  = tmp + (wptr -rptr);
    rptr =tmp;
    delete[]  buffer;
    buffer = tmp;
}
    QzssIonoParamsStdMessage::QzssIonoParamsStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        _serializer.Deserialize(p_message, 39, _par);
        p_message += 39;

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    REStdMessage::REStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        int arraySizeInUniformFillFields = (BodySize() - 0) / 1;

        _serializer.Deserialize(p_message, arraySizeInUniformFillFields, _reply);
        p_message += arraySizeInUniformFillFields;

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    Security1StdMessage::Security1StdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        _serializer.Deserialize(p_message, sizeof(std::vector<Types::u1>::value_type) * 6, _data);
        p_message += sizeof(std::vector<Types::u1>::value_type) * 6;
        _serializer.Deserialize(p_message, _crc16);
        p_message += sizeof(_crc16);

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    PosVelVectorStdMessage::PosVelVectorStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        _serializer.Deserialize(p_message, _sample);
        p_message += sizeof(_sample);
        _serializer.Deserialize(p_message, _delta);
        p_message += sizeof(_delta);
        _serializer.Deserialize(p_message, _word1);
        p_message += sizeof(_word1);
        _serializer.Deserialize(p_message, _word2);
        p_message += sizeof(_word2);
        _serializer.Deserialize(p_message, _word3);
        p_message += sizeof(_word3);
        _serializer.Deserialize(p_message, _word4);
        p_message += sizeof(_word4);
        _serializer.Deserialize(p_message, _word5);
        p_message += sizeof(_word5);
        _serializer.Deserialize(p_message, _word6);
        p_message += sizeof(_word6);
        _serializer.Deserialize(p_message, _word7);
        p_message += sizeof(_word7);
        _serializer.Deserialize(p_message, _word8);
        p_message += sizeof(_word8);
        _serializer.Deserialize(p_message, _word9);
        p_message += sizeof(_word9);
        _serializer.Deserialize(p_message, _crc16);
        p_message += sizeof(_crc16);

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    RotationMatrixAndVectorsStdMessage::RotationMatrixAndVectorsStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        _serializer.Deserialize(p_message, _time);
        p_message += sizeof(_time);
        _serializer.Deserialize(p_message, _q00);
        p_message += sizeof(_q00);
        _serializer.Deserialize(p_message, _q01);
        p_message += sizeof(_q01);
        _serializer.Deserialize(p_message, _q02);
        p_message += sizeof(_q02);
        _serializer.Deserialize(p_message, _q12);
        p_message += sizeof(_q12);
        _serializer.Deserialize(p_message, sizeof(std::vector<Types::f4>::value_type) * 3, _rms);
        p_message += sizeof(std::vector<Types::f4>::value_type) * 3;
        _serializer.Deserialize(p_message, sizeof(std::vector<Types::u1>::value_type) * 3, _solType);
        p_message += sizeof(std::vector<Types::u1>::value_type) * 3;
        _serializer.Deserialize(p_message, _flag);
        p_message += sizeof(_flag);
        _serializer.Deserialize(p_message, sizeof(std::vector<Types::f4>::value_type) * 3, _bl0);
        p_message += sizeof(std::vector<Types::f4>::value_type) * 3;
        _serializer.Deserialize(p_message, sizeof(std::vector<Types::f4>::value_type) * 3, _bl1);
        p_message += sizeof(std::vector<Types::f4>::value_type) * 3;
        _serializer.Deserialize(p_message, sizeof(std::vector<Types::f4>::value_type) * 3, _bl2);
        p_message += sizeof(std::vector<Types::f4>::value_type) * 3;
        _serializer.Deserialize(p_message, _cs);
        p_message += sizeof(_cs);

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    BeiDouEphemerisStdMessage::BeiDouEphemerisStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        _serializer.Deserialize(p_message, 122, _req);
        p_message += 122;
        _serializer.Deserialize(p_message, _tgd2);
        p_message += sizeof(_tgd2);
        _serializer.Deserialize(p_message, _navType);
        p_message += sizeof(_navType);
        _serializer.Deserialize(p_message, _cs);
        p_message += sizeof(_cs);

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
    RefEpochStdMessage::RefEpochStdMessage( const char* pc_message, int p_length ) 
        : _id(pc_message, 2), _bodySize(p_length - HeadSize())
    {
        char* p_message = const_cast<char*>(pc_message);
        
        p_message += HeadSize();
    
        _serializer.Deserialize(p_message, _sample);
        p_message += sizeof(_sample);
        _serializer.Deserialize(p_message, _scale);
        p_message += sizeof(_scale);
        _serializer.Deserialize(p_message, _reftime);
        p_message += sizeof(_reftime);
        _serializer.Deserialize(p_message, _crc16);
        p_message += sizeof(_crc16);

        _isCorrect = (p_message - pc_message == p_length);
        if (!_isCorrect)
        {
            sLogger.Debug(QString("The message %1 is incorrect. Excepted size is %2 whilst the actual size is %3.")
                .arg(QString::fromStdString(ToString())).arg(p_length).arg(p_message - pc_message));
        }
    }
Exemple #12
0
uint64 EbmlVoid::ReplaceWith(EbmlElement & EltToReplaceWith, IOCallback & output, bool ComeBackAfterward, bool bWithDefault)
{
	EltToReplaceWith.UpdateSize(bWithDefault);
	if (HeadSize() + GetSize() < EltToReplaceWith.GetSize() + EltToReplaceWith.HeadSize()) {
		// the element can't be written here !
		return INVALID_FILEPOS_T;
	}
	if (HeadSize() + GetSize() - EltToReplaceWith.GetSize() - EltToReplaceWith.HeadSize() == 1) {
		// there is not enough space to put a filling element
		return INVALID_FILEPOS_T;
	}

	uint64 CurrentPosition = output.getFilePointer();

	output.setFilePointer(GetElementPosition());
	EltToReplaceWith.Render(output, bWithDefault);

	if (HeadSize() + GetSize() - EltToReplaceWith.GetSize() - EltToReplaceWith.HeadSize() > 1) {
	  // fill the rest with another void element
	  EbmlVoid aTmp;
	  aTmp.SetSize_(HeadSize() + GetSize() - EltToReplaceWith.GetSize() - EltToReplaceWith.HeadSize() - 1); // 1 is the length of the Void ID
	  int HeadBefore = aTmp.HeadSize();
	  aTmp.SetSize_(aTmp.GetSize() - CodedSizeLength(aTmp.GetSize(), aTmp.GetSizeLength(), aTmp.IsFiniteSize()));
	  int HeadAfter = aTmp.HeadSize();
	  if (HeadBefore != HeadAfter) {
		  aTmp.SetSizeLength(CodedSizeLength(aTmp.GetSize(), aTmp.GetSizeLength(), aTmp.IsFiniteSize()) - (HeadAfter - HeadBefore));
	  }
	  aTmp.RenderHead(output, false, bWithDefault); // the rest of the data is not rewritten
	}

	if (ComeBackAfterward) {
		output.setFilePointer(CurrentPosition);
	}

	return GetSize() + HeadSize();
}
Exemple #13
0
uint64 EbmlVoid::Overwrite(const EbmlElement & EltToVoid, IOCallback & output, bool ComeBackAfterward, bool bWithDefault)
{
//	EltToVoid.UpdateSize(bWithDefault);
	if (EltToVoid.GetElementPosition() == 0) {
		// this element has never been written
		return 0;
	}
	if (EltToVoid.GetSize() + EltToVoid.HeadSize() <2) {
		// the element can't be written here !
		return 0;
	}

	uint64 CurrentPosition = output.getFilePointer();

	output.setFilePointer(EltToVoid.GetElementPosition());

	// compute the size of the voided data based on the original one
	SetSize(EltToVoid.GetSize() + EltToVoid.HeadSize() - 1); // 1 for the ID
	SetSize(GetSize() - CodedSizeLength(GetSize(), GetSizeLength(), IsFiniteSize()));
	// make sure we handle even the strange cases
	//uint32 A1 = GetSize() + HeadSize();
	//uint32 A2 = EltToVoid.GetSize() + EltToVoid.HeadSize();
	if (GetSize() + HeadSize() != EltToVoid.GetSize() + EltToVoid.HeadSize()) {
		SetSize(GetSize()-1);
		SetSizeLength(CodedSizeLength(GetSize(), GetSizeLength(), IsFiniteSize()) + 1);
	}

	if (GetSize() != 0) {
		RenderHead(output, false, bWithDefault); // the rest of the data is not rewritten
	}

	if (ComeBackAfterward) {
		output.setFilePointer(CurrentPosition);
	}

	return EltToVoid.GetSize() + EltToVoid.HeadSize();
}
 RotationMatrixAndVectorsStdMessage::RotationMatrixAndVectorsStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 CalBandsDelayStdMessage::CalBandsDelayStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 PosVelVectorStdMessage::PosVelVectorStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 TrackingTimeStdMessage::TrackingTimeStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 GloNavDataStdMessage::GloNavDataStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 Security1StdMessage::Security1StdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 QzssIonoParamsStdMessage::QzssIonoParamsStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 RcvBeiDouTimeOffsetStdMessage::RcvBeiDouTimeOffsetStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
Exemple #22
0
uint64 KaxSegment::GetGlobalPosition(uint64 aRelativePosition) const
{
	return aRelativePosition + GetElementPosition() + HeadSize();
}
Exemple #23
0
uint64 KaxSegment::GetRelativePosition(uint64 aGlobalPosition) const
{
	return aGlobalPosition - GetElementPosition() - HeadSize();
}
 BeiDouEphemerisStdMessage::BeiDouEphemerisStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }
 LoggingHistoryStdMessage::LoggingHistoryStdMessage( const std::string& p_id, int p_size ) 
     : _id(p_id), _bodySize(p_size - HeadSize())
 {
     _isCorrect = true;
 }