407ed41d4bca4630b61fcaffbfb20ea36abd015c
[apps/low-level-can-service.git] / CAN-binder / low-can-binding / can / can-message-definition.cpp
1 /*
2  * Copyright (C) 2015, 2016 "IoT.bzh"
3  * Author "Romain Forlot" <romain.forlot@iot.bzh>
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 #include "can-message-definition.hpp"
19
20 can_message_definition_t::can_message_definition_t(const std::string bus)
21         : parent_{nullptr}, bus_{bus}, last_value_{CAN_MESSAGE_SIZE}
22 {}
23
24 can_message_definition_t::can_message_definition_t(
25         const std::string bus,
26         uint32_t id,
27         frequency_clock_t frequency_clock,
28         bool force_send_changed)
29         : parent_{nullptr},
30           bus_{bus},
31           id_{id},
32           frequency_clock_{frequency_clock},
33           force_send_changed_{force_send_changed},
34           last_value_{CAN_MESSAGE_SIZE}
35 {}
36
37 can_message_definition_t::can_message_definition_t(
38         const std::string bus,
39         uint32_t id,
40         can_message_format_t format,
41         frequency_clock_t frequency_clock,
42         bool force_send_changed)
43         : parent_{nullptr},
44         bus_{bus},
45         id_{id},
46         format_{format},
47         frequency_clock_{frequency_clock},
48         force_send_changed_{force_send_changed},
49         last_value_{CAN_MESSAGE_SIZE}
50 {}
51
52 can_message_definition_t::can_message_definition_t(
53         const std::string bus,
54         uint32_t id,
55         can_message_format_t format,
56         frequency_clock_t frequency_clock,
57         bool force_send_changed,
58         std::vector<std::shared_ptr<can_signal_t> > can_signals)
59         :  parent_{nullptr},
60         bus_{bus},
61         id_{id},
62         format_{format},
63         frequency_clock_{frequency_clock},
64         force_send_changed_{force_send_changed},
65         last_value_{CAN_MESSAGE_SIZE},
66         can_signals_{std::move(can_signals)}
67 {
68         for(auto& sig: can_signals_)
69         {
70                 sig->set_parent(std::make_shared<can_message_definition_t>(*this));
71         }
72 }
73
74 /*can_message_definition_t(const can_message_definition_t& b)
75         :  parent_{b.parent_},
76         bus_{b.bus_},
77         id_{b.id_},
78         format_{b.format_},
79         frequency_clock_{b.frequency_clock_},
80         force_send_changed_{b.force_send_changed_},
81         last_value_{b.last_value_},
82         can_signals_{b.can_signals_}
83         {}*/
84
85 const std::string& can_message_definition_t::get_bus_name() const
86 {
87         return bus_;
88 }
89
90 uint32_t can_message_definition_t::get_id() const
91 {
92         return id_;
93 }
94
95 std::vector<std::shared_ptr<can_signal_t> >& can_message_definition_t::get_can_signals()
96 {
97         return can_signals_;
98 }
99
100 void can_message_definition_t::set_parent(std::shared_ptr<can_message_set_t> parent)
101 {
102         parent_= parent;
103 }
104
105 void can_message_definition_t::set_last_value(const can_message_t& cm)
106 {
107         last_value_= cm.get_data_vector();
108 }