#include "extended_user_header.hpp" namespace attn { namespace pel { ExtendedUserHeader::ExtendedUserHeader(Stream& pel) { unflatten(pel); } void ExtendedUserHeader::flatten(Stream& pel) const { pel << _header; pel.write(_mtms, mtmsSize); pel.write(_serverFWVersion.data(), _serverFWVersion.size()); pel.write(_subsystemFWVersion.data(), _subsystemFWVersion.size()); pel << _reserved4B << _refTime << _reserved1B1 << _reserved1B2 << _reserved1B3 << _symptomIdSize << _symptomId; } void ExtendedUserHeader::unflatten(Stream& pel) { pel >> _header; pel.read(_mtms, mtmsSize); pel.read(_serverFWVersion.data(), _serverFWVersion.size()); pel.read(_subsystemFWVersion.data(), _subsystemFWVersion.size()); pel >> _reserved4B >> _refTime >> _reserved1B1 >> _reserved1B2 >> _reserved1B3 >> _symptomIdSize >> _symptomId; //_symptomId.resize(_symptomIdSize); pel >> _symptomId; } void ExtendedUserHeader::setSymptomId(const std::string& symptomId) { // set symptomId to new symptomId std::copy(symptomId.begin(), symptomId.end(), std::back_inserter(_symptomId)); // new symptom Id cannot be larger than existing symptom Id if (_symptomId.size() > size_t((_symptomIdSize - 1))) { _symptomId.resize(_symptomIdSize - 1); } // null terminate new symptom Id (it may have been smaller) _symptomId.push_back(0); // pad if new symptom ID (it may have been smaller) while ((_symptomId.size() != _symptomIdSize)) { _symptomId.push_back(0); } } } // namespace pel } // namespace attn