16#ifndef SIMICS_SYSTEMC_AWARENESS_TLM_BASE_HANDLER_H
17#define SIMICS_SYSTEMC_AWARENESS_TLM_BASE_HANDLER_H
21#include <tlm_utils/multi_socket_bases.h>
36 virtual sc_core::sc_interface *
iface() = 0;
44 sc_core::sc_interface *
iface()
override {
49 sc_core::sc_interface *if_;
52template <
typename IF_PROVIDER = sc_core::sc_port_base,
53 typename TYPES = tlm::tlm_base_protocol_types,
54 typename IF = tlm::tlm_fw_transport_if<TYPES> >
58 if_provider_ = if_provider;
60 sc_core::sc_interface *
iface()
override {
61 return dynamic_cast<IF*
>(if_provider_->get_interface());
65 IF_PROVIDER *if_provider_;
93 tlm_iface_ = tlm_iface;
95 virtual sc_core::sc_interface *
iface() {
96 return tlm_iface_->
iface();
98 template <
typename TYPES>
100 tlm_utils::callback_binder_fw<TYPES> *cb) {
101 return dynamic_cast<tlm::tlm_base_socket_if *
>(
102 cb->get_other_side());
104 template <
typename TYPES>
106 tlm_utils::callback_binder_fw<TYPES> *cb) {
113 const auto *
iface = base->get_export_base().get_interface();
114#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
115 const auto *
iface = base->get_base_export().get_interface();
122 sc_core::sc_object *obj) {
123 const tlm::tlm_base_socket_if *base =
124 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
130 const auto *
iface = base->get_port_base().get_interface();
131#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
132 const auto *
iface = base->get_base_port().get_interface();
142 sc_core::sc_object *obj) {
143 const tlm::tlm_base_socket_if *base =
144 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
150 const auto *
iface = base->get_export_base().get_interface();
151#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
152 const auto *
iface = base->get_base_export().get_interface();
162 sc_core::sc_object *obj) {
163 const tlm::tlm_base_socket_if *base =
164 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
170 const auto *
iface = base->get_export_base().get_interface();
171#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
172 const auto *
iface = base->get_base_export().get_interface();
182 sc_core::sc_object *obj) {
183 const tlm::tlm_base_socket_if *base =
184 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
190 const auto *
iface = base->get_port_base().get_interface();
191#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
192 const auto *
iface = base->get_base_port().get_interface();
201 template <
typename TYPES>
203 tlm::tlm_fw_transport_if<TYPES> *socket) {
211 template <
typename TYPES>
213 tlm::tlm_fw_transport_if<TYPES> *socket) {
216 template <
typename TYPES>
218 tlm_utils::callback_binder_bw<TYPES> *cb) {
226 template <
typename TYPES>
228 tlm_utils::callback_binder_fw<TYPES> *cb) {
236 template <
typename TYPES>
238 tlm_utils::callback_binder_fw<TYPES> *cb) {
245 template <
typename TYPES>
247 tlm::tlm_bw_transport_if<TYPES> *socket) {
Definition: proxy_interface.h:29
Definition: tlm_base_handler.h:68
void enable() override
Definition: tlm_base_handler.h:82
static TlmHandlerInterface * targetFwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:161
virtual instrumentation::ToolController * controller()
Definition: tlm_base_handler.h:85
static TlmMultiHandlerInterface * initiatorExPortHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:105
static TlmHandlerInterface * mPInitiatorFwSocketHandler(tlm::tlm_fw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:202
virtual void set_tlm_iface(TlmIfaceInterface *tlm_iface)
Definition: tlm_base_handler.h:92
static TlmHandlerInterface * targetBwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:181
virtual sc_core::sc_interface * iface()
Definition: tlm_base_handler.h:95
void disable() override
Definition: tlm_base_handler.h:83
static tlm::tlm_base_socket_if * initiatorSocket(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:99
virtual ProxyInterface * proxy()
Definition: tlm_base_handler.h:88
TlmBaseHandler()
Definition: tlm_base_handler.h:70
static TlmHandlerInterface * mPInitiatorBwSocketHandler(tlm_utils::callback_binder_bw< TYPES > *cb)
Definition: tlm_base_handler.h:217
static TlmHandlerInterface * mPtargetBwSocketHandler(tlm::tlm_bw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:246
static TlmHandlerInterface * initiatorFwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:121
void init(ProxyInterface *proxy, instrumentation::ToolController *controller) override
Definition: tlm_base_handler.h:77
static TlmHandlerInterface * mPTargetFwSocketHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:227
TlmBaseHandler(const TlmBaseHandler &)=delete
~TlmBaseHandler()
Definition: tlm_base_handler.h:71
TlmBaseHandler & operator=(const TlmBaseHandler &)=delete
static TlmHandlerInterface * mPTargetBwSocketHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:237
static TlmHandlerInterface * mPInitiatorFwMpSocketHandler(tlm::tlm_fw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:212
static TlmHandlerInterface * initiatorBwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:141
Definition: tlm_handler_interface.h:26
Definition: tlm_base_handler.h:33
virtual sc_core::sc_interface * iface()=0
virtual ~TlmIfaceInterface()
Definition: tlm_base_handler.h:35
Definition: tlm_base_handler.h:55
TlmIfaceProvider(IF_PROVIDER *if_provider)
Definition: tlm_base_handler.h:57
sc_core::sc_interface * iface() override
Definition: tlm_base_handler.h:60
Definition: tlm_base_handler.h:39
sc_core::sc_interface * iface() override
Definition: tlm_base_handler.h:44
TlmIface(sc_core::sc_interface *iface)
Definition: tlm_base_handler.h:41
Definition: tlm_multi_handler_interface.h:25
virtual TlmHandlerInterface * secondHandler()=0
virtual TlmHandlerInterface * firstHandler()=0
static TlmMultiHandlerInterface * getHandler(sc_core::sc_interface *binder)
Definition: tlm_multi_handler_registry.h:41