summaryrefslogtreecommitdiffstats
path: root/src/openxc/message_set.hpp
blob: 37b40fc44e2253e7249f4d12d43c414aa595c53f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#pragma once

#include <string>
#include <vector>
#include <map>
#include <json.hpp>

#include "can_bus.hpp"
#include "can_message.hpp"
#include "diagnostic_message.hpp"
#include "mapping.hpp"
#include "command.hpp"

namespace openxc
{
	class message_set
	{
	private:
		std::string							name_;
		bool								bit_numbering_inverted_;
		std::uint32_t						max_message_frequency_;
		can_bus_mode						raw_can_mode_;
		std::vector<std::string>			parents_;
		std::vector<std::string>			initializers_;
		std::vector<std::string>			loopers_;
		std::map<std::string, can_bus>		buses_;
		std::map<std::string, can_message>	messages_;
		std::vector<diagnostic_message>		diagnostic_messages_;
		std::vector<mapping>				mappings_;
		std::vector<std::string>			extra_sources_;
		std::vector<command>				commands_;

	public:
		message_set();
		message_set(const message_set&) = default;
		message_set(message_set&&) = default;
		
		std::string name() const;
		bool bit_numbering_inverted() const;
		std::uint32_t max_message_frequency() const;
		can_bus_mode raw_can_mode() const;
		const std::vector<std::string>& parents() const;
		const std::vector<std::string>& initializers() const;
		const std::vector<std::string>& loopers() const;
		const std::map<std::string, can_bus>& buses() const;
		const std::map<std::string, can_message>& messages() const;
		const std::vector<diagnostic_message>& diagnostic_messages() const;
		const std::vector<mapping>& mappings() const;
		const std::vector<std::string>& extra_sources() const;
		const std::vector<command>& commands() const;
		
		std::string to_initializer() const;

		void from_json(const nlohmann::json& j);
		nlohmann::json to_json() const;
	};

	void to_json(nlohmann::json& j, const message_set& p);
	void from_json(const nlohmann::json& j, message_set& p);
}