diff options
-rw-r--r-- | src/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/can/can-message-definition.cpp | 31 | ||||
-rw-r--r-- | src/can/can-message-definition.hpp | 55 | ||||
-rw-r--r-- | src/can/can-message.cpp | 20 | ||||
-rw-r--r-- | src/can/can-message.hpp | 44 |
5 files changed, 88 insertions, 66 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3c23140..962b41b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -79,8 +79,8 @@ add_library(openxc STATIC ${PROJECT_LIBDIR}/openxc-message-format/gen/cpp/openxc message(STATUS "Creation of ${PROJECT_NAME} binding for AFB-DAEMON") ########################################################################### -add_library(${PROJECT_NAME} MODULE ${PROJECT_NAME}.cpp configuration.cpp - can/can-bus.cpp can/can-bus-dev.cpp can/can-message.cpp can/can-signals.cpp can/can-decoder.cpp +add_library(${PROJECT_NAME} MODULE ${PROJECT_NAME}.cpp configuration.cpp configuration-generated.cpp + can/can-bus.cpp can/can-bus-dev.cpp can/can-message-set.cpp can/can-message-definition.cpp can/can-message.cpp can/can-signals.cpp can/can-decoder.cpp obd2/obd2-signals.cpp obd2/diagnostic-manager.cpp obd2/active-diagnostic-request.cpp utils/signals.cpp utils/openxc-utils.cpp utils/timer.cpp utils/socket.cpp) target_link_libraries(${PROJECT_NAME} pthread bitfield uds isotp openxc) diff --git a/src/can/can-message-definition.cpp b/src/can/can-message-definition.cpp new file mode 100644 index 0000000..8272457 --- /dev/null +++ b/src/can/can-message-definition.cpp @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2015, 2016 "IoT.bzh" + * Author "Romain Forlot" <romain.forlot@iot.bzh> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "can-message-definition.hpp" + +can_message_definition_t::can_message_definition_t(uint8_t bus) + : bus_{bus}, last_value_(CAN_MESSAGE_SIZE) +{} + +can_message_definition_t::can_message_definition_t(uint8_t bus, uint32_t id, can_message_format_t format, frequency_clock_t frequency_clock, bool force_send_changed) + : bus_{bus}, id_{id}, format_{format}, frequency_clock_{frequency_clock}, force_send_changed_{force_send_changed}, last_value_(CAN_MESSAGE_SIZE) +{} + +uint32_t can_message_definition_t::get_id() const +{ + return id_; +}
\ No newline at end of file diff --git a/src/can/can-message-definition.hpp b/src/can/can-message-definition.hpp new file mode 100644 index 0000000..1c7199e --- /dev/null +++ b/src/can/can-message-definition.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2015, 2016 "IoT.bzh" + * Author "Romain Forlot" <romain.forlot@iot.bzh> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @class can_message_definition_t + * + * @brief The definition of a CAN message. This includes a lot of metadata, so + * to save memory this struct should not be used for storing incoming and + * outgoing CAN messages. + */ + +#pragma once + +#include <vector> +#include <memory> + +#include "can-bus-dev.hpp" +#include "can-message.hpp" +#include "../utils/timer.hpp" + +class can_message_definition_t +{ +private: + uint8_t bus_; /*!< bus_ - Address of CAN bus device. */ + uint32_t id_; /*!< id_ - The ID of the message.*/ + can_message_format_t format_; /*!< format_ - the format of the message's ID.*/ + frequency_clock_t frequency_clock_; /*!< clock_ - an optional frequency clock to control the output of this + * message, if sent raw, or simply to mark the max frequency for custom + * handlers to retrieve.*/ + bool force_send_changed_; /*!< force_send_changed_ - If true, regardless of the frequency, it will send CAN + * message if it has changed when using raw passthrough.*/ + std::vector<uint8_t> last_value_; /*!< last_value_ - The last received value of the message. Defaults to undefined. + * This is required for the forceSendChanged functionality, as the stack + * needs to compare an incoming CAN message with the previous frame.*/ + +public: + can_message_definition_t(uint8_t bus); + can_message_definition_t(uint8_t bus, uint32_t id, can_message_format_t format, frequency_clock_t frequency_clock, bool force_send_changed); + + uint32_t get_id() const; +}; diff --git a/src/can/can-message.cpp b/src/can/can-message.cpp index 592f5e5..cd4a81e 100644 --- a/src/can/can-message.cpp +++ b/src/can/can-message.cpp @@ -21,11 +21,6 @@ #include "../low-can-binding.hpp" -/******************************************************************************** -* -* CanMessage method implementation -* -*********************************************************************************/ /** * @brief Class constructor * @@ -252,18 +247,3 @@ canfd_frame can_message_t::convert_to_canfd_frame() return frame; } - -/******************************************************************************** -* -* can_message_definition_t method implementation -* -*********************************************************************************/ - -can_message_definition_t::can_message_definition_t(can_bus_dev_t& cbd) - : bus_{cbd}, last_value_(CAN_MESSAGE_SIZE) -{} - -uint32_t can_message_definition_t::get_id() const -{ - return id_; -} diff --git a/src/can/can-message.hpp b/src/can/can-message.hpp index 730e9f9..6fe0317 100644 --- a/src/can/can-message.hpp +++ b/src/can/can-message.hpp @@ -73,47 +73,3 @@ public: static can_message_t convert_from_canfd_frame(const struct canfd_frame& frame, size_t nbytes); canfd_frame convert_to_canfd_frame(); }; - -/** - * @class can_message_definition_t - * - * @brief The definition of a CAN message. This includes a lot of metadata, so - * to save memory this struct should not be used for storing incoming and - * outgoing CAN messages. - */ -class can_message_definition_t -{ - private: - can_bus_dev_t& bus_; /*!< bus_ - A pointer to the bus this message is on. */ - uint32_t id_; /*!< id_ - The ID of the message.*/ - can_message_format_t format_; /*!< format_ - the format of the message's ID.*/ - frequency_clock_t clock_; /*!< clock_ - an optional frequency clock to control the output of this - * message, if sent raw, or simply to mark the max frequency for custom - * handlers to retrieve.*/ - bool force_send_changed_; /*!< force_send_changed_ - If true, regardless of the frequency, it will send CAN - * message if it has changed when using raw passthrough.*/ - std::vector<uint8_t> last_value_; /*!< last_value_ - The last received value of the message. Defaults to undefined. - * This is required for the forceSendChanged functionality, as the stack - * needs to compare an incoming CAN message with the previous frame.*/ - - public: - can_message_definition_t(can_bus_dev_t& cbd); - uint32_t get_id() const; -}; - -/** Public: Retrive a list of all possible CAN configurations. - * - * Returns a pointer to an array of all configurations. - */ -can_message_set_t* getMessageSets(); - -/** Public: Return the length of the array returned by getMessageSets() */ -int getMessageSetCount(); - -/* Public: Return an array of all CAN messages to be processed in the active - * configuration. - */ -can_message_definition_t* getMessages(); - -/* Public: Return the length of the array returned by getMessages(). */ -int getMessageCount();
\ No newline at end of file |