Include new signals.xpp files to the compilation
[apps/agl-service-can-low-level.git] / src / can-message.cpp
index 5a3e2c2..5d01880 100644 (file)
@@ -70,15 +70,15 @@ void can_message_t::set_max_data_length(size_t nbytes)
        switch(nbytes)
        {
                case CANFD_MTU:
-                       DEBUG(binder_interface, "convert_from_canfd_frame: Got an CAN FD frame");
+                       DEBUG(binder_interface, "set_max_data_length: Got an CAN FD frame");
                        maxdlen_ = CANFD_MAX_DLEN;
                        break;
                case CAN_MTU:
-                       DEBUG(binder_interface, "convert_from_canfd_frame: Got a legacy CAN frame");
+                       DEBUG(binder_interface, "set_max_data_length: Got a legacy CAN frame");
                        maxdlen_ = CAN_MAX_DLEN;
                        break;
                default:
-                       ERROR(binder_interface, "convert_from_canfd_frame: unsupported CAN frame");
+                       ERROR(binder_interface, "set_max_data_length: unsupported CAN frame");
                        break;
        }
 }
@@ -152,6 +152,7 @@ void can_message_t::set_data(const __u8* new_data)
 {
                int i;
 
+               data_.clear();
                /* maxdlen_ is now set at CAN_MAX_DLEN or CANFD_MAX_DLEN, respectively 8 and 64 bytes*/
                for(i=0;i<maxdlen_;i++)
                {
@@ -182,7 +183,8 @@ void can_message_t::convert_from_canfd_frame(const std::pair<struct canfd_frame&
        if(maxdlen_ == CANFD_MAX_DLEN)
                set_flags(frame.flags);
 
-       data_.reserve(maxdlen_);
+       if ( data_.capacity() < maxdlen_)
+               data_.reserve(maxdlen_);
        set_data(frame.data);
 
        DEBUG(binder_interface, "convert_from_canfd_frame: Found id: %X, format: %X, length: %X, data %02X%02X%02X%02X%02X%02X%02X%02X", id_, format_, length_,