What is the correct way to handle transaction data pointer (set_data_ptr).
If I free it right after b_transport I get an error since transaction handling isn't completes.
Unlike tlm_extension it is not freed once transaction is completed.
void rx_thread() {
while(1)
{
uint8_t *buf = new uint8_t[ETH_MAC_PACKET_MAX_LEN];
tlm::tlm_generic_payload* pkt_trans = new tlm::tlm_generic_payload();
pkt_trans->set_command(tlm::TLM_WRITE_COMMAND);
pkt_trans->set_data_length(ETH_MAC_PACKET_MAX_LEN);
pkt_trans->set_data_ptr((unsigned char *)(buf));
phy2mac->b_transport(*pkt_trans, delay);
// Note:not calling "delete [] buf;" here since this data is a part of generic payload now and
// shouldn't be destroyed until transaction handling completes! Although b_transport() is
// a synchronous call indeed, queue is filled with pointers to original structures rather then to their clones.
}
}