xref: /freebsd-src/contrib/opencsd/decoder/include/interfaces/trc_pkt_raw_in_i.h (revision 46e6e290975f19ea62d03f90ac3e523af4dae557)
1c120c564SAndrew Turner /*
2c120c564SAndrew Turner  * \file       trc_pkt_raw_in_i.h
3c120c564SAndrew Turner  * \brief      OpenCSD :
4c120c564SAndrew Turner  *
5c120c564SAndrew Turner  * \copyright  Copyright (c) 2015, ARM Limited. All Rights Reserved.
6c120c564SAndrew Turner  */
7c120c564SAndrew Turner 
8c120c564SAndrew Turner 
9c120c564SAndrew Turner /*
10c120c564SAndrew Turner  * Redistribution and use in source and binary forms, with or without modification,
11c120c564SAndrew Turner  * are permitted provided that the following conditions are met:
12c120c564SAndrew Turner  *
13c120c564SAndrew Turner  * 1. Redistributions of source code must retain the above copyright notice,
14c120c564SAndrew Turner  * this list of conditions and the following disclaimer.
15c120c564SAndrew Turner  *
16c120c564SAndrew Turner  * 2. Redistributions in binary form must reproduce the above copyright notice,
17c120c564SAndrew Turner  * this list of conditions and the following disclaimer in the documentation
18c120c564SAndrew Turner  * and/or other materials provided with the distribution.
19c120c564SAndrew Turner  *
20c120c564SAndrew Turner  * 3. Neither the name of the copyright holder nor the names of its contributors
21c120c564SAndrew Turner  * may be used to endorse or promote products derived from this software without
22c120c564SAndrew Turner  * specific prior written permission.
23c120c564SAndrew Turner  *
24c120c564SAndrew Turner  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
25c120c564SAndrew Turner  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26c120c564SAndrew Turner  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
27c120c564SAndrew Turner  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
28c120c564SAndrew Turner  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29c120c564SAndrew Turner  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30c120c564SAndrew Turner  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31c120c564SAndrew Turner  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32c120c564SAndrew Turner  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33c120c564SAndrew Turner  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34c120c564SAndrew Turner  */
35c120c564SAndrew Turner 
36c120c564SAndrew Turner #ifndef ARM_TRC_PKT_RAW_IN_I_H_INCLUDED
37c120c564SAndrew Turner #define ARM_TRC_PKT_RAW_IN_I_H_INCLUDED
38c120c564SAndrew Turner 
39c120c564SAndrew Turner #include "trc_abs_typed_base_i.h"
40c120c564SAndrew Turner 
41c120c564SAndrew Turner /*!
42c120c564SAndrew Turner  * @class IPktRawDataMon
43c120c564SAndrew Turner  *
44c120c564SAndrew Turner  * @brief Interface class for packet processor monitor.
45c120c564SAndrew Turner  *
46c120c564SAndrew Turner  * @addtogroup ocsd_interfaces
47c120c564SAndrew Turner  *
48c120c564SAndrew Turner  * This interface provides a monitor point for the packet processor block.
49c120c564SAndrew Turner  * The templated interface is called with a complete packet of the given
50*46e6e290SRuslan Bukin  * type, plus the raw packet bytes. Use for tools which need to display complete
51c120c564SAndrew Turner  * packets or require additional processing on raw packet data.
52c120c564SAndrew Turner  *
53c120c564SAndrew Turner  * This interface is not part of the data decode path and cannot provide feedback.
54c120c564SAndrew Turner  *
55c120c564SAndrew Turner  */
56c120c564SAndrew Turner template<class P>
57c120c564SAndrew Turner class IPktRawDataMon : public ITrcTypedBase
58c120c564SAndrew Turner {
59c120c564SAndrew Turner public:
IPktRawDataMon()60c120c564SAndrew Turner     IPktRawDataMon() {}; /**< Default constructor. */
~IPktRawDataMon()61c120c564SAndrew Turner     virtual ~IPktRawDataMon() {};  /**< Default destructor. */
62c120c564SAndrew Turner 
63c120c564SAndrew Turner     /*!
64c120c564SAndrew Turner      * Interface monitor function called with a complete packet, or other
65c120c564SAndrew Turner      * data path operation.
66c120c564SAndrew Turner      *
67c120c564SAndrew Turner      * @param op : Datapath operation
68c120c564SAndrew Turner      * @param index_sop : start of packet index
69c120c564SAndrew Turner      * @param *pkt : The expanded packet
70c120c564SAndrew Turner      * @param size : size of packet data bytes
71c120c564SAndrew Turner      * @param *p_data : the packet data bytes.
72c120c564SAndrew Turner      *
73c120c564SAndrew Turner      */
74c120c564SAndrew Turner     virtual void RawPacketDataMon( const ocsd_datapath_op_t op,
75c120c564SAndrew Turner                                    const ocsd_trc_index_t index_sop,
76c120c564SAndrew Turner                                    const P *pkt,
77c120c564SAndrew Turner                                    const uint32_t size,
78c120c564SAndrew Turner                                    const uint8_t *p_data) = 0;
79c120c564SAndrew Turner };
80c120c564SAndrew Turner 
81c120c564SAndrew Turner #endif // ARM_TRC_PKT_RAW_IN_I_H_INCLUDED
82c120c564SAndrew Turner 
83c120c564SAndrew Turner /* End of File trc_pkt_raw_in_i.h */
84