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 virtual sc_core::sc_interface *
iface() {
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 virtual sc_core::sc_interface *
iface() {
61 return dynamic_cast<IF*
>(if_provider_->get_interface());
65 IF_PROVIDER *if_provider_;
90 tlm_iface_ = tlm_iface;
92 virtual sc_core::sc_interface *
iface() {
93 return tlm_iface_->
iface();
95 template <
typename TYPES>
97 tlm_utils::callback_binder_fw<TYPES> *cb) {
98 return dynamic_cast<tlm::tlm_base_socket_if *
>(
99 cb->get_other_side());
101 template <
typename TYPES>
103 tlm_utils::callback_binder_fw<TYPES> *cb) {
110 const auto *
iface = base->get_export_base().get_interface();
111#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
112 const auto *
iface = base->get_base_export().get_interface();
119 sc_core::sc_object *obj) {
120 const tlm::tlm_base_socket_if *base =
121 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
127 const auto *
iface = base->get_port_base().get_interface();
128#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
129 const auto *
iface = base->get_base_port().get_interface();
139 sc_core::sc_object *obj) {
140 const tlm::tlm_base_socket_if *base =
141 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
147 const auto *
iface = base->get_export_base().get_interface();
148#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
149 const auto *
iface = base->get_base_export().get_interface();
159 sc_core::sc_object *obj) {
160 const tlm::tlm_base_socket_if *base =
161 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
167 const auto *
iface = base->get_export_base().get_interface();
168#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
169 const auto *
iface = base->get_base_export().get_interface();
179 sc_core::sc_object *obj) {
180 const tlm::tlm_base_socket_if *base =
181 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
187 const auto *
iface = base->get_port_base().get_interface();
188#elif defined SYSTEMC_2_3_4 || defined SYSTEMC_3_0_0
189 const auto *
iface = base->get_base_port().get_interface();
198 template <
typename TYPES>
200 tlm::tlm_fw_transport_if<TYPES> *socket) {
208 template <
typename TYPES>
210 tlm::tlm_fw_transport_if<TYPES> *socket) {
213 template <
typename TYPES>
215 tlm_utils::callback_binder_bw<TYPES> *cb) {
223 template <
typename TYPES>
225 tlm_utils::callback_binder_fw<TYPES> *cb) {
233 template <
typename TYPES>
235 tlm_utils::callback_binder_fw<TYPES> *cb) {
242 template <
typename TYPES>
244 tlm::tlm_bw_transport_if<TYPES> *socket) {
Definition: proxy_interface.h:29
Definition: tlm_base_handler.h:68
virtual void init(ProxyInterface *proxy, instrumentation::ToolController *controller)
Definition: tlm_base_handler.h:76
static TlmHandlerInterface * targetFwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:158
virtual instrumentation::ToolController * controller()
Definition: tlm_base_handler.h:81
static TlmMultiHandlerInterface * initiatorExPortHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:102
static TlmHandlerInterface * mPInitiatorFwSocketHandler(tlm::tlm_fw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:199
virtual void disable()
Definition: tlm_base_handler.h:88
virtual void set_tlm_iface(TlmIfaceInterface *tlm_iface)
Definition: tlm_base_handler.h:89
static TlmHandlerInterface * targetBwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:178
virtual sc_core::sc_interface * iface()
Definition: tlm_base_handler.h:92
static tlm::tlm_base_socket_if * initiatorSocket(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:96
virtual ProxyInterface * proxy()
Definition: tlm_base_handler.h:84
TlmBaseHandler()
Definition: tlm_base_handler.h:70
static TlmHandlerInterface * mPInitiatorBwSocketHandler(tlm_utils::callback_binder_bw< TYPES > *cb)
Definition: tlm_base_handler.h:214
static TlmHandlerInterface * mPtargetBwSocketHandler(tlm::tlm_bw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:243
static TlmHandlerInterface * initiatorFwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:118
virtual void enable()
Definition: tlm_base_handler.h:87
static TlmHandlerInterface * mPTargetFwSocketHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:224
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:234
static TlmHandlerInterface * mPInitiatorFwMpSocketHandler(tlm::tlm_fw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:209
static TlmHandlerInterface * initiatorBwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:138
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
virtual sc_core::sc_interface * iface()
Definition: tlm_base_handler.h:60
Definition: tlm_base_handler.h:39
virtual sc_core::sc_interface * iface()
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