X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=low-can-binding%2Fcan%2Fmessage%2Fmessage.cpp;h=56e9379f81f48c1d1ca5fbcf6b030f4ad99f5967;hb=0ff6413b6dc42849f87ce8caa17a91f44ede2f93;hp=2ae095cba8e2433817d9d3cd5913413316396ac2;hpb=2f60d294b3fa4e243fa67a738f9b82a0b428a7fc;p=apps%2Fagl-service-can-low-level.git diff --git a/low-can-binding/can/message/message.cpp b/low-can-binding/can/message/message.cpp index 2ae095cb..56e9379f 100644 --- a/low-can-binding/can/message/message.cpp +++ b/low-can-binding/can/message/message.cpp @@ -21,29 +21,45 @@ #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& 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_; @@ -60,6 +76,28 @@ const uint8_t* message_t::get_data() const return data_.data(); } + +/// +/// @brief Retrieve data_ member value. +/// +/// @return pointer to the first element +/// of class member data_ +/// +const std::vector 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::const_iterator first = data_.begin() + start; + std::vector::const_iterator last = data_.begin() + end; + std::vector ret(first, last); + + return ret; +} + /// /// @brief Retrieve data_ member whole vector /// @@ -75,22 +113,78 @@ const std::vector message_t::get_data_vector() const /// /// @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 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_); }