summaryrefslogtreecommitdiff
path: root/shared-bindings
diff options
context:
space:
mode:
authorJeff Epler <jepler@gmail.com>2020-09-28 17:14:39 -0500
committerJeff Epler <jepler@gmail.com>2020-09-28 17:22:00 -0500
commitf4e36fc7f6719cb938b6e11b3e5242b149600d7d (patch)
treeae676e2ada4ac0e24f75c809602e209b69045778 /shared-bindings
parent13493730a15d5c75b50f2568387f2ddc88c412c7 (diff)
CAN: Use mp_obj_t insteaed of canio_message_obj_t, get rid of rtr field
Diffstat (limited to 'shared-bindings')
-rw-r--r--shared-bindings/canio/CAN.h2
-rw-r--r--shared-bindings/canio/Listener.c14
-rw-r--r--shared-bindings/canio/Listener.h2
3 files changed, 6 insertions, 12 deletions
diff --git a/shared-bindings/canio/CAN.h b/shared-bindings/canio/CAN.h
index 08166dfd4..8d61bc8ed 100644
--- a/shared-bindings/canio/CAN.h
+++ b/shared-bindings/canio/CAN.h
@@ -51,5 +51,5 @@ void common_hal_canio_can_auto_restart_set(canio_can_obj_t *self, bool auto_rest
void common_hal_canio_can_check_for_deinit(canio_can_obj_t *self);
void common_hal_canio_can_deinit(canio_can_obj_t *self);
void common_hal_canio_can_restart(canio_can_obj_t *self);
-void common_hal_canio_can_send(canio_can_obj_t *self, canio_message_obj_t *message);
+void common_hal_canio_can_send(canio_can_obj_t *self, mp_obj_t message);
void common_hal_canio_reset(void);
diff --git a/shared-bindings/canio/Listener.c b/shared-bindings/canio/Listener.c
index 7b0e59063..e5a9a2f83 100644
--- a/shared-bindings/canio/Listener.c
+++ b/shared-bindings/canio/Listener.c
@@ -49,17 +49,11 @@ STATIC mp_obj_t canio_listener_receive(mp_obj_t self_in) {
canio_listener_obj_t *self = MP_OBJ_TO_PTR(self_in);
common_hal_canio_listener_check_for_deinit(self);
- canio_message_obj_t *message = m_new_obj(canio_message_obj_t);
-
- if (common_hal_canio_listener_receiveinto(self, message)) {
- if (message->rtr) {
- message->base.type = &canio_remote_transmission_request_type;
- } else {
- message->base.type = &canio_message_type;
- }
+ mp_obj_t message = common_hal_canio_listener_receive(self);
+ // note: receive fills out the type field of the message
+
+ if (message) {
return message;
- } else {
- m_free(message); // message did not escape into vm
}
return mp_const_none;
}
diff --git a/shared-bindings/canio/Listener.h b/shared-bindings/canio/Listener.h
index d925fa265..527ffe4cb 100644
--- a/shared-bindings/canio/Listener.h
+++ b/shared-bindings/canio/Listener.h
@@ -37,7 +37,7 @@ typedef struct canio_listener_obj canio_listener_obj_t;
void common_hal_canio_listener_construct(canio_listener_obj_t *self, canio_can_obj_t *can, size_t nmatch, canio_match_obj_t **matches, float timeout);
void common_hal_canio_listener_check_for_deinit(canio_listener_obj_t *self);
void common_hal_canio_listener_deinit(canio_listener_obj_t *self);
-bool common_hal_canio_listener_receiveinto(canio_listener_obj_t *self, canio_message_obj_t *message);
+mp_obj_t common_hal_canio_listener_receive(canio_listener_obj_t *self);
int common_hal_canio_listener_in_waiting(canio_listener_obj_t *self);
float common_hal_canio_listener_get_timeout(canio_listener_obj_t *self);
void common_hal_canio_listener_set_timeout(canio_listener_obj_t *self, float timeout);