summaryrefslogtreecommitdiffstats
path: root/src/configuration.hpp
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-03-08 02:41:56 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-03-16 17:09:03 +0100
commit2049aca0927b55f2a256fd60ff686616b73eecb7 (patch)
treeeb4e195c796aa5cc69bdedd772a659b4f83fe9d9 /src/configuration.hpp
parent64d3ead0ce87091a3489dd9796a9f77f241c468b (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.hpp115
1 files changed, 115 insertions, 0 deletions
diff --git a/src/configuration.hpp b/src/configuration.hpp
new file mode 100644
index 0000000..2fd59e5
--- /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