27 #ifndef TLM_CORE_TLM2_TLM_GP_H_INCLUDED_ 28 #define TLM_CORE_TLM2_TLM_GP_H_INCLUDED_ 40 class tlm_generic_payload;
60 virtual void free() {
delete this; }
64 static unsigned int register_extension(
const std::type_info&);
80 const static unsigned int ID;
112 #define TLM_BYTE_DISABLED 0x0 113 #define TLM_BYTE_ENABLED 0xff 136 if (--m_ref_count==0)
143 bool has_mm()
const {
return m_mm != 0; }
162 bool use_byte_enable_on_read =
true);
168 void free_all_extensions();
204 {m_response_status = response_status;}
205 std::string get_response_string()
const;
265 unsigned char* m_data;
266 unsigned int m_length;
269 unsigned char* m_byte_enable;
270 unsigned int m_byte_enable_length;
271 unsigned int m_streaming_width;
315 return static_cast<T*
>(set_extension(T::ID, ext));
326 return static_cast<T*
>(set_auto_extension(T::ID, ext));
336 ext = get_extension<T>();
340 return static_cast<T*
>(get_extension(T::ID));
351 clear_extension<T>();
360 clear_extension(T::ID);
368 release_extension<T>();
376 release_extension(T::ID);
381 void clear_extension(
unsigned int index);
383 void release_extension(
unsigned int index);
391 void resize_extensions();
394 tlm_array<tlm_extension_base*> m_extensions;
396 unsigned int m_ref_count;
unsigned int get_byte_enable_length() const
void set_address(const sc_dt::uint64 address)
unsigned int get_data_length() const
void get_extension(T *&ext) const
void clear_extension(const T *ext)
unsigned char * get_byte_enable_ptr() const
void set_byte_enable_length(const unsigned int byte_enable_length)
SC_API unsigned int max_num_extensions()
void set_data_ptr(unsigned char *data)
void set_dmi_allowed(bool dmi_allowed)
int get_ref_count() const
void set_command(const tlm_command command)
bool is_response_ok() const
tlm_gp_option get_gp_option() const
bool is_response_error() const
void set_streaming_width(const unsigned int streaming_width)
virtual ~tlm_extension_base()
tlm_command get_command() const
void set_gp_option(const tlm_gp_option gp_opt)
void release_extension(T *ext)
T * set_auto_extension(T *ext)
sc_dt::uint64 get_address() const
T * get_extension() const
#define SC_API_TEMPLATE_DECL_
virtual ~tlm_mm_interface()
void set_data_length(const unsigned int length)
static unsigned int register_extension(const std::type_info &)
void set_mm(tlm_mm_interface *mm)
void set_response_status(const tlm_response_status response_status)
tlm_response_status get_response_status() const
virtual void free(tlm_generic_payload *)=0
unsigned int get_streaming_width() const
bool is_dmi_allowed() const
static const unsigned int ID
void set_byte_enable_ptr(unsigned char *byte_enable)
unsigned char * get_data_ptr() const
T * set_extension(T *ext)