@@ -150,10 +150,12 @@ int can_handle_data()
150
150
151
151
if (can_1_rx_fifo_frames_available && can_1_should_enqueue )
152
152
{
153
- for (rc_enq = 0 ; can_read (& fdcan_1 , & can_id , & can_len , can_data ); bytes_enqueued += rc_enq )
154
- {
155
- union x8h7_can_frame_message x8h7_msg ;
153
+ union x8h7_can_frame_message x8h7_msg ;
156
154
155
+ for (rc_enq = 0 ;
156
+ (get_available_enqueue () >= sizeof (x8h7_msg )) && can_read (& fdcan_1 , & can_id , & can_len , can_data );
157
+ bytes_enqueued += rc_enq )
158
+ {
157
159
x8h7_msg .field .id = can_id ;
158
160
x8h7_msg .field .len = can_len ;
159
161
memcpy (x8h7_msg .field .data , can_data , x8h7_msg .field .len );
@@ -173,10 +175,12 @@ int can_handle_data()
173
175
174
176
if (can_2_rx_fifo_frames_available && can_2_should_enqueue )
175
177
{
176
- for (rc_enq = 0 ; can_read (& fdcan_2 , & can_id , & can_len , can_data ); bytes_enqueued += rc_enq )
177
- {
178
- union x8h7_can_frame_message x8h7_msg ;
178
+ union x8h7_can_frame_message x8h7_msg ;
179
179
180
+ for (rc_enq = 0 ;
181
+ (get_available_enqueue () >= sizeof (x8h7_msg )) && can_read (& fdcan_2 , & can_id , & can_len , can_data );
182
+ bytes_enqueued += rc_enq )
183
+ {
180
184
x8h7_msg .field .id = can_id ;
181
185
x8h7_msg .field .len = can_len ;
182
186
memcpy (x8h7_msg .field .data , can_data , x8h7_msg .field .len );
0 commit comments