μHAL (v2.8.17)
Part of the IPbus software repository
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
IPbusInspector.hpp
Go to the documentation of this file.
1/*
2---------------------------------------------------------------------------
3
4 This file is part of uHAL.
5
6 uHAL is a hardware access library and programming framework
7 originally developed for upgrades of the Level-1 trigger of the CMS
8 experiment at CERN.
9
10 uHAL is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version 3 of the License, or
13 (at your option) any later version.
14
15 uHAL is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with uHAL. If not, see <http://www.gnu.org/licenses/>.
22
23
24 Andrew Rose, Imperial College, London
25 email: awr01 <AT> imperial.ac.uk
26
27 Marc Magrans de Abril, CERN
28 email: marc.magrans.de.abril <AT> cern.ch
29
30---------------------------------------------------------------------------
31*/
32
39#ifndef _uhal_IPbusInspector_hpp_
40#define _uhal_IPbusInspector_hpp_
41
42
43#include <stdint.h>
44#include <vector>
45
47
48
49namespace uhal
50{
51
53 template< uint8_t IPbus_major , uint8_t IPbus_minor >
55 {
56 public:
59
61 virtual ~HostToTargetInspector( );
62
63 protected:
65 uint32_t mHeader;
69 uint32_t mWordCounter;
74
76 uint32_t mPacketHeader;
80 uint32_t mPacketType;
81
82 public:
90 bool analyze ( std::vector<uint32_t>::const_iterator& aIt , const std::vector<uint32_t>::const_iterator& aEnd , const bool& aContinueOnError = true );
91
92 protected:
94 virtual void bot();
95
100 virtual void ni_read ( const uint32_t& aAddress );
101
106 virtual void read ( const uint32_t& aAddress );
107
112 virtual void readConfigurationSpace ( const uint32_t& aAddress );
113
120 virtual void ni_write ( const uint32_t& aAddress , std::vector<uint32_t>::const_iterator& aIt , const std::vector<uint32_t>::const_iterator& aEnd );
121
128 virtual void write ( const uint32_t& aAddress , std::vector<uint32_t>::const_iterator& aIt , const std::vector<uint32_t>::const_iterator& aEnd );
129
135 virtual void rmw_sum ( const uint32_t& aAddress , const uint32_t& aAddend );
136
143 virtual void rmw_bits ( const uint32_t& aAddress , const uint32_t& aAndTerm , const uint32_t& aOrTerm );
144
146 virtual void unknown_type();
147
149 virtual bool control_packet_header ();
150
152 virtual void status_packet_header();
153
155 virtual void resend_packet_header();
156
158 virtual void unknown_packet_header();
159 };
160
161
162
164 template< uint8_t IPbus_major , uint8_t IPbus_minor >
166 {
167 public:
171 virtual ~TargetToHostInspector( );
172
173 protected:
175 uint32_t mHeader;
179 uint32_t mWordCounter;
184
190 uint32_t mPacketType;
191
192 public:
193
201 bool analyze ( std::vector<uint32_t>::const_iterator& aIt , const std::vector<uint32_t>::const_iterator& aEnd , const bool& aContinueOnError = true );
202
203 protected:
205 virtual void bot();
206
212 virtual void ni_read ( std::vector<uint32_t>::const_iterator& aIt , const std::vector<uint32_t>::const_iterator& aEnd );
213
219 virtual void read ( std::vector<uint32_t>::const_iterator& aIt , const std::vector<uint32_t>::const_iterator& aEnd );
220
222 virtual void ni_write ( );
223
225 virtual void write ( );
226
231 virtual void rmw_sum ( const uint32_t& aNewValue );
232
237 virtual void rmw_bits ( const uint32_t& aNewValue );
238
240 virtual void unknown_type();
241
243 virtual bool control_packet_header ();
244
246 virtual void status_packet_header();
247
249 virtual void unknown_packet_header();
250 };
251
252}
253
254
255#endif
Helper class to decode IPbus packets as passed from the Client to the Target.
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 resend_packet_header()
Virtual callback function called when an IPbus 2.0 resend packet header is observed.
uint32_t mHeader
The current raw transaction header.
uint8_t mResponseGood
The current error code/flag.
virtual ~HostToTargetInspector()
Destructor.
virtual void unknown_type()
Virtual callback function for the case where the header is unknown.
uint32_t mWordCounter
The current word count.
virtual void status_packet_header()
Virtual callback function called when an IPbus 2.0 status packet header is observed.
IPbusTransactionType mType
The current transaction type.
uint32_t mTransactionId
The current transaction id.
virtual void ni_read(const uint32_t &aAddress)
Virtual callback function called when a non-incrementing read is observed.
virtual void read(const uint32_t &aAddress)
Virtual callback function called when an incrementing read 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 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.
uint32_t mPacketType
The current IPbus2 packet type.
virtual void bot()
Virtual callback function called when a Byte-OrderTransaction is observed.
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 unknown_packet_header()
Virtual callback function called when an unknown IPbus 2.0 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 mPacketCounter
The current IPbus2 packet counter.
HostToTargetInspector()
Default constructor.
virtual void readConfigurationSpace(const uint32_t &aAddress)
Virtual callback function called when an incrementing "configuration space" read is observed.
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.
Helper class to decode IPbus packets as passed from the Target to the Client.
virtual void ni_write()
Virtual callback function called when a non-incrementing write is observed.
virtual void rmw_bits(const uint32_t &aNewValue)
Virtual callback function called when a read-modify-write bits is observed.
virtual void write()
Virtual callback function called when an incrementing write is observed.
virtual void unknown_packet_header()
Virtual callback function called when an unknown IPbus 2.0 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 status_packet_header()
Virtual callback function called when an IPbus 2.0 status packet header is observed.
virtual ~TargetToHostInspector()
Destructor.
virtual void unknown_type()
Virtual callback function for the case where the header is unknown.
uint32_t mTransactionId
The current transaction id.
uint32_t mPacketHeader
The current raw IPbus2 packet header.
uint8_t mResponseGood
The current error code/flag.
virtual void bot()
Virtual callback function called when a Byte-OrderTransaction is observed.
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.
uint32_t mWordCounter
The current word count.
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.
virtual bool control_packet_header()
Virtual callback function called when an IPbus 2.0 control packet header is observed.
IPbusTransactionType mType
The current transaction type.
uint32_t mPacketCounter
The current IPbus2 packet counter.
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 mPacketType
The current IPbus2 packet type.
IPbusTransactionType
Enumerated type to define the IPbus transaction type.