From 300c1c4a4b2dfc38cbea43c78896af4c86c95165 Mon Sep 17 00:00:00 2001 From: turmary Date: Fri, 29 Jan 2021 09:32:40 +0800 Subject: [PATCH] Add: optional argument err_ptr for checkError() --- src/mcp2515_can.cpp | 5 ++++- src/mcp2515_can.h | 2 +- src/mcp2518fd_can.cpp | 9 +++++---- src/mcp2518fd_can.h | 2 +- src/mcp_can.h | 2 +- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/mcp2515_can.cpp b/src/mcp2515_can.cpp index edd5da1..7c82e1b 100644 --- a/src/mcp2515_can.cpp +++ b/src/mcp2515_can.cpp @@ -1304,8 +1304,11 @@ byte mcp2515_can::checkReceive(void) { ** Function name: checkError ** Descriptions: if something error *********************************************************************************************************/ -byte mcp2515_can::checkError(void) { +byte mcp2515_can::checkError(uint8_t* err_ptr) { byte eflg = mcp2515_readRegister(MCP_EFLG); + if (err_ptr) { + *err_ptr = eflg; + } return ((eflg & MCP_EFLG_ERRORMASK) ? CAN_CTRLERROR : CAN_OK); } diff --git a/src/mcp2515_can.h b/src/mcp2515_can.h index a954ca2..81c1516 100644 --- a/src/mcp2515_can.h +++ b/src/mcp2515_can.h @@ -82,7 +82,7 @@ public: virtual byte readMsgBuf(byte *len, byte *buf); // read buf virtual byte readMsgBufID(unsigned long *ID, byte *len, byte *buf); // read buf with object ID virtual byte checkReceive(void); // if something received - virtual byte checkError(void); // if something error + virtual byte checkError(uint8_t* err_ptr = NULL); // if something error virtual unsigned long getCanId(void); // get can id when receive virtual byte isRemoteRequest(void); // get RR flag when receive virtual byte isExtendedFrame(void); // did we recieve 29bit frame? diff --git a/src/mcp2518fd_can.cpp b/src/mcp2518fd_can.cpp index 593b59a..05e574b 100644 --- a/src/mcp2518fd_can.cpp +++ b/src/mcp2518fd_can.cpp @@ -2576,12 +2576,13 @@ byte mcp2518fd::checkReceive(void) { ** Function name: checkError ** Descriptions: if something error *********************************************************************************************************/ -byte mcp2518fd::checkError(void) { - +byte mcp2518fd::checkError(uint8_t* err_ptr) { CAN_ERROR_STATE flags; mcp2518fd_ErrorStateGet(&flags); - byte eflg = (byte)flags; - return eflg; + if (err_ptr) { + *err_ptr = byte(flags); + } + return (byte)flags; } // /********************************************************************************************************* diff --git a/src/mcp2518fd_can.h b/src/mcp2518fd_can.h index 3d834e0..7804447 100644 --- a/src/mcp2518fd_can.h +++ b/src/mcp2518fd_can.h @@ -117,7 +117,7 @@ public: virtual byte wake(); virtual byte setMode(const byte opMode); virtual byte getMode(); - virtual byte checkError(void); + virtual byte checkError(uint8_t* err_ptr = NULL); /* ---- receiving ---- */ virtual byte checkReceive(void); diff --git a/src/mcp_can.h b/src/mcp_can.h index f267a3f..5f6c301 100644 --- a/src/mcp_can.h +++ b/src/mcp_can.h @@ -34,7 +34,7 @@ public: virtual byte readMsgBuf(byte *len, byte *buf) = 0; // read buf virtual byte readMsgBufID(unsigned long *ID, byte *len, byte *buf) = 0; // read buf with object ID virtual byte checkReceive(void) = 0; // if something received - virtual byte checkError(void) = 0; // if something error + virtual byte checkError(uint8_t* err_ptr = NULL) = 0; // if something error virtual unsigned long getCanId(void) = 0; // get can id when receive virtual byte isRemoteRequest(void) = 0; // get RR flag when receive virtual byte isExtendedFrame(void) = 0; // did we recieve 29bit frame?