35 #ifndef ARM_TRC_PKT_PROC_STM_H_INCLUDED 36 #define ARM_TRC_PKT_PROC_STM_H_INCLUDED 57 virtual ocsd_datapath_resp_t
processData(
const ocsd_trc_index_t index,
58 const uint32_t dataBlockSize,
59 const uint8_t *pDataBlock,
60 uint32_t *numBytesProcessed);
61 virtual ocsd_datapath_resp_t
onEOT();
62 virtual ocsd_datapath_resp_t
onReset();
63 virtual ocsd_datapath_resp_t
onFlush();
80 void initProcessorState();
81 void initNextPacket();
82 void waitForSync(
const ocsd_trc_index_t blk_st_index);
84 ocsd_datapath_resp_t outputPacket();
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;
182 ocsd_trc_index_t m_packet_index;
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;
204 ocsd_trc_index_t m_sync_index;
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))
255 m_sync_index = m_packet_index + ((m_num_nibbles - 1) / 2);
259 inline void TrcPktProcStm::clearSyncCount()
262 m_sync_start =
false;
266 inline void TrcPktProcStm::sendPacket()
271 inline void TrcPktProcStm::setProcUnsynced()
274 m_bStreamSync =
false;
278 inline void TrcPktProcStm::savePacketByte(
const uint8_t val)
281 if(mon_in_use.usingMonitor() && !m_bWaitSyncSaveSuppressed)
282 m_packet_data.push_back(val);
287 #endif // ARM_TRC_PKT_PROC_STM_H_INCLUDED
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.
process_state m_proc_state
virtual ocsd_err_t onProtocolConfig()
Called when the configuration object is passed to the decoder.
Packet Processor base class. Provides common infrastructure and interconnections for packet processor...
STM trace packet with packet printing functionality.
OpenCSD : STM packet class.
enum TrcPktProcStm::_process_state process_state
virtual ocsd_datapath_resp_t onReset()
Implementation function for the OCSD_OP_RESET operation.
virtual ocsd_datapath_resp_t onEOT()
Implementation function for the OCSD_OP_EOT 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.
OpenCSD : Trace packet processor base class.