@@ -56,9 +56,9 @@ R7FA4M1_CAN::R7FA4M1_CAN(int const can_tx_pin, int const can_rx_pin)
56
56
CAN_DEFAULT_MASK,
57
57
CAN_DEFAULT_MASK,
58
58
CAN_DEFAULT_MASK,
59
- 0 , /* Use no id filtering -> a CAN frame with any ID will be stored in receive mailbox #0. */
60
- CAN_DEFAULT_MASK,
59
+ 0 , /* Use no id filtering -> a CAN frame with any ID will be stored in receive mailbox group #0. */
61
60
CAN_DEFAULT_MASK,
61
+ 0 , /* Use no id filtering -> a CAN frame with any ID will be stored in receive mailbox group #2. */
62
62
CAN_DEFAULT_MASK
63
63
}
64
64
, _can_mailbox
@@ -74,15 +74,15 @@ R7FA4M1_CAN::R7FA4M1_CAN(int const can_tx_pin, int const can_rx_pin)
74
74
{ .mailbox_id = 6 , .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
75
75
{ .mailbox_id = 7 , .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
76
76
/* Mailbox Group #2 */
77
- { .mailbox_id = 8 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
78
- { .mailbox_id = 9 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
79
- { .mailbox_id = 10 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
80
- { .mailbox_id = 11 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
77
+ { .mailbox_id = 8 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
78
+ { .mailbox_id = 9 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
79
+ { .mailbox_id = 10 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
80
+ { .mailbox_id = 11 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
81
81
/* Mailbox Group #3 */
82
- { .mailbox_id = 12 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
83
- { .mailbox_id = 13 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
84
- { .mailbox_id = 14 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
85
- { .mailbox_id = 15 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
82
+ { .mailbox_id = 12 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
83
+ { .mailbox_id = 13 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
84
+ { .mailbox_id = 14 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
85
+ { .mailbox_id = 15 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_TRANSMIT},
86
86
/* We only use the very first receive mailbox for receiving. */
87
87
/* Mailbox Group #4 */
88
88
{ .mailbox_id = 0 , .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
@@ -95,22 +95,22 @@ R7FA4M1_CAN::R7FA4M1_CAN(int const can_tx_pin, int const can_rx_pin)
95
95
{ .mailbox_id = 6 , .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
96
96
{ .mailbox_id = 7 , .id_mode = CAN_ID_MODE_EXTENDED, .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
97
97
/* Mailbox Group #6 */
98
- { .mailbox_id = 8 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
99
- { .mailbox_id = 9 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
100
- { .mailbox_id = 10 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
101
- { .mailbox_id = 11 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
98
+ { .mailbox_id = 8 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
99
+ { .mailbox_id = 9 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
100
+ { .mailbox_id = 10 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
101
+ { .mailbox_id = 11 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
102
102
/* Mailbox Group #7 */
103
- { .mailbox_id = 12 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
104
- { .mailbox_id = 13 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
105
- { .mailbox_id = 14 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
106
- { .mailbox_id = 15 , .id_mode = CAN_ID_MODE_EXTENDED , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE }
103
+ { .mailbox_id = 12 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
104
+ { .mailbox_id = 13 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
105
+ { .mailbox_id = 14 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE },
106
+ { .mailbox_id = 15 , .id_mode = CAN_ID_MODE_STANDARD , .frame_type = CAN_FRAME_TYPE_DATA, .mailbox_type = CAN_MAILBOX_RECEIVE }
107
107
}
108
108
, _can_extended_cfg
109
109
{
110
110
.clock_source = CAN_CLOCK_SOURCE_PCLKB,
111
111
.p_mailbox_mask = _can_mailbox_mask,
112
112
.p_mailbox = _can_mailbox,
113
- .global_id_mode = CAN_GLOBAL_ID_MODE_EXTENDED ,
113
+ .global_id_mode = CAN_GLOBAL_ID_MODE_MIXED ,
114
114
.mailbox_count = CAN_MAX_NO_MAILBOXES,
115
115
.message_mode = CAN_MESSAGE_MODE_OVERWRITE,
116
116
.p_fifo_int_cfg = nullptr ,
@@ -205,17 +205,21 @@ int R7FA4M1_CAN::disableInternalLoopback()
205
205
206
206
int R7FA4M1_CAN::write (CanMsg const & msg)
207
207
{
208
+ bool const is_standard_id = msg.isStandardId ();
209
+
208
210
can_frame_t can_msg = {
209
- /* id = */ msg.id ,
210
- /* id_mode = */ CAN_ID_MODE_EXTENDED,
211
+ /* id = */ is_standard_id ? msg.getStandardId () : msg. getExtendedId () ,
212
+ /* id_mode = */ is_standard_id ? CAN_ID_MODE_STANDARD : CAN_ID_MODE_EXTENDED,
211
213
/* type = */ CAN_FRAME_TYPE_DATA,
212
214
/* data_length_code = */ min (msg.data_length , CAN_DATA_BUFFER_LENGTH),
213
215
/* options = */ 0
214
216
};
215
217
216
218
memcpy (can_msg.data , msg.data , can_msg.data_length_code );
217
219
218
- if (fsp_err_t const rc = R_CAN_Write (&_can_ctrl, CAN_MAILBOX_ID_0, &can_msg); rc != FSP_SUCCESS)
220
+ if (fsp_err_t const rc = R_CAN_Write (&_can_ctrl,
221
+ is_standard_id ? CAN_MAILBOX_ID_0 : CAN_MAILBOX_ID_16,
222
+ &can_msg); rc != FSP_SUCCESS)
219
223
return -rc;
220
224
221
225
return 1 ;
@@ -241,7 +245,7 @@ void R7FA4M1_CAN::onCanCallback(can_callback_args_t * p_args)
241
245
/* Extract the received CAN message. */
242
246
CanMsg const msg
243
247
(
244
- p_args->frame .id ,
248
+ ( p_args->frame .id_mode == CAN_ID_MODE_STANDARD) ? CanStandardId (p_args-> frame . id ) : CanExtendedId (p_args-> frame . id ) ,
245
249
p_args->frame .data_length_code ,
246
250
p_args->frame .data
247
251
);
0 commit comments