File tree Expand file tree Collapse file tree 2 files changed +25
-4
lines changed Expand file tree Collapse file tree 2 files changed +25
-4
lines changed Original file line number Diff line number Diff line change @@ -206,9 +206,30 @@ int R7FA6M5_CAN::write(CanMsg const & msg)
206
206
return 1 ;
207
207
}
208
208
209
- size_t R7FA6M5_CAN::available () const
209
+ size_t R7FA6M5_CAN::available ()
210
210
{
211
- return _can_rx_buf.available ();
211
+ can_info_t can_info;
212
+ if (fsp_err_t const rc = R_CANFD_InfoGet (&_canfd_ctrl, &can_info); rc != FSP_SUCCESS)
213
+ return 0 ;
214
+
215
+ if (can_info.rx_mb_status > 0 )
216
+ {
217
+ can_frame_t frame;
218
+ if (fsp_err_t const rc = R_CANFD_Read (&_canfd_ctrl, (can_info.rx_mb_status - 1 ), &frame); rc != FSP_SUCCESS)
219
+ return 0 ;
220
+
221
+ /* Extract the received CAN message. */
222
+ CanMsg const msg
223
+ (
224
+ frame.id ,
225
+ frame.data_length_code ,
226
+ frame.data
227
+ );
228
+ /* Store the received CAN message in the receive buffer. */
229
+ _can_rx_buf.enqueue (msg);
230
+ }
231
+
232
+ return can_info.rx_mb_status ;
212
233
}
213
234
214
235
CanMsg R7FA6M5_CAN::read ()
@@ -221,7 +242,7 @@ void R7FA6M5_CAN::onCanFDCallback(can_callback_args_t * p_args)
221
242
switch (p_args->event )
222
243
{
223
244
case CAN_EVENT_TX_COMPLETE: break ;
224
- case CAN_EVENT_RX_COMPLETE: // Currently driver don't support this. This is unreachable code for now.
245
+ case CAN_EVENT_RX_COMPLETE: // Currently driver don't support this. This is unreachable code for now. This is so true.
225
246
{
226
247
/* Extract the received CAN message. */
227
248
CanMsg const msg
Original file line number Diff line number Diff line change @@ -61,7 +61,7 @@ class R7FA6M5_CAN
61
61
62
62
63
63
int write (CanMsg const & msg);
64
- size_t available () const ;
64
+ size_t available ();
65
65
CanMsg read ();
66
66
67
67
You can’t perform that action at this time.
0 commit comments