diff options
| author | Jeff Epler <jepler@gmail.com> | 2020-09-18 11:14:59 -0500 |
|---|---|---|
| committer | Jeff Epler <jepler@gmail.com> | 2020-09-21 16:44:26 -0500 |
| commit | c39ec1581e3fbc59de7f882adf2e6fbb574fb42e (patch) | |
| tree | 1830f61f171893329fd5da8f0d6c89c3522e4522 | |
| parent | a76119afcba6d7ceb4eb1e4baa79745528feeb92 (diff) | |
_canio: Message: setting data clears rtr, and vice versa
| -rw-r--r-- | shared-bindings/_canio/Message.c | 4 | ||||
| -rw-r--r-- | shared-module/_canio/Message.c | 4 |
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) |
