From 0210cefa9e810e6e87e67b3a55646f85363d10cc Mon Sep 17 00:00:00 2001 From: embeddedteam103 Date: Sun, 16 Dec 2018 16:50:13 +0200 Subject: [PATCH 1/2] Add unsigned everywhere in the driver for compatibility with the CAN HAL --- drivers/CAN.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/CAN.h b/drivers/CAN.h index 228eb611f0..5f2257f97b 100644 --- a/drivers/CAN.h +++ b/drivers/CAN.h @@ -41,10 +41,10 @@ public: */ CANMessage() : CAN_Message() { - len = 8; + len = 8U; type = CANData; format = CANStandard; - id = 0; + id = 0U; memset(data, 0, 8); } @@ -56,7 +56,7 @@ public: * @param _type Type of Data: Use enum CANType for valid parameter values * @param _format Data Format: Use enum CANFormat for valid parameter values */ - CANMessage(unsigned _id, const char *_data, char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard) + CANMessage(unsigned int _id, const unsigned char *_data, unsigned char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard) { len = _len & 0xF; type = _type; @@ -70,7 +70,7 @@ public: * @param _id Message ID * @param _format Data Format: Use enum CANType for valid parameter values */ - CANMessage(unsigned _id, CANFormat _format = CANStandard) + CANMessage(unsigned int _id, CANFormat _format = CANStandard) { len = 0; type = CANRemote; @@ -104,10 +104,10 @@ public: * CAN can1(MBED_CONF_APP_CAN1_RD, MBED_CONF_APP_CAN1_TD); * CAN can2(MBED_CONF_APP_CAN2_RD, MBED_CONF_APP_CAN2_TD); * - * char counter = 0; + * unsigned char counter = 0; * * void send() { - * if(can1.write(CANMessage(1337, &counter, 1))) { + * if(can1.write(CANMessage(1337U, &counter, 1))) { * printf("Message sent: %d\n", counter); * counter++; * } @@ -116,7 +116,7 @@ public: * * int main() { * ticker.attach(&send, 1); - * CANMessage msg; + * CANMessage msg; * while(1) { * if(can2.read(msg)) { * printf("Message received: %d\n\n", msg.data[0]); From 6f3ad9a93b7d5a37de6ab0b1fc611ac8bc5e2604 Mon Sep 17 00:00:00 2001 From: CoolUsername Date: Tue, 26 Mar 2019 16:11:50 +0200 Subject: [PATCH 2/2] CR: Add signed overload --- drivers/CAN.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/CAN.h b/drivers/CAN.h index 5f2257f97b..adcc3eecf3 100644 --- a/drivers/CAN.h +++ b/drivers/CAN.h @@ -65,6 +65,24 @@ public: memcpy(data, _data, _len); } + + /** Creates CAN message with specific content. + * + * @param _id Message ID + * @param _data Mesaage Data + * @param _len Message Data length + * @param _type Type of Data: Use enum CANType for valid parameter values + * @param _format Data Format: Use enum CANFormat for valid parameter values + */ + CANMessage(unsigned int _id, const char *_data, unsigned char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard) + { + len = _len & 0xF; + type = _type; + format = _format; + id = _id; + memcpy(data, _data, _len); + } + /** Creates CAN remote message. * * @param _id Message ID