35#ifndef ARM_TRC_PKT_PROC_STM_H_INCLUDED
36#define ARM_TRC_PKT_PROC_STM_H_INCLUDED
58 const uint32_t dataBlockSize,
59 const uint8_t *pDataBlock,
60 uint32_t *numBytesProcessed);
80 void initProcessorState();
81 void initNextPacket();
86 void setProcUnsynced();
87 void throwBadSequenceError(
const char *pszMessage =
"");
88 void throwReservedHdrError(
const char *pszMessage =
"");
92 void stmPktReserved();
111 void stmPktReservedFn();
129 void stmPktReservedF0n();
130 void stmPktVersion();
132 void stmPktTrigger();
133 void stmPktTriggerTS();
137 void stmExtractVal8(uint8_t nibbles_to_val);
138 void stmExtractVal16(uint8_t nibbles_to_val);
139 void stmExtractVal32(uint8_t nibbles_to_val);
140 void stmExtractVal64(uint8_t nibbles_to_val);
142 uint64_t bin_to_gray(uint64_t bin_value);
143 uint64_t gray_to_bin(uint64_t gray_value);
147 void buildOpTables();
152 PPKTFN m_1N_ops[0x10];
153 PPKTFN m_2N_ops[0x10];
154 PPKTFN m_3N_ops[0x10];
160 const bool dataToProcess()
const;
162 void savePacketByte(
const uint8_t val);
173 uint8_t m_num_nibbles;
175 uint8_t m_nibble_2nd;
176 bool m_nibble_2nd_valid;
177 uint8_t m_num_data_nibbles;
179 const uint8_t *m_p_data_in;
180 uint32_t m_data_in_size;
181 uint32_t m_data_in_used;
184 std::vector<uint8_t> m_packet_data;
193 uint8_t m_req_ts_nibbles;
194 uint8_t m_curr_ts_nibbles;
195 uint64_t m_ts_update_value;
200 uint8_t m_num_F_nibbles;
205 void checkSyncNibble();
206 void clearSyncCount();
211 monAttachNotify() { m_bInUse =
false; };
212 virtual ~monAttachNotify() {};
213 virtual void attachNotify(
const int num_attached) { m_bInUse = (num_attached > 0); };
215 const bool usingMonitor()
const {
return m_bInUse; };
222inline const bool TrcPktProcStm::dataToProcess()
const
232inline void TrcPktProcStm::checkSyncNibble()
239 if((m_nibble == 0) && (m_num_F_nibbles >= 21))
242 m_num_F_nibbles = 21;
255 m_sync_index = m_packet_index + ((m_num_nibbles - 1) / 2);
259inline void TrcPktProcStm::clearSyncCount()
262 m_sync_start =
false;
266inline void TrcPktProcStm::sendPacket()
271inline void TrcPktProcStm::setProcUnsynced()
274 m_bStreamSync =
false;
278inline void TrcPktProcStm::savePacketByte(
const uint8_t val)
281 if(mon_in_use.usingMonitor())
282 m_packet_data.push_back(val);
STM trace packet with packet printing functionality.
enum TrcPktProcStm::_process_state process_state
process_state m_proc_state
virtual ocsd_err_t onProtocolConfig()
Called when the configuration object is passed to the decoder.
virtual ocsd_datapath_resp_t onReset()
Implementation function for the OCSD_OP_RESET operation.
virtual ocsd_datapath_resp_t processData(const ocsd_trc_index_t index, const uint32_t dataBlockSize, const uint8_t *pDataBlock, uint32_t *numBytesProcessed)
Implementation function for the OCSD_OP_DATA operation.
virtual ocsd_datapath_resp_t onEOT()
Implementation function for the OCSD_OP_EOT operation.
TrcPktProcStm(int instIDNum)
virtual const bool isBadPacket() const
check if the current packet is an error / bad packet
virtual ocsd_datapath_resp_t onFlush()
Implementation function for the OCSD_OP_FLUSH operation.
uint32_t ocsd_trc_index_t
enum _ocsd_datapath_resp_t ocsd_datapath_resp_t
enum _ocsd_err_t ocsd_err_t
TrcPktProcBase(const char *component_name)
OpenCSD : STM packet class.
OpenCSD : Trace packet processor base class.