Line data Source code
1 : #include "uhallibs/formatters.hpp"
2 :
3 : #include <iomanip> // for pair
4 :
5 : namespace uhallibs {
6 :
7 0 : PacketFmt::PacketFmt(const uint8_t* const aPtr, const size_t aNrBytes)
8 0 : : mData(1, std::pair<const uint8_t*, size_t>(aPtr, aNrBytes))
9 : {
10 0 : }
11 :
12 0 : PacketFmt::PacketFmt(const std::vector<std::pair<const uint8_t*, size_t>>& aData)
13 0 : : mData(aData)
14 : {
15 0 : }
16 :
17 0 : PacketFmt::~PacketFmt() {}
18 :
19 : std::ostream&
20 0 : operator<<(std::ostream& aStream, const PacketFmt& aPacket)
21 : {
22 0 : std::ios::fmtflags lOrigFlags(aStream.flags());
23 :
24 0 : size_t lNrBytesWritten = 0;
25 0 : for (size_t i = 0; i < aPacket.mData.size(); i++) {
26 0 : for (const uint8_t* lPtr = aPacket.mData.at(i).first;
27 0 : lPtr != (aPacket.mData.at(i).first + aPacket.mData.at(i).second);
28 0 : lPtr++, lNrBytesWritten++) {
29 0 : if ((lNrBytesWritten & 3) == 0)
30 0 : aStream << std::endl << " @ " << std::setw(3) << std::dec << (lNrBytesWritten >> 2) << " : x";
31 0 : aStream << std::setw(2) << std::hex << uint16_t(*lPtr) << " ";
32 : }
33 : }
34 :
35 0 : aStream.flags(lOrigFlags);
36 0 : return aStream;
37 : }
38 :
39 0 : DMAFmt::DMAFmt(const uint8_t* const aPtr, const size_t aNrBytes)
40 0 : : mData(1, std::pair<const uint8_t*, size_t>(aPtr, aNrBytes))
41 : {
42 0 : }
43 :
44 0 : DMAFmt::~DMAFmt() {}
45 :
46 : std::ostream&
47 0 : operator<<(std::ostream& aStream, const DMAFmt& aPacket)
48 : {
49 0 : std::ios::fmtflags lOrigFlags(aStream.flags());
50 :
51 0 : size_t lNrBytesWritten = 0;
52 0 : for (size_t i = 0; i < aPacket.mData.size(); i++) {
53 0 : for (const uint8_t* lPtr = aPacket.mData.at(i).first;
54 0 : lPtr != (aPacket.mData.at(i).first + aPacket.mData.at(i).second);
55 0 : lPtr++, lNrBytesWritten++) {
56 0 : if ((lNrBytesWritten & 63) == 0)
57 0 : aStream << std::endl << " @ " << std::setw(3) << std::dec << (lNrBytesWritten >> 2) << " : x";
58 0 : aStream << std::setw(2) << std::hex << uint16_t(*lPtr) << " ";
59 : }
60 : }
61 :
62 0 : aStream.flags(lOrigFlags);
63 0 : return aStream;
64 : }
65 :
66 : } // namespace uhal
|