16#ifndef SIMICS_SYSTEMC_INJECTION_INJECT_GP_H
17#define SIMICS_SYSTEMC_INJECTION_INJECT_GP_H
33template <
typename TPAYLOAD>
39 attr_value_t *attr, TPAYLOAD *gp) {
40 if (key ==
"command") {
42 if (!parser->value(&v))
45 if (v > tlm::TLM_IGNORE_COMMAND) {
46 parser->reportError(
"command must be in range [%i - %i]",
47 tlm::TLM_READ_COMMAND,
48 tlm::TLM_IGNORE_COMMAND);
52 gp->set_command(
static_cast<tlm::tlm_command
>(v));
53 }
else if (key ==
"address") {
55 if (!parser->value(&v))
59 }
else if (key ==
"data_ptr") {
60 const uint8_t *v = NULL;
61 if (!parser->value(&v))
64 gp->set_data_ptr(
const_cast<unsigned char*
>(v));
65 gp->set_data_length(SIM_attr_data_size(*attr));
66 gp->set_streaming_width(SIM_attr_data_size(*attr));
67 }
else if (key ==
"response_status") {
69 if (!parser->value(&v))
72 if (v > tlm::TLM_OK_RESPONSE ||
73 v < tlm::TLM_BYTE_ENABLE_ERROR_RESPONSE) {
74 parser->reportError(
"response_status value must be in range "
76 tlm::TLM_BYTE_ENABLE_ERROR_RESPONSE,
77 tlm::TLM_OK_RESPONSE);
81 gp->set_response_status(
static_cast<tlm::tlm_response_status
>(
83 }
else if (key ==
"streaming_width") {
85 if (!parser->value(&v))
88 gp->set_streaming_width(v);
89 }
else if (key ==
"byte_enable_ptr") {
91 if (!parser->value(&v))
94 gp->set_byte_enable_ptr(
reinterpret_cast<unsigned char *
>(v));
95 }
else if (key ==
"byte_enable_length") {
97 if (!parser->value(&v))
100 gp->set_byte_enable_length(v);
101 }
else if (key ==
"gp_option") {
103 if (!parser->value(&v))
106 if (v > tlm::TLM_FULL_PAYLOAD_ACCEPTED) {
107 parser->reportError(
"gp_option must be in range [%i - %i]",
108 tlm::TLM_MIN_PAYLOAD,
109 tlm::TLM_FULL_PAYLOAD_ACCEPTED);
113 gp->set_gp_option(
static_cast<tlm::tlm_gp_option
>(v));
114 }
else if (key ==
"dmi_allowed") {
116 if (!parser->value(&v))
119 gp->set_dmi_allowed(v);
#define ATTR_DICT_PARSER_NAMESPACE(ns)
Definition: attr_dict_parser.h:34
Definition: attr_dict_parser.h:40
Definition: inject_base.h:45
Definition: inject_gp.h:34
virtual bool setValue(AttrDictParser *parser, const std::string &key, attr_value_t *attr, TPAYLOAD *gp)
Definition: inject_gp.h:38
Definition: pci_bus_interface.h:24