summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shared-bindings/_canio/Message.c4
-rw-r--r--shared-module/_canio/Message.c4
2 files changed, 6 insertions, 2 deletions
diff --git a/shared-bindings/_canio/Message.c b/shared-bindings/_canio/Message.c
index 85657e05e..c7ef5d458 100644
--- a/shared-bindings/_canio/Message.c
+++ b/shared-bindings/_canio/Message.c
@@ -117,7 +117,7 @@ STATIC const mp_obj_property_t canio_message_id_obj = {
//| data: bytes
//| """The content of the message, or dummy content in the case of an rtr.
//|
-//| Assigning to data also sets the length."""
+//| Assigning to data also sets the length and clears the rtr flag."""
//|
STATIC mp_obj_t canio_message_data_get(const mp_obj_t self_in) {
canio_message_obj_t *self = self_in;
@@ -202,7 +202,7 @@ STATIC const mp_obj_property_t canio_message_extended_obj = {
//| rtr: bool
-//| """True if the message represents a remote transmission request (RTR)"""
+//| """True if the message represents a remote transmission request (RTR). Setting rtr to true zeros out data"""
//|
STATIC mp_obj_t canio_message_rtr_get(const mp_obj_t self_in) {
canio_message_obj_t *self = self_in;
diff --git a/shared-module/_canio/Message.c b/shared-module/_canio/Message.c
index 0caca58f0..a02bd0127 100644
--- a/shared-module/_canio/Message.c
+++ b/shared-module/_canio/Message.c
@@ -59,6 +59,7 @@ const void *common_hal_canio_message_get_data(const canio_message_obj_t *self)
const void common_hal_canio_message_set_data(canio_message_obj_t *self, const void *data, size_t size)
{
+ self->rtr = false;
self->size = size;
memcpy(self->data, data, size);
}
@@ -84,6 +85,9 @@ bool common_hal_canio_message_get_rtr(const canio_message_obj_t *self)
void common_hal_canio_message_set_rtr(canio_message_obj_t *self, bool rtr)
{
self->rtr = rtr;
+ if (rtr) {
+ memset(self->data, 0, self->size);
+ }
}
bool common_hal_canio_message_get_extended(const canio_message_obj_t *self)