39 #include "uhal/log/log.hpp" 45 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
56 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
59 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
62 for ( std::vector<uint32_t>::const_iterator lIt ( aIt ); lIt != aEnd; ++lIt )
68 uint32_t lAddress , lAddend , lAndTerm , lOrTerm ;
69 std::vector<uint32_t>::const_iterator lPayloadBegin, lPayloadEnd;
71 if ( IPbus_major != 1 )
82 if ( IPbus_major != 1 )
104 if ( IPbus_major != 1 )
106 if ( ! aContinueOnError )
112 log (
Warning() ,
"Attempting to see if it is because the bad header was, in fact, a packet header" );
114 return this->
analyze ( aIt , aEnd );
149 ni_write ( lAddress , lPayloadBegin , lPayloadEnd );
156 write ( lAddress , lPayloadBegin , lPayloadEnd );
162 rmw_sum ( lAddress , lAddend );
168 rmw_bits ( lAddress , lAndTerm , lOrTerm );
195 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
202 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
210 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
218 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
226 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
231 uint32_t lCounter ( 0 );
233 while ( aIt != aEnd )
240 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
245 uint32_t lCounter ( 0 );
247 while ( aIt != aEnd )
254 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
263 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
273 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
280 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
288 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
295 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
302 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
312 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
325 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
329 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
333 std::vector<uint32_t>::const_iterator lPayloadBegin, lPayloadEnd;
335 if ( IPbus_major != 1 )
346 if ( IPbus_major != 1 )
368 if ( IPbus_major != 1 )
370 if ( ! aContinueOnError )
376 log (
Warning() ,
"Attempting to see if it is because the bad header was, in fact, a packet header" );
378 return this->
analyze ( aIt , aEnd );
394 ni_read ( lPayloadBegin , lPayloadEnd );
400 read ( lPayloadBegin , lPayloadEnd );
438 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
445 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
449 uint32_t lCounter ( 0 );
451 while ( aIt != aEnd )
458 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
462 uint32_t lCounter ( 0 );
464 while ( aIt != aEnd )
471 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
478 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
485 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
493 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
501 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
508 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
516 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
523 template< u
int8_t IPbus_major , u
int8_t IPbus_minor >
bool analyze(std::vector< uint32_t >::const_iterator &aIt, const std::vector< uint32_t >::const_iterator &aEnd, const bool &aContinueOnError=true)
Analyse an IPbus packet held as a vector of uint32_t's.
virtual void unknown_type()
Virtual callback function for the case where the header is unknown.
uint32_t mTransactionId
The current transaction id.
A class which provides the version-specific functionality for IPbus.
virtual bool control_packet_header()
Virtual callback function called when an IPbus 2.0 control packet header is observed.
virtual void rmw_sum(const uint32_t &aAddress, const uint32_t &aAddend)
Virtual callback function called when a read-modify-write sum is observed.
uint32_t mPacketType
The current IPbus2 packet type.
Helper class to decode IPbus packets as passed from the Client to the Target.
virtual void read(const uint32_t &aAddress)
Virtual callback function called when an incrementing read is observed.
uint32_t mTransactionId
The current transaction id.
virtual void write(const uint32_t &aAddress, std::vector< uint32_t >::const_iterator &aIt, const std::vector< uint32_t >::const_iterator &aEnd)
Virtual callback function called when an incrementing write is observed.
virtual ~TargetToHostInspector()
Destructor.
virtual void rmw_sum(const uint32_t &aNewValue)
Virtual callback function called when a read-modify-write sum is observed.
uint32_t mHeader
The current raw transaction header.
uint32_t mPacketHeader
The current raw IPbus2 packet header.
virtual bool control_packet_header()
Virtual callback function called when an IPbus 2.0 control packet header is observed.
virtual void unknown_packet_header()
Virtual callback function called when an unknown IPbus 2.0 packet header is observed.
virtual void ni_write()
Virtual callback function called when a non-incrementing write is observed.
virtual void ni_write(const uint32_t &aAddress, std::vector< uint32_t >::const_iterator &aIt, const std::vector< uint32_t >::const_iterator &aEnd)
Virtual callback function called when a non-incrementing write is observed.
TargetToHostInspector()
Default constructor.
virtual void ni_read(std::vector< uint32_t >::const_iterator &aIt, const std::vector< uint32_t >::const_iterator &aEnd)
Virtual callback function called when a non-incrementing read is observed.
uint32_t mWordCounter
The current word count.
Helper class to decode IPbus packets as passed from the Target to the Client.
virtual void unknown_type()
Virtual callback function for the case where the header is unknown.
virtual void bot()
Virtual callback function called when a Byte-OrderTransaction is observed.
virtual void ni_read(const uint32_t &aAddress)
Virtual callback function called when a non-incrementing read is observed.
Empty struct which acts as a dummy variable for passing the formatting information around...
eIPbusTransactionType mType
The current transaction type.
uint32_t mPacketType
The current IPbus2 packet type.
virtual void unknown_packet_header()
Virtual callback function called when an unknown IPbus 2.0 packet header is observed.
uint32_t mHeader
The current raw transaction header.
virtual void rmw_bits(const uint32_t &aNewValue)
Virtual callback function called when a read-modify-write bits is observed.
uint8_t mResponseGood
The current error code/flag.
eIPbusTransactionType mType
The current transaction type.
virtual void rmw_bits(const uint32_t &aAddress, const uint32_t &aAndTerm, const uint32_t &aOrTerm)
Virtual callback function called when a read-modify-write bits is observed.
virtual void resend_packet_header()
Virtual callback function called when an IPbus 2.0 resend packet header is observed.
bool analyze(std::vector< uint32_t >::const_iterator &aIt, const std::vector< uint32_t >::const_iterator &aEnd, const bool &aContinueOnError=true)
Analyse an IPbus packet held as a vector of uint32_t's.
virtual void write()
Virtual callback function called when an incrementing write is observed.
virtual void status_packet_header()
Virtual callback function called when an IPbus 2.0 status packet header is observed.
HostToTargetInspector()
Default constructor.
virtual ~HostToTargetInspector()
Destructor.
uint32_t mPacketCounter
The current IPbus2 packet counter.
uint32_t mWordCounter
The current word count.
virtual void read(std::vector< uint32_t >::const_iterator &aIt, const std::vector< uint32_t >::const_iterator &aEnd)
Virtual callback function called when an incrementing read is observed.
virtual void status_packet_header()
Virtual callback function called when an IPbus 2.0 status packet header is observed.
virtual void readConfigurationSpace(const uint32_t &aAddress)
Virtual callback function called when an incrementing "configuration space" read is observed...
uint8_t mResponseGood
The current error code/flag.
virtual void bot()
Virtual callback function called when a Byte-OrderTransaction is observed.
uint32_t mPacketCounter
The current IPbus2 packet counter.
_Integer< T, IntFmt<> > Integer(const T &aT)
Forward declare a function which creates an instance of the ultra-lightweight wrapper from an integer...
uint32_t mPacketHeader
The current raw IPbus2 packet header.