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;
185 bool m_bWaitSyncSaveSuppressed;
194 uint8_t m_req_ts_nibbles;
195 uint8_t m_curr_ts_nibbles;
196 uint64_t m_ts_update_value;
201 uint8_t m_num_F_nibbles;
206 void checkSyncNibble();
207 void clearSyncCount();
212 monAttachNotify() { m_bInUse =
false; };
213 virtual ~monAttachNotify() {};
214 virtual void attachNotify(
const int num_attached) { m_bInUse = (num_attached > 0); };
216 const bool usingMonitor()
const {
return m_bInUse; };
223 inline const bool TrcPktProcStm::dataToProcess()
const
233 inline void TrcPktProcStm::checkSyncNibble()
240 if((m_nibble == 0) && (m_num_F_nibbles >= 21))
243 m_num_F_nibbles = 21;
256 m_sync_index = m_packet_index + ((m_num_nibbles - 1) / 2);
260 inline void TrcPktProcStm::clearSyncCount()
263 m_sync_start =
false;
267 inline void TrcPktProcStm::sendPacket()
272 inline void TrcPktProcStm::setProcUnsynced()
275 m_bStreamSync =
false;
279 inline void TrcPktProcStm::savePacketByte(
const uint8_t val)
282 if(mon_in_use.usingMonitor() && !m_bWaitSyncSaveSuppressed)
283 m_packet_data.push_back(val);
STM trace packet with packet printing functionality.
Packet Processor base class. Provides common infrastructure and interconnections for packet processor...
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
OpenCSD : STM packet class.
OpenCSD : Trace packet processor base class.