{
active_message_set_ = id;
}
-
-
-std::shared_ptr<diagnostic_message_t> application_t::get_diagnostic_message(const std::string& message_name) const
-{
- struct utils::signals_found found;
- found = utils::signals_manager_t::instance().find_signals(build_DynamicField(message_name));
- if(! found.diagnostic_messages.empty())
- return found.diagnostic_messages.front();
- return nullptr;
-}
-
-DiagnosticRequest* application_t::get_request_from_diagnostic_message(const std::string& message_name) const
-{
- std::shared_ptr<diagnostic_message_t> diag_msg = get_diagnostic_message(message_name);
- if( diag_msg != nullptr && diag_msg->get_supported())
- return new DiagnosticRequest(diag_msg->build_diagnostic_request());
- return nullptr;
-}
void set_active_message_set(uint8_t id);
- std::shared_ptr<diagnostic_message_t> get_diagnostic_message(const std::string& message_name) const;
- DiagnosticRequest* get_request_from_diagnostic_message(const std::string& message_name) const;
/*
/// TODO: implement this function as method into can_bus class
/// @brief Pre initialize actions made before CAN bus initialization
socket_{}
{}
-active_diagnostic_request_t::active_diagnostic_request_t(const std::string& bus, DiagnosticRequest* request,
+active_diagnostic_request_t::active_diagnostic_request_t(const std::string& bus, uint32_t id,
const std::string& name,
bool wait_for_multiple_responses,
const DiagnosticResponseDecoder decoder,
const DiagnosticResponseCallback callback,
float frequencyHz)
: bus_{bus},
- id_{request->arbitration_id},
+ id_{id},
handle_{nullptr},
name_{name},
decoder_{decoder},
active_diagnostic_request_t();
active_diagnostic_request_t(active_diagnostic_request_t&&) = default;
- active_diagnostic_request_t(const std::string& bus, DiagnosticRequest* request,
+ active_diagnostic_request_t(const std::string& bus, uint32_t id,
const std::string& name, bool wait_for_multiple_responses,
const DiagnosticResponseDecoder decoder,
const DiagnosticResponseCallback callback, float frequencyHz);
///
/// @param[in] request - Search key, method will go through recurring list to see if it find that request
/// holded by the DiagnosticHandle member.
-active_diagnostic_request_t* diagnostic_manager_t::find_recurring_request(const DiagnosticRequest* request)
+active_diagnostic_request_t* diagnostic_manager_t::find_recurring_request(DiagnosticRequest& request)
{
for (auto& entry : recurring_requests_)
{
if(entry != nullptr)
{
- if(diagnostic_request_equals(&entry->get_handle()->request, request))
+ if(diagnostic_request_equals(&entry->get_handle()->request, &request))
{return entry;}
}
}
{
// TODO: implement Acceptance Filter
// if(updateRequiredAcceptanceFilters(bus, request)) {
- active_diagnostic_request_t* entry = new active_diagnostic_request_t(bus_, request, name,
+ active_diagnostic_request_t* entry = new active_diagnostic_request_t(bus_, request->arbitration_id, name,
wait_for_multiple_responses, decoder, callback, 0);
entry->set_handle(shims_, request);
cleanup_active_requests(false);
- if(find_recurring_request(request) == nullptr)
+ if(find_recurring_request(*request) == nullptr)
{
if(recurring_requests_.size() <= MAX_SIMULTANEOUS_DIAG_REQUESTS)
{
- entry = new active_diagnostic_request_t(bus_, request, name,
+ entry = new active_diagnostic_request_t(bus_, request->arbitration_id, name,
wait_for_multiple_responses, decoder, callback, frequencyHz);
recurring_requests_.push_back(entry);
const std::string get_bus_device_name() const;
active_diagnostic_request_t* get_last_recurring_requests() const;
DiagnosticShims& get_shims();
+ bool is_active_requests_running();
void find_and_erase(active_diagnostic_request_t* entry, std::vector<active_diagnostic_request_t*>& requests_list);
void cancel_request(active_diagnostic_request_t* entry);
void cleanup_request(active_diagnostic_request_t* entry, bool force);
void cleanup_active_requests(bool force);
- active_diagnostic_request_t* find_recurring_request(const DiagnosticRequest* request);
+ active_diagnostic_request_t* find_recurring_request(DiagnosticRequest& request);
// Subscription parts
active_diagnostic_request_t* add_request(DiagnosticRequest* request, const std::string& name,