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/configuration.hpp | |
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/configuration.hpp')
-rw-r--r-- | src/configuration.hpp | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/configuration.hpp b/src/configuration.hpp new file mode 100644 index 00000000..2fd59e5f --- /dev/null +++ b/src/configuration.hpp @@ -0,0 +1,115 @@ +/* + * 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 <vector> + +#include "can/can-bus.hpp" +#include "can/can-signals.hpp" +#include "obd2/diagnostic-manager.hpp" + +/** + * @brief Class representing a configuration attached to the binding. + * + * @desc It regroups all needed objects instance from other class + * that will be used along the binding life. It gets a global vision + * on which signals are implemented for that binding. + * Here, it is only the definition of the class with predefined accessors + * methods used in the binding. + * + * It will be the reference point to needed objects. + */ + +#include "low-can-binding.hpp" + +class configuration_t +{ + private: + can_bus_t can_bus_manager_(afb_daemon_rootdir_open_locale(binder_interface->daemon, "can_buses.json", O_RDONLY, NULL)); + diagnostic_manager_t diagnostic_manager_; + uint8_t active_message_set_ = 0; + + public: + const std::vector<obd2_signals_t> obd2_signals_; + const std::vector<can_message_set_t> can_message_set_; + const std::vector<std::vector<can_signal_t>> can_signals_; + const std::vector<std::vector<can_message_definition_t>> can_message_definition_; + + configuration_t& get_configuration() + { + return this; + } + + can_bus_t& get_can_bus_manager() + { + return can_bus_manager_; + } + + diagnostic_manager_t& get_diagnostic_manager() + { + return diagnostic_manager_; + } + + uint8_t get_active_message_set() + { + return active_message_set_; + } + + std::vector<can_message_set>& get_can_message_set() + { + return can_message_set_; + } + + std::vector<can_signal>& get_can_signals() + { + return can_signal_[active_message_set_]; + } + + std::vector<CanSignal>& get_can_signals() + { + return SIGNALS[active_message_set_]; + } + + std::vector<can_message_definition>& get_can_message_definition() + { + return can_message_definition_[active_message_set_]; + } + + std::vector<obd2_signals_t>& get_obd2_signals() + { + return obd2_signals_; + } + + std::vector<obd2_signals_t>& get_obd2_signals() + { + return OBD2_PIDS; + } + + uint32_t get_signal_id(obd2_signals_t& sig) + { + return sig.get_pid(); + } + + uint32_t get_signal_id(const CanSignal& sig) + { + return sig.message->id; + } + + void set_active_message_set(uint8_t id) + { + active_message_set_ = id; + } +};
\ No newline at end of file |