quic/qbox
Loading...
Searching...
No Matches
loop_back_backend.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All Rights Reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
12#ifndef _GS_LOOP_BACK_BACKEND_H_
13#define _GS_LOOP_BACK_BACKEND_H_
14
15#include <systemc>
16#include <tlm.h>
17#include <tlm_utils/simple_target_socket.h>
18#include <uutils.h>
19#include <ports/biflow-socket.h>
20#include <module_factory_registery.h>
21
22#include <scp/report.h>
23class loop_back_backend : public sc_core::sc_module
24{
25 SCP_LOGGER();
26
27public:
29
34 loop_back_backend(sc_core::sc_module_name name): sc_core::sc_module(name), socket("biflow_socket")
35 {
36 SCP_TRACE(()) << "constructor";
37 socket.register_b_transport(this, &loop_back_backend::b_transport);
38 }
39
40 void end_of_elaboration() { socket.can_receive_any(); }
41
42 void b_transport(tlm::tlm_generic_payload& txn, sc_core::sc_time& t)
43 {
44 uint8_t* data = txn.get_data_ptr();
45 sc_assert(data != NULL);
46 for (unsigned int i = 0; i < txn.get_streaming_width(); i++) {
47 socket.enqueue(static_cast<unsigned char>(data[i]));
48 SCP_DEBUG(())("loop_back_backend: sending {}", static_cast<char>(data[i]));
49 }
50 }
51
53};
54extern "C" void module_register();
55#endif
Definition target.h:160
Definition biflow-socket.h:73
void can_receive_any()
can_receive_any Allow unlimited items to arrive.
Definition biflow-socket.h:264
void enqueue(T data)
enqueue Enqueue data to be sent (unlimited queue size) NOTE: Thread safe.
Definition biflow-socket.h:277
void register_b_transport(MODULE *mod, void(MODULE::*cb)(tlm::tlm_generic_payload &, sc_core::sc_time &))
Register b_transport to be called whenever data is received from the socket.
Definition biflow-socket.h:227
Definition loop_back_backend.h:24