@@ -104,6 +104,7 @@ def get_current_data(bus, srcId, dstId, pid, opt={})
104
104
def get_current_data_pids ( bus , srcId , dstId )
105
105
pids = [ ]
106
106
packets = get_current_data ( bus , srcId , dstId , 0 , { "MAXPKTS" => 1 } )
107
+ return pids if packets == nil
107
108
if packets . has_key? "Packets" and packets [ "Packets" ] . size > 0
108
109
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
109
110
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -184,6 +185,7 @@ def get_current_data_pids(bus, srcId, dstId)
184
185
# @return [Hash] Packet Hash with { "MIL" => true|false "DTC_COUNT" => 0 }
185
186
def get_monitor_status ( bus , srcId , dstId )
186
187
packets = get_current_data ( bus , srcId , dstId , 0x01 , { "MAXPKTS" => 1 } )
188
+ return { } if packets == nil
187
189
return packets if packets . has_key? "error"
188
190
return packets if not packets . has_key? "Packets"
189
191
packets [ "MIL" ] = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 ] . hex & 0xB0 == 1 ? true : false
@@ -201,6 +203,7 @@ def get_monitor_status(bus, srcId, dstId)
201
203
# @return [Hash] Packet Hash with { "TEMP_C" => <Celcious Temp>, "TEMP_F" => <Fahrenheit TEmp> }
202
204
def get_engine_coolant_temp ( bus , srcId , dstId )
203
205
packets = get_current_data ( bus , srcId , dstId , 0x05 , { "MAXPKTS" => 1 } )
206
+ return { } if packets == nil
204
207
return packets if packets . has_key? "error"
205
208
return packets if not packets . has_key? "Packets"
206
209
celcious = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 ] . hex - 40
@@ -220,6 +223,7 @@ def get_engine_coolant_temp(bus, srcId, dstId)
220
223
# @return [Hash] Packet Hash with { "RPM" => <RPMs> }
221
224
def get_rpms ( bus , srcId , dstId )
222
225
packets = get_current_data ( bus , srcId , dstId , 0x0C , { "MAXPKTS" => 1 } )
226
+ return { } if packets == nil
223
227
return packets if packets . has_key? "error"
224
228
return packets if not packets . has_key? "Packets"
225
229
packets [ "RPM" ] = ( 256 * packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 ] . hex + packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 4 ] . hex ) / 4
@@ -236,6 +240,7 @@ def get_rpms(bus, srcId, dstId)
236
240
# @return [Hash] Packet Hash with { "SPEED_K" => <km/h>, "SPEED_M" => <mph> }
237
241
def get_vehicle_speed ( bus , srcId , dstId )
238
242
packets = get_current_data ( bus , srcId , dstId , 0x0D , { "MAXPKTS" => 1 } )
243
+ return { } if packets == nil
239
244
return packets if packets . has_key? "error"
240
245
return packets if not packets . has_key? "Packets"
241
246
packets [ "SPEED_K" ] = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 ] . hex
@@ -254,6 +259,7 @@ def get_vehicle_speed(bus, srcId, dstId)
254
259
# @return [String] Description of standard
255
260
def get_obd_standards ( bus , srcId , dstId )
256
261
packets = get_current_data ( bus , srcId , dstId , 0x1C , { "MAXPKTS" => 1 } )
262
+ return "" if packets == nil
257
263
if packets . has_key? "error"
258
264
print_error ( "OBD ERR: #{ packets [ "error" ] } " )
259
265
return ""
@@ -379,6 +385,7 @@ def get_dtcs(bus, srcId, dstId, opt={})
379
385
return { }
380
386
end
381
387
data = client . automotive . send_isotp_and_wait_for_response ( bus , srcId , dstId , [ 0x03 ] , opt )
388
+ return [ ] if data == nil
382
389
if data . has_key? "error"
383
390
print_error ( "UDS ERR: #{ data [ "error" ] } " )
384
391
return [ ]
@@ -474,6 +481,7 @@ def get_vehicle_info(bus, srcId, dstId, mode, opt={})
474
481
def get_vinfo_supported_pids ( bus , srcId , dstId )
475
482
pids = [ ]
476
483
packets = get_vehicle_info ( bus , srcId , dstId , 0 , { "MAXPKTS" => 1 } )
484
+ return pids if packets == nil
477
485
if packets . has_key? "Packets" and packets [ "Packets" ] . size > 0
478
486
hexpids = packets [ "Packets" ] [ 0 ] [ "DATA" ] [ 3 , 6 ]
479
487
hexpids = hexpids . join . hex . to_s ( 2 ) . rjust ( 32 , '0' ) . split ( '' ) # Array of 1s and 0s
@@ -494,6 +502,7 @@ def get_vinfo_supported_pids(bus, srcId, dstId)
494
502
# @return [String] VIN as ASCII
495
503
def get_vin ( bus , srcId , dstId )
496
504
packets = get_vehicle_info ( bus , srcId , dstId , 0x02 )
505
+ return "" if packets == nil
497
506
return "UDS ERR: #{ packets [ "error" ] } " if packets . has_key? "error"
498
507
data = response_hash_to_data_array ( dstId . to_s ( 16 ) , packets )
499
508
return "" if data == nil
@@ -510,6 +519,7 @@ def get_vin(bus, srcId, dstId)
510
519
# @return [String] Calibration ID as ASCII
511
520
def get_calibration_id ( bus , srcId , dstId )
512
521
packets = get_vehicle_info ( bus , srcId , dstId , 0x04 )
522
+ return "" if packets == nil
513
523
return "UDS ERR: #{ packets [ "error" ] } " if packets . has_key? "error"
514
524
data = response_hash_to_data_array ( dstId . to_s ( 16 ) , packets )
515
525
return "" if data == nil
@@ -526,6 +536,7 @@ def get_calibration_id(bus, srcId, dstId)
526
536
# @return [String] ECU Name as ASCII
527
537
def get_ecu_name ( bus , srcId , dstId )
528
538
packets = get_vehicle_info ( bus , srcId , dstId , 0x0A )
539
+ return "" if packets == nil
529
540
return "UDS ERR: #{ packets [ "error" ] } " if packets . has_key? "error"
530
541
data = response_hash_to_data_array ( dstId . to_s ( 16 ) , packets )
531
542
return "" if data == nil
@@ -634,6 +645,7 @@ def read_data_by_id(bus, srcId, dstId, id, show_error=false)
634
645
opt = { }
635
646
opt [ "MAXPKTS" ] = 15
636
647
packets = client . automotive . send_isotp_and_wait_for_response ( bus , srcId , dstId , [ 0x22 ] + id , opt )
648
+ return [ ] if packets == nil
637
649
if packets . has_key? "error"
638
650
return packets if show_error
639
651
else
@@ -669,6 +681,7 @@ def get_security_token(bus, srcId, dstId, level=1)
669
681
opt = { }
670
682
opt [ "MAXPKTS" ] = 1
671
683
packets = client . automotive . send_isotp_and_wait_for_response ( bus , srcId , dstId , [ 0x27 , level ] , opt )
684
+ return { } if packets == nil
672
685
if not packets . has_key? "error"
673
686
packets [ "SEED" ] = response_hash_to_data_array ( dstId , packets )
674
687
end
0 commit comments