14#ifndef SIMICS_SYSTEMC_AWARENESS_TLM_BASE_HANDLER_H
15#define SIMICS_SYSTEMC_AWARENESS_TLM_BASE_HANDLER_H
19#include <tlm_utils/multi_socket_bases.h>
34 virtual sc_core::sc_interface *
iface() = 0;
42 sc_core::sc_interface *
iface()
override {
47 sc_core::sc_interface *if_;
50template <
typename IF_PROVIDER = sc_core::sc_port_base,
51 typename TYPES = tlm::tlm_base_protocol_types,
52 typename IF = tlm::tlm_fw_transport_if<TYPES> >
56 if_provider_ = if_provider;
58 sc_core::sc_interface *
iface()
override {
59 return dynamic_cast<IF*
>(if_provider_->get_interface());
63 IF_PROVIDER *if_provider_;
91 tlm_iface_ = tlm_iface;
93 virtual sc_core::sc_interface *
iface() {
94 return tlm_iface_->
iface();
96 template <
typename TYPES>
98 tlm_utils::callback_binder_fw<TYPES> *cb) {
99 return dynamic_cast<tlm::tlm_base_socket_if *
>(
100 cb->get_other_side());
102 template <
typename TYPES>
104 tlm_utils::callback_binder_fw<TYPES> *cb) {
111 const auto *
iface = base->get_export_base().get_interface();
112#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
113 const auto *
iface = base->get_base_export().get_interface();
120 sc_core::sc_object *obj) {
121 const tlm::tlm_base_socket_if *base =
122 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
128 const auto *
iface = base->get_port_base().get_interface();
129#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
130 const auto *
iface = base->get_base_port().get_interface();
140 sc_core::sc_object *obj) {
141 const tlm::tlm_base_socket_if *base =
142 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
148 const auto *
iface = base->get_export_base().get_interface();
149#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
150 const auto *
iface = base->get_base_export().get_interface();
160 sc_core::sc_object *obj) {
161 const tlm::tlm_base_socket_if *base =
162 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
168 const auto *
iface = base->get_export_base().get_interface();
169#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
170 const auto *
iface = base->get_base_export().get_interface();
180 sc_core::sc_object *obj) {
181 const tlm::tlm_base_socket_if *base =
182 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
188 const auto *
iface = base->get_port_base().get_interface();
189#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
190 const auto *
iface = base->get_base_port().get_interface();
199 template <
typename TYPES>
201 tlm::tlm_fw_transport_if<TYPES> *socket) {
209 template <
typename TYPES>
211 tlm::tlm_fw_transport_if<TYPES> *socket) {
214 template <
typename TYPES>
216 tlm_utils::callback_binder_bw<TYPES> *cb) {
224 template <
typename TYPES>
226 tlm_utils::callback_binder_fw<TYPES> *cb) {
234 template <
typename TYPES>
236 tlm_utils::callback_binder_fw<TYPES> *cb) {
243 template <
typename TYPES>
245 tlm::tlm_bw_transport_if<TYPES> *socket) {
Definition: proxy_interface.h:27
Definition: tlm_base_handler.h:66
void enable() override
Definition: tlm_base_handler.h:80
static TlmHandlerInterface * targetFwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:159
virtual instrumentation::ToolController * controller()
Definition: tlm_base_handler.h:83
static TlmMultiHandlerInterface * initiatorExPortHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:103
static TlmHandlerInterface * mPInitiatorFwSocketHandler(tlm::tlm_fw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:200
virtual void set_tlm_iface(TlmIfaceInterface *tlm_iface)
Definition: tlm_base_handler.h:90
static TlmHandlerInterface * targetBwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:179
virtual sc_core::sc_interface * iface()
Definition: tlm_base_handler.h:93
void disable() override
Definition: tlm_base_handler.h:81
static tlm::tlm_base_socket_if * initiatorSocket(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:97
virtual ProxyInterface * proxy()
Definition: tlm_base_handler.h:86
TlmBaseHandler()
Definition: tlm_base_handler.h:68
static TlmHandlerInterface * mPInitiatorBwSocketHandler(tlm_utils::callback_binder_bw< TYPES > *cb)
Definition: tlm_base_handler.h:215
static TlmHandlerInterface * mPtargetBwSocketHandler(tlm::tlm_bw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:244
static TlmHandlerInterface * initiatorFwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:119
void init(ProxyInterface *proxy, instrumentation::ToolController *controller) override
Definition: tlm_base_handler.h:75
static TlmHandlerInterface * mPTargetFwSocketHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:225
TlmBaseHandler(const TlmBaseHandler &)=delete
~TlmBaseHandler()
Definition: tlm_base_handler.h:69
TlmBaseHandler & operator=(const TlmBaseHandler &)=delete
static TlmHandlerInterface * mPTargetBwSocketHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:235
static TlmHandlerInterface * mPInitiatorFwMpSocketHandler(tlm::tlm_fw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:210
static TlmHandlerInterface * initiatorBwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:139
Definition: tlm_handler_interface.h:24
Definition: tlm_base_handler.h:31
virtual sc_core::sc_interface * iface()=0
virtual ~TlmIfaceInterface()
Definition: tlm_base_handler.h:33
Definition: tlm_base_handler.h:53
TlmIfaceProvider(IF_PROVIDER *if_provider)
Definition: tlm_base_handler.h:55
sc_core::sc_interface * iface() override
Definition: tlm_base_handler.h:58
Definition: tlm_base_handler.h:37
sc_core::sc_interface * iface() override
Definition: tlm_base_handler.h:42
TlmIface(sc_core::sc_interface *iface)
Definition: tlm_base_handler.h:39
Definition: tlm_multi_handler_interface.h:23
virtual TlmHandlerInterface * secondHandler()=0
virtual TlmHandlerInterface * firstHandler()=0
static TlmMultiHandlerInterface * getHandler(sc_core::sc_interface *binder)
Definition: tlm_multi_handler_registry.h:39