You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
2.6 KiB
68 lines
2.6 KiB
7 years ago
|
import crcmod
|
||
|
|
||
|
hyundai_checksum = crcmod.mkCrcFun(0x11D, initCrc=0xFD, rev=False, xorOut=0xdf)
|
||
|
|
||
|
def make_can_msg(addr, dat, alt):
|
||
|
return [addr, 0, dat, alt]
|
||
|
|
||
|
def create_lkas11(packer, apply_steer, steer_req, cnt, enabled, lkas11, hud_alert, keep_stock=False):
|
||
|
values = {
|
||
|
"CF_Lkas_Icon": 3 if enabled else 0,
|
||
|
"CF_Lkas_LdwsSysState": lkas11["CF_Lkas_LdwsSysState"] if keep_stock else 1,
|
||
|
"CF_Lkas_SysWarning": hud_alert,
|
||
|
"CF_Lkas_LdwsLHWarning": lkas11["CF_Lkas_LdwsLHWarning"] if keep_stock else 0,
|
||
|
"CF_Lkas_LdwsRHWarning": lkas11["CF_Lkas_LdwsRHWarning"] if keep_stock else 0,
|
||
|
"CF_Lkas_HbaLamp": lkas11["CF_Lkas_HbaLamp"] if keep_stock else 0,
|
||
|
"CF_Lkas_FcwBasReq": lkas11["CF_Lkas_FcwBasReq"] if keep_stock else 0,
|
||
|
"CR_Lkas_StrToqReq": apply_steer,
|
||
|
"CF_Lkas_ActToi": steer_req,
|
||
|
"CF_Lkas_ToiFlt": lkas11["CF_Lkas_ToiFlt"] if keep_stock else 0,
|
||
|
"CF_Lkas_HbaSysState": lkas11["CF_Lkas_HbaSysState"] if keep_stock else 1,
|
||
|
"CF_Lkas_FcwOpt": lkas11["CF_Lkas_FcwOpt"] if keep_stock else 0,
|
||
|
"CF_Lkas_HbaOpt": lkas11["CF_Lkas_HbaOpt"] if keep_stock else 3,
|
||
|
"CF_Lkas_MsgCount": cnt,
|
||
|
"CF_Lkas_FcwSysState": lkas11["CF_Lkas_FcwSysState"] if keep_stock else 0,
|
||
|
"CF_Lkas_FcwCollisionWarning": lkas11["CF_Lkas_FcwCollisionWarning"] if keep_stock else 0,
|
||
|
"CF_Lkas_FusionState": lkas11["CF_Lkas_FusionState"] if keep_stock else 0,
|
||
|
"CF_Lkas_Chksum": 0,
|
||
|
"CF_Lkas_FcwOpt_USM": 2 if enabled else 1,
|
||
|
"CF_Lkas_LdwsOpt_USM": lkas11["CF_Lkas_LdwsOpt_USM"] if keep_stock else 3,
|
||
|
}
|
||
|
|
||
|
dat = packer.make_can_msg("LKAS11", 0, values)[2]
|
||
|
dat = dat[:6] + dat[7]
|
||
|
checksum = hyundai_checksum(dat)
|
||
|
|
||
|
values["CF_Lkas_Chksum"] = checksum
|
||
|
|
||
|
return packer.make_can_msg("LKAS11", 0, values)
|
||
|
|
||
|
def create_lkas12():
|
||
|
return make_can_msg(1342, "\x00\x00\x00\x00\x60\x05", 0)
|
||
|
|
||
|
|
||
|
def create_1191():
|
||
|
return make_can_msg(1191, "\x01\x00", 0)
|
||
|
|
||
|
|
||
|
def create_1156():
|
||
|
return make_can_msg(1156, "\x08\x20\xfe\x3f\x00\xe0\xfd\x3f", 0)
|
||
|
|
||
|
def create_clu11(packer, clu11, button):
|
||
|
values = {
|
||
|
"CF_Clu_CruiseSwState": button,
|
||
|
"CF_Clu_CruiseSwMain": clu11["CF_Clu_CruiseSwMain"],
|
||
|
"CF_Clu_SldMainSW": clu11["CF_Clu_SldMainSW"],
|
||
|
"CF_Clu_ParityBit1": clu11["CF_Clu_ParityBit1"],
|
||
|
"CF_Clu_VanzDecimal": clu11["CF_Clu_VanzDecimal"],
|
||
|
"CF_Clu_Vanz": clu11["CF_Clu_Vanz"],
|
||
|
"CF_Clu_SPEED_UNIT": clu11["CF_Clu_SPEED_UNIT"],
|
||
|
"CF_Clu_DetentOut": clu11["CF_Clu_DetentOut"],
|
||
|
"CF_Clu_RheostatLevel": clu11["CF_Clu_RheostatLevel"],
|
||
|
"CF_Clu_CluInfo": clu11["CF_Clu_CluInfo"],
|
||
|
"CF_Clu_AmpInfo": clu11["CF_Clu_AmpInfo"],
|
||
|
"CF_Clu_AliveCnt1": 0,
|
||
|
}
|
||
|
|
||
|
return packer.make_can_msg("CLU11", 0, values)
|