Skip to content

Commit d2c9d9d

Browse files
author
Cruz Monrreal
authored
Merge pull request #9111 from embeddedteam103/can_signness_mismatch
CAN: Fix signness mismatch in `CANMessage` constructors
2 parents 136e0e3 + 6f3ad9a commit d2c9d9d

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

drivers/CAN.h

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ class CANMessage : public CAN_Message {
4141
*/
4242
CANMessage() : CAN_Message()
4343
{
44-
len = 8;
44+
len = 8U;
4545
type = CANData;
4646
format = CANStandard;
47-
id = 0;
47+
id = 0U;
4848
memset(data, 0, 8);
4949
}
5050

@@ -56,7 +56,25 @@ class CANMessage : public CAN_Message {
5656
* @param _type Type of Data: Use enum CANType for valid parameter values
5757
* @param _format Data Format: Use enum CANFormat for valid parameter values
5858
*/
59-
CANMessage(unsigned _id, const char *_data, char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard)
59+
CANMessage(unsigned int _id, const unsigned char *_data, unsigned char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard)
60+
{
61+
len = _len & 0xF;
62+
type = _type;
63+
format = _format;
64+
id = _id;
65+
memcpy(data, _data, _len);
66+
}
67+
68+
69+
/** Creates CAN message with specific content.
70+
*
71+
* @param _id Message ID
72+
* @param _data Mesaage Data
73+
* @param _len Message Data length
74+
* @param _type Type of Data: Use enum CANType for valid parameter values
75+
* @param _format Data Format: Use enum CANFormat for valid parameter values
76+
*/
77+
CANMessage(unsigned int _id, const char *_data, unsigned char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard)
6078
{
6179
len = _len & 0xF;
6280
type = _type;
@@ -70,7 +88,7 @@ class CANMessage : public CAN_Message {
7088
* @param _id Message ID
7189
* @param _format Data Format: Use enum CANType for valid parameter values
7290
*/
73-
CANMessage(unsigned _id, CANFormat _format = CANStandard)
91+
CANMessage(unsigned int _id, CANFormat _format = CANStandard)
7492
{
7593
len = 0;
7694
type = CANRemote;
@@ -104,10 +122,10 @@ class CAN : private NonCopyable<CAN> {
104122
* CAN can1(MBED_CONF_APP_CAN1_RD, MBED_CONF_APP_CAN1_TD);
105123
* CAN can2(MBED_CONF_APP_CAN2_RD, MBED_CONF_APP_CAN2_TD);
106124
*
107-
* char counter = 0;
125+
* unsigned char counter = 0;
108126
*
109127
* void send() {
110-
* if(can1.write(CANMessage(1337, &counter, 1))) {
128+
* if(can1.write(CANMessage(1337U, &counter, 1))) {
111129
* printf("Message sent: %d\n", counter);
112130
* counter++;
113131
* }
@@ -116,7 +134,7 @@ class CAN : private NonCopyable<CAN> {
116134
*
117135
* int main() {
118136
* ticker.attach(&send, 1);
119-
* CANMessage msg;
137+
* CANMessage msg;
120138
* while(1) {
121139
* if(can2.read(msg)) {
122140
* printf("Message received: %d\n\n", msg.data[0]);

0 commit comments

Comments
 (0)