μHAL (v2.8.17)
Part of the IPbus software repository
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
PacketFmt.cpp
Go to the documentation of this file.
1
3
4
5#include <iomanip>
6#include <iostream>
7
8
9namespace uhal {
10namespace detail {
11
12PacketFmt::PacketFmt(const uint8_t* const aPtr, const size_t aNrBytes) :
13 mData(1, std::pair<const uint8_t*, size_t>(aPtr, aNrBytes))
14{}
15
16
17PacketFmt::PacketFmt(const std::vector< std::pair<const uint8_t*, size_t> >& aData) :
18 mData(aData)
19{}
20
21
23{}
24
25
26std::ostream& operator<<(std::ostream& aStream, const PacketFmt& aPacket)
27{
28 std::ios::fmtflags lOrigFlags( aStream.flags() );
29
30 size_t lNrBytesWritten = 0;
31 for (size_t i = 0; i < aPacket.mData.size(); i++) {
32 for (const uint8_t* lPtr = aPacket.mData.at(i).first; lPtr != (aPacket.mData.at(i).first + aPacket.mData.at(i).second); lPtr++, lNrBytesWritten++) {
33 if ((lNrBytesWritten & 3) == 0)
34 aStream << std::endl << " @ " << std::setw(3) << std::dec << (lNrBytesWritten >> 2) << " : x";
35 aStream << std::setw(2) << std::hex << uint16_t(*lPtr) << " ";
36 }
37 }
38
39 aStream.flags( lOrigFlags );
40 return aStream;
41}
42
43}
44}
Class used to display IPbus packet contents in human-readable format (e.g. in log messages)
Definition: PacketFmt.hpp:16
const std::vector< std::pair< const uint8_t *, size_t > > mData
Definition: PacketFmt.hpp:22
PacketFmt(const uint8_t *const, const size_t)
Definition: PacketFmt.cpp:12
std::ostream & operator<<(std::ostream &, const PacketFmt &)
Definition: PacketFmt.cpp:26
std::size_t size_t
Definition: common.h:461