@@ -178,6 +178,102 @@ def test_send_extended_remote(self):
178178 rx_msg = self .bus .recv (TIMEOUT )
179179 self .assertTrue (msg .equals (rx_msg , timestamp_delta = None ))
180180
181+ def test_recv_fd (self ):
182+ self .serial .set_input_buffer (b"d123A303132333435363738393a3b3c3d3e3f\r " )
183+ msg = self .bus .recv (TIMEOUT )
184+ self .assertIsNotNone (msg )
185+ self .assertEqual (msg .arbitration_id , 0x123 )
186+ self .assertEqual (msg .is_extended_id , False )
187+ self .assertEqual (msg .is_remote_frame , False )
188+ self .assertEqual (msg .is_fd , True )
189+ self .assertEqual (msg .bitrate_switch , False )
190+ self .assertEqual (msg .dlc , 16 )
191+ self .assertSequenceEqual (msg .data , [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ])
192+
193+ def test_send_fd (self ):
194+ payload = b"d123A303132333435363738393A3B3C3D3E3F\r "
195+ msg = can .Message (
196+ arbitration_id = 0x123 , is_extended_id = False , is_fd = True , data = [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ]
197+ )
198+ self .bus .send (msg )
199+ self .assertEqual (payload , self .serial .get_output_buffer ())
200+
201+ self .serial .set_input_buffer (payload )
202+ rx_msg = self .bus .recv (TIMEOUT )
203+ self .assertTrue (msg .equals (rx_msg , timestamp_delta = None ))
204+
205+ def test_recv_fd_extended (self ):
206+ self .serial .set_input_buffer (b"D12ABCDEFA303132333435363738393A3B3C3D3E3F\r " )
207+ msg = self .bus .recv (TIMEOUT )
208+ self .assertIsNotNone (msg )
209+ self .assertEqual (msg .arbitration_id , 0x12ABCDEF )
210+ self .assertEqual (msg .is_extended_id , True )
211+ self .assertEqual (msg .is_remote_frame , False )
212+ self .assertEqual (msg .dlc , 16 )
213+ self .assertEqual (msg .bitrate_switch , False )
214+ self .assertTrue (msg .is_fd )
215+ self .assertSequenceEqual (msg .data , [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ])
216+
217+ def test_send_fd_extended (self ):
218+ payload = b"D12ABCDEFA303132333435363738393A3B3C3D3E3F\r "
219+ msg = can .Message (
220+ arbitration_id = 0x12ABCDEF , is_extended_id = True , is_fd = True , data = [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ]
221+ )
222+ self .bus .send (msg )
223+ self .assertEqual (payload , self .serial .get_output_buffer ())
224+
225+ self .serial .set_input_buffer (payload )
226+ rx_msg = self .bus .recv (TIMEOUT )
227+ self .assertTrue (msg .equals (rx_msg , timestamp_delta = None ))
228+
229+ def test_recv_fd_brs (self ):
230+ self .serial .set_input_buffer (b"b123A303132333435363738393a3b3c3d3e3f\r " )
231+ msg = self .bus .recv (TIMEOUT )
232+ self .assertIsNotNone (msg )
233+ self .assertEqual (msg .arbitration_id , 0x123 )
234+ self .assertEqual (msg .is_extended_id , False )
235+ self .assertEqual (msg .is_remote_frame , False )
236+ self .assertEqual (msg .is_fd , True )
237+ self .assertEqual (msg .bitrate_switch , True )
238+ self .assertEqual (msg .dlc , 16 )
239+ self .assertSequenceEqual (msg .data , [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ])
240+
241+ def test_send_fd_brs (self ):
242+ payload = b"b123A303132333435363738393A3B3C3D3E3F\r "
243+ msg = can .Message (
244+ arbitration_id = 0x123 , is_extended_id = False , is_fd = True , bitrate_switch = True , data = [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ]
245+ )
246+ self .bus .send (msg )
247+ self .assertEqual (payload , self .serial .get_output_buffer ())
248+
249+ self .serial .set_input_buffer (payload )
250+ rx_msg = self .bus .recv (TIMEOUT )
251+ self .assertTrue (msg .equals (rx_msg , timestamp_delta = None ))
252+
253+ def test_recv_fd_brs_extended (self ):
254+ self .serial .set_input_buffer (b"B12ABCDEFA303132333435363738393A3B3C3D3E3F\r " )
255+ msg = self .bus .recv (TIMEOUT )
256+ self .assertIsNotNone (msg )
257+ self .assertEqual (msg .arbitration_id , 0x12ABCDEF )
258+ self .assertEqual (msg .is_extended_id , True )
259+ self .assertEqual (msg .is_remote_frame , False )
260+ self .assertEqual (msg .dlc , 16 )
261+ self .assertEqual (msg .bitrate_switch , True )
262+ self .assertTrue (msg .is_fd )
263+ self .assertSequenceEqual (msg .data , [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ])
264+
265+ def test_send_fd_brs_extended (self ):
266+ payload = b"B12ABCDEFA303132333435363738393A3B3C3D3E3F\r "
267+ msg = can .Message (
268+ arbitration_id = 0x12ABCDEF , is_extended_id = True , is_fd = True , bitrate_switch = True , data = [0x30 , 0x31 , 0x32 , 0x33 , 0x34 , 0x35 , 0x36 , 0x37 , 0x38 , 0x39 , 0x3A , 0x3B , 0x3C , 0x3D , 0x3E , 0x3F ]
269+ )
270+ self .bus .send (msg )
271+ self .assertEqual (payload , self .serial .get_output_buffer ())
272+
273+ self .serial .set_input_buffer (payload )
274+ rx_msg = self .bus .recv (TIMEOUT )
275+ self .assertTrue (msg .equals (rx_msg , timestamp_delta = None ))
276+
181277 def test_partial_recv (self ):
182278 self .serial .set_input_buffer (b"T12ABCDEF" )
183279 msg = self .bus .recv (TIMEOUT )
0 commit comments