| | |
| | | from email.message import Message |
| | | from ShifterDefine import * |
| | | import struct |
| | | from udsoncan import DidCodec |
| | |
| | | import configparser |
| | | import cantools |
| | | |
| | | ProjectDBC = cantools.database.load_file("DBC/SX7H.dbc") |
| | | ProjectDBC = cantools.database.load_file("DBC/BJEV_B41V_20220411.dbc") |
| | | |
| | | |
| | | class AsciiCodec(DidCodec): |
| | |
| | | self.canid.phy_txId = 0x77A |
| | | self.canid.phy_rxId = 0x742 |
| | | self.canid.fun_rxId = 0x7df |
| | | self.canid.normalid = 0x420 |
| | | self.SA1_message = ProjectDBC.get_message_by_name('SA1') |
| | | self.canid.normalid = 0x5E0 |
| | | self.SA1_message = ProjectDBC.get_message_by_name('EGSM_1') |
| | | |
| | | def FramUnpack(self, id=0x420, frame=[]): |
| | | def FramUnpack(self, id=0x5E0, frame=[]): |
| | | input_signal = ProjectDBC.decode_message(id, frame) |
| | | # part_str = str(input_signal['SA1_Status_ParkButtonReq']) |
| | | # print(type(part_str)) |
| | | # if input_signal['SA1_Status_ParkButtonReq'] == 'No request': |
| | | # print('yes') |
| | | # print(SA1_Status_ParkButtonReq_dic[part_str]) |
| | | self.Pbutton = SA1_Status_ParkButtonReq_dic[str( |
| | | input_signal['SA1_Status_ParkButtonReq'])] |
| | | input_signal['EGSM1_St_DrvRqPark'])] |
| | | self.UnlockButton = SA1_Status_UnlockButtonReq_dic[str( |
| | | input_signal['SA1_Status_UnlockButtonReq'])] |
| | | input_signal['EGSM1_St_DrvRqUnlock'])] |
| | | self.position = SA1_Status_GearShftPosReq_dic[str( |
| | | input_signal['SA1_Status_GearShftPosReq'])] |
| | | input_signal['EGSM1_St_DrvRqShft'])] |
| | | |
| | | def PackFrame(self, dic): |
| | | data = self.SA1_message.encode({ |
| | | 'SA1_Status_PRNDL': |
| | | 0, |
| | | 'SA1_Status_GearShftPosReq': |
| | | 'EGSM1_St_DrvRqShft': |
| | | SA1_Status_GearShftPosReq_dic[self.position], |
| | | 'SA1_Status_ParkButtonReq': |
| | | 'EGSM1_St_DrvRqPark': |
| | | SA1_Status_ParkButtonReq_dic[self.Pbutton], |
| | | "SA1_ShifterManualSignal": |
| | | 0, |
| | |
| | | 0, |
| | | "SA1_Live_counter": |
| | | 1, |
| | | "SA1_Status_UnlockButtonReq": |
| | | "EGSM1_St_DrvRqUnlock": |
| | | SA1_Status_UnlockButtonReq_dic[self.UnlockButton], |
| | | "SA1_Status_EcoShifterModeReq": |
| | | 0, |
| | |
| | | self.ShiftLeverPos = 'P' |
| | | self.pre_ShiftLeverPos = 'P' |
| | | self.max_pos = 'Shifter position Zero' |
| | | self.IC1_message = ProjectDBC.get_message_by_name('IC1') |
| | | self.TCU2_message = ProjectDBC.get_message_by_name('TCU2') |
| | | self.ABS1_message = ProjectDBC.get_message_by_name('ABS1') |
| | | self.Engine2_message = ProjectDBC.get_message_by_name('Engine2') |
| | | self.BCM1_message = ProjectDBC.get_message_by_name('BCM_1') |
| | | self.BCM_9_message = ProjectDBC.get_message_by_name('BDC_BCM_9') |
| | | self.EHC6_message = ProjectDBC.get_message_by_name('CDC_EHC_6') |
| | | self.CAPE1_message = ProjectDBC.get_message_by_name('BDC_CAPE_1') |
| | | |
| | | self.IPC1_message = ProjectDBC.get_message_by_name('CDC_IPC1') |
| | | self.CGW_1_message = ProjectDBC.get_message_by_name('CGW_1') |
| | | self.EMS_5_message = ProjectDBC.get_message_by_name('EMS_5') |
| | | self.TBOX_1_message = ProjectDBC.get_message_by_name('TBOX_1') |
| | | self.TCM_5_message = ProjectDBC.get_message_by_name('TCM_5') |
| | | |
| | | def pack_IC1(self, odm): |
| | | self.Odm = odm |
| | |
| | | reqpos = TCU2_ShiterLevel_dic['M'] |
| | | self.pre_ShiftLeverPos = "P" |
| | | self.max_pos = 'Shifter position Zero' |
| | | elif shift.position is SA1_Status_GearShftPosReq_dic[ |
| | | 'Shifter not initialized']: |
| | | pass |
| | | else: |
| | | if shift.position is not SA1_Status_GearShftPosReq_dic[ |
| | | 'Shifter position Zero']: |
| | |
| | | self.pre_ShiftLeverPos = [ |
| | | k for k, v in TCU2_ShiterLevel_dic.items() if v == reqpos |
| | | ][0] |
| | | |
| | | data = self.pack_TCU2(reqpos) |
| | | return data |