#include <unistd.h>
#include <linux/can/raw.h>
#include <linux/can/bcm.h>
-
-#include "can-bus-dev.hpp"
#include <cmath>
#include "can-bus.hpp"
#include "canutil/write.h"
#define U64_DATA(p) (*(unsigned long long*)(p)->data)
+
/// @brief Class constructor
///
/// @param[in] dev_name - String representing the device name into the linux /dev tree
#pragma once
#include <stdint.h>
-#include <linux/can.h>
#include <string>
#include <thread>
#include "can-bus-dev.hpp"
#include "can-signals.hpp"
#include "../utils/config-parser.hpp"
-#include "../diagnostic/active-diagnostic-request.hpp"
-
+#include "../diagnostic/diagnostic-manager.hpp"
#include "../low-can-binding.hpp"
// TODO actual max is 32 but dropped to 24 for memory considerations
private:
utils::config_parser_t conf_file_; ///< configuration file handle used to initialize can_bus_dev_t objects.
+ int process_can_signals(can_message_t& can_message);
+ int process_diagnostic_signals(diagnostic_manager_t& manager, const can_message_t& can_message);
+
void can_decode_message();
std::thread th_decoding_; ///< thread that'll handle decoding a can frame
bool is_decoding_ = false; ///< boolean member controling thread while loop
void start_threads();
void stop_threads();
- int process_can_signals(can_message_t& can_message);
- int process_diagnostic_signals(diagnostic_manager_t& manager, const can_message_t& can_message);
-
can_message_t next_can_message();
void push_new_can_message(const can_message_t& can_msg);
std::mutex& get_can_message_mutex();
#include "canutil/read.h"
#include "../utils/openxc-utils.hpp"
+#include "../low-can-binding.hpp"
+
/// @brief Parse the signal's bitfield from the given data and return the raw
/// value.
///
#include <vector>
#include <memory>
-#include "can-bus-dev.hpp"
#include "can-message.hpp"
#include "../utils/timer.hpp"
#include "openxc.pb.h"
#include "../utils/timer.hpp"
-#include "can-bus.hpp"
#include "can-message.hpp"
#include "can-message-definition.hpp"
#include "../diagnostic/diagnostic-message.hpp"
char buffer[256];
vsnprintf(buffer, 256, format, args);
- DEBUG(binder_interface, "%S: %s", __FUNCTION__, buffer);
+ DEBUG(binder_interface, "%s: %s", __FUNCTION__, buffer);
}
/// @brief The type signature for a... OpenXC TODO: not used yet.
wait_for_multiple_responses, decoder, callback, frequencyHz);
entry->set_handle(shims_, request);
- //start_diagnostic_request(&shims_, entry->get_handle());
- //char request_string[128] = {0};
- //diagnostic_request_to_string(&entry->get_handle()->request, request_string,
- // sizeof(request_string));
-
uint64_t usec;
sd_event_now(afb_daemon_get_event_loop(binder_interface->daemon), CLOCK_BOOTTIME, &usec);
if(recurring_requests_.size() > 0)
///
/// @brief - A representation of an OBD-II PID.
///
-class diagnostic_message_t {
+class diagnostic_message_t
+{
private:
uint8_t pid_; /*!< pid_ - The 1 byte PID.*/
std::string generic_name_; /*!< generic_name_ - A human readable name to use for this PID when published.*/
}
///
-/// @fn static int subscribe_unsubscribe_signals(struct afb_req request, bool subscribe, const std::vector<can_signal_t>& signals)
/// @brief subscribe to all signals in the vector signals
///
/// @param[in] afb_req request : contain original request use to subscribe or unsubscribe
/// @param[in] subscribe boolean value used to chose between a subscription operation or an unsubscription
-/// @param[in] can_signal_t vector with can_signal_t to subscribe
+/// @param[in] signals - struct containing vectors with can_signal_t and diagnostic_messages to subscribe
///
/// @return Number of correctly subscribed signal
///
{
DiagnosticRequest* diag_req = conf.get_request_from_diagnostic_message(sig->get_name());
- // If the requested diagnostic message isn't supported by the car then unssubcribe.
+ // If the requested diagnostic message isn't supported by the car then unsubcribe it
// no matter what we want, worse case will be a fail unsubscription but at least we don't
// poll a PID for nothing.
if(sig->get_supported() && subscribe)