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