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) {
108 sc_core::sc_export_base &export_base = base->get_export_base();
110 export_base.get_interface());
113 sc_core::sc_object *obj) {
114 tlm::tlm_base_socket_if *base =
115 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
120 base->get_port_base().get_interface());
127 sc_core::sc_object *obj) {
128 tlm::tlm_base_socket_if *base =
129 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
134 base->get_export_base().get_interface());
141 sc_core::sc_object *obj) {
142 tlm::tlm_base_socket_if *base =
143 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
148 base->get_export_base().get_interface());
155 sc_core::sc_object *obj) {
156 tlm::tlm_base_socket_if *base =
157 dynamic_cast<tlm::tlm_base_socket_if *
>(obj);
162 base->get_port_base().get_interface());
168 template <
typename TYPES>
170 tlm::tlm_fw_transport_if<TYPES> *socket) {
178 template <
typename TYPES>
180 tlm::tlm_fw_transport_if<TYPES> *socket) {
183 template <
typename TYPES>
185 tlm_utils::callback_binder_bw<TYPES> *cb) {
193 template <
typename TYPES>
195 tlm_utils::callback_binder_fw<TYPES> *cb) {
203 template <
typename TYPES>
205 tlm_utils::callback_binder_fw<TYPES> *cb) {
212 template <
typename TYPES>
214 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:140
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:169
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:154
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:184
static TlmHandlerInterface * mPtargetBwSocketHandler(tlm::tlm_bw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:213
static TlmHandlerInterface * initiatorFwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:112
virtual void enable()
Definition: tlm_base_handler.h:87
static TlmHandlerInterface * mPTargetFwSocketHandler(tlm_utils::callback_binder_fw< TYPES > *cb)
Definition: tlm_base_handler.h:194
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:204
static TlmHandlerInterface * mPInitiatorFwMpSocketHandler(tlm::tlm_fw_transport_if< TYPES > *socket)
Definition: tlm_base_handler.h:179
static TlmHandlerInterface * initiatorBwSocketHandler(sc_core::sc_object *obj)
Definition: tlm_base_handler.h:126
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
Definition: pci_bus_interface.h:24