From be8ad4079df421179b141131aa91279a50d5e6e7 Mon Sep 17 00:00:00 2001 From: jxltom Date: Wed, 18 Mar 2020 11:25:38 +0800 Subject: [PATCH 1/2] Return ERROR_ALLTXBUSY when three TX buffers are all busy --- mcp2515.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mcp2515.cpp b/mcp2515.cpp index 833a133..4f430d8 100644 --- a/mcp2515.cpp +++ b/mcp2515.cpp @@ -610,7 +610,7 @@ MCP2515::ERROR MCP2515::sendMessage(const struct can_frame *frame) } } - return ERROR_FAILTX; + return ERROR_ALLTXBUSY; } MCP2515::ERROR MCP2515::readMessage(const RXBn rxbn, struct can_frame *frame) From 7dbf333631f16b2d055ac2e941745e2eaf0de26c Mon Sep 17 00:00:00 2001 From: jxltom Date: Wed, 18 Mar 2020 13:13:48 +0800 Subject: [PATCH 2/2] Check success status after sending message --- mcp2515.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mcp2515.cpp b/mcp2515.cpp index 4f430d8..6f56f6f 100644 --- a/mcp2515.cpp +++ b/mcp2515.cpp @@ -591,6 +591,10 @@ MCP2515::ERROR MCP2515::sendMessage(const TXBn txbn, const struct can_frame *fra modifyRegister(txbuf->CTRL, TXB_TXREQ, TXB_TXREQ); + uint8_t ctrl = readRegister(txbuf->CTRL); + if ((ctrl & (TXB_ABTF | TXB_MLOA | TXB_TXERR)) != 0) { + return ERROR_FAILTX; + } return ERROR_OK; }