@@ -417,6 +417,66 @@ BOOL vehicle_nissanleaf_poll1(void)
417
417
car_speed = car_speed16 / 92 ;
418
418
}
419
419
break ;
420
+ case 0x390 :
421
+ // Gen 2 Charger
422
+ //
423
+ // When the data is valid, can_databuffer[6] is the J1772 maximum
424
+ // available current if we're plugged in, and 0 when we're not.
425
+ // can_databuffer[3] seems to govern when it's valid, and is probably a
426
+ // bit field, but I don't have a full decoding
427
+ //
428
+ // specifically the last few frames before shutdown to wait for the charge
429
+ // timer contain zero in can_databuffer[6] so we ignore them and use the
430
+ // valid data in the earlier frames
431
+ //
432
+ // During plug in with charge timer activated, byte 3 & 6:
433
+ //
434
+ // 0x390 messages start
435
+ // 0x00 0x21
436
+ // 0x60 0x21
437
+ // 0x60 0x00
438
+ // 0xa0 0x00
439
+ // 0xb0 0x00
440
+ // 0xb2 0x15 -- byte 6 now contains valid j1772 pilot amps
441
+ // 0xb3 0x15
442
+ // 0xb1 0x00
443
+ // 0x71 0x00
444
+ // 0x69 0x00
445
+ // 0x61 0x00
446
+ // 0x390 messages stop
447
+ //
448
+ // byte 3 is 0xb3 during charge, and byte 6 contains the valid pilot amps
449
+ //
450
+ // so far, except briefly during startup, when byte 3 is 0x00 or 0x03,
451
+ // byte 6 is 0x00, correctly indicating we're unplugged, so we use that
452
+ // for unplugged detection.
453
+ //
454
+ if (can_databuffer [3 ] == 0xb3 ||
455
+ can_databuffer [3 ] == 0x00 ||
456
+ can_databuffer [3 ] == 0x03 )
457
+ {
458
+ // can_databuffer[6] is the J1772 pilot current, 0.5A per bit
459
+ car_chargetype = J1772_TYPE1 ;
460
+ car_chargelimit = (can_databuffer [6 ] + 1 ) / 2 ;
461
+ car_doors1bits .ChargePort = car_chargelimit == 0 ? 0 : 1 ;
462
+ car_doors1bits .PilotSignal = car_chargelimit == 0 ? 0 : 1 ;
463
+ }
464
+ switch (can_databuffer [5 ])
465
+ {
466
+ case 0x80 :
467
+ vehicle_nissanleaf_charger_status (CHARGER_STATUS_IDLE );
468
+ break ;
469
+ case 0x83 :
470
+ vehicle_nissanleaf_charger_status (CHARGER_STATUS_QUICK_CHARGING );
471
+ break ;
472
+ case 0x88 :
473
+ vehicle_nissanleaf_charger_status (CHARGER_STATUS_CHARGING );
474
+ break ;
475
+ case 0x98 :
476
+ vehicle_nissanleaf_charger_status (CHARGER_STATUS_PLUGGED_IN_TIMER_WAIT );
477
+ break ;
478
+ }
479
+ break ;
420
480
case 0x54b :
421
481
{
422
482
BOOL hvac_candidate ;
@@ -458,6 +518,7 @@ BOOL vehicle_nissanleaf_poll1(void)
458
518
}
459
519
break ;
460
520
case 0x5bf :
521
+ // Gen 1 Charger
461
522
if (can_databuffer [4 ] == 0xb0 )
462
523
{
463
524
// Quick Charging
0 commit comments