]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/opencsd/decoder/include/common/trc_frame_deformatter.h
Re-add opencsd as a vendor import from the dist directory
[FreeBSD/FreeBSD.git] / contrib / opencsd / decoder / include / common / trc_frame_deformatter.h
1 /*!
2  * \file       trc_frame_deformatter.h
3  * \brief      OpenCSD : De-format CoreSight formatted trace frame.
4  * 
5  * \copyright  Copyright (c) 2015, ARM Limited. All Rights Reserved.
6  */
7
8 /* 
9  * Redistribution and use in source and binary forms, with or without modification, 
10  * are permitted provided that the following conditions are met:
11  * 
12  * 1. Redistributions of source code must retain the above copyright notice, 
13  * this list of conditions and the following disclaimer.
14  * 
15  * 2. Redistributions in binary form must reproduce the above copyright notice, 
16  * this list of conditions and the following disclaimer in the documentation 
17  * and/or other materials provided with the distribution. 
18  * 
19  * 3. Neither the name of the copyright holder nor the names of its contributors 
20  * may be used to endorse or promote products derived from this software without 
21  * specific prior written permission. 
22  * 
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND 
24  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
25  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
26  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
27  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
28  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
29  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
30  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
32  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
33  */ 
34 #ifndef ARM_TRC_FRAME_DEFORMATTER_H_INCLUDED
35 #define ARM_TRC_FRAME_DEFORMATTER_H_INCLUDED
36
37 #include "opencsd/ocsd_if_types.h"
38
39 #include "interfaces/trc_data_raw_in_i.h"
40 #include "comp_attach_pt_t.h"
41
42 class ITrcRawFrameIn;
43 class ITrcDataMixIDIn;
44 class ITrcSrcIndexCreator;
45 class ITraceErrorLog;
46 class TraceFmtDcdImpl;
47
48 /** @defgroup ocsd_deformatter  OpenCSD Library : Trace Frame Deformatter
49     @brief CoreSight Formatted Trace Frame  - deformatting functionality.
50 @{*/
51
52 class TraceFormatterFrameDecoder : public ITrcDataIn
53 {
54 public:
55     TraceFormatterFrameDecoder();
56     TraceFormatterFrameDecoder(int instNum);
57     virtual ~TraceFormatterFrameDecoder();
58
59     /* the data input interface from the reader */
60     virtual ocsd_datapath_resp_t TraceDataIn(  const ocsd_datapath_op_t op, 
61                                                 const ocsd_trc_index_t index, 
62                                                 const uint32_t dataBlockSize, 
63                                                 const uint8_t *pDataBlock, 
64                                                 uint32_t *numBytesProcessed);
65
66     /* attach a data processor to a stream ID output */
67     componentAttachPt<ITrcDataIn> *getIDStreamAttachPt(uint8_t ID);
68
69     /* attach a data processor to the raw frame output */
70     componentAttachPt<ITrcRawFrameIn> *getTrcRawFrameAttachPt();
71
72     componentAttachPt<ITrcSrcIndexCreator> *getTrcSrcIndexAttachPt();
73
74     componentAttachPt<ITraceErrorLog> *getErrLogAttachPt();
75
76     /* configuration - set operational mode for incoming stream (has FSYNCS etc) */
77     ocsd_err_t Configure(uint32_t cfg_flags);
78     const uint32_t getConfigFlags() const;
79
80     /* enable / disable ID streams - default as all enabled */
81     ocsd_err_t OutputFilterIDs(std::vector<uint8_t> &id_list, bool bEnable);
82     ocsd_err_t OutputFilterAllIDs(bool bEnable);
83
84     /* decode control */
85     ocsd_datapath_resp_t Reset();    /* reset the decode to the start state, drop partial data - propogate to attached components */
86     ocsd_datapath_resp_t Flush();    /* flush existing data if possible, retain state - propogate to attached components */
87
88 private:
89     TraceFmtDcdImpl *m_pDecoder;
90     int m_instNum;
91 };
92
93 /** @}*/
94
95 #endif // ARM_TRC_FRAME_DEFORMATTER_H_INCLUDED
96
97 /* End of File trc_frame_deformatter.h */