36#ifndef ARM_TRC_PKT_PROC_BASE_H_INCLUDED
37#define ARM_TRC_PKT_PROC_BASE_H_INCLUDED
69 TrcPktProcI(
const char *component_name,
int instIDNum);
76 const uint32_t dataBlockSize,
77 const uint8_t *pDataBlock,
78 uint32_t *numBytesProcessed) = 0;
88 const uint32_t dataBlockSize,
89 const uint8_t *pDataBlock,
90 uint32_t *numBytesProcessed) = 0;
125template <
class P,
class Pt,
class Pc>
140 const uint32_t dataBlockSize,
141 const uint8_t *pDataBlock,
142 uint32_t *numBytesProcessed);
173 const uint8_t *p_data);
245 const uint32_t dataBlockSize,
246 const uint8_t *pDataBlock,
247 uint32_t *numBytesProcessed)
254 if((dataBlockSize == 0) || (pDataBlock == 0) || (numBytesProcessed == 0))
256 if(numBytesProcessed)
257 *numBytesProcessed = 0;
262 resp =
processData(index,dataBlockSize,pDataBlock,numBytesProcessed);
291 if(m_pkt_out_i.hasAttachedAndEnabled())
292 resp = m_pkt_out_i.first()->PacketDataIn(
OCSD_OP_RESET,index,0);
299 if(m_pkt_raw_mon_i.hasAttachedAndEnabled())
300 m_pkt_raw_mon_i.first()->RawPacketDataMon(
OCSD_OP_RESET,index,0,0,0);
311 if(m_pkt_out_i.hasAttachedAndEnabled())
316 resplocal = onFlush();
318 return (resplocal > resp) ? resplocal : resp;
327 resp = m_pkt_out_i.first()->PacketDataIn(
OCSD_OP_EOT,0,0);
330 if(m_pkt_raw_mon_i.hasAttachedAndEnabled())
331 m_pkt_raw_mon_i.first()->RawPacketDataMon(
OCSD_OP_EOT,0,0,0,0);
345 if(m_pkt_out_i.hasAttachedAndEnabled())
346 resp = m_pkt_out_i.first()->PacketDataIn(
OCSD_OP_DATA,index,pkt);
354 const uint8_t *p_data)
365 if(m_pkt_raw_mon_i.hasAttachedAndEnabled())
366 m_pkt_raw_mon_i.first()->RawPacketDataMon(
OCSD_OP_DATA,index_sop,pkt,size,p_data);
371 return m_pkt_raw_mon_i.hasAttachedAndEnabled();
377 if(m_pkt_indexer_i.hasAttachedAndEnabled())
378 m_pkt_indexer_i.first()->TracePktIndex(index_sop,packet_type);
384 if(pktdata.size() > 0)
402 m_config =
new (std::nothrow) Pc(*config);
425 (m_pkt_out_i.hasAttached() || m_pkt_raw_mon_i.hasAttached())
435 *pp_stats = &m_stats;
443 m_stats.channel_total = 0;
444 m_stats.channel_unsynced = 0;
445 m_stats.bad_header_errs = 0;
446 m_stats.bad_sequence_errs = 0;
447 m_stats.demux.frame_bytes = 0;
448 m_stats.demux.no_id_bytes = 0;
449 m_stats.demux.valid_id_bytes = 0;
const uint32_t getComponentOpMode() const
TraceComponent(const std::string &name)
void LogError(const ocsdError &Error)
void statsAddBadSeqCount(const uint32_t count)
void statsAddUnsyncCount(const uint64_t count)
virtual const Pc * getProtocolConfig() const
componentAttachPt< IPktDataIn< P > > * getPacketOutAttachPt()
Attachement point for the protocol packet output.
void statsAddTotalCount(const uint64_t count)
componentAttachPt< ITrcPktIndexer< Pt > > * getTraceIDIndexerAttachPt()
Attachment point for a packet indexer.
componentAttachPt< IPktRawDataMon< P > > * getRawPacketMonAttachPt()
Attachment point for the protocol packet monitor.
void statsAddBadHdrCount(const uint32_t count)
virtual ocsd_datapath_resp_t TraceDataIn(const ocsd_datapath_op_t op, const ocsd_trc_index_t index, const uint32_t dataBlockSize, const uint8_t *pDataBlock, uint32_t *numBytesProcessed)=0
virtual ocsd_datapath_resp_t processData(const ocsd_trc_index_t index, const uint32_t dataBlockSize, const uint8_t *pDataBlock, uint32_t *numBytesProcessed)=0
Implementation function for the OCSD_OP_DATA operation.
virtual ocsd_datapath_resp_t onFlush()=0
Implementation function for the OCSD_OP_FLUSH operation.
virtual ocsd_err_t getStatsBlock(ocsd_decode_stats_t **pp_stats)=0
virtual const bool isBadPacket() const =0
check if the current packet is an error / bad packet
virtual ocsd_err_t onProtocolConfig()=0
Called when the configuration object is passed to the decoder.
virtual void resetStats()=0
virtual ocsd_datapath_resp_t onReset()=0
Implementation function for the OCSD_OP_RESET operation.
virtual ocsd_datapath_resp_t onEOT()=0
Implementation function for the OCSD_OP_EOT operation.
Single component interface pointer attachment point.
OpenCSD : Component attachment point interface class.
#define OCSD_DATA_RESP_IS_FATAL(x)
#define OCSD_STATS_REVISION
uint32_t ocsd_trc_index_t
enum _ocsd_datapath_resp_t ocsd_datapath_resp_t
struct _ocsd_decode_stats ocsd_decode_stats_t
#define OCSD_DATA_RESP_IS_CONT(x)
enum _ocsd_datapath_op_t ocsd_datapath_op_t
enum _ocsd_err_t ocsd_err_t
#define OCSD_OPFLG_PKTPROC_NOMON_BAD_PKTS
#define OCSD_OPFLG_PKTPROC_NOFWD_BAD_PKTS
@ OCSD_ERR_INVALID_PARAM_VAL
@ OCSD_RESP_FATAL_INVALID_PARAM
@ OCSD_RESP_FATAL_INVALID_OP
ocsd_datapath_resp_t outputOnAllInterfaces(const ocsd_trc_index_t index_sop, const P *pkt, const Pt *pkt_type, std::vector< uint8_t > &pktdata)
void outputRawPacketToMonitor(const ocsd_trc_index_t index_sop, const P *pkt, const uint32_t size, const uint8_t *p_data)
virtual ocsd_err_t getStatsBlock(ocsd_decode_stats_t **pp_stats)
TrcPktProcI(const char *component_name)
void indexPacket(const ocsd_trc_index_t index_sop, const Pt *packet_type)
virtual ocsd_err_t setProtocolConfig(const Pc *config)
< Set the protocol specific configuration for the decoder.
const bool hasRawMon() const
virtual ~TrcPktProcBase()
virtual ocsd_datapath_resp_t TraceDataIn(const ocsd_datapath_op_t op, const ocsd_trc_index_t index, const uint32_t dataBlockSize, const uint8_t *pDataBlock, uint32_t *numBytesProcessed)
TrcPktProcBase(const char *component_name)
ocsd_datapath_resp_t outputDecodedPacket(const ocsd_trc_index_t index_sop, const P *pkt)
virtual void resetStats()
OpenCSD : Base trace decode component.