5384c0211eb46064a95e28509ac7f3d67132ebf0
[apps/agl-service-can-low-level.git] / low-can-binding / can / message / message.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 "./message.hpp"
19
20 #include <cstring>
21
22 #include "../../binding/low-can-hat.hpp"
23
24 /**
25  * @brief Construct a new message t::message t object
26  *
27  */
28 message_t::message_t()
29         : maxdlen_{0},
30          length_{0},
31          format_{message_format_t::INVALID},
32          timestamp_{0},
33          sub_id_{-1}
34 {}
35
36 /**
37  * @brief Construct a new message t::message t object
38  *
39  * @param maxdlen The maxdlen of a message
40  * @param length The length of the message
41  * @param format The format of the message
42  * @param data The data vector of the message
43  * @param timestamp The timestamp of the message
44  */
45 message_t::message_t(uint32_t maxdlen,
46         uint32_t length,
47         message_format_t format,
48         std::vector<uint8_t>& data,
49         uint64_t timestamp)
50         : maxdlen_{maxdlen},
51         length_{length},
52         format_{format},
53         data_{data},
54         timestamp_{timestamp},
55         sub_id_{-1}
56 {}
57
58 /**
59  * @brief Return the sub_id of the message
60  *
61  * @return int The sub_id of the message
62  */
63 int message_t::get_sub_id() const
64 {
65         return sub_id_;
66 }
67
68 ///
69 /// @brief Retrieve data_ member value.
70 ///
71 /// @return pointer to the first element
72 ///  of class member data_
73 ///
74 const uint8_t* message_t::get_data() const
75 {
76         return data_.data();
77 }
78
79 ///
80 /// @brief Retrieve data_ member whole vector
81 ///
82 /// @return the vector as is
83 ///
84 const std::vector<uint8_t> message_t::get_data_vector() const
85 {
86         return data_;
87 }
88
89 ///
90 /// @brief Retrieve length_ member value.
91 ///
92 /// @return length_ class member
93 ///
94 uint32_t message_t::get_length() const
95 {
96         return length_;
97 }
98
99 /**
100  * @brief Set data vector of the message
101  *
102  * @param data A vector of data
103  */
104 void message_t::set_data(std::vector<uint8_t> &data)
105 {
106         data_ = data;
107 }
108
109 /**
110  * @brief Set sub_id of the message
111  *
112  * @param sub_id The sub_id to set
113  */
114 void message_t::set_sub_id(int sub_id)
115 {
116         sub_id_ = sub_id;
117 }
118
119 /**
120  * @brief Return the timestamp of the message
121  *
122  * @return uint64_t The timestamp
123  */
124 uint64_t message_t::get_timestamp() const
125 {
126         return timestamp_;
127 }
128
129 /**
130  * @brief Return the format of the message
131  *
132  * @return message_format_t The message format
133  */
134 message_format_t message_t::get_msg_format()
135 {
136         return format_;
137 }