@@ -100,11 +100,13 @@ def get_current_data(bus, src_id, dst_id, pid, opt = {})
100
100
# @param bus [String] unique CAN bus identifier
101
101
# @param src_id [Integer] Integer representation of the Sending CAN ID
102
102
# @param dst_id [Integer] Integer representation of the receiving CAN ID
103
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
103
104
#
104
105
# @return [Array] All supported pids from Mode $01 get current data
105
- def get_current_data_pids ( bus , src_id , dst_id )
106
+ def get_current_data_pids ( bus , src_id , dst_id , opt = { } )
106
107
pids = [ ]
107
- packets = get_current_data ( bus , src_id , dst_id , 0 , { "MAXPKTS" => 1 } )
108
+ opt [ 'MAXPKTS' ] = 1
109
+ packets = get_current_data ( bus , src_id , dst_id , 0 , opt )
108
110
return pids if packets . nil?
109
111
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
110
112
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
@@ -114,7 +116,7 @@ def get_current_data_pids(bus, src_id, dst_id)
114
116
end
115
117
end
116
118
if pids . include? 0x20
117
- packets = get_current_data ( bus , src_id , dst_id , 0x20 , { "MAXPKTS" => 1 } )
119
+ packets = get_current_data ( bus , src_id , dst_id , 0x20 , opt )
118
120
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
119
121
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
120
122
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -124,7 +126,7 @@ def get_current_data_pids(bus, src_id, dst_id)
124
126
end
125
127
end
126
128
if pids . include? 0x40
127
- packets = get_current_data ( bus , src_id , dst_id , 0x40 , { "MAXPKTS" => 1 } )
129
+ packets = get_current_data ( bus , src_id , dst_id , 0x40 , opt )
128
130
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
129
131
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
130
132
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -134,7 +136,7 @@ def get_current_data_pids(bus, src_id, dst_id)
134
136
end
135
137
end
136
138
if pids . include? 0x60
137
- packets = get_current_data ( bus , src_id , dst_id , 0x60 , { "MAXPKTS" => 1 } )
139
+ packets = get_current_data ( bus , src_id , dst_id , 0x60 , opt )
138
140
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
139
141
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
140
142
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -144,7 +146,7 @@ def get_current_data_pids(bus, src_id, dst_id)
144
146
end
145
147
end
146
148
if pids . include? 0x80
147
- packets = get_current_data ( bus , src_id , dst_id , 0x80 , { "MAXPKTS" => 1 } )
149
+ packets = get_current_data ( bus , src_id , dst_id , 0x80 , opt )
148
150
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
149
151
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
150
152
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -154,7 +156,7 @@ def get_current_data_pids(bus, src_id, dst_id)
154
156
end
155
157
end
156
158
if pids . include? 0xA0
157
- packets = get_current_data ( bus , src_id , dst_id , 0xA0 , { "MAXPKTS" => 1 } )
159
+ packets = get_current_data ( bus , src_id , dst_id , 0xA0 , opt )
158
160
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
159
161
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
160
162
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -164,7 +166,7 @@ def get_current_data_pids(bus, src_id, dst_id)
164
166
end
165
167
end
166
168
if pids . include? 0xC0
167
- packets = get_current_data ( bus , src_id , dst_id , 0xC0 , { "MAXPKTS" => 1 } )
169
+ packets = get_current_data ( bus , src_id , dst_id , 0xC0 , opt )
168
170
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
169
171
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
170
172
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -182,10 +184,12 @@ def get_current_data_pids(bus, src_id, dst_id)
182
184
# @param bus [String] unique CAN bus identifier
183
185
# @param src_id [Integer] Integer representation of the Sending CAN ID
184
186
# @param dst_id [Integer] Integer representation of the receiving CAN ID
187
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
185
188
#
186
189
# @return [Hash] Packet Hash with { "MIL" => true|false "DTC_COUNT" => 0 }
187
- def get_monitor_status ( bus , src_id , dst_id )
188
- packets = get_current_data ( bus , src_id , dst_id , 0x01 , { "MAXPKTS" => 1 } )
190
+ def get_monitor_status ( bus , src_id , dst_id , opt = { } )
191
+ opt [ 'MAXPKTS' ] = 1
192
+ packets = get_current_data ( bus , src_id , dst_id , 0x01 , opt )
189
193
return { } if packets . nil?
190
194
return packets if packets . key? "error"
191
195
return packets unless packets . key? "Packets"
@@ -200,10 +204,12 @@ def get_monitor_status(bus, src_id, dst_id)
200
204
# @param bus [String] unique CAN bus identifier
201
205
# @param src_id [Integer] Integer representation of the Sending CAN ID
202
206
# @param dst_id [Integer] Integer representation of the receiving CAN ID
207
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
203
208
#
204
209
# @return [Hash] Packet Hash with { "TEMP_C" => <Celcious Temp>, "TEMP_F" => <Fahrenheit TEmp> }
205
- def get_engine_coolant_temp ( bus , src_id , dst_id )
206
- packets = get_current_data ( bus , src_id , dst_id , 0x05 , { "MAXPKTS" => 1 } )
210
+ def get_engine_coolant_temp ( bus , src_id , dst_id , opt = { } )
211
+ opt [ 'MAXPKTS' ] = 1
212
+ packets = get_current_data ( bus , src_id , dst_id , 0x05 , opt )
207
213
return { } if packets . nil?
208
214
return packets if packets . key? "error"
209
215
return packets unless packets . key? "Packets"
@@ -220,10 +226,12 @@ def get_engine_coolant_temp(bus, src_id, dst_id)
220
226
# @param bus [String] unique CAN bus identifier
221
227
# @param src_id [Integer] Integer representation of the Sending CAN ID
222
228
# @param dst_id [Integer] Integer representation of the receiving CAN ID
229
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
223
230
#
224
231
# @return [Hash] Packet Hash with { "RPM" => <RPMs> }
225
- def get_rpms ( bus , src_id , dst_id )
226
- packets = get_current_data ( bus , src_id , dst_id , 0x0C , { "MAXPKTS" => 1 } )
232
+ def get_rpms ( bus , src_id , dst_id , opt = { } )
233
+ opt [ 'MAXPKTS' ] = 1
234
+ packets = get_current_data ( bus , src_id , dst_id , 0x0C , opt )
227
235
return { } if packets . nil?
228
236
return packets if packets . key? "error"
229
237
return packets unless packets . key? "Packets"
@@ -237,10 +245,12 @@ def get_rpms(bus, src_id, dst_id)
237
245
# @param bus [String] unique CAN bus identifier
238
246
# @param src_id [Integer] Integer representation of the Sending CAN ID
239
247
# @param dst_id [Integer] Integer representation of the receiving CAN ID
248
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
240
249
#
241
250
# @return [Hash] Packet Hash with { "SPEED_K" => <km/h>, "SPEED_M" => <mph> }
242
- def get_vehicle_speed ( bus , src_id , dst_id )
243
- packets = get_current_data ( bus , src_id , dst_id , 0x0D , { "MAXPKTS" => 1 } )
251
+ def get_vehicle_speed ( bus , src_id , dst_id , opt = { } )
252
+ opt [ 'MAXPKTS' ] = 1
253
+ packets = get_current_data ( bus , src_id , dst_id , 0x0D , opt )
244
254
return { } if packets . nil?
245
255
return packets if packets . key? "error"
246
256
return packets unless packets . key? "Packets"
@@ -256,10 +266,12 @@ def get_vehicle_speed(bus, src_id, dst_id)
256
266
# @param bus [String] unique CAN bus identifier
257
267
# @param src_id [Integer] Integer representation of the Sending CAN ID
258
268
# @param dst_id [Integer] Integer representation of the receiving CAN ID
269
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
259
270
#
260
271
# @return [String] Description of standard
261
- def get_obd_standards ( bus , src_id , dst_id )
262
- packets = get_current_data ( bus , src_id , dst_id , 0x1C , { "MAXPKTS" => 1 } )
272
+ def get_obd_standards ( bus , src_id , dst_id , opt = { } )
273
+ opt [ 'MAXPKTS' ] = 1
274
+ packets = get_current_data ( bus , src_id , dst_id , 0x1C , opt )
263
275
return "" if packets . nil?
264
276
if packets . key? "error"
265
277
print_error ( "OBD ERR: #{ packets [ 'error' ] } " )
@@ -532,11 +544,13 @@ def get_vehicle_info(bus, src_id, dst_id, mode, opt = {})
532
544
# @param bus [String] unique CAN bus identifier
533
545
# @param src_id [Integer] Integer representation of the Sending CAN ID
534
546
# @param dst_id [Integer] Integer representation of the receiving CAN ID
547
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
535
548
#
536
549
# @return [Array] Array of PIDS supported by Mode $09
537
- def get_vinfo_supported_pids ( bus , src_id , dst_id )
550
+ def get_vinfo_supported_pids ( bus , src_id , dst_id , opt = { } )
551
+ opt [ 'MAXPKTS' ] = 1
538
552
pids = [ ]
539
- packets = get_vehicle_info ( bus , src_id , dst_id , 0 , { "MAXPKTS" => 1 } )
553
+ packets = get_vehicle_info ( bus , src_id , dst_id , 0 , opt )
540
554
return pids if packets . nil?
541
555
if ( packets . key? "Packets" ) && !packets [ "Packets" ] . empty?
542
556
unless packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 1 ] . hex == 0x49
@@ -558,10 +572,11 @@ def get_vinfo_supported_pids(bus, src_id, dst_id)
558
572
# @param bus [String] unique CAN bus identifier
559
573
# @param src_id [Integer] Integer representation of the Sending CAN ID
560
574
# @param dst_id [Integer] Integer representation of the receiving CAN ID
575
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
561
576
#
562
577
# @return [String] VIN as ASCII
563
- def get_vin ( bus , src_id , dst_id )
564
- packets = get_vehicle_info ( bus , src_id , dst_id , 0x02 )
578
+ def get_vin ( bus , src_id , dst_id , opt = { } )
579
+ packets = get_vehicle_info ( bus , src_id , dst_id , 0x02 , opt )
565
580
return "" if packets . nil?
566
581
return "UDS ERR: #{ packets [ 'error' ] } " if packets . key? "error"
567
582
data = response_hash_to_data_array ( dst_id . to_s ( 16 ) , packets )
@@ -575,10 +590,11 @@ def get_vin(bus, src_id, dst_id)
575
590
# @param bus [String] unique CAN bus identifier
576
591
# @param src_id [Integer] Integer representation of the Sending CAN ID
577
592
# @param dst_id [Integer] Integer representation of the receiving CAN ID
593
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
578
594
#
579
595
# @return [String] Calibration ID as ASCII
580
- def get_calibration_id ( bus , src_id , dst_id )
581
- packets = get_vehicle_info ( bus , src_id , dst_id , 0x04 )
596
+ def get_calibration_id ( bus , src_id , dst_id , opt = { } )
597
+ packets = get_vehicle_info ( bus , src_id , dst_id , 0x04 , opt )
582
598
return "" if packets . nil?
583
599
return "UDS ERR: #{ packets [ 'error' ] } " if packets . key? "error"
584
600
data = response_hash_to_data_array ( dst_id . to_s ( 16 ) , packets )
@@ -592,10 +608,11 @@ def get_calibration_id(bus, src_id, dst_id)
592
608
# @param bus [String] unique CAN bus identifier
593
609
# @param src_id [Integer] Integer representation of the Sending CAN ID
594
610
# @param dst_id [Integer] Integer representation of the receiving CAN ID
611
+ # @param opt [Hash] Additional options to be passed to automotive.send_isotp_and_wait_for_response
595
612
#
596
613
# @return [String] ECU Name as ASCII
597
- def get_ecu_name ( bus , src_id , dst_id )
598
- packets = get_vehicle_info ( bus , src_id , dst_id , 0x0A )
614
+ def get_ecu_name ( bus , src_id , dst_id , opt = { } )
615
+ packets = get_vehicle_info ( bus , src_id , dst_id , 0x0A , opt )
599
616
return "" if packets . nil?
600
617
return "UDS ERR: #{ packets [ 'error' ] } " if packets . key? "error"
601
618
data = response_hash_to_data_array ( dst_id . to_s ( 16 ) , packets )
@@ -616,9 +633,10 @@ def get_ecu_name(bus, src_id, dst_id)
616
633
# @param src_id [Integer] Integer representation of the Sending CAN ID
617
634
# @param dst_id [Integer] Integer representation of the receiving CAN ID
618
635
# @param level [Integer] The desired DSC level
636
+ # @param opt [Hash] Optional arguments. PADDING if set uses this hex value for padding
619
637
#
620
638
# @return [Hash] client.automtoive response
621
- def set_dsc ( bus , src_id , dst_id , level )
639
+ def set_dsc ( bus , src_id , dst_id , level , opt = { } )
622
640
unless client . automotive
623
641
print_error ( "Not an automotive hwbridge session" )
624
642
return { }
@@ -631,9 +649,12 @@ def set_dsc(bus, src_id, dst_id, level)
631
649
print_line ( "No active bus, use 'connect' or specify bus via the options" )
632
650
return { }
633
651
end
652
+ padding = nil
653
+ padding = opt [ 'PADDING' ] if opt . key? 'PADDING'
634
654
opt = { }
635
655
opt [ "TIMEOUT" ] = 20
636
656
opt [ "MAXPKTS" ] = 1
657
+ opt [ "PADDING" ] = padding unless padding . nil?
637
658
client . automotive . send_isotp_and_wait_for_response ( bus , src_id , dst_id , [ 0x10 , level ] , opt )
638
659
end
639
660
@@ -674,10 +695,11 @@ def reset_ecu(bus, src_id, dst_id, hard, opt = {})
674
695
# @param src_id [Integer] Integer representation of the Sending CAN ID
675
696
# @param dst_id [Integer] Integer representation of the receiving CAN ID
676
697
# @param id [Array] 2 Bytes in an array of the identifier. Example [ 0xF1, 0x90 ]
677
- # @param show_error [Boolean] If an error, return the Packet hash instead, Default false
698
+ # @param opt [Hash] Additional Options. SHOW_ERROR (Returns packet hash instead, default false)
699
+ # PADDING if set uses this hex value for padding
678
700
#
679
701
# @return [Array] Data retrieved. If show_error is true and an error is detected, then packet hash will be returned instead
680
- def read_data_by_id ( bus , src_id , dst_id , id , show_error = false )
702
+ def read_data_by_id ( bus , src_id , dst_id , id , opt = { } )
681
703
data = [ ]
682
704
unless client . automotive
683
705
print_error ( "Not an automotive hwbridge session" )
@@ -702,14 +724,22 @@ def read_data_by_id(bus, src_id, dst_id, id, show_error = false)
702
724
print_line ( "No active bus, use 'connect' or specify bus via the options" )
703
725
return { }
704
726
end
727
+ show_error = false
728
+ padding = nil
729
+ show_error = true if opt . key? 'SHOW_ERROR'
730
+ padding = opt [ 'PADDING' ] if opt . key? 'PADDING'
705
731
opt = { }
706
732
opt [ "MAXPKTS" ] = 15
733
+ opt [ "PADDING" ] = padding unless padding . nil?
707
734
packets = client . automotive . send_isotp_and_wait_for_response ( bus , src_id , dst_id , [ 0x22 ] + id , opt )
708
735
return [ ] if packets . nil?
709
736
if packets . key? "error"
710
737
return packets if show_error
711
738
else
712
739
data = response_hash_to_data_array ( dst_id , packets )
740
+ if id . size > 1 # Remove IDs from return
741
+ data = data [ ( id . size -1 ) ..data . size ]
742
+ end
713
743
end
714
744
data
715
745
end
@@ -723,9 +753,10 @@ def read_data_by_id(bus, src_id, dst_id, id, show_error = false)
723
753
# @param src_id [Integer] Integer representation of the Sending CAN ID
724
754
# @param dst_id [Integer] Integer representation of the receiving CAN ID
725
755
# @param level [Integer] Requested security access level. Default is 1
756
+ # @param opt [Hash] Optional settings. PADDING if set uses this hex value for padding
726
757
#
727
758
# @return [Hash] Packet Hash with { "SEED" => [ XX, XX ] }
728
- def get_security_token ( bus , src_id , dst_id , level = 1 )
759
+ def get_security_token ( bus , src_id , dst_id , level = 1 , opt = { } )
729
760
unless client . automotive
730
761
print_error ( "Not an automotive hwbridge session" )
731
762
return { }
@@ -738,8 +769,11 @@ def get_security_token(bus, src_id, dst_id, level = 1)
738
769
print_line ( "No active bus, use 'connect' or specify bus via the options" )
739
770
return { }
740
771
end
772
+ padding = nil
773
+ padding = opt [ 'PADDING' ] if opt . key? 'PADDING'
741
774
opt = { }
742
- opt [ "MAXPKTS" ] = 1
775
+ opt [ "MAXPKTS" ] = 2
776
+ opt [ "PADDING" ] = padding unless padding . nil?
743
777
packets = client . automotive . send_isotp_and_wait_for_response ( bus , src_id , dst_id , [ 0x27 , level ] , opt )
744
778
return { } if packets . nil?
745
779
unless packets . key? "error"
@@ -754,11 +788,12 @@ def get_security_token(bus, src_id, dst_id, level = 1)
754
788
# @param bus [String] unique CAN bus identifier
755
789
# @param src_id [Integer] Integer representation of the Sending CAN ID
756
790
# @param dst_id [Integer] Integer representation of the receiving CAN ID
757
- # param key [Array] Array of Hex to be used as the key. Same size as the seed
791
+ # @ param key [Array] Array of Hex to be used as the key. Same size as the seed
758
792
# @param response_level [Integer] Requested security access level response. Usually level + 1. Default is 2
793
+ # @param opt [Hash] Optional settings. PADDING if set uses this hex value for padding
759
794
#
760
795
# @return [Hash] packet response from client.automotoive
761
- def send_security_token_response ( bus , src_id , dst_id , key , response_level = 2 )
796
+ def send_security_token_response ( bus , src_id , dst_id , key , response_level = 2 , opt = { } )
762
797
unless client . automotive
763
798
print_error ( "Not an automotive hwbridge session" )
764
799
return { }
@@ -776,8 +811,11 @@ def send_security_token_response(bus, src_id, dst_id, key, response_level = 2)
776
811
print_line ( "No active bus, use 'connect' or specify bus via the options" )
777
812
return { }
778
813
end
814
+ padding = nil
815
+ padding = opt [ 'PADDING' ] if opt . key? 'PADDING'
779
816
opt = { }
780
- opt [ "MAXPKTS" ] = 1
817
+ opt [ "MAXPKTS" ] = 2
818
+ opt [ "PADDING" ] = padding unless padding . nil?
781
819
client . automotive . send_isotp_and_wait_for_response ( bus , src_id , dst_id , [ 0x27 , response_level ] + key , opt )
782
820
end
783
821
@@ -791,9 +829,10 @@ def send_security_token_response(bus, src_id, dst_id, key, response_level = 2)
791
829
# @param dst_id [Integer] Integer representation of the receiving CAN ID
792
830
# @param id [Array] 2 Bytes in an array of the identifier. Example [ 0xF1, 0x90 ]
793
831
# @param data [Array] Array of bytes to write
832
+ # @param opt [Hash] Optional settings. PADDING if set uses this hex value for padding
794
833
#
795
834
# @return [Hash] Packet hash from client.automotive
796
- def write_data_by_id ( bus , src_id , dst_id , id , data )
835
+ def write_data_by_id ( bus , src_id , dst_id , id , data , opt = { } )
797
836
unless client . automotive
798
837
print_error ( "Not an automotive hwbridge session" )
799
838
return { }
@@ -815,8 +854,11 @@ def write_data_by_id(bus, src_id, dst_id, id, data)
815
854
print_line ( "No active bus, use 'connect' or specify bus via the options" )
816
855
return { }
817
856
end
857
+ padding = nil
858
+ padding = opt [ 'PADDING' ] if opt . key? 'PADDING'
818
859
opt = { }
819
860
opt [ "MAXPKTS" ] = 1
861
+ opt [ "PADDING" ] = padding unless padding . nil?
820
862
client . automotive . send_isotp_and_wait_for_response ( bus , src_id , dst_id , [ 0x27 ] + id + data , opt )
821
863
end
822
864
@@ -871,10 +913,11 @@ def routine_control(bus, src_id, dst_id, routine_type, id, data = [], opt = {})
871
913
# @param bus [String] unique CAN bus identifier
872
914
# @param src_id [Integer] Integer representation of the Sending CAN ID
873
915
# @param dst_id [Integer] Integer representation of the receiving CAN ID
874
- # @param suppress_response [Boolean] By default suppress ACK from ECU. Set to false if you want confirmation
916
+ # @param opt [Hash] Optional arguments such as: PADDING if set uses this hex value for padding
917
+ # SUPPRESS_RESPONSE By default suppress ACK from ECU. Set to false if you want confirmation
875
918
#
876
919
# @return [Hash] Packet hash from client.automotive. Typically blank unless suppress_response is false
877
- def send_tester_present ( bus , src_id , dst_id , suppress_response = true )
920
+ def send_tester_present ( bus , src_id , dst_id , opt = { } )
878
921
unless client . automotive
879
922
print_error ( "Not an automotive hwbridge session" )
880
923
return { }
@@ -886,10 +929,13 @@ def send_tester_present(bus, src_id, dst_id, suppress_response = true)
886
929
print_line ( "No active bus, use 'connect' or specify bus via the options" )
887
930
return { }
888
931
end
932
+ padding = nil
889
933
suppress = 0x80
890
- suppress = 0 unless suppress_response
934
+ suppress = 0 unless ( opt . key? 'SUPRESS_RESPONSE' ) && opt [ 'SUPRESS_RESPONSE' ] == false
935
+ padding = opt [ 'PADDING' ] if opt . key? 'PADDING'
891
936
opt = { }
892
937
opt [ "MAXPKTS" ] = 1
938
+ opt [ "PADDING" ] = padding unless padding . nil?
893
939
client . automotive . send_isotp_and_wait_for_response ( bus , src_id , dst_id , [ 0x3E , suppress ] , opt )
894
940
end
895
941
0 commit comments