diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-08 02:41:56 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-03-16 17:09:03 +0100 |
commit | 2049aca0927b55f2a256fd60ff686616b73eecb7 (patch) | |
tree | eb4e195c796aa5cc69bdedd772a659b4f83fe9d9 /src/can | |
parent | 64d3ead0ce87091a3489dd9796a9f77f241c468b (diff) |
Beginning of work of get central configuration object
that will be used by the binding to access generated
elements. It will hold generated structure/objects and
make a resume to the binding configuration.
Idea is to have an object that can be inherited
in the generated code to extend its functionnalities
or change some of its behoviors.
Change-Id: If2ce5cbe2eb98a74a8e3f13000ee02855674216f
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'src/can')
-rw-r--r-- | src/can/can-message.hpp | 15 | ||||
-rw-r--r-- | src/can/can-signals.cpp | 50 | ||||
-rw-r--r-- | src/can/can-signals.hpp | 17 |
3 files changed, 15 insertions, 67 deletions
diff --git a/src/can/can-message.hpp b/src/can/can-message.hpp index b118ce7..38a8e59 100644 --- a/src/can/can-message.hpp +++ b/src/can/can-message.hpp @@ -130,6 +130,21 @@ typedef struct CanMessageDefinition CanMessageDefinition; unsigned short commandCount; /*!< commandCount - The number of CanCommmands defined for this message set.*/ } CanMessageSet; +class can_message_set_t +{ + private: + uint8_t index; /*!<index - A numerical ID for the message set, ideally the index in an array + * for fast lookup*/ + const std::string name; /*!< name - The name of the message set.*/ + uint8_t can_bus_count; /*!< busCount - The number of CAN buses defined for this message set.*/ + unsigned short can_message_count; /*!< messageCount - The number of CAN messages (across all buses) defined for + * this message set.*/ + unsigned short can_signal_count; /*!< signalCount - The number of CAN signals (across all messages) defined for + * this message set.*/ + unsigned short can_command_count; /*!< commandCount - The number of CanCommmands defined for this message set.*/ + unsigned short obd2_signal_count; /*!< commandCount - The number of obd2 signals defined for this message set.*/ +}; + /** Public: Return the currently active CAN configuration. */ CanMessageSet* getActiveMessageSet(); diff --git a/src/can/can-signals.cpp b/src/can/can-signals.cpp index 64980b0..bbd172b 100644 --- a/src/can/can-signals.cpp +++ b/src/can/can-signals.cpp @@ -24,56 +24,6 @@ #include "obd2/obd2-signals.hpp" #include "low-can-binding.hpp" -std::vector<std::vector<CanMessageDefinition>> CAN_MESSAGES = { - { - {0x620, CanMessageFormat::STANDARD, {10, 0, nullptr}, false, (uint8_t)NULL}, - {0x442, CanMessageFormat::STANDARD, {10, 0, nullptr}, false, (uint8_t)NULL}, - }, -}; - -/** - * @brief Dumb SIGNALS array. It is composed by CanMessageSet - * SIGNALS[MESSAGE_SET_ID][CanSignal] - */ -std::vector<std::vector<CanSignal>> SIGNALS = { - { - {&(CAN_MESSAGES[MESSAGE_SET_ID][0]), "can.driver_door.open", 2, 4, 1.000000, 0.000000, 0.000000, 0.000000, {10, 0, nullptr}, false, true, nullptr, 0, false, decoder_t::booleanDecoder, nullptr, false, 0.0}, - {&(CAN_MESSAGES[MESSAGE_SET_ID][1]), "can.driver_door.close", 0, 4, 1.000000, 0.000000, 0.000000, 0.000000, {10, 0, nullptr}, false, true, nullptr, 0, false, decoder_t::booleanDecoder, nullptr, false, 0.0} - }, -}; - -/** - * @fn std::vector<CanSignal>& get_can_signals() - * - * @return A reference to a vector of signals - */ -std::vector<CanSignal>& get_can_signals() -{ - return SIGNALS[MESSAGE_SET_ID]; -} - -/** - * @fn size_t getSignalCount() - * - * @return the length of the array returned by get_can_signals(). - */ -size_t getSignalCount() -{ - return SIGNALS[MESSAGE_SET_ID].size(); -} - -/** - * @brief Retrieve can arbitration id of a given CanSignal - * - * @param[in] CanSignal& - a const reference to a CanSignal - * - * @return uint32_t - unsigned integer representing the arbitration id. - */ -uint32_t get_signal_id(const CanSignal& sig) -{ - return sig.message->id; -} - /** * @fn void find_can_signals(const openxc_DynamicField& key, std::vector<CanSignal*>& found_signals) * @brief return signals name found searching through CAN_signals and OBD2 pid diff --git a/src/can/can-signals.hpp b/src/can/can-signals.hpp index b5b87eb..17b189c 100644 --- a/src/can/can-signals.hpp +++ b/src/can/can-signals.hpp @@ -37,17 +37,6 @@ extern "C" #define MESSAGE_SET_ID 0 -extern std::mutex subscribed_signals_mutex; -std::mutex& get_subscribed_signals_mutex(); - -/** - * @brief return the subscribed_signals map. - * - * return std::map<std::string, struct afb_event> - map of subscribed signals. - */ -extern std::map<std::string, struct afb_event> subscribed_signals; -std::map<std::string, struct afb_event>& get_subscribed_signals(); - /** * @brief The type signature for a CAN signal decoder. * @@ -133,10 +122,4 @@ struct CanSignal { }; typedef struct CanSignal CanSignal; -std::vector<CanSignal>& get_can_signals(); - -size_t getSignalCount(); - void find_can_signals(const openxc_DynamicField &key, std::vector<CanSignal*>& found_signals); - -uint32_t get_signal_id(const CanSignal& sig);
\ No newline at end of file |