#include "../../binding/low-can-hat.hpp"
-///
-/// @brief Class constructor
-///
-/// message_t class constructor.
-///
+/**
+ * @brief Construct a new message t::message t object
+ *
+ */
message_t::message_t()
- : length_{0},
- format_{message_format_t::INVALID},
+ : maxdlen_{0},
+ length_{0},
+ flags_{INVALID_FLAG},
timestamp_{0},
sub_id_{-1}
{}
-message_t::message_t(uint8_t length,
- message_format_t format,
+/**
+ * @brief Construct a new message t::message t object
+ *
+ * @param maxdlen The maxdlen of a message
+ * @param length The length of the message
+ * @param format The format of the message
+ * @param data The data vector of the message
+ * @param timestamp The timestamp of the message
+ */
+message_t::message_t(uint32_t maxdlen,
+ uint32_t length,
+ uint32_t flags,
std::vector<uint8_t>& data,
uint64_t timestamp)
- : length_{length},
- format_{format},
+ : maxdlen_{maxdlen},
+ length_{length},
+ flags_{flags},
data_{data},
timestamp_{timestamp},
sub_id_{-1}
{}
+/**
+ * @brief Return the sub_id of the message
+ *
+ * @return int The sub_id of the message
+ */
int message_t::get_sub_id() const
{
return sub_id_;
return data_.data();
}
+
+///
+/// @brief Retrieve data_ member value.
+///
+/// @return pointer to the first element
+/// of class member data_
+///
+const std::vector<uint8_t> message_t::get_data_vector(int start, int end) const
+{
+ if ( start > length_ || end > length_ )
+ {
+ AFB_ERROR("Error index to get data vector, [%d-%d] - for length %d", start, end, length_);
+ return data_;
+ }
+
+ std::vector<uint8_t>::const_iterator first = data_.begin() + start;
+ std::vector<uint8_t>::const_iterator last = data_.begin() + end;
+ std::vector<uint8_t> ret(first, last);
+
+ return ret;
+}
+
///
/// @brief Retrieve data_ member whole vector
///
///
/// @return length_ class member
///
-uint8_t message_t::get_length() const
+uint32_t message_t::get_length() const
{
return length_;
}
+/**
+ * @brief Set data vector of the message
+ *
+ * @param data A vector of data
+ */
+void message_t::set_data(std::vector<uint8_t> data)
+{
+ data_ = data;
+}
+
+/**
+ * @brief Set sub_id of the message
+ *
+ * @param sub_id The sub_id to set
+ */
void message_t::set_sub_id(int sub_id)
{
sub_id_ = sub_id;
}
+/**
+ * @brief Return the timestamp of the message
+ *
+ * @return uint64_t The timestamp
+ */
uint64_t message_t::get_timestamp() const
{
return timestamp_;
}
-message_format_t message_t::get_msg_format()
+uint32_t message_t::get_flags()
{
- return format_;
+ return flags_;
+}
+
+void message_t::set_flags(uint32_t flags)
+{
+ flags_ = flags_ | flags;
+}
+
+void message_t::erase_flags()
+{
+ flags_ = 0;
+}
+
+uint32_t message_t::get_maxdlen()
+{
+ return maxdlen_;
+}
+
+void message_t::set_maxdlen(uint32_t maxdlen)
+{
+ maxdlen_ = maxdlen;
+}
+
+void message_t::set_length(uint32_t length)
+{
+ length_ = length;
+}
+
+void message_t::frame_swap()
+{
+ int i;
+ uint8_t *temp = (uint8_t*)alloca(length_);
+
+ for(i = 0; i < length_; i++)
+ temp[i] = data_[length_ - i - 1];
+
+ memcpy(data_.data(), temp, length_);
}