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